Close failed worker process authority atomically
This commit is contained in:
parent
53793ae935
commit
7637b1cf0e
7 changed files with 213 additions and 24 deletions
|
|
@ -1216,7 +1216,7 @@ fn worker_process_attempt_is_terminal(cache: &CultCache, job_id: &str) -> Result
|
|||
.is_some_and(|claim| {
|
||||
matches!(
|
||||
claim.status.as_str(),
|
||||
"terminal-death" | "terminal-unactivated"
|
||||
"terminal-death" | "terminal-unactivated" | "terminal-failure"
|
||||
)
|
||||
}))
|
||||
}
|
||||
|
|
@ -1248,7 +1248,10 @@ fn terminal_runtime_link_for_binding(
|
|||
let Some(claim) = crate::runtime_worker_process_claim(runtime_store, &link.runtime_job_id)? else {
|
||||
return Ok(None);
|
||||
};
|
||||
if !matches!(claim.status.as_str(), "terminal-death" | "terminal-unactivated") {
|
||||
if !matches!(
|
||||
claim.status.as_str(),
|
||||
"terminal-death" | "terminal-unactivated" | "terminal-failure"
|
||||
) {
|
||||
return Ok(None);
|
||||
}
|
||||
let terminal_authority_id = claim
|
||||
|
|
|
|||
|
|
@ -1348,7 +1348,7 @@ pub fn recover_dead_resident_typed_worker(
|
|||
return Ok(false);
|
||||
};
|
||||
match claim.status.as_str() {
|
||||
"terminal-death" | "terminal-unactivated" => return Ok(true),
|
||||
"terminal-death" | "terminal-unactivated" | "terminal-failure" => return Ok(true),
|
||||
"terminal-result" => return Ok(false),
|
||||
"claimed" | "active" => {}
|
||||
_ => return Err(anyhow!("typed worker process claim has invalid status")),
|
||||
|
|
|
|||
|
|
@ -10457,7 +10457,10 @@ pub fn runtime_typed_request_attempt_exists(
|
|||
.iter()
|
||||
.filter(|launch| {
|
||||
claims.get(&launch.job_id).is_none_or(|claim| {
|
||||
!matches!(claim.status.as_str(), "terminal-death" | "terminal-unactivated")
|
||||
!matches!(
|
||||
claim.status.as_str(),
|
||||
"terminal-death" | "terminal-unactivated" | "terminal-failure"
|
||||
)
|
||||
})
|
||||
})
|
||||
.any(|launch| match request {
|
||||
|
|
@ -11128,6 +11131,19 @@ pub fn complete_runtime_job(
|
|||
options.result_id
|
||||
));
|
||||
}
|
||||
let event_id = format!("event-job-completed-{}", options.job_id);
|
||||
if cache.get::<EpiphanyRuntimeEvent>(&event_id)?.is_some() {
|
||||
return Err(anyhow!(
|
||||
"runtime job completion event {:?} already exists",
|
||||
event_id
|
||||
));
|
||||
}
|
||||
let snapshot = cache.snapshot_envelopes();
|
||||
let job_envelope = snapshot
|
||||
.iter()
|
||||
.find(|entry| entry.r#type == EpiphanyRuntimeJob::TYPE && entry.key == options.job_id)
|
||||
.cloned()
|
||||
.ok_or_else(|| anyhow!("runtime job lost its exact envelope"))?;
|
||||
let terminal_status = terminal_status_for_verdict(&options.verdict);
|
||||
job.status = terminal_status;
|
||||
job.updated_at = options.completed_at.clone();
|
||||
|
|
@ -11147,11 +11163,9 @@ pub fn complete_runtime_job(
|
|||
artifact_refs: options.artifact_refs,
|
||||
metadata: BTreeMap::new(),
|
||||
};
|
||||
cache.put(&job.job_id, &job)?;
|
||||
cache.put(&result.result_id, &result)?;
|
||||
let event = EpiphanyRuntimeEvent {
|
||||
schema_version: RUNTIME_SPINE_SCHEMA_VERSION.to_string(),
|
||||
event_id: format!("event-job-completed-{}", options.job_id),
|
||||
event_id,
|
||||
occurred_at: options.completed_at,
|
||||
event_type: "job.completed".to_string(),
|
||||
source: "runtime-spine".to_string(),
|
||||
|
|
@ -11163,7 +11177,56 @@ pub fn complete_runtime_job(
|
|||
),
|
||||
metadata: BTreeMap::from([("resultId".to_string(), result.result_id.clone())]),
|
||||
};
|
||||
cache.put(&event.event_id, &event)?;
|
||||
let mut expected = vec![job_envelope];
|
||||
let mut writes = vec![
|
||||
cache.prepare_entry(&job.job_id, &job)?.0,
|
||||
cache.prepare_entry(&result.result_id, &result)?.0,
|
||||
cache.prepare_entry(&event.event_id, &event)?.0,
|
||||
];
|
||||
let claim_id = worker_process_claim_id(&result.job_id);
|
||||
if let Some(claim) = cache.get::<EpiphanyRuntimeWorkerProcessClaim>(&claim_id)? {
|
||||
match claim.status.as_str() {
|
||||
"active" => {
|
||||
let claim_envelope = snapshot
|
||||
.iter()
|
||||
.find(|entry| {
|
||||
entry.r#type == EpiphanyRuntimeWorkerProcessClaim::TYPE
|
||||
&& entry.key == claim_id
|
||||
})
|
||||
.cloned()
|
||||
.ok_or_else(|| anyhow!("runtime worker completion lost its claim envelope"))?;
|
||||
let mut terminal = claim;
|
||||
if let Some(reorient) =
|
||||
cache.get::<EpiphanyRuntimeReorientWorkerResult>(&result.job_id)?
|
||||
{
|
||||
terminal.status = "terminal-result".into();
|
||||
terminal.terminal_authority_id = Some(reorient.result_id);
|
||||
} else {
|
||||
terminal.status = "terminal-failure".into();
|
||||
terminal.terminal_authority_id = Some(result.result_id.clone());
|
||||
}
|
||||
terminal.terminal_at = Some(result.completed_at.clone());
|
||||
expected.push(claim_envelope);
|
||||
writes.push(cache.prepare_entry(&claim_id, &terminal)?.0);
|
||||
}
|
||||
"terminal-result" => {}
|
||||
"claimed" => {
|
||||
return Err(anyhow!(
|
||||
"runtime worker job cannot complete before activation"
|
||||
));
|
||||
}
|
||||
status => {
|
||||
return Err(anyhow!(
|
||||
"runtime worker job completion found terminal process status {status:?}"
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
if !runtime_spine_backing_store(store_path.as_ref())?
|
||||
.compare_and_swap_batch(&expected, writes)?
|
||||
{
|
||||
return Err(anyhow!("runtime job completion lost its exact snapshot"));
|
||||
}
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
|
|
@ -12995,6 +13058,90 @@ pub(crate) mod tests {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generic_worker_failure_atomically_terminalizes_its_active_process_claim() -> Result<()> {
|
||||
let root = tempdir()?;
|
||||
let store = root.path().join("worker-process-failure.cc");
|
||||
initialize_runtime_spine(
|
||||
&store,
|
||||
RuntimeSpineInitOptions {
|
||||
runtime_id: "worker-failure-runtime".into(),
|
||||
display_name: "Worker failure runtime".into(),
|
||||
created_at: "2026-08-10T13:30:00Z".into(),
|
||||
},
|
||||
)?;
|
||||
create_runtime_session(
|
||||
&store,
|
||||
RuntimeSpineSessionOptions {
|
||||
session_id: "worker-failure-session".into(),
|
||||
objective: "Prove generic failure closes exact worker process authority".into(),
|
||||
created_at: "2026-08-10T13:30:01Z".into(),
|
||||
coordinator_note: "Runtime Continuity fixture".into(),
|
||||
},
|
||||
)?;
|
||||
create_runtime_job(
|
||||
&store,
|
||||
RuntimeSpineJobOptions {
|
||||
job_id: "worker-failure-job".into(),
|
||||
session_id: "worker-failure-session".into(),
|
||||
role: "epiphany-researcher".into(),
|
||||
created_at: "2026-08-10T13:30:02Z".into(),
|
||||
summary: "Await worker terminal authority".into(),
|
||||
artifact_refs: Vec::new(),
|
||||
},
|
||||
)?;
|
||||
put_test_non_modeling_worker_launch(&store, "worker-failure-job", "research")?;
|
||||
let mut cache = runtime_spine_cache(&store)?;
|
||||
cache.pull_all_backing_stores()?;
|
||||
let mut launch = cache
|
||||
.get::<EpiphanyRuntimeWorkerLaunchRequest>("worker-failure-job")?
|
||||
.expect("worker failure launch");
|
||||
launch.proposal_modeling_request_id = Some("worker-failure-request".into());
|
||||
cache.put("worker-failure-job", &launch)?;
|
||||
let process = crate::capture_process_instance(std::process::id())?;
|
||||
let token = "worker-failure-capability";
|
||||
claim_runtime_worker_process(
|
||||
&store,
|
||||
"worker-failure-job",
|
||||
&process,
|
||||
&format!("{:x}", Sha256::digest(token.as_bytes())),
|
||||
"2026-08-10T13:30:03Z",
|
||||
)?;
|
||||
activate_runtime_worker_process(
|
||||
&store,
|
||||
"worker-failure-job",
|
||||
&process,
|
||||
token,
|
||||
"2026-08-10T13:30:04Z",
|
||||
)?;
|
||||
let result = complete_runtime_job(
|
||||
&store,
|
||||
RuntimeSpineJobResultOptions {
|
||||
result_id: "result-worker-failure-job".into(),
|
||||
job_id: "worker-failure-job".into(),
|
||||
completed_at: "2026-08-10T13:30:05Z".into(),
|
||||
verdict: "failed".into(),
|
||||
summary: "Provider failed before typed role output.".into(),
|
||||
next_safe_move: "Retry only from this terminal process authority.".into(),
|
||||
evidence_refs: Vec::new(),
|
||||
artifact_refs: Vec::new(),
|
||||
},
|
||||
)?;
|
||||
let claim = runtime_worker_process_claim(&store, "worker-failure-job")?
|
||||
.expect("terminal failure claim");
|
||||
assert_eq!(claim.status, "terminal-failure");
|
||||
assert_eq!(
|
||||
claim.terminal_authority_id.as_deref(),
|
||||
Some(result.result_id.as_str())
|
||||
);
|
||||
assert_eq!(claim.terminal_at.as_deref(), Some(result.completed_at.as_str()));
|
||||
assert!(!runtime_typed_request_attempt_exists(
|
||||
&store,
|
||||
RuntimeTypedRequestRef::ProposalModeling("worker-failure-request"),
|
||||
)?);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn worker_process_death_is_single_use_and_excludes_late_result() -> Result<()> {
|
||||
let root = tempdir()?;
|
||||
|
|
|
|||
|
|
@ -3168,8 +3168,9 @@ spawns `epiphany-openai-runtime run-worker` with an activation-capability digest
|
|||
then waits for the child-authored exact process claim before presenting the
|
||||
preimage. The worker cannot enter watchdog, provider, model, or tool paths before
|
||||
activation. Runtime result admission atomically replaces the active claim with
|
||||
`terminal-result`; resident Continuity may replace it with `terminal-death` only
|
||||
after exact native process observation.
|
||||
`terminal-result`; generic runtime completion atomically replaces it with
|
||||
`terminal-failure`; resident Continuity may replace it with `terminal-death`
|
||||
only after exact native process observation.
|
||||
|
||||
- Owner: the worker runtime owns claiming its exact native process incarnation
|
||||
before model or tool work. Runtime Continuity owns activation, terminalization,
|
||||
|
|
@ -3179,9 +3180,10 @@ after exact native process observation.
|
|||
explicit activation bound to that claim, native exact-process observation,
|
||||
and authenticated terminal worker result.
|
||||
- Outputs: `claimed` before consequence-capable work, `active` only after one
|
||||
explicit activation, then exactly one `terminal-result`, `terminal-death`, or
|
||||
`terminal-unactivated`. A terminal-death/unactivated attempt may be superseded
|
||||
by a distinct job/binding incarnation without deleting the prior launch family.
|
||||
explicit activation, then exactly one `terminal-result`, `terminal-failure`,
|
||||
`terminal-death`, or `terminal-unactivated`. A terminal failure/death/
|
||||
unactivated attempt may be superseded by a distinct job/binding incarnation
|
||||
without deleting the prior launch family.
|
||||
- Derived state: coordinator artifact PID and detached `Child` handle are
|
||||
diagnostic only. Request identity remains retry-stable; launch, worker claim,
|
||||
process, session, and artifact directory are attempt-incarnation state.
|
||||
|
|
@ -3197,7 +3199,9 @@ after exact native process observation.
|
|||
coordinator launcher, and resident Self. `roleFailureReview` no longer owns
|
||||
proposal retry. All three typed lanes consult exact process terminality, and
|
||||
dead runtime-link projections are demoted before planning a replacement.
|
||||
The remaining cut is packaged Linux falsification, not another retry policy.
|
||||
Generic job completion now owns one snapshot-fenced write of the runtime job,
|
||||
generic result, completion event, and terminal-failure claim. The remaining
|
||||
cut is packaged Linux falsification, not another retry policy.
|
||||
- Verification layer: kill before claim, after claim/before activation, after
|
||||
activation/before result, and after valid result/before coordinator receipt;
|
||||
prove no model/tool work before activation, no dual live attempts, same typed
|
||||
|
|
@ -3205,10 +3209,13 @@ after exact native process observation.
|
|||
retention non-resurrection across all three typed lanes. Source evidence now
|
||||
includes exact process/result race tests, activation CLI ordering, typed retry
|
||||
for proposal/Imagination/model direction, stale-link demotion, canonical Self
|
||||
settlement, core 660 passed/1 ignored, swarm 9, coordinator 17, and OpenAI
|
||||
runtime 10. Exact 75b84180 package inspection authenticates 24 binaries,
|
||||
settlement, core 661 passed/1 ignored, swarm 9, coordinator 17, and OpenAI
|
||||
runtime 15+10+10. Exact 75b84180 package inspection authenticates 24 binaries,
|
||||
release sha256-3959bcb3, witness sha256-6e34eb0a, and zero warnings. Packaged
|
||||
Linux proves terminal-unactivated without provider work plus durable claimed
|
||||
and active orphan shapes after SIGKILL/no OOM. Resident terminal-death,
|
||||
canonical requeue/retry, valid-result-before-receipt, and retention replay
|
||||
remain the open packaged boundaries.
|
||||
Linux proves terminal-unactivated without provider work, durable claimed and
|
||||
active orphan shapes after SIGKILL/no OOM, native terminal-death, canonical
|
||||
requeue, and one same-request distinct retry without dual live authority. The
|
||||
retry exposed an activated generic-failure path that left its claim active;
|
||||
source now closes that as terminal-failure atomically. Packaged
|
||||
terminal-failure, valid-result-before-receipt, and retention replay remain the
|
||||
open boundaries.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,37 @@
|
|||
# Fresh workspace handoff
|
||||
|
||||
## Worker terminal-failure ownership exposed live and repaired in source — 2026-08-10
|
||||
|
||||
Exact packaged `75b84180` copied-state runs now prove both claimed and active
|
||||
SIGKILL orphans become `terminal-death` only after Linux exact-process
|
||||
observation. Replaying the claimed recovery returned success without changing
|
||||
the runtime-store SHA-256. A persisted active resident lease then settled
|
||||
through production `settle_resident_self_exited_coordinator`: the lease cleared,
|
||||
the exact grant became `process-failed`, one cancellation ack appeared, and the
|
||||
pressure returned to pending once. Heartbeat issued attempt two for that same
|
||||
pressure. A distinct packaged job/process became active while the prior claim
|
||||
remained terminal-death, proving no dual live attempt. Receipts are under
|
||||
`.epiphany-run/worker-continuity-75b84180/typed-claimed-sigkill/` and
|
||||
`typed-active-sigkill-3/`.
|
||||
|
||||
The retry worker then exited zero after a typed model-transport failure, with a
|
||||
generic failed runtime result but an incorrectly surviving `active` process
|
||||
claim. This is a real Continuity fault: generic completion and process
|
||||
terminality had split writers. Current source makes `complete_runtime_job` one
|
||||
snapshot-fenced transaction for job, result, completion event, and exact active
|
||||
claim. A generic worker completion becomes `terminal-failure`; an admitted
|
||||
reorient result remains `terminal-result`. Proposal Modeling, Imagination, and
|
||||
admitted-model-direction retry predicates accept terminal-failure as exact
|
||||
supersession authority. No cleanup loop was added.
|
||||
|
||||
Core passes 661 tests with one intentional ignore. The OpenAI runtime passes 15
|
||||
library tests, 10 model-runtime tests, and 10 openai-runtime tests. The cut is
|
||||
not yet committed or packaged. Next review/commit/push it, package exact source
|
||||
once on Starfire, then replay the packaged activated transport failure and
|
||||
require atomic terminal-failure plus canonical resident settlement/retry and
|
||||
retention non-resurrection. Valid-result-before-coordinator-receipt remains
|
||||
open. Actual c006 remains braked and stopped. Yggdrasil never builds.
|
||||
|
||||
## Packaged worker start gate accepted — recovery/retry still open — 2026-08-10
|
||||
|
||||
Exact pushed source `75b841808bb5f693acfe4513befd430fbaf65b75`
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -36,9 +36,9 @@ invariants:
|
|||
|
||||
current_status:
|
||||
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact b8138a6b active-child SIGTERM and restart, exact 9f369528 deterministic warm packaging, exact c930f505 cross-container ownership, exact ed15f83a resident lifecycle retention, exact 16c4b19f coordinator receipt and Heartbeat artifact retention, exact cce2b8ac narrow model-generation retention, exact eea15e82 model-turn JSON ingress, exact b1e8c89a semantic unattempted-generation retention, exact 6bc3ec3f semantic physical-epoch retirement, and exact 44230a05 Persona conversation retention are proven. Gamecult-ops 059821f owns Yggdrasil stream retention and exact 6ee08a4 owns stable Starfire Persona-permit firewall ingress. Exact 16c4b19f genuine idle and exact a987d2f7 active cognition completed 900-pulse bounded plateaus. Runtime-owned typed fulfillment is accepted live under exact 6dd9b132. Yggdrasil is the small public crossing body, never the release forge.
|
||||
latest_phase: Exact pushed 75b84180 packages warning-free as 24-binary release sha256-3959bcb3 with witness sha256-6e34eb0a. Exact packaged Linux worker boundaries prove the start gate: an unactivated claim created no model-adapter job and terminalized once as terminal-unactivated; SIGKILL at claimed and at active both exited 137 without OOM, left the outer job queued with no result, and preserved the exact process claim at its observed state. Source gates remain core 660 passed/1 ignored, swarm 9, coordinator 17, OpenAI runtime 10. Resident exact-death recovery and same-request packaged retry remain open. Actual c006 remains braked and stopped.
|
||||
latest_phase: Exact 75b84180 Linux copied-state recovery now proves claimed and active SIGKILL orphans become terminal-death only after exact native observation; replay is byte-idempotent. Exact active-orphan settlement clears one persisted lease, terminalizes its grant process-failed, emits one cancellation ack, and requeues the pressure once. Heartbeat issued attempt two for the same pressure; a distinct packaged worker job/process became solely active while attempt one remained terminal-death. Its clean typed transport failure exposed a live gap: the generic job/result completed while the process claim stayed active. Current source atomically closes generic worker completion as terminal-failure and admits supersession from that typed authority. Core 661 passed/1 ignored and all OpenAI runtime suites pass (15 library, 10 model-runtime, 10 openai-runtime). The cut is uncommitted/unpackaged. Actual c006 remains braked and stopped.
|
||||
operational_state:
|
||||
local_worktree: worker_process_start_gate_accepted_packaged_recovery_retry_open
|
||||
local_worktree: worker_terminal_failure_source_complete_packaging_open
|
||||
operator_wireguard: restored
|
||||
starfire_persona_permit_firewall: persistent_exact_gamecult_ops_6ee08a4
|
||||
yggdrasil: canonical_small_public_crossing_body
|
||||
|
|
@ -70,7 +70,7 @@ current_status:
|
|||
yggdrasil_epiphany_service_contract: repaired_in_gamecult_ops_812b427_not_installed
|
||||
resident_physiology: c006_exact_c693aaea_settled_braked_no_active_lease_no_attempt_three_old_processes_stopped
|
||||
unresolved_authority: Coordinator receipt, Heartbeat pulse-artifact, deployed supervisor/projector log retention, genuine-idle and active resource plateaus, exact-grant terminality, restart-persistent cooldown refusal, schedule/action issuance cardinality, runtime-owned typed fulfillment, narrow model-generation retention, published model-turn JSON ingress, semantic logical/physical retention, Persona conversation retention, stable Starfire firewall ownership, completed model-adapter session archival, and normal coordinator lifecycle opening/error closure/legacy repair/archival are accepted live. Receipt-free coordinator and worker death recovery are source-grounded, but the exact packaged Linux kill matrix is not yet accepted. Historical migrated semantic attempts without recorded physical namespace remain durable and non-retirable. Repository Body observation still performs two authenticated full-tree Git index/manifest passes. Execute-mode workers require a persistent process body. Mutable Starfire bind storage still needs the packaged randomized interruption/read-loop proof before recovered c005 authority may be trusted. One completed Discord consequence remains blocked by the absent Yggdrasil credential.
|
||||
next_action: Extend the quarantined copied-state harness with typed resident grant/lease authority, then run exact packaged Self/Runtime Continuity over the claimed and active SIGKILL stores. Require terminal-death only after Linux exact-process observation, canonical process-failed settlement and one requeue, same typed request with distinct job/process/artifact incarnation, no dual live attempt, exact replay, and retention non-resurrection across proposal Modeling, Imagination consideration, and admitted model direction. Then prove the valid-result-before-coordinator-receipt branch closes once without retry. Keep actual c006 braked. Yggdrasil never builds.
|
||||
next_action: Review and commit the terminal-failure ownership cut, package the exact source once with the persistent Starfire cache, then replay a packaged activated worker transport failure and require atomic generic result plus terminal-failure claim. Prove resident canonical process-failed settlement, one same-request distinct retry with no dual live claim, and retention non-resurrection. Then prove the valid-result-before-coordinator-receipt branch closes once without retry across the richer copied runtime family. Keep actual c006 braked. Yggdrasil never builds.
|
||||
|
||||
active_subgoals:
|
||||
- Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually.
|
||||
|
|
@ -87,7 +87,7 @@ organ_readiness:
|
|||
hands: proven for bounded consequences; native patch, command, commit, push, and typed receipts bind reviewed path ceilings to exact changed-path subsets.
|
||||
soul: proven for the current bounded route-chain consequence; exact d3bfbda0 launched Verification through typed plan-decision provenance, result f23fe2b6 was accepted at revision 57, and Self then derived Modeling before any repeated Hands authority.
|
||||
mind: proven for launch-owned resident frontier adjudication; two historical attempts failed closed, exact bd96305e derived immutable identity from authenticated launch, authorized retry 2d2a3e8b completed, and Self atomically committed terminal adopt decision e7d7f3c7. Broader memory retention and long-duration behavior remain open.
|
||||
continuity: partial; authenticated 55660d78 terminalized the copied v28 dead worker once and refused duplicate restart, while sealed v28 remained unchanged. Exact 100d8854 closes only all-terminal sessions, emits one deterministic event, and refuses post-close jobs. Exact 42bc665a proves bounded retention and restart sequence recovery. A digest-pinned Linux runtime-spine at b5140288 repeated closure invariants on Yggdrasil. Authenticated c005 proves typed resident state survives hard exit, executable-body replacement, runtime-topology correction, and restart while preserving awaitFrontierProposal. Exact b8138a6b proves active-child and idle SIGTERM closure with exit zero and final braked state. Exact c930f505 proves cross-container resident ownership refusal without state mutation while Heartbeat retains its distinct typed lock. Exact ed15f83a packages resident lifecycle retention. Exact 16c4b19f packages coordinator receipt retention without resurrection. Current source adds exact worker process claim, activation, atomic result terminality, exact-death recovery, typed retry, dead-link demotion, and canonical resident requeue across all three cognition lanes; 660 core, 9 swarm, 17 coordinator, and 10 OpenAI-runtime tests pass. Packaged Linux death boundaries, broader runtime/log retention, and the long-duration plateau remain open.
|
||||
continuity: partial; authenticated 55660d78 terminalized the copied v28 dead worker once and refused duplicate restart, while sealed v28 remained unchanged. Exact 100d8854 closes only all-terminal sessions, emits one deterministic event, and refuses post-close jobs. Exact 42bc665a proves bounded retention and restart sequence recovery. A digest-pinned Linux runtime-spine at b5140288 repeated closure invariants on Yggdrasil. Authenticated c005 proves typed resident state survives hard exit, executable-body replacement, runtime-topology correction, and restart while preserving awaitFrontierProposal. Exact b8138a6b proves active-child and idle SIGTERM closure with exit zero and final braked state. Exact c930f505 proves cross-container resident ownership refusal without state mutation while Heartbeat retains its distinct typed lock. Exact ed15f83a packages resident lifecycle retention. Exact 16c4b19f packages coordinator receipt retention without resurrection. Exact 75b84180 packaged Linux proves worker start gating, claimed/active orphan death recovery, canonical resident requeue, and one distinct same-request retry without dual live authority. Current source adds atomic generic job/result/event plus terminal-failure process closure and treats that typed terminal authority as supersedable; core 661/1 ignored and OpenAI runtime 15+10+10 pass. Packaged terminal-failure replay, valid-result-before-receipt, broader runtime/log retention, and the long-duration plateau remain open.
|
||||
nervous_system: partial; detached scheduling, runtime jobs, typed feedback, ordinary Windows coverage-store identity, and operator projection work. Exact c0055772 proves Linux heartbeat acknowledgement/regrant, Self single-consumption launch, authenticated plan coordinator completion, and a persistent resident body. It also proves detached model workers cannot survive a one-shot container PID 1 exit. The accepted Linux Eyes-to-Modeling circuit proves detached role workers, native read-only tool loops, typed admission, and causal next-organ routing at a measured 109887488-byte peak. Modeling job commit spent 160183ms in two cold Repository Body scans. A source cut now reuses one private index across both equality scans; 25 focused observer tests pass and a live-worktree mechanism benchmark reduced the pair from 3832ms to 1537ms. Packaged coordinator timing remains open. Authenticated d910158f isolates Self policy behind one root-graph optional coordinator feature; warm policy invalidation is 6.02s. Root Linux packaging is 12m33s cold and 9.08s warm with persistent caches. Long-duration pressure and resource plateau remain open. Yggdrasil is not a release forge at its current memory budget.
|
||||
|
||||
forbidden_actions:
|
||||
|
|
|
|||
Reference in a new issue