Skip to content

Axiom flagship hardening — P1 soundness holes (WIP) - #46

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a
Jul 1, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

First hardening pass toward making Axiom.jl the estate Julia flagship and measuring-stick. Opened as a draft to accumulate the holes-first fixes from a full ground-truthed audit (soundness → doc reconciliation → estate tooling). This commit closes two confirmed P1 soundness holes.

G02 — vacuous NoNaN static "proof" (critical)

checker.jl::has_safe_operations() returned a bare true, so every NoNaN request on the static path was reported :proven regardless of the model's operations. A sound static NoNaN proof also requires a finite-input guarantee that cannot be established statically, so NoNaN now routes to empirical checking and has_safe_operations makes no false claim.

G01 — falsely-labelled certificate "signature" (critical; relabel)

certificates.jl emitted algorithm: "SHA256-HMAC" over an unkeyed SHA-256 digest — forgeable and misleadingly presented as authenticated. Relabelled honestly: algorithm: SHA-256, kind: content-digest, authenticated: false, plus an explanatory note; docstrings corrected. Authenticating hybrid Ed448+Dilithium5 signatures (matching the estate Trustfile and the tested opsm PQ crypto) are the tracked follow-up.

Regression guard

Added test/verification/soundness_tests.jl to the main suite so neither hole can silently reopen.

Verification (ran the tools; no self-grading)

  • Pkg.test() — 651 / 651 pass (642 prior + 9 new soundness assertions)
  • test/ci/certificate_integrity.jl — 6 / 6 pass

Scope / tracked follow-ups

Remaining Axiom P1: real hybrid signing (G01 auth layer), proof-import theorem-presence check (G03), @prove honest relabel (G04), Idris2 ABI ↔ zig-export reconciliation (G05). Broader flagship work: doc reconciliation, Aqua/JET/Documenter, RegistryCI, panic-attack static-analysis gate, RSR completeness. Registry and julianiser critical fixes land on their own branches.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1


Generated by Claude Code

… false cert signature label)

Holes-first pass from the Axiom flagship audit.

- checker.jl: has_safe_operations() returned bare `true`, so every NoNaN
  request on the static path was vacuously reported :proven. A sound static
  NoNaN proof needs a finite-input guarantee that cannot be established
  statically, so NoNaN now routes to empirical checking and has_safe_operations
  makes no false claim. (G02)
- certificates.jl: the JSON output hardcoded algorithm="SHA256-HMAC" over an
  unkeyed SHA-256 digest -- forgeable, and falsely presented as authenticated.
  Relabelled honestly (algorithm SHA-256, kind content-digest,
  authenticated=false, explanatory note); docstrings corrected. Authenticating
  hybrid Ed448+Dilithium5 signatures tracked for follow-up. (G01, relabel)
- Added test/verification/soundness_tests.jl to the main suite so neither hole
  can silently reopen.

Verified: full suite 651/651 pass; certificate_integrity CI file 6/6 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 02:57
@hyperpolymath
hyperpolymath merged commit 070905f into main Jul 1, 2026
9 checks passed
@hyperpolymath
hyperpolymath deleted the claude/axiom-jl-registry-infra-kr7t4a branch July 1, 2026 02:57
hyperpolymath added a commit that referenced this pull request Jul 1, 2026
… diary (#47)

## Summary

Follow-up to the merged #46 (which closed the first two P1 soundness
holes). This branch was **restarted from the post-merge `main`** — it
does not re-stack the squashed pilot. It closes three "proof honesty"
gaps and captures the initiative's decision record in-repo.

### G03 — proof-assistant import verification was fake (high)
`proof_export.jl` judged a Lean/Coq/Isabelle proof "complete" merely for
**lacking** `sorry`/`Admitted`/`oops` — so an empty file, or `theorem
foo : True := trivial`, passed as verified. Now a proof must contain
**at least one substantive** (non-vacuous, non-boilerplate)
theorem/lemma statement; empty/trivial proofs report `:incomplete`.
*(Fixing this exposed two pre-existing test fixtures that were
themselves vacuous `:= trivial` proofs — updated to substantive
statements.)*

### G04 — `@prove` overclaim (high)
`dsl/prove.jl` (+ `docs/wiki/Verification.md`) documented `@prove` as
"symbolic execution" / "formal verification", but it is a **substring
match on the printed AST**. Relabelled honestly (experimental heuristic;
**not** symbolic execution or a theorem prover; real proving is the
SMT/Idris2 path). No behaviour change — every remaining mention is now
an explicit negation.

### G05 — Idris2 ABI is a disconnected demo (high; honest relabel)
`src/Abi/*.idr` declare a generic surface that does **not** match the
~36 real `axiom_*` zig exports used by `src/backends/zig_ffi.jl`.
Labelled as an **illustrative scaffold** (not a proof of the production
FFI boundary) in each file + `ABI-FFI-README.md`, pointed at the real
boundary (`zig/` + `zig_ffi.jl`), and flagged the **orphan `ffi/zig/`
tree (zero `axiom_*` exports)** as a KNOWN ISSUE. Full ABI↔zig
connection is tracked follow-up (Idris2 is CI-only here).

### Design record captured online
`docs/design-diary/PEPYS-DESIGN-DIARY.adoc` (the running "Samuel Pepys"
decision log) and `docs/design-diary/ULTRAPLAN.adoc` (executive summary,
41-item gap register, phased plan, decision forks, estate wiring,
risks).

## Verification (independent re-run, not self-graded)
- `Pkg.test()` on the rebased base → **670 / 670 pass** (651 + 19 new
G03 assertions).
- Grep confirms no affirmative "symbolic execution" / "formal
verification" claim remains attached to `@prove`.

## Residuals (tracked)
Real hybrid **Ed448+Dilithium5** certificate signing (G01 auth layer,
reusing `opsm`'s `pqcrypto` crates), full Idris2-ABI↔zig connection
(G05), plus the broader flagship work (Aqua/JET/Documenter, RegistryCI,
panic-attack gate, RSR completeness, doc reconciliation).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1

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

---------

Co-authored-by: Claude <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