Repository navigation
fix: the bug reproduced from #715 - #717
Conversation
Written by the reproduction job from the report in #715; it fails on main, which confirms the bug. The fix goes in on top of it. 🤖 AI-generated · claude-sonnet-5-5 (Anthropic)
|
@soydiloreto: accept it (the 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
|
The pull request's board
🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
The release scenarios wait until a bot comment carries the dx-prd-seal mark once an issue is accepted, but the board, the only comment the engine keeps on the issue, never wrote it. The board now carries the hidden SEAL_MARK as its second line whenever its acceptance is sealed, and release-scenarios.py checks that its SEAL is that same mark. Assisted-by: Claude Opus 5.5 (Anthropic)
|
@soydiloreto: accept it (the 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
|
@soydiloreto: accept it (the 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
Claude review · risk high · complexity low · type fixNothing to fix. First review. The board ( No findings. Policy floor: high (touches high-risk paths: scripts/receipts.py, scripts/release-scenarios.py, tests/repro/test_issue_715.py). Reviewed 6afcb4b (whole pull request; review 1 of 5 automatic). Author trusted for auto-merge: false. 🤖 AI review · claude-sonnet-5-5 (Anthropic) · $0.18, 7 turns |
📝 What changes
The release scenarios wait
untila bot comment carries thedx-prd-sealmark (SEALin scripts/release-scenarios.py) once an issue is accepted, but nothing the engine writes on the issue carries it: the only comment it keeps is the board (scripts/receipts.pyboard_text), whose G2 row says "PRD sealed<hash>" without the mark. The fix: scripts/receipts.py gets a constantSEAL_MARKwith that same hidden mark, andboard_textwrites it as the second line of the board (right after thedx-boardmark, soboard_comment'sstartswith(BOARD)still finds it) wheneverlast_sealis given, that is when the issue's acceptance is sealed. A board with no seal (not accepted, or accepted by a lane's label alone) carries no mark, so a scenario never reads the autopilot's result before the seal. The mark is hidden, so what a person sees on the board does not change. scripts/release-scenarios.py keeps itsSEALand gains a self-test check that it equalsreceipts.SEAL_MARK, so the two cannot drift apart. receipts.py's--testgains two checks: a sealed board carries the mark, after the board mark; an unsealed one does not. The reproduction test is added to tests/repro/ exactly as written ontest/repro-issue-715. No permission, secret, lane or limit is widened.💡 Why
Closes #716. The autopilot works it here in the open: one commit per criterion, each box ticked once its commit is pushed.
🎯 Acceptance criteria
Test: tests/repro/test_issue_715.py
🧭 Decisions
None yet: how the agent settles what the PRD leaves open, one line each.
🙌 Credits
🧪 How I tested it
The reproduction test tests/repro/test_issue_715.py, run in the sandbox (scripts/repro-run.sh run-ref HEAD), now passes (outcome=passed).
scripts/receipts.py --testpasses with two new checks (a sealed board carries the seal mark right after the board mark; an unsealed board carries none), andscripts/release-scenarios.py --testpasses with a new check that its SEAL equals receipts.SEAL_MARK. Every other script's --test passes, except autopilot.py (one #563 fixture that runs make pre-pr) and design-lint.py (stylelint not installed), which fail the same way on the base commit 0fbbcaa in this environment.The reproduction test
tests/repro/test_issue_715.pyat 74a0c4a, the pull request's head, is the one that failed on the default branch (its SHA-256 is the sealed PRD's). The agent ran it in the sandbox (a clean copy of its commit; no network, no secrets) before finishing, and gate G7 runs it again thepythonway it was written, at the head, before it merges.🤖 AI-generated · Claude Opus 5.5 (Anthropic)