You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
id: P9.3b provenance records digests but no human-readable compiler version #1315
Gap found by the Phase 9 validation audit (#1076, slice 2)
The Phase 9 plan (.opencode/plans/phase-9-portable-platform.md, P9.3b status) records: source builds attach server-observed compiler/platform/source digests, target, and stable arguments to the install event (PR #225), but "human-readable compiler version remains open".
Verified on current main (dd4ee06e lineage) during the #1076 audit: provenance is digest-based (install_program_with_provenance, ModuleProvenance in pkgs/id) with no human-readable compiler version string recorded in the install event / module info. An operator reading module info cannot tell which compiler version produced a module without resolving a digest out-of-band.
Acceptance criteria
The install event / module-info for a source build records a human-readable compiler version (e.g. the roc --version string of the compiler that built it) alongside the existing digests.
A test asserts the version string is present and survives restart/checkpoint (same path the digests already take).
Digests remain the trust-relevant fields; the version string is informational and labelled as such.
Found by: queue task 1257 slice 2 (validation audit of #1076). Related: #541 (F11.18 pinned compiler) is adjacent but distinct — it pins/rebuilds; this is about recording the version in provenance.
Evidence (current main a43e944, verified 2026-11-02)
pkgs/id/src/world/mod.rs:420 — SourceBuildProvenance now carries pub compiler_version: String (line 432), documented: "Version string the compiler binary reports for itself (roc version), recorded alongside its digest (id: F12.17 trust and provenance — module signatures against an admin trust list #1069): the digest identifies the exact bytes, the version is the human-legible name for them." It is #[serde(default)] so pre-field records still deserialize.
pkgs/id/src/world_compile.rs:384 — probe_compiler_version() runs the compiler's version probe; the result is populated into ModuleProvenance::SourceBuild(...) at world_compile.rs:330-333 on every source build, alongside compiler_blake3, platform_blake3, source_blake3, target, and stable arguments.
Tests cover it: probe behaviour at world_compile.rs:795-816 and provenance fixtures at world/tests.rs:46-54 (compiler_version: "roc-test 0.0.0").
The gap this issue recorded against the Phase 9 audit no longer exists; an operator reading module provenance now sees the compiler's own version string next to its digest.
Activity
developing-today commentedon Oct 27, 2026
CODE-427
dezren39 commentedon Nov 2, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 2, 2026
🤖 Agent note · done
Evidence (current main a43e944, verified 2026-11-02)
pkgs/id/src/world/mod.rs:420—SourceBuildProvenancenow carriespub compiler_version: String(line 432), documented: "Version string the compiler binary reports for itself (roc version), recorded alongside its digest (id: F12.17 trust and provenance — module signatures against an admin trust list #1069): the digest identifies the exact bytes, the version is the human-legible name for them." It is#[serde(default)]so pre-field records still deserialize.pkgs/id/src/world_compile.rs:384—probe_compiler_version()runs the compiler's version probe; the result is populated intoModuleProvenance::SourceBuild(...)at world_compile.rs:330-333 on every source build, alongsidecompiler_blake3,platform_blake3,source_blake3, target, and stable arguments.compiler_version: "roc-test 0.0.0").The gap this issue recorded against the Phase 9 audit no longer exists; an operator reading module provenance now sees the compiler's own version string next to its digest.