From 4e3e73acea076dd2b9c8e48bd0bf16dd195e3724 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 8 Aug 2026 11:01:14 +0100 Subject: [PATCH] Prefer current Hands authority over stale proposals --- epiphany-core/src/surfaces/coordinator.rs | 41 +++++++++++++++++----- notes/epiphany-current-algorithmic-map.md | 13 +++++++ notes/fresh-workspace-handoff.md | 30 ++++++++++++++++ state/ledgers.msgpack | Bin 573977 -> 574516 bytes state/map.yaml | 8 ++--- 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/epiphany-core/src/surfaces/coordinator.rs b/epiphany-core/src/surfaces/coordinator.rs index 166bd2e0..909cc8a2 100644 --- a/epiphany-core/src/surfaces/coordinator.rs +++ b/epiphany-core/src/surfaces/coordinator.rs @@ -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 { diff --git a/notes/epiphany-current-algorithmic-map.md b/notes/epiphany-current-algorithmic-map.md index f7829a30..983289b3 100644 --- a/notes/epiphany-current-algorithmic-map.md +++ b/notes/epiphany-current-algorithmic-map.md @@ -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 diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index b4fd1b75..ef97a12e 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -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. diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index 999f5784d66f0e4ffa5f724418afee59069296c8..2e1f79e8cbcbf6e42e1ade7d2b88d9ff934a6e31 100644 GIT binary patch delta 572 zcmYL_&uSDw5XPPLUrvHzjzYnna@b`uxMC7Kh!7%@i{|95wx@QdW$YfSx@VKq9t@ZV zaFx78AcA=EAb9cOd-xJo_ZoyLhGD+?ecxB-r^7F2!;8)0&UU$5Zts>muYX?K_;L4g zSiCEW7w=bt5350;lit^LZs^?9xutXa>uRuZ`u*O=Z&g`68kLXrIm(>Rzqg79%Rl=} z(m+3{pkv=t4F;We)?f?I-{Ral4Awhf3VZ_SYN)B!zd@CURzI=!T~KHpz|CA4%AVe1dcR@r+JMQ zijaUUrNEsR4Vn$Co2%drnViN^PaGO*Nkl6}NzJ_HIu-H^uc)1Ak|p2*Z2$yEi~qnW z%{-GXIEigYWD}Xmg>@jn7#hzuoQ&b9Aw7x7bwD`{GI}*nWonf diff --git a/state/map.yaml b/state/map.yaml index 6c3c8bdf..d0e0d5e0 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -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.