Skip to content

MALT v0.0.7-rc.1

Pre-release
Pre-release

Choose a tag to compare

@BernardLowe BernardLowe released this 31 Jul 13:52
· 33 commits to main since this release
a4799c6

This is a prerelease for integration and verifier testing. MALT remains pre-v1, experimental, and not production-ready.

Release contract

The source tag is the authoritative release artifact. This candidate publishes:

  • the Go module at github.com/dewebprotocol/malt;
  • structured typed MALT roots in the private-use 0x30VSBB codec layout;
  • the malt.resolve/v0alpha1, malt.read/v0alpha1, and malt.map-proof/v0alpha1 verification profiles;
  • the experimental client-root profiles documented in the Client-Root Contract;
  • the frozen Resolve/Read conformance corpus v1 for structured version-2 roots; and
  • the frozen Resolve/Read conformance corpus v2 for version-3 roots.

MALTVersionID=3 is a wire-format version, not the source release version.

Highlights

Structured typed roots: 0x30VSBB

Typed MALT root codecs now use the project private-use 0x30VSBB layout, where V identifies the wire version, S the semantic kind, and BB the commitment backend suite. New constructors emit these version-3 codecs:

Semantic kind KZG IPA
Map 0x303101 0x303102
List 0x303201 0x303202

Decoders fail closed on unknown versions, semantics, backend suites, combinations, identity-hash sizes, and mixed-profile children. Structured version-2 roots remain readable and verifiable, but default constructors do not emit them.

4096-slot KZG semantic geometry

KZG Map and List nodes now use all 4096 commitment positions. KZG Maps consume SHA-256 keys as 12-bit radix digits. KZG Lists reserve position zero for authenticated metadata and expose 4095 content positions. IPA remains a 256-position suite, using 8-bit Map digits and 255 List content positions.

The same backend-sized geometry is used by semantic producers, materialization, and portable verification.

Verifiable Map non-membership

The new Map-proof contract verifies both membership and non-membership for KZG and IPA roots. An exact absent keyed relation can be authenticated by:

  • a proved empty radix slot;
  • a conflicting terminal leaf; or
  • a complete fixed-domain collision bucket.

Version-3 collision buckets authenticate their empty tail positions, enabling sound collision-bucket non-membership. This release adds MapProofRequest, MapProofResult, MapProver, VerifyMapProof, the malt.map-proof/v0alpha1 schemas, the terminal ProofList step map_absence, and the matching Go SDK and browser/WASM verification boundary.

Other changes

  • Add deterministic Resolve/Read conformance corpora for KZG and IPA.
  • Add complete-view client-root values, sdk/writer, exact candidate-root bundles, root-bound Map materialization witnesses, and receipt-gated writer sessions.
  • Add a unified browser writer WASM with isolated KZG and IPA workers.
  • Add request-scoped read and writer observations for diagnostics.
  • Narrow materializer and graph-writer dependencies to the capabilities used by each algorithm.
  • Rebuild a verified structured-version-2 complete view as version 3 before applying client-side changes.
  • Reject incomplete List materialization, noncanonical Map-proof coordinates, target relabeling, invalid UTF-8, stale intents, mismatched receipts, and mixed backend/version materialization.
  • Remove radix.ProveTimings, (*radix.Map).ProveWithTimings, the obsolete process-global logger package, the former graph/querypath helper, and the unused zap and multierr dependencies.

Compatibility

This is an intentional pre-v1 source- and wire-breaking release candidate.

v0.0.6 emitted the flat experimental codecs 0x300001 through 0x300004. The current decoder intentionally does not classify those roots as structured MALT roots. This release does not provide a flat-root migration layer; experimental roots and their materialized proof-serving state should be recreated.

Structured version-2 roots (0x302...) were introduced on main after v0.0.6 and are not v0.0.6 roots. They remain available for read, proof, and exact complete-view replay. New constructors emit version 3, and collision-bucket non-membership requires the version-3 fixed-domain bucket profile.

Removed Go APIs have no forwarding compatibility shims. The /v1 suffixes on client-root profiles version serialized experimental profiles; they do not declare MALT or its Go APIs stable at v1.

Known limits

  • Non-membership proves only whether one exact keyed relation is absent from a Map. It does not prove List-index, graph-path, object, payload-byte, or remote data absence.
  • Ordinary Read keeps its existing missing-key result, ErrQueryNotFound; there is no corresponding List non-membership API.
  • Collision-bucket non-membership is available only for version-3 fixed-domain buckets.
  • The browser/WASM verifier is the same Go verifier compiled for WebAssembly, not an independent cryptographic implementation.
  • Client-root bundles and materialization receipts are not portable state-transition, publication, freshness, or trust proofs.

Validation

  • Tagged commit: a4799c63d167a2ca361c84967f6484bff3bf5471
  • Exact-commit CI: Go / Test and vet, Push on main, and Code Quality all succeeded.
  • Local release-range, formatting, full Go test, 32-bit KZG/IPA, vet, and build gates passed on the tagged commit.
  • Verifier WASM passed 49 Resolve/Read plus 8 Map-proof vectors with both backends, and 25 plus 4 vectors in each KZG-only and IPA-only run.
  • Writer WASM passed KZG and IPA stateless/session smoke tests plus the dual-Worker smoke test.
  • A temporary external Go module compiled against the tagged tree while importing the module-root malt, protocol, sdk/verifier, and auth/arcset/materializer packages.

This is a source-only release. No binary or WASM assets are attached; consumers build from source.