The generated C, amalgams, vendored runtime pins, and compiled binaries from the Claude Code era are removed from the worktree. The El sources survive; this tree is now source-only for the first-principles rebuild. Per Principal direction 2026-08-19.
4.5 KiB
CLAIMS — cycle 12, judgment lives with knowledge
Source doc: docs/v1/experiments/cycles/12-judgment-lives-with-knowledge.md
Classified BOUNDS in 00-INDEX.md.
Pinned commits
| role | sha | subject |
|---|---|---|
| parent / before-state | e01e079bdab97242f508daa9af7e8648ebd6760b |
land temporal signatures as data |
| experiment (system under test) | e8e25a07b4decfe4a5a0799a212262dffd73edc9 |
EXPERIMENT: temporal adjudication moves out; the placeholder stays |
| land (merge) | 50425f375d0d374a9a08c190ea0c9e5d7f5e1989 |
land temporal adjudication as a query |
Verdicts
| # | claim | artifact | commit | verdict |
|---|---|---|---|---|
| A1 | P1: codegen can emit operand-type relations — literally main calls temporal:instant_plus_instant |
0007-P1-relation-recorded.out |
e8e25a0 |
REPRODUCED (verbatim) |
| A2 | P2: the affine rules are a small closed set as data — 6 rules | 0012-temporal-rel-rule-recount-clean-tree.out |
e8e25a0 |
REPRODUCED |
| A3 | P3: violations still caught at build time, exit=1 |
0009-P3-violation-exits-1.out |
e8e25a0 |
REPRODUCED |
| A4 | P4: the reporter leaves codegen — 4538 → 4507 | 0011-codegen-lines-P4-clean-tree.out |
e01e079/e8e25a0 |
DIVERGED |
| A5 | P4 (mechanism): the message wording leaves the emitter | 0010-P4-reporter-left-codegen.out |
e01e079→e8e25a0 |
REPRODUCED |
| A6 | P5: the TIME_TYPE_ERROR placeholder must STAY |
0008-P5-placeholder-still-emitted.out |
e8e25a0 |
REPRODUCED |
| A7 | 98/98 native | 0005-native-suite.out |
e8e25a0 |
REPRODUCED |
| A8 | 6/6 temporal_query.sh |
0006-temporal-query-harness-P2P3.out |
e8e25a0 |
REPRODUCED |
| A9 | fixpoint ok | 0004-fixpoint-gen2-eq-gen3.out |
e8e25a0 |
REPRODUCED |
| A10 | a defect in the author's own checker: aligned columns vs an awk assuming a single space, so the rule key was left prefixed on the message | — | — | NOT-CAPTURED |
| A11 | the rules are closed because there are only two kinds of thing (point / displacement) | — | — | NOT-CAPTURED |
| A12 | the compiler builds at e8e25a0 |
0003-build-gen1-e8e25a0.out |
e8e25a0 |
REPRODUCED |
The divergence, in full
A4 — both endpoints are one line high; the delta is exact
d9e301b 4512
d2d89fc 4537
e01e079 4537 <- cycle 12's before-state
e8e25a0 4506 <- cycle 12's after-state
50425f3 4506
Claimed 4538 → 4507 (−31). Measured 4537 → 4506 (−31).
The delta is exactly right. Both endpoints are exactly one line too high — the same +1 offset seen in cycle 11's before-value. Two adjacent cycles reporting a consistent +1 on the same file is a property of the instrument used at the time, not of two independent slips. The measured chain is internally consistent: cycle 11's landed value (4537) is cycle 12's starting value (4537), whereas the prose chain is not (cycle 11 lands 4537, cycle 12 opens 4538).
The conclusion is unaffected: 31 lines of reporter left codegen, as claimed.
Corroboration of A1 and A5
The emitter records, and the wording is gone from it:
main calls temporal:instant_plus_instant (0007)
is-not-allowed strings in codegen.el @ e01e079 (before): 7
is-not-allowed strings in codegen.el @ e8e25a0 (after): 0 (0010)
and the placeholder is still emitted for the same program (0008):
10: el_val_t c = 0 /* TIME_TYPE_ERROR: Instant + Instant */;
with the judgment now coming from the data file (0009):
temporal type error in main: Instant + Instant is not allowed — a point plus a
point is not a point. Subtract them for a Duration, or add a Duration.
checker-exit=1
That triple is P5's boundary claim demonstrated end to end: what moved is the judgment and the wording; what could not move is the fact that something must be written.
Note on the rule count
0012 shows the same comment-line artifact as cycle 11's "19 names": a naive
grep -c " means " over temporal.rel returns 8; excluding comment lines
gives 6. Here the record states 6 — the correct figure. The claim is right
and the naive count is the one that would have been wrong.
Provenance notes
Artifacts 0001 and 0002 carry a DIRTY-TREE flag for the same reason as cycle
11 (git show measurements run from the shared main checkout while other agents
were committing). Both were re-run from a clean worktree as 0011 and 0012;
0001 and 0011 hash identically (a16258af65cd). Cite the -clean-tree
artifacts. All behavioural captures come from /tmp/rerun-v1b-12, a dedicated
worktree at e8e25a0.