Skip to content

fix(abi): close last Tier2 assert_total via fuel recursion + FP classifications - #56

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/admiring-dijkstra-cdu2rl
Jun 11, 2026
Merged

fix(abi): close last Tier2 assert_total via fuel recursion + FP classifications#56
hyperpolymath merged 1 commit into
mainfrom
claude/admiring-dijkstra-cdu2rl

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Part of the estate loop repair (hyperpolymath/hypatia#458).

What

  1. src/interface/abi/Tier2.idr: bufferToList recursed on an increasing Int index and silenced the totality checker with assert_total — the one remaining proof escape in the Tier-2 ABI, contradicting the zero-proof-escape contract from feat(abi): Tier-2 Idris bindings + retire legacy Foreign + close L10 transitive cycle #52's merge gate (and flagged ProofDrift High by panic-attack). Now it recurses structurally on a remaining-byte Nat fuel (integerToNat (cast n)): semantics unchanged (n <= 0[], bytes read [0, n) in order), and the totality checker accepts it directly. The proof-corpus CI job is the verifying gate for this change.

  2. audits/assail-classifications.a2ml: audited FFI residuals from a fresh panic-attack 2.5.5 scan — the documented unsafe blocks in recompute-wasm and attest (both carry in-file UNSAFE POLICY sections and deny(clippy::undocumented_unsafe_blocks); decision logic lives in the forbid(unsafe_code) vcltotal-parse crate) and the Zig C-ABI bridge cast. The assert_total finding is fixed, not classified.

Context

vcl-ut had no entry at all in the canonical scan store (coverage gap) — fixed estate-wide by hypatia#458's estate-rescan workflow. Fresh scan after this change: unsuppressed non-heuristic Critical/High = 0.

https://claude.ai/code/session_01EzjC8MEx3Kzf3pdMhaQSks


Generated by Claude Code

…ifications

bufferToList now recurses structurally on a remaining-byte Nat fuel
instead of asserting totality on an increasing Int index. Semantics
unchanged (n <= 0 yields [], bytes read [0, n) in order); the totality
checker accepts it directly, restoring the proof-corpus zero
proof-escape contract that #52's merge gate promised.

audits/assail-classifications.a2ml records the audited FFI residuals
from a fresh panic-attack 2.5.5 scan: the documented unsafe blocks in
recompute-wasm and attest (both files carry in-file UNSAFE POLICY
sections and deny(clippy::undocumented_unsafe_blocks)) and the Zig
C-ABI bridge cast. The assert_total finding is fixed, not classified.

vcl-ut also gains scan coverage for the first time: it had NO entry in
verisimdb-data/scans at all (coverage gap fixed estate-wide by
hypatia's new estate-rescan workflow).
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 11, 2026 22:41
@hyperpolymath
hyperpolymath merged commit edd489e into main Jun 11, 2026
126 of 128 checks passed
@hyperpolymath
hyperpolymath deleted the claude/admiring-dijkstra-cdu2rl branch June 11, 2026 22:42
hyperpolymath pushed a commit that referenced this pull request Jun 12, 2026
…usion

Follow-up to #56 (merged before these CI fixes were pushed):

1. reuse-lint: audits/assail-classifications.a2ml lacked a copyright
   notice — adds the standard line alongside the SPDX identifier.

2. dogfood-gate: the registry is panic-attack's S-expression
   user-classification dialect, not the TOML-like manifest A2ML the
   gate validates. Excluded via the validate action's paths-ignore
   (defaults restated — a custom value replaces them) and the
   detect-count find.
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