Carry Mind admission receipts into Soul
This commit is contained in:
parent
9582a5c2d6
commit
e515ffbcaf
5 changed files with 170 additions and 18 deletions
|
|
@ -146,6 +146,49 @@ pub fn append_verification_hands_receipt_context(
|
|||
crate::runtime_repo_frontier_route(runtime_store_path, &verification_request.route_id)
|
||||
.map_err(|error| format!("failed to reload Soul frontier route: {error}"))?
|
||||
.ok_or_else(|| "Soul frontier route disappeared after request commit".to_string())?;
|
||||
let admission_receipt = crate::runtime_repo_model_admission_receipt(
|
||||
runtime_store_path,
|
||||
&route.admission_receipt_id,
|
||||
)
|
||||
.map_err(|error| format!("failed to load Mind RepoModel admission receipt for Soul: {error}"))?
|
||||
.ok_or_else(|| "Soul frontier route has no persisted Mind admission receipt".to_string())?;
|
||||
let admission_review = crate::runtime_repo_model_admission_review(
|
||||
runtime_store_path,
|
||||
&admission_receipt.review_id,
|
||||
)
|
||||
.map_err(|error| format!("failed to load Mind RepoModel admission review for Soul: {error}"))?
|
||||
.ok_or_else(|| "Soul frontier admission receipt has no persisted Mind review".to_string())?;
|
||||
let admission_result_id = admission_receipt
|
||||
.result_id
|
||||
.as_deref()
|
||||
.ok_or_else(|| "Soul frontier admission receipt is not bound to a Modeling result".to_string())?;
|
||||
let modeling_acceptances = state
|
||||
.acceptance_receipts
|
||||
.iter()
|
||||
.filter(|receipt| {
|
||||
receipt.role_id == "modeling"
|
||||
&& receipt.surface == "roleAccept"
|
||||
&& receipt.status == "accepted"
|
||||
&& receipt.result_id == admission_result_id
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
if modeling_acceptances.len() != 1 {
|
||||
return Err(
|
||||
"Soul frontier requires exactly one Modeling acceptance bound to its Mind admission"
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
let modeling_acceptance = modeling_acceptances[0];
|
||||
let state_commit_id = format!("mind-commit-{}", modeling_acceptance.id);
|
||||
let state_commit = crate::runtime_mind_state_commit_receipt(runtime_store_path, &state_commit_id)
|
||||
.map_err(|error| format!("failed to load Mind state commit receipt for Soul: {error}"))?
|
||||
.ok_or_else(|| "Soul frontier Modeling acceptance has no Mind state commit receipt".to_string())?;
|
||||
let gateway_review = crate::runtime_mind_gateway_review(
|
||||
runtime_store_path,
|
||||
&state_commit.gateway_id,
|
||||
)
|
||||
.map_err(|error| format!("failed to load Mind gateway review for Soul: {error}"))?
|
||||
.ok_or_else(|| "Soul frontier Mind state commit has no gateway review".to_string())?;
|
||||
let telemetry = work_loop_telemetry_from_hands_chain(
|
||||
&chain,
|
||||
runtime_store_path,
|
||||
|
|
@ -171,6 +214,62 @@ pub fn append_verification_hands_receipt_context(
|
|||
route.question,
|
||||
route.gap,
|
||||
));
|
||||
context.push_str("mindAdmissionChain:\n");
|
||||
context.push_str(&format!(
|
||||
"- modelingAcceptance: id={} resultId={} jobId={} acceptedAt={}\n",
|
||||
modeling_acceptance.id,
|
||||
modeling_acceptance.result_id,
|
||||
modeling_acceptance.job_id,
|
||||
modeling_acceptance.accepted_at,
|
||||
));
|
||||
context.push_str(&format!(
|
||||
"- gatewayReview: schemaVersion={} gatewayId={} sourceKind={} sourceRoleId={} decision={:?} allowedEffects={} refusedEffects={}\n",
|
||||
gateway_review.schema_version,
|
||||
gateway_review.gateway_id,
|
||||
gateway_review.source_kind,
|
||||
gateway_review.source_role_id,
|
||||
gateway_review.decision,
|
||||
gateway_review.allowed_effects.join(" | "),
|
||||
gateway_review.refused_effects.join(" | "),
|
||||
));
|
||||
context.push_str(&format!(
|
||||
"- stateCommit: schemaVersion={} receiptId={} gatewayId={} stateRevision={} changedFields={} committedAt={}\n",
|
||||
state_commit.schema_version,
|
||||
state_commit.receipt_id,
|
||||
state_commit.gateway_id,
|
||||
state_commit.state_revision,
|
||||
state_commit.changed_fields.join(" | "),
|
||||
state_commit.committed_at,
|
||||
));
|
||||
context.push_str(&format!(
|
||||
"- repoModelAdmissionReview: schemaVersion={} reviewId={} resultId={} jobId={} patchId={} patchSha256={} baseRevision={} baseHash={} decision={:?} evidenceIds={} reviewedAt={}\n",
|
||||
admission_review.schema_version,
|
||||
admission_review.review_id,
|
||||
admission_review.result_id.as_deref().unwrap_or(""),
|
||||
admission_review.job_id.as_deref().unwrap_or(""),
|
||||
admission_review.patch_id,
|
||||
admission_review.patch_sha256,
|
||||
admission_review.base_revision,
|
||||
admission_review.base_hash,
|
||||
admission_review.decision,
|
||||
admission_review.evidence_ids.join(" | "),
|
||||
admission_review.reviewed_at,
|
||||
));
|
||||
context.push_str(&format!(
|
||||
"- repoModelAdmissionReceipt: schemaVersion={} receiptId={} reviewId={} resultId={} patchId={} patchSha256={} previousRevision={} previousHash={} admittedRevision={} admittedHash={} admittedAt={} proposalModelingRequestId={}\n",
|
||||
admission_receipt.schema_version,
|
||||
admission_receipt.receipt_id,
|
||||
admission_receipt.review_id,
|
||||
admission_receipt.result_id.as_deref().unwrap_or(""),
|
||||
admission_receipt.patch_id,
|
||||
admission_receipt.patch_sha256,
|
||||
admission_receipt.previous_revision,
|
||||
admission_receipt.previous_hash,
|
||||
admission_receipt.admitted_revision,
|
||||
admission_receipt.admitted_hash,
|
||||
admission_receipt.admitted_at,
|
||||
admission_receipt.proposal_modeling_request_id,
|
||||
));
|
||||
if let Some(plan) = route.adopted_plan.as_ref() {
|
||||
context.push_str(&format!(
|
||||
"adoptedCandidateSha256: {}\nadoptedAction: {}\nadoptedCommand: {}\nadoptedChecks: {}\nadoptedStopConditions: {}\nadoptedRollbackSteps: {}\nadoptedCommitMessage: {}\n",
|
||||
|
|
@ -1483,8 +1582,8 @@ mod tests {
|
|||
objective: Some("Verify Hands receipts.".to_string()),
|
||||
acceptance_receipts: vec![EpiphanyAcceptanceReceipt {
|
||||
id: "accept-modeling-context".to_string(),
|
||||
result_id: "result-modeling-context".to_string(),
|
||||
job_id: "modeling-job-context".to_string(),
|
||||
result_id: "context-route-result".to_string(),
|
||||
job_id: "context-route-job".to_string(),
|
||||
binding_id: "modeling-checkpoint-worker".to_string(),
|
||||
surface: "roleAccept".to_string(),
|
||||
role_id: "modeling".to_string(),
|
||||
|
|
@ -1496,6 +1595,28 @@ mod tests {
|
|||
}],
|
||||
..Default::default()
|
||||
};
|
||||
let gateway_review = crate::MindGatewayReview {
|
||||
schema_version: crate::MIND_GATEWAY_REVIEW_SCHEMA_VERSION.to_string(),
|
||||
gateway_id: "mind-context-route-admission".to_string(),
|
||||
source_kind: "modelingFinding".to_string(),
|
||||
source_role_id: "modeling".to_string(),
|
||||
decision: crate::MindGatewayDecision::Accept,
|
||||
allowed_effects: vec!["acceptanceReceipts".to_string()],
|
||||
refused_effects: Vec::new(),
|
||||
reasons: vec!["Fixture Mind admission".to_string()],
|
||||
contract: "Fixture Mind gateway review".to_string(),
|
||||
};
|
||||
crate::put_mind_gateway_review(&runtime_store, &gateway_review)?;
|
||||
crate::put_mind_state_commit_receipt(
|
||||
&runtime_store,
|
||||
&crate::mind_state_commit_receipt(
|
||||
"mind-commit-accept-modeling-context".to_string(),
|
||||
&gateway_review,
|
||||
state.revision,
|
||||
vec!["AcceptanceReceipts".to_string()],
|
||||
"2026-06-12T00:00:03Z".to_string(),
|
||||
),
|
||||
)?;
|
||||
let context = append_verification_hands_receipt_context(
|
||||
"<epiphany_dynamic_context></epiphany_dynamic_context>".to_string(),
|
||||
&runtime_store,
|
||||
|
|
@ -1509,6 +1630,10 @@ mod tests {
|
|||
assert!(context.contains("hands-commit-context"));
|
||||
assert!(context.contains("verificationRequestId:"));
|
||||
assert!(context.contains("frontierRouteId:"));
|
||||
assert!(context.contains("mindAdmissionChain:"));
|
||||
assert!(context.contains("mind-commit-accept-modeling-context"));
|
||||
assert!(context.contains("context-route-admission"));
|
||||
assert!(context.contains("context-route-proposal"));
|
||||
assert!(context.contains("Does verification see the exact receipts?"));
|
||||
assert!(context.contains("Unrouted consequences are invalid."));
|
||||
assert!(context.contains("resolvedReceiptPayloads"));
|
||||
|
|
|
|||
|
|
@ -1061,6 +1061,8 @@ pub use runtime_spine::runtime_job_snapshot;
|
|||
pub use runtime_spine::runtime_latest_hands_receipt_chain_after;
|
||||
pub use runtime_spine::runtime_mind_gateway_review;
|
||||
pub use runtime_spine::runtime_mind_state_commit_receipt;
|
||||
pub use runtime_spine::runtime_repo_model_admission_receipt;
|
||||
pub use runtime_spine::runtime_repo_model_admission_review;
|
||||
pub use runtime_spine::runtime_modeling_semantic_projection_input;
|
||||
pub use runtime_spine::runtime_registered_document_types;
|
||||
pub use runtime_spine::runtime_reorient_worker_result;
|
||||
|
|
|
|||
|
|
@ -3504,6 +3504,26 @@ pub fn commit_repo_model_admission(
|
|||
Ok(receipt)
|
||||
}
|
||||
|
||||
pub fn runtime_repo_model_admission_review(
|
||||
runtime_store: impl AsRef<Path>,
|
||||
review_id: &str,
|
||||
) -> Result<Option<RepoModelAdmissionReview>> {
|
||||
validate_non_empty(review_id, "repo model admission review id")?;
|
||||
let mut cache = runtime_spine_cache(runtime_store)?;
|
||||
cache.pull_all_backing_stores()?;
|
||||
cache.get::<RepoModelAdmissionReview>(review_id)
|
||||
}
|
||||
|
||||
pub fn runtime_repo_model_admission_receipt(
|
||||
runtime_store: impl AsRef<Path>,
|
||||
receipt_id: &str,
|
||||
) -> Result<Option<RepoModelAdmissionReceipt>> {
|
||||
validate_non_empty(receipt_id, "repo model admission receipt id")?;
|
||||
let mut cache = runtime_spine_cache(runtime_store)?;
|
||||
cache.pull_all_backing_stores()?;
|
||||
cache.get::<RepoModelAdmissionReceipt>(receipt_id)
|
||||
}
|
||||
|
||||
fn put_immutable_planning_entry<T: cultcache_rs::DatabaseEntry + PartialEq + Clone>(
|
||||
store_path: &Path,
|
||||
key: &str,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ CultMesh projects inspectable surfaces. Codex remains only as the retained
|
|||
OpenAI-compatible authentication and model-transport boundary.
|
||||
|
||||
The local `codex/epiphany-shakedown-live` branch has a focused, tested
|
||||
Hands-to-Soul routing repair pending commit and publication.
|
||||
Mind-to-Soul launch-context repair pending commit and publication.
|
||||
|
||||
Current host authority:
|
||||
|
||||
|
|
@ -41,7 +41,8 @@ Current host authority:
|
|||
admits them through packaged `apply-snapshot` as transport-only state. The
|
||||
provider is ready with no pending failures and exposes no private state.
|
||||
|
||||
The active authenticated shakedown release contains the native Hands actuator.
|
||||
The active authenticated shakedown release contains the native Hands actuator
|
||||
and native Hands-to-Soul routing.
|
||||
Older runtime and resident stores are non-authoritative.
|
||||
|
||||
The current live readiness result is mixed:
|
||||
|
|
@ -50,11 +51,15 @@ The current live readiness result is mixed:
|
|||
Mind admitted it and emitted a scoped Hands gate.
|
||||
- The packaged Hands actuator recorded native typed patch, command, and commit
|
||||
receipts for a real pushed consequence.
|
||||
- Coordinator routing now treats a complete native Hands receipt chain after
|
||||
the latest accepted boundary as implementation evidence. The preserved live
|
||||
state selects `launchVerification`; the legacy thread-state audit is no
|
||||
longer the sole routing signal.
|
||||
- Soul has not yet returned an admitted verdict for this receipt chain.
|
||||
- Coordinator routing treats a complete native Hands receipt chain after the
|
||||
latest accepted boundary as implementation evidence. The legacy thread-state
|
||||
audit is no longer the sole routing signal.
|
||||
- Soul inspected the live Hands chain and returned an admitted
|
||||
`needs-evidence` verdict: the consequence is concrete, but Self omitted the
|
||||
actual Mind proposal/admission/state-commit bodies from the launch packet.
|
||||
- Launch assembly now resolves the route's exact RepoModel admission receipt,
|
||||
its Mind review, the bound Modeling acceptance, its Mind gateway review, and
|
||||
its Mind state commit. Soul launch fails closed if that chain is incomplete.
|
||||
- Resident artifact retention is unbounded. Durable Windows supervision,
|
||||
crash/reboot recovery, session closure, long-duration resource behavior, and
|
||||
Linux/Yggdrasil cognition remain unproven.
|
||||
|
|
@ -76,11 +81,11 @@ The current live readiness result is mixed:
|
|||
|
||||
## Next action
|
||||
|
||||
Commit and publish the Hands-to-Soul routing repair, package the exact release,
|
||||
then launch Soul against the preserved native Hands consequence and require an
|
||||
admitted verdict grounded in its complete receipt chain. After that, continue
|
||||
the organ matrix, retention, supervised recovery, session closure,
|
||||
long-duration resource, and Linux/Yggdrasil proofs.
|
||||
Commit and publish the Mind-to-Soul context repair, package the exact release,
|
||||
then run a fresh proposal-to-Modeling-to-Mind-to-Hands-to-Soul circuit and
|
||||
require Soul to judge both the admission and consequence receipt bodies. After
|
||||
that, continue the organ matrix, retention, supervised recovery, session
|
||||
closure, long-duration resource, and Linux/Yggdrasil proofs.
|
||||
|
||||
## Immediate Re-entry Instruction
|
||||
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@ invariants:
|
|||
- Evidence and git retain history; this map retains only state that changes future decisions.
|
||||
|
||||
current_status:
|
||||
summary: Epiphany is awake enough for supervised Starfire shakedown, not deployment-ready. The live typed path has reached proposal-bound Modeling, Mind admission, a scoped Hands gate, and native Hands patch, command, and commit receipts for a real pushed consequence. Coordinator routing now recognizes a complete native Hands receipt chain after the latest accepted Modeling or Verification boundary and selects Soul verification. Soul has not yet returned an admitted verdict for this consequence. Resident artifact growth remains unbounded, durable Windows supervision and crash/reboot recovery are unproven, and no Linux or Yggdrasil cognition run has been performed.
|
||||
summary: Epiphany is awake enough for supervised Starfire shakedown, not deployment-ready. The live typed path reached proposal-bound Modeling, Mind admission, a scoped Hands gate, native Hands receipts, and an admitted Soul needs-evidence verdict. Soul verified the Hands consequence but correctly refused the end-to-end claim because Self's launch packet omitted the Mind admission bodies. Launch assembly is being repaired to carry the exact route-bound RepoModel review and receipt, Modeling acceptance, Mind gateway review, and Mind state commit beside the Hands chain. Resident artifact growth remains unbounded, durable Windows supervision and crash/reboot recovery are unproven, and no Linux or Yggdrasil cognition run has been performed.
|
||||
operational_state:
|
||||
local_worktree: hands_to_soul_routing_repair_under_verification
|
||||
local_worktree: mind_to_soul_context_repair_under_verification
|
||||
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: Soul has not yet verified the complete native Hands consequence chain in the live coordinated run; deployment authority remains absent.
|
||||
next_action: Commit and publish the Hands-to-Soul routing repair, package the exact release, launch Soul against the preserved live consequence, and require an admitted verdict grounded in the complete receipt chain.
|
||||
unresolved_authority: The full route remains unproven until a fresh Soul launch receives and judges both the route-bound Mind admission chain and the native Hands consequence chain; deployment authority remains absent.
|
||||
next_action: Commit and publish the Mind-to-Soul context repair, then run a fresh exact-release proposal-to-Soul circuit and require a verdict grounded in both admission and consequence receipts.
|
||||
|
||||
active_subgoals:
|
||||
- Prove Persona, Self, Eyes, Modeling, Imagination, Hands, Soul, Mind, Continuity, and nervous-system behavior individually.
|
||||
|
|
|
|||
Reference in a new issue