diff --git a/.claude/rules/refresh-before-decide.md b/.claude/rules/refresh-before-decide.md index 029931a0d..aaab7c761 100644 --- a/.claude/rules/refresh-before-decide.md +++ b/.claude/rules/refresh-before-decide.md @@ -25,4 +25,4 @@ loops generally. `memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md` Verbatim packet: -`docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md` +`memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md` diff --git a/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md b/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md index e734c5625..166dc729d 100644 --- a/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md +++ b/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md @@ -14,7 +14,7 @@ type: friction-reducer # B-0159 — `refresh-github-worldview` cross-cutting refresh script (Claude.ai 2026-05-01) -**Origin:** Claude.ai feedback packet 2026-05-01 — full lineage in [docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md](../../research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) and the maintainer-relayed Claude.ai-2 follow-up calibrating against Otto's running state. +**Origin:** Claude.ai feedback packet 2026-05-01 — full lineage in [memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md](../../../memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) and the maintainer-relayed Claude.ai-2 follow-up calibrating against Otto's running state. ## Problem diff --git a/memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md b/memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md index 5a5ca0b0d..eed1b5589 100644 --- a/memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md +++ b/memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md @@ -1,9 +1,9 @@ --- name: Refresh-before-decide invariant + two-layer print DX (raw → interpretation, mismatch is the bug class) — Claude.ai 2026-05-01 -description: Claude.ai feedback packet 2026-05-01 (preserved verbatim at docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) names refresh-before-decide as **the fundamental invariant** for agent loops, and the two-layer print DX (raw output → labeled interpretation, both visible) as the discipline that makes the staleness failure mode catchable rather than silent. The human maintainer's standalone framing: *"refresh-before-decide is the most violated invariant in agent loops generally, not just Otto. The temptation to skip refresh is constant because refresh feels redundant when 'I just refreshed earlier.' The cure is making refresh cheap enough that re-running is friction-free."* Zeta's existing `tools/github/poll-pr-gate.ts` + `poll-pr-gate-batch.ts` ALREADY implement this pattern (cheap, structured-JSON output, interpretation-via-summary-aggregate); the discipline now has explicit framing. +description: Claude.ai feedback packet 2026-05-01 (preserved verbatim at memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) names refresh-before-decide as **the fundamental invariant** for agent loops, and the two-layer print DX (raw output → labeled interpretation, both visible) as the discipline that makes the staleness failure mode catchable rather than silent. The human maintainer's standalone framing: *"refresh-before-decide is the most violated invariant in agent loops generally, not just Otto. The temptation to skip refresh is constant because refresh feels redundant when 'I just refreshed earlier.' The cure is making refresh cheap enough that re-running is friction-free."* Zeta's existing `tools/github/poll-pr-gate.ts` + `poll-pr-gate-batch.ts` ALREADY implement this pattern (cheap, structured-JSON output, interpretation-via-summary-aggregate); the discipline now has explicit framing. type: feedback caused_by: - - "Claude.ai 2026-05-01 carved-handoff packet (verbatim at docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) — multi-section architecture document on backlog-driven dual-PM agent loop with refresh as the load-bearing primitive." + - "Claude.ai 2026-05-01 carved-handoff packet (verbatim at memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) — multi-section architecture document on backlog-driven dual-PM agent loop with refresh as the load-bearing primitive." - "The human maintainer 2026-05-01 standalone framing in same packet: 'refresh-before-decide is the most violated invariant in agent loops generally, not just Otto.' Plus: 'The DX two-layer print is the part most worth flagging for Otto specifically — raw output before interpretation, both visible to the human dev, mismatch as debug surface.'" - "Empirical Otto failure-pattern this session: I have repeatedly acted on stale derived state without re-running raw refresh. The poll-pr-gate-batch.ts tool exists precisely to make refresh cheap; the discipline of using it before tick decisions is what was missing the explicit naming." - "Composes with the BLOCKED-with-green-CI investigate-threads-first rule (CLAUDE.md) — that rule is a special case of refresh-before-decide applied to PR thread state." @@ -250,4 +250,4 @@ not by maintainer fiat.) # Sources -- [Claude.ai feedback packet — Backlog-Driven Dual-PM Agent Loop with Refresh Discipline (verbatim)](../docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) — preserved 2026-05-01. +- [Claude.ai feedback packet — Backlog-Driven Dual-PM Agent Loop with Refresh Discipline (verbatim)](../memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) — preserved 2026-05-01.