Stabilize packaged release build graph

This commit is contained in:
Meta Vens 2026-08-09 05:46:51 +01:00
commit fe6bf006d3
5 changed files with 138 additions and 47 deletions

View file

@ -480,44 +480,29 @@ fn build_required_release_siblings(
target_dir.join(target).join("release").join(file_name),
);
}
let mut command = std::process::Command::new(cargo);
command
.arg("build")
.arg("--release")
.arg("--manifest-path")
.arg(&manifest)
.arg("--target-dir")
.arg(&target_dir)
.arg("--target")
.arg(target)
.arg("--locked")
.arg("--bins");
let mut command = release_build_command(cargo, &manifest, &target_dir, target, &required)?;
let status = command
.status()
.context("failed to start Epiphany release bundle build")?;
if !status.success() {
bail!("Epiphany release bundle build failed");
}
let coordinator_status = std::process::Command::new(cargo)
.arg("build")
.arg("--release")
.arg("--manifest-path")
.arg(&manifest)
.arg("--target-dir")
.arg(&target_dir)
.arg("--target")
.arg(target)
.arg("--locked")
.arg("--features")
.arg("coordinator-runtime")
.arg("--bin")
.arg("epiphany-mvp-coordinator")
.status()
.context("failed to start feature-gated coordinator release build")?;
if !coordinator_status.success() {
bail!("feature-gated coordinator release build failed");
}
let state_steward_status = std::process::Command::new(cargo)
Ok(BuiltReleaseSiblings {
binaries: outputs,
_graph_lock: graph_lock,
})
}
fn release_build_command(
cargo: &std::ffi::OsStr,
manifest: &Path,
target_dir: &Path,
target: &str,
required: &[(&'static str, String)],
) -> Result<std::process::Command> {
let mut command = std::process::Command::new(cargo);
command
.env("CARGO_INCREMENTAL", "0")
.arg("build")
.arg("--release")
.arg("--manifest-path")
@ -528,18 +513,19 @@ fn build_required_release_siblings(
.arg(target)
.arg("--locked")
.arg("--package")
.arg("epiphany-release-bundle")
.arg("--package")
.arg("epiphany-core")
.arg("--bin")
.arg("epiphany-state")
.status()
.context("failed to start state-steward release build")?;
if !state_steward_status.success() {
bail!("state-steward release build failed");
.arg("--features")
.arg("epiphany-release-bundle/coordinator-runtime");
for (_, file_name) in required {
let binary_name = Path::new(file_name)
.file_stem()
.and_then(std::ffi::OsStr::to_str)
.with_context(|| format!("packaged binary name is invalid: {file_name}"))?;
command.arg("--bin").arg(binary_name);
}
Ok(BuiltReleaseSiblings {
binaries: outputs,
_graph_lock: graph_lock,
})
Ok(command)
}
fn verify_release_bundle_lock(repo: &Path, cargo: &std::ffi::OsStr) -> Result<()> {
@ -1144,6 +1130,57 @@ mod tests {
.unwrap_or_else(|error| panic!("release bundle lockfile is not frozen: {error:#}"));
}
#[test]
fn packaged_release_uses_one_deterministic_cargo_graph() {
let required = required_packaged_release_binaries("x86_64-unknown-linux-gnu");
let command = release_build_command(
std::ffi::OsStr::new("cargo"),
Path::new("Cargo.toml"),
Path::new("target"),
"x86_64-unknown-linux-gnu",
&required,
)
.expect("release build command");
let args = command
.get_args()
.map(|arg| arg.to_string_lossy().into_owned())
.collect::<Vec<_>>();
let envs = command
.get_envs()
.map(|(key, value)| {
(
key.to_string_lossy().into_owned(),
value.map(|value| value.to_string_lossy().into_owned()),
)
})
.collect::<BTreeMap<_, _>>();
assert_eq!(envs.get("CARGO_INCREMENTAL"), Some(&Some("0".to_string())));
assert_eq!(args.iter().filter(|arg| *arg == "--bin").count(), 23);
assert_eq!(args.iter().filter(|arg| *arg == "--package").count(), 2);
assert!(
args.windows(2)
.any(|pair| pair == ["--package", "epiphany-release-bundle"])
);
assert!(
args.windows(2)
.any(|pair| pair == ["--package", "epiphany-core"])
);
assert!(
args.windows(2)
.any(|pair| pair == ["--features", "epiphany-release-bundle/coordinator-runtime"])
);
assert!(
args.windows(2)
.any(|pair| pair == ["--bin", "epiphany-mvp-coordinator"])
);
assert!(
args.windows(2)
.any(|pair| pair == ["--bin", "epiphany-state"])
);
assert!(!args.iter().any(|arg| arg == "--bins"));
}
#[test]
fn resident_cognition_roles_keep_their_owning_manifests() {
let root_manifest = fs::read_to_string(

View file

@ -1923,3 +1923,25 @@ vendored Starlark's older `hashbrown` integration; Rust rejected the missing
release-target check traversing Starlark through Codex login and
`epiphany-openai-auth-spine` completed successfully in 3m16s. This is lockfile
compatibility authority, not a source patch or relaxed gate.
### Single deterministic packaged build authority
The original packaged-release path invoked Cargo three times against one target
directory: the broad root binary graph, the coordinator feature graph, and the
core-owned state steward. Cargo correctly rebuilt when each command changed the
selected feature set, so the cache oscillated instead of warming. Exact source
`e9465c11` took 24m22s cold (17m03s root plus 6m38s state) and 28m30s on an
identical cached rerun (21m04s root, 34.62s coordinator, 6m42s state).
The two runs also yielded different valid authenticated releases. Twenty-one of
23 binaries were byte-identical; only the two `epiphany-openai-runtime`
binaries differed, including different ELF build IDs and code bytes. Release
incremental codegen is therefore not an admissible input to witnessed output.
`build_required_release_siblings` now has one process owner. It selects
`epiphany-release-bundle` and `epiphany-core`, selects
`epiphany-release-bundle/coordinator-runtime` once, names all 23 required
binaries explicitly, and sets `CARGO_INCREMENTAL=0`. Follow-up coordinator and
state-steward Cargo commands are forbidden writers and have been deleted. All
19 focused packaged-release tests pass. Exact Linux packaging plus a
byte-identical warm rerun remain the verification boundary.

View file

@ -1,5 +1,37 @@
# Fresh workspace handoff
## Deterministic single release graph — 2026-08-09
Exact pushed source `e9465c11208d648440999903770cbde245c1da3b`
produced authenticated release
`sha256-5f90294fb037ff777ca99f345e0f4b1e082b176c35bd6e16a60b46d5a687c0cb`
with witness
`sha256-403a4dd4705772d8d588f3abedb336436b9f1b4ebc037b86efbc5995f5d6a291`.
Native inspection accepted the exact source and all 23 required binaries. The
packaged `epiphany-state` hash is
`8e5e0edd3af59a9f8710d4b6b3a7fbe8243f1002acd6e1d4c415e8053d0cd7c2`.
The cold package took 24m22s: 17m03s for the root graph and 6m38s for the
separate state-steward graph. The identical cached rerun was worse at 28m30s:
21m04s for the root graph, 34.62s for the coordinator graph, and 6m42s for the
state-steward graph. It also produced a different authenticated release,
`sha256-4700e984410e0c8e735d1fcecec282235ed5d096d20b6dbbdb206a83636228fa`,
with witness
`sha256-f71519f7a27a9588715daf9f11d33031b2680659aa405c29807a39efcfcce373`.
Twenty-one binaries were byte-identical; only `epiphany-model-runtime` and
`epiphany-persona-service`, both from `epiphany-openai-runtime`, changed. The
old packager was oscillating one target cache through three feature graphs,
and incremental release codegen made the authenticated output nondeterministic.
The source cut now uses one Cargo command for both first-party packages, the
coordinator feature, and all 23 explicit binaries, with `CARGO_INCREMENTAL=0`.
The separate coordinator and state-steward build authorities are deleted. All
19 focused packaged-release tests pass. The cold Windows harness took 3m38s;
the final source rerun compiled in 47.87s and executed in 0.83s. Commit and push
this cut, then require an exact Linux package and an identical warm rerun with
both materially improved time and exact release/witness equality before
publication.
## Unified Cargo authority and shipped state steward — 2026-08-09
The first exact `6808f3f5` package attempt failed before release construction:

Binary file not shown.

View file

@ -35,10 +35,10 @@ invariants:
- Evidence and git retain history; this map retains only state that changes future decisions.
current_status:
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. The persistent c005 Linux body proves heartbeat, Self coordination, governed Eyes-to-Modeling cognition, causal routing, native Imagination, dedicated Mind adoption, and typed Hands relinquishment without external consequence. Self causally demotes pre-relinquishment CRRC history while preserving raw operator sight. One root Cargo workspace and lock now own all first-party dependency resolution; the core-owned state steward joins the witnessed release as a required 23rd binary. Yggdrasil remains the small public crossing body and is not a release forge. Exact 23-binary packaging, resident crash/restart, long-duration plateau, log ownership, and stable Starfire firewall ownership remain open.
latest_phase: Seven child Cargo locks and three dead child patch declarations were deleted; vendor workspaces remain explicitly excluded. The policy regression reruns warm in 4.47s, core-owned epiphany-state built in 23.20s, and all 18 release-contract tests pass. The first exact 6808f3f5 package failed before release construction because fresh lock resolution selected allocative 0.3.6, incompatible with vendored Starlark's hashbrown integration. Root lock authority now retains the previously proven allocative 0.3.4, allocative_derive 0.3.3, and ctor 0.1.26. A locked release-target check through Starlark, Codex login, and epiphany-openai-auth-spine passes in 3m16s. No failed release or witness exists.
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. The persistent c005 Linux body proves heartbeat, Self coordination, governed Eyes-to-Modeling cognition, causal routing, native Imagination, dedicated Mind adoption, and typed Hands relinquishment without external consequence. Self causally demotes pre-relinquishment CRRC history while preserving raw operator sight. One root Cargo workspace and lock own all first-party dependency resolution, and an authenticated exact-source release now contains all 23 required binaries including the core-owned state steward. Deterministic warm packaging, resident crash/restart, long-duration plateau, log ownership, and stable Starfire firewall ownership remain open. Yggdrasil is the small public crossing body, never the release forge.
latest_phase: Exact pushed source e9465c11208d648440999903770cbde245c1da3b produced authenticated release sha256-5f90294fb037ff777ca99f345e0f4b1e082b176c35bd6e16a60b46d5a687c0 with witness sha256-403a4dd4705772d8d588f3abedb336436b9f1b4ebc037b86efbc5995f5d6a291 and 23 inspected binaries. Its nominally warm identical rerun was slower and produced a different valid release: the old three-command packager oscillated Cargo feature graphs, while release incremental codegen changed the two epiphany-openai-runtime binaries. Source now assigns all 23 binaries across both first-party packages to one Cargo command with coordinator-runtime selected once and CARGO_INCREMENTAL=0. All 19 focused packaged-release tests pass; corrected exact Linux packaging and byte-identical warm proof remain open.
operational_state:
local_worktree: unified_lock_compatibility_repair_proven_pending_commit
local_worktree: single_release_graph_and_deterministic_codegen_proven_pending_commit
operator_wireguard: restored
yggdrasil: canonical_small_public_crossing_body
starfire: temporary_epiphany_cognition_body
@ -68,8 +68,8 @@ current_status:
starfire_linux_modeling_peak: 109887488_bytes_resident_body_plus_modeling_circuit
yggdrasil_epiphany_service_contract: repaired_in_gamecult_ops_812b427_not_installed
resident_physiology: c005_swarm_with_217dd_and_bd96305e_worker_helpers_running
unresolved_authority: The repaired unified lock has not yet been packaged from a clean commit, so the required 23-binary release and identical warm witness remain unproven. The Docker contract still depends on explicit target and Cargo-home bindings, though the native release packager owns them correctly. Repository Body observation still performs two authenticated full-tree Git index/manifest passes; exact 217dd packaged observer evidence improved the same unchanged Body boundary to 94.521 seconds. Execute-mode workers require a persistent process body. Keyed storage has not earned live migration. One Discord consequence remains blocked by the absent Yggdrasil credential. Resident stdout/stderr logs remain an unbounded supervisor-owned surface.
next_action: Commit and push the proven lock compatibility repair, advance the clean Linux package source, package all 23 required binaries once, and rerun identically warm. Publish only after exact witness validation. Then resume resident crash/restart, retention, and endurance work from awaitFrontierProposal without recreating relinquished route 817bf422.
unresolved_authority: The e9465c11 release proves exact-source 23-binary inventory and witness inspection, but its identical cached rerun falsified deterministic warm packaging. The single-command, non-incremental authority cut is source- and test-proven but not yet exact-package-proven. The Docker contract still depends on explicit target and Cargo-home bindings, though the native release packager owns them correctly. Repository Body observation still performs two authenticated full-tree Git index/manifest passes; exact 217dd packaged observer evidence improved the same unchanged Body boundary to 94.521 seconds. Execute-mode workers require a persistent process body. Keyed storage has not earned live migration. One Discord consequence remains blocked by the absent Yggdrasil credential. Resident stdout/stderr logs remain an unbounded supervisor-owned surface.
next_action: Commit and push the deterministic single-graph packaging cut, package its exact source, then rerun identically warm and require both materially improved warm time and exact release/witness equality before publication. Resume resident crash/restart, retention, and endurance work from awaitFrontierProposal without recreating relinquished route 817bf422 only after that proof.
active_subgoals:
- Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually.