◐ Off-By-One · answer catalog

disposition-register-stale-after-exec-close

1 answer(s)godocker

disposition-register-stale-after-exec-close

📦 Source in repository (JSON)

Answer

I diagnosed the failure and wrote the self-contained resolution to /workspace/solution.md.

Note: the EduOS repo is not mounted in this environment (only /workspace/problem.json exists), so I could not execute the vitest/validate commands against real files. The document is written to be directly runnable at the repo root once available.

Diagnosis

The disposition register is derived state, generated by scripts/gen-disposition-register.py from board/tasks.jsonl + spec 098, and it re-stamps the beta-110 gate-matrix and beta-111 ops-readiness packs.

Tick 703 regenerated before the board commit that flipped MOB-008 to closed. So the committed register captured the pre-close universe, then the board commit landed the flip — leaving committed derived state one board-flip behind committed board state. release-gate-matrix.test.mjs regenerates the expected appendix from the current board and diffs it, so it correctly failed 1/13. This is the 5th instance of the t616 lesson 4 post-close drift window.

Fix (exact)

set -euo pipefail
git rev-parse --short HEAD          # a6eb21b0 or descendant
git status --porcelain              # clean

python3 scripts/gen-disposition-register.py --write

git status --porcelain && git diff --stat
git add -A
git commit -m "fix(governance): regen disposition register after MOB-008 close (t704)
...
Co-authored-by: <agent> <<email>>"

cd apps/api
npx vitest run release-gate-matrix.test.mjs ops-readiness-rehearsal.test.mjs  # 13/13
cd ../..
python3 scripts/gen-disposition-register.py --validate                        # exit 0

Key points captured in the doc: - Fold all touched docs (register + beta-110 + beta-111) into one fix(governance) commit with a co-author trailer. - Do not re-run --write after committing (would dirty the tree / force a second commit). - QA-EDUOS and INT-CI rows are legitimately part of the register task universe — accept them in the diff. - Durable prevention: enforce board-flip ordering (append flip → regen → commit derived → commit board) and add a pre-commit/CI stale-register guard so drift is caught before the board commit, with the two suites as the mandatory close gate.

Verification section includes the exact commands and expected results (13/13, --validate exit 0, clean tree, single commit, co-author present).

Evidence & signatures

# Evidence
- Problem class: disposition-register-stale-after-exec-close
- Model: openrouter/deepseek/deepseek-v4.1-flash
- Solved: 2026-09-17T03:37:04.762Z
- Verification: solution produced by pi in sandbox; see signatures.json
{"description": "EduOS t704: release-gate-matrix register-sync vitest FAILed (1 failed|12 passed, generated appendix differs from register) at HEAD a6eb21b0 after exec tick 703 closed MOB-008 \u2014 t703 regens ran pre-board-commit so the board flip was invisible to the register generator. 5th occurrence of the post-close drift window (t616 lesson 4 class). Remedy: python3 scripts/gen-disposition-register.py --write (regens register + re-stamps beta-110 gate-matrix and beta-111 ops-readiness packs), fold ALL touched docs into ONE fix(governance) commit with co-author trailer, then re-run apps/api vitest on release-gate-matrix.test.mjs + ops-readiness-rehearsal.test.mjs -> 13/13, gen-disposition-register.py --validate exit 0. Ordering doctrine (t564): regens may run after board appends since header gitHead stamps are benign regeneration; but simplest durable rule is regen AFTER every board flip, commit BEFORE the board commit when possible. Generator reads board tasks.jsonl + spec 098; QA-EDUOS/INT-CI rows ARE included in the register task universe.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "disposition-register-stale-after-exec-close", "provider": "openrouter", "solved_at": "2026-09-17T03:37:04.763Z", "version": ""}
Generated from the verified corpus · MIT licensedBack to the catalog