core/docs/assessment
Claude 2cfc6ad251
fix(cognition): claimant-tracked speculative markers — the refcount fix was wrong (H-13)
71542e61 fixed only half of H-13 and asserted a premise that is false. This
replaces it, and records why, because the failure mode is the one this arc
exists to catch.

WHAT WAS WRONG. The refcount rested on "seeding and eviction walk the same
source list, so the counts balance." They do not. The call site's arms are
MUTUALLY EXCLUSIVE (pipeline.py §10b): a proposal is seeded when SPECULATIVE or
released when COHERENT, never both. So a release never balances a claim the
same proposal made, and a COHERENT proposal ALWAYS releases claims it never
held. Refcounting therefore repaired only the sub-case where both proposals had
been taught speculatively. The ordinary case — an unreviewed `wisdom`, then a
separate correction about `practical wisdom` that passes review on its own turn
— still stripped the marker. Measured against the landed refcount:
`sibling marked? False`.

The first attempt's tests passed because their helpers split tokens themselves,
mirroring a call pattern production no longer used — tests written to the fix
instead of to the defect. That is the same "asserted past the evidence" failure
diagnosed in two external assessments earlier today, committed here one commit
later, and catchable by reading fifteen lines at the call site.

WHAT IS CORRECT. _speculative_subjects maps token -> SET OF CLAIMING SUBJECTS.
A token is evicted exactly when the subject that actually claimed it is
reviewed; discarding an absent claimant is a no-op, so a neighbour's marker
survives. Token derivation moved out of the call site into
_speculative_index_tokens, because ownership is what the call site cannot see —
doing the split out there made every token its own claimant, which was the bug.

Tests rewritten to call the cache exactly as §10b does. The lead pin
(test_coherent_proposal_does_not_unmark_an_unrelated_subject) was confirmed to
FAIL against the refcount design before this landed, so it discriminates rather
than merely passing. 13 pins green; the 8 pre-existing lifecycle pins unchanged.

SUITE MEMBERSHIP, resolved rather than deferred. The file pinning this behavior
sat in NO curated suite, reachable only through `full` — which is why the
regression was invisible (G-7's mechanism, on the pin that would have caught
it). Registered now in BOTH TEST_SUITES["smoke"] and smoke.yml, per the #136
precedent that an unregistered pin runs nowhere. Verified the local/CI delta is
unchanged at exactly ten files (local 24, CI 14, CI-only 0), so this is
compatible with all three R-14 options and settles none of them; PR-4 still
owns the standing ten.

Cleanup as found: three unambiguously dead imports removed from pipeline.py
(hashlib, RatificationOutcome, RatifiedIntent). ruff 4 -> 1; the survivor is a
pre-existing structural E402, left alone.

Ratification note unchanged: this changes served surfaces — markers appear on
turns where they previously vanished. Direction is toward disclosure and it
restores ADR-0021 §Articulation's stated intent rather than extending it.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
2026-07-28 03:38:53 +00:00
..
10-layer-cards docs(assessment): Phase 3 — component descent; the correction chain continues into code 2026-07-27 15:57:36 -07:00
20-component-cards docs(assessment): Phase 3 — component descent; the correction chain continues into code 2026-07-27 15:57:36 -07: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
03-card-schema.md
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 docs(assessment): re-anchor the §5 provenance SHAs to the commits that landed 2026-07-28 03:00:46 +00:00
31-hindrance-audit.md fix(cognition): claimant-tracked speculative markers — the refcount fix was wrong (H-13) 2026-07-28 03:38:53 +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 docs(assessment): fold in the external-assessment triage — H-13, H-14, H-8e; six proposals cleared 2026-07-28 03:17:54 +00:00
50-rulings.md docs(assessment): fold in the external-assessment triage — H-13, H-14, H-8e; six proposals cleared 2026-07-28 03:17:54 +00:00
README.md docs(assessment): fold in the external-assessment triage — H-13, H-14, H-8e; six proposals cleared 2026-07-28 03:17:54 +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 — 20 entries, 4 tiers, each with evidence + deciding authority (proposes superseding docs/gaps.md); four entries amended in Phase 6
31-hindrance-audit.md 4 Fourteen hindrances with fitness verdicts and better homes; eleven candidates examined and cleared (five in Phase 4, six in the 2026-07-28 external-assessment triage)
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 seven corrections to the assessment found while sizing it
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. Wave 0's deliverable

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.

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.