rogermsc/darwin-memo settle
Settle a darwin-memo CI lesson store from test results. Wraps the `darwin-memo settle-ci` subcommand: per-test junit XML diffing, abstention on infra failures (exit code 3 becomes result=abstained, never a step failure), flaky-test quarantine via a sidecar state file, a degraded raw pass-count fallback, and an optional commit of the updated store back to the branch.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jun 12, 2026
- License
- MIT
Pinned Snippet
uses: rogermsc/darwin-memo-action@32d57303e3f13ae1a72468bc6e331e4230644af2 # v1.0.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| store-path | Path to the ledger file. Created on first use; on abstention it is left untouched (and never created). | — | .darwin-memo/lessons.json |
| junit-base | junit XML report from the test run at the base commit. Primary mode: set junit-base and junit-head, leave passes-before and passes-after empty. | — | "" |
| junit-head | junit XML report from the test run at the head or merge commit. | — | "" |
| passes-before | Degraded fallback for ecosystems without junit XML: raw passing count at the base commit. Both passes-before and passes-after are required in this mode; never default a missing count to zero. No per-test attribution, no quarantine, no infra detection. | — | "" |
| passes-after | Degraded fallback: raw passing count at the head commit. | — | "" |
| scale | resource_scale for settle deltas. | — | 1.0 |
| expire-after | Ticks before unsettled tickets expire at delta zero. | — | 50 |
| ticket | A darwin-memo-ticket id (12 hex chars) to settle, typically parsed from the merge commit message or PR body by the caller. When empty, settle-ci reads `darwin-memo-ticket: <id>` lines from the PR_BODY environment variable, so you can instead set PR_BODY to the pull request body (github.event.pull_request.body in workflow expressions) on the step that uses this action. | — | "" |
| detail | Settlement detail recorded with each settled ticket. Defaults to the URL of the workflow run that did the settling. | — | "" |
| commit-store | When "true", commit and push the updated store (and the flaky.json quarantine sidecar next to it, when present) with a "memory: settle and tick" message. Requires `permissions: contents: write` and a checkout of the branch to push to. Skipped automatically on abstention. | — | true |
| python-version | Python version passed to actions/setup-python. | — | 3.12 |
| package-spec | pip requirement used to install the CLI. settle-ci shipped in darwin-memo 0.5.0, so the default enforces that floor. For installs pinned to a commit instead of a PyPI release, pass git+https://github.com/rogermsc/darwin-memo@<sha>. | — | darwin-memo>=0.5.0 |
Outputs
| name | description |
|---|---|
| result | "settled" when settle-ci ran and saved the store, "abstained" when the run measured nothing (exit code 3) and the store was left untouched. Any other failure fails the step. |
| delta | The measured change in passing tests (a float, e.g. "-1.0"). Only set when result is "settled". |
| summary | The one-line JSON object settle-ci printed: mode, delta, per-test transitions, quarantined tests, and what settled. On abstention it carries the reason instead. |