docs(adr): R-12 — the two record amendments, the §5 verdict, and the §6 condition a NO-GO makes unsatisfiable
Rank 1 on the adopted docket, and the cheapest item on it: two ratified ADRs
whose records contradicted the code, plus the ADR-0252 obligation that Track
A's ratified NO-GO created. All four land in two files because they are two
files under one authority — splitting them would have bought two reviews of
the same document.
ADR-0146 (R-12a, option A) — the daemon it rejected, shipped.
The Shape-A rejection stands AS REASONING: a background daemon does require
process-supervision infrastructure that Shape B does not. That infrastructure
was subsequently built. chat/always_on_daemon.py implements the three items
"What is NOT in Scope" excludes, each mapped to where:
- cross-process file locking -> advisory fcntl.flock(LOCK_EX|LOCK_NB) at :82,
acquired BEFORE any signal or runtime setup so a second life fails fast
- signal handling -> SIGINT/SIGTERM graceful stop at :145
- daemon synchronization -> the load-time strict-identity guard; the flag is
forced at :48 and a different-identity checkpoint is refused, so a restart
is the same life or it is nothing
Shape B remains the persistence model and the CLI default; the daemon is an
additional shape layered on it, owned by this ADR. A new ADR for a shape that
shipped six weeks earlier adds a document without adding a decision.
The stale bullet gets an INLINE pointer, not only a trailing addendum. H-8's
mechanism is that an authoritative line converts "I should check" into "I
already checked" — the reader who stops at the excluded-scope list is exactly
the reader this gap is about, and they never scroll to the end.
ADR-0252 (R-12b, option A) — the "34 organs" basis footnote.
Footnote at the first use, marking the count as underived: the reproducible
figure is 18 resolve_promotable_* organs, ALL in generate/derivation/ and none
anywhere else, with exactly 32 modules in the package as the likely origin of
"34". The diagnosis, supersession plan and §4 conformance bar are unaffected —
none depends on the count. Option B (replace every "34" with "18") rejected: it
rewrites a ratified document's prose where a note at the point of use is all
that is owed.
ADR-0252 §5 — the verdict banner. NO-GO, ratified. Criterion pre-registered at
299c92be BEFORE the run, run at 797ebad5, artifact digest b3d9d275…, with the
mechanism stated in one measured sentence: the similarity quotient that
delivers attribute-invariance is the same quotient that annihilates structural
contrast. Scope held narrow on purpose — this refutes H1 for point-position
role encodings aligned under similarity, not every Cl(4,1) representation, and
not the symbolic lane. Also records N-8 (two prior GO verdicts on unmerged
branches, both unsound) and G-21.
ADR-0252 §6 — the amendment the NO-GO forces, and the load-bearing half.
§6 retired the surface organs "until the structure-mapper proves out" and named
no replacement for the NO-GO branch. Left alone that is a live instruction that
can never fire — an authoritative-looking dead instrument, the H-9 class
exactly. Amended: the organs are RETAINED, and that is the operative state
rather than a pause in a transition; the retirement condition is re-stated as a
demonstrated replacement passing the §5 criterion, which does not exist. The
"Build (gated on §5 GO)" bullet is marked NOT AUTHORIZED with the reason.
Retiring a working organ on the strength of a hypothesis ABOUT its replacement
is backwards; the hypothesis has now been tested.
Verification — every factual claim re-derived at ca5e614e rather than copied
from the packet: 18 organs, 0 outside generate/derivation/, exactly 32 modules
(tightening the draft's "~32"); lock, signals and identity guard each cited by
line; report digest read back from the artifact file.
Three things caught before landing, recorded because this commit is about
records being wrong.
1. The date. The addendum drafted "landed 2026-06-14". This container's clone
was SHALLOW — 168 commits, roots grafted at 2026-07-19 — so git log
reported 2026-07-20, which is the shallow boundary and not a fact. Neither
figure was verifiable until the clone was deepened to 2340 commits, which
confirmed the packet: 18e25580, 2026-06-14, the same commit introducing
both the lock and the signal handling. The addendum now cites the SHA. A
date that cannot be re-derived is testimony.
2. A wrong section reference — the amendment cited §9 for a sentence in §8.
3. A misquote — "the existing reader" for "the existing 34-organ reader".
Writing a misquote into a ratified document while amending that document for
accuracy would have been this ruling's own failure mode committed inside its
own fix. Both were found by re-reading the amendment against the source it
quotes, which is standing philosophy 7.
Records closed: H-8(a), H-8(b), G-15. Track A's outstanding obligation
discharged. H-8(c)/(d) remain open on R-3 and land with PR-5.
No runtime behavior. No test changes. Two ADR files and four register/plan
files.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
This commit is contained in:
parent
ca5e614ec8
commit
b823d85d28
6 changed files with 86 additions and 14 deletions
|
|
@ -102,7 +102,7 @@ To preserve the non-negotiable byte-identical replay contract:
|
|||
|
||||
To maintain a narrow and robust focus, the following items are explicitly excluded from this design:
|
||||
- **VaultStore persistence:** `VaultStore` remains an ephemeral T1 memory layer per ADR-0055. Permanent memory resides in the T3 teaching corpus and is promoted only via HITL.
|
||||
- **Concurrency control:** Since Shape B is single-process and synchronous, cross-process file locking, daemon synchronization, and signal handling are out of scope.
|
||||
- **Concurrency control:** Since Shape B is single-process and synchronous, cross-process file locking, daemon synchronization, and signal handling are out of scope. — **Superseded for the daemon path only; see the Addendum (2026-07-28) at the end of this ADR. Shape B's own single-process path is unchanged.**
|
||||
- **Network surfaces:** The engine remains strictly local-only; no TCP/HTTP servers or sockets are added to support persistence.
|
||||
- **Multi-tenancy/multi-instance:** A single repository supports exactly one active engine state checkpoint.
|
||||
- **Re-architecting `ChatRuntime`:** The unit of execution is unchanged; `ChatRuntime` merely gains load/save hook methods.
|
||||
|
|
@ -125,3 +125,25 @@ Establishing this hybrid persistence model directly unlocks the following ratche
|
|||
- *Mitigation:* Pin round-trip serialization in unit tests. Verify that schema updates include migrations or clear-slate fallbacks.
|
||||
- **Stale Checkpoint after Pack Mutation:** If a user checks out a different git revision or modifies packs, the loaded checkpoint might refer to invalid types or mismatching revisions.
|
||||
- *Mitigation:* Compare `written_at_revision` in `manifest.json` with the current git SHA. If they mismatch, log a warning but continue startup (do not refuse to start, as a reboot is recovery, not control flow).
|
||||
|
||||
---
|
||||
|
||||
## Addendum — 2026-07-28, daemon shape reconciled
|
||||
|
||||
*Ruled R-12a, option A (`docs/assessment/50-rulings.md`), 2026-07-28 by Joshua Shay. This addendum changes no decision. It stops the record contradicting the code.*
|
||||
|
||||
**The Shape-A rejection stands as reasoning.** A background daemon requires process-supervision infrastructure that Shape B does not — that was true when written and is true now. What changed is that the infrastructure was subsequently built.
|
||||
|
||||
`chat/always_on_daemon.py` (landed `18e25580`, 2026-06-14) runs a supervised always-on daemon **over** Shape-B persistence, and implements the three items this ADR's "What is NOT in Scope" places outside it:
|
||||
|
||||
| Excluded item | Where it is implemented |
|
||||
|---|---|
|
||||
| cross-process file locking | advisory `fcntl.flock(LOCK_EX \| LOCK_NB)` single-instance lock (`:82`), acquired *before* any signal or runtime setup so a second life fails fast |
|
||||
| signal handling | SIGINT/SIGTERM handlers for a graceful stop (`:145`), with `install_signals=False` for tests that drive their own `stop_event` |
|
||||
| daemon synchronization | the load-time **strict-identity guard** — `strict_identity_continuity` is forced (`:48`) and a different-identity checkpoint is refused, so a daemon restart is the *same* life or it is nothing |
|
||||
|
||||
**Shape B remains the persistence model and the CLI's default.** The daemon is an *additional* process shape layered on it, not a replacement, and it is owned by this ADR rather than by a new one — the decision here was never wrong, only its scope sentence went stale. A separate ADR for a shape already shipped would add a document without adding a decision (R-12a option B, rejected).
|
||||
|
||||
**Scope of the supersession:** the "Concurrency control" bullet under *What is NOT in Scope* no longer describes the daemon path. It continues to describe the single-process CLI path exactly as ratified.
|
||||
|
||||
*Recorded because a ratified ADR that contradicts running code converts "I should check" into "I already checked" — the H-8 mechanism, catalogued in `docs/assessment/31-hindrance-audit.md`.*
|
||||
|
|
|
|||
|
|
@ -13,10 +13,14 @@
|
|||
|
||||
## 1. The core claim
|
||||
|
||||
CORE was built as geometric / wave cognition. Cognitive science's most unifying account shows that geometric / wave cognition **is** the physical substrate of human problem-solving: perception-and-reasoning as free-energy minimization on a predictive manifold (Friston), generalization as relational structure-alignment (Gentner), founded on geometric and numerical core-knowledge primitives (Spelke/Carey). Therefore **CORE's substrate already instantiates the human problem-solving paradigm** — the founding bet is vindicated. The project's single architectural error was to build a **novice** comprehender (34 bespoke surface organs) bolted onto an **expert** substrate it never used for comprehension.
|
||||
CORE was built as geometric / wave cognition. Cognitive science's most unifying account shows that geometric / wave cognition **is** the physical substrate of human problem-solving: perception-and-reasoning as free-energy minimization on a predictive manifold (Friston), generalization as relational structure-alignment (Gentner), founded on geometric and numerical core-knowledge primitives (Spelke/Carey). Therefore **CORE's substrate already instantiates the human problem-solving paradigm** — the founding bet is vindicated. The project's single architectural error was to build a **novice** comprehender (34† bespoke surface organs) bolted onto an **expert** substrate it never used for comprehension.
|
||||
|
||||
This ADR ratifies the paradigm CORE already embodies and reorients the reader from novice (surface features) to expert (deep relational structure). It is the single governing source of truth; the six retired formulations were each a partial groping toward one of its layers.
|
||||
|
||||
> † **Basis note — 2026-07-28.** The figure "34" has no reproducible derivation. The reproducible count of surface entry organs is **18** `resolve_promotable_*` functions, **all** in `generate/derivation/` and none anywhere else, at this ADR's ratification commit and re-verified unchanged at `ca5e614e`; the derivation package holds **exactly 32 modules**, which is the likeliest origin of the number. The diagnosis, the supersession plan, and the §4 conformance bar are unaffected — none of them depends on the count. Later text saying "the 34 surface organs" (§2, §6, §9) should be read as "the surface organs."
|
||||
>
|
||||
> *Ruled R-12b, option A, 2026-07-28 by Joshua Shay. Option B — replacing every "34" with "18" — was rejected: it rewrites a ratified document's prose, where recording the correction where a reader meets the number is all that is owed.*
|
||||
|
||||
## 2. The paradigm — five stages and the governing law
|
||||
|
||||
1. **Perceive → core primitives.** Reduce surface text to the primitives the substrate represents: quantities (the Number core-system), entities (the Object core-system), and their **relational roles** — containment / transfer / accumulation / comparison (two-argument relational predicates). Not surface-slot regexes.
|
||||
|
|
@ -51,6 +55,18 @@ The fit is not analogy. `relax_to_ground` *is* Friston's principle in Clifford a
|
|||
|
||||
## 5. The one unknown — resolved with a controlled experiment (the acceptance gate)
|
||||
|
||||
> ### §5 VERDICT — **NO-GO**, ratified 2026-07-28 by Joshua Shay
|
||||
>
|
||||
> Criterion **pre-registered at `299c92be`, before the run** (that commit carries the thresholds as importable constants and no results). Run at `forgejo/main` @ `797ebad5`. Artifact `evals/structure_mapping/adr0252_s5/results/report-797ebad5.json`, `deterministic_digest` `b3d9d27592e213104c51bcace7415fd819d722a1b06f7d0a5ca65bd5a234e4ec`. Reproduce with `uv run python -m evals.structure_mapping.adr0252_s5.experiment`. Full reasoning: `docs/research/sme-experiment-verdict-797ebad5.md`.
|
||||
>
|
||||
> **H1 is refuted for the embedding class tested.** Structure-sensitivity (§5.3c) fails at *every* attribute weight swept — it is not a knife-edge on a constant. The mechanism, measured rather than argued: **the similarity quotient that delivers attribute-invariance is the same quotient that annihilates structural contrast.** An `add`-vs-`subtract` minimal pair — one entity, identical numbers, one relation kind changed — aligns at residual exactly `0.0`, its two configurations being related by a proper rotation. Sweeping the attribute weight, every regime in which the SME property survives is a regime in which attributes contribute nothing (AUC 1.00 → 0.83 → 0.69 as they begin to matter).
|
||||
>
|
||||
> **Scope, deliberately narrow.** This refutes H1 for embeddings that encode role-structure as *point positions* aligned by `conformal_procrustes` **under similarity**. The argument is about the quotient, so it generalises across that class. It does **not** refute every Cl(4,1) representation, and it does not touch the symbolic structure-mapping lane already in `evals/structure_mapping/`.
|
||||
>
|
||||
> Per §5.4, *"a well-controlled NO-GO is a full-credit result."* This is that. **The §6 build is not authorized and cannot become authorized by this experiment** — see the §6 amendment.
|
||||
>
|
||||
> *Two findings the track produced that were on nobody's list.* (1) The experiment was **already run twice, returning GO twice, on unmerged branches** — `rnd/structure-mapping-experiment` @ `fc9d0c14` leaked the structure label into the embedding; `rnd/sme-experiment-v2` @ `96e5f468` counted a solver exception as a distance (`except ValueError: res = 1000.0`) and passed mixed versor/point sequences to the field-conjugacy branch, so its entire separability signal was that raise. Both are unsound and are voided by the verdict document; the plan, the gap register and this ADR had all read the same absence and called the item "unrun" for nine days (recorded as N-8 — *a branch tip is not a record*). (2) The math reader decides **5 of 500** `holdout_dev/v1` cases (1.0%), all carrying one relational skeleton, which is why §5.1's four-structure corpus was not extractable and is registered as **G-21**.
|
||||
|
||||
The paradigm is correct in principle. Exactly one empirical claim is load-bearing and unproven: **can CORE's Cl(4,1) geometry carry a problem's relational structure faithfully enough that `conformal_procrustes` (the SME) aligns same-deep-structure problems and separates different-structure ones — driven by *relations*, invariant to *surface attributes*?** If yes, Structure-Map (stage 2) is buildable on the existing substrate. If no, stage 2 needs a different representation, and we learn that cheaply.
|
||||
|
||||
Mastery here means isolating the exact SME property with **controls**, not eyeballing residuals.
|
||||
|
|
@ -72,10 +88,22 @@ Mastery here means isolating the exact SME property with **controls**, not eyeba
|
|||
## 6. What changes in code
|
||||
|
||||
- **Keep, recognized as paradigm layers:** `quantity_kernel` (Number), `cognitive_lifecycle/relax_to_ground` (predictive-processing inference), `conformal_procrustes` (SME), the corridor (`turn_program`/`multi_register` = solve), the certificate + `wrong=0` (precision gate).
|
||||
- **Build (the missing expert-comprehension layer, gated on §5 GO):** a Structure-Map path — a role-predicate relational representation, a small library of canonical structures (base domains), and mapping a novel problem to the nearest canonical via `conformal_procrustes`.
|
||||
- **Build (the missing expert-comprehension layer, gated on §5 GO):** a Structure-Map path — a role-predicate relational representation, a small library of canonical structures (base domains), and mapping a novel problem to the nearest canonical via `conformal_procrustes`. — **NOT AUTHORIZED. §5 returned NO-GO on 2026-07-28.** This bullet stands as the record of what a GO would have authorized. Stage 2 needs a different representation, and finding one is not scoped by this ADR.
|
||||
- **Represent relationally:** treat `MathProblemGraph` (or a layer above it) as a graph of two-argument role predicates, not surface slots.
|
||||
- **Revive + reframe:** ADR-0174's held-hypothesis reader as the overlapping-waves candidate-mapping selector.
|
||||
- **Supersede, verification-gated, over time:** the 34 surface organs — kept serving until the structure-mapper proves out, then retired.
|
||||
- **Supersede, verification-gated, over time:** the surface organs† — kept serving until a structure-mapper proves out, then retired. — **AMENDED 2026-07-28 on the §5 NO-GO; see below.**
|
||||
|
||||
> ### §6 amendment — the retirement condition, on a NO-GO
|
||||
>
|
||||
> *Ratified 2026-07-28 by Joshua Shay, together with the §5 verdict.*
|
||||
>
|
||||
> As written, this bullet retires the surface organs on the strength of a replacement that **§5 has now tested and refuted**, and it names no replacement for the NO-GO branch. Left alone it would be a live instruction that can never fire — an authoritative-looking dead instrument, which is the exact failure class catalogued as H-9 in `docs/assessment/31-hindrance-audit.md`.
|
||||
>
|
||||
> **The surface organs are RETAINED. That is the operative state, not a pause in a transition.** The retirement condition is re-stated as: *a demonstrated replacement that passes the §5 criterion.* No such replacement exists, none is proposed by this ADR, and the one hypothesis that was proposed has been falsified for its embedding class.
|
||||
>
|
||||
> Retiring a working organ on the strength of a *hypothesis about* its replacement is backwards. The hypothesis has now been tested. This amendment records that the pre-condition failed, so that no later reader mistakes "verification-gated supersession" for a decision already taken and merely awaiting execution.
|
||||
>
|
||||
> *This changes no decision made at ratification. §8's ruling record already states: "The existing 34-organ† reader keeps serving until a proven replacement exists — nothing is torn out on ratification." The amendment makes the NO-GO branch of that same commitment explicit, because the §6 bullet carrying the condition read as though the replacement were coming.*
|
||||
|
||||
## 7. Non-goals
|
||||
|
||||
|
|
|
|||
|
|
@ -145,8 +145,14 @@ Determinism bans clocks; continuity implies lived time; the 24h+ no-drift requir
|
|||
### G-14 · CR-1 attention governance — the one-page ADR
|
||||
Own `use_salience`, the two underived constants, the self-narrowing budget feedback, and the `InhibitionMask` disposition. Mechanism verified live and sound; only the governance is absent. **Authority:** ADR (one page — the card is its draft evidence base).
|
||||
|
||||
### G-15 · The daemon's ratifying ADR
|
||||
`chat/always_on_daemon.py` is unowned while ADR-0146 explicitly rejected the daemon shape it implements. Whatever the right answer, the record currently contradicts the code (see H-8). **Authority:** ADR amendment or a new short ADR.
|
||||
### G-15 · The daemon's ratifying ADR — **CLOSED 2026-07-28 (R-12a)**
|
||||
`chat/always_on_daemon.py` was unowned while ADR-0146 explicitly rejected the daemon shape it implements. Whatever the right answer, the record contradicted the code (see H-8a). **Authority:** ADR amendment or a new short ADR.
|
||||
|
||||
**Closed by amendment, not by a new ADR — and the choice mattered.** ADR-0146 now carries an addendum owning the daemon: the Shape-A rejection **stands as reasoning** (a daemon does require supervision infrastructure Shape B does not), and the infrastructure was subsequently built. The three items its "What is NOT in Scope" excluded are each mapped to where they are implemented — `fcntl.flock` single-instance lock acquired before any signal or runtime setup, SIGINT/SIGTERM graceful stop, and the load-time strict-identity guard that makes a daemon restart *the same life or nothing*. Shape B remains the persistence model and the CLI default; the daemon is an additional process shape layered on it. A new ADR for a shape shipped six weeks earlier would have added a document without adding a decision.
|
||||
|
||||
**The stale bullet carries an inline pointer**, not just a note at the end. H-8's mechanism is that an authoritative-looking line converts *"I should check"* into *"I already checked"* — a reader who stops at the excluded-scope list is exactly the reader this gap is about, and they never reach a trailing addendum.
|
||||
|
||||
**Evidence:** `docs/adr/ADR-0146-…md` §"What is NOT in Scope" + Addendum; `chat/always_on_daemon.py:48,82,145`; introduced `18e25580` (2026-06-14, the same commit adding both the lock and the signals — established only after deepening a shallow 168-commit clone to 2340, since the shallow boundary was reporting a false date).
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -76,8 +76,18 @@ The surviving delta is **not a containment hole** — refusal is fail-closed and
|
|||
|
||||
**(e) — added 2026-07-28 (external-assessment triage), and it is inside the code again.** `core/cognition/inductive_closure.py`'s docstring rule *"Cycle: if path would revisit a node, skip"* (`:106`) describes a check the implementation does not perform — it checks `a == c` and known-triple membership only (`:189-193`), **which is sufficient**: the fixed point is monotone over a finite triple set, so no path-based check is needed for termination, and adding one would *refuse sound transitive derivations* (a witness path that revisits a node still proves a true fact). Separately, `path` records only `(a, b, c)` even for derivations whose chain is longer (`:198`), so the provenance serialized into `operator_invocation` is incomplete for multi-step derivations. The remedy splits: the **docstring correction is mechanical** and belongs with the amendment batch; extending `path` to full provenance **changes `operator_invocation` bytes and therefore `trace_hash`**, so it is held to the trace-change bar and must not land silently.
|
||||
**Better home:** five amendments — ADR-0146 addendum owning the daemon (drafted in `50-rulings.md` R-12a); ADR-0252 basis footnote (drafted, R-12b); a correction note on the 07-25 doc; the two docstrings corrected or the flag added, per R-3; and the inductive-closure docstring correction (e), mechanical.
|
||||
**Status (2026-07-28): (e) CORRECTED.** `expand_relation_closure`'s docstring now states that termination is structural (monotone growth over a finite triple set) and that **no path-revisit check is performed and none should be** — one would refuse sound transitive derivations. It also records that `path` is the *witnessing* step rather than full ancestry, and that extending it would move `operator_invocation` and `trace_hash`, so it is deliberately not done. (a)–(d) remain open on their rulings.
|
||||
**Authority:** docs PRs + ruling signatures (R-12 for the two ratified ADRs, R-3 for the docstrings).
|
||||
**Status (2026-07-28): (a) CLOSED · (b) CLOSED · (e) CORRECTED · (c)+(d) open on R-3.**
|
||||
|
||||
**(a) and (b) closed by R-12, executed 2026-07-28.** ADR-0146 gained an addendum owning the daemon: the Shape-A rejection stands *as reasoning*, the supervision infrastructure it said would be required was subsequently built, and the "What is NOT in Scope" concurrency bullet is superseded **for the daemon path only** — with an inline pointer at the stale bullet itself, because H-8's mechanism is precisely that readers do not scroll to the end. ADR-0252 gained the basis footnote at the first use of "34". Every claim in both was re-verified at `ca5e614e` before writing rather than copied from the packet: **18** `resolve_promotable_*` organs, **0** outside `generate/derivation/`, **exactly 32** modules; the daemon's lock, signals and identity guard all present with line references; the daemon's landing date confirmed as `18e25580`, 2026-06-14.
|
||||
|
||||
*Two errors caught in the amendment text before it landed, recorded because this entry is about records being wrong:* the draft cited **§9** for a sentence that is in **§8**, and misquoted it as *"the existing reader"* when the ADR says *"the existing 34-organ reader."* Both were found by re-reading the amendment against the source it quotes. Writing a misquote into a ratified document while amending it for accuracy would have been this entry's own failure, committed inside its own fix.
|
||||
|
||||
*Also caught, and it is the reason the date is trustworthy:* the container's clone was **shallow (168 commits, roots grafted at 2026-07-19)**, so `git log` reported the daemon as first appearing on 2026-07-20 — the shallow boundary, not a fact. The packet's 2026-06-14 was unverifiable either way until the clone was deepened to 2340 commits. A date that cannot be re-derived is testimony; it is now evidence, and cited by SHA rather than by date alone.
|
||||
|
||||
**(e) CORRECTED.** `expand_relation_closure`'s docstring now states that termination is structural (monotone growth over a finite triple set) and that **no path-revisit check is performed and none should be** — one would refuse sound transitive derivations. It also records that `path` is the *witnessing* step rather than full ancestry, and that extending it would move `operator_invocation` and `trace_hash`, so it is deliberately not done.
|
||||
|
||||
**(c) and (d) remain open**, both on **R-3** (ruled A — incomplete flag set), and both land with PR-5: the 07-25 doc's correction note, and the two `core/config.py` docstrings corrected as `accrue_realized_knowledge` joins the daemon profile.
|
||||
**Authority:** docs PRs + ruling signatures (R-12 — **discharged**; R-3 for the docstrings).
|
||||
|
||||
## H-9 · Dead instruments still standing as if live
|
||||
**Verdict:** `superseded-in-place` (unratified) · **Layers:** MV/governance
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
| Landed | Blocked, and on what |
|
||||
|---|---|
|
||||
| PR-0 ruling packet (#140) · PR-1 record amendments · R-10 discharged (#138 merged) | PR-2 — CR-1/CR-2 design briefs that do not yet exist (**not** a ruling) |
|
||||
| PR-0 ruling packet (#140) · PR-1 record amendments · R-10 discharged (#138 merged) · **R-12 — both ADR amendments + the §5 verdict banner + the §6 retirement amendment** | PR-2 — CR-1/CR-2 design briefs that do not yet exist (**not** a ruling) |
|
||||
| **Track A — ADR-0252 §5 run to NO-GO**, criterion pre-registered, artifact + digest committed, **verdict ratified 2026-07-28** | PR-8 — a small ADR (H-3/G-20) · PR-10 — a refactor ADR (H-4) |
|
||||
| PR-4 membership + reachability ratchets · PR-6 three doctrine pins · PR-7 M2 trust table · PR-9 count-the-swallow | PR-12 — an ADR **amendment** (R-13 authorizes it; the amendment is still owed) |
|
||||
| PR-3 + PR-3b (**R-7**, Wave 1) · H-13 (served-marker defect) · H-8e (closure docstring) · G-22 (main was red; `CLAIMS.md` stale) | Track B — the fabrication ADR (standing instruction, unchanged) |
|
||||
| **Closed:** G-7, G-9, G-22, H-7, H-11, H-13, H-8e · **Answered:** G-1 · **Discharged:** H-10 | Track C — invention, deliberately last |
|
||||
| **Closed:** G-7, G-9, G-22, H-7, H-11, H-13, H-8a, H-8b, H-8e · **Answered:** G-1 · **Discharged:** H-10 · **Pinned:** G-23 | Track C — invention, deliberately last |
|
||||
|
||||
**New this arc, not in the original assessment:** **N-8** (the §5 experiment had already returned GO twice, on unmerged branches, both unsound), **N-9** (the gate "drift" was a recorded decision — PR-4's pin 1 **withdrawn** rather than built, R-14 dissolved), **G-21** (the math reader decides **1.0%** of `holdout_dev/v1`), **G-22** (`main` was red before the arc, and `CLAIMS.md` published a superseded evidence digest for two days), **H-13**, **H-14**, **H-8e**.
|
||||
|
||||
|
|
@ -214,7 +214,7 @@ The packet's original order was by register number. That is the wrong axis: it i
|
|||
|
||||
| Rank | Ruling(s) | Deliverable | Size | Why here |
|
||||
|---|---|---|---|---|
|
||||
| 1 | **R-12** | Two ratified-ADR record amendments — ADR-0146 (daemon) and ADR-0252 ("34 organs" basis footnote). Text already drafted in the packet | **S** | Zero-risk, changes no decision, and both ADRs are read as authority by everything downstream. A record that contradicts the code is the arc's whole subject. |
|
||||
| 1 | ~~**R-12**~~ | Two ratified-ADR record amendments — ADR-0146 (daemon) and ADR-0252 ("34 organs" footnote) — **plus** the §5 verdict banner and the §6 retirement-condition amendment, landed in the same edit | **S** | **EXECUTED 2026-07-28.** Zero-risk, changed no decision. Closed **H-8(a)** and **H-8(b)**, and discharged Track A's outstanding obligation. |
|
||||
| 2 | ~~R-7~~ | ~~Register supersession~~ | — | **EXECUTED** — PR-3 + PR-3b, landed 2026-07-28. Listed so the order stays readable. |
|
||||
| 3 | **R-3 + R-4** | PR-5 — the flag register (`docs/specs/flag_register.md`), all 32 `RuntimeConfig` booleans, profiles as units, the pin that forbids an unregistered flag, `accrue_realized_knowledge` added to the daemon profile, the two N-6 docstrings corrected | **M** | R-3 is a **hard gate on Wave 4**; nothing automates until it resolves. R-4 is the mechanism R-3's fix must land inside, so they are one PR. |
|
||||
| 4 | **R-9 + R-2** | PR-11 — the L10 soak to a committed artifact with a pinned `deterministic_digest`, the ruled cadence, and R-2's "now" paragraph written into the contract *before* the re-run | **M** | Proof of life. R-2 must land first inside the same PR or the soak answers a design question by accident (the packet's own reasoning for R-2). |
|
||||
|
|
@ -360,7 +360,7 @@ Protocol followed as written: criterion pre-registered at `299c92be` **before**
|
|||
|
||||
**Ratified 2026-07-28, and it leaves one obligation the ADR itself cannot discharge.** ADR-0252 **§6 names an organ-retirement condition that a NO-GO makes unsatisfiable as written**: it retires the symbolic structure-mapping organs *on the strength of the geometric replacement*, and names **no replacement** for the NO-GO branch. A ratified NO-GO therefore has to be written back into the ADR or the ADR's §6 stands as a live instruction that can never fire — an instrument in the H-9 class, authoritative-looking and dead.
|
||||
|
||||
**Owed, and it is an amendment rather than a new decision (Shay's authority, drafted for one-word approval):**
|
||||
**DISCHARGED 2026-07-28, with R-12** — all three landed in one edit to ADR-0252, since they are one file under one authority and splitting them would have bought two reviews of the same document. The §6 bullet now reads *"the surface organs are RETAINED — that is the operative state, not a pause in a transition,"* and the §6 "Build" bullet is marked **NOT AUTHORIZED** with the reason. What was owed:
|
||||
1. **§5 gains its verdict banner** — NO-GO, the run SHA, the report digest, the scope sentence (*point-position role encodings aligned by conformal Procrustes under similarity*, not every Cl(4,1) representation, and not the symbolic lane already in `evals/structure_mapping/`).
|
||||
2. **§6's retirement condition is amended to state the NO-GO branch explicitly**: the symbolic organs are **retained**, and the condition that would retire them is re-stated as *a demonstrated replacement passing the §5 criterion*, which no longer exists. Retiring a working organ because a *hypothesis about its replacement* was written down is precisely backwards.
|
||||
3. **The "34 organs" basis footnote** from R-12 lands in the same amendment — same file, same authority, one review instead of two.
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
**Also ratified:** the ADR-0252 §5 **NO-GO** verdict.
|
||||
|
||||
**Execution order (corrected):** R-12 → R-7 → R-3+R-4 → R-9+R-2 → R-13 → R-8 → R-1/R-5/R-6/R-11.
|
||||
**Executed so far:** R-7 (PR-3, PR-3b landed 2026-07-28).
|
||||
**Executed so far:** R-7 (PR-3, PR-3b) · **R-12 (both ADR amendments + the §5 verdict banner + the §6 retirement-condition amendment)** — all landed 2026-07-28.
|
||||
**Contract:** each ruling below is prepared so that answering it costs **one word**. The evidence is gathered, the options are enumerated, a recommendation is made with its reasoning, and the exact change that follows from each option is written out. Nothing here recommends reversing a ratified decision; R-12 amends two ADRs' *records* without touching either decision.
|
||||
|
||||
**How to rule:** reply with the item and your choice — e.g. `R-1 A · R-3 B · R-8 C`. Anything left unruled stays `PENDING` and blocks only the wave named in its **Blocks** line.
|
||||
|
|
@ -267,7 +267,13 @@ Two flags' documentation describes a production profile the production profile d
|
|||
|
||||
## R-12 · The two ratified-ADR record amendments
|
||||
|
||||
**Status:** **RULED A/A** — 2026-07-28, Shay (explicit adoption) · *both drafted amendment texts applied as written* · **Register:** G-15 / H-8 · **Blocks:** PR-1's completion (H-8 cannot close without this).
|
||||
**Status:** **RULED A/A — EXECUTED 2026-07-28** · both amendments applied, plus the §5 verdict banner and the §6 retirement-condition amendment in the same edit (one file, one authority, one review) · **Register:** G-15 / H-8 — **H-8(a) and H-8(b) now CLOSED** · **Blocks:** nothing further.
|
||||
|
||||
> **Executed as written, with the claims re-verified rather than copied.** Every factual assertion in both amendments was re-derived at `ca5e614e` before writing: **18** `resolve_promotable_*` organs, **0** outside `generate/derivation/`, **exactly 32** modules in the package (tightening the draft's "~32"); the daemon's `fcntl.flock` lock, SIGINT/SIGTERM handlers and load-time identity guard each cited by line.
|
||||
>
|
||||
> **The one draft claim that did not survive first contact was the date.** The addendum said the daemon "landed 2026-06-14"; this container's clone was **shallow — 168 commits, roots grafted at 2026-07-19** — so `git log` reported 2026-07-20, which is the shallow boundary rather than a fact. Deepening the clone (168 → 2340 commits) confirmed the packet was right: `18e25580`, 2026-06-14, the same commit that introduced both the lock and the signal handling. The addendum now cites the SHA, because a date that cannot be re-derived is testimony.
|
||||
>
|
||||
> **Two errors in my own amendment text, caught before landing:** it cited **§9** for a sentence that is in **§8**, and misquoted *"the existing 34-organ reader"* as *"the existing reader."* Writing a misquote into a ratified document while amending that document for accuracy is this ruling's own failure mode; both were found by re-reading the amendment against the source it quotes.
|
||||
|
||||
**The question.** Two ratified ADRs' *records* contradict the code. Neither amendment changes a decision; both are text. Editing a ratified ADR is Shay's authority even when the edit changes nothing, which is why they are here and not in PR-1.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue