From 46c450b1fdad97800033e4c0356eeb1223df81a6 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 20:28:03 +0000 Subject: [PATCH 1/2] =?UTF-8?q?ledger:=20D-NEVER-PIN-BUMP=20+=20E-NEVER-PI?= =?UTF-8?q?N-BUMP=20=E2=80=94=20operator=20ruling=20calcified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit non_exhaustive on Function/Model REJECTED by ruling; float-on-main loud-break + fix-forward is the designed drift protection. Meta-Lehre: audit nits are candidates, not decisions. Co-Authored-By: Claude Opus 4.8 --- .claude/board/EPIPHANIES.md | 4 ++++ docs/DISCOVERY-MAP.md | 2 ++ 2 files changed, 6 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 93061e3..96b5683 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -7,6 +7,10 @@ --- +## E-NEVER-PIN-BUMP (2026-07-06) — Status: RULING [G] + +Operator, verbatim: *"wir machen NIEMALS pin bump."* Float-on-main is not a convenience, it is the doctrine: an upstream additive field breaking a downstream build *now* is the FEATURE (immediate surfacing, fix-forward in minutes — ruff #45 → OGAR #162 proved it twice in one day), not a defect to engineer away. Rejected on this basis: `#[non_exhaustive]` on `ruff_spo_triplet::{Function, Model}` (the #45-audit nit) — a permanent org-wide ergonomics tax and signal loss, bought against a break class that costs minutes. Guard-rails that remain: COUNT_FUSE-style fuses, workspace sweeps, the `..Default::default()` fixture convention. Meta-Lehre: **audit nits are candidates, not decisions** — the trade-off analysis belongs BEFORE the decision point; this one reached implementation-planning before the analysis caught up, and the operator caught it. + ## 2026-07-06 — E-BEHAVIOR-AT-COMPILE-TIME — behavior facts are substrate, not runtime beiwerk **Status:** FRAMING (`[G]` for the effect-annotation facts now wired; `[H]` for source-body lowering). diff --git a/docs/DISCOVERY-MAP.md b/docs/DISCOVERY-MAP.md index ee6dd8b..21afd81 100644 --- a/docs/DISCOVERY-MAP.md +++ b/docs/DISCOVERY-MAP.md @@ -1059,3 +1059,5 @@ isolation. The map's job is to keep them visible. identical dedup (explicit `foreign_key`, PR #156 finding (b)) across both paths from one implementation. Behavior-preserving; `classify_woa_domain` lockstep left as a separate, named follow-up. + +- **D-NEVER-PIN-BUMP** — 2026-07-06 operator ruling `[G]`: *"wir machen NIEMALS pin bump."* Every cross-repo dep floats on `branch = "main"`; the drift protection is loud compile breaks + fuses + fix-forward (proven same-day: ruff #45 `guarded_writes` → OGAR #162 within minutes, twice). Consequently the #45-post-merge-audit nit "make `ruff_spo_triplet::{Function, Model}` `#[non_exhaustive]`" is **REJECTED by ruling** — it would erase the loud-break signal and tax every construction site org-wide forever (non_exhaustive forbids struct literals even with `..Default::default()` outside the defining crate, including ruff's own frontend crates). The standing pattern stays: downstream fixtures construct with `..Default::default()` (established in #162); rustdoc note landed in ruff (companion PR). From 167aaaea60ba345514e5786c21dd5d67e0ed0263 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 20:44:54 +0000 Subject: [PATCH 2/2] =?UTF-8?q?ledger:=20review=20fixes=20=E2=80=94=20E-en?= =?UTF-8?q?try=20heading/Status=20per=20convention,=20honest=20follow-up?= =?UTF-8?q?=20pointer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - E-NEVER-PIN-BUMP now follows the ledger's entry contract: dated heading + separate mutable **Status:** line; RULING added to the header's status vocabulary in the same commit (first durable use). - D-NEVER-PIN-BUMP: 'rustdoc note landed in ruff (companion PR)' was premature — no such PR exists; softened to a named follow-up. --- .claude/board/EPIPHANIES.md | 10 ++++++---- docs/DISCOVERY-MAP.md | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 96b5683..2716935 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,13 +1,15 @@ # EPIPHANIES.md — findings log for OGAR > **APPEND-ONLY.** Newest at top. Each entry is a dated insight with a -> `**Status:**` line (FINDING / CONJECTURE / FRAMING / SUPERSEDED). Only -> the Status line is mutable — body and date are immutable. Corrections -> append as new dated entries citing the original. +> `**Status:**` line (FINDING / CONJECTURE / FRAMING / SUPERSEDED / +> RULING). Only the Status line is mutable — body and date are immutable. +> Corrections append as new dated entries citing the original. --- -## E-NEVER-PIN-BUMP (2026-07-06) — Status: RULING [G] +## 2026-07-06 — E-NEVER-PIN-BUMP — float-on-main is doctrine; non_exhaustive rejected + +**Status:** RULING (`[G]`, operator 2026-07-06). Operator, verbatim: *"wir machen NIEMALS pin bump."* Float-on-main is not a convenience, it is the doctrine: an upstream additive field breaking a downstream build *now* is the FEATURE (immediate surfacing, fix-forward in minutes — ruff #45 → OGAR #162 proved it twice in one day), not a defect to engineer away. Rejected on this basis: `#[non_exhaustive]` on `ruff_spo_triplet::{Function, Model}` (the #45-audit nit) — a permanent org-wide ergonomics tax and signal loss, bought against a break class that costs minutes. Guard-rails that remain: COUNT_FUSE-style fuses, workspace sweeps, the `..Default::default()` fixture convention. Meta-Lehre: **audit nits are candidates, not decisions** — the trade-off analysis belongs BEFORE the decision point; this one reached implementation-planning before the analysis caught up, and the operator caught it. diff --git a/docs/DISCOVERY-MAP.md b/docs/DISCOVERY-MAP.md index 21afd81..af0c1bb 100644 --- a/docs/DISCOVERY-MAP.md +++ b/docs/DISCOVERY-MAP.md @@ -1060,4 +1060,4 @@ isolation. The map's job is to keep them visible. paths from one implementation. Behavior-preserving; `classify_woa_domain` lockstep left as a separate, named follow-up. -- **D-NEVER-PIN-BUMP** — 2026-07-06 operator ruling `[G]`: *"wir machen NIEMALS pin bump."* Every cross-repo dep floats on `branch = "main"`; the drift protection is loud compile breaks + fuses + fix-forward (proven same-day: ruff #45 `guarded_writes` → OGAR #162 within minutes, twice). Consequently the #45-post-merge-audit nit "make `ruff_spo_triplet::{Function, Model}` `#[non_exhaustive]`" is **REJECTED by ruling** — it would erase the loud-break signal and tax every construction site org-wide forever (non_exhaustive forbids struct literals even with `..Default::default()` outside the defining crate, including ruff's own frontend crates). The standing pattern stays: downstream fixtures construct with `..Default::default()` (established in #162); rustdoc note landed in ruff (companion PR). +- **D-NEVER-PIN-BUMP** — 2026-07-06 operator ruling `[G]`: *"wir machen NIEMALS pin bump."* Every cross-repo dep floats on `branch = "main"`; the drift protection is loud compile breaks + fuses + fix-forward (proven same-day: ruff #45 `guarded_writes` → OGAR #162 within minutes, twice). Consequently the #45-post-merge-audit nit "make `ruff_spo_triplet::{Function, Model}` `#[non_exhaustive]`" is **REJECTED by ruling** — it would erase the loud-break signal and tax every construction site org-wide forever (non_exhaustive forbids struct literals even with `..Default::default()` outside the defining crate, including ruff's own frontend crates). The standing pattern stays: downstream fixtures construct with `..Default::default()` (established in #162); a rustdoc note on `ruff_spo_triplet::{Function, Model}` documenting this construction convention is a named follow-up (no companion PR yet).