Skip to content

Commit 0511aee

Browse files
authored
Merge pull request #166 from AdaWorldAPI/claude/ruling-never-pin-bump
ledger: D/E-NEVER-PIN-BUMP — float-on-main ruling; non_exhaustive rejected
2 parents a81fc4e + 167aaae commit 0511aee

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# EPIPHANIES.md — findings log for OGAR
22

33
> **APPEND-ONLY.** Newest at top. Each entry is a dated insight with a
4-
> `**Status:**` line (FINDING / CONJECTURE / FRAMING / SUPERSEDED). Only
5-
> the Status line is mutable — body and date are immutable. Corrections
6-
> append as new dated entries citing the original.
4+
> `**Status:**` line (FINDING / CONJECTURE / FRAMING / SUPERSEDED /
5+
> RULING). Only the Status line is mutable — body and date are immutable.
6+
> Corrections append as new dated entries citing the original.
77
88
---
99

10+
## 2026-07-06 — E-NEVER-PIN-BUMP — float-on-main is doctrine; non_exhaustive rejected
11+
12+
**Status:** RULING (`[G]`, operator 2026-07-06).
13+
14+
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.
15+
1016
## 2026-07-06 — E-BEHAVIOR-AT-COMPILE-TIME — behavior facts are substrate, not runtime beiwerk
1117

1218
**Status:** FRAMING (`[G]` for the effect-annotation facts now wired; `[H]` for source-body lowering).

docs/DISCOVERY-MAP.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,3 +1059,5 @@ isolation. The map's job is to keep them visible.
10591059
identical dedup (explicit `foreign_key`, PR #156 finding (b)) across both
10601060
paths from one implementation. Behavior-preserving; `classify_woa_domain`
10611061
lockstep left as a separate, named follow-up.
1062+
1063+
- **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).

0 commit comments

Comments
 (0)