The refused rollback: release/fixtures/rollback.refused.json, from run 42405016612 (#197)
Merged
DO
3d ago+503+503+012345678901234567890123456789-7-7-0123456789
The rollback dispatched while factory/v0.1.0 is the one Release, kept as a fixture: step 4 of the #197 rollback plan, option C, which the Maintainer approved.
Run 42405016612 of release.yml, on main 9ca55015, asked rollback with no target. The step was refused no_earlier_release, wrote nothing and concluded failure. The reads after it show the cut's state unchanged: factory/v0.1.0 and factory/v0-next both name 499835d5, and factory-next has its one Deployment, from the cut.
release/fixtures/rollback.refused.json: the run, its job, the step's lines of its log, both tags, everyfactory/tag asadapters/tags.pylists them, the Deployment and its status. It was captured and redacted outside the repo bytools/redact_trial.py, which took out only the names of the token's two steps.removedsays what each body lost.tests/test_release.py::test_a_rollback_with_no_earlier_release_was_refused_and_moved_nothingholds:- the fixture passes
check_release; - every
factory/tag, read through the port, names one Release, withnexton its commit; cut.planrefuses the step built from the run's own inputs (move.asked),no_earlier_release, for those tags;- the one Deployment is the cut's, by its id, and it and its status are older than the run;
- every read was made after the run ended.
- the fixture passes
tools/mutants.py: five mutants on the fixture, all killed. They movenextoff the Release, add an earlier Release to the list, date the Deployment or its status after the run, and date the run's end after the reads..claude/skills/cut-a-release/SKILL.md: a rollback with no earlier Release is refusedno_earlier_releaseand writes nothing.schemas/release-fixture.schema.json: the item enum gainsrefused_rollback_with_no_earlier_release, beside ruling 9ā²'s five.release/AGENTS.md: a row for the new test. The prose above the table is rewrapped to three lines to stay within 40.
No decision record. #197 stays open for the live move, which rides on the v0.1.1 cut (option A).
Verify: SIM_SEEDS=40 make verify passed at bda61fda, 1663 tests OK. Mutants: the fixture's own run, 5 of 5 killed.
Reads:
| Reader | Result |
|---|---|
| Argon | 0 findings, at 176a91c9 |
| Muse | not run (quota), owed after 2026-11-09 |
| Astra | not run (quota), owed after 2026-11-09 |
| Codex | 0 findings, at 176a91c9 |
| Claude review | 1 medium, 3 low; all fixed in bda61fda |
| Claude security | 0 findings |
š¤ Generated with Claude Code