Commit a307b0e
Work up VCL-UT: repair CI, reconcile the level ladder, and set direction (#75)
Two parts, as asked: deal with the immediate issues first, then work up
where this goes — theory and VeriSimDB application kept separate.
## Part A — immediate issues (all measured, all verified)
**Two CI faults, independent:**
- `dogfood-gate.yml` was **malformed YAML**. The embedded Python started
at column 1 while the `run: |` block scalar was indented 10, so YAML
closed the scalar early. The workflow had failed **every run in 0s since
at least 2026-07-06** — it never once validated anything — and it broke
Dependabot's `github_actions` updater with
`dependency_file_not_parseable`. Verified by *executing* the extracted
step against valid and invalid manifests, not just by parsing it. (~80
of 266 estate copies carry the identical fault.)
- `dependabot.yml` declared `mix`/`npm`/`pip`/`nix` with no manifests
present — four of the five weekly failures. Also: this repo has **five**
cargo workspace roots and the single `/` entry covered one, so the
parser and `vclt-gate` were invisible to Dependabot.
**Two crates had silently stopped compiling.** `ast::Statement` gained
the consonance field `verb`; `attest` and `recompute-wasm` were never
updated (`E0063`). Only their test modules were stale, so the libraries
still built and nothing complained — **12 tests had just stopped
running**, in the crates carrying the attestation and recompute
boundaries. They were covered by **no CI job at all**, which is exactly
how they rotted. Now fixed and gated.
**Coverage gaps closed:** `e2e.yml` ran 69 of the root workspace's 102
tests — every e2e and fuzz test was skipped. Also removed two `git clone
echidna` steps that cloned a whole repo per run for nothing (proven: 102
tests and `e2e.sh` 19/19 pass with no sibling present).
**Correction to an earlier finding of mine:** I had recorded "0 unit
tests, root `cargo test` is a fake gate". That was **wrong** — an
artefact of truncating the log. The root crate is a re-export facade
whose whole surface lives in `tests/`; the `tests-102 pass` badge was
exact. Noted in the workflow header so the misreading isn't repeated.
**Documentation truth pass** — the level ladder disagreed with the code
three ways:
| | was | now |
|---|---|---|
| Numbering | 1–10 | **L0–L10** (they're wire tags — requesting 7 got
Effect-Tracking, not the Cardinality documented) |
| Vocabulary | `FETCH`/`REMOVE` | `SELECT`/`RETRACT` — the documented
verbs **are rejected by the parser** |
| Count | ten | **eleven** — L10 `EpistemicSafe` appeared in *no
document anywhere* |
## Part B/C — the work-up
`docs/2026-07-21-workup-consonance-and-verisim.adoc`, two strands kept
separate.
**Theory.** The strongest argument for the consonance reframe came from
the code, not from taste: the eleventh level isn't a query-safety
property at all, and it's the one level *not* inherited from TypeLL (a
UI panel has no federation, so no warrant question). The paper is titled
*"A Decalogue…"* — its own title can't house its own eleventh level. The
gap in the world is stated honestly: type-safe query languages are a
**crowded, mature** field and a ten-levels paper reads as synthesis.
What none of them do is type **warrant** — every one assumes a single
source of truth that cannot disagree with itself.
**The whitepaper reframe is a proposal, not an executed rewrite.** The
1,909-line `.tex` is untouched. Structure + a full draft abstract are
offered for approval first — how a paper argues its claim is yours to
settle, and it's the least testable change available here.
**Application.** Opens with the uncomfortable fact: **VCL-UT delivers
nothing to VeriSimDB at runtime today** — the producer is finished and
the consumer was never written (`verisim-api/src/vcl.rs` has zero
`vclt-gate` references). Two VeriSimDB defects located precisely,
including `VCLTypeChecker.res:60` building the default context with
**six** modalities though the type admits eight — Provenance and Spatial
silently absent from every default type-check. Those are VeriSimDB
changes and are **not** made here.
Closes with a falsification section, including one thing that should be
**measured before** the wiring work rather than after: subprocess
latency on the hot path.
## Verification
```
reuse lint -> compliant, 460/460
23 workflows -> 0 malformed
cargo test --workspace --locked -> 102 passed
cargo test (parse) -> 36 passed
cargo test (attest) -> 9 passed (was: did not compile)
cargo test (recompute-wasm) -> 3 passed (was: did not compile)
bash tests/e2e.sh -> 19/19, no echidna sibling
150 tests total
```
## Note
The three unpushed `main` commits (sweep2/3/4, Mistral Vibe) are **not**
carried here. They break `reuse lint` — a genuinely fail-closed gate —
by adding an AGPL licence file to a repo with zero AGPL-declared files,
and they inject `@metadatastician` as owner/sponsor into a
`hyperpolymath` repo while duplicating correct `.github/` files.
Recommend `main` be reset to `origin/main` with a `sweep-quarantine`
branch kept for reachability. This branch is based at `origin/main` and
is unaffected.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent 717ceb3 commit a307b0e
20 files changed
Lines changed: 1246 additions & 206 deletions
File tree
- .github
- workflows
- docs
- src
- core
- interface
- attest
- src
- dap
- echidna-client
- fmt
- lint
- lsp
- recompute-wasm
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 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 | + | |
4 | 28 | | |
5 | 29 | | |
6 | 30 | | |
7 | | - | |
| 31 | + | |
8 | 32 | | |
9 | 33 | | |
10 | 34 | | |
| |||
14 | 38 | | |
15 | 39 | | |
16 | 40 | | |
17 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
18 | 48 | | |
19 | 49 | | |
20 | 50 | | |
21 | 51 | | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | 52 | | |
28 | 53 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
| 54 | + | |
| 55 | + | |
38 | 56 | | |
39 | 57 | | |
| 58 | + | |
40 | 59 | | |
41 | | - | |
42 | | - | |
43 | | - | |
| 60 | + | |
| 61 | + | |
44 | 62 | | |
45 | 63 | | |
| 64 | + | |
46 | 65 | | |
47 | | - | |
48 | | - | |
49 | | - | |
| 66 | + | |
| 67 | + | |
50 | 68 | | |
51 | 69 | | |
| 70 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
280 | 280 | | |
281 | 281 | | |
282 | 282 | | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
303 | 303 | | |
304 | 304 | | |
305 | 305 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 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 | + | |
2 | 28 | | |
3 | 29 | | |
4 | 30 | | |
| |||
15 | 41 | | |
16 | 42 | | |
17 | 43 | | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | 44 | | |
22 | 45 | | |
23 | 46 | | |
24 | | - | |
| 47 | + | |
25 | 48 | | |
26 | 49 | | |
27 | 50 | | |
28 | 51 | | |
29 | 52 | | |
30 | 53 | | |
31 | 54 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
39 | 60 | | |
40 | 61 | | |
41 | 62 | | |
| |||
| 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 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
0 commit comments