diff --git a/docs/adr/ADR-0146-l10-hybrid-engine-state-persistence.md b/docs/adr/ADR-0146-l10-hybrid-engine-state-persistence.md index 76eb2769..587dcee2 100644 --- a/docs/adr/ADR-0146-l10-hybrid-engine-state-persistence.md +++ b/docs/adr/ADR-0146-l10-hybrid-engine-state-persistence.md @@ -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`.* diff --git a/docs/adr/ADR-0252-problem-solving-paradigm-consolidation.md b/docs/adr/ADR-0252-problem-solving-paradigm-consolidation.md index af0f14c9..f3ada918 100644 --- a/docs/adr/ADR-0252-problem-solving-paradigm-consolidation.md +++ b/docs/adr/ADR-0252-problem-solving-paradigm-consolidation.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 diff --git a/docs/assessment/30-gap-register.md b/docs/assessment/30-gap-register.md index e17f1875..220d9603 100644 --- a/docs/assessment/30-gap-register.md +++ b/docs/assessment/30-gap-register.md @@ -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). --- diff --git a/docs/assessment/31-hindrance-audit.md b/docs/assessment/31-hindrance-audit.md index ace1f9b3..78430030 100644 --- a/docs/assessment/31-hindrance-audit.md +++ b/docs/assessment/31-hindrance-audit.md @@ -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 diff --git a/docs/assessment/50-execution-plan.md b/docs/assessment/50-execution-plan.md index 416e708d..427516e5 100644 --- a/docs/assessment/50-execution-plan.md +++ b/docs/assessment/50-execution-plan.md @@ -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. diff --git a/docs/assessment/50-rulings.md b/docs/assessment/50-rulings.md index 4573f700..259b9e79 100644 --- a/docs/assessment/50-rulings.md +++ b/docs/assessment/50-rulings.md @@ -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.