core/docs/assessment
Claude 9b19085674
feat(evals,tests): PR-11 — the soak becomes evidence, and its cadence becomes a pin (R-9 + R-2)
Rank 4 on the docket. The L10 always-on lane has passed a 5000-beat soak since
2026-07-19. That result lived as PROSE IN A CONTRACT FILE — no machine-readable
artifact, no run SHA, no rerun path, and a deterministic_digest that report.py
computed and nothing pinned. The contract's own closing line asked for the pin
("Pin it once the lane is trusted so a regression flips it") and it was never
added. A recorded prose result with no re-derivable artifact is testimony, not
evidence, and that file is exactly where the distinction was meant to be
enforced.

R-2 first, before the run — as the plan required, so the soak measured a
decided question rather than deciding one by accident.

R-2 was ruled B (beats govern cognition; wall-clock permitted in telemetry
only). Measured: this lane carries NO WALL-CLOCK AT ALL — runner.py,
predicates.py and report.py contain no time, datetime, or timestamp of any
kind. That is stronger than B requires, and it is KEPT rather than "completed",
for three reasons now recorded in the contract:

  1. B's permissive half is a permission, not an obligation. Adding a field so
     the code matches a ruling's letter, then adding a pin to guard the field,
     is a mechanism whose only purpose is to be guarded.
  2. "When was this last run?" is already the artifact's COMMIT DATE —
     immutable, verifiable, stated once. A generated_at inside the report would
     be a second copy of one fact, drifting the moment a report is regenerated
     and not committed. That is G-23's defect class, registered this same week.
  3. It keeps the digest honestly deterministic. A timestamp would have to be
     excluded from it — a value in the artifact that the artifact's own
     integrity check ignores.

The contract also records what WOULD change this: a predicate whose claim is
about duration rather than sequence (H5's resource-cost leg is the live
candidate). B is already ruled, so that needs no new decision — only the
predicate that requires it.

The re-run: 5000 beats, reboot at 2500, under the POST-R-3 profile. All four
predicates pass. Committed as
evals/l10_always_on/results/report-5000-6c67e88d.json, digest f814fd97….

The most useful result was not the pass. Every DETERMINISTIC fact reproduced
exactly — vault bounded at 6, convergence at beat 1 with a 4999-beat tail,
clean reboot with derived learning intact — while the machine-variant float
moved from the prose's 1.389e-07 to a worst of 6.177e-08. That is the first
real evidence that excluding versor_condition from the digest was correct
rather than convenient: a digest covering it would have flipped on a machine
change and taught every reader to ignore it. The prose figure is superseded,
not contradicted — it was never a reproducible quantity.

tests/test_l10_soak_evidence.py, on the gate, guarding two DIFFERENT failure
modes that are easy to conflate:

  REGRESSION — the digest is pinned, plus the horizon (a 24-beat report pinned
  as though it were the 5000-beat one would pass everything else), the four
  predicates by name (all_gates_pass alone is satisfied by an empty predicate
  list), and a vacuity guard on the attested set.

  STALENESS — the mode nothing guarded, and the one that had ALREADY FIRED.
  R-9 ruled the cadence change-triggered, not clock-triggered: local-first
  doctrine makes "nightly" a ruling rather than a cron line, and a nightly that
  does not run is green for the wrong reason (H-9). So instead of "when did we
  last run it?", the pin asks the question that matters — DOES THIS EVIDENCE
  STILL DESCRIBE THE CODE THAT SHIPS? — by holding the SHA-256 of every source
  the soak attests: chat/always_on.py, chat/always_on_daemon.py, and the three
  harness modules.

That is not hypothetical. It had already fired silently for six weeks: the
2026-07-19 soak ran with accrue_realized_knowledge absent from
CONTINUOUS_LIFE_CONFIG_FLAGS, so from R-3 (PR-5, this same day) onward the
recorded result attested a process that no longer existed — and nothing in the
repository could notice. HAD THIS PIN EXISTED, PR-5 WOULD HAVE FAILED IT. That
is precisely the intended behaviour, and it is verified by sabotage: touching
always_on_daemon.py turns it red.

The failure message says RE-RUN THE SOAK — DO NOT EDIT THE HASHES, because
updating a hash to match changed source without re-running converts the pin
into a record asserting evidence that does not exist. That is the failure this
whole arc is about, committed inside its own remedy.

Three sabotages observed red: a touched daemon (the staleness mode), a
regressed verdict in the artifact, and a shorter horizon pinned as if it were
5000 beats.

H1-H4 promoted onto the gate, and the cheap option was deliberately refused.
Measured 20.95s for the four real-soak "holds" and 0.46s for the eight mutation
"bites" — 98% of the cost is the holds. Shipping only the bites, or parking the
file in a curated-but-unreachable suite, would have satisfied R-9's letter and
bought nothing; a suite nobody runs is the non-guarantee this arc spent PR-4
closing. Those four holds are the ONLY tests on any gate that run
chat/always_on's run_continuous end-to-end, and that loop just shipped a
six-week silent divergence. 21s per push to actually run the process that broke
is the most defensible time on this gate. Removed from full_only_baseline.txt
in the same edit; the baseline shrank 746 -> 745.

Closes G-5. Proof-of-life has moved from prose to committed, pinned,
change-guarded evidence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
2026-07-28 07:13:24 +00:00
..
10-layer-cards fix(tests,claims): G-22 — main was red, and CLAIMS.md was publishing evidence that no longer existed 2026-07-28 05:25:28 +00:00
20-component-cards docs(assessment): re-stamp the eight cards this arc touched, and post the board 2026-07-28 04:36:13 +00:00
00-scope-and-method.md docs(assessment): Phase 4 — the gap register and the hindrance audit 2026-07-27 16:04:22 -07:00
01-phase0-ground-truth.md
02-layer-taxonomy.md feat(wave-1): retire the dead instruments, delete the aliases nobody calls (PR-3, PR-3b, R-7) 2026-07-28 05:40:45 +00:00
03-card-schema.md docs(assessment): Phase 1 — layer taxonomy and card schema (the keystone) 2026-07-27 15:28:42 -07:00
04-phase2-findings.md docs(assessment): Phase 2 — nine layer cards, verified against code not documents 2026-07-27 15:45:52 -07:00
05-phase3-findings.md docs(assessment): Phase 3 — component descent; the correction chain continues into code 2026-07-27 15:57:36 -07:00
30-gap-register.md feat(evals,tests): PR-11 — the soak becomes evidence, and its cadence becomes a pin (R-9 + R-2) 2026-07-28 07:13:24 +00:00
31-hindrance-audit.md feat(config,specs,tests): PR-5 — the flag register, profiles as units, and the daemon's missing fourth flag (R-3 + R-4) 2026-07-28 06:47:21 +00:00
40-assessment.md feat(rnd): ADR-0252 §5 run to a verdict — NO-GO, and the two prior GOs are void 2026-07-28 02:55:31 +00:00
50-execution-plan.md feat(evals,tests): PR-11 — the soak becomes evidence, and its cadence becomes a pin (R-9 + R-2) 2026-07-28 07:13:24 +00:00
50-rulings.md feat(evals,tests): PR-11 — the soak becomes evidence, and its cadence becomes a pin (R-9 + R-2) 2026-07-28 07:13:24 +00:00
README.md feat(config,specs,tests): PR-5 — the flag register, profiles as units, and the daemon's missing fourth flag (R-3 + R-4) 2026-07-28 06:47:21 +00:00

docs/assessment/ — The Holistic Macro→Micro Assessment (2026-07-27)

A read-only, evidence-bearing assessment of CORE's cognitive-cycle design versus implementation fulfillment, conducted under docs/conceptualizing_engineering_mastery.md at forgejo/main @ 8927c563. Phases 05 change no runtime behavior, fix no defect, and decide nothing — they produce evidence and judgments for ruling. Phase 6 adds the execution plan built on them and the ruling packet they require.

Start here: 40-assessment.md — the synthesis (the verdict, the five frontiers, the recommended attack order). Then 50-execution-plan.md for what follows from it, and 50-rulings.md for what is waiting on a decision. The registers rank the work; the cards are the evidence base.

File / dir Phase What it is
00-scope-and-method.md Charter, method, rules of engagement, phase/executor table
01-phase0-ground-truth.md 0 Corpus triage, the five unreconciled articulations, system-map recovery
02-layer-taxonomy.md 1 The two-axis taxonomy: 7 macro layers + 2 cross-cuts over 33 zones; the Candidate Register (CR-1…4); completeness criteria
03-card-schema.md 1 The card metadata schema: liveness ⊥ fitness, design ⊥ build, sabotage-tested evidence, verified_at stamps
10-layer-cards/ 2 Nine layer cards (M0M6, MG, MV), every liveness label re-verified against code
04-phase2-findings.md 2 Stage-coverage audit; corrections to Phase 0; findings F-1…F-5
20-component-cards/ 3 Eight component cards: the four zero-subsystem zones + always-on, derivation organs, surface selection, attention
05-phase3-findings.md 3 Corrections C-1…C-5; findings F-6…F-10; the consolidated Phase-4 seed list
30-gap-register.md 4 The live gap register — 23 entries (G-21, G-22, G-23 added during execution), 4 tiers, each with evidence + deciding authority; supersedes docs/gaps.md and the substrate-liveness ratchet per R-7
31-hindrance-audit.md 4 Fourteen hindrances with fitness verdicts and better homes; seventeen candidates examined and cleared — five in Phase 4, six in the first 2026-07-28 external-assessment triage, six in the second (of which one, the pack/domain seam, survived as G-23)
40-assessment.md 5 The synthesis
50-execution-plan.md 6 The execution plan — five waves + five frontier tracks over every G/H entry, with the dependency gates and the risks. §0 carries nine corrections to the assessment found while sizing and executing it; §2.1 carries the adopted ruling docket and its execution order
50-rulings.md 6 The ruling packet — R-1…R-14, each with evidence, options, a recommendation, and the exact diff that follows from each choice. RULED 2026-07-28: twelve adopted, R-10 and R-14 stricken, §5 NO-GO ratified. Carries the standing delegation under which residual sub-questions are decided, and marks each ruling EXECUTED as it lands
../specs/flag_register.md The flag register (PR-5, R-3 + R-4) — all 32 RuntimeConfig booleans by class, governing ADR, and what evidence flips it; profiles as the unit of decision; §5 indexes every declared table in the repository and the pin that makes each true

Maintenance contract (from §8 of the synthesis): a card whose verified_at falls behind a load-bearing arc is testimony, not evidence. Update cards when their subsystems move, or this directory becomes the next dead instrument it was built to replace.

Execution status (2026-07-28). Phases 06 produced the evidence; the arc that followed executed everything in it that needed no ruling, Wave 0 closed (twelve rulings adopted, two stricken, the §5 NO-GO ratified), and the docket then began executing in its corrected order. Landed: Track A's §5 verdict (pre-registered), PR-4 (+ pin 3), PR-6, PR-7, PR-9, PR-1, PR-3 + PR-3b (R-7), R-12 (two ADR record amendments + the §5 verdict banner + the §6 retirement-condition amendment), PR-5 (R-3 + R-4 — the flag register, the profile mechanism, and the daemon's missing fourth flag), and four defect fixes (H-13, H-8e, G-22, G-23).

Closed: G-6, G-7, G-8, G-9, G-15, G-22, H-6, H-7, H-8 (all five instances), H-11, H-13. Added: N-8, N-9, G-21, G-22, G-23, H-13, H-14. Wave 4's F-6 half-gate is lifted. What remains is owed work, not open questions — see 50-execution-plan.md §Status for the board and §2.1 for the adopted docket and its execution order.

Standing note: the PR #138 fabrication findings appear throughout as measured & pinned, fix held for ADR + ratification — recorded, never re-discovered, never fixed here, per explicit instruction.