Commit 50e0ea7
committed
test(d-ign-b): the corpus produced nothing to read — fix the fixture, not the digest
`cargo test -p lance-graph-supervisor --features cycle-driver --test
d_ign_b_lenses` failed at L1's can-fire half: z=3 (Kant) and z=4
(Wittgenstein) over byte-identical rows digested identically to
15130871412783076140. That constant is `DefaultHasher::new().finish()`
— the hash of zero bytes. Both readouts were EMPTY.
Root cause is the corpus, not the lenses. `synthetic_corpus` emitted
"d-ign-b synthetic verse {i} token{salt}", which carries no copula, no
auxiliary, no modal, no typed relational verb and no `-ed` morphology,
so `stance::stream` never arms a predicate and emits zero statements.
Empty arena + empty ReadOut => all four `stance_panel` arms empty =>
every lens digests the same. `stance.rs` is untouched: it was never at
fault.
Pre-existing at f9206fc, and newly VISIBLE rather than newly broken —
without `--features cycle-driver` the module is cfg'd out and the
binary runs 0 tests while reporting ok. Arming that CI gate ended a
vacuous pass; it did not cause a regression.
Explicitly NOT fixed by tagging the digest with a variant
discriminant. That turns it green instantly and makes the cross-lens
`!=` pass by construction of the tag alone, for any input — the
vacuous-assertion shape the falsifiability rule rejects, which
`digest()`'s own doc comment forbade in advance.
The fix — `synthetic_window(w)` builds each 48-verse owner slice from
templates the shipped clause machine genuinely extracts from:
* affirm-then-negate / negate-then-affirm pairs on one term
(`revise_at` records |f1-f2| = 0.85, clearing Hegel's 0.05 floor,
with both flip directions legible from the provenance endpoints
for Nietzsche's Transvaluation/Devaluation);
* "they knew that they were X" (perception verb + complementizer
inside the 3-token window) for Kant's ReadOut::lifts;
* "<effect> because <cause>" for Wittgenstein's impl-cause/
impl-effect games, on top of the Inh games every emission feeds.
Predicates are `{stem}{window:02}{n:02}` nonsense syllables, chosen to
collide with no catalogue the machine consults.
The window SHAPE varies with w % 5|3|7, coprime with the stride-4
arming cycle. Three of the four arms fold interned u16 ids, never the
strings, so structurally identical slices digest identically however
their tokens are spelled — renaming the vocabulary would have left
L4's ">=2 distinct digests" half unfalsifiable.
L1 also gains a non-emptiness precondition checked BEFORE the digest
comparison, naming the corpus provenance. An empty corpus now reports
itself as a corpus defect instead of accusing the lenses.
Falsifiability verified in both directions, not asserted:
* `run_lens(4, ..)` returning the Kant arm => L1 fails on
1790839806321388433, a NON-empty digest, so the assertion still
discriminates content;
* restoring the pre-fix filler => the new precondition fires with
the corpus-defect message.
Measured after the fix: all four arms non-empty on the twin base,
4/4 distinct digests over one owner, 4/7/6/6 across each lens's owner
set. Full `-p lance-graph-supervisor --features cycle-driver` suite
green (30 tests), fmt + clippy clean.
Board hygiene in the same commit:
* EPIPHANIES E-D-IGN-B-CORPUS-PRODUCED-NOTHING-TO-READ-1
* ISSUES ISS-D-IGN-B-REAL-CORPUS-PATH-IS-UNVERIFIED — the
$BLW_KJV_TSV branch has never executed here, and the two corpora
do NOT exercise the Hegel/Nietzsche arms alike.1 parent f9206fc commit 50e0ea7
3 files changed
Lines changed: 237 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
1 | 21 | | |
2 | 22 | | |
3 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
3 | 45 | | |
4 | 46 | | |
5 | 47 | | |
| |||
0 commit comments