diff --git a/docs/hygiene-history/ticks/2026/05/01/2158Z.md b/docs/hygiene-history/ticks/2026/05/01/2158Z.md new file mode 100644 index 000000000..1f775c235 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/01/2158Z.md @@ -0,0 +1 @@ +| 2026-05-01T21:58:00Z | opus-4-7 / autonomous-loop tick | 98fc7424 | Phase 1 absorption tick — Claude.ai packet on refresh-before-decide invariant + two-layer print DX. **REFRESH WORLD MODEL** (applying the rule I just landed): #1168 + #1170 MERGED, #1171 wait-ci + auto-merge armed. The maintainer shared a major Claude.ai feedback packet — a 'Backlog-Driven Dual-PM Agent Loop with Refresh Discipline — Carved Handoff' covering loop identity, refresh primitive, tick selection, DST grader, lesson generation, skill index, Mirror/Beacon ratio gate, convergence, cross-harness durability, pre-DORA proxy metrics, 22 named failure modes, operational invariants. Per substrate-or-it-didn't-happen + GOVERNANCE §33 verbatim-preservation trigger (architecture-changing + multi-AI review packet → preserve verbatim FIRST), landed three artifacts on PR #1171: (1) docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md with verbatim packet + four-field header; (2) memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md extracting the load-bearing piece the maintainer specifically flagged ('refresh-before-decide is the most violated invariant in agent loops generally'); (3) CLAUDE.md ground-rule bullet at upstream-invariant position (before the existing refresh-via-poll-pr-gate bullet — implementation vs discipline split). Phase 2 deferred: the 22 failure modes, metrics framework, Mirror/Beacon ratio gate, convergence definitions absorb organically as failures surface (Ratchet Pattern threshold 2x; Phase 1 alone is the right scope per Doctrine-recursion guard). The carved one-liner from the packet: 'Refresh produces ground truth; reactive starves proactive; backlog flows through ticks; lessons accumulate in skills indexed by descriptor; DST grades each tick; metrics grade the arc; cooling separates loose-pole from canon; same discipline grades the loop itself.' Empirical Otto-pattern this session that motivates the rule landed: at least 4 instances of acting on stale derived state (PR thread counts from prior tick, dangling-pointer findings, predicted rebase outcomes, cached file-overlap). Cure was always cheap-refresh-again. Tool existed; discipline naming was missing. Cron 98fc7424 healthy. | [PR #1171 OPENED with three-artifact Phase 1 absorption (verbatim packet + memo + CLAUDE.md bullet + MEMORY.md row pair-edit); auto-merge armed; #1168 + #1170 confirmed merged; tick-history queue continues] | The packet's framing of two-layer print DX is operationally already true in poll-pr-gate-batch.ts (raw reports[] + interpretation summary aggregate); the discipline now has explicit naming. The Ratchet Pattern self-applies to absorption: bulk-importing 22 failure modes would itself be Doctrine-recursion (substrate-without-execution); deferring to organic per-failure absorption matches the 2x-occurrence threshold. The refresh-before-decide invariant is structurally upstream of the rebase-decision rule + BLOCKED-with-green-CI rule + Copilot tick-history false-positive rule — they all are special cases that depend on having current worldview. CLAUDE.md bullet placement reflects this: refresh-before-decide bullet is FIRST in the wake-time disciplines because every other rule assumes it. |