Name provider context by arrival order
This commit is contained in:
parent
5a06ff750e
commit
d263b80993
7 changed files with 51 additions and 37 deletions
|
|
@ -2592,7 +2592,7 @@ fn run_cli() -> Result<()> {
|
|||
write_epiphany_cultmesh_agent_state_soa_summary(&args.store, agent_state_summary)?;
|
||||
let context = query_epiphany_local_verse_context(&args.store, args.runtime_id.clone())?;
|
||||
if context
|
||||
.latest_bifrost_body_change_publication_intent
|
||||
.arrival_latest_bifrost_body_change_publication_intent
|
||||
.is_none()
|
||||
|| context.eve_surface_states.len() != context.odin_advertisements.len()
|
||||
|| context.daemon_statuses.len() != context.cluster_topology.len()
|
||||
|
|
@ -2604,10 +2604,14 @@ fn run_cli() -> Result<()> {
|
|||
.as_ref()
|
||||
.is_some_and(|brake| brake.private_state_exposed)
|
||||
|| context
|
||||
.latest_bifrost_body_change_publication_receipt
|
||||
.arrival_latest_bifrost_body_change_publication_receipt
|
||||
.is_some()
|
||||
|| context.latest_bifrost_github_publication_receipt.is_some()
|
||||
|| context.latest_bifrost_collaboration_feedback.is_none()
|
||||
|| context
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.is_some()
|
||||
|| context
|
||||
.arrival_latest_bifrost_collaboration_feedback
|
||||
.is_none()
|
||||
|| context.latest_imagination_consensus_receipt.is_some()
|
||||
|| context.latest_work_loop_summary.is_none()
|
||||
|| context.latest_agent_state_soa_summary.is_none()
|
||||
|
|
@ -2914,10 +2918,10 @@ fn run_cli() -> Result<()> {
|
|||
"latestToolInvocationReceipt": context.latest_daemon_tool_invocation_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"latestDaemonPokeIntent": context.latest_daemon_poke_intent.as_ref().map(|intent| intent.intent_id.clone()),
|
||||
"latestDaemonPokeReceipt": context.latest_daemon_poke_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"arrivalLatestBifrostPublicationIntent": context.latest_bifrost_body_change_publication_intent.as_ref().map(|intent| intent.intent_id.clone()),
|
||||
"arrivalLatestBifrostPublicationReceipt": context.latest_bifrost_body_change_publication_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"arrivalLatestBifrostGithubReceipt": context.latest_bifrost_github_publication_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"arrivalLatestBifrostCollaborationFeedback": context.latest_bifrost_collaboration_feedback.as_ref().map(|feedback| feedback.feedback_id.clone()),
|
||||
"arrivalLatestBifrostPublicationIntent": context.arrival_latest_bifrost_body_change_publication_intent.as_ref().map(|intent| intent.intent_id.clone()),
|
||||
"arrivalLatestBifrostPublicationReceipt": context.arrival_latest_bifrost_body_change_publication_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"arrivalLatestBifrostGithubReceipt": context.arrival_latest_bifrost_github_publication_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"arrivalLatestBifrostCollaborationFeedback": context.arrival_latest_bifrost_collaboration_feedback.as_ref().map(|feedback| feedback.feedback_id.clone()),
|
||||
"latestImaginationConsensusReceipt": context.latest_imagination_consensus_receipt.as_ref().map(|receipt| receipt.receipt_id.clone()),
|
||||
"latestWorkLoopTelemetry": context.latest_work_loop_summary.as_ref().map(|summary| summary.telemetry_id.clone()),
|
||||
"latestAgentStateSoaSummary": context.latest_agent_state_soa_summary.as_ref().map(|summary| summary.summary_id.clone()),
|
||||
|
|
@ -6776,17 +6780,17 @@ fn receipt_directory_report(
|
|||
owner: "Bifrost".to_string(),
|
||||
document_kind: "gamecult.bifrost.github_publication_receipt.v0".to_string(),
|
||||
latest_id: context
|
||||
.latest_bifrost_github_publication_receipt
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.receipt_id.clone())
|
||||
.unwrap_or_else(|| "missing".to_string()),
|
||||
status: context
|
||||
.latest_bifrost_github_publication_receipt
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.publication_status.clone())
|
||||
.unwrap_or_else(|| "missing".to_string()),
|
||||
route: context
|
||||
.latest_bifrost_github_publication_receipt
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.pull_request_url.clone())
|
||||
.unwrap_or_else(|| "none".to_string()),
|
||||
|
|
@ -6796,9 +6800,11 @@ fn receipt_directory_report(
|
|||
artifact_ref: "none".to_string(),
|
||||
artifact_status: "none".to_string(),
|
||||
artifact_sha256: "none".to_string(),
|
||||
present: context.latest_bifrost_github_publication_receipt.is_some(),
|
||||
present: context
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.is_some(),
|
||||
private_state_exposed: context
|
||||
.latest_bifrost_github_publication_receipt
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.private_state_exposed)
|
||||
.unwrap_or(false),
|
||||
|
|
@ -6812,17 +6818,17 @@ fn receipt_directory_report(
|
|||
owner: "Bifrost".to_string(),
|
||||
document_kind: "gamecult.bifrost.public_proof_publication_receipt.v0".to_string(),
|
||||
latest_id: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.receipt_id.clone())
|
||||
.unwrap_or_else(|| "missing".to_string()),
|
||||
status: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.status.clone())
|
||||
.unwrap_or_else(|| "missing".to_string()),
|
||||
route: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.publication_url.clone())
|
||||
.unwrap_or_else(|| "none".to_string()),
|
||||
|
|
@ -6830,12 +6836,12 @@ fn receipt_directory_report(
|
|||
service_route: "none".to_string(),
|
||||
follow_up_command: WRAPPER_BIFROST_LEDGER_COMMAND.to_string(),
|
||||
artifact_ref: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.public_proof_ref.clone())
|
||||
.unwrap_or_else(|| "none".to_string()),
|
||||
artifact_status: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| {
|
||||
if receipt.public_proof_ref == "none" {
|
||||
|
|
@ -6846,15 +6852,15 @@ fn receipt_directory_report(
|
|||
})
|
||||
.unwrap_or_else(|| "none".to_string()),
|
||||
artifact_sha256: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.public_proof_sha256.clone())
|
||||
.unwrap_or_else(|| "none".to_string()),
|
||||
present: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.is_some(),
|
||||
private_state_exposed: context
|
||||
.latest_bifrost_public_proof_publication_receipt
|
||||
.arrival_latest_bifrost_public_proof_publication_receipt
|
||||
.as_ref()
|
||||
.map(|receipt| receipt.private_state_exposed)
|
||||
.unwrap_or(false),
|
||||
|
|
|
|||
|
|
@ -2426,15 +2426,15 @@ pub struct EpiphanyLocalVerseContext {
|
|||
Option<EpiphanyCultMeshDaemonToolInvocationIntentEntry>,
|
||||
pub latest_daemon_tool_invocation_receipt:
|
||||
Option<EpiphanyCultMeshDaemonToolInvocationReceiptEntry>,
|
||||
pub latest_bifrost_body_change_publication_intent:
|
||||
pub arrival_latest_bifrost_body_change_publication_intent:
|
||||
Option<EpiphanyCultMeshBifrostBodyChangePublicationIntentEntry>,
|
||||
pub latest_bifrost_body_change_publication_receipt:
|
||||
pub arrival_latest_bifrost_body_change_publication_receipt:
|
||||
Option<EpiphanyCultMeshBifrostBodyChangePublicationReceiptEntry>,
|
||||
pub latest_bifrost_github_publication_receipt:
|
||||
pub arrival_latest_bifrost_github_publication_receipt:
|
||||
Option<EpiphanyCultMeshBifrostGithubPublicationReceiptEntry>,
|
||||
pub latest_bifrost_public_proof_publication_receipt:
|
||||
pub arrival_latest_bifrost_public_proof_publication_receipt:
|
||||
Option<EpiphanyCultMeshBifrostPublicProofPublicationReceiptEntry>,
|
||||
pub latest_bifrost_collaboration_feedback:
|
||||
pub arrival_latest_bifrost_collaboration_feedback:
|
||||
Option<EpiphanyCultMeshBifrostCollaborationFeedbackEntry>,
|
||||
pub latest_imagination_consensus_receipt:
|
||||
Option<EpiphanyCultMeshImaginationConsensusReceiptEntry>,
|
||||
|
|
@ -6098,15 +6098,15 @@ pub fn query_epiphany_local_verse_context(
|
|||
.get(EPIPHANY_CULTMESH_DAEMON_TOOL_INVOCATION_INTENT_LATEST_KEY)?,
|
||||
latest_daemon_tool_invocation_receipt: node
|
||||
.get(EPIPHANY_CULTMESH_DAEMON_TOOL_INVOCATION_RECEIPT_LATEST_KEY)?,
|
||||
latest_bifrost_body_change_publication_intent: node
|
||||
arrival_latest_bifrost_body_change_publication_intent: node
|
||||
.get(EPIPHANY_CULTMESH_BIFROST_BODY_CHANGE_PUBLICATION_INTENT_LATEST_KEY)?,
|
||||
latest_bifrost_body_change_publication_receipt: node
|
||||
arrival_latest_bifrost_body_change_publication_receipt: node
|
||||
.get(EPIPHANY_CULTMESH_BIFROST_BODY_CHANGE_PUBLICATION_RECEIPT_LATEST_KEY)?,
|
||||
latest_bifrost_github_publication_receipt: node
|
||||
arrival_latest_bifrost_github_publication_receipt: node
|
||||
.get(EPIPHANY_CULTMESH_BIFROST_GITHUB_PUBLICATION_RECEIPT_LATEST_KEY)?,
|
||||
latest_bifrost_public_proof_publication_receipt: node
|
||||
arrival_latest_bifrost_public_proof_publication_receipt: node
|
||||
.get(EPIPHANY_CULTMESH_BIFROST_PUBLIC_PROOF_PUBLICATION_RECEIPT_LATEST_KEY)?,
|
||||
latest_bifrost_collaboration_feedback: node
|
||||
arrival_latest_bifrost_collaboration_feedback: node
|
||||
.get(EPIPHANY_CULTMESH_BIFROST_COLLABORATION_FEEDBACK_LATEST_KEY)?,
|
||||
latest_imagination_consensus_receipt: node
|
||||
.get(EPIPHANY_CULTMESH_IMAGINATION_CONSENSUS_RECEIPT_LATEST_KEY)?,
|
||||
|
|
@ -9883,7 +9883,7 @@ mod tests {
|
|||
let context = query_epiphany_local_verse_context(&store, "epiphany-test")?;
|
||||
assert_eq!(
|
||||
context
|
||||
.latest_bifrost_collaboration_feedback
|
||||
.arrival_latest_bifrost_collaboration_feedback
|
||||
.as_ref()
|
||||
.map(|feedback| feedback.requested_consensus_route.as_str()),
|
||||
Some("imagination.consensus_discovery")
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ pub fn render_epiphany_prompt_context(input: &EpiphanyPromptContextInput) -> Str
|
|||
|
||||
if let Some(intent) = input
|
||||
.local_verse
|
||||
.latest_bifrost_body_change_publication_intent
|
||||
.arrival_latest_bifrost_body_change_publication_intent
|
||||
.as_ref()
|
||||
{
|
||||
lines.push("## Bifrost Publication Gate".to_string());
|
||||
|
|
@ -224,7 +224,7 @@ pub fn render_epiphany_prompt_context(input: &EpiphanyPromptContextInput) -> Str
|
|||
));
|
||||
if let Some(receipt) = input
|
||||
.local_verse
|
||||
.latest_bifrost_body_change_publication_receipt
|
||||
.arrival_latest_bifrost_body_change_publication_receipt
|
||||
.as_ref()
|
||||
.filter(|receipt| receipt.intent_id == intent.intent_id)
|
||||
{
|
||||
|
|
@ -238,7 +238,7 @@ pub fn render_epiphany_prompt_context(input: &EpiphanyPromptContextInput) -> Str
|
|||
));
|
||||
if let Some(github) = input
|
||||
.local_verse
|
||||
.latest_bifrost_github_publication_receipt
|
||||
.arrival_latest_bifrost_github_publication_receipt
|
||||
.as_ref()
|
||||
.filter(|github| github.bifrost_publication_receipt_id == receipt.receipt_id)
|
||||
{
|
||||
|
|
@ -664,7 +664,7 @@ mod tests {
|
|||
.intent_id = "another-eve-intent".to_string();
|
||||
prompt_input
|
||||
.local_verse
|
||||
.latest_bifrost_body_change_publication_receipt
|
||||
.arrival_latest_bifrost_body_change_publication_receipt
|
||||
.as_mut()
|
||||
.expect("Bifrost receipt remains available for mismatch probe")
|
||||
.intent_id = "another-bifrost-intent".to_string();
|
||||
|
|
|
|||
|
|
@ -948,6 +948,12 @@ and JSON surface: provider-derived IDs use `arrival_latest_*` and
|
|||
while locally ordered Imagination consensus retains its legitimate `latest`
|
||||
name.
|
||||
|
||||
`EpiphanyCultMeshContext` now completes the correction: its five provider
|
||||
mirror fields use `arrival_latest_bifrost_*`, and prompt-context plus Verse
|
||||
consumers read those names directly. The only remaining Bifrost `LATEST_KEY`
|
||||
identifiers describe persisted `/latest` compatibility keys, not chronology
|
||||
claims in typed runtime state.
|
||||
|
||||
The same inspection found 33 consecutive duplicate `#[cfg(test)]` attributes
|
||||
on provider constructors/writers and their re-exports. One gate already makes
|
||||
each item test-only; the second owned nothing. The duplicates are removed.
|
||||
|
|
|
|||
|
|
@ -292,6 +292,8 @@ persisted `/latest` key spelling is retained as external storage compatibility,
|
|||
not interpreted as provider chronology.
|
||||
The Bifrost ledger report also uses `arrival_latest_*` typed fields and
|
||||
`arrivalLatestBifrost*` JSON keys; no old report aliases remain.
|
||||
`EpiphanyCultMeshContext`, prompt assembly, and Verse consumers now also use
|
||||
`arrival_latest_bifrost_*`; only persisted key constants retain `LATEST_KEY`.
|
||||
|
||||
The latest structural count is 32 closure family branches, 744 remaining
|
||||
substring assertions in the closure region, and 1,284 lines in
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -660,4 +660,4 @@ current_status:
|
|||
- Service lifecycle receipt history is now event-only: `load_epiphany_cultmesh_daemon_service_lifecycle_receipts` filters out the `epiphany-local/daemon-service-lifecycle-receipt/latest` mirror, while `load_latest_epiphany_cultmesh_daemon_service_lifecycle_receipt` remains the latest-state reader. Focused unit test `service_lifecycle_receipt_history_excludes_latest_mirror` proves two per-receipt writes return exactly two history records and latest points at the second. Fresh smoke `verse-query-lifecycle-history-filter-smoke` and live overview/triage `local-20260618-145632-497-efac6f0d` / `local-20260618-145632-321-867947af` prove compact swarm sights still expose service lifecycle attention plus the present elevated runbook artifact without daemon pokes or service mutation. Do not use a broad unscoped cargo test filter for this check on Windows; it fans out across bin harnesses and hit a broken pipe during this pass.
|
||||
- `epiphany-verse-query seed-compact` is the compact seed receipt for wrappers and read-only rites. The older `seed` command still prints the full local Verse context for explicit debugging, but compact wrapper modes now avoid full `seed`/final `query` readback after the combined overview proof exposed Windows debug stack overflow from full-context serialization pressure.
|
||||
last_completed_repo_swarm_cut: Huginn live-fire has crossed the first real repo Body from Persona pressure to branch-local Hands commit and Soul/Mind closure, and now has repeatable closure and redacted-public-proof mouths. On `E:\Projects\Huginn` branch `epiphany/huginn/first-awakening`, `tools/epiphany_local_run.ps1 -Mode repo-persona-intake` accepted item `huginn-inspection-readback-livefire`, Weksa/Persona intake remained sealed, and `epiphany-work derive-plan` lowered it to model-authored safe family `repo.status_section` for `README.md` only. `tools/epiphany_local_run.ps1 -Mode repo-swarm-run` advanced four bounded pulses: run-from-plan, adopt-from-plan, execute-from-plan, and close-from-execute. Huginn commit `e9b07c38fceabbdc89ea35c2156326c80c0393a2` updated only `README.md`; closure receipt `.epiphany\work\work-close-huginn-inspection-readback-livefire.json` records status `closed`, Soul verdict `passed`, Mind state commit `repo-work-close-huginn-inspection-readback-livefire-mind-commit`, safe family `repo.status_section`, path scope `README.md`, Bifrost publication gate, and `privateStateExposed=false`. Verification also ran Huginn's TypeScript compiler through concrete Node path: `C:\Program Files\nodejs\node.exe E:\Projects\Huginn\node_modules\typescript\bin\tsc -p tsconfig.json` passed. Native verifier `epiphany-repo-livefire-closure-smoke --workspace E:\Projects\Huginn --item huginn-inspection-readback-livefire --expected-path README.md --expected-family repo.status_section --expected-gate awaiting-publication --expected-blocker bifrost-publication-missing` checks closure receipt, Mind map entry, overview gate/blocker, authority seals, and `git show` changed paths, returning `status=ok`, `soulVerdict=passed`, `publicationGate=Bifrost`, and `privateStateExposed=false`. Wrapper `tools/epiphany_local_run.ps1 -Mode repo-livefire-closure -Workspace E:\Projects\Huginn -RepoWorkItem huginn-inspection-readback-livefire -SkipBuild` exposes the same read-only proof through the local operator mouth; artifact `local-20260621-190156-803-2f85ba15` printed commit, path, gate, blocker, Soul verdict, Mind commit receipt, and `privateStateExposed=False` without push, merge, publication, or target mutation. New wrapper `tools/epiphany_local_run.ps1 -Mode repo-work-public-proof -Workspace E:\Projects\Huginn -RepoWorkItem huginn-inspection-readback-livefire -SkipBuild` exports the redacted proof bundle and repo-local Verse index without publishing; artifact `local-20260621-190645-345-4555b1dc` wrote `.epiphany\public\proof-bundles\repo-work-public-proof-huginn-inspection-readback-livefire.json`, proof id `repo-work-public-proof-huginn-inspection-readback-livefire`, SHA-256 `857545b199f3e37eb06c2e757e5cfc201958e46667bb1f8403fd333a22620f63`, nine artifact rows, zero publication rows, and `privateStateExposed=False`. swarm overview readback `local-20260621-190701-140-b9519ec6` sees the `REPO-WORK-PUBLIC-PROOF` row and action row from Huginn's repo-local Verse with the same SHA-256 while Bifrost publication remains missing. Launcher compact modes are now named compact operator-context modes instead of read-only modes, and `bifrost-public-proof` summaries print item, target public Verse, room, proof SHA-256, review receipts, and credit receipts so publication receipts are auditable without claiming upstream sync.
|
||||
next_action: Continue the conceptual-substitution pass. Ten high-authority closure families, including publication and sync requests, are typed and guarded against regaining substring authority; sync has an explicit malicious push-grant fixture. The closure region still has 32 family branches and 667 substring assertions; closure contracts remain a parent-private lexical facade over external_governance and operations authority domains. External governance production anatomy is 668 lines and its counterfeit fixtures live in a dedicated private test include. Do not substitute a blind struct forest for coherent ownership. Provider chronology is explicitly external: Bifrost receipt contracts lack provider timestamp/revision, so Epiphany mirrors know only arrival order; all seven loader APIs, typed report fields, and JSON report keys now say arrival latest and no misleading aliases remain. Thirty-three duplicate test gates around provider writers/re-exports are removed while single test-only gates remain. Prioritize consequence-bearing request families and continue auditing evidence/security mirrors and adapters for borrowed authority.
|
||||
next_action: Continue the conceptual-substitution pass. Ten high-authority closure families, including publication and sync requests, are typed and guarded against regaining substring authority; sync has an explicit malicious push-grant fixture. The closure region still has 32 family branches and 667 substring assertions; closure contracts remain a parent-private lexical facade over external_governance and operations authority domains. External governance production anatomy is 668 lines and its counterfeit fixtures live in a dedicated private test include. Do not substitute a blind struct forest for coherent ownership. Provider chronology is explicitly external: Bifrost receipt contracts lack provider timestamp/revision, so Epiphany mirrors know only arrival order; loader APIs, CultMesh context fields, prompt consumers, typed report fields, and JSON report keys now say arrival latest. Only persisted LATEST_KEY constants retain external storage vocabulary. Thirty-three duplicate test gates around provider writers/re-exports are removed while single test-only gates remain. Prioritize consequence-bearing request families and continue auditing evidence/security mirrors and adapters for borrowed authority.
|
||||
|
|
|
|||
Reference in a new issue