Project Manifest v3
September 10, 2026 ยท View on GitHub
Audience: language users, tool authors, and compiler contributors.
Status: implemented bounded profile; HOSTED GREEN under the v0.4.0 release baseline. Safe Windows v2 package publication, npm registry publication and broader public support remain separate.
Project Manifest v3 is the additive public Project boundary for the bounded
useful-data.v1 profile. It does not
reinterpret or re-render Project Manifest v1 or v2.
Canonical manifest
The canonical manifest has exactly eight assignments in this order:
schema = "semaprax.project.v3"
name = "binary-frame"
version = "1.0.0"
profile = "useful-data.v1"
entry = "binary_frame.app"
sources = ["src/app.spx", "src/core.spx", "src/frame.spx", "src/tests.spx"]
web_exports = ["binary-frame.checksum", "binary-frame.combine-length", "binary-frame.has-magic", "binary-frame.length"]
tests = ["binary_frame.tests"]
ProjectProfile is closed. Schema v3 admits exactly useful-data.v1; profile
and schema confusion rejects rather than falling back to a boolean or legacy
route. V1 and v2 canonical bytes and diagnostics remain independently frozen.
Linking and semantic authority
One held Project snapshot authenticates the manifest and complete source set. The profile links the exact entry closure, sole test closure, and every selected stable-ID Web export root. The linker rebuilds and validates compiler-owned byte-operation call-index facts, slice provenance/value facts, capacity facts, and cleanup instead of trusting or flattening source-shaped data. The linked test closure uses the same useful-data profile as the entry; it is not replaced by a scalar surrogate.
Semantic Workspace/Project source preflight and replay admit source Graph schemas v10 through v17. This does not widen Workspace Patch or Change evidence admission: their existing schema gates remain separate and fail closed.
Public Web and npm boundary
Selected public functions accept only borrowed Slice<u8> inputs and return
i64, bool, or usize. Internal fixed arrays and owned Bytes may occur in
the authenticated closure, but are not public JavaScript return carriers.
Functions may carry requires and ensures contracts; a false contract
surfaces to JavaScript as SemapraxDataError with domain
semaprax.contract.v1 and code 9 or 10, through the same status global as an
arithmetic failure, and the semantic recipe records the contracts.
The Core-Wasm adapter uses fixed memory and checked offset/length inputs. The
generated JavaScript facade accepts an ordinary attached, fixed-length
Uint8Array; it rejects shared, resizable, detached, differently typed, and
coercible inputs. It snapshots every accepted argument before reusing public
scratch, enforces cumulative input bounds, and authenticates the exact Wasm and
data-export metadata before invocation. TypeScript exposes the corresponding
exact Uint8Array and scalar signatures.
The npm route emits exactly:
app.wasmsemaprax.jssemaprax.bindings.jssemaprax.bindings.d.tssemaprax.data-exports.jsonpackage.json
The context-bound semaprax.project-npm-build.v2 carrier binds the retained
Project facts, canonical data-export plan, ordered artifacts, bytes, digests,
and payload digest. Independent inspection proves compiler consistency and
rejects tampering, but does not authenticate self-claimed Project authority or
mint a publishable build. Only an opaque build prepared from the retained
Project snapshot may authorize publication.
Unix publication resolves and authenticates the parent once and performs handle-relative create-new effects without following substituted paths or clobbering existing bytes. The v2 publication route deliberately fails closed on Windows until the public crate has an equivalently strong handle-relative primitive. This asymmetry is a safety boundary, not Windows support evidence.
Executable evidence
examples/binary-frame-project exercises a fixed magic array, Slice<u8>,
bounded while, total indexed reads, owned Bytes copy/move/drop behavior,
explicit stable-ID exports, and a useful-data test closure. The maintained
regressions cover canonical v3 parsing/rendering and v1/v2 preservation,
graph/linking replay, interpreter test execution, Core-Wasm emission, strict
JavaScript and TypeScript generation, carrier replay/tamper rejection, Unix
publication, and offline pack/install followed by compiler-free installed
consumption. The admitted release corpus is HOSTED GREEN for v0.4.0.
That evidence does not establish safe Windows v2 publication, npm registry behavior, package signing/provenance, general compatibility resolution, Component Model support, or production readiness. Those are separate support or product gates; the broader completion-matrix status remains Partial.