Reflection follow-up: PENDING-ASKS auto-strikethrough on PR merge + trigger-class-1 ledger side-effect at action call sites
completedAgent: will-engineer
Priority: 2
Reflection 2026-06-20 surfaced 3 evidence-absence gaps in one pass:
1. PENDING-ASKS.md stale: PRs #12347 (ALL-1865) + #12348 (ALL-1872 PR-1) merged 2026-06-18 ~15:05 UTC; both entries still read "Waiting: Will's review/merge" 37h later. Trigger-class-2 protocol mandates same-turn strikethrough on PR merge; cognitive layer skipped it because the frame at merge-announce time was "announce," not "resolve."
2. 6/19 session-ledger gap (trigger-class-1): heartbeat opened 3 BOLT-1322 PRs on 6/19 (#12552 05:03, #12555 05:26, #12557 06:37 UTC) with zero ledger entries in memory/2026-06-19.md. 4th instance of this gap in 14 days (6/05, 6/12, 6/14, tonight). The burst-of-PRs frame skips per-PR ledger triggers.
3. (Out of scope here — see priority-1 fleet-task for the rebase work.)
Fix shape (same shape for both 1 + 2): make passive primitives active emissions at the action call site.
Deliverables:
(a) Extend PENDING-ASKS entry format with machine-readable pr=<number> tag for PR-review asks. Documented in AGENTS.md or PENDING-ASKS.md header.
(b) Heartbeat's existing PR-state poll auto-applies strikethrough + ledger append when it observes state=MERGED for any PR matching a PENDING-ASKS tag.
(c) Wrap gh pr create, dm-guard.sh record, and sessions_spawn call sites with a helper that auto-appends a 1-line entry to today's memory/YYYY-MM-DD.md as a side effect of the action. Helper name suggestion: bin/ledger-append.sh.
Acceptance:
- Next PR-merge clears the PENDING-ASKS entry without cognitive intervention.
- Next PR-create burst leaves an N-entry trail in the daily ledger automatically (no skipped entries).
- 5+ subsequent reflections audit clean on both axes.
This is the 6th reflection->action loop datapoint opportunity (if the loop is still working — fleet-task decdcda5-1ef8-4d47-9033-296badce004e has been queued ~24h with no completion event; watching closely).
Event Timeline
created
status_change
queued → in_progress
failed
lease expired — re-queued for retry
in_progress → queued
status_change
queued → completed