Skip to content

feat: faces same-cube verifier (invariant-path 'faces' profile)#32

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/lucid-cray-4a22dp
Jun 18, 2026
Merged

feat: faces same-cube verifier (invariant-path 'faces' profile)#32
hyperpolymath merged 1 commit into
mainfrom
claude/lucid-cray-4a22dp

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Casts invariant-path as the same-cube verifier for the AffineScript face family — grounding the load-bearing claim "different faces, same cube" as an invariant-path claim path.

How (doc-profile shape — no Rust/CLI change)

  • profiles/faces.md — the faces profile: claim = face source →(preview-* transform)→ canonical cube; invariant = all faces of one program yield the identical cube.
  • examples/same-cube/greet/one program in all six faces (identical semantics, unlike the demonstrative affinescript examples which differ per face). canonical + rattle/jaffa/pseudo/lucid/cafe.
  • scripts/verify-same-cube.sh — detects each file's face from its face: pragma, runs the matching preview-*, normalises (modulo comments/whitespace), and grounds cross-face equality vs the canonical reference; emits Grounded/Ungrounded JSONL claim records. SKIPs gracefully (exit 0) when no affinescript binary is reachable (grounding happens in CI).
  • just same-cube recipe; DESIGN/README/examples wiring.

Why it matters

Per-face snapshot tests (affinescript/tests/faces/) catch drift within a face but never compare face A's cube against face B's. This grounds the cross-face equality directly and, true to invariant-path's identity, acts as a claim-path debugger — a DIFF locates exactly which face breaks the cube.

Licence

New files MPL-2.0 (matching the repo's file headers). ⚠️ Unrelated flag: the repo README still shows a PMPL-1.0 badge over an MPL-2.0 header — drift to reconcile separately (not touched here).

🤖 Generated with Claude Code

https://claude.ai/code/session_01KPG9mEQXFyA3k7NWAzMNMr


Generated by Claude Code

Ground the AffineScript 'different faces, same cube' invariant: a profile
(profiles/faces.md), a same-cube corpus (examples/same-cube/greet — one program
in all six faces), and a verifier (scripts/verify-same-cube.sh) that runs each
face's preview-* lowering, normalises, and grounds cross-face equality against
the canonical reference, emitting invariant-path claim records. Per-face
snapshot tests catch drift within a face; this catches divergence between
faces. Doc-profile shape — no Rust/CLI change. New files MPL-2.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KPG9mEQXFyA3k7NWAzMNMr
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 18, 2026 10:29
@hyperpolymath
hyperpolymath merged commit 95fb310 into main Jun 18, 2026
13 checks passed
@hyperpolymath
hyperpolymath deleted the claude/lucid-cray-4a22dp branch June 18, 2026 10:30
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