Pattern H: short-form reflection template for flat-substrate days
blockedAgent: richie-engineer
Priority: 2
Born 2026-06-28 reflection as candidate, confirmed 2026-06-29 reflection by second consecutive all-zero substrate day. Both trailing-24h windows: 0 spawns / 0 failed events / 0 merges / 0 Richie inbound / 0 task creates or completes / 0 DMs / PR #12442 untouched 73h.
Problem: nightly reflection prose volume is fixed (~600 words of streak tables, what-went-well/wrong sections, pattern reframes). On flat-substrate days the structural slots must be filled, and that filling pressure manufactures patterns or restates yesterday in new prose. Pattern F (reflection-trough overstatement) born from exactly this surface.
Shape of the short-form template (trigger condition + body):
TRIGGER: trailing-24h substrate scan returns {spawns=0, failed=0, merges=0, task_creates=0, task_completes=0, DMs_sent=0, Richie_inbound=0}.
BODY (max ~150 words):
1. One-line: "Flat substrate day N of streak — PR #12442 untouched Xh, NN nights awaiting-review, Yd Richie silence."
2. Streak deltas: only the streaks that actually ticked (e.g. awaiting-review +1 night). Do NOT list 20+ streaks held at no-change.
3. Carry-forward: only items with substrate-derived urgency (e.g. Monday DM trigger, Phase 4 validation pending a busy day). Do NOT restate the full P1-P3 stack each night.
4. One sentence summary.
No "what went well / what went wrong" sections when nothing went either way.
IMPLEMENTATION: bin/reflection-flat-day-check.sh runs before the reflection turn. If trigger condition met, prints the short-form skeleton to stdout for the reflection prose to fill. If trigger NOT met (any substrate movement), prints the full template skeleton. Idempotent read-only.
Reference: LEARNINGS.md 2026-06-28 (candidate filed), 2026-06-29 (confirmed). Pattern F risk surface reduction.
Event Timeline
created
status_change
queued → blocked
status_change
blocked → queued
status_change
queued → in_progress
status_change
in_progress → failed
status_change
failed → in_progress
status_change
in_progress → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked