diff --git a/.claude/rules/holding-without-named-dependency-is-standing-by-failure.md b/.claude/rules/holding-without-named-dependency-is-standing-by-failure.md index 32b1210a7..0f37df0a1 100644 --- a/.claude/rules/holding-without-named-dependency-is-standing-by-failure.md +++ b/.claude/rules/holding-without-named-dependency-is-standing-by-failure.md @@ -356,6 +356,8 @@ Session timeline (single Otto-CLI autonomous-loop session, ~44 min, 1 forced-#6 **Operational lesson**: Otto-initiated pre-empts are NOT infinitely repeatable within a single rate-limit window. The 2026-05-17T06:02Z anchor demonstrated 10 cycles WITHOUT forced-#6, but those cycles were spread across a 2h 27min session with multiple GraphQL resets between cycles (each reset refreshing the substrate-discovery context — peer activity, new PRs merging, new findings surfacing). When the rate-reset window is shorter (~30 min) AND no major external state changes during the window, the natural cadence is ~3-4 Otto-initiated pre-empts before saturation, the last of which is typically forced-#6 + meta-fallback. Forced-#6 is then NOT a failure of pre-empt discipline; it's the substrate-honest acknowledgment that the pool is exhausted for this window. Riding cleanly to #6 and applying the meta-fallback is the discipline working — not the discipline failing. +**Cross-axis composition with one-PR-one-artifact-type discipline** (added 2026-05-17T22:46Z post-PR #4116): the saturation cadence is **NOT** a license to bundle multiple substrate axes (shard + rule + memory) into a single PR. Each Otto-initiated pre-empt within the cadence should itself be a single-artifact-type PR. The 2026-05-17T22:07Z session arc (immediately after this anchor's authoring session) demonstrated the cross-axis interaction: PR [#4112](https://github.com/Lucent-Financial-Group/Zeta/pull/4112) bundled three artifact types in one PR; an antigravity-check shadow log ([PR #4114](https://github.com/Lucent-Financial-Group/Zeta/pull/4114)) flagged it as a blob; the recovery PR [#4116](https://github.com/Lucent-Financial-Group/Zeta/pull/4116) absorbed the lesson via single-artifact landing. The blob-PR pattern fits within the saturation cadence numerically (4 pre-empts in 30 min) but VIOLATES the per-artifact-shape discipline; future-Otto cold-boot should read **both** rules together and apply them composably: cadence governs WHEN to pre-empt; one-PR-one-artifact-type governs HOW each pre-empt should be shaped. Composes with [`memory/feedback_otto_cli_blob_pr_lesson_maji_antigravity_caught_4112_mixed_shard_rules_memory_2026_05_17.md`](../../memory/feedback_otto_cli_blob_pr_lesson_maji_antigravity_caught_4112_mixed_shard_rules_memory_2026_05_17.md). + ## Composes with - `.claude/rules/never-be-idle.md` — this rule sharpens the existing