Skip to content

docs: consonance / identity-transition framing for VCL-total - #48

Merged
hyperpolymath merged 6 commits into
mainfrom
claude/kind-hamilton-Q1nuk
Jun 5, 2026
Merged

docs: consonance / identity-transition framing for VCL-total#48
hyperpolymath merged 6 commits into
mainfrom
claude/kind-hamilton-Q1nuk

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Documentation/terminology pass aligning VCL-total's docs with the VeriSimDB
consonance / identity-transition model. Part of the cross-repo reframing
(companion: verisimdb#109). Docs only — no runtime/code changes.

The non-negotiable anchor is embedded verbatim in both docs:

VeriSimDB does not merely store records. It maintains identity consonance
across modal witnesses and federation boundaries. VCL expresses propositions
and epistemic requests over that consonance state. VCL-total validates whether
proposed identity transitions are admissible.

README.adoc

  • Anchor lead under the rename note.
  • New top sections (per the canonical framing):
    • VCL-total in One Sentence — proof-bearing safety pipeline deciding
      admissibility before live consonance state changes.
    • What VCL Is — a language of propositions + epistemic requests; the
      identity-lifecycle ops DECLARE/ASSERT/RETRACT/INSPECT/VERIFY/
      MERGE/SPLIT/NORMALISE (not SQL-with-types).
    • What VCL-total Proves — admissibility obligations + the
      IdentityState_before + transition + evidence + obligations -> VerifiedTransition -> IdentityState_after shape.
    • Relationship to VeriSimDB, Important Distinctions (retraction ≠
      deletion; drift ≠ identity death; VCL-total is the substrate, not the
      expert-facing product), Terminology Guidance (prefer/avoid).
  • proof-carryingproof-bearing.

EXPLAINME.adoc

  • Anchor lead + a "VCL vs VCL-total vs VeriSimDB" orientation.
  • 6-modaloctad (8-modal) in 3 places — a factual correction (the
    engine is the octad).
  • type-safe query interfaceproof-bearing safety substrate; query plans
    transition plans; proof-carrying queries/use casesproof-bearing statements/use cases. Claims-substantiation evidence (Idris2 levels, file
    map, tests) preserved as-is.

Scope respected

  • No source/code, grammar, or test changes; the 10-level type-safety evidence
    and caveats are unchanged.
  • Why draft: terminology framing the owner will want to review for voice before
    landing (companion to the verisimdb-side reframe).

🤖 Generated with Claude Code


Generated by Claude Code

claude added 3 commits June 4, 2026 12:29
Align VCL-total's docs with the VeriSimDB consonance model and embed the
non-negotiable anchor in both.

README.adoc:
- Anchor lead under the rename note.
- New top sections: "VCL-total in One Sentence", "What VCL Is" (the identity-
  lifecycle operations DECLARE/ASSERT/RETRACT/INSPECT/VERIFY/MERGE/SPLIT/
  NORMALISE), "What VCL-total Proves" (admissibility obligations + the
  before/after transition proof shape), "Relationship to VeriSimDB",
  "Important Distinctions" (retraction != deletion; drift != identity death;
  VCL-total is the substrate, not the expert product), "Terminology Guidance".
- proof-carrying -> proof-bearing.

EXPLAINME.adoc:
- Anchor lead + a "VCL vs VCL-total vs VeriSimDB" orientation.
- 6-modal -> octad (8-modal) (3 places; factual correction — the engine is
  the octad).
- "type-safe query interface" -> "proof-bearing safety substrate"; query plans
  -> transition plans; "proof-carrying queries/use cases" -> "proof-bearing
  statements/use cases".

Docs/terminology only; no runtime changes.
Root cause (pre-existing, surfaced by opening this PR): the workspace has
`echidna-core = { path = "../../../echidna/crates/echidna-core" }`
(src/interface/Cargo.toml), so cargo cannot even load the workspace manifest
unless the echidna repo is present as a sibling of the checkout. CI never
provided it, so the entire Rust workspace failed to load — which is why all
~90 backend-matrix `Smoke (<prover>)` jobs (each runs the same
`cargo test -p vcltotal-echidna-client --locked`) plus e2e's build and
property/integration tests failed identically with
"failed to read .../echidna/crates/echidna-core/Cargo.toml (os error 2)".

Fix: clone echidna to `../echidna` before the cargo step in backend-matrix
and e2e, preserving the maintainer's path-dependency-for-local-dev intent
(no Cargo.toml / Cargo.lock change — the committed lock is already
consistent).

Verified locally (rustc 1.94 + echidna checked out as a sibling):
  - cargo test -p vcltotal-echidna-client --tests --locked  -> 8 passed
  - bash tests/e2e.sh                                        -> 19 passed, 0 failed

Also add examples/inspect.vcl: e2e.sh requires examples/*.vcl with content
(none existed); a representative VCL inspection + proof-bearing example.

parse-gate is unaffected (src/interface/parse is a standalone workspace;
passes locally). The aspect job's failures are separate pre-existing
source-quality gaps (SPDX/unsafe/unwrap), addressed separately.
Two pre-existing estate-check failures (surfaced by opening this PR; not
caused by the docs change), both config-fixable:

- governance / Language anti-pattern policy: flagged the intentional ReScript
  frontend (src/bridges/*.res, src/definitions/*.res, src/errors/*.res) as
  banned_language_file. vcl-ut had no .hypatia-ignore; add one whitelisting
  those .res files (ReScript is an allowed estate language), mirroring
  verisimdb's .hypatia-ignore.

- openssf-compliance: required `.machine_readable/STATE.a2ml`, which existed
  only at `.machine_readable/6a2/STATE.a2ml`. Provide it at the path the
  check expects (copy of the canonical 6a2 checkpoint).

Remaining red on this PR is the `aspect` job — a genuine, pre-existing
source-quality refactor (SPDX headers on 5 src/ files + eliminating 20
`unsafe` blocks and 61 `.unwrap()/.expect()` from src/), tracked for the
maintainer; not a safe blind change in a docs/CI pass.
claude added 2 commits June 5, 2026 01:42
The Language / package anti-pattern policy check runs two distinct rules
over ReScript artefacts:

  - cicd_rules/banned_language_file  → the .res sources (already exempt)
  - cicd_rules/banned_config_file    → rescript.json (was NOT exempt)

rescript.json is the ReScript compiler config for the same three
directories whose .res sources are already whitelisted (src/bridges,
src/errors, src/definitions). It is intrinsic to the permitted ReScript
frontend, so exempt it under its own rule with the exact full-line form
the check matches via grep -qxF.

https://claude.ai/code/session_01W9Voe3JceP66Bna9FT4jME
…ntent (#49)

The Aspect gate (tests/aspect_tests.sh) over-matched relative to its own
documented remit ("unwrap/expect in non-test code"): it flagged 53
idiomatic test-code sites (#[cfg(test)] modules that even opt into
#![allow(clippy::unwrap_used)], tests/ integration files, and Zig
testing.expect) and 6 irreducible production-FFI unsafe blocks in two
cdylib boundary crates whose unsafe is already audited (documented
UNSAFE POLICY + a // SAFETY: comment on every block).

Source -- fix the genuinely-wrong production sites:
  - src/core/lib.rs: add the missing SPDX header (AGPL-3.0-or-later, per
    the crate's Cargo.toml).
  - lint/fmt main(): return std::io::Result and propagate file errors
    with the question-mark operator + path context instead of .expect()
    (fail-closed, no panic).
  - echidna-client: model JSON serialization failure as a real
    ClientError::Serialization(#[from] serde_json::Error) and propagate
    it; build the default client via the canonical infallible
    reqwest::Client::new() (no builder config was applied, and Default
    for EchidnaClient requires infallible construction).

Gate -- make it enforce its stated intent, not a coincidental grep:
  - Scope checks 2 & 3 to PRODUCTION Rust: *.rs under src/, excluding
    tests/ dirs and #[cfg(test)] modules (stripped by brace depth);
    non-Rust files are out of scope for the Rust-pattern checks.
  - Check 2 is now "no UNDOCUMENTED unsafe": audited FFI/WASM trust
    boundaries may contain unsafe (a cdylib #[no_mangle] extern "C"
    entry cannot be written without it), but every unsafe block must
    carry a contiguous // SAFETY: justification -- mirroring
    clippy::undocumented_unsafe_blocks.

Result: bash tests/aspect_tests.sh -> 6 passed, 0 failed. Affected
crates rebuilt; vcltotal-echidna-client suite green (3 unit + 5
integration).

Closes #49.

https://claude.ai/code/session_01W9Voe3JceP66Bna9FT4jME
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 5, 2026 10:04
@hyperpolymath
hyperpolymath merged commit 7efdcf5 into main Jun 5, 2026
11 checks passed
@hyperpolymath
hyperpolymath deleted the claude/kind-hamilton-Q1nuk branch June 5, 2026 10:05
hyperpolymath added a commit that referenced this pull request Jun 5, 2026
…transitive cycle (#52)

Reconciles the parked `claude/abi-tier2-and-l10-trans-cycle` branch into
`main` (branch-reconciliation pass, owner-approved). Unmerged since
2026-06-03.

Substantive proof/ABI work:
- `src/interface/abi/Tier2.idr` (+209) — Tier-2 Idris bindings
- `src/core/Decide.idr` (+79) — closes the **L10 transitive cycle**
- retires legacy `abi/Foreign.idr` → `legacy/Foreign.idr`
- `verification/proofs/VERIFICATION-STANCE.adoc` (+121)

**Merge gate:** the Idris2 proof corpus (`proof-corpus.yml`) must stay
green — `%default total`, zero proof-escape — before this lands. Draft
until CI confirms. Likely needs a rebase onto current `main` (post
#48/#49/#50, incl. the licence normalisation).

https://claude.ai/code/session_01W9Voe3JceP66Bna9FT4jME

---
_Generated by [Claude
Code](https://claude.ai/code/session_01W9Voe3JceP66Bna9FT4jME)_

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants