core/capability/domains.py's DOMAIN_PACKS declares domain -> pack membership
for the capability ledger. Each packs/data/<pack>/manifest.json independently
declares domain_id. Two statements of one fact, and only one direction was
ever checked: domain_contract_predicates P3 validates domain_id -> a known
ledger domain. Nothing validated DOMAIN_PACKS -> the manifest agrees.
P3 passes VACUOUSLY on a manifest with no domain_id at all — the same shape as
its own test_pack_without_contract_reports_absent. So a pack that DOMAIN_PACKS
places in a domain, but whose manifest never says so, is invisible to every
check in the repository.
Measured: 7 of 9 bound, 0 contradictory, 2 absent — en_core_cognition_v1 and
en_core_meta_v1, both placed in philosophy_theology, which is one of the four
bands queued to earn a SERVE license behind R-8. The domain whose license is
next to be earned is the one whose binding exists in only one place.
Why nothing caught it: tests/test_domain_contract_predicates.py exercises
P1-P9 entirely against synthetic tmp_path manifests, never against the real
nine, and is itself in no curated suite. A predicate proven correct on
fabricated input and never run on the real input is this arc's defect class
stated precisely — its success state and "it never ran here" are
indistinguishable.
tests/test_domain_pack_binding.py, registered in smoke (on the gate):
- every pack DOMAIN_PACKS names has a manifest on disk
- a manifest that CONTRADICTS the table always fails
- a manifest with NO domain_id fails unless the pack is in UNBOUND_BASELINE
- the reverse direction: a pack may not self-assign a ledger domain the
table does not grant (clean across all 30 packs today, pinned because a
new manifest copying domain_id from a sibling is the obvious mistake and
would silently widen a licensed domain)
- both directions on the baseline: a pack that gains domain_id must leave it
- the parse is guarded against vacuity (N-1 has produced three false
conclusions in this repo)
- the count is pinned so the gap moving is a reviewed decision
Four sabotages, each observed red, each caught by its intended pin.
PINNED, NOT FIXED, deliberately. Whether en_core_cognition_v1 is a
philosophy_theology domain pack or merely grouped under that domain for ledger
accounting decides what the license actually covers. That is
ratification-adjacent content, not engineering, and it is routed to R-8 /
PR-14 where that band's license is decided. Sealing that ledger without
answering it licenses a domain whose membership is asserted in one place and
denied by silence in the other.
How it was found, recorded because the method is the point. An external
assessment proposed collapsing the pack/domain machinery, stating its method
up front: "I have enough from the directory and CLAIMS.md to reason
seriously." That is the method AGENTS.md protocol rule 1 forbids, and five of
its six proposals are falsified by opening the file — recorded in full in
31-hindrance-audit.md, in short:
- conftest.py "almost certainly" holds suite-membership logic: it holds two
autouse fixtures and two data registries, and its collection hook stamps
markers and never skips. Zero membership logic.
- cli_test.py "almost certainly a nested conditional or a big dict": a flat
dict, 17 keys, zero conditionals in the module body.
- field/algebra/morphology as a peer triad needing a single serve(): 72, 15
and 3 importers respectively, morphology is 97 lines, and no def serve(
exists anywhere in core/, chat/ or generate/.
- the grade space is richer than the serve layer consumes: all 15
EpistemicState members have non-test consumers.
- constraints: blocks in 314 ADRs: that is 314 new places that must be kept
true, inside ratified immutable records, in the repository whose dominant
defect class is records drifting from reality. The existing design puts
the machine-readable half in the checker that reads the ADR, which is
better on purpose.
- a root contracts.toml as "the highest-leverage single change": the
principle is already ADR-0263 Rule 5 and is implemented in the very file
the assessment cites. Centralizing four tables with four authorities adds
a fifth copy that must agree with four generators.
The seam it pointed at was real even though every specific was wrong. Bad
method, useful direction; both halves recorded, and the triage rule earns a
second demonstration — every rejected proposal failed on a file its author did
not open.
AGENTS.md — the standing philosophy revised to eleven, per Shay's review.
- "be quick to be humble" -> "investigate yourself first". Speed is a
consequence of reflex, not a criterion; writing it in makes velocity sound
like the point. Examples replaced with three that are verifiable in-repo:
the H-13 refcount claim, and the two rulings that were about to be
recorded stronger than they were made.
- the defect-class principle gains its prescriptive half as its own
sentence, and gains this commit's instance: a predicate that passes
vacuously on the input it was written for.
- NEW #2: don't build a ratchet to guard a ratchet. Placed adjacent to
"less is more" and named as its corollary so it does not read as
duplication. The arc paid for it — a membership ratchet needed a
reachability ratchet to mean anything, and what actually shrank the gap
was deleting four suites nobody called.
- NEW #10: a closed issue is not evidence the problem is gone. G-7 was
CLOSED and REOPENED-PARTLY inside one arc; H-13 was closed with a fix that
did not work.
Two review points were already satisfied in the file and are recorded as such
rather than re-applied: the defect-class principle already stood alone on its
first line, and already sat at position 3, not 8. The review was reading a
chat summary, not AGENTS.md — which is, exactly, reviewing the record instead
of the reality.
PR-5 additionally owes one page: an index of which declared tables exist and
what pin makes each true. That is the defensible residue of the contracts.toml
proposal, and explicitly not a fifth copy of four tables.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
Shay adopted twelve rulings, struck two, and ratified the ADR-0252 §5 NO-GO.
For several hours afterwards the packet still said PENDING fourteen times,
while PR-3 and PR-3b had already executed against R-7. That is precisely the
failure this arc is about — a record contradicting reality at a load-bearing
point — committed inside the arc whose subject is that failure, and it was
caught by a question rather than by any instrument. Fixing it is the first
item here; the rest of the commit exists so the same gap cannot reopen by
context loss.
50-rulings.md
All fourteen statuses replaced. Twelve carry RULED <choice> with the date
and the deciding authority; R-10 (discharged before the arc) and R-14
(dissolved by N-9) are struck. An adoption block at the head records the
choices, the strikes, the §5 ratification, and the corrected execution
order, plus which rulings have already executed.
50-execution-plan.md
New §2.1 — the adopted docket. The twelve choices, and the execution order
as a ranked table stating why each item sits where it does. The packet
ordered by register number, which interleaves cheap record repairs with
expensive capability work and puts the two zero-risk ADR amendments last;
the corrected order is by what each item unblocks, cheapest first in tier.
Three things that lived only in conversation are now written down:
- the claims register is HELD, deliberately, with its entry criterion —
G-22 showed CLAIMS.md can publish a superseded digest for two days, and
an index over untrustworthy indexed things is the H-9 pattern;
- gate width is promoted from a parenthetical to PR-4b, sized, with
`teaching` recommended alone and the reason being evidence (G-22) rather
than taste — a parenthetical is how fifteen suites became unreachable
without anyone choosing it;
- Track A's ratification creates an obligation the verdict document cannot
discharge: ADR-0252 §6 retires the surface organs "until the
structure-mapper proves out," names no replacement for the NO-GO branch,
and is an instruction rather than a research note. A live instruction
that can never fire is a dead instrument.
Two places where I was about to state a ruling more strongly than it was
made, corrected rather than smoothed over:
- R-11 B is "measure, then re-ask." It authorizes no gate. It owes a
measurement AND a second ruling, and a ruled-but-inert item looks exactly
like a settled one at a glance.
- R-8 C was recommended "with a floor from A applied to the entailed
capability only" and N was never named. PR-14 must carry a proposed N with
its consequence, or land entailed as explicitly unlicensable-pending-N.
Shipping without a floor would license entailment on nine cases through an
omission — the exact outcome C exists to prevent.
Also: §0 corrected from seven corrections to nine (N-8, N-9 were added
during execution and the heading never moved); definition-of-done item 5
struck, because N-9 killed both its halves — smoke.yml parity is not a goal
under AGENTS.md:280, and "no test file hides in full" is unreachable at 747
files without ceremony that changes nothing about what executes.
30-gap-register.md
G-7's open half is 15, not 19: PR-3b took it there by deletion, which costs
no gate time. Points at PR-4b.
AGENTS.md
Nine standing philosophies under the reasoning protocol, per CLAUDE.md's
rule that governance and memory live here. They are the generalization of
what this arc actually cost: less is more; master the small details and the
large ones do not form; a mechanism whose failure state is indistinguishable
from its success state is not a guarantee; a record that contradicts nothing
beats one that impresses; consecutive unclear problems mean the frame is
wrong, not the fix; be quick to investigate yourself, and record the error
next to the fix rather than overwriting it; volume of work is not a licence
for lower diligence; fix what you find or name why not; let the tree settle,
then run the gate once.
Documentation only — no runtime behavior, no test, no pin changes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
§9.8 of the plan — "every card carries a verified_at no older than the last arc
that touched its layer" — is a maintenance contract this directory holds itself
to, and today's arc moved MV, M3, M4, M2, M6 and three component cards. A card
whose stamp falls behind a load-bearing arc is testimony, not evidence, which is
the failure mode the directory exists to replace.
Each card gains a Re-verified stamp at 39331dbc plus an arc note saying what
actually changed under it, not merely that something did:
MV PR-4 + PR-6 landed; G-7/G-9 closed. The layer's finding is sharper than
the card stated: the recurring defect is not ABSENT pins but PINS THAT
EXIST AND DO NOT RUN — four found this arc, each indistinguishable from
coverage in any document.
M3 §5 run to NO-GO, settling the successor-path question. New measurement
G-21: the reader decides 5 of 500 holdout_dev/v1 cases. H-8e corrected.
M4 H-13 fixed — the served-marker honesty contract held where it leaked.
M2 PR-7's table: two boundaries already met, THREE CLOSED as category
differences, one real delta (no audit record per rejection).
M6 PR-9 — the accrual backstop counts and names what it absorbs.
realize-phase / always-on-process / surface-selection — the component-level
versions of the same three.
Plan §Status replaced with the actual board: what landed, what each remaining
item is blocked on, and the six findings this arc added that the assessment did
not have (N-8, N-9, G-21, H-13, H-14, H-8e). README carries the same summary at
the directory's entry point.
The status block says plainly what has NOT moved: comprehension breadth and
proof-of-life. The reader is still 19 constructions wide and decides 1.0% of the
held-out corpus; the 5000-beat soak is still prose with no pinned digest.
Everything landed this arc is enforcement and evidence machinery. Capability
moves in PR-11/PR-12/PR-14/Track B, all four ruling-gated.
Docs only.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
Two external first-principles assessments of CORE were verified against code
line-by-line at 8f0ccfe3. What survived is entered; what failed is recorded in
the audit's negative space with the refuting file named, per the register's own
discipline.
Entered:
H-13 — the speculative-marker cache over-evicts shared tokens: promoting one
proposal to COHERENT pops tokens regardless of owner (pipeline.py:736-739,
:1045-1055), so a sibling proposal's still-SPECULATIVE material is served
without its marker. Honesty regression, served direction. Remedy: refcounted
cache, failing test first. (The source assessment described this seam with
the direction inverted — under-eviction; the code over-evicts. The check
that caught the inversion is what confirmed the bug.)
H-14 — _run_turn is 759 lines (pipeline.py:189-947) under a thin-wrapper
docstring, with finalize_turn_trace_hash x2 / finalize_turn_surface x1
back-stamps as the measured symptom. H-4's sibling: refactor ADR, PR-10's
byte-identical-trace bar, and the learn stage named stateful.
H-8e — inductive_closure.py's docstring claims a path-based cycle skip the
code does not perform (:106 vs :189-193) — and the code is the right side:
the monotone fixed point needs no path check, and adding one would refuse
sound derivations. path records only (a,b,c) for longer chains (:198), so
trace provenance is incomplete. Docstring fix is mechanical; extending path
changes operator_invocation bytes -> trace_hash, held to the trace-change bar.
PR-9 widened — the logos-authority bare except (pipeline.py:555) and the
three OOV-probe swallows (:605-657) join the count-the-swallow scope; same
remedy shape (record repr(e), keep the backstop), explicitly not the
narrow-catch alternative.
R-4 packet addition — first collapse candidate: composed_surface +
transitive_surface + transitive_max_depth -> chain_depth:int, justified by
ADR-0083's own docstring ladder; ruled in-lineage, not ad-hoc.
R-12a note — lived_life.json staleness recorded as a question; the proposed
PID-attestation fix rejected (refuses every reboot resume; PID reuse).
Cleared, with the refuting file named: EpistemicState compression
(vault/store.py, policy.py's ADR-0206 partition), the EpistemicState x
NormativeClearance product type (erases refusal evidence — H-3 rebuilt as a
type), PID attestation, path-based cycle skipping, the depth-enrichment cache
(pack_resolver.py:19 already lru_caches the cost), and the unified reasoning
engine as-refactor (trace_hash change + capability widening + discards the
ROBDD engine one merge after ADR-0265 ratified denial).
Register ranges updated to G-1..G-21 / H-1..H-14. Docs only; no runtime
behavior, no flag, no test changed.
[Verification]: uv run pytest tests/test_adr_index.py
tests/test_adr_status_governance.py tests/test_adr_0252_s5_blindness.py -q —
327 passed at this tree.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
The corrections derived in 50-execution-plan.md §0, applied where the wrong
claims live. Every amendment is marked [AMENDED N-x] inline so the register
carries its own correction history rather than quietly reading correct.
Gap register — four entries amended:
- G-5 the soak RAN and passed (5000 beats, reboot at 2500, all four gates,
aed273b1). Retitled: what is owed is the committed artifact, the pinned
deterministic_digest, and a cadence — not the run. Both prior claims
withdrawn with their causes: "no suite contains any l10 test" was a
scan artifact (TEST_SUITES["full"] is a directory), and the pins
execute twice a day (post-merge + nightly cron).
- G-7 respecified. The proposed meta-check was already satisfied and would
have shipped green proving nothing — a hollow gate in the entry
proposing to abolish hollow gates. Now two pins: gate parity, and
curated-suite membership EXCLUDING full.
- G-8 28 default-off flags of 32 RuntimeConfig booleans, not seventeen.
- G-10 the 16-premise cap was removed by ADR-0264 R5 on 2026-07-26; the ADR
carries a self-supersession banner directly under the heading Phase 4
quoted. No engineering prerequisite remains — R-8 alone gates it.
- G-19 note: the 21/25 exposure is already pinned in test_volume_honesty.py,
so the work is applying the demotions, not discovering them.
Hindrance audit:
- H-12 added — the local smoke suite (23) and smoke.yml (13) have diverged by
ten files. Counter-evidence stated first: AGENTS.md makes the local run
the merge gate and it is the superset, so nothing is unguarded. What is
real is one comment claiming an equality that does not hold, and the
push that skipped the local gate.
- H-8 gains instance (d), inside the code: two flag docstrings assert a
production profile CONTINUOUS_LIFE_CONFIG_FLAGS does not have.
- H-1 gains the already-pinned note.
Also: correction note on the 2026-07-25 verification doc (a corrective
document that introduced the error at H-8c), and a staleness banner on
MIND-PHYSICS-BLUEPRINT.md pointing at the taxonomy that dissolved it.
The two ratified-ADR amendments (ADR-0146, ADR-0252) are NOT here — they are
drafted in full in 50-rulings.md R-12 and land on that ruling, because editing
a ratified ADR is Shay's authority even when the edit changes no decision.
Docs only. No runtime behavior, no flag, no test changed.
Phase 6 of the holistic assessment: what follows from it, and what it needs
ruled before anything else can be sequenced.
`50-execution-plan.md` — five waves (scrub/rule → delete → simplify/enforce →
accelerate evidence loops → automate last) plus five frontier tracks, covering
every G-1…G-20 and H-1…H-12 entry, with four hard dependency gates and nine
risks stated before they are incurred.
`50-rulings.md` — R-1…R-14. One decision per section: the evidence verified at
ed06dd64, the options enumerated, a recommendation with its reasoning, and the
exact diff that follows from each choice, so ruling costs one word. Nothing in
it recommends reversing a ratified decision; R-12 amends two ADRs' records
without touching either decision.
§0 of the plan carries SEVEN corrections to the assessment, all found by
reading code, workflows and ADR supersession banners — none by re-reading
documents. Four change planned work:
- N-3 (new) the local smoke suite (23 files) and smoke.yml (13) have diverged
by 10 files. Severity is LOWER than this plan's first draft stated: AGENTS.md
makes the in-worktree run the merge gate and CI secondary observability, and
the local gate is the superset — so nothing is unguarded. What is real is one
in-code comment claiming an equality that does not hold, and the push that
skipped the local gate, for which CI is the only automatic check.
- N-4 the L10 soak HAS been run — 5000 beats, reboot at 2500, all four gates
pass (contract.md, landed aed273b1). G-5's "never produced an artifact" is
wrong. The debt is the ceremony: no committed report, no pinned
deterministic_digest (the contract's own unmet closing instruction), no
cadence. Prose with no pinned digest is testimony, not evidence.
- N-5 G-10's blocker does not exist. ADR-0264 §4.1 carries a self-supersession
banner: R5 removed the 16-premise cap on 2026-07-26, and four bands would
earn SERVE the moment a ledger is sealed. PR-13 is WITHDRAWN and the whole
throughput frontier reduces to one ruling (R-8).
- N-7 the flag count is 28 of 32 RuntimeConfig booleans, not seventeen.
Plus N-1 (the orphan scan artifact: TEST_SUITES["full"] is a directory),
N-2 (the L10 pins run twice a day, post-merge and nightly), and N-6 (H-8 has a
fourth instance inside the code — two flag docstrings assert a production
profile the production profile does not have, which moves R-3 decisively
toward "incomplete flag set").
Docs only. No runtime behavior, no flag, no test changed.
40-assessment.md — the verdict in one paragraph (skeleton real, discipline
exceptional, the two deepest commitments unproven in opposite directions);
the cognitive cycle stage-by-stage with the honest sentence for each; what
is excellent, stated as findings; the macro picture (built-and-dark,
capability outruns proof, the record decays faster than the code); THE
FIVE FRONTIERS (the reading, the verdict, the chooser, the proof of life,
the throughput — everything else on the registers is hygiene, enforcement,
or ceremony); the recommended attack order in five waves sequenced by the
mastery algorithm (scrub/rule -> delete -> simplify/enforce -> accelerate
evidence loops -> automate last, with the warning that an always-on
process consolidating an empty set is "garbage at high speed" and CORE
came within one flag of it); the charter's four questions answered
directly; and the maintenance contract that keeps this directory from
becoming the next dead instrument.
README.md — the directory index and reading order.
The assessment is complete: 21 documents, four phases, three
self-corrections, every claim SHA-stamped at 8927c563.