Description
Discovered while closing proof-debt in src/abi/Layout.idr (commit 02c2c85). Three pre-existing type errors in src/abi/Types.idr prevent the ABI modules from type-checking cleanly.
Failures
-
programStateSizeBytesnot accessible —Types.idr:265programStateSize : HasSize ProgramState programStateSizeBytes programStateSize = SizeProofError:
programStateSizeBytesis not accessible in this context.
Likely needspublic exportonprogramStateSizeBytes(currentlypublic exporton the binding declaration but accessibility flagged at theSizeProofsite — possibly namespace or reducibility issue). -
instructionSizeBytesnot accessible —Types.idr:280— same shape as above. -
Bits (ptrSize p)kind mismatch —Types.idr:321CPtr : Platform -> Type -> Type CPtr p _ = Bits (ptrSize p)Error: Mismatch between: Nat and Type.
BitsinData.Bitsis a type-class parameterised by aType, not a constructor taking aNat. Should probably useBits32/Bits64selected by the platform, or a different dependent bit-vector type.
Reproduction
idris2 --check --source-dir src src/abi/Layout.idr
or in isolation:
mkdir -p /tmp/az/AbsoluteZero/ABI
cp src/abi/{Types,Layout}.idr /tmp/az/AbsoluteZero/ABI/
cd /tmp/az && idris2 --check --source-dir . AbsoluteZero/ABI/Layout.idr
Notes
- The module-path mismatch (files in
src/abi/but declaredAbsoluteZero.ABI.*) is a separate build-config issue —ipkgmissing from repo root. That blocks a canonicalidris2 --buildinvocation entirely. Might be worth adding an.ipkgalongside this fix. - No
.ipkgfile exists anywhere in the repo — confirmed viafind. - Not related to proof debt; this is a preservation-of-types bug, separate from formal-verification work.
Activity
hyperpolymath commentedon Apr 18, 2026
Proposed fix is available in PR #3: #3
hyperpolymath commentedon Apr 18, 2026
Merged fix via PR #3.
docs(ond): add Observational Null Operations as a co-equal second pillar