session 2026-08-02 evening: Control Kernel v1.0→v1.1, reduction arm, CONTROL-A/B, trial 04 VOID, correlation 01

Session record, memory updates and KG appends for the evening session.

Filed: Control Kernel v1.0 (frozen, superseded) and v1.1 (governing); the
reduction arm and its two censuses; CONTROL-A and its defect twin with a
bidirectionally-gated ledger; trial 04 (CONTROL VOID) and its pre-registration;
correlation 01 — the first measurement of Constraint 6's own falsifier, jurist
4-of-6 and Fool 0-of-6 with no overlap.

New feedback memory: removing a claim is not the same as removing the reliance on
it. Earned by finding that draft 3's "fix" to CONTROL-A had CONCEALED a defect
rather than closed it — invisible to me, the kernel and four gates, found by a
differently-formed reader.

Verification ladder: the discrimination gate — a check must return different
verdicts on two REAL artifacts, one with the property and one without.

6 KG lines: two drift-patterns, one good-direction, two preventions, and the
Constraint 6 first-measurement.
This commit is contained in:
David F Glidden
2026-08-03 08:57:42 +02:00
parent 1def46b4a6
commit 23e7515302
7 changed files with 105 additions and 3 deletions
@@ -8,6 +8,7 @@ metadata:
node_type: memory
type: reference
originSessionId: b3202a24-301f-499d-af9e-ac5368dd2c73
modified: 2026-08-02T16:04:03.432Z
permalink: claude-memory/reference-verification-ladder
---
@@ -116,6 +117,12 @@ Proven gates, each earned from a real catch. Reach for the one the claim's shape
## Test-harness claims
- **The sandbox must pin the SAME module object the code imports** — patch `sys.modules`, not a freshly-exec'd copy; a `_load()`-style loader builds a different object and the mispinned sandbox tests nothing.
## Gate design — the discrimination gate
- **A check must discriminate between two REAL artifacts, one known to have the property and one known to lack it.** Same verdict on both = the check has demonstrated nothing, however many synthetic fixtures it passes. Earned 2026-08-02 after **four instances in three days** of a *passing* check certifying a property of the **code** while claiming a property of the **result**, every one found by a person looking: the vignette field colour bound to a class no element carried · the Fool harness recording `degraded:null` on a run with no answer · five splitter defects found only by contact with real documents · the §3.3 screen false-passing a package whose Part VII *is* a collected limitations section.
- **The reason positive controls did not catch these: the fixtures were derived from the CHECK, not from the PROPERTY.** "What makes this regex fail?" instead of "what makes this claim false?" A control built from the check's own vocabulary inherits its blind spot by construction — the same shape as *controls built by extraction leak by construction*. **Derive fixtures from the property; draw them from real artifacts**, since a synthetic negative is written by the same hand as the check.
- **Every check states, in its own output, what it did NOT establish** — the necessary-but-not-sufficient gap named beside the pass. A check that cannot name its gap does not ship.
- **The residue is irreducible and needs a differently-formed reader.** Discrimination catches proxy-gaps where a real negative instance exists; it cannot catch a proxy that discriminates on the pair and fails elsewhere. What is left must be *looked at* before the claim is made, by someone who is not the check's author — Constraint 6 applied to instruments. Reference implementation: `dotfiles/claude/governance/fool/test_discrimination.py`, which is shown rejecting the §3.3 pattern **as it actually shipped**.
## Estimates and schedules
- **Quote a long-job ETA only from an observed rate** — twice in one day I gave an ETA from intuition and was wrong by ~30×. Measure rows-per-elapsed on the running job, or benchmark a slice, then quote.