Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/hygiene-history/ticks/2026/05/01/2158Z.md
Original file line number Diff line number Diff line change
@@ -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. |
Comment thread
AceHack marked this conversation as resolved.
Loading