Skip to content

Dashboard-vs-STATE CI gate + Phase B (CNO-law proptest, delete legacy tree, honest obliteration)#81

Merged
hyperpolymath merged 2 commits into
mainfrom
claude/project-scope-planning-8agyox
Jul 17, 2026
Merged

Dashboard-vs-STATE CI gate + Phase B (CNO-law proptest, delete legacy tree, honest obliteration)#81
hyperpolymath merged 2 commits into
mainfrom
claude/project-scope-planning-8agyox

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Two threads of estate-honesty work in januskey. All changes build clean and are test-verified.

Thread 1 — dashboard-check: make "dashboards that lie" a build failure

New Rust workspace crate crates/dashboard-check (Rust = policy-preferred CLI language) that reads the machine-readable source of truth (.machine_readable/6a2/STATE.a2ml) and fails CI when a hand-maintained dashboard diverges from it — the structural fix for the estate's #1 recurring defect (the historical TOPOLOGY.md "100% Production Ready" vs STATE.a2ml 60%/Grade-D).

  • a2ml is TOML, so it parses with the toml crate (no bespoke reader). Extracts completion-percentage / crg-grade / last-updated (tolerating januskey's quoted "60"/"D" and other repos' bare integers); asserts they match TOPOLOGY.md (OVERALL: …%, Grade X) and READINESS.md (CRG Grade: X), and that the dashboard isn't older than STATE.
  • 8 unit tests (quoted+bare parsing, every drift class, aligned-pass, and a prose-shadowing regression).
  • Verified end-to-end: passes on this repo; catches an injected 100%-vs-60% drift with the exact completion mismatch message.
  • Wired as just check-dashboard + CI job Dashboard Check (SPDX header, contents: read, SHA-pinned actions). Prototyped here; designed to be vendored estate-wide.

Thread 3 — Phase B honesty/tests

  • B5 — runnable reversibility evidence. A property test asserting the CNO round-trip law execute∘undo ≡ identity on the filesystem, across all supported operations over random content (temp tree + stores, snapshot → execute → undo with a fresh executor → assert byte-for-byte restored). The honest substitute for the "formal proofs pending" badge. Chown excluded (undo unimplemented); tests the filesystem effect, not the deliberately non-involutive OperationType::inverse.
  • B2 — delete the legacy src/januskey/ monolith (non-workspace, pre-extraction duplicate of crates/januskey-cli, labelled LEGACY). Every reference repointed (README, ARCHITECTURE, EXPLAINME, docs/wiki, idrisiser/*.tsig); the two contractile checks that scanned it simplified (they already preferred crates/januskey-cli). src/abi/*.idr (Idris ABI) untouched. No dangling references remain.
  • B8 — stop overstating obliteration. The doc-comment claimed content is "cryptographically unrecoverable"; overwrite-in-place can't guarantee physical erasure on SSD/CoW/journaling media (the caveat already lived in threat-model.a2ml). Mirrored that honest wording into obliteration.rs and softened the README claim, with the obliteration exception called out.

Verification

  • cargo build --workspace — clean.
  • cargo test -p januskey --lib26 passed; --test property_tests4 passed (incl. the new CNO-law case); cargo test -p dashboard-check8 passed.
  • dashboard-check --check . — green on this repo; clippy clean on the new crate.

Context

Threads 1 & 3 of a three-thread follow-up (Lean mirror merged in #110; this is the januskey pair). Draft pending human review.

🤖 Generated with Claude Code

https://claude.ai/code/session_015qwVESTcbfanY2iJPQNoSz


Generated by Claude Code

claude added 2 commits July 17, 2026 05:17
…om STATE

Structural defence against the estate's #1 recurring defect ("dashboards
that lie": a human-facing status surface claiming more than the
machine-readable STATE, e.g. the historical TOPOLOGY "100% Production
Ready" vs STATE 60%/Grade-D).

New Rust workspace crate `crates/dashboard-check` (Rust = the policy-
preferred CLI language) parses `.machine_readable/6a2/STATE.a2ml` — a2ml is
TOML, so it uses the `toml` crate, not a bespoke reader — extracts
completion-percentage / crg-grade / last-updated (tolerating januskey's
quoted "60"/"D" and other repos' bare integers), and asserts they match
TOPOLOGY.md (`OVERALL: …%`, `Grade X`) and READINESS.md (`CRG Grade: X`),
plus that the dashboard's `Last updated` is not older than STATE's. Exits
non-zero with a precise diff on divergence.

- 8 unit tests over pure extract/reconcile fns (quoted + bare parsing,
  each drift class, the aligned pass case, and a prose-shadowing regression
  where a note mentioning "OVERALL" must not shadow the real dashboard line).
- Verified end-to-end: passes on this repo (reconciled); catches an
  injected 100%-vs-60% drift with the exact "completion mismatch" message.
- Wired as `just check-dashboard` and CI workflow `Dashboard Check`
  (SPDX header, contents:read perms, SHA-pinned actions).
- TOPOLOGY.md's "source of truth" note now records that agreement is
  machine-enforced.

Prototyped in januskey; designed to be vendored estate-wide (every repo
has the same STATE.a2ml + dashboard shape).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015qwVESTcbfanY2iJPQNoSz
…ation

Three januskey honesty/quality items.

B5 — runnable reversibility evidence. Add a property test
(crates/januskey-cli/tests/property_tests.rs) asserting the CNO round-trip
law execute∘undo ≡ identity on the filesystem, across all supported
operations (Delete/Modify/Move/Copy/Create) over random content: set up a
temp working tree + content/metadata stores, snapshot it, execute then undo
with a fresh executor, and assert the tree is byte-for-byte restored. This
is the honest substitute for the "formal proofs pending" badge. Chown is
excluded (undo unimplemented); we test the filesystem effect, not
OperationType::inverse (deliberately non-involutive, Copy⁻¹=Delete).

B2 — delete the legacy src/januskey/ monolith. It was a non-workspace,
pre-extraction duplicate of crates/januskey-cli (ARCHITECTURE.md labelled it
LEGACY). Removed it and repointed every reference (README, ARCHITECTURE,
EXPLAINME, docs/wiki/*, idrisiser/*.tsig) to crates/januskey-cli; simplified
the two contractile checks (Trustfile, Adjustfile) that scanned it — they
already preferred crates/januskey-cli and the src/januskey branches were
dead. src/abi/*.idr (the Idris ABI, outside src/januskey/) is untouched.

B8 — stop overstating obliteration. The module doc-comment claimed content
is "cryptographically unrecoverable"; overwrite-in-place cannot guarantee
physical erasure on SSD/CoW/journaling media (the caveat already lived in
.machine_readable/threat-model.a2ml). Mirror that honest wording into
obliteration.rs and soften the README "data loss impossible by construction"
to "resistant", with the obliteration exception called out.

Verified: cargo build --workspace clean; cargo test -p januskey --lib
26 passed; property_tests 4 passed (incl. the new CNO-law case); no dangling
src/januskey references remain; dashboard-check still green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015qwVESTcbfanY2iJPQNoSz
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 17, 2026 05:39
@hyperpolymath
hyperpolymath merged commit 007c7c2 into main Jul 17, 2026
21 of 22 checks passed
@hyperpolymath
hyperpolymath deleted the claude/project-scope-planning-8agyox branch July 17, 2026 05:40
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