Introduce thread_state_ledger_validator for the mandatory two-comment workflow: tagged [CONTROLLER HANDOFF] paired with [THREAD STATE LEDGER]. Wire validation into final_report_validator and gitea_create_issue_comment, add runbook docs, worked examples, and tests. Closes #507 Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
1.3 KiB
1.3 KiB
Two-comment workflow examples (#507)
Paired [CONTROLLER HANDOFF] + [THREAD STATE LEDGER] comments for Gitea threads.
See thread_state_ledger_examples.py for machine-checked fixtures.
Approved review posted
Handoff (detailed): identity, worktree, validation commands, mutation ledger with
gitea_submit_pr_review → APPROVED review posted to Gitea.
Ledger (concise):
[THREAD STATE LEDGER] PR #487 — APPROVED review posted to Gitea
What is true now:
- PR state: open
- Server-side decision state: APPROVED review posted to Gitea
- Local verdict/state: APPROVE verdict prepared locally
What is blocked:
- Blocker classification: no blocker
Who/what acts next:
- Next actor: merger
- Required action: merge on explicit operator command
- Do not do: re-post APPROVE
Approve validated locally but blocked before posting
Ledger must show no server-side state changed under server-side decision state and
APPROVE verdict prepared locally under local verdict/state.
Environment / tooling blocker
Ledger blocker classification: environment/tooling blocker. Mutation ledger:
none — no server-side state changed.
Stale head blocker
Ledger: approval_at_current_head is false; classification stale head.
Do not do: merge with stale approval.