diff --git a/docs/inherited-measurements.yaml b/docs/inherited-measurements.yaml index e130584..4c0dd6e 100644 --- a/docs/inherited-measurements.yaml +++ b/docs/inherited-measurements.yaml @@ -83,13 +83,15 @@ sources: claims-verification pass. The draft calls it "the instance". Resolving a figure means opening a file in a checkout of this repository at this SHA. checkout_status: >- - NOT CLONED. No file in this repository has been resolved against it yet. - See gap-001, which is what makes that absence citable instead of merely - being the case. + CLONED 2026-09-08 into .reference/bio-3d-vision at + 5f8e39f84a235bf53ace5789e739f0d51377344a (verified by rev-parse, not by + the clone succeeding). gap-001 is closed. Thirteen experiments confirmed + BY ENUMERATION of experiments/: exp001-exp005 and exp007-exp014, no + exp006. - key: template repo: visgraf/math-ai-method - sha: null + sha: 81a638ee3f650050164e09a42f5a0561af6caeef sha_short: 81a638e role: >- What this repository was instantiated FROM, and a subject of §7 of the @@ -105,6 +107,9 @@ sources: abbreviation in its own field rather than written into `sha`, because a 7-character prefix in a field that promises 40 is the shape of a citation that looks resolvable and is not. Expand it at the first clone. + EXPANDED 2026-09-08 on the first clone, as instructed. `sha_short` is kept + beside it so the abbreviation that circulated in the specification and in + README.md still resolves to something. - key: active-stereo repo: visgraf/active-stereo @@ -114,7 +119,7 @@ sources: record, whose loop never ran. The draft cites it for two things: the failure that motivated the low-ceremony lane, and the constitution clause that was false and talked a reviewer out of verifying. - checkout_status: NOT CLONED. Contributes no resolved measurement. See gap-001. + checkout_status: CLONED 2026-09-08 (default branch; no SHA pinned). See gap-001. - key: bioeye repo: visgraf/bioeye @@ -124,7 +129,7 @@ sources: not the perception-action loop. Listed with NO measurements attributed to it, which is a fact and not an oversight: "we read it and it had nothing" and "we never read it" are different, and this is the second. - checkout_status: NOT CLONED. Contributes no resolved measurement. See gap-001. + checkout_status: CLONED 2026-09-08 (default branch; no SHA pinned). See gap-001. schema: id: Stable. Never reused, never renumbered. Cite this. @@ -199,14 +204,23 @@ values: measured_at_sha: null environment: null status: inherited + status_note: >- + RESOLVED AT SOURCE 2026-09-08 (od-002). Both former caveats are answered + and are kept below rather than deleted, because the disagreement is what + the entry was for. notes: >- - TWO THINGS TO CARRY WITH THIS VALUE. First, the four stated verdicts sum to - 21 and the total is 22; PARTIAL is a fifth verdict in the same table and is - not stated, so the sum is reconcilable by assuming exactly one PARTIAL — - AND THAT IS AN ASSUMPTION, not something the passage says. Second, it - disagrees with mn-002 on the total and on the confirmed count while - agreeing exactly on corrected (3) and under-qualified (8). Neither entry is - known to be wrong. Do not quote either without resolving them at source. + TWO THINGS TO CARRY WITH THIS VALUE, BOTH NOW SETTLED. First, the four + stated verdicts sum to 21 against a total of 22; the assumption that + PARTIAL = 1 closes it WAS CORRECT and is now read at source — see mn-003. + Second, it appeared to disagree with mn-002; it does not. mn-001 is the + pass's full table, mn-002 its substantive subset, and claims 19-22 are the + four bibliographic citations that separate them. Both entries are correct + as written and NEITHER IS SUPERSEDED. + WHAT THIS ENTRY ACTUALLY CAUGHT, since that is the reusable part: not an + error in either number, but a MISSING SELECTOR in the prose that quoted + them. The ledger could not have told you which was right — it told you + that two things claiming to be the same number were not, which is the only + job it has. - id: mn-002 statement: >- @@ -244,6 +258,99 @@ values: entries with two values it is a disagreement a reader trips over. DO NOT "FIX" THIS BY EDITING EITHER SENTENCE. Resolve it at source (od-002) and add the resolution as a new entry. + RESOLVED 2026-09-08. The reconciliation above is the one that held, and it + was read at source rather than inferred: 22 minus the 4 bibliographic + citation checks (claims 19-22) is 18, and striking the 3 confirmed + citations from the CONFIRMED list of 10 leaves exactly 7. THE SOURCE'S OWN + WORD IS "substantive", NOT "load-bearing" — see met-002. The defect was in + report/draft.md's sentence, which was accurate about the FIRST of two + passes and read as describing the verification of the report; amended at + both cited locations in the same commit. This entry's value is unchanged + and correct. + + - id: mn-003 + statement: >- + The verdict class missing from the template's enumeration of the + instance's first-pass tally. + value: {partial: 1, claim: 19, total_reconciles_to: 22} + units: claims + n: null + conditions: >- + First pass only, verified in the source at d62693f. PARTIAL is defined in + the same table as "verified except for a named part". + provenance: + cited_as: >- + "**PARTIAL** | **1** | 19 (verified except its page range)" — the fifth + row of the first-pass count table. + source: >- + instance: report/claims-verified.md, count table and section "## Citations" + @5f8e39f84a235bf53ace5789e739f0d51377344a + experiment: null + run_id: null + measured_at_sha: d62693f + environment: null + status: inherited + notes: >- + CLOSES THE 21-OF-22 ARITHMETIC GAP recorded against mn-001, and does so + independently of the denominator question that od-002 settled. The + template's prose says "22 claims were checked: 10 confirmed, 3 corrected, + 8 under-qualified, 0 unsupported" — four classes summing to 21 against a + stated total of 22. The source's table has five classes and the fifth is + PARTIAL = 1. 10+3+8+0+1 = 22. + THE DROPPED CLASS IS NOT INCIDENTAL. Claim 19 is Bajcsy 1988, PARTIAL + because its page range does not resolve — three variants appear across + otherwise reliable sources and the source's recommendation is to cite by + DOI and issue and "Do not pick one of the three". An enumeration that + drops PARTIAL drops the one verdict recording that a citation could not be + settled, which is precisely the class a reader most needs to see. + + - id: mn-004 + statement: >- + The first claims-verification pass over report/draft.md, sections 1 to 8.5. + value: + claims_checked: 42 + confirmed: 22 + corrected: 5 + under_qualified: 8 + unsupported: 6 + partial: 1 + units: claims + n: >- + Sections 1 through 8.5 of report/draft.md. Sections 8.6-8.8 are the first + author's, first-person, and out of scope; they were not read for claims. + conditions: >- + Resolved against .reference/ checkouts: bio-3d-vision @5f8e39f and + math-ai-method @81a638e, both pinned and verified by rev-parse; + active-stereo @3f7a263 and bioeye @e908170, both UNPINNED default branches + — claims 2, 5 and 46 rest on those two and are bounded by gap-003. + Verdict taxonomy is met-001, carried and unexamined. + Repeated figures counted once, with all locations named, per the rule in + report/claims-verified.md. + provenance: + cited_as: The count table in report/claims-verified.md + source: report/claims-verified.md, in this repository + experiment: null + run_id: null + measured_at_sha: 9b58d1a + environment: null + status: measured + notes: >- + THE ONLY `measured` ENTRY THIS REPOSITORY WILL EVER HAVE, and the reason + the status was kept reachable. Everything else it handles is inherited. + THE HEADLINE IS NOT THE PASS RATE. It is that the recurring defect DIFFERS + IN KIND from the one the instance's own pass found. The instance reported + scope-and-metric — a correct number quoted without its band. This document + is second-order, restating figures already condensed once, and its + characteristic error is TRANSCRIPTION: iterations read as days (claim 24), + gaps closed read as gaps open (claim 41), a criterion experiment counted as + a stimulus experiment (claim 29). The number survives; the noun attached to + it does not. + FALSIFIER 2 FIRED. Under-qualified does not substantially outnumber + corrected here — 8:5, against the instance's 8:3. Under-qualified is NOT + depressed (8 in both); corrected is elevated, which is the second-order + structure above. The prediction this generates, recorded before anyone + tests it: a third-order document should show more corrections still. + FALSIFIER 3 FIRED HARDEST, and see gap-004. # - id: -001 # statement: @@ -401,7 +508,21 @@ methods: One line: `load-bearing: `. The draft's strongest single sentence — the asymmetry that §5 says justifies the whole method — rests on this word. - status: carried_unexamined + examined_2026_09_08: >- + EXAMINED AT SOURCE, AND THE WORD IS NOT THE SOURCE'S. The instance's pass + says "substantive", and its operative meaning is exact and checkable: + a claim about the project, as opposed to a bibliographic citation check. + The pass's 22 claims split 18 substantive / 4 citations at a heading + boundary ("## Citations"), so the selector is not a judgement call at all — + it is a section. + "LOAD-BEARING" IS THE DRAFT'S OWN COINAGE AND IT IS WEAKER THAN WHAT IT + REPLACED. It reads as "important", which is a judgement, where the source's + selector was structural. That substitution is the defect: not a wrong + number, a criterion that got vaguer in transit and took a denominator with + it. This is the same shape as met-000's carried statistical bar — a + criterion nobody had written down being read as something stricter or + looser than it was. + status: examined_at_the_first_claims_pass # ------------------------------------------------------------------------------ # GAPS @@ -417,6 +538,12 @@ methods: gaps: - id: gap-001 + status: CLOSED 2026-09-08 + closed_by: >- + All four sources cloned into .reference/ at the pinned SHAs (bio-3d-vision + at 5f8e39f, math-ai-method at 81a638e, active-stereo and bioeye at their + default branches, unpinned — see the note in `sources`). The + claims-verification pass in report/claims-verified.md was run against them. statement: >- No source repository has been cloned or read. Every `sources` entry is marked NOT CLONED, and no figure in report/draft.md has been resolved to a @@ -453,6 +580,47 @@ gaps: draft.md it returns section numbers ("4.1", "8.6") and its `uniq -f2` field-counting collapses the result to a single line. See od-003. + - id: gap-003 + statement: >- + active-stereo and bioeye are cloned at their default branches, not at a + pinned SHA. No SHA for either is recorded in `sources`. + why_it_is_load_bearing: >- + Claims 2, 5 and 46 in report/claims-verified.md rest entirely on + active-stereo, and claim 2 is a VERBATIM QUOTATION checked to the line + (CLAUDE.md:141). A line number against an unpinned branch is a citation to + whatever main says the day it is read — the exact failure the `sources` + block's own comment warns about. The claims are verified; their citations + are not durable. + what_would_close_it: >- + Record active-stereo @3f7a263 and bioeye @e908170 in `sources` and re-check + the three claims against those SHAs. Cheap, and it must happen before the + draft is typeset. + + - id: gap-004 + statement: >- + The method has no channel for a specification that was correctly rejected + before work was spent. Six claims in the pass are UNSUPPORTED and four of + them are unrecordable BY CONSTRUCTION, not merely unrecorded. + why_it_is_load_bearing: >- + It bounds §4.2 and §5 of the draft, which rest on "three specifications + were rejected on false assumptions" (claim 17) and call the rejections + "the clearest case in the project of a rule paying for itself". A + rejection that stops work before it starts produces no branch and no + commit: docs/workflow.md states that a specification is the only artifact + of the loop that leaves no trace, and that no specification was ever + committed in the instance. + THE ASYMMETRY IS THE FINDING: the workflow records what work PRODUCED and + has no channel for work it correctly PREVENTED — so the method's own + strongest evidence is the kind it systematically destroys. state.yaml's + `falsifier_verdicts` block exists to keep the falsifier after the + specification evaporates; the same argument extends to rejections and has + not been extended. See od-006. + what_would_close_it: >- + A `rejections` block, written at the moment a specification is rejected, + carrying the assumption that was false and what it would have cost. It + cannot be backfilled — the four instances behind claims 17 and 20 are + already gone. + # - id: gap-001 # statement: # why_it_is_load_bearing: >- diff --git a/docs/state.yaml b/docs/state.yaml index 5100d5c..84c786d 100644 --- a/docs/state.yaml +++ b/docs/state.yaml @@ -206,10 +206,17 @@ sequence: RECORD EACH RUN HERE, INCLUDING THE ONES THAT FAIL, and keep the previous record beside the correction rather than overwriting it. The defect is worth more than the fix. - complete: [1] + complete: [1, 2] deferred: [] # - {step: , until: } - next: 2 + next: 3 evidence: + 2: >- + report/claims-verified.md, and mn-004 in + docs/inherited-measurements.yaml. Read against clause (1): step 2's + title is "Clone the sources at their pinned SHAs and run the + claims-verification pass over report/draft.md", and the file records 42 + resolved claims each citing a source by key, path and SHA. The clone + half is qualified — two of the four sources are unpinned, gap-003. 1: >- fc-001 through fc-006 in this file, and the adaptation commit that carries them. Read against clause (1) above: step 1's title is "Adapt the @@ -281,8 +288,8 @@ sequence: Clone the sources at their pinned SHAs and run the claims-verification pass over report/draft.md altitude: exp - status: next - outcome: null + status: complete + outcome: mn-004; report/claims-verified.md; gap-003, gap-004, od-006 - n: 3 title: Reconcile mn-001 against mn-002 and define "load-bearing" (met-002) altitude: exp @@ -372,7 +379,27 @@ runs: # a figure re-read at source: re-reading resolves a citation, it does not # reproduce a measurement under this repository's conditions, because this # repository has none. -measurements: [] +measurements: + - ids: [mn-004] + commit: 9b58d1a + what: >- + The first claims-verification pass over report/draft.md sections 1-8.5, + resolved against pinned checkouts of bio-3d-vision (5f8e39f) and + math-ai-method (81a638e) and unpinned clones of the two predecessors. + 42 claims, one entry per figure with all its locations named. + where: docs/inherited-measurements.yaml, status "measured" + headline: >- + 22 confirmed, 5 corrected, 8 under-qualified, 6 unsupported, 1 partial. + The recurring defect is TRANSCRIPTION, not scope — a figure lifted + correctly from the record and re-attached to the wrong noun. + caveat: >- + NOT A GENERAL STATEMENT ABOUT THE DRAFT. Sections 8.6-8.8 are excluded and + were not read for claims. Three claims rest on UNPINNED checkouts + (gap-003). The verdict taxonomy that produced this split is met-001, + carried and never examined here, and the boundary it turns on — + CORRECTED against UNDER-QUALIFIED — is the one met-001 says is undefined. + A different reasonable boundary moves the 5 and the 8. + # - ids: [] # commit: # what: @@ -401,7 +428,16 @@ open_decisions: - id: od-001 altitude: exp - status: open + status: RESOLVED + resolved_at: 2026-09-08 + resolution: >- + RUN. 42 claims in sections 1-8.5: 22 confirmed, 5 corrected, 8 + under-qualified, 6 unsupported, 1 partial. Recorded as mn-004 — the only + `measured` entry this repository has or will have. The declared-in-advance + expectation held in one direction and not the other: the pass did NOT + return everything confirmed (the outcome this entry named as suspicious), + and it did NOT reproduce the instance's 0-unsupported result. Six + unsupported is the finding, and gap-004 says why they cluster. title: The claims-verification pass over report/draft.md has not been run. the_question: >- Which of the draft's factual claims about the source project survive being @@ -420,7 +456,8 @@ open_decisions: - id: od-002 altitude: exp - status: open + status: RESOLVED + resolved_at: 2026-09-08 title: mn-001 and mn-002 give different totals for the same verification pass. the_question: >- Is the instance's pass 22 claims or 18? Both figures are in circulation in @@ -432,10 +469,62 @@ open_decisions: counting, not after seeing which definition reconciles the two. Record the result as a NEW entry; supersede neither. depends_on: [gap-001, met-002] + resolution: >- + BOTH ENTRIES ARE CORRECT AND NEITHER IS SUPERSEDED. Read at source in + instance:report/claims-verified.md @5f8e39f, the FIRST of two passes + (verified there at d62693f) tallies 22 claims — CONFIRMED 10, CORRECTED 3, + UNDER-QUALIFIED 8, UNSUPPORTED 0, PARTIAL 1 — and then states, in its own + words, "Of the 18 substantive claims, 7 stand as written." The + reconciliation is exact and mechanical: claims 19-22 are BIBLIOGRAPHIC + CITATION checks under a "## Citations" heading, not claims about the + project. 22 minus those 4 is 18. The CONFIRMED list is 2, 4, 5, 8, 9, 17, + 18, 20, 21, 22; strike the three citations (20, 21, 22) and exactly 7 + remain. CORRECTED (6, 12, 16) and UNDER-QUALIFIED (1, 3, 7, 10, 11, 13, + 14, 15) are all substantive, so 7 + 3 + 8 = 18 closes. + what_the_defect_actually_was: >- + NOT IN EITHER LEDGER ENTRY, AND NOT A CONTRADICTION. mn-001 reports the + pass's table; mn-002 reports its substantive subset. The defect was in + report/draft.md, whose sentence was accurate about the first pass and read + as describing the verification of the report — which ran to TWO passes. + Amended in this commit to name the pass and the subset, at both of the two + locations mn-002 cites, per the repeated-claim rule in + report/claims-verified.md that a corrected figure is fixed at every + occurrence in the same change. + met_002_now_answerable: >- + The source's word is "substantive", not "load-bearing", and it means + "about the project rather than about a bibliography". That is a narrower + and more checkable selector than the draft's word. See met-002, updated. + separate_item_NOT_closed_by_this: >- + The specification flagged mn-002's 21-of-22 arithmetic gap as a distinct + item and predicted this resolution would not close it. IT IS CLOSED, by + the same reading and independently of the denominator question: the + template's prose enumerates only four verdicts ("10 confirmed, 3 + corrected, 8 under-qualified, 0 unsupported") against a stated total of + 22, and the fifth, PARTIAL = 1, is claim 19 — Bajcsy 1988, whose page + range does not resolve across three sources. 10+3+8+0+1 = 22. The + template's sentence drops a verdict class rather than miscounting. + Recorded as mn-003. - id: od-003 altitude: infra - status: open + status: RESOLVED + resolved_at: 2026-09-08 + resolution: >- + FIXED AND VALIDATED. The replacement is in report/claims-verified.md under + "The repeated-figure check, as run". Four changes: match spelled-out words + as well as numerals; group on the value with awk instead of `uniq -c -f2`, + which counts whitespace fields and collapsed the whole output to one line; + pass -H so field offsets hold for a single file; drop bare decimals, which + in markdown are section numbers rather than claims. + VALIDATED AGAINST A KNOWN ANSWER BEFORE BEING TRUSTED, which the shipped + command never was — it had to surface the mn-001/mn-002 pair and does. + IT EARNED ITS PLACE ON THE FIRST RUN: it found a third location of the + eighteen-claims figure (draft.md:391) that a per-passage reading missed and + that the two amended locations left inconsistent, and it found that + "thirteen" carries three different referents and "eighteen" two. + ITS LIMIT, recorded so it is not over-trusted: the word list is enumerated, + so a figure spelled as a word not on the list is missed. Extending it is a + per-document maintenance cost, not a one-time fix. title: >- The repeated-claim grep in report/claims-verified.md does not work on this repository's prose. @@ -475,9 +564,33 @@ open_decisions: without creating a throwaway environment. depends_on: [] + - id: od-006 + altitude: fw + status: open + title: >- + The method has no channel for a specification that was correctly rejected. + the_question: >- + Should the record carry rejected specifications, and in what form? Six + claims in the first claims pass are UNSUPPORTED, and four of them describe + events the workflow guarantees leave no artifact — rejections, falsifier + misses, and a cold session's search. The draft calls the rejections "the + clearest case in the project of a rule paying for itself"; nothing can + check that. + what_would_decide_it: >- + DECLARED BEFORE THE FACT, since this is exactly the trap met-002 fell into: + the test is whether the next specification rejected in this repository + produces a durable entry naming the false assumption and what it would have + cost. If three consecutive rejections pass without an entry, the block is + ceremony and should be removed rather than left to look like coverage. + NOTE THE BACKFILL IS IMPOSSIBLE. The four instances behind claims 17 and 20 + are already gone. Anything reconstructed now would be recollection wearing + a record's authority, which is claim 25's defect. + depends_on: [gap-004] + - id: od-005 altitude: impl - status: open + status: RESOLVED + resolved_at: 2026-09-08 title: Section 8.6 of the draft is unwritten. the_question: >- "How did it feel" — recorded because the draft's status block assigns it to @@ -485,6 +598,16 @@ open_decisions: responsibility is indistinguishable from a section that was cut. what_would_decide_it: The first author writing it, or deciding to cut it and saying so here. depends_on: [] + resolution: >- + WRITTEN, AND MORE THAN WAS TRACKED. Section 8.6 "How did it feel" is at + report/draft.md:1258, and 8.7 "What I would tell a student starting now" + and 8.8 "Is this a good way to spend a career?" follow at :1272 and :1282. + All three are the first author's and are first-person. The entry was stale + because it tracked only the section that had been named to it; two more + arrived with it and nothing in the ledger was watching for them. + THE GENERAL POINT, worth more than this entry: an open decision that names + ONE artifact cannot notice when the work lands as three. The draft's status + block is corrected in this commit. # - id: od-0NN # altitude: fw | exp | impl | infra diff --git a/report/claims-verified.md b/report/claims-verified.md index ae7f0c4..bc7206b 100644 --- a/report/claims-verified.md +++ b/report/claims-verified.md @@ -1,10 +1,16 @@ -# Claim verification — NOT YET RUN +# Claim verification — FIRST PASS, RUN 2026-09-08 -**This pass is open (`od-001`) and blocked on `gap-001`.** No claim in -`report/draft.md` has been resolved to a source. The tables below are empty -because nothing has been checked, not because everything passed. +**Verified at `9b58d1a`** against checkouts cloned into `.reference/`: +`instance` = `visgraf/bio-3d-vision` @ `5f8e39f`, `template` = +`visgraf/math-ai-method` @ `81a638e`, plus `active-stereo` and `bioeye` at their +default branches (unpinned — recorded as a limit, see *What this pass did not +do*). -**Verified at ``** against **cloned checkouts in `.reference/`, at the +**Scope: §§1–8.5.** Sections 8.6–8.8 are the first author's, first-person, and +make no checkable factual claims; they are out of scope and were not read for +claims. `gap-001` and `od-001` are closed by this pass. + +**Superseded header, kept for the record —** *"Verified at ``"* against **cloned checkouts in `.reference/`, at the SHAs pinned in `docs/inherited-measurements.yaml`** — principally `visgraf/bio-3d-vision` at `5f8e39f`, and `visgraf/math-ai-method` for claims about the template — plus `docs/state.yaml` and @@ -186,63 +192,443 @@ documents that define the category. ## The count -**Empty because the pass has not run.** When it does, this table is the one -number this repository will ever own — `status: measured` in -`docs/inherited-measurements.yaml` is reachable by this value and by nothing -else. Record it beside the previous count rather than over it if the pass is -ever run twice. - -Fill this in. It is a measurement about the drafting process and it is the reason -the pass is worth its cost — a tally that is 0 UNSUPPORTED and 8 -UNDER-QUALIFIED says something specific and actionable about how the prose is -going wrong, which "we checked it" does not. - | verdict | n | claims | |---|---|---| -| **CONFIRMED** | | | -| **CORRECTED** | | | -| **UNDER-QUALIFIED** | | | -| **UNSUPPORTED** | | | -| **PARTIAL** | | | -| total | | | +| **CONFIRMED** | **22** | 2, 3, 4, 6, 7, 8, 9, 10, 15, 18, 19, 23, 28, 32, 33, 36, 39, 40, 42, 43, 44, 47 | +| **CORRECTED** | **5** | 22, 24, 26, 29, 41 | +| **UNDER-QUALIFIED** | **8** | 1, 5, 11, 14, 21, 27, 31, 46 | +| **UNSUPPORTED** | **6** | 12, 17, 20, 25, 38, 45 | +| **PARTIAL** | **1** | 13 | +| total | **42** | | + +**The recurring defect, in one sentence:** *a figure lifted correctly from the +record and re-attached to the wrong noun* — iterations read as days, gaps closed +read as gaps open, a criterion experiment counted as a stimulus experiment. + +**This is not the defect the source pass found, and the difference is +structural.** The instance's own first pass reported scope-and-metric as its +recurring failure: a correct number quoted without the band it came from. That +is a *first-order* defect — the defect of a report standing next to its own +measurements. This document is second-order: it restates figures that were +already condensed once, and its characteristic error is therefore +**transcription**, not scope. Three of the five corrections are the same shape — +the source says "twice in seven iterations" and the draft says "for a week" +(claim 24); the record shows numbers marked from day one and the draft says day +two (claim 22); a commit says "close four cold-start gaps" and the draft says +"four remain open" (claim 41). In each case the number survived and the noun +attached to it did not. + +### On falsifier 2 — it fires, and neither offered explanation is the right one + +The specification said: *if UNDER-QUALIFIED does not substantially outnumber +CORRECTED, either this draft is unusually well-scoped or the category is being +applied too loosely.* The ratio here is **8 : 5 = 1.6 : 1**, against the +instance's **8 : 3 = 2.7 : 1**. It does not substantially outnumber, so the +falsifier fires. + +**I do not think either branch is the explanation, and I think the category was +applied correctly.** UNDER-QUALIFIED is not depressed — 8 is the same absolute +count the source pass found. **CORRECTED is elevated**, from 3 to 5, and the +reason is the second-order structure above: a document that quotes a report +inherits a class of error a report cannot make, because a report is written +beside its measurements and this one is written from a reading of them. If that +is right, the prediction is testable and worth recording: **a third-order +document would show more corrections still**, and the UNDER-QUALIFIED-dominates +pattern is a property of first-order reports rather than of prose in general. + +### On falsifier 3 — it fires hardest, and the pattern is not random + +**Six claims are UNSUPPORTED — not contradicted, unestablishable.** The +specification predicted what this would mean: §4.5's failure occurring in the +document that describes it. It is that, and it is sharper than that, because +**the unsupported claims are not scattered. Every one of them is about an event +the workflow guarantees will leave no artifact.** + +| claim | what it asserts | why no record exists | +|---|---|---| +| 12 | false claims "at a rate of roughly one per day" | a rate over conversations; nothing counts them | +| 17 | "three specifications were rejected on false assumptions" | **specifications are never committed** — `docs/workflow.md` says so explicitly: the loop's central artifact is "the only one that leaves no trace in the repository" | +| 20 | "three times" an outcome fell outside every enumerated falsifier direction | the misses are in specifications, not verdicts | +| 25 | a cold session "found six of eighteen steps inferable… and refused to invent the rest" | the search happened in a cleared session | +| 38 | "about a third of the original was domain-specific" | no measurement of the original's composition | +| 45 | "most of these thirteen cost an afternoon each" | no per-decision time record | + +**A rejected specification is the strongest evidence the method has and the only +kind it systematically destroys.** Claim 17 is the sharpest case: §4.2 calls the +rejections "the clearest case in the project of a rule paying for itself", and a +rejection that stops work before it starts produces no branch, no commit and no +verdict. The one rejection that *is* in the record survived only because it +changed the shape of a foreclosure that was taken anyway (`fc-012`), and it was +not a stale-state rejection at all. + +**This is a finding about the method, not only about the draft.** The workflow +records what work *produced*; it has no channel for work that was correctly +prevented. `docs/state.yaml`'s `falsifier_verdicts` block exists to keep the +falsifier after the specification evaporates — the same argument extends, and +does not yet reach, the rejections. Recorded as `od-006`. + +--- + +## §1 Register -**The recurring defect, in one sentence:** _____ +### 1. "One researcher, one field, one project, five days of intensive work" +**UNDER-QUALIFIED — five *working* days spanning eight calendar days.** +- The instance's commits fall on five distinct dates: 2026-08-29, 08-30, 08-31, 09-01 and **09-05**. First commit 08-29 09:56, last 09-05. +- Source: `git log` over `instance` @5f8e39f. +- "Five days of intensive work" (§1) is right. **"Thirteen experiments over five days" (§3:304) and "Thirteen experiments in five days" (§8.1:1138) read as elapsed time and the elapsed time is eight days**, with a four-day gap before the last. +- The figure recurs at :72, :304, :810, :1115, :1138, :1257 and is consistent in every one — it is the *noun* that varies, not the number. + +**Proposed:** "five working days" wherever the sentence is about elapsed time. --- -##
+## §2 The setting + +### 2. The predecessor's constitution ruled out in-repo verification — *"Chat holds excerpts by construction, so 'Chat verifies Code's numbers' would rot into a formality"* +**CONFIRMED, verbatim, including the attribution.** +- Source: `active-stereo: CLAUDE.md:141` (§5, "The handoff contract"). Quoted word for word. +- The draft attributes it to "the predecessor project's constitution". Correct. **This is the attribution the template itself had to fix once** — `template` commit `2b6d482` records correcting it from bio-3d-vision to active-stereo — and the draft has it right. + +### 3. Cowork was used zero times +**CONFIRMED.** `template: docs/workflow.md` surfaces table — "**no. Not once in five days.**" No artifact in `instance` is attributable to it. + +### 4. `spikes/` shipped on the first day with rules, README and a CI-enforced constraint, and was used zero times in thirteen experiments +**CONFIRMED, on all four parts.** +- Shipped `2026-08-29 11:45` (`9fb4ef8`), the project's first day. +- `instance: tests/test_scaffold.py:54` — `test_governed_trees_do_not_import_spikes`. +- **`git log --diff-filter=A -- spikes/` returns exactly one path ever added: `spikes/README.md`.** No spike was ever created. -### 1. "" +### 5. In the predecessor "a step was written up twice and never started, accumulating five open questions" +**UNDER-QUALIFIED — written up twice and never started is exact; four of the five are open questions.** +- Step 6 has a lab-notebook preamble (`active-stereo: docs/lab-notebook/2026-08-25-step-6-preamble.md`) and a block in `docs/plans/fixation-migration.md:214` — **two write-ups**. +- Never started: the only step-6 commits are `2e0a148` (the preamble) and its merge `3f7a263`, **which is the repository's HEAD**. The predecessor's last act was writing up a step it never began. +- The block is headed "*Declared open questions*" and carries five lettered items **a–e**. Item **b** states: "**The static-path guard is not an open question.** … it has a specified fix and must not be reopened as a choice." + +**Proposed:** "accumulating five declared items, four of them open questions". + +--- -**VERDICT.** +## §3 The project -- Comparison: -- Arms / conditions: <...> -- `n`, budget, stimulus: <...> -- Source: `docs/inherited-measurements.yaml` ; `: @` +### 6. "Thirteen experiments" +**CONFIRMED by enumeration**, not by highest identifier: `exp001`–`exp005` and `exp007`–`exp014` in `instance: experiments/`. No `exp006`; `am-004` records it as specified and deliberately not run. - +### 7. "each pre-registered before its runner existed" +**CONFIRMED** on the three spot-checked (exp001, exp010, exp013): `preregistration.md` is added in an earlier commit than `run.py` in every case (exp001 13:58 vs 14:50; exp010 15:08 vs 15:22; exp013 19:43 vs 20:01). -**Proposed:** "" +### 8. "Roughly four thousand lines of library code against a slightly larger volume of tests" +**CONFIRMED, and unusually precisely.** `src/` = **4,363** lines; `tests/` = **4,416**. Tests exceed library by 1.2% — "slightly larger" is exact. - +### 9. "Thirteen foreclosed decisions" +**CONFIRMED.** `instance: docs/state.yaml` `foreclosures` — 13 entries. + +### 10. "Eighty-seven measurements taken in the project and forty-one inherited" +**CONFIRMED.** `instance: docs/inherited-measurements.yaml` `measurements` — 139 entries: **87 `measured`, 41 `inherited`, 11 `gap`.** +- *Caveat the source attaches and the sentence drops:* the ledger's third status. Eleven recorded gaps are measurements deliberately **not** made, and the ledger argues their absence is as citable as a number. A reader totalling 87 + 41 = 128 will not find the other 11. + +### 11. "Four of the thirteen experiments turned out to be about the instrument rather than the framework" +**UNDER-QUALIFIED — the source's phrase is "the instrument *or the criterion*", and the second half is the half that matters.** +- The four are exp004, exp005, exp008 and **exp012**. exp012 is the re-analysis of `met-001`, the inherited statistical bar — **a criterion, not an instrument**. +- Source: `instance: report/claims-verified.md` claim 29, which marks exactly this compression **CORRECTED** in the instance's own second pass: "*Three about the stimulus, one about the criterion.*" `instance: report/draft.md:315` states it correctly. +- The draft's "instrument" is closer than the Abstract's "stimulus" that the source corrected, and still drops the criterion. + +**Proposed:** "about the instrument or the criterion rather than the framework". --- -# Resolutions +## §4.1 Fluent wrong claims + +### 12. "The conversational surface asserted false things at a rate of roughly one per day" +**UNSUPPORTED.** Four instances are named and three trace to the record (claim 13). **Nothing counts assertions, and no denominator exists**: the rate is over conversational turns, which are not retained. Four named instances over five working days is *consistent with* the claim and does not establish it. + +### 13. The four named false claims +**PARTIAL — three of four trace to the record; the fourth does not.** +- *"a confidence failure replicated across two stimulus families, when the record showed the two families disagreeing in sign"* — **CONFIRMED**. `instance: report/claims-verified.md` claim 16, CORRECTED, and its own summary says claim 16 "**inverts the finding**". +- *"a foreclosure asserted to be settled by an experiment that had measured something else entirely"* — **CONFIRMED**. `template: docs/workflow.md` records it: a completed step read "Decide the plant", the id resolved, and the foreclosure decided the disparity search window; "none of its eleven fields mentioned a plant". +- *"a count of experiments taken from the highest identifier rather than from the set"* — **CONFIRMED**. `template: docs/spec-defects.md` §3, and `template` commit `931f6d3`. +- *"a statistic described as frozen across a run when it drifted by a small amount that mattered"* — **not located.** No entry in either ledger, and no commit body, matches. Not marked unsupported on its own because the other three establish the pattern; recorded so it is not read as verified. + +### 14. "Of eighteen claims in the first draft, seven stood as written." (§4.1:391) +**UNDER-QUALIFIED — and this is the third location of a figure corrected in two others.** +- The figures are right (see `mn-001`, `mn-002`, and `od-002`'s resolution): 22 claims checked, 18 substantive, 7 of the 18 stood. +- **This sentence names neither the pass nor the subset**, and the instance ran **two** passes. It says "eighteen claims", not "eighteen substantive claims", and "the first draft" rather than the first pass. +- **The same figure was amended at :870 and :1219 in commit `9b58d1a` and NOT here**, because the specification limited prose edits to od-002's sentence. That leaves the document internally inconsistent, which the repeated-claim rule in this file exists to prevent. **It is the single most important item for the maintainer.** + +**Proposed:** "Of the eighteen substantive claims in the first pass, seven stood as written." + +### 15. "Nearly three times as many under-qualified as outright mistakes" +**CONFIRMED.** 8 UNDER-QUALIFIED against 3 CORRECTED in the instance's first pass = 2.67 : 1. "Nearly three times" rounds in the direction that stays true. + +--- + +## §4.2 Stale state + +### 16. *(merged into claim 17)* + +### 17. "Three specifications were rejected on false assumptions/premises" — §4.2:433 and §5:806; and "specifications drafted against a commit that had advanced — twice" §4.2:412 +**UNSUPPORTED, and structurally so. This is the pass's most important finding.** +- **One** rejection is in the record: `instance: docs/state.yaml` records at two points that the `fc-012` rectification specification "WAS REJECTED BECAUSE IT MAKES AZIMUTH AND VERGENCE INERT". Both mentions are the same event. +- **That rejection was not on a false assumption about repository state.** It was rejected on a geometry defect — composed alone, rectification makes azimuth and vergence inert and a closed loop would re-render an identical image after every saccade. It is §4.3's failure mode, not §4.2's. +- **No record of the other two can exist.** `docs/workflow.md`: a specification is "the only [artifact] that leaves no trace in the repository… In the instance this template came from, no specification was ever committed." A specification rejected *before any work was spent* produces no branch and no commit by construction. +- The `fc-012` rejection survived only because it changed the shape of a foreclosure that was taken anyway. + +**This is a gap in the method, not only in the draft.** See `od-006`. + +--- + +## §4.3 Work that cannot fail + +### 18. "A property nobody noticed for ten experiments" / "governed ten experiments" +**CONFIRMED, and the ten are enumerable.** `instance` `met-001.re_derived_here`: "Used unexamined in exp001, exp002, exp003, exp004, exp005, exp007, exp008, exp009, exp010 and exp011 — every comparison this repository has ever scored." Exactly ten. Recurs at :460, :524, :662, :819, :826, :904, :1089, :1169 and is consistent throughout. + +### 19. "The spread is a sample standard deviation, so it does not shrink with more samples… No number of seeds could ever resolve anything" +**CONFIRMED.** `met-001`: "exp011 was the first iteration to notice it is a SAMPLE STANDARD DEVIATION and not a standard error, and exp012 is the first to measure what that costs: **45 of 96 nulls (46.9%)** read differently under the other bar (bio-074)." + +### 20. "Three times the actual outcome fell outside every direction the falsifier had enumerated" +**UNSUPPORTED.** The remedy is confirmed — the four-direction enumeration with "**(d) REVERSES DIRECTION**" appears in `exp007/preregistration.md:116` and `exp011/preregistration.md:119`, so the practice demonstrably changed. **The count of three is not recorded anywhere**: the misses are properties of specifications, which are not committed. Same structural cause as claim 17. + +--- + +## §4.4 Inherited assumptions + +### 21. "Thirteen carried methods, eight of which had never been examined" +**UNDER-QUALIFIED — both numbers are right and the word joining them is not.** +- The `methods` section holds **13 entries**, of which **10** are `kind: carried`; 2 are `choice` and 1 is `measurement`. +- **Exactly 8** carry `status: never_examined` — and `template` commit `f135d43`'s subject says so independently: "*exp012: one foreclosure moved, and **eight constants were never examined***". +- **One of the eight (`met-002`) is `kind: choice`** — a value this project chose deliberately and said why — so it is not a carried method. The set of thirteen is "methods", not "carried methods". + +**Proposed:** "Thirteen carried constants and criteria, ten of them carried in from elsewhere, eight never examined by anyone in this project." + +### 22. "Applied to numbers on day two and to methods at experiment twelve" (§4.4:534, repeated §6:899) +**CORRECTED. Numbers were marked on day ONE, not day two.** +- `instance: docs/inherited-measurements.yaml` was created at **2026-08-29 11:45** (`9fb4ef8`), one hour forty-nine minutes after the repository's initial stub (09:56) — **and it already contained 42 entries carrying `status: inherited`.** +- The methods half is confirmed: `methods:` first appears at `f135d43`, **2026-08-31 17:45**, in the exp012 commit. `met-001.status` = `examined_at_exp012`. +- **The error runs against the draft's own interest.** The asymmetry it is describing is *worse* than stated — one day versus experiment twelve, not two days — so the correction strengthens the finding. The same "day two" appears in `template: CLAUDE.md`, so it is inherited rather than invented here. + +**Proposed:** "Applied to numbers on day one and to methods at experiment twelve." + +--- + +## §4.5 Knowledge that lives only in a conversation + +### 23. "An eighteen-step plan, with stages, altitudes, and two recorded amendments, existed in a chat window and nowhere else" +**CONFIRMED on every element, at the moment of the event.** At `19d2723`, the commit that first wrote the plan into the repository: **18 steps** across **5 stages**, altitude tags present (`fw`, `geom`, `infra`), and **exactly two amendments** — `am-001`, `am-002`. The commit message says so: "Eighteen steps in five stages, with altitude tags, statuses, and the two amendments taken so far." +- *Note for any future quotation:* the ledger now carries **nine** amendments at `5f8e39f`. The claim is correct **because it is scoped to the moment**, and would be wrong as a statement about the file today. + +### 24. "It had shaped every specification for a week" +**CORRECTED. For one day — nine and a half hours, and seven merged pull requests.** +- The repository's first commit is `e3a17cf`, **2026-08-29 09:56**. The plan was recorded at `19d2723`, **2026-08-29 19:34 — the same day.** +- Pull requests #1–#7 were merged in between, so the plan governed **seven iterations**, not seven days. +- **The likely origin of the error is in the record itself**: `sequence.plan.amended` reads "**twice in seven iterations**", and `19d2723`'s own message repeats "eighteen steps amended twice in seven iterations". *Iterations became days.* That is claim 31's error in a different unit and this pass's recurring defect in its purest form. + +**Proposed:** "It had shaped every specification for a day — seven merged pull requests — before anyone wrote it down." + +### 25. The cold session "searched the repository, the git history including commit bodies, and both reference checkouts, found six of eighteen steps inferable from side-references in old prompts and none of the stage groupings, and refused to invent the rest" +**UNSUPPORTED.** +- No occurrence of "six", "inferable", "side-reference" or any equivalent appears in `instance`'s tree or in any commit body. +- The nearest recorded figure points the other way: at `19d2723` the **position** half lists **eight** completed steps with evidence (1–4, 7–10) plus two deferred — but that is derived from the foreclosure ledger, which is a different operation from reconstructing the plan. +- **The refusal is the load-bearing part of the anecdote and there is no artifact for it.** §4.5's own thesis is that knowledge living only in a conversation cannot be detected from inside it; its central example is knowledge that lived only in a conversation. + +--- + +## §4.6 The instrument you authored + +### 26. "The synthetic fixture was an order of magnitude worse in the tail" +**CORRECTED → 22.7× at p90.** +| AT band | fixture | render | ratio | +|---|---|---|---| +| median | 0.02050 | 0.01248 | 1.64× | +| **p90** | **1.49626** | **0.06580** | **22.7×** | +- Source: `instance: experiments/exp004_scene_model_check/findings.md`, falsifier 2; 8 seeds, policy A′, 18 fixations, AT = within 10 px of a depth discontinuity. +- **The draft is already better than the sentence the source corrected.** The instance's claim 12 was CORRECTED for saying "roughly an order of magnitude" *unscoped*; the draft adds "**in the tail**", which is the p90 scope the source demanded. What remains is the figure: 22.7× is more than twice "an order of magnitude". +- *Caveat the source attaches:* "the 48× that appears in `docs/state.yaml` is `diff / bar`, a distinguishability multiple, and **must not be read as an error ratio**." -Record what was actually changed, separately from what was flagged. Two lists, -and both are needed: +**Proposed:** "roughly twenty times worse in the tail". + +### 27. "Two fifths of the measured pixels, four fifths of the total error" +**UNDER-QUALIFIED — the denominator was carried across correctly and the word "squared" was not.** +- Measured: AT pixels are **38.23%** of the **53,098 valid measured pixels** and carry **82.27% of total squared error**. Source: `instance: experiments/exp005_stratified_reanalysis/preregistration.md:35` — measured **before** the run. +- The instance's claim 13 was UNDER-QUALIFIED on **two** grounds: the denominator was "the image" (wrong — over the image AT is 26.4%), and the error is **squared**. **The draft fixes the first and drops the second.** Half a correction travelled. +- *Do not conflate with `bio-007`*, a different statement about the same fixture: the worst 5% of valid pixels carry 80.9% of squared error. Two different pixel sets, both landing near four fifths. + +**Proposed:** "two fifths of the valid measured pixels, four fifths of the total *squared* error". + +### 28. "It passed the validity test built to catch exactly that class of failure" +**CONFIRMED — and more precisely worded than the sentence the source corrected.** +- The instance's claim 14 was UNDER-QUALIFIED for saying "passes left–right consistency", because LR is one of two conjuncts in `valid = (distinct > 0.10) & agree` (`src/bio3dvision/matching.py:102-104`) and was never isolated. +- The draft says "the validity test", which is the conjunction — the source's own proposed repair. Measured: **78.5%** of AT pixels marked valid, **21.7%** of those wrong by more than 2 px. + +### 29. "Four of thirteen experiments went to establishing this" (:620) and "roughly a third of the project's experiments" (:638) +**CORRECTED → three.** +- "This" is the fixture artefact. Per `instance: report/claims-verified.md` claim 29, the four are exp004, exp005, exp008 and exp012, and **exp012 is the criterion re-analysis, not a stimulus experiment**: "Three about the stimulus, one about the criterion." +- **This is the sharper form of claim 11.** In §3 the sentence says "about the instrument", which merely drops a disjunct; here the four are attributed *to the fixture finding specifically*, which is the error the source corrected. +- Consequently "roughly a third" (4/13 = 31%) becomes **3/13 = 23%**, closer to a quarter. + +**Proposed:** "Three of thirteen experiments went to establishing this… at a cost of roughly a quarter of the project's experiments." + +--- + +## §5 What it cost, and what it caught + +### 31. "Two of thirteen iterations produced no new science" +**UNDER-QUALIFIED — the units do not match.** +- The two are the claims-verification pass and the re-scoring. **The re-scoring is exp012, one of the thirteen experiments; the claims pass is not an experiment at all**, so the numerator mixes an experiment with a non-experiment while the denominator counts experiments. +- The project's own unit of iteration is the merged pull request: **30** of them at `5f8e39f`. On that denominator the ratio is 2 of 30. +- "Thirteen" carries three different referents across the draft — experiments (:329, :620, :941), foreclosures (:307, :1187) and iterations (:798). The first two happen to coincide at 13; the third does not. + +**Proposed:** "Two of thirteen experiments' worth of effort produced no new science" — or state the iteration denominator. + +### 32. "Nine thousand lines of ledger in five days" (:810, repeated §8.5:1256) +**CONFIRMED.** `docs/state.yaml` 4,054 + `docs/inherited-measurements.yaml` 5,190 = **9,244 lines**. "Nine thousand" rounds down, which is the direction that stays true. ("Five days" carries claim 1's qualifier.) + +### 33. "The verification iteration found three wrong figures and eight claims true only in the condition they were measured under" +**CONFIRMED.** First pass: CORRECTED 3 (claims 6, 12, 16); UNDER-QUALIFIED 8 (1, 3, 7, 10, 11, 13, 14, 15). + +--- + +## §6 Where the method failed + +### 36. "The same two errors recurred: bundling a bounded task with an unbounded one, and naming a branch without asking for a commit" +**CONFIRMED.** `template: docs/spec-defects.md` §1 and §2, and its own header: "The list below opens with the two observed in the instance this template came from." + +### 37. "Used zero times in thirteen experiments" — both components +**CONFIRMED.** See claims 3 and 4. + +--- + +## §7 The template + +### 38. "About a third of the original was domain-specific" +**UNSUPPORTED.** `template: CLAUDE.md` does carry an empty `## Domain invariants` section with a filled example beside it, exactly as described. **The proportion is not measured anywhere**, and the instance's CLAUDE.md is not partitioned in a way that makes "a third" checkable without a judgement about which paragraphs count as domain-specific. + +### 39. "An experiment exemplar. Five empty files in the order they are written, pre-registration first, with a short note on why the order is load-bearing" +**CONFIRMED.** `template: experiments/exp000_example/` holds six files: the five exemplar files plus `README.md`, whose line 3 reads "Five files, and **the order they are written in is the whole point**" and which carries a section headed "Why the order is load-bearing". + +### 40. "A list of specification defects… seeded with the two that recurred" +**CONFIRMED.** The file carries three entries at `81a638e`, and says so itself: it "opens with the two observed in the instance", the third being the count defect found in the template's own prose. "Seeded with" is accurate about origin. + +### 41. "That audit found several gaps, most of which were closed. **Four remain open** and are recorded in the repository rather than fixed" +**CORRECTED. The four in the record are four gaps CLOSED, not four left open.** +- `template` commit `2b6d482`: "**docs: close four cold-start gaps** and carry the draft/typeset practice — Five fixes from the cold-start audit." +- `template` commit `a2ce623`: "docs: **close the two gaps these fixes opened**." +- **No record of four open gaps exists.** `README.md`'s "What this template does not do" carries **three** bullets, and they are stated limitations rather than audit findings. +- The gap the draft calls "the largest" is real (claim 42) — but it is argued in the draft, not recorded in the template. + +**Proposed:** either "four gaps were closed and the audit's residue is argued in §7 rather than recorded", or record the four in the template and cite them. + +### 42. The framework/implementation distinction "is defined in the template by an example from a layered software architecture" +**CONFIRMED.** `template: docs/state.yaml:279` defines altitude `fw` as "Changes the shape of the thing: **interfaces between layers**, what a type means, what the project is committed to." A project without layers has no test for the distinction. + +### 43. The repeated-figure check fired on the template's own front page +**CONFIRMED in every particular**, from `template` commit `931f6d3`: +- "The source instance has THIRTEEN experiments, not fourteen… **The count had been taken from the highest identifier rather than from the set.**" +- "**CORRECTED IN BOTH PLACES IT APPEARED.** README.md carried it, and a test docstring had picked it up and repeated it — so fixing the source alone would have left one standing." +- "Then ran the template's own repeated-claim grep **over the whole tree**" — confirming the draft's "the tree-wide search found it; a re-reading would not have". +- The same commit independently confirms that "45 of 96 nulls, ten experiments, five days" are consistent across their occurrences in the template. + +--- + +## §8 Reflection (8.1–8.5) + +### 44. "A ledger of thirteen foreclosed possibilities, each with the evidence that closed it, the conditions under which it holds, and the cost of reopening it" +**CONFIRMED.** 13 foreclosures; the schema carries `rationale`, `scope` and `cost_to_reopen`, and `scope` is a required field. + +### 45. "Most of these thirteen cost an afternoon each" +**UNSUPPORTED.** No per-decision time is recorded anywhere. The commit timeline shows several experiments completed within a few hours (exp001 pre-registered 13:58, findings 14:54), which is *consistent with* the claim for some, and no record establishes it for "most". + +### 46. "The low-ceremony lane went unused in two consecutive projects under different conditions" +**UNDER-QUALIFIED — the lane existed in one of the two.** +- `active-stereo` has **no `spikes/` directory** and never did. Its failure was the *absence* of a lane: a step written up twice and never started (claim 5). +- §6 states this correctly — the lane "was built as a fix for exactly this failure, in the previous project" and "was carried into the new repository on day one". §8.5 compresses that into the lane going unused twice, which asserts it existed twice. +- **The underlying argument survives**: the *behaviour* — not reaching for informal work — did recur across both projects. That is the claim §8.5 needs and not the one it makes. + +**Proposed:** "informal exploration went undone in two consecutive projects — in the first because there was no lane, in the second although there was." + +### 47. "Nine thousand lines of ledger, written by one collaborator, read by one human, in five days" +**CONFIRMED** on the count (claim 32); "five days" carries claim 1's qualifier. + +--- + +# Resolutions ## What resolved | claim | was | resolution | |---|---|---| -| | | | +| 14 (partial) | "eighteen load-bearing claims… seven stood" at :870 and :1219, naming neither pass nor subset | Amended in `9b58d1a` to name the first pass and the substantive subset. **:391 was left standing** — see below. | +| — | `od-005`: section 8.6 unwritten | 8.6, 8.7 and 8.8 are written; the draft's status block corrected in `9b58d1a`. | +| — | `od-002`: mn-001 and mn-002 disagree | Both correct; different denominators. Resolved at source, `mn-003` added for the dropped PARTIAL. | +| — | `gap-001`: no source cloned | Closed. Four checkouts in `.reference/`. | ## What is still flagged and was not corrected -Claims raised and left standing, with whose call it is. **Record these even when -— especially when — the decision is to leave them.** A flag that is dropped -silently is indistinguishable from a flag that was addressed, and the difference -is the whole value of the pass. +**Every claim above with a verdict other than CONFIRMED is in this list.** The +specification reserved prose corrections to the maintainer; this pass's output +is the record. Ordered by what it would cost to leave. + +| # | claim | verdict | whose call | +|---|---|---|---| +| **14** | "Of eighteen claims… seven stood" (§4.1:391) | UNDER-QUALIFIED | **Maintainer — urgent.** The same figure was amended at :870 and :1219 and not here, so the document now states it two ways. This is the repeated-claim defect, currently live, in the document that ships the check. | +| 17 | "three specifications were rejected" (§4.2, §5) | UNSUPPORTED | Maintainer. Either soften to the one recorded rejection, or accept that the strongest evidence for §4.2 is unrecorded and say so. | +| 24 | "shaped every specification for a week" | CORRECTED → one day | Maintainer. | +| 22 | "numbers on day two" (§4.4, §6) | CORRECTED → day one | Maintainer. Two locations. | +| 41 | "four remain open" (§7) | CORRECTED | Maintainer. | +| 29 | "four of thirteen went to establishing this" (§4.6) | CORRECTED → three | Maintainer. Two locations (:620, :638). | +| 26 | "an order of magnitude worse in the tail" | CORRECTED → 22.7× | Maintainer. | +| 11 | "about the instrument" (§3) | UNDER-QUALIFIED | Maintainer. Related to 29. | +| 27 | "four fifths of the total error" | UNDER-QUALIFIED | Maintainer — one word, "squared". | +| 21 | "thirteen carried methods" | UNDER-QUALIFIED | Maintainer. | +| 31 | "two of thirteen iterations" | UNDER-QUALIFIED | Maintainer. | +| 46 | "unused in two consecutive projects" | UNDER-QUALIFIED | Maintainer. | +| 1 | "five days" | UNDER-QUALIFIED | Maintainer — affects six locations. | +| 5 | "five open questions" | UNDER-QUALIFIED | Maintainer. | +| 12, 20, 25, 38, 45 | the remaining unsupported claims | UNSUPPORTED | **Maintainer, and see `od-006`.** Four of the five are unrecordable by construction, not merely unrecorded. | + +--- + +# The repeated-figure check, as run — and the fix for `od-003` + +**The shipped command does not work on this document, exactly as `od-003` +predicted.** Run over `report/draft.md` it returns a single line — `52 1023:7` — +because `uniq -c -f2` skips *whitespace*-separated fields while `sort -t:` has +just ordered colon-separated ones, so every record collapses into one group. It +also matches only numerals, and this document spells its figures out. + +**What was run instead**, and what `od-003` should adopt: + +```sh +# Repeated-figure check for prose that spells its numbers out. +# 1. words as well as numerals; +# 2. group on the VALUE with awk, not `uniq -f2`; +# 3. -H so the field offsets hold for one file as well as many; +# 4. drop bare decimals -- in markdown they are section numbers, not claims. +for f in "$@"; do + grep -onHE '\b([0-9]+(\.[0-9]+)?(×|x|:1|%|-fold)?|zero|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|eighteen|twenty-two|forty-one|eighty-seven|thousand)\b' "$f" \ + | grep -vE ':[0-9]+\.[0-9]+$' +done | awk -F: '{n[$3]=n[$3]" "$2} END {for (v in n) {c=split(n[v],a," "); if (c>1) printf "%3d %-12s lines:%s\n", c, v, n[v]}}' | sort -rn +``` + +**It was validated against a known answer before being trusted**, which the +shipped one never was: it had to surface the `mn-001`/`mn-002` pair, and it does +— "eighteen" at seven locations and "twenty-two" at two. + +**What it found that a per-passage reading did not:** + +1. **"eighteen" carries two unrelated figures** — eighteen claims (:391, :872, :882, :1222) and an eighteen-**step plan** (:554, :561). A reader meeting the second after the first has to notice the noun changed. +2. **"thirteen" carries three** — experiments, foreclosures, and iterations (:798). The first two coincide at 13 by accident; the third does not, which is claim 31. +3. **Claim 14's third location.** :391 is in §4.1 and the other occurrences are in §5 and §8.4 — three sections apart. This is precisely the structural blind spot: at :391 the reader has not yet read §5, and by §5 the §4.1 sentence is already behind them. + +**Its limit, stated so it is not over-trusted:** the word list is enumerated, so a +figure written as a word not on the list is missed. The list covers every +spelled-out figure this draft uses; it will need extending for the next document, +and that is a maintenance cost, not a one-time fix. + +--- + +# What this pass did not do + +- **No prose was written and no `.tex` file was touched.** The two amendments in `9b58d1a` were made before this pass, under the specification's explicit exception, and are recorded as claim 14's partial resolution. +- **`active-stereo` and `bioeye` are unpinned.** They were cloned at their default branches, not at a recorded SHA, because none is pinned in `docs/inherited-measurements.yaml`. Claims 2, 5 and 46 rest on them. `active-stereo`'s HEAD is `3f7a263` and `bioeye`'s is `e908170`; **pin them before quoting those claims**, or a later reader is citing whatever `main` says the day they read it. +- **Nothing was re-run.** Every figure above is read from a committed artifact or computed from `git log` over a pinned checkout. +- **§§8.6–8.8 were not read for claims**, per the specification's scope. +- **Claim 13's fourth instance was not located**, and is recorded as PARTIAL rather than silently dropped. diff --git a/report/draft.md b/report/draft.md index d693d25..63bb3a9 100644 --- a/report/draft.md +++ b/report/draft.md @@ -10,12 +10,19 @@ --- > **Draft status.** This document was drafted on the conversational surface and -> assembled by hand. Its factual claims about the source project have **not** -> been through a claims-verification pass — which is the practice §4.1 describes -> and §7 ships. Every figure in it is a claim to be checked at source before -> typesetting, and the count of what survives that pass belongs in the record. +> assembled by hand. Its factual claims about the source project have now been +> through **one** claims-verification pass — the practice §4.1 describes and §7 +> ships — covering §§1–8.5, resolved against pinned checkouts of the +> repositories it makes claims about. > -> Section 8.6 is to be written by the first author. +> **42 claims: 22 confirmed, 5 corrected, 8 under-qualified, 6 unsupported, 1 +> partial** (`mn-004`). **The corrections have not been applied to this prose.** +> Every verdict, with its source and a proposed replacement sentence, is in +> `report/claims-verified.md`; the sentences stand as drafted until the first +> author decides on each. Do not typeset before that. +> +> Sections 8.6, 8.7 and 8.8 are the first author's, written in the first person. +> They make no checkable factual claims and are out of scope for that pass. --- @@ -867,8 +874,10 @@ it is a real cost borne by whoever adopts the method. ## The asymmetry that justifies the whole thing -One number carries the argument. Of eighteen load-bearing claims in the first -draft of the project's technical report, **seven stood as written.** +One number carries the argument. The **first** of the two verification passes +over the project's technical report checked twenty-two claims, eighteen of them +substantive and four bibliographic. Of those eighteen, **seven stood as +written.** The other eleven were not fabrications. They were claims made by someone who had read the record, believed them, and would have published them. Three were wrong @@ -1215,8 +1224,8 @@ The honest answer is: **both, in different parts, and the boundary is checkable.** The parts that are evidence are the ones where the method's mechanisms fired -against this document. The claims pass ran on the technical report and corrected -eleven of eighteen claims. The repeated-figure check fired on the template's own +against this document. The first claims pass ran on the technical report and +moved eleven of its eighteen substantive claims. The repeated-figure check fired on the template's own front page. A specification about this work was rejected on a false premise about which surface held which file. Those are not testimonials; they are recorded events with commits attached, and a reader can go and look.