Prefer current Hands authority over stale proposals

This commit is contained in:
Meta Vens 2026-08-08 11:01:14 +01:00
commit 4e3e73acea
5 changed files with 79 additions and 13 deletions

View file

@ -972,9 +972,12 @@ pub fn recommend_coordinator_action(
if input.signals.modeling_result_status == EpiphanyCoordinatorRoleResultStatus::Completed
&& !input.modeling_result_accepted
&& !(input.modeling_result_failure_reviewed
&& input.modeling_result_proposal_bound
&& input.hands_frontier_ready)
{
if input.modeling_result_failure_reviewed {
if input.modeling_result_proposal_bound {
if input.modeling_result_proposal_bound && !input.hands_frontier_ready {
return build(
EpiphanyCoordinatorAction::AwaitFrontierProposal,
Some(EpiphanyCoordinatorRoleId::Imagination),
@ -984,14 +987,16 @@ pub fn recommend_coordinator_action(
"The proposal-bound Modeling result was rejected and its immutable selection request is consumed; await a fresh typed proposal instead of replaying old authority.",
);
}
return build(
EpiphanyCoordinatorAction::LaunchModeling,
Some(EpiphanyCoordinatorRoleId::Modeling),
Some(EpiphanyCoordinatorSceneAction::RoleLaunch),
false,
true,
"The completed Modeling result was rejected by admission and superseded; relaunch Modeling against current typed authority.",
);
if !input.modeling_result_proposal_bound {
return build(
EpiphanyCoordinatorAction::LaunchModeling,
Some(EpiphanyCoordinatorRoleId::Modeling),
Some(EpiphanyCoordinatorSceneAction::RoleLaunch),
false,
true,
"The completed Modeling result was rejected by admission and superseded; relaunch Modeling against current typed authority.",
);
}
}
if !input.modeling_result_reviewable {
if input.modeling_result_requests_regather
@ -2127,6 +2132,24 @@ mod tests {
.contains("selection request is consumed")
);
let current_hands_route_survives_rejected_stale_proposal =
recommend_coordinator_action(EpiphanyCoordinatorInput {
signals: EpiphanyCoordinatorSignals {
research_result_status: EpiphanyCoordinatorRoleResultStatus::MissingBinding,
modeling_result_status: EpiphanyCoordinatorRoleResultStatus::Completed,
verification_result_status: EpiphanyCoordinatorRoleResultStatus::MissingBinding,
},
modeling_result_failure_reviewed: true,
modeling_result_reviewable: true,
modeling_result_proposal_bound: true,
hands_frontier_ready: true,
..input()
});
assert_eq!(
current_hands_route_survives_rejected_stale_proposal.action,
EpiphanyCoordinatorAction::ContinueImplementation
);
let await_proposal_without_hands_frontier =
recommend_coordinator_action(EpiphanyCoordinatorInput {
signals: EpiphanyCoordinatorSignals {

View file

@ -1423,6 +1423,19 @@ proves failure, explicit review, suffixed retry binding, successful result
persistence, and transition to `ImaginationResultReady` without relaxing any
other causal identity.
Fresh v52 then proved that full retry path live: the same planning authority
produced a valid typed candidate, dedicated Mind adopted it, RepoModel advanced
to revision 5, and the substrate derived `Hands=true`. A separately launched
proposal-bound Modeling result became stale at that admission and was correctly
rejected. Coordinator action ordering nevertheless treated its reviewed failure
as a demand for a new proposal before consulting the newer actionable Hands
frontier. This let stale worker history preempt current Mind authority. The
coordinator now excludes exactly the state `(reviewed proposal failure, current
Hands frontier)` from stale-result recovery, allowing the existing Hands branch
to own the decision. Without a Hands frontier, the consumed proposal still
fails closed at `awaitFrontierProposal`; ordinary non-proposal failures still
route back to Modeling.
## Exact release build cache ownership
The root release-bundle manifest owns release profile policy. Measured on the

View file

@ -266,3 +266,33 @@ all attempts. The local repair derives the expected ID from
and proves lifecycle `ImaginationResultReady`. Commit/push/package this repair,
clone sealed v51 into v52, review its typed failure, and replay the same
authority. Do not mutate v51 further.
Exact retry repair `5b922a049fc139bfcf2882ffb5e5cec8f17b65fb` is pushed and
packaged as
`sha256-a019000d541fea02f7fda93dbbdc4f0bdcf8d6e2bc33a9ec4f38270dca2f26b1`
with witness
`sha256-97937ae68206b26a09ba3479cf8865acf36b30f9686d15abf1663561afd1abab`.
Fresh v52 at
`F:\Projects\.epiphany-runtime\shakedown\live-20260808-v52-imagination-retry-identity`
reviewed v51 failure with receipt
`frontier-planning-failure-review-3987cb31-2d67-4fbe-98d7-7c512c27c31a`.
Canonical Imagination retry result
`result-worker-ff2aa229-11d2-4ace-b12e-4eb48ab3e617` persisted successfully.
Dedicated Mind result
`result-worker-6940aad8-a458-4d7a-847f-c412f0d9bc7c` adopted candidate
`repo-frontier-plan-candidate-e8374ddfccd0f4e9c8bf16931e582c6e42a7d90de7587aaf3e9826e149752bb4`
through decision
`repo-frontier-plan-decision-0f762c79a9b0a19a24f77e34865a9edc0034f1601c52c9401bd255f7ed67432d`.
RepoModel advanced to revision 5 and native runtime status reports
`actionable frontiers: Hands=true Eyes=false`.
The pending v6 Modeling result was then correctly rejected as stale against
revision 5. Its reviewed proposal failure caused coordinator Self to return
`awaitFrontierProposal` before consulting the current Hands signal. This is a
decision-order fault: stale worker history cannot preempt newer Mind authority.
The local repair excludes that exact state from completed-result recovery;
without Hands authority the old fail-closed behavior remains. The focused
coordinator test proves both branches. Commit/push/package, clone v52 into v53,
and prove native coordinator `ContinueImplementation` plus the exact Hands
gate. Also audit why the adopted decision serialized model-supplied
`2025-02-14T00:00:00Z` instead of a coordinator-owned commit timestamp.

Binary file not shown.

View file

@ -34,9 +34,9 @@ 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. Exact 88778762 packages as sha256-4e0700d3e2305a343742608b06054faa4ab1ce4fb5a0fcef6ef1c8ee0efea914 with witness sha256-f434d5a480e5a1d54fef4cb18f93e391bc3cbd9669fd9ed6f7111f35a2d8a536. Sealed v50 proves typed Hands relinquishment and corrected Modeling. Fresh v51 proves the new Imagination safe-path context removed the prior scope-ceiling failure, then exposed a retry identity defect: successful retry bindings carry `-attempt-N`, while result validation demanded the attempt-zero ID. A local regression-tested repair now derives the expected immutable binding ID from attempt ordinal. Persona consequence, retention, endurance, and Linux/Yggdrasil cognition remain open.
summary: Epiphany is a supervised engineering alpha on Starfire, not deployment-ready. Exact 5b922a04 packages as sha256-a019000d541fea02f7fda93dbbdc4f0bdcf8d6e2bc33a9ec4f38270dca2f26b1 with witness sha256-97937ae68206b26a09ba3479cf8865acf36b30f9686d15abf1663561afd1abab. Fresh v52 proves successful canonical Imagination retry, dedicated Mind adoption, RepoModel revision 5, and native `Hands=true` under the repaired scope and retry identities. A later stale proposal Modeling result was correctly rejected, but its reviewed failure preempted the newer Hands frontier in coordinator action ordering. A focused local repair now prevents stale proposal recovery from outranking current Mind authority. Persona consequence, retention, endurance, and Linux/Yggdrasil cognition remain open.
operational_state:
local_worktree: imagination_retry_binding_fix_verified_commit_next
local_worktree: stale_proposal_precedence_fix_verified_commit_next
operator_wireguard: restored
yggdrasil: canonical_small_public_crossing_body
starfire: temporary_epiphany_cognition_body
@ -52,8 +52,8 @@ current_status:
bifrost_feedback_crossing: authenticated_transport_only
yggdrasil_epiphany_services: absent
resident_physiology: heartbeat_and_self_running
unresolved_authority: v51 replay under exact 88778762 produced a scope-valid Imagination candidate, proving the context repair moved the circuit past path authority. Runtime persistence then rejected the otherwise usable retry because `put_runtime_role_worker_result` compared every launch binding to the attempt-zero record ID even though Self correctly names retries with `-attempt-N`. The local identity repair is focused-test green but not yet committed, pushed, packaged, or replayed live.
next_action: Commit and push the retry-binding identity repair, package exact source, clone sealed v51 into v52, review the preserved typed failure, and replay the same planning authority under the new release. Prove successful Imagination retry reaches dedicated Mind adoption, then admit or supersede the pending v6 Modeling result according to the derived route and continue CRRC/Reorientation/Continuity/Soul.
unresolved_authority: Exact 5b922a04 substrate status on v52 reports an actionable Hands frontier after dedicated Mind adoption. Coordinator status instead returned `awaitFrontierProposal` because a reviewed stale proposal-bound Modeling rejection was handled before the later Hands-ready branch. The local decision-order repair is focused-test green but not yet committed, pushed, packaged, or replayed live. The adopted Mind decision also carries a model-supplied 2025 timestamp; timestamp ownership remains a separate provenance audit item.
next_action: Commit and push the stale-proposal precedence repair, package exact source, clone sealed v52 into v53, and prove coordinator derives `ContinueImplementation` plus the exact Hands gate from the same native store. Then execute the adopted CRRC/Reorientation/Continuity implementation route through Hands and Soul. Audit coordinator-owned timestamps before declaring the planning circuit closed.
active_subgoals:
- Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually.