Repository navigation
0.28.1
Security (UPDATE REQUIRED)
0.28.0 and earlier are affected on the VM backend (mlog serve runs the bytecode VM by default since 2026-09-21) — update required. The consolidated audit d63cc1d (2026-10-04) found two server-path divergences; both were honestly named in the b678def commit body (№574.1) before the fix existed, and both are closed by the wave-29 security wave (the dispatch gh#1004; the wave-29 rule: the gates read the truth — fact_open_high_server 0 → 2 → 1 → 0).
- X-1 (High) — the guard bypass (№581, gh#995, PR #1007): a bare
respond*/respond_html*call in a NON-tail position of a route body did NOT stop route execution on the VM backend — the TW answered immediately from any block, the VM compiled the call withInstruction::Pop, so the guard patternif is_admin(...) == false { respond("403", "forbidden") }silently FELL THROUGH to the protected code (an unauthorized caller reached the protected handler). Fixed: theRESPOND_NOT_TERMINALsemantic gate refuses every such program at startup on BOTH backends (fail-closed); the migration is one word —return respond(...). The fix/audit date: 2026-10-04. - X-2 (Medium) — the leftover-local data leak (№582, gh#996, PR #1008): a route/branch body whose final statement is a
let/assignment made the VM's route epilogue pop the LAST LOCAL SLOT and serialize it as the response body (route { let row = query_row(...) }returned the row to the caller; the interpreter answered the plain200 OK). Fixed: thePushUnitroute-epilogue invariant — the body exit never reads a local slot; the fall-through answers the same shared default as the interpreter lane. The fix/audit date: 2026-10-04.
The honest-boundary trail: b678def (№574.1) named both divergences in the commit body; the wave-29 dispatch (gh#1004) made the gates read that truth; the release-block label discipline (ADR-0179 §4) held until this live tag. The stage-2 parity step (the VM serves respond in ANY position — №584) and the route-body differential-fuzzer lane (№585) follow in the 0.29 cycle.
Assets and provenance
mlog-linux-x86_64— the release binary (cargo build --release --locked -p metalogos-server --bin mlog; the exact toolchain is recorded in BUILD-INFO.txt).mlog-linux-x86_64.cdx.json— CycloneDX SBOM describing exactly that binary.SHA256SUMS— digests of the binary, the SBOM and BUILD-INFO.- Two Sigstore attestations via GitHub artifact attestations: the SLSA build provenance and the SBOM attestation bound to the same binary subject.
Built from the tag v0.28.1 (d5af542), the version lockstep 0.28.1 in the workspace manifests (№583, gh#997, PR #1010).
The post-publication fact sync: the release-block carrier (#997) closed on this live tag per its own condition; fact_open_high_server 1 → 0 in both goals files, the [0.28.1] CHANGELOG date, the REALITY §6.14 release state — the syncing PR #1024 (merged 2026-10-05; ADR-0181 §4.1 step 1 — the syncing PR linked from the release notes).