This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Epiphany/notes/fresh-workspace-handoff.md
2026-07-19 05:51:27 +01:00

183 KiB

Fresh Workspace Handoff

Organizational product posture and current release blockers — 2026-07-18

This is not a special dogfood experiment. Epiphany's normal organizational product is a resident swarm that persistently models its authorized domain, derives bounded direction from that map, autonomously imagines improvements and features, and exposes a repository Persona through which the organization can converse and provide attributed feedback. Instructions are optional pressure; they are not the only source of useful work. Feedback is likewise pressure, not Mind adoption, Hands authority, Bifrost release authority, or Idunn deployment authority.

The signed VoidBot -> Bifrost -> Epiphany feedback path and the resident Self -> Imagination proposal-only path are implemented locally. The four structural release blockers identified in the first Soul audit are now closed in source and local proof:

  • admitted feedback now lives in a dedicated persona-feedback.cc store, not shared local Verse; classification is exact and Imagination has no direct Persona-reply route;
  • Eve connection/consensus intent and receipt authority, writers, projections, tool claims, tests, and smoke binaries are deleted;
  • Bifrost sidecar release is exact-authority/digest bound, Node is digest-pinned, Idunn alone invokes deployment, and daemon-owned typed RUDP health feeds the existing Idunn supervisor target;
  • scripts/smoke-persona-feedback-org-path.ps1 passed the real VoidBot writer -> Bifrost sign -> Rust ingress -> resident consideration -> coordinator launch -> proposal validation path for public, organization, and private feedback while Mind, release, local Verse, and public stores remained byte-identical.

Live Yggdrasil deployment and the Starfire-offline Discord rehearsal remain pending; source proof is not deployment proof.

Do not describe this as an experiment-only capability after these blockers are closed. The bounded autonomous loop is the product.

Workspace coverage storage cut is founded, not migrated — 2026-07-17

Live Yggdrasil evidence rejects c94fa580 as a deployment candidate. During that candidate, body.cc was rewritten by workspace-projection activity rather than repository observation. The rewrite is attributable to the surviving coverage writers sharing the Body store; it is not evidence that the Body observer changed repository substrate. Body owns observed substrate only: binding, immutable observations/manifests, and the current Body head.

Commit 261c7bc8 lands the replacement foundation. A runtime-side immutable epiphany.runtime.workspace_coverage_store_binding.v0 route and store-local gamecult.epiphany.workspace_coverage_store_binding.v0 bind a separate transactional workspace-coverage store to runtime, swarm, workspace, canonical path and file identity, exact repository Body route/envelope, Body-binding hash, and repository source identity. Transactional keyed CultCache admission is pinned beneath it. This is routing and storage foundation, not completion: obligation, plan, claim, attempt, recovery, checkpoint, progress, terminal receipt, coverage head, and retirement writers have not yet been migrated from Body/local Verse.

Authority map:

  • Owner: the workspace-coverage store owns projection lifecycle and proof; repository Body owns observations only.
  • Inputs: the exact pinned Body route/binding and current observation basis, sealed inclusion/projection/model plan, authenticated launch/provider incarnation, Idunn recovery authority, and waited Qdrant readback.
  • Outputs: immutable obligation/plan and claim/attempt/recovery history, checkpoint/progress events and heads, terminal receipt/coverage head, and retirement history.
  • Derived state: current claim, progress, coverage, warming, active, and query eligibility are joins over those records plus freshly revalidated Body and Qdrant; no store path or old head is truth by itself.
  • Forbidden writers: Body observer/bootstrap cannot write projection state; projector/checkpoint/recovery cannot write Body; local Verse, Idunn, heartbeat, health, deploy scripts, Qdrant, and presentation cannot advance coverage heads.
  • Shared path: prepare, acquire, each waited batch/readback, resume/recovery, final whole-scroll, health, and readiness resolve the same runtime binding, reopen exact Body read authority, and transact only through the pinned coverage store. Checkpoint and progress must admit atomically.
  • Cut line: migrate every projection envelope and bootstrap the binding, switch authority once, then remove Body/Verse writers and readers. Preserve exact signed envelope identities where predecessor digests depend on them. There is no dual-read or missing-binding fallback.

Next: perform that writer/bootstrap migration, prove Body bytes remain unchanged through projection, and only then build a new live Yggdrasil candidate. Keep c94fa580 rejected; do not lengthen a timeout or reinterpret its rewrite as an observer fault.

Signed Yggdrasil deployment admission cut complete locally — 2026-07-17

The failed GPU pressure run was a pipeline-contract failure, not a CUDA failure. The GTX 1080 previously sustained near-full duty, but the monolithic workspace projection published no durable Qdrant progress before the shell deadline. The replacement executor now checkpoints bounded batches, resumes from authenticated checkpoints after restart, and exposes checkpoint-derived progress independently of its heartbeat. Aggregate health is warming only while exact managed-process lineage, fresh signed heartbeat, and authenticated checkpoint advancement remain inside the 300-second no-advance lease. Only the terminal current receipt/head can produce active; the deploy shell has no projection wall-clock verdict.

The cross-repo deployment authority cut is implemented and Soul passes it. Epiphany signs runtime health with exact release id, witness, source commit, deployment request id, process incarnation, and sequence. Idunn verifies the pinned public-only host anchor and persists generic health as observation only. Promotion reads idunn.signed_health_admission.v1, requires it to match the current health observation, expire within 180 seconds, and join the exact monotonic idunn.current_deployment_request.v1 head plus its Bifrost-authorized idunn.deployment_request.v2. Health/admission and request/head transitions use cross-process CultCache compare-exchange over exact prior envelopes. CultCache now writes a synced unique temporary file and atomically replaces the live store without a delete gap. Concurrent N+1/N+2 admission proof finishes at N+2; equal-second request IDs no longer decide authority lexicographically.

First trust enrollment refuses any pre-existing app-owned private identity when no root anchor exists. One enroll-trust-anchor process creates the signer and exports its public anchor; root then pins only that public document as root:idunn 0640. Later deployments must byte-match it. The deploy actuator uses Idunn's typed verifier with the exact request/release tuple; journal prose, generic health, and warming cannot promote.

Local proof: Epiphany runtime-health 8, workspace-progress 13, workspace-projector 22, host-identity 3, supervisor 17; Odin core 15 and Idunn 45 all pass. Gamecult shell syntax passes under Git Bash. Final hostile Soul audit reports no P0/P1. Next: commit/push all three repos, deploy updated Odin/ Idunn to Yggdrasil first, then Bifrost-authorize and Idunn-deploy the exact Epiphany commit. Verify live signed warming, batchwise Qdrant growth, GPU duty, terminal exact-request active admission, and restart resume. No reboot is authorized.

Live Body-grounded admission rite — 2026-07-16

Thread readiness-grounding-20260716 now has a typed, immutable user objective and an accepted code-grounded Eyes result. Cold-start objective intake, explicit local-Verse path ownership, source tools for Eyes/Modeling, canonical result readers, failed-result supersession, reorient auto-acceptance, and the CRRC-regather handoff to Eyes are implemented in the current worktree.

The live rite exposed output-contract wounds one at a time. Modeling operations, frontier items, nodes, edges, profiles, anchors, code refs, observations, and evidence now have provider-facing typed shapes matching canonical ingress; explicit null no longer impersonates a reviewable state patch. Failed worker output is terminally sealed with a bounded diagnostic rather than marked complete. The stale OpenAI-runtime Modeling fixture now carries and echoes a Body basis and passes again.

No current Modeling admission exists yet. After the Body was committed at f574a194, Modeling completed a source-grounded typed proposal over the repository Body. Mind correctly refused it because ordinary Evolution also carried upsert_frontier, which requires an explicit frontier request. The prompt now makes the invariant explicit: ordinary Evolution changes nodes and edges only. Commit this small correction, rebuild the coordinator, supersede the refused result, and relaunch in --mode run with the accepted Eyes basis. Make no source edits between the final Body observation and Mind admission. Only after Mind accepts an exact Body-basis RepoModel patch should epiphany-memory-semantic repository-readiness be run with local Ollama qwen3-embedding:0.6b, 1024 dimensions, and the runtime spine.

The next nodes/edges-only proposal reached Mind and exposed one further missing launch input: the worker invented a workspace-derived domain id and used active lifecycle, while the canonical revision-0 RepoModel has domain repo and permits only observed/proposed/accepted/stale/retired for repo profiles. <canonical_repo_model_shape> now carries exact current revision/hash, existing domains, and lifecycle law into every Modeling launch. The rejected result is already superseded. Rebuild/commit this context change, then relaunch once.

Exact remaining sequence:

  1. finish tests/format/docs and commit so the Body is stable;
  2. relaunch Modeling against thread readiness-grounding-20260716;
  3. inspect only the operator-safe role finding, then auto-accept if its Body basis, RepoModel patch, and state patch are typed and current;
  4. run the live repository-readiness join and preserve its projection;
  5. investigate the provider failure only through typed request/receipt diagnostics if it repeats; raw worker thought remains sealed.

Counterfeit planning writers cut - 2026-07-15

Modeling and Eyes traced the repo-frontier planning family and found a typed but disconnected island. Self's deterministic planning request is real. The Imagination candidate and Mind Adopt/Refuse/Hold documents were only authored by tests or arbitrary callers through public persistence functions. Generic Imagination statePatch.planning is a separate thread-state vocabulary, not a repo-frontier candidate. Adopt suppressed future request selection but changed no RepoModel bytes and affected no Hands route.

The public candidate/adoption writers are removed; their internal functions are temporary test scaffolding, not production authority. The full source-grounded replacement map is notes/repo-frontier-planning-authority-map.md. Build the real nerve using the claim-repair shape: Self request, coordinator-owned typed Imagination projection and request-keyed launch binding, exclusive immutable result echo containing the candidate, then Mind-only correlated Adopt/Refuse/Hold. Adopt must produce a narrow admitted model transition and downstream Hands truth; Refuse/Hold remain inert receipts. Delete the remaining fixture writers when that lands. Core verification is green at 319 passed, one ignored.

Eyes-to-Modeling claim correction nerve complete - 2026-07-15

The Aetheria-shaped corrective nerve is now closed from immutable Eyes contradiction through Modeling proposal to Mind admission. A claim repair launch may produce one immutable role-worker result carrying the exclusive claimRepairRequestId echo and RepairClaim purpose. Result schema and worker output contract are versioned v1; admission receipts and their contract are v3. Malformed RepairClaim results carrying proposal/frontier echoes, Verification authority, state patches, or self patches are rejected before persistence.

Mind replays the current repair request, challenge, Eyes packet and admissions, the unique coordinator launch binding, exact worker launch document hash and typed projection, runtime/thread identity, model base, target node hash, and exact evidence set. It permits exactly one ReviseNode; the challenged claim text must change while id, domain, profile, kind, creation time, and lifecycle remain invariant. Review, next model, and receipt still share the model CAS. Challenge resolution is derived from the target node hash changing; there is no repair flag or cleanup writer. Exact retry validates the persisted receipt and current admitted model. Hostiles cover swapped request, adjacent/missing evidence, extra operation, wrong target, unchanged/timestamp-only claim, identity/lifecycle mutation, state/self authority smuggling, forged launch hash, and counterfeit retry receipt with byte-identical refusal. Soul passed the final boundary; the core library is green at 318 passed, one ignored.

Next: bind Self's existing frontier planning request to a real Imagination result and Mind Adopt/Refuse/Hold admission, then build the production semantic index over typed graph claims so Modeling's persistent map becomes searchable body knowledge rather than a scan-heavy archive.

Runtime worker results are actually immutable - 2026-07-14

Eyes found that the document called an immutable role-worker result was still published through ordinary CultCache put, allowing a second payload at the same runtime job identity to replace the thought before Mind admission. The writer is now absent-only: an exact retry converges without rewriting bytes; any different result at the same job fails without mutation; concurrent loss reloads and accepts only exact equality. The full core library passes at 316 passed, one ignored. Claim-repair result correlation may now rely on one persisted worker result rather than a politely named mutable slot.

Modeling claim-repair launch authority landed - 2026-07-14

The inert RepoModelClaimRepairRequest now reaches Modeling through one coordinator-owned typed context projection and one immutable, request-keyed launch binding. The coordinator reconstructs the projection from current canonical state; callers cannot prepopulate it, combine it with proposal Modeling authority, substitute any causal field, or spend one repair request twice. The launch document hash binds the exact effective document delivered to the worker. This slice still grants no RepoModel write authority.

The launch race exposed a deeper state-transaction fault: two coordinators could validate the same logical state and both publish. CoordinatorStateTransaction now captures one exact typed cache image, validates the canonical state by polymorphic (type, key) identity, and commits state plus companions through one backing-store CAS. Immutable companions are absent-only or byte-equivalent retries with the persisted timestamp preserved. Explicit captured replacements may replace only the exact envelope observed at open. Imported nondefault host state may seed an absent store once. Focused hostile tests prove one race winner, no losing job/request/event/runtime link, immutable collision no-write behavior, captured-replacement contention, and same-key/different-type coexistence. Soul re-reviewed the repaired proof surface and passed it; the full core library is green at 314 passed, one ignored.

Next: make the Modeling result echo this repair request exclusively, then add a dedicated narrow patch purpose and Mind admission that replays the full chain and requires the exact challenged claim bytes to change. No other result or model revision may clear challenge pressure.

Modeling name authority correction - 2026-07-14

Modeling is the standing embodied organ that models the Body. Proprioception is a retired legacy name, not a parallel faculty or worker posture. The global Codex doctrine had missed this migration and could still force Self to dispatch Proprioception workers; runtime work-loop telemetry also targeted the retired stage name. Both are corrected to Modeling. Keep legacy string handling only where it migrates old persisted agent identity into Modeling, and keep old prose only where it is clearly historical evidence.

Current orientation — 2026-07-12

Aetheria organ-structure evidence — 2026-07-13

Task 019f3fe1-9f69-74e3-97fb-a18490d72119 supplied strong positive evidence for the Epiphany hypothesis without requiring raw worker-thought inspection. Modeling maintained concrete migration bodies across Aetheria, EveUnity, and CultLib; Eyes found CultCache crash consistency and SoA ownership skew; Hands landed bounded disjoint changes; Soul rejected a registry repair that still allowed readers to observe partial refresh; Imagination corrected a roadmap that called unfinished migration complete; Self preserved dependency order and kept unrelated compile skew out of coherent commits.

Prompt forms worth preserving:

  • require the exact compile boundary and deletion line when research expands;
  • give Hands hostile negative acceptance criteria, not only a desired output;
  • explicitly allow a worker to stop and name a missing substrate primitive;
  • review diffs against authority and concurrency invariants after tests pass.

The primary lesson is not Modeling persistence in isolation. The organ structure changed the quality of the engineering: discoveries altered plans, plans bounded disjoint cuts, Soul could reject a plausible green fix, Imagination could reject roadmap mythology, and Self preserved dependency order without flattening those different judgments into one running narrative. This is positive evidence for durable organ-to-organ cognition, not merely for role-flavored prompting.

That lesson now has a concrete corrective nerve. Eyes can persist an immutable RepoModelClaimChallenge against one serialized claim at one exact admitted model revision. Runtime-spine admission replays the canonical Eyes packet, unique current Mind receipt, model identity, and claim hash in one absent-only CAS. Self uses the same validated challenge predicate for Imagination planning, Hands route selection, and actionable-Hands status; only frontier targeting the challenged claim is withheld. Eyes never writes RepoModel, and no challenge ids were stuffed into the graph. Core proof is 304 passed/1 ignored and independent Soul review passes. Next build a typed Modeling challenge-repair request and Mind admission path so evidence can reshape the shared map, then let Self and Imagination revise the campaign from that repaired substrate.

The first repair foundation is now inert and exact. A challenge remains live across unrelated RepoModel revisions while its target claim bytes are unchanged; an unrelated edit can no longer launder Eyes pressure away. Self can persist one RepoModelClaimRepairRequest binding the challenge and Eyes packet, original and unique current admissions, current model and claim, runtime/thread, and affected frontier hashes in one CAS. It deliberately has no repair patch purpose, result echo, worker launch authority, or Mind admission effect. Core proof is 306 passed/1 ignored and Soul passes. Next wire coordinator-owned typed Modeling launch projection/binding and exclusive result correlation before introducing any repair actuator.

Do not substitute the first linear frontier identity proof for that larger lesson. Modeling -> Mind -> Self -> Hands -> Soul -> Modeling proves that one wound can retain causal identity. The awakened anatomy also needs typed backward pressure: Eyes findings that challenge model claims, Imagination revisions that change campaign shape, Soul rejections that create new evidence requirements, and Self rerouting based on those admitted artifacts. Modeling is the shared situational substrate, not the whole organism and not the product.

Persistence is the connective-tissue gap exposed by that success. Modeling's repo anatomy, confirmed/changed/invalidated claims, freshness, frontier, and semantic-index consequences must live in typed searchable state; Self must route from those artifacts; later Hands and Soul prompts must receive the relevant frontier and evidence. Otherwise an excellent coordinator can perform the structure transiently, but the next awakened Self inherits only the applause.

The first safe piece of that connective tissue is now implemented. The existing memory-graph aggregate owns a revisioned, hashed RepoModel plus typed migration frontier; exact frontier claim IDs precede BM25 ranking; dependency prerequisites precede dependents under budget; and the frontier's body, question, gap, status, dependencies, and recommended organ enter dynamic role context. Canonical state cannot be reverse-built from thread graphs, replaced by raw refresh/bootstrap, or lost to concurrent valid patches: CultCache now provides exact-envelope CAS and insert-if-absent beneath its cross-process sidecar lock, with hostile race proofs. Soul rejected two earlier cuts before accepting this authority boundary.

The first causal-identity slice of that Aetheria loop is now closed. Modeling emits a typed RepoModelPatch; Mind admits the exact immutable worker result, patch bytes, evidence, review, and replacement model under one conditional store transaction; Self selects one eligible Active frontier item from the admitted current model; and the resulting route freezes model revision/hash, item hash, claims, dependency order, and path scope. Hands intent, review, Substrate grant, frontier authority, patch, command, and commit documents are immutable insert-once records. Soul receives a typed verification request bound to that complete chain. A later typed Modeling request binds the accepted Soul result and permits exactly one verdict-incorporation revision of the same item: pass yields Resolved; needs-review, needs-evidence, or fail yields Blocked. Self derives Hands readiness from the same selection predicate, so Blocked/Resolved items cannot be routed and no default implementation authority survives without an admitted actionable frontier.

Soul found and forced cuts of four plausible green bypasses before accepting the slice: ordinary Evolution could mutate routed frontier lifecycle; Hands receipts and their intent/review/grant foundation were mutable by identity; the Modeling request trusted caller-supplied temporal acceptance; and a split model admission/thread-state commit could wedge on retry. Evolution is now barred while a current-model route exists and cannot manufacture Blocked or terminal frontier lifecycle. Every causal companion uses absent-only cross-process CAS with exact retry. Final verdict admission replays the full authority and consequence chain immediately before the model CAS. Verification acceptance is reloaded from canonical thread state, and stable review identity makes the split commit recoverable. Hostile substitution, stale-model, counterfeit, concurrent-writer, crash-window retry, pass/nonpass, and nonselection tests are green; the full core library proof is 303 passed and 1 ignored.

This is still not the whole Aetheria lesson. It proves durable causal identity and backward Soul pressure, not the complete multi-organ correction ecology. Eyes challenges and Imagination campaign revisions still need typed admission and Self routes. The older RepoWorkModelingRequest/Route/Finding path is also misnamed parallel closure machinery: it models one already-executed work item, not repository anatomy. Preserve useful plan/execute receipts, but converge that workflow on canonical RepoFrontier route/Hands/Soul/Modeling authority and demote RepoWorkMapEntry to derived closure history. Do not let item-slug routes or the legacy special Modeling worker close work independently of RepoModel.

Stage 1 of that convergence is now landed in the worktree and Soul-approved. The parallel authority was cut before its replacement was enabled. Legacy RepoWork Modeling request/route/finding/map types, worker launch, OpenAI ingress, runtime writers, manual generation retry, Mind plan-adoption type, independent Hands grant, CultMesh overview/readiness/public-proof writers, and closure contract corpse are deleted. epiphany-work is an 82-line quarantine mouth: every mutation/scheduling/publication command refuses before substrate access; overview emits only an explicit historical-only non-authoritative projection. Verse query cannot turn historical map rows into current gates, actions, closure, acceptance, pending Bifrost requests, or accounting. Legitimate Bifrost artifact-acceptance and metrics receipts still produce accounting rows without consulting RepoWork history. The authoritative serial proof is core 294 passed/1 ignored, epiphany-work 1 passed, Verse query 13 passed, OpenAI runtime 8 passed; independent Soul verdict is PASS.

The temporary outage is intentional. Do not resurrect old plan/run/adopt/ execute/close code to restore motion. The next build begins from the authority map in notes/repo-work-canonical-convergence.md: inert proposal -> ordinary Modeling frontier admission -> typed Self planning request -> Imagination plan candidate -> Mind plan adoption -> distinct Self execution route -> canonical Hands/Soul/verdict-incorporation chain. Plan readiness does not belong in RepoFrontierStatus, and a generic phase router has not earned existence.

The typed pre-Hands planning foundation is now implemented and Soul-approved. RepoFrontierWorkProposal is immutable, content-hashed, runtime-bound, rejects marked private state, and has an explicit inert contract. It cannot create a frontier or route. RepoFrontierPlanningRequest is a distinct Self document: it validates the canonical model and admission, chooses the deterministic first dependency-ready Active Imagination frontier, freezes item hash/source scope, and uses current-model CAS. RepoFrontierPlanCandidate binds that request and revalidates model/admission/item/scope; safe paths must be contained by the frozen scope and checks/stop/rollback lists must contain real text. Mind plan adoption binds exact candidate bytes and current anatomy. Adopt owns one deterministic model+frontier claim; concurrent candidates produce one winner, while Hold/Refuse cannot squat the reserved claim prefix. Exact retries revalidate current state. Nothing in this foundation emits an execution route, Hands authority, or frontier lifecycle change. Full core proof is 296 passed and 1 ignored; independent Soul verdict is PASS.

Proposal-to-frontier admission is now explicit and Soul-approved. Direct User intake writes one immutable, payload-hashed, nonprivate proposal bound to the persisted runtime and thread; repository/workspace remain provenance, not counterfeit authority. Coordinator selection is immutable, exact-time, and race-safe. The coordinator launch transaction is the sole writer of a typed proposalModelingContext projection inside the persisted Modeling launch document; it atomically seals that document's MessagePack SHA-256 in an immutable job/request/proposal launch binding. Prompt prose and result echoes are correlation only. Admission reconstructs and compares the exact proposal, selection, projection, patch base, launch hash, job, binding, runtime, and thread chain. Ordinary Evolution cannot mutate frontier. Proposal Evolution gets exactly one frontier operation and it must be one proposal-citing UpsertFrontier; it emits no plan, route, Hands authority, or lifecycle decision. Core proof is 302 passed/1 ignored, OpenAI runtime proof is 8 passed, and final independent Soul verdict is PASS. Hostile proofs cover privacy laundering, changed selection time, concurrent selection, corrupt persisted contracts and hashes, caller-prepopulated context, stale base, swapped launch and companions, duplicate backend binding, dual authority echoes, request reuse, delimiter injection, and byte-identical no-write refusals.

The next artifact-contract audit then cut epiphany.persona_chat.v0: its live writer and catalog had disagreed on field vocabulary, evidence fields, and lifecycle closure. The writer is now typed Rust with closed draft/blocked/posted status, the schema is strict and complete, and legacy snake_case survives only on read. Proprioception then identified and Hands rebuilt the larger false surface. epiphany.persona_surface.v0 is now a strict, content-free projection of discriminated artifact and consequence-owner action references. It reports rejected rows and source failures as attention, while owning neither speech eligibility nor Mind/Bifrost/provider consequences. Reddit and Other now have strict typed Rust artifacts and registered schemas; Other ends at a crossing request and can never claim publication. Its surface action remains absent until a typed intent contract actually exists.

This reinforces the Aetheria lesson: Modeling found the catalog fiction, Hands cut the producer boundaries, and Soul-shaped negative checks caught content leakage and false consequence ownership. Persistent anatomy lets the next Hands pass start at the wound instead of ceremonially rediscovering the body.

The following Aetheria-shaped pass cut two Idunn split truths. Swarm overview now consumes the same managed-child sight as the specialist Idunn view, but exports typed rows only; Gjallar/Eve remain downstream lowerers. Enabled child readiness requires native process executable identity matching the lifecycle receipt, so PID reuse cannot counterfeit life. Separately, deployment-aftercare-audit no longer accepts raw caller response files, and readiness no longer launders its cached projection. Typed Idunn deployment and aftercare receipts must resolve and bind across identity, runtime, Verse, result/ref, runbook, source commit, and current HEAD.

The next Modeling pass repaired the targeting organ itself. Memory-graph v1 binds repo anatomy to the actual state-store identity, accepted revision, and SHA-256 source bytes. Cache presence, path/symbol locators, and serialized freshness no longer make anatomy Ready. Launch and explicit refresh share one validator; missing/changed node, edge, or link anchors stale their summaries. There is still no production semantic index for graph claims, so Modeling index availability is honestly unavailable rather than inferred from code search.

The repo-work adoption authority rebuild is now implemented. run_adopt consumes an immutable typed RepoWorkPlanAdoptionReview bound to exact workspace, plan/run paths and SHA-256 bytes, action, command, commit message, changed paths, queued Hands review, and Substrate grant. It atomically creates an immutable RepoWorkHandsGrant plus approved Hands review; Refuse/Hold, counterfeit digests, swapped paths, and same-ID replacement are rejected. run_tick can only report awaiting-mind-review. run_execute rereads the whole chain and revalidates persisted Substrate authority before PowerShell. Soul closure now reloads typed runtime truth and cross-binds it to the execute receipt; a swapped valid adoption chain fails. Six compiled smokes that taught the deleted caller-writable mindAdoptionDecision model were removed.

Next architectural cut: finish the Aetheria lesson rather than polishing this gate. The proposal now reaches Modeling as an exact contestable artifact, but the larger corrective ecology is still incomplete. Add typed Eyes challenges that can invalidate model claims and create evidence pressure without direct RepoModel write authority; then bind the existing planning request to an Imagination worker result and Mind adoption. A production semantic index over typed graph claims remains required so those organs can retrieve the living migration map instead of rediscovering it from files. Memory-graph freshness is substrate; durable multi-organ correction is the organism.

Epiphany is in an authority-provenance purification pass. The live question is not whether a command can produce a plausible document; it is whether the subsystem writing that document owns the fact it asserts.

The confirmed conceptual substitutions have been cut:

  • read-only Verse diagnostics no longer seed or promote the state they inspect;
  • Bifrost publication, public-proof publication, artifact acceptance, and metrics callers submit requests without manufacturing provider receipts;
  • daemon tool invocation, Eve connection, and daemon poke callers submit intents without manufacturing provider acceptance or lifecycle results;
  • Persona feedback no longer manufactures Imagination consensus;
  • arbitrary operator-snapshot JSON cannot be promoted into canonical tool intent or receipt state;
  • operator-run completion is derived from a fresh, contained result artifact rather than caller status;
  • daemon service plan/execute authority is encoded by explicit command identity;
  • synthetic receipt smokes are confined beneath .epiphany-smoke.
  • generic local Verse bootstrap no longer publishes provider advertisements, Eve surfaces, or hosted tools; provider absence survives bootstrap.
  • the central provider-advertisements / publish-odin compatibility mouth is deleted; only provider-owned bodies may publish presence to Odin.
  • bulk and daemon-bounded central provider-state writers are deleted. Each epiphany-cluster-daemon heartbeat publishes liveness only; it cannot turn topology into an advertisement, Eve composition, or hosted-tool claim.
  • cluster daemons do not bootstrap or query the full Verse. Missing persisted topology is a pre-write refusal; explicit operator bootstrap owns shared policy, topology, contracts, and brake initialization.
  • daemon-supervisor production commands likewise require persisted bootstrap and cannot create shared state. Its two audit-smoke fixture initializers are hard-confined beneath .epiphany-smoke.
  • query-CLI requester/operator mutations also require persisted bootstrap. Only explicit seed commands and the fixed aggregate smoke may initialize the shared local Verse.
  • worker launch-context rendering requires the existing Verse and cannot seed it. The prompt-context smoke accepts no destination and is fixed beneath .epiphany-smoke.
  • orphaned Bifrost/GitHub/Maintainer response and Imagination consensus constructors/writers are test-only. The aggregate smoke proves requests stay pending; production keeps readers for externally provider-authored documents.
  • bulk seven-daemon readiness construction/writing is test-only. Production loaders enumerate topology; the aggregate smoke owns a fixed-store local fixture helper, while real liveness remains single-daemon authored.
  • topology-derived provider builders survive only as test fixtures for legacy v0 shapes. Live consumers ignore provenance-free v0 Odin/Eve/tool rows; explicit bootstrap deletes stale rows of exactly those families. Topology eve_surface_id is address metadata only, not surface availability.
  • bootstrap no longer writes default operator status. The dedicated writer was a dead ready template, so the writer and its now-ownerless schema/context/ prompt/reader family are deleted. Source-derived operator snapshots remain.
  • agent-state SoA sync requires bootstrap; report preserves missing filesystem state. The wrapper explicitly composes sync then report rather than hiding a refresh inside readback.
  • query, cluster-daemon, and daemon-supervisor argument parsing no longer creates store parents. CultCache's single-file backing store returns empty before taking a lock when its file is absent, so all readers preserve filesystem absence without per-loader guards. Full context projection refuses a missing Verse; explicit bootstrap or a real writer owns CultMesh body creation.
  • the generic epiphany-eve-provider CLI is deleted: caller-supplied provider identity/status was not provider participation. Eve requests remain pending; local response construction/writing is test-only until a real target daemon or authenticated ingest boundary owns the receipt.
  • daemon-tool response construction/writing is also test-only. No shipped host daemon currently responds; the aggregate smoke proves a pending intent and a missing host receipt rather than fabricating Hands acceptance.
  • the deployment-config family smoke and its aggregate MVP-gate row are deleted: they fabricated Idunn deployed/complete receipts. Epiphany exposes config audit/runbook requests and typed Idunn readers, but no local deployment or aftercare response writer.
  • the artifact-acceptance/metrics response-closing smokes, Bifrost accounting bundle, wrapper mode, and aggregate green gate are deleted. Their request cargo remains open until genuine Bifrost/Maintainer response ingest.
  • generic repo-work readiness approval is deleted. The former command accepted four arbitrary strings as Maintainer/Soul/Mind/Bifrost reviews; readiness remains sight-only and the request family awaits genuine reviewer evidence.
  • the aggregate repo-swarm MVP gate and wrapper are deleted. It painted green rows from prior smoke summaries and local fixtures rather than exercising one live end-to-end organism. Use focused tests plus live-fire evidence instead.
  • the fresh-repo MVP smoke is deleted. Its disposable Git operations were real, but its PR, maintainer-review, merge, Bifrost, and Soul evidence was supplied by the same local caller rather than those owning bodies.
  • epiphany-work publish and sync are deleted. The first promoted arbitrary receipt strings into publication authority; the second promoted arbitrary merge strings plus Git ancestry into merge authority. Bifrost intent, provider receipts, and read-only ancestry are separate paths.
  • legacy work-publish-*.json and work-sync-*.json are no longer read by overview, readiness, scheduling, receipt-chain, or proof-bundle paths. Dead writer artifacts cannot remain living authority; closed work waits at awaiting-publication until an owner-aligned provider projection exists.
  • epiphany-hands-action record-pr is deleted. Caller-transcribed PR and Bifrost fields cannot create Hands publication proof; PR construction and persistence are test-only pending an authenticated adapter owner.
  • ownerless provider-result actuators are no longer public production API. Eve/daemon-tool acceptance, Bifrost publication/GitHub/public-proof/artifact/ metrics results, and Imagination consensus constructors/writers are cfg(test); production retains their typed readers for real ingest.
  • repo closure no longer accepts caller echoes of Modeling model ref, verdict, finding, authorship, or summary. The scheduler no longer transcribes them. Full closure reads the immutable runtime-spine Modeling finding directly.
  • repo closure no longer accepts caller-selected verification commands or an optional source-grounding flag. Soul uses fixed Git consequence inspection, mandatory grounding, and fails when typed plan/family evidence is absent.
  • callers cannot overwrite Soul verdict narration or choose Mind's immutable admission revision. Soul derives the explanation; initial map admission is revision zero and later evolution uses typed Modeling route generations.
  • Hands binaries no longer construct Substrate Gate grant structs inline. Grants are non-exhaustive externally and come from narrow fixed-policy constructors owned by the substrate_gate module.
  • Hands persistence resolves its grant rather than trusting an ID label. Grant identity/scope/operations/paths and approved review must match each intent and patch/command/commit consequence; grants are immutable.
  • cluster-daemon heartbeat no longer accepts caller liveness or note fields. A successful owning-body heartbeat derives ready; degraded/down require observed supervisor or timeout evidence.
  • verse-query's mega-smoke no longer writes synthetic Idunn service runbooks or lifecycle receipts into its selected store and then verifies its own state. Focused daemon-supervisor smokes own quarantined lifecycle fixtures.
  • daemon-supervisor smoke confinement is real containment, not component-name matching: parent traversal and stores outside workspace .epiphany-smoke are refused before fixture seeding.
  • Thirty-two repo-family and survival smokes no longer accept an independent deletion root. They derive .epiphany-smoke only after canonicalizing the selected repo root; --smoke-root is rejected before creating its target.
  • Idunn lifecycle receipts no longer accept caller-transcribed executable/schema hashes, witness identity, required types, or a preflight-pass bit. Repo work consumes the runtime's real preflight directly; Idunn reports process facts.
  • Windows service install exit zero is install-command-succeeded, not installed. Single-service completion requires SCM status/reconcile; cluster completion requires the observed cluster service audit and cannot cite an earlier copy of its own execution-audit verdict.
  • Service lifecycle projection selects the actual latest family event. An old attention receipt no longer masquerades as current state after recovery; newer failures still surface immediately.
  • The lifecycle latest mirror is event-time-owned, not last-writer-wins. Invalid/reversed timestamps are refused and delayed old receipts cannot move the mirror backward.
  • Scheduler latest is likewise completion-time-owned. Tick timestamps are validated, reversed intervals are refused, and delayed replay cannot rewind the scheduler projection.
  • hands-action-gate/latest is creation-time-owned. Delayed mirror replay cannot advertise obsolete actuator scope or record-pass commands as current.
  • role-review-event/latest is creation-time-owned. Delayed acceptance or supersession readbacks cannot rewind Self/operator coordination context.
  • coordinator-run-receipt/latest is creation-time-owned. Delayed runs cannot replace the current final action or artifact projection.
  • Work-loop telemetry is now validated internal evidence and production-time ordered. Delayed or wrong-Verse packets cannot replace Soul/Modeling's current Hands consequence chain; future receipt lower bounds are refused.
  • Repo-work map latest is Mind-admission-time-owned. Delayed older projections cannot rewind the queue map, and mirroring before admission is refused.
  • Repo-work overview global latest is generation-time-owned. Delayed overview transport cannot make an obsolete queue gate or next move current.
  • Repo-work readiness global latest is generation-time-owned. Delayed sight-only reports cannot replace current proof visibility.
  • The writerless repo_work_readiness_review document family is deleted from schema registration, exports, loaders, receipt directory, swarm overview, TUI, and Bifrost accounting. Real review receipts retain their owners.
  • Repo-work public-proof global latest is generation-time-owned. Delayed proof transport cannot replace the current commit/hash evidence projection.
  • Agent-state SoA latest is generation-time-owned and local-area confined; delayed summaries cannot rewind prompt/swarm self-knowledge.
  • Operator snapshots are validated internal-Verse observations and latest is generation-time-owned; delayed status transport cannot rewind the observed coordinator/runtime surface.
  • Operator-run receipt admission resolves its intent by run_id, not by the unrelated global latest mirror. Intent/receipt mirrors are validated and owner-time ordered; concurrent runs retain independent identity.
  • Prompt assembly joins Eve and daemon-tool receipts to intents only by matching intent_id; independent latest mirrors can no longer fabricate a causal completion in model context.
  • Bifrost prompt/accounting chains follow typed intent -> publication -> GitHub receipt identity. Independent latest documents cannot close publication, lend review/credit counts, or supply a counterfeit public reference.
  • Collaboration accounting follows consensus feedback_id; unrelated latest consensus cannot close another Persona feedback lane or lend public refs.
  • Artifact-acceptance and metrics receipts still lack an explicit repo-work request/map identity. Do not infer it from item/workspace/branch/commit; accounting keeps these lanes open with requestIdentity=missing while still showing provider receipt proof completeness. Repair the Bifrost-owned contracts before claiming concurrent-safe closure.
  • Repo-work queue receipts carry typed queue/selected row objects. Swarm stop classification no longer reparses QUEUE-RUN | key=value TUI prose; legacy or hostile strings cannot steer gate, blocker, item, branch, or next move.
  • Receipt-directory runbook selection uses typed service_id only. It no longer recovers service ownership by splitting human route prose at ::.
  • Deployment operational audit and runbook read one typed TOML model. Substring presence, comments, wrong sections, and silent watched-ref/script defaults no longer substitute for valid deployment configuration.
  • Repo-work deployment closure uses that same typed model and semantic predicates; the duplicate substring validator is deleted.
  • Secret-policy request closure parses typed TOML and validates request, antecedent, receipt, security-packet, and authority semantics. Comment prose cannot counterfeit secret/write/deployment denials.
  • Dependency-policy request closure parses typed TOML for supply-chain scope, receipts, evidence requirements, and authority seals; comment prose cannot counterfeit package/lockfile/network/CI denials.
  • Deployment-request closure parses typed TOML for Idunn ownership, antecedents, receipts, deployment packet, and authority seals; comment prose cannot counterfeit SSH/push/deployment denials.
  • Verse-query smoke reset proves the exact built-in path and canonical strict containment beneath .epiphany-smoke immediately before recursive deletion.
  • The four typed closure contract families live in epiphany_work/closure_contracts.rs; epiphany-work is their orchestrator. The module is parent-private and preserves family-specific predicates rather than exporting generic policy machinery.
  • Bifrost provider receipt contracts still lack provider timestamp/revision. Do not invent consumer-side ordering; repair that in a Bifrost-owned schema.

The presentation boundary is now plain: swarm overview is a generic compact read-only projection. Gjallar is a downstream TUI application on Nightwing and is not an Epiphany organ, provider, owner, runtime, or architectural dependency. Eve/CultUI graphs may be lowered or composited downstream without Epiphany caring which presentation client does it.

Static cluster topology is declaration, not attendance. Bootstrap persists seven faculty routes and desired private-Verse/daemon/Eve addresses, but missing provider status now produces zero observed daemon rows. Topology and overview publish explicitly declared counts separately from observedDaemonCount; daemon heartbeat sight never claims an agent count. Restart-policy rows may say unobserved for a desired target so Idunn can reconcile it without inventing a body. Prompt context names these as declared routes/targets. The deleted unknown_daemon_status constructor cannot put seven empty helmets on the roll.

The Epiphany-local bifrost-ledger mouth is deleted. It assigned external owners and accounting closure from response-shaped documents found in a shared local store without authenticated provider ingress. Requester-owned publication and public-proof intents plus Persona feedback remain. Provider response absence now has no local closure or audit route. Do not restore a ledger projection until an ingress receipt binds provider identity/contract, transport session, exact payload hash/document id, correlation, target runtime/Verse, admission time, and verification result.

Authority map

  • Request owners write intents and requests.
  • Provider bodies write acceptance, execution, lifecycle, and result receipts.
  • Diagnostics read persisted facts; absence remains absent or unknown.
  • Adapters may project edge state but cannot promote it into canonical provider truth.
  • Smoke fixtures may manufacture synthetic state only inside fixed disposable roots.
  • swarm overview owns no operational fact and performs no scheduling, publication, deployment, lifecycle, admission, or provider acceptance.

Rehydrate

Read, in order:

  1. state/map.yaml
  2. notes/epiphany-current-algorithmic-map.md
  3. notes/conceptual-substitution-audit-2026-07-12.md
  4. notes/receipt-writer-provenance-audit-2026-07-12.md
  5. notes/epiphany-fork-implementation-plan.md

Then run:

cargo run --manifest-path .\epiphany-core\Cargo.toml --bin epiphany-state -- status

Historical implementation detail belongs in git history, smoke artifacts, and the evidence ledger. Do not restore deleted writers or requester-authored receipts from old proof prose.

Next real move

Continue the modeling pass beyond receipt writers. Tool-request, metrics-request, artifact-acceptance-request, and credit-request closure now use typed family contracts and cannot accept comment-counterfeit execution, spend, acceptance, or credit seals. Inventory remaining substring closure families and production paths where a projection, cache, adapter, scheduler, coordinator, or compatibility surface asserts a fact owned elsewhere. For each candidate, name the owner, allowed inputs, emitted state, forbidden writers, and negative proof before changing code. Also audit remaining non-receipt smoke binaries for path escape or destructive scope.

epiphany-repo-personality-smoke reset is now canonically confined beneath .epiphany-smoke; fixed default provenance no longer authorizes recursive deletion. Continue the same resolved-containment audit across remaining smoke reset helpers.

The 32 repeated timestamped family/lifecycle smokes no longer reset occupied leaves. They atomically claim a fresh directory with create_dir and fail on collision, removing their recursive-delete authority entirely.

Seven UUID-scoped temp helpers now use exclusive create_dir, not create_dir_all; a pre-existing leaf is refused before work and can no longer be adopted and later deleted. Three coordinator launch-context test leaves were corrected as well. The full Rust source search now contains no generated temp_dir() leaf adopted through create_dir_all.

Publication-request closure is now typed and guarded against regaining substring authority. Current structural count: nine typed high-authority families, 704 remaining closure substring assertions, and 1,458 contract-organ lines.

The former 1,458-line closure_contracts.rs slab is now a two-line private facade over closure_contracts/external_governance.rs and closure_contracts/operations.rs. Keep new contracts with their consequence owner; do not reunify the slab or widen its parent-private API.

Sync-request closure is now typed within external governance and guarded against substring fallback. Current count: ten typed high-authority families and 667 remaining closure substring assertions.

External-governance counterfeit fixtures now live in the dedicated lexical external_governance_tests.rs; production contract anatomy is 668 lines and the six semantic counterfeit tests remain private and passing, including the explicit sync push-grant attack fixture.

Provider chronology remains externally blocked for a precise reason: Bifrost receipt contracts expose no provider timestamp or monotonic revision, so local latest mirrors only know arrival order. Do not invent chronology locally. The 33 duplicate #[cfg(test)] residues found around provider writers/re-exports were removed; one test gate remains on every test-only item.

All seven Bifrost/GitHub mirror loader APIs are now named load_arrival_latest_*; no misleading load_latest_* aliases remain. The 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_*; persisted storage strings retain /latest. The Rust constant identifiers are now *_ARRIVAL_LATEST_KEY too; only their external string values retain the /latest storage spelling. Regression test bifrost_mirrors_name_arrival_order_without_rewriting_storage_keys guards honest Rust vocabulary and the seven stable persisted keys together.

PR-request closure is now typed within external governance and protected by the class no-substring guard plus an explicit malicious GitHub-grant fixture. Current count: eleven typed high-authority families and 620 remaining closure substring assertions.

Maintainer-review closure is now typed and class-guarded. Current count: twelve typed high-authority families and 582 remaining substring assertions. The explicit malicious maintainer-approval fixture now passes as a negative proof.

Verification-request closure is now typed and class-guarded. Current count: thirteen typed high-authority families and 543 remaining substring assertions. The explicit malicious Soul-verdict fixture now passes as a negative proof.

Closure-domain authority now has a physical workflow owner. closure_contracts/workflow.rs owns typed verification request closure and workflow_tests.rs owns its counterfeit-Soul-verdict fixture. The facade composes workflow beside external governance and operations. Direct rustfmt is required for these lexically included files because Cargo fmt does not find them. Next, type and move one adoption/scheduling/work-order family into workflow rather than feeding the external drawer. External governance should converge on tooling plus publication/accounting; operations retains policy/deployment.

Work-order closure is now typed inside that workflow owner. The old substring path could accept a commented Hands denial beside a real authority grant; the malicious fixture and generic class guard now make that impossible. Fourteen high-authority families are typed and 507 substring assertions remain. Next inspect adoption versus scheduling and convert the authority-bearing family with its own negative proof.

Scheduling won that comparison because it directly names Self's queue gate, pulse, next family, and queue-selection receipt. Its closure is now typed under workflow ownership; a malicious commented queue denial cannot conceal a real mutation grant, and the family is in the no-substring class guard. Fifteen high-authority families are typed and 477 substring assertions remain. Next type adoption, the remaining untyped workflow gate in this chain.

Adoption closure is now typed under workflow ownership as well. The decision contract, review/state receipts, input requirements, authority denials, and private seal are read as actual TOML fields; blank input references are rejected. A malicious commented state-commit denial cannot hide a real grant, and adoption is in the class guard. Sixteen high-authority families are typed and 447 substring assertions remain. The complete adoption/scheduling/work- order/verification chain now has one physical workflow owner.

The old residual counter was diff-derived and has been retired. Direct source inventory now reports 426 content.contains occurrences across sixteen remaining closure families. Objective Draft has moved into a new physical preparation.rs owner because it is Imagination cargo, not workflow or external governance. Its typed closure and malicious fixture prevent a commented adoption denial from hiding a real grant. Seventeen high-authority families are typed. Continue from the source-derived family inventory, not the historical counter.

The readiness-review hydra is cut. Self owns routing; Maintainer, Soul, Mind, and Bifrost are independent required reviewers; readiness_approval_owner is explicitly none because no local aggregate writer exists. Typed external- governance closure and a counterfeit-approval fixture protect that boundary. Eighteen high-authority families are typed; direct source inventory reports 363 substring occurrences across fifteen remaining families.

Interpreter Brief no longer steals Mind's name. Deterministic Imagination lowering now emits an Imagination-authored request for Mind interpretation with interpretation_admitted=false; it does not claim Mind authored or owns an interpretation that Mind never produced. Preparation owns its typed closure and counterfeit-state-authority fixture. Nineteen high-authority families are typed; direct source inventory reports 303 substring occurrences across fourteen remaining families.

Planning Brief is mapped for deletion, not typing. It contains no candidate work-item records; copied global schema/catalog/closure doctrine is read back as safeFamilyPlanning, letting catalog completeness impersonate item planning. Remove the family, generator, closure/readback, dedicated smoke, and readiness dependency together. Preserve consensus -> interpretation request -> objective draft -> Mind adoption. Do not replace it with another per-item catalog dump.

That deletion is complete. The generator, closure/readback, readiness row, Verse classification, CLI advertisement, and 679-line dedicated smoke are gone; 1,393 source lines were removed without an adapter. No production source references remain. Direct inventory now reports 183 substring occurrences across twelve families.

Collaboration policy/topic no longer pretend deterministic repo files are live Persona/Eve contracts. Imagination authors proposals; Persona owns discussion; Persona/Mind review policy; Mind admits it; Bifrost publishes. Requested public room and Eve surface ids remain unpublished until provider receipts exist, and downstream rendering is explicitly irrelevant. A new typed collaboration closure domain protects both families. Twenty-two high-authority families are typed; direct inventory reports 124 substring occurrences across ten families.

The fake provider catalogs are deleted. repo.tool_capabilities advertised expected tools without a host receipt; repo.eve_surface invented a live surface/rows/lowering catalog without provider publication. Dispatch, generators, closure, Verse classification, CLI help, and both dedicated smokes are gone—1,188 source lines, no adapters. Real tool requests/host receipts, Odin discovery, Eve connection receipts, and provider-owned composition remain. Direct inventory is 71 occurrences across eight families.

repo.body_manifest is deleted as a daemon diorama: it invented Body/Verse/Eve identity and capabilities in an unconsumed epiphany.toml. Runtime state, provider advertisements, and repo birth receipts remain authoritative. A fresh patch-placement error that put collaboration [policy] fields in the manifest generator was repaired; a direct generator unit test proves the fields now belong to collaboration policy and the deleted manifest family is rejected. The recursive legacy smoke timed out and spawned nested Cargo trees, so it was not treated as proof. Direct inventory is 56 occurrences across seven families.

Doctrine review no longer has a Maintainer/Mind composite owner or OR gate. Imagination authors, Self routes, Maintainer reviews, Soul verifies, Mind admits doctrine state, and Hands mutates AGENTS.md under receipts. Typed operations closure and a counterfeit-Hands fixture protect the chain. The remaining source inventory is 17 occurrences across six presentation families.

The six presentation families are now explicitly presentationOnly=true and share no formatting assertions. Common commit/path/blob evidence remains the closure proof; summaries, headings, markers, and checkboxes no longer impersonate Soul authority. A whole-function regression test proves zero content.contains calls remain in closure.

The beyond-closure scan has started. Deployment request no longer has an Idunn/Maintainer composite owner: Self routes, Maintainer/Soul/Mind/Bifrost review independently, and Idunn alone executes and authors deployment/aftercare outcomes. A generic patch briefly struck secret-policy fields; compilation caught it before tests, the fields were restored, and exact deployment tests plus the full baseline pass.

PR request no longer has a Bifrost/GitHub composite owner. Self routes, Bifrost owns the publication gate, Hands performs bounded PR action, and GitHub only supplies provider outcomes. The GitHub receipt ledger row is now GitHub-owned. Nine external-governance fixtures, 259 library tests, and all binaries pass.

Consensus Brief keeps its honest draft/unconverged semantics but no longer proves them with substring presence. Preparation owns its typed consensus, Imagination route, inputs, authority, and privacy closure; a malicious comment cannot counterfeit adoption denial. Twenty high-authority families are typed; direct source inventory reports 278 substring occurrences across thirteen remaining families.

The latest structural count is 32 closure family branches, 744 remaining substring assertions in the closure region, and 1,284 lines in closure_contracts.rs. Do not blindly generate a struct forest for every presentation-only family. The eight converted high-authority families are covered by typed_closure_families_have_no_substring_authority; prioritize the next consequence-bearing request and require a named owner.

Verification baseline

Artifact acceptance is split: Self routes, Maintainer decides acceptance, Bifrost records accounting, and the typed request requires the acceptance receipt. Operator receipt and accounting rows report those separate owners. Nine external-governance fixtures, 259 library tests, and all binaries pass.

Metrics/accounting no longer has a Bifrost/Maintainer composite or OR gate. Self routes, Bifrost accounts, Maintainer owns review-load evidence, and spend/ review-load receipts are required observations without authorizing spend or ledger mutation. Contract catalogue and operator rows use the same ownership.

The last completed code pass had 259 library tests passing and all binaries compiling. Re-run focused checks for the next touched surface; use the full library/binary baseline before committing a new architectural cut.

Secret and dependency policy requests no longer use a Maintainer/Soul/Bifrost pseudo-owner or Maintainer-or-Soul seal. Self routes, Mind admits policy, and Maintainer review, Soul verification, Mind admission, and Bifrost publication review are separately required. Dependency policy also requires supply-chain audit evidence. The next conceptual-substitution targets are the surviving composite decision fields in external governance and the composite owner labels in operator projections.

Artifact acceptance, PR publication, and readiness seals are now aligned with their split request bodies. Maintainer acceptance cannot substitute for Bifrost accounting; Maintainer review cannot substitute for Bifrost publication, Hands execution, or GitHub provider evidence; and readiness approval is Maintainer- owned instead of ownerless. The unresolved external-governance field is upstream sync's operator_or_maintainer_authority_required; trace its actual effect owner before deciding whether it is alternate human authority or another collapsed obligation.

That trace is complete: repo.sync_request performs no sync effect. It asks Bifrost for an upstream ancestry proof after publication and separately requires Maintainer review evidence. The fictional operator-or-maintainer gate is removed; the request still denies merge, push, sync, and Hands authority. Next inspect composite owner labels in operator projections, starting with rows that may be interpreted as decision or execution ownership.

Receipt-directory projection cleanup has started. Eve connection rows now name the target provider cluster rather than Odin/Eve; work-loop telemetry names Self rather than its Hands/Soul/Modeling stage route. The next projection scar is repo_work_stage_for_family: it groups distinct collaboration and governance families under composite owners. Split those stage groups by actual family authority; do not merely rename the composites.

The stage groups are now split per safe family, with regression coverage for tool host, Imagination draft, Mind admission, Maintainer decision, Hands execution, Bifrost proof/accounting/publication, Soul verification, Self scheduling, and Idunn deployment ownership. Dependency policy and readiness are explicitly classified instead of falling through to Unknown. Next trace the remaining composite owner labels in repo-work readiness rows around the Idunn/Soul, Soul/Bifrost, and four-reviewer projections.

Those readiness rows are split: Idunn owns aftercare evidence, Soul verifies; Soul owns redaction and readiness sight; Maintainer owns readiness approval; Bifrost owns publication review; the four required reviewers are an explicit list. Next cut arrow-shaped handoffs such as Persona->Imagination out of owner fields and preserve them only as routes.

Arrow-shaped owner values are now gone. Self owns intake-consensus readback and publishes the Persona-to-Imagination handoff separately; feedback ledger rows use their source Persona id; Bifrost owns consensus accounting. Continue the conceptual-substitution scan beyond owner strings: look for status, route, receipt, or cache fields that borrow consequence authority from another organ.

The first non-owner substitution is cut in repo.tool_request. The old requesting_agent="repo Persona/Self" and requester_owns_request=false shape is replaced by requester body identity, Self routing, Persona pressure provenance, target-host execution ownership, and requester execution denial. The typed closure now validates the identity and authority split. Continue looking for fields where observation, request, admission, and effect ownership are collapsed under innocent-sounding status or cache names.

Maintainer review is no longer substitutable by generic human response. Both the Maintainer review request and doctrine update request now require explicit Maintainer review, matching their receipt contracts and reviewer topology. Continue auditing remaining OR-shaped fields, but distinguish legitimate input alternatives (for example token count or cost summary) from authority gates.

Two further OR substitutions are cut. Consensus drafts require additional public feedback rather than "human or Persona review"; Mind/Bifrost remain the gates. Deployment requests require both script hash and script-review ref, because identity and approval are distinct proofs. Continue classifying the remaining OR-shaped fields by what invariant each alternative actually proves.

Deployment git identity is also split. Requests now require both watched ref and source commit SHA, matching Idunn's receipt. A branch/ref identifies the mutable trigger path; the commit SHA identifies deployed bytes. Do not collapse them back into one convenient string.

Metrics packet completeness is now explicit: token summary, cost availability status, review duration, and review-event count are separate requirements. This permits honest unavailable pricing without treating cost and tokens—or duration and event count—as interchangeable. Next inspect projected accounting status to ensure receipt presence cannot close a row whose required dimensions are absent.

That projection check is implemented. Bifrost metrics receipts now expose the four typed dimensions; old receipts deserialize with absent optional fields but remain incomplete. A negative projection test proves a receipt with IDs and summary but no token evidence cannot report complete proof. Continue with scheduler/cache projections that derive consequential status from presence.

The first scheduler substitution is cut. heartbeat_status_projection no longer translates a readable state document into status=ready. It reports store state as missing or loaded and derives separate scheduler physiology as unconfigured, active, or attention from participants and pending-turn state. The focused library suite, all-bin check, and native heartbeat smoke pass. Continue through cache/freshness projections; do not let existence, successful decode, or a latest mirror impersonate current consequence authority.

Operator cache readback is also purified. epiphany-operator-run latest joins the latest intent to its exact receipt by run_id; a new intent cannot borrow an older latest completion. Its statuses are lifecycle facts (missing, requested, completed, attention, orphaned-receipt), never generic ready. epiphany-operator-snapshot latest reports present state as loaded. Negative unit coverage proves intent presence is only requested and mismatched receipt identity cannot close it. Both native smokes, 259 library tests, focused binary tests, and the all-bin check pass.

Rider bridge topology no longer claims readiness from path existence. Rider is discovered, solutions are found, and repository topology is gitDetected; the native bridge smoke passes with the renamed evidence states.

Unity bridge uses the same boundary: project version parsing is pinned, exact editor path discovery is resolved, and the editor package predicate is named present. Operability belongs to the subsequent runStatus receipt. The native Unity bridge smoke, 259 library tests, and all-bin check pass.

The generic Persona Other mouth no longer models accepted Bifrost requests as posts. Recent speech tracks crossing_recorded and same_target_crossing_count; actual publication still requires an external transport receipt. The old v0 sameTargetPostCount spelling is serialization- only compatibility. Native Other-mouth smoke, 259 library tests, and all-bin compilation pass.

Persona Aquarium bubbles no longer accept caller-authored readiness. The CLI has no --status; successful writes derive projected; the strict intent schema has no status field; and the output schema permits only projected. Native smoke returns that value and an explicit --status ready invocation is rejected. The 259 library tests and all-bin check pass.

Three live Epiphany-shaped read-only organs (Eyes, Proprioception, Soul) were used as prompt-quality probes. They converged on caller status impersonating character physiology. epiphany-character-loop no longer accepts --status, constructs no fake heartbeat participant, derives stimulus received, and reports activation unknown without scheduler evidence. Its packet now matches the registered schemaVersion. Proprioception also found and removed the stale repo-intake consensus status argument and demoted aggregate Persona status from ready to loaded. Persona prompts now explicitly separate candidate, bubble, eligibility, Mind admission, and Bifrost/provider delivery ownership. Native negative/smoke checks, 259 library tests, 32 work tests, and all-bin compilation pass. Operator correction: Modeling's mandatory typed patch is intentional because the live searchable body map is its product; confirmation passes must bank freshness and source-grounded map confidence. Improve the patch vocabulary, do not add a no-state-change escape. Continue the P0 Discord/Reddit arbitrary- JSON publication receipt cut found by Eyes and Soul.

That P0 cut is complete. Epiphany now validates Bifrost's real Discord/Reddit publication output: exact action/outcome, target, provider id or URL, canonical crossing receipt id, and returned provenance bound to the speech audit and authority inputs. Discord fallback IDs are deleted. Native hostile smokes prove exit-zero {} cannot publish. Posted artifacts count as history only when their embedded receipt binds back to the artifact target and audit; forged status=posted files do not count. The remaining Bifrost seam is command cardinality: Epiphany inherits a CultMesh command id, so the coordinator must ensure one typed command id per crossing rather than letting multiple posts share one canonical crossing_<command> receipt.

Repo frontier planning launch artery (2026-07-15)

Self's planning request is now v1 and binds the exact current RepoModel, admission receipt, actionable Imagination frontier, runtime identity, and authoritative thread. Coordinator launch commit replays that entire chain from one transaction snapshot, forbids caller-authored planning projection and mixed Modeling/repair/planning authority, injects the typed Imagination context, and atomically persists a request-keyed RepoFrontierPlanningLaunchBinding. Its SHA-256 covers the exact launch bytes stored for the worker. Hostile tests cover swapped model/admission/frontier/ scope/organ/runtime/thread fields, wrong role/binding, prepopulated projection, dual authority, single-use replay, and two concurrent launches; only one wins and the loser leaves no job, worker launch, or opened event. Full core proof: 322 passed, 1 ignored. Next build the exclusive immutable Imagination result echo carrying the typed candidate, then Mind-only Adopt/Refuse/Hold admission and the narrow Adopt model transition that makes Hands routing true.

The immutable Imagination result slice is now complete. Runtime role result v2 adds an exclusive frontier_planning_request_id plus dedicated canonical MessagePack RepoFrontierPlanCandidate. Persistence replays the exact planning request, request-keyed launch binding, stored launch-document hash/projection, runtime/thread, current model/admission/frontier, deterministic candidate identity, and bounded safe paths. Planning results reject generic state, Self, RepoModel, Verification, and Modeling authority cargo before writing. The OpenAI ingress uses a specialized planning schema, supplies candidate schema/contract itself, derives candidate identity from semantic cargo, and does not expose generic patch mouths. The candidate remains embedded in the immutable result; no standalone candidate document is written. Proof: core 325 passed/1 ignored; OpenAI runtime 9 passed; hostile missing/swapped request, missing/adjacent/escaped candidate, wrong role, generic patch smuggling, exact retry, and immutable collision checks pass. Next implement Mind-only terminal decision plus the dedicated Adopt RepoModel transition from Imagination to Hands, then delete the old internal candidate/adoption fixture writers.

Prompted frontier admission review and canonical adoption (2026-07-15)

The repo-frontier planning nerve is complete and the preceding “Next implement Mind” sentence is superseded. Self binds one exact admitted model/frontier request; coordinator atomically binds the Imagination launch; Imagination persists one immutable result with its sole embedded candidate; the runtime derives a CAS-bound Mind review request; coordinator atomically launches a bounded non-embodied admission-review procedure; that procedure returns one immutable typed Adopt/Refuse/Hold judgment; and Mind's admission transaction replays the entire chain before consequence.

Refuse and Hold are inert terminal receipts. Adopt atomically installs the exact candidate and provenance on the canonical frontier, emits specialized review and admission receipts, and alone changes Imagination to Hands. Self derives the route from that model. Hands intent binds route, candidate hash, plan action, and safe paths; Soul admission requires the exact plan command and receives the checks, stop conditions, rollback steps, and commit message. Modeling may close the frontier after Soul verdict only while preserving adopted execution anatomy. There is no standalone candidate/adoption truth and no caller-authored decision.

Mind remains persistent state and admission authority, not an embodied chatty lane. The prompted model call is explicitly a bounded admission-review procedure serving Mind, with no heartbeat, lane memory, roleAccept, selfPatch, or foreign organ patch mouths.

Hostile coverage includes swapped causal ids/hashes/jobs, failed worker output, foreign cargo, duplicate/racing launch and terminal claims, generic adoption bypass, post-adoption execution-anatomy mutation, and same-path command substitution. The composed happy path proves Adopt through exact Hands command, Verification/Soul, accepted Modeling incorporation, Resolved closure, and byte-identical plan survival. Final proof: core 330 passed with one intentional cross-process helper ignored; OpenAI runtime library 10 passed, both runtime binary suites passed 6 each, and all core binaries check. Soul's final landing audit passed. Exact concurrent admission retries are forced through a two-party pre-CAS barrier in test builds; the loser reloads and authenticates the winner's entire immutable decision/admission chain. The synchronization hook is compiled only for tests, so production exposes no executable seam at the commit boundary. The next organ is the production semantic index over typed graph claims so Modeling owns a live persistent searchable Body map instead of making Hands rediscover the repository.

The selected semantic substrate is Qdrant: available locally in Docker and intended on the new Yggdrasil host (64 GB RAM, GTX 1080 for embedding/model workers). It is a rebuildable projection, never canonical Mind or Modeling truth. CultCache/CultMesh remains authoritative. Use separate typed Mind and Modeling namespaces/collections or equivalently hard query partitions so private doctrine/memory cannot leak into Hands Body retrieval and repository claims cannot silently become doctrine. Every point must retain source document id, schema version, canonical hash, provenance, authority/visibility scope, and embedding-model version.

Shared Mind/Modeling semantic nerve (2026-07-15)

The Qdrant organ is now live rather than planned. semantic_backend.rs is the single typed Qdrant/Ollama wire boundary; workspace retrieval consumes it and the previous local transport copy is gone. The memory graph derives stable Mind/Modeling projection documents, stores locator/hash/provenance payloads in physically separate collections, validates collection metadata from Qdrant, synchronizes only exact swarm/partition scope, reloads every candidate from current canonical state, and falls back to typed BM25 without losing truth. Projection receipts are typed CultCache documents outside RepoModel.

epiphany-memory-semantic provides canonical index/context commands. epiphany-repo-model-bootstrap atomically admits the initial RepoModel from typed thread-state through runtime-spine ownership and ignores stale sibling graph stores. The tracked schema-v0 state/memory-graph.msgpack is deleted.

Live local proof against Docker Qdrant v1.17.1 and Ollama qwen3-embedding:0.6b (1024 dimensions) indexed 43 Mind documents into epiphany_mind_v1 and 3 fresh Modeling documents into epiphany_modeling_v1. Four stale Modeling points were removed. Semantic queries render canonical typed packets, ignore payload prose, exclude stale summary descendants, and report whether semantic ranking or BM25 fallback ran.

Persona's private cache substitution is cut: its chunk schema, duplicated Qdrant/Ollama clients, reindex-on-recall path, direct payload rendering, and epiphany_persona_memory_v0 collection are deleted. Heartbeat Persona recall uses the shared Mind projection restricted to Persona's canonical domain. The actual Modeling organ-state was also repaired: four surviving Proprioception phrases in identity/goal/memory prose are now Modeling, validation is clean, and the Mind collection was rebuilt from that repaired state.

Next: schedule projection refresh as completion-gated physiology, publish typed projection health through CultMesh/Eve, and refresh the stale source anchors that leave the current Body map honestly thin. Do not let the scheduler, Qdrant, Yggdrasil, or presentation become state authority.

Semantic completion-law correction (2026-07-15)

The first scheduling map exposed two surviving substitutions before daemon work began. Persona recall derived a swarm namespace from fixed organ agent ids, which are identical across Epiphany swarms; and Qdrant failure still used the unconstrained canonical planner. Both are cut. state/agents.msgpack now contains the immutable typed swarm identity gamecult.epiphany.main; Persona recall and the semantic CLI require that exact document, and the Mind collection was rebuilt under that scope with 43 documents. Canonical fallback uses the same partition-constrained planner as semantic success.

memory_graph::semantic_index now defines typed projection obligation and attempt documents, exact source-head and receipt causality fields, and pure derived pending|failed|stale|ready health/query-eligibility law with hostile mismatch tests. These types are foundation, not a readiness claim: runtime admission does not yet atomically emit obligations, indexing does not yet claim and discharge them, queries do not yet require the newest exact success, and CultMesh/Idunn wiring deliberately remains absent. The next cut is canonical admission ownership, not a polling loop.

Atomic semantic admission (2026-07-15)

The causal cut is now implemented. Runtime-spine is immutably bound to the canonical agent-Mind swarm identity. All three RepoModel writers atomically companion canonical admission with one exact Modeling projection obligation; the live legacy runtime was explicitly migrated without rewriting its model or migration receipt. Mind self-patch and lifecycle admission now use a fixed-role generation CAS that writes canonical rows, generation witness, persisted Mind admission receipt, and Mind obligation together. Every extension re-hashes the canonical rows and authenticates the prior witness. Bootstrap/import/repair/raw replacement/trait seeding cannot write after a generation exists.

Core proof for the landed atomic admission pass: 343 tests passed, 0 failed, 1 intentional ignore; all binaries compile; the OpenAI runtime suites pass 22 tests. The current state/agents.msgpack has now been admitted without row mutation as generation 1 under swarm gamecult.epiphany.main, with immutable witness mind-generation-eb394e34-1c73-5d0a-8691-6ff1ba6145a4, its Mind admission receipt, and its exact projection obligation. Repeating the migration is idempotent and validation remains clean. Next replace the direct projector CLI with restart-safe scope claims, attempt/terminal receipt CAS, observed zero-document synchronization, and exact query eligibility; then add CultMesh/Idunn physiology.

Restart-safe semantic projector and gated query (2026-07-15)

The projection executor now serializes each (swarm, partition) mutation scope with a durable executor-bound claim and fencing epoch. An internal recovery transition proves that an abandoned attempt can be failed and fenced, but it is not exposed until Idunn supplies typed stale/recovery authority; arbitrary peers cannot steal a live scope. Terminal success requires the same live claim, exact bound receipt, unchanged canonical source envelopes, and observed Qdrant scope. The raw indexer and ordinary receipt writer are no longer public authority surfaces. Empty projections bypass Ollama and delete only their exact scope. Non-empty projections observe exact IDs and typed payload identities after synchronization.

Query gating is live in the CLI and Persona heartbeat. Without the newest exact obligation/success pair they use canonical BM25 without contacting Ollama or Qdrant. With the pair they use Qdrant only for ranking, reload canonical typed documents, and ignore payload prose. The live gamecult.epiphany.main Mind and Modeling obligations were discharged through the protocol: 43 Mind documents and 3 Modeling documents, both 1024-dimensional. Repeated execution returned the same immutable receipts. Core proof: 349 passed, 0 failed, 1 intentional ignore; all binaries type-check.

Next: derive and publish provider-owned health through CultMesh, make Idunn own projector process survival/restart and explicit fenced recovery routing, then run the deployability audit against daemon packaging, configuration, and live Yggdrasil assumptions. Neither CultMesh nor Idunn may mint readiness.

Physical semantic fence correction (2026-07-15)

Hostile recovery review found that the logical claim epoch fenced CultCache terminal receipts but did not fence the Qdrant actuator. A resumed old process could still mutate the shared (swarm, partition) points after replacement. The physical projection is now isolated by exact obligation, claim id, and claim epoch in its UUIDs, typed payload, mutation/observation filters, success receipt v1, and opaque-readiness-selected query filter. Old receipt v0 decodes only for migration inspection and cannot become ready. A second process cannot share a running claim merely by reusing its executor label.

The readiness loader now authenticates the full persisted success chain: obligation, succeeded scope claim, exact claim id/epoch on the receipt, and the claim's succeeded attempt. Hostile substituted claim, epoch, and attempt evidence fails closed. The live Mind and Modeling projections were rebuilt into claim-owned namespaces (43 and 3 documents at 1024 dimensions), and exact live queries used Qdrant ranking while resolving canonical documents. Core proof is 353 passed, 0 failed, 1 intentional ignore.

Deployment Eyes found the live boundary: local Qdrant and Ollama work, but no Epiphany/Idunn projector service is installed. New Yggdrasil has healthy GPU Ollama, Odin, and Idunn, but no Qdrant, Epiphany artifact/config, or projector target. Local Qdrant is unexpectedly published on all host interfaces. Do not deploy dual projectors or silently move canonical Mind/Modeling stores.

Next: cut Idunn supervisor writes to provider-owned daemon heartbeat/status; then publish derived semantic health through CultMesh and add typed Idunn executor/recovery authority plus open-obligation discovery. Recovery remains withheld until that authority exists.

Idunn/provider-status ownership cut (2026-07-15)

The supervisor no longer writes provider heartbeat/status. Idunn owns only staleness observation, immutable poke intent/receipt events, restart command execution, policy, and backoff. The target epiphany-cluster-daemon remains the sole production owner of its status, operator action, and heartbeat timestamp. Command exit zero now records awaiting-provider-heartbeat, never ready, and restart pressure remains until a provider heartbeat newer than the completed attempt proves recovery.

Poke intent/receipt v1 binds the pre-intervention heartbeat and request, attempt, and completion times. Immutable identity and chronological latest advance in one CAS: exact retry is idempotent, collision is refused, and late replay cannot rewind sight. Receipt-directory resolution is derived only; it cannot repair provider truth. The bounded survival rehearsal proves two successful restart commands leave the provider envelope unchanged and produce distinct awaiting receipts, then a real provider heartbeat resolves the lifecycle observation and clears restart pressure.

Renderer-neutral semantic projection health now leaves the provider through CultMesh as non-authoritative local-area sight. Publication reauthenticates the sealed Mind or Modeling input, persisted obligation, canonical authority envelopes, and—when ready—the complete succeeded claim/attempt/receipt chain. The mirror carries only pending/failed/ready, canonical fingerprints, bounded counts, provider/incarnation identity, and timestamps; it carries no error text, path, command, payload prose, or readiness capability. Immutable events plus a per-swarm/partition chronological CAS prevent a delayed writer from rewinding latest sight. epiphany-memory-semantic health repairs the mirror independently, and epiphany-verse-query semantic-health reads a named, compact report without touching canonical state. A stale sealed input is refused rather than published as if it described the current canonical head.

Idunn semantic executor authority cut (2026-07-15)

Executor labels no longer open semantic mutation authority. Idunn acquisition now atomically writes a consumed typed executor grant, a scope claim, and its running attempt against the exact persisted obligation and predecessor claim. The grant binds executor incarnation, purpose, Idunn incarnation, predecessor status/id/epoch, and resulting claim id/epoch. execute cannot repair a succeeded claim; repair requires that exact succeeded predecessor. The projector CLI now requires the acquired claim id and authenticates its consumed grant before Qdrant work or terminalization. Acquisition reauthenticates the whole sealed canonical input and carries its authority envelopes through the same CAS, so an old persisted obligation cannot mint against an advanced head.

Fenced recovery now consumes typed evidence rather than free-form reason text. The CultMesh bridge authenticates the exact immutable Idunn poke intent and successful awaiting-provider-heartbeat receipt, plus a provider-authored ready heartbeat event that causally follows receipt completion and names the replacement provider incarnation. The heartbeat must also name that exact restart receipt as its startup cause. Their envelope digests enter a consumed recovery authorization. One CAS fails the abandoned attempt, advances the epoch, creates the replacement claim/attempt, and records that authorization. Recovery rotates authority only; it cannot execute projection or mint success. Provider heartbeat events are immutable and their latest pointer advances monotonically per daemon/incarnation.

Authority map: canonical Mind/Modeling admission owns obligations; Idunn owns executor assignment and explicit recovery decision; the projector owns claim- bound mutation and terminal evidence; the query gate alone authenticates readiness. Health, liveness, timers, command exits, Qdrant state, CultMesh, Eve, and swarm overview remain derived sight and forbidden writers. Initial execution, retry, repair, and recovered execution share the same claim- authenticating projector primitive.

Workstation semantic projector service body (2026-07-15)

The open-obligation pulse and single process owner are now implemented as one workstation-local epiphany-memory-semantic-projector body managed by Idunn. Its constructor requires two distinct canonical files--one Mind store and one Modeling runtime store--and refuses unless their sealed inputs name the exact partitions and the same immutable swarm. It takes a host OS singleton for that canonical pair before minting its process-stable provider/executor incarnation. Mind and Modeling remain separate authorities, claims, collections, and receipts; they merely share one survival body.

Every pulse reloads both canonical inputs. It stores no open-obligation queue and allows at most one global action, rotating fairly between actionable partitions. Ready, foreign-running, and stale inputs never execute. A succeeded claim is not itself terminal evidence: valid receipt-v2 health derives Ready, while an exact authority-authenticated succeeded claim whose receipt is legacy or invalid derives Repair and acquires the typed Idunn repair path. Pending and failed inputs acquire exact Idunn execute authority before using the one crate-private executor. A running claim owned by the current provider incarnation resumes directly without minting a second grant; a foreign running claim remains pressure until exact recovery. Overlapping pulses return busy, and the serve cooldown begins only after the bounded pulse completes. A fault loading one source does not turn the other source into false readiness or hide its valid action.

The old production mouths are gone: epiphany-memory-semantic no longer has an index arm or claim flag, there is no public raw execute function, and the supervisor no longer exposes general semantic acquisition. Recovery remains a narrow supervisor action. It authenticates the abandoned claim, exact Idunn lifecycle intent/receipt, and causally linked replacement-provider heartbeat, then rotates claim authority only. The running service recognizes that exact recovered claim as its own and resumes it on a later ordinary pulse.

Idunn owns a specialized reserved service-policy writer for fixed service id epiphany-memory-semantic-projector-service. It derives the packaged sibling binary, fixed executor identity, both canonical stores, infinite serve shape, and restart-always policy. The generic managed-service writer refuses that reserved id; callers cannot substitute a command, service id, restart mode, or finite child lifetime. Existing Idunn managed-service reconciliation owns process survival and lifecycle receipts. The OS singleton prevents a service and an interactive process from simultaneously owning the same canonical pair.

Provider heartbeat and per-partition semantic health remain derived sight. Heartbeat ready means the body owns its singleton, validated the source pair, and completed a healthy pulse/publication pass; it is not semantic query readiness. Only the canonical success chain admits query. Pulse JSON, health, heartbeat, Qdrant, Ollama, Eve, and swarm overview cannot create obligations, grants, recovery, terminal evidence, or readiness.

Deployment is deliberately not live. The chosen topology is the workstation beside its canonical stores, with Yggdrasil permitted to supply embedding over WireGuard. Current local inspection found Docker container voidbot-qdrant stopped with exit code 143. Its name records foreign ownership, so Epiphany did not restart, adopt, reconfigure, or claim it. No semantic projector service policy has been published and no restart proof has been claimed. Moving only the projector to Yggdrasil or starting a second partition/projector body remains forbidden.

Next: establish explicit Qdrant ownership and a live workstation-reachable endpoint, confirm collection compatibility and the Yggdrasil Ollama route, then publish the reserved projector policy. Run one bounded live pulse, prove both derived health rows and provider heartbeat, kill the body once, and prove Idunn restart plus causally linked heartbeat/recovery/resumption. This is a preflight and survival proof, not permission to call deployment complete.

Managed semantic launch authority rebuild (2026-07-15)

Deployment inspection found incompatible lifecycle stories. The packaged managed-service launcher spawned an infinite child and wrote a mutable v0 event, while semantic recovery expected a completed daemon-poke receipt from a blocking restart command. That command could never truthfully witness this service.

The authority is now one causal chain. The reserved managed policy is desired state. Idunn preallocates a UUID, injects it into the child, spawns once, and atomically writes an immutable v1 lifecycle receipt binding child PID, spawn completion, exact policy id and envelope digest, fixed projector daemon, and startup correlation. Failed persistence kills and waits for the child. The child authenticates that receipt against the current policy before constructing the service body or publishing a pulse or heartbeat. A launch receipt proves spawn completion, never readiness.

Semantic recovery authorization is v2 and consumes only the current policy, its exact launch receipt, and a strictly later correlated provider heartbeat. Advancing policy invalidates an older launch receipt. Daemon poke remains an operator intervention surface for ordinary daemons but cannot authorize semantic recovery. Hostile tests cover unrelated heartbeat, policy advance, successful exact recovery, and single-use refusal. Full library proof is 371 passed/1 ignored; supervisor tests are 7/7; all binaries compile.

Infrastructure truth also changed. The retired local voidbot-qdrant must stay stopped. Shared Yggdrasil Qdrant is authoritative and reaches this workstation through the ops tunnel at 127.0.0.1:16333; Yggdrasil Ollama is reachable at http://10.77.0.1:11435. Both Epiphany collections are green 1024-dimensional cosine collections using qwen3-embedding:0.6b.

Next: publish the reserved policy and place both the managed-service reconciler and Qdrant tunnel under durable Idunn/OS survival ownership. Live proof must cover real child handshake, bounded pulse, heartbeat and health, forced restart/correlation, singleton refusal, and safe exact recovery/resumption where an abandoned claim can be created without forging canonical work.

Live semantic projector proof and canonical purification (2026-07-15)

The reserved policy is live against shared Yggdrasil Qdrant through 127.0.0.1:16333 and Yggdrasil Ollama through 10.77.0.1:11435. Live launch pressure exposed three fossils that narrow tests had not reached:

  • local Verse still contained the deleted ownerless epiphany.cultmesh.operator_status; an explicit backed-up migration removed its one key instead of registering extinct authority;
  • both canonical stores contained v0 claims/attempts and index receipts from before Idunn fencing; explicit migration atomically retired those rows from active authority rather than inventing missing incarnation or grant fields;
  • Mind and Modeling canonical cache catalogs registered claims, attempts, and receipts but not the executor-grant/recovery types now written into the same physical stores; both readers now register the whole semantic authority family.

CultCache now provides an atomic exact-envelope batch deletion primitive for these migrations. The projector launch receipt also binds executable SHA-256, and the child verifies both its own PID and its bytes against that receipt before constructing the service body. Health publication errors are bounded in the pulse output instead of disappearing into a count.

Fresh Idunn-granted projection rebuilt Mind (43 documents) and Modeling (3 documents), both 1024-dimensional and query-eligible. Live semantic context queries ranked canonical documents for both partitions while ignoring Qdrant payload text. A clean steady pulse inspected both sources, remained idle, and published a ready heartbeat with no source or health faults. A second interactive projector was refused by the host singleton. Killing child PID 22992 caused the reconciler to launch PID 29868 with receipt daa89e4f-4301-40eb-aa87-5b52c5017221; the typed service-status readback proved the new ready heartbeat names that exact receipt and executable hash.

Full proof is 375 library tests passed/1 ignored, 7/7 supervisor tests, and all binaries compiling. The live child and reconciler remain running, but survival is not yet deployable physiology: reconciler PID 22072 and SSH tunnel PID 22728 are detached processes, not durable OS-owned services. The existing generic Windows sc.exe create path is not sufficient because this console binary does not implement the Windows service-control handshake. Build a real service host or explicit Task Scheduler owner with restart policy, give the Qdrant tunnel the same durable treatment, and prove startup/reboot recovery. Live abandoned claim recovery remains unproven; use a safe fixture rather than forging work.

Windows survival authority rebuild (2026-07-15)

The workstation survival cut rejected the generic Windows SCM path. The Epiphany binaries are ordinary console programs and never implemented the Windows service-control dispatcher, so sc.exe create, elevated service runbooks/audits, cluster-service install/control, and swarm-online-runbook were presentation of authority the body did not possess. Those routes and their old receipts are historical evidence only; they must not steer current deployment, readiness, or follow-up work.

Host survival is now deliberately narrower and honest. Current-user tasks Epiphany-Idunn-Managed-Service-Reconciler and GameCult-Yggdrasil-Tunnel run as Meta with InteractiveToken/Limited privilege, AtLogOn plus a one-minute recurring recovery trigger, restart-on-failure at one-minute intervals for 999 attempts, IgnoreNew, zero execution limit, and exact direct foreground actions. Task Scheduler owns process presence after login. It does not own projector children or semantic state. Idunn still owns the managed-service reconciliation loop and projector launch/restart correlation. gamecult-ops owns the Yggdrasil tunnel profile and foreground SSH process; Epiphany merely consumes the pinned local Qdrant ports. No wrapper, detached grandchild, or service-manager receipt is a second survival owner.

Live recurrence proof killed reconciler PID 24152 and observed exactly one replacement PID 25428. Killing projector PID 29868 then caused Idunn to launch PID 19888 with launch receipt 4d406060-6582-473a-9322-9f4ccc8b322f; ready heartbeat 79fe3143-28a8-40fe-9547-0287159082e6 names provider incarnation projector-59217a66-e3e2-44c3-b000-36af3d43b043 and the exact startup correlation. Tunnel recurrence killed SSH PID 22652 and observed PID 30444 start at 11:37:44 with Qdrant REST healthy.

The pre-reboot deployment repair then packaged epiphany-memory-semantic.exe beside the release supervisor and projector, deployed the rebuilt supervisor, and left Epiphany-Idunn-Managed-Service-Reconciler Running. Deployment queries must receive the real transport coordinates explicitly through EPIPHANY_QDRANT_URL and EPIPHANY_OLLAMA_BASE_URL; ambient defaults are not deployment proof. With those variables set, both packaged Mind and Modeling queries returned semantic ranking. The provider status command no longer calls that sight ready: it returns provider-correlated or provider-degraded, is explicitly non-authoritative, and points to semantic query admission as the only readiness owner.

One process-lifecycle scar matters for the reboot audit. Stopping the Task Scheduler reconciler leaves its already-detached projector child alive. A current parent PID is therefore derived process sight, not durable custody, and a stop/start rehearsal can accidentally reuse the old child. The real proof must observe a fresh post-boot scheduler -> reconciler -> exactly-one-projector chain, a new launch-correlated provider heartbeat, and successful packaged Mind and Modeling query admission after the tunnel returns.

The limitation is part of the contract: this is after-login recovery, not pre-login, boot-time, machine-wide, or Windows-service operation. The remaining Soul proof is a real reboot/logon cycle showing both scheduled tasks running, the tunnel ports restored, one Idunn-managed projector child, and a fresh launch-correlated provider heartbeat followed by semantically ranked packaged Mind and Modeling queries. Reboot remains a host-wide action requiring exact live operator permission. Do not spend another pass polishing the dead SCM rite.

Isolated semantic abandoned-claim recovery proof (2026-07-15)

The feature-gated native epiphany-semantic-recovery-smoke closes the recovery fixture wound without forging canonical Mind or Modeling work. It creates GUID-scoped Mind, Modeling, and Verse stores. A real projector acquires epoch 1, stalls against a fixture-local endpoint, and is killed. The supervisor then consumes the exact current semantic policy, managed-service lifecycle receipt, and provider heartbeat to recover epoch 2. A replacement real projector consumes that recovery authorization through the common execution path.

Typed read-only inspection proves the abandoned attempt is failed, the recovery authorization is consumed, the epoch-2 claim remains running under the replacement incarnation, and the old owner cannot authenticate it. Actual semantic readiness and query eligibility are present. Wrong-heartbeat and single-use attempts fail without changing canonical fixture bytes.

The Qdrant collections use GUID names, are preflighted absent, and are deleted and verified absent by exact 404. The smoke accepts no live/default Mind, Modeling, or Verse stores and exposes no fixture-only mutation mouth. Passing artifact: C:\Users\Meta\AppData\Local\Temp\epiphany-semantic-recovery-1152736f-b8a2-4cf0-ab24-c8a3993a0eb7\proof.json.

This proves the exact recovery/resumption and fencing path. It does not prove global deployability. The remaining deployment evidence is still the real reboot/logon survival cycle above.

Runtime surface capability purification (2026-07-15)

The systemic surface audit separated a real local projection from false wire authority. Commit 65445623 remains valid: it rebuilt epiphany.persona_surface.v0 as a strict, content-free MVP-status projection over typed Persona artifact references, registered the real Reddit and Other artifact schemas, and kept speech eligibility, Mind admission, Bifrost acceptance, publication, and provider delivery outside the projection. Those schemas remain discoverable vocabulary and local projection validators. That does not make the projection a CultNet runtime capability.

All seventeen unbacked epiphany.surface.* mutation contracts and their dead runtime constants are now removed. None had a typed document writer, Snapshot resolver, or action dispatcher; the compound MVP-status JSON was not a substitute for those owners. Runtime Hello and runtime status now derive the current executable mutation-contract list instead of trusting the historical supported_document_types stored in runtime identity. The live canonical store still carries that old field as inert history, but it cannot decide wire or status truth. A real canonical hello-frame contained zero epiphany.surface.* capabilities after the cut.

Re-admission is deliberately expensive: an owning organ must prove provider publish -> typed CultMesh document -> Snapshot -> schema validation -> Eve lowering. Any advertised action additionally needs a real typed dispatcher and receipt path. Schema registration alone proves vocabulary, not runtime support.

The adjacent central Eve substitution is cut. The generic provider publisher and its heartbeat call are deleted; a cluster heartbeat now owns liveness only. Live Odin, Eve, and daemon-tool directories expose no provenance-free v0 rows, and explicit bootstrap retires stale rows of those exact families. The stable topology eve_surface_id remains routing/address metadata and proves neither presence nor composition. Provider availability can return only through an owning provider's provenance-bearing typed contract; advertised actions also need a real dispatcher and receipt path.

This does not replace the current deployment next action: complete the real Windows reboot/logon proof for Task Scheduler, the Yggdrasil tunnel, Idunn, and the launch-correlated semantic projector heartbeat.

Production coordinator fixture authority cut (2026-07-15)

The production epiphany-mvp-coordinator is again a scheduler, not a smoke ventriloquist. Typed coordinator status and accepted evidence own the selected action. The normal continueImplementation arm remains the single shared path that may produce a Hands gate, but caller fixture text can no longer force that arm or suppress review.

  • Owner: typed coordinator status plus accepted role/evidence state owns the next action; Hands/Substrate review owns implementation permission.
  • Inputs: the selected runtime store, current typed thread state, accepted role results, and explicit review state.
  • Outputs: coordinator steps, final action, run receipt, and a Hands gate only when the typed action reaches the shared implementation arm.
  • Derived state: smoke scenarios, fixture workspaces, forced pressure, source drift, and dry-compaction observations are verification cargo only.
  • Forbidden writers: production CLI flags, callers, wrappers, and fixture helpers cannot choose coordinator action, mark it auto-runnable, waive review, seed canonical scheduler state, or manufacture a Hands gate.
  • Shared paths: production and smoke exercise the same typed status/action and Hands-gate machinery after their inputs exist; the smoke does not add a second decision owner.
  • Cut line: all production fixture flags, overrides, and helpers were deleted. Fixture assembly lives in epiphany-mvp-coordinator-smoke, confined to .epiphany-smoke/mvp-coordinator.

Negative proof rejects all seven retired flags at the production mouth while the dedicated smoke remains inside its fixed root. No legacy flag can target a caller-selected runtime store. Eyes has banked one adjacent candidate, not a completed finding: sibling Bifrost subprocess JSON still participates in a readiness view and needs a focused audit for typed provider identity and provenance before any cut is justified.

The deployment next action is unchanged and permission-bound: only with exact live operator approval may the real reboot/logon proof run. It must establish the restored tasks and tunnel, a fresh reconciler -> exactly-one-projector chain, launch-correlated provider sight, and admitted semantic queries. Do not infer reboot authority from this scheduler cleanup.

Bifrost readiness projection deletion (2026-07-15)

Epiphany no longer treats a sibling Bifrost path, executable presence, exit zero, parseable JSON, or caller-supplied readiness booleans as provider sight. The epiphany-mvp-status sibling subprocess projection and its bifrostBridge output are deleted, as are epiphany-bifrost-bridge-status-smoke, the aggregate Persona readiness fields, and wrapper readiness summaries. Missing authenticated typed provider evidence remains unknown.

The surviving Persona Discord, Reddit, and future-surface paths are mouths, not Eyes. Epiphany owns speech eligibility and may invoke a configured Bifrost actuator for one named crossing. A validated returned receipt is bound only to that speech/request artifact as evidence of the single consequence; it cannot establish provider inventory, liveness, capability, readiness, publication, or future operability. The cross-mouth aggregate is deleted. Each Persona mouth tests only its own fail-closed eligibility, target-bound receipt shape, and private-state sealing.

Authority map: the participating Bifrost/provider boundary owns consequence truth; one eligible crossing request and configured actuator coordinates are inputs; one artifact-scoped transport/request receipt is the output; global readiness is not derived. MVP status, wrapper summaries, cross-mouth aggregators, sibling-path probes, and caller booleans are forbidden readiness writers. All three mouths retain the same eligibility-to-receipt boundary without sharing consequence authority. The deletion line was the sibling readiness projector, both aggregate smoke binaries, aggregate output fields, and status presentation.

The deployment next action remains unchanged and permission-bound: do not reboot without exact live operator approval. With that approval, prove both scheduled tasks and the tunnel return after logon, establish a fresh reconciler -> exactly-one-projector chain and launch-correlated heartbeat, then obtain semantic ranking from packaged Mind and Modeling queries using the explicit Qdrant and Ollama endpoints.

Freshness and reorientation authority repair (2026-07-15)

The freshness surface no longer converts missing evidence into confidence. Retrieval Ready is Clean only when dirty_paths is empty; a Ready label with one or more dirty paths derives Stale and therefore cannot authorize Resume. The legacy thread graph projection cannot produce Ready. Explicit frontier dirty paths, open questions, or open gaps prove Stale; otherwise it is Missing/Unknown because legacy checkpoint identity cannot see canonical RepoModel admission. A watcher with no buffered changes is also unknown/unavailable: there is no watcher generation, cursor, start boundary, or continuity receipt from which silence could prove cleanliness. Observed changes remain valid positive evidence.

recommend_reorientation now owns the whole Resume/Regather verdict. Resume requires a resume-ready investigation checkpoint, retrieval Clean, graph Clean, and watcher Clean or Unknown. Retrieval or graph values other than Clean, and watcher Dirty/Stale/Changed, force Regather with explicit reasons. Path overlap remains explanatory derived state; it cannot rescue a stale or unknown map. epiphany-mvp-status, worker launch, coordinator, and CRRC all consume this decision. surfaces/jobs.rs consumes the same derived graph freshness judgment for graph-remap work instead of maintaining a second churn string tribunal.

Authority map: derive_freshness owns freshness judgment from canonical retrieval state, explicit legacy frontier pressure, and positive watcher observations. recommend_reorientation owns the action. Their outputs are derived read projections and one reorientation decision. Watcher silence, MVP mappings, jobs, worker launch, coordinator, and CRRC are forbidden readiness/action writers. All launch and operator paths share the same derivation and decision primitives.

The ungrounded churn.graph_freshness and graph_checkpoint.graph_revision fields were deleted. Checkpoints retain identity and frontier content; churn retains understanding, diff, warning, and unexplained-write evidence. Canonical RepoModel revision/hash plus its exact Mind-issued RepoModelAdmissionReceipt proves only admitted map identity. Future observed-ready-at also requires fresh Body observations bracketing exact Body-grounded model admission and retrieval coverage for one manifest root; Mind derives the joined projection. Do not build a bridge from snapshot metadata, watcher silence, timestamps, or historical event continuity.

Repository Body substrate landed (2026-07-15)

Native repository_body_observer.rs and epiphany-repository-body expose an explicit runtime-bound bind step, observe, pure status, and smoke for git_worktree state. Bind pins caller workspace ID to the existing validated runtime/swarm/source identity plus canonical Git root and policy. Two equal isolated Git-index scans feed immutable CultCache observations/current-head CAS. Unchanged raw manifest does not advance generation; missing status creates no store. The observer makes no historical continuity claim and has no Ready field. Sparse checkout is rejected, submodules are gitlink-only, and downstream joins remain absent. The CultCache store is required to live outside the observed worktree. Canonical path checks run before any bind/store write, global excludes are disabled, and corrupt/non-commit HEAD fails closed. This slice persists accepted stable observations only; failed attempts advance no head. All Git calls share one sanitizer that removes ambient Git repository/object/ ref/index/namespace and injected-config authority before applying explicit observation policy. The isolated index enumerates ignore-aware UTF-8 paths/modes/gitlinks, but its clean-filtered tree OID is auxiliary. Raw file bytes (or non-followed symlink target bytes) feed an ordered manifest whose domain-separated SHA-256 root is the authoritative Body identity. Manifest, observation, and manifest-root head commit atomically. Gitlinks are nonrecursive; unrepresentable paths fail closed. Bind now installs one immutable runtime-side Body-store route containing the canonical external locator and exact Body-binding hash. Reads validate runtime, swarm, workspace, path, and Body binding; a runtime cannot substitute a second Body store. The route is the locator nerve used by the grounded chain below.

Modeling thinks from an authenticated Body observation (2026-07-15)

Coordinator-owned Modeling launch observes the bound repository before worker thought and seals a typed RepositoryBodyObservationBasis into the immutable launch. Modeling output contract v3 requires an exact worker-authored echo. Result ingress reloads the launch and refuses missing, swapped, or non-Modeling basis cargo. Mind admission review v1 and receipt v5 carry the same basis; the admission CAS validates launch/result/review equality and the referenced historical Body artifacts before copying it into the receipt. It never samples current Body as a substitute. A valid historical basis remains admissible after the repository changes because it proves what Modeling saw, not timeless freshness. Direct Mind adoption and legacy migration remain explicitly ungrounded rather than manufacturing retroactive evidence.

Readiness join remains deliberately impossible (2026-07-15)

Modeling audited the next ownership seam after the Body observer landed. Mind is the only coherent owner for a derived repository-readiness projection, but the remaining input required to emit observed-ready-at does not exist yet: exact workspace-retrieval coverage for that same Body manifest. RepoModel admission is now grounded to its exact pre-thought Body observation. The existing semantic projector proves exact query eligibility for an admitted RepoModel projection; the legacy workspace retrieval JSON manifest proves only path/size/ mtime/chunk cache agreement. Do not join its Ready label, empty dirty paths, watcher silence, Git OIDs, timestamps, counts, or Qdrant presence into repository readiness. Historical continuity was audited and rejected as another conceptual substitution. The correct join observes Body root R1, validates every artifact, observes R2, and emits only a time-bounded result when R1=R2. Watchers and Hands receipts trigger recomputation; they never replace either observation. Build order is now typed Body-bound retrieval coverage, the Mind-owned race-safe join, then deletion of local interpretations.

False workspace retrieval authority cut (2026-07-15)

retrieval.rs was production-unwired: no runtime caller, JSON manifest persistence, path/size/mtime/chunk identity, divergent exact/semantic walkers, path-derived Qdrant collections, and counterfeit Ready from missing manifests and query-time BM25. The module and public re-exports are deleted. Legacy thread EpiphanyRetrievalState is presentation-only: clean Ready projects Missing and its indexing job is unavailable/unowned; explicit dirty/stale input may warn but cannot prove coverage. The live RepoModel semantic projector remains intact.

Next build: consume an authenticated historical Body manifest, classify every entry under one versioned policy, verify eligible bytes against Body hashes, project into a Body-root/policy/epoch isolated collection, observe the exact expected point set, and publish an immutable CultCache coverage receipt. Do not resurrect the JSON manifest as a compatibility source.

Body-bound coverage contracts landed (2026-07-15)

The native coverage substrate now admits only an authenticated historical Body manifest, exhaustively classifies its entries under a versioned policy, and seals Body/policy/classification identity into an immutable obligation. A typed projection plan binds the exact expected point set and derives an epoch-isolated Qdrant collection from Body plus projection/embedding authority; the caller has no collection-name lever. Receipt/head validators require an exact scroll- observed point set and exact obligation/plan join.

This is contract substrate, not operational coverage. There is deliberately no persistence writer, projector, Qdrant call, query eligibility path, or readiness join. Next action: build the single CAS-owned projector/store path that verifies eligible live bytes against the selected Body manifest, executes the sealed plan, scroll-observes the physical point set, and only then publishes the receipt and head.

Projector ownership is now mapped before implementation. Persist all coverage state in the Repository Body store so terminal success can CAS against the exact current Body head; never create a runtime-store coverage oracle. Add a sealed claim/attempt lifecycle, verified historical-byte reads, deterministic UUIDv5 point descriptors, and a plan-sealed ID-to-payload binding root. Whole- collection typed scroll must reject duplicate, extra, missing, or payload- mismatched points before terminal success. Qdrant writes outside the CAS may leave orphan namespaces after races or crashes, but those namespaces own no readiness.

The sealed acquisition/failure foundation is now implemented but intentionally unwired. It authenticates current Body authority, verifies bytes, excludes empty/oversize/non-UTF-8 files, derives named UTF-8-safe line chunks, and CAS- installs immutable obligation/plan with a running claim/attempt in the Body store. Exact failure may terminalize after Body advance; no code can publish a coverage receipt/head. Next work must add observed-binding Qdrant execution, terminal-success CAS, and abandoned-claim recovery before choosing either a dedicated coverage service (preferred for ownership clarity) or a strictly separated lane in the reserved memory semantic-projector process. No CLI shim.

Exact coverage execution port (2026-07-15)

The crate-private projector now executes a sealed plan through the shared typed Qdrant boundary. It validates text hashes and vector dimensions, authenticates exact collection metadata, skips empty upserts, observes the whole typed collection, rejects cyclic page offsets and duplicate/extra/missing/substituted point payloads, and publishes receipt/head only through an exact terminal CAS over Body authority, obligation, plan, claim, attempt, and the prior coverage head seen at acquisition. Body advance and stale-head competitors cannot mint success; ordinary failures terminalize the exact running attempt.

This is still sealed foundation, not operational coverage. The dedicated workspace-coverage service is now the chosen owner, but claims first need an authenticated executor incarnation/startup receipt. Its pulse also needs an exact already-current classification and sealed chunk-text rematerialization. Recovery must consume a newer latest reserved-service launch plus its correlated ready heartbeat and fence the old claim in one Body-store CAS. Timeouts, generic managed policy, Qdrant contents, and process guesses are forbidden recovery authority. If Body advanced, terminalize the obsolete claim and acquire a fresh plan; never resurrect it.

Dedicated workspace coverage service proof (2026-07-16)

The dedicated service, binary, reserved supervisor policy, and specialized CultMesh launch contract now exist. Generic policy and caller-selected command, workspace, Body store, collection, or dimensions are rejected. Launch receipt, PID, executable hash, runtime identity, immutable Body route, and host singleton are authenticated before projection.

The service resolves the configured Ollama tag to its installed immutable artifact digest on every pulse, probes its dimensions, and uses an exact Current fast path that reads no repository files. Needed projection uses one authenticated Body read session, verifies source bytes/chunks, embeds only after claim acquisition, whole-scrolls Qdrant payloads plus vectors, and binds exact point/payload/vector observations into the receipt before terminal CAS. Body history owns retirement of terminal non-current claim collections; deletion is metadata-gated and idempotent. Raw backend/filesystem errors no longer leak into the operator-safe pulse projection.

Proof: 424 library tests passed, one ignored; core and OpenAI runtime all-target checks passed. The ignored live smoke then passed against local Qdrant 1.17.1 and Ollama qwen3-embedding:0.6b (artifact digest ac6da0dfba84a81fdbfbaf330198c33cd77c4cdfc53e8bc50eb581914a15621d, 1024 dimensions), proved exact vector observation and Current classification, deleted its GUID-scoped collection, verified no coverage collection remained, and restored the preflight-stopped Qdrant container state.

Recovery remains absent on purpose. A newer launch plus ready heartbeat is not death evidence. Next build: strengthen native process observation with host+ boot and process-instance identity, then let the supervisor publish one immutable termination observation bound to the exact old launch/PID/executable/ policy/heartbeat/provider. Only that proof plus a current replacement launch may authorize one Body-store recovery CAS. Do not add timeout recovery.

The native process-instance probe foundation is now implemented and locally proved. Windows uses PID + process-creation FILETIME + canonical executable, compares exact identity through a held query/synchronize handle before alive/exited classification, and separates Toolhelp absence, access denial, and indeterminate query failure. Linux uses boot id + proc starttime + executable and recognizes exact zombie exit; other Unix targets refuse to claim Linux evidence. The old PID-only projection has no Dead state. This substrate does not itself authorize recovery. Next build the enrolled OS-host identity and specialized reserved launch/heartbeat and termination documents; only then wire the Body recovery CAS.

The enrolled host-incarnation foundation is also implemented. Its single non-workspace CultCache record owns an Ed25519 public identity and protected private seed; opening validates the exact type/key/schema, platform binding, public/private match, and immutable singleton shape. Enrollment refuses any existing store and never regenerates malformed state. Windows uses CurrentUser DPAPI with UI disabled and the deliberately limited assurance label os_user_installation_bound_best_effort; Linux uses 0700/0600 state plus machine-id binding and declares its cloneable baseline. No code calls this physical-machine identity. Next remove reserved coverage authority from generic lifecycle/heartbeat and replace it with identity-bound signed documents.

Those specialized documents are now implemented but not yet wired. The launch is a mandatory host-signed CultMesh record over exact current reserved policy, host record digest, boot, PID incarnation, executable path/digest, provider incarnation, and ephemeral provider public key. The provider heartbeat is ephemeral-key signed, binds the exact launch envelope and same tuple, and owns a strict per-launch sequence/time CAS. Validation rechecks the current specialized policy but does not reread the historical executable path, so deletion cannot erase evidence. Focused hostile tests reject forged signatures, sequence gaps, identity collisions, wrong supervisor/status/runtime, and tuple drift.

Next migrate the supervisor and projector together: fixed-size provider seed frame over reserved-child stdin, exact process capture, signed launch persist, child launch authentication, specialized heartbeat publication, then generic writer rejection for reserved coverage. Do not let the new and old documents remain co-owners after that cut.

The migration cut is now implemented and verified. Reserved-child stdin carries one fixed binary launch-id/seed frame and requires EOF; all nonreserved service stdin is null. Supervisor captures the spawned process incarnation, sends the secret, host-signs/CAS-persists the specialized launch, and kills/waits on any failure. The projector authenticates host, current policy, boot, exact process, launch digest, and derived provider key before service construction, then emits only specialized signed heartbeats. Generic lifecycle and daemon-heartbeat writers reject the reserved coverage identities, and the old generic coverage authenticator is deleted. Coverage claim/attempt v1 now binds managed_process_launch_id, refusing semantic reinterpretation of v0 state.

The new native epiphany-host-identity enroll|status actuator explicitly enrolled this Windows installation at the default LocalAppData DPAPI store; status reopened identity 17f041421045aa66d4c8ab0488f462dbb5ea1a7d8507dbf75216f5ec368dbb7a. Next implement immutable Idunn termination observation before replacement spawn, then the exact Body recovery CAS. Timeout recovery remains forbidden.

Immutable termination evidence is now implemented. The only public writer uses native boot/process observation; the injectable source is private to tests. A host-signed per-launch record binds the exact current policy envelope, exact specialized launch, exact per-launch latest signed heartbeat, enrolled host, expected boot/PID generation/path, observed outcome, and optional exact exit or replacement material. Publication exact-CASes those three source envelopes and an absent immutable termination key. There is no latest termination pointer. Alive, inaccessible, indeterminate, unknown boot, host mismatch, collision, or moved source state refuses. Authentication reconstructs the complete persisted chain instead of blessing the signed blob by itself.

Next wire Idunn ordering and Body recovery: predecessor termination must persist before replacement spawn; replacement signed ready must exist before one atomic v1 claim/attempt terminalize-and-reacquire CAS. Add negative ordering and stale- Body tests before calling recovery operational.

The deployment next action is unchanged and permission-bound. Do not reboot without exact live operator approval. With that approval, run the real reboot/logon recovery proof already specified above.

Workspace coverage exact Body recovery and Idunn reconciliation (2026-07-16)

The abandoned-claim path is typed end to end. Recovery refuses caller-owned Body paths, reopens the runtime's authenticated Body route/basis, joins current Body, obligation, plan, claim, and attempt, authenticates the old launch plus immutable host-signed termination, and accepts only a causally linked replacement launch whose current signed heartbeat is ready. One exact Body CAS archives the failed owner, advances the fencing epoch, installs the successor claim/attempt, and writes an immutable recovery receipt binding the old claim, termination envelope, replacement launch envelope, ready heartbeat envelope, and successor authority. Restart authentication reconstructs both CultMesh evidence and current Body authority.

Reserved launch schema v1 adds a signed causal replacement edge. Its writer exact-CASes a singleton replacement-for/<old-launch> slot with exact termination and launch state. A second replacement refuses; the supervisor kills a spawned loser when persistence loses CAS.

Idunn branches workspace coverage away from generic lifecycle PID receipts. It persists or reuses termination, reuses a causal replacement after interruption, otherwise launches through the fixed stdin/bootstrap path, waits for the exact latest signed ready heartbeat, then invokes Body recovery. Initial/pre-claim launches use the same specialized authority.

Proof passed: 5 process-document/recovery tests, 14 supervisor tests, 15 projector tests plus 1 ignored live Qdrant/Ollama test, and all-target check.

Next cut: termination v0 still requires a provider heartbeat. A child dying after launch persistence but before heartbeat sequence one strands the chain. Rebuild termination so signed launch plus enrolled host/boot/process observation is sufficient, with heartbeat optional additional evidence. Then run a GUID-scoped live initial launch -> death -> replacement -> Body recovery smoke. Reboot/logon proof remains permission-bound.

Pre-readiness workspace coverage death is recoverable (2026-07-16)

The heartbeat prerequisite was rebuilt, not relaxed with nullable fields alone. Each specialized launch owns one typed process-evidence head. Launch initializes it; every signed heartbeat advances it by exact CAS; termination advances and seals it by exact CAS. Termination v1 uses signed launch plus enrolled host/boot/process observation as sufficient death proof and includes heartbeat id/digest only when the head names a current signed heartbeat. Heartbeat after termination refuses, so publication and death cannot win on separate keys.

Focused proof now includes death before heartbeat sequence one, successful heartbeat-free termination authentication, and refusal of a late heartbeat. All six process-document/recovery tests, fourteen supervisor tests, fifteen projector tests plus one ignored live test, and all-target check pass.

Next: create/run a GUID-scoped live smoke through real packaged supervisor and projector binaries, local Qdrant/Ollama, exact child kill, causal replacement, epoch+1 recovery, and restart-time receipt authentication. Restore the prior Qdrant container state afterward. Reboot/logon remains permission-bound.

Live packaged workspace coverage recovery proof (2026-07-16)

Feature-gated binary epiphany-workspace-coverage-recovery-smoke constructs GUID-scoped repo/runtime/Body/Verse state, uses the real packaged supervisor and projector siblings, warms local Ollama, derives its exact fenced Qdrant collection names, launches through specialized bootstrap, catches the epoch 1 claim, kills the exact child, runs Idunn reconciliation, verifies epoch 2 authority and fresh-store-reopen recovery receipt authentication, kills the replacement, and removes only its exact owned collections. Process cleanup revalidates the signed launch's native incarnation before issuing any kill.

Passed proof: C:\Users\Meta\AppData\Local\Temp\epiphany-workspace-coverage-a577f820-b0e2-4733-b628-529ee3bdb143\proof.json

Receipt: 2b44f28f-7c0f-4ad2-aefe-d7c8222e8642. The proof binds executable SHA-256 d262b7f49d45f15c31589bdfb591988cabcfa9ba65564d3e61493dc00b072093, the exact embedded smoke-source digest, source head, and dirty tracked-source diff digest. It verifies both owned collections absent before emitting success. Operator orchestration restored the local Qdrant container to its prior stopped state; that is not a harness claim.

The live rite exposed two real defects and did not pass until both were cut. Windows boot identity no longer opens privileged PID 4; it queries native kernel boot time and a focused test proves availability/stability under the current normal user. Recovery no longer deadlocks its successor: the exact v3 replacement incarnation may resume its own running claim, while a wrong incarnation remains contended. The harness uses file-backed supervisor output because Windows grandchildren can retain captured pipe handles, and it has exact-incarnation process cleanup and exact-owned-collection cleanup guards.

Verification: five native process-observation tests, six process/recovery tests, fourteen supervisor tests, fifteen projector tests plus one ignored live test, and feature-enabled all-target check pass. The separate live Qdrant/Ollama projection test passed before the recovery smoke.

Next: audit deployability against the swarm readiness plan and live host state. Do not conflate code-complete physiology with the permission-bound reboot/logon proof; no reboot without explicit live operator approval.

Fresh deployability audit (2026-07-16)

The host is operational after current-user login, not yet deployable as one proven artifact generation. GameCult-Yggdrasil-Tunnel and Epiphany-Idunn-Managed-Service-Reconciler are enabled/running; the Yggdrasil Qdrant tunnel and Ollama endpoint are live; packaged Mind and Modeling queries return semantic ranking. Local retired Qdrant remains stopped. This is real current-boot physiology.

Four non-permission wounds remain. Installed supervisor/projector binaries predate recovery commit 34802407; Task Scheduler pins one mutable supervisor path while Idunn discovers siblings by filename/existence, so mixed generations are possible; Mind has no race-bounded whole-repository readiness join; and the old readiness plan described already-landed June work as future work. The plan now contains the live evidence matrix. Packaging must become an immutable typed commit-addressed release witness consumed by Task Scheduler and Idunn. Mind readiness must join fresh Body R1/R2, exact Body-grounded RepoModel admission, live Modeling semantic eligibility, and live workspace-coverage Qdrant evidence. Stored coverage Current is not sufficient.

The constant queryAdmission=false and supervisor fields naming an external readiness authority are removed from sight-only projector/health/status projections. Those surfaces never evaluated query admission and therefore have no opinion. Query-time reauthentication remains the semantic admission owner.

After the witnessed release is deployed, prove exact current-boot recurrence and Mind/Modeling query ranking. A reboot/logon proof remains the sole permission-bound host gate; do not reboot without explicit live approval.

First witnessed deployment (2026-07-16)

The release packager failed closed three times before publication and exposed three substrate wounds: Git rejected verbatim/deep Windows worktree paths, Cargo could not traverse the remaining deep vendor path, and the exact commit did not contain epiphany-core/Cargo.lock. The final machine uses normalized canonical package paths, short temporary exact-source/build roots, initialized pinned submodule bodies, and a tracked lockfile with --locked. It builds from a detached worktree at the witnessed commit; caller-supplied binaries have no entry path.

Published release:

  • source commit: dd80f4a51c18425a6665710698a357be61154abf
  • release id: sha256-c94109f94ee42c1257089830f399cb87cd5ad672772c274194371995ce4df923
  • witness digest: sha256-f0394590e2e9762b7cb1579f6a06db009f4701730fe1b44ea0f20c1175aee04a
  • package root: E:\Projects\EpiphanyAgent\.epiphany-run\releases\dd80f4a51c18425a6665710698a357be61154abf\sha256-c94109f94ee42c1257089830f399cb87cd5ad672772c274194371995ce4df923

The typed semantic-projector policy now names the witnessed role path. Task Scheduler pins the witnessed supervisor plus release id/digest. Reconciler PID 21228 launched direct-child projector PID 22736; both witnessed Mind and Modeling query gates returned semantic ranking. After exact-path verification, PID 22736 was killed once; Idunn launched direct child PID 19748 with new launch receipt 86a42d51-9930-4b5d-9e61-e74c82a0d808, ready heartbeat 4fc91977-b635-474b-812b-c364847e2b4b, and executable SHA-256 1060dd64e8c2b520ec8744b67e8306db04a6618d463fc2117c352adf9e30e6b0, which equals the witnessed file. Task result 0x800710E0 remains the expected IgnoreNew recurrence refusal while the foreground task is running.

The installed sibling-generation gate is closed for the current boot. Next: build Mind's whole-repository observed-readiness join. Reboot/logon remains permission-bound.

Semantic receipt-v2 live migration wound (2026-07-16)

The first readiness release exposed an honest migration failure. Receipt v2 correctly made the old v1 Mind/Modeling receipts ineligible, but pulse classification returned Succeeded from claim status before deriving receipt health. Both partitions therefore stayed idle and packaged queries fell back to canonical BM25. Succeeded is removed as a pulse state. Valid v2 terminal evidence derives Ready; a same-obligation succeeded predecessor with missing, legacy, or invalid receipt evidence derives Repair.

Repair is not opened by claim shape alone. Classification and acquisition share one predicate that authenticates the consumed executor grant or recovery authorization plus the exact succeeded attempt/claim binding. The repair grant advances the epoch. A failed repair becomes a failed current claim and retries through the ordinary execute path at the next epoch. Tests cover forged authority refusal, v1 repair acquisition, failed repair, execute retry, v2 terminal success, final Ready, and empty-v2 Ready/nonqueryable stability. Soul approved; the full library suite is 466 passed, 2 intentionally ignored.

Operational evidence before the fix: release sha256-6f9ab4848207a110e7e3836f41e6a74c0f463369ad4b04ce2d0d3831a6b262ae from commit 360dcb43 launched witnessed Idunn PID 29476 and direct child projector PID 22840, but both packaged semantic queries fell back because the v1 receipts had no migration path. The next action is to commit this repair, package/deploy a successor witnessed release, observe v2 semantic ranking, then derive the first live whole-repository readiness projection. Reboot/logon still requires explicit live operator approval.

Mind whole-repository readiness join (2026-07-16)

The missing join now exists in source. repository_readiness.rs is Mind's sole owner for a historical gamecult.epiphany.repository_readiness_projection.v0. It derives every authority decision from raw snapshots and observations: fresh Body R1, one canonical RepoModel, exactly one current v5 admission whose historical Body basis is authenticated, the exact succeeded Modeling semantic chain, live semantic vectors, live workspace coverage bound to R1, fresh Body R2 with equal content identity, repeated live observations, and one complete closing runtime-store snapshot. The final projection append uses CultCache's new full-snapshot conditional append, so a concurrent unknown receipt or obligation defeats the write. Stored readiness is historical evidence only and cannot admit a later query or readiness answer.

Semantic receipts are now v2 and seal the deterministic post-scroll vector binding root. Old, malformed, substituted, or stale receipts cannot grant query eligibility. Exact empty projections may terminal-succeed once while remaining non-queryable, avoiding a retry wound. Both semantic and workspace live readers revalidate their persisted authority after Qdrant observation.

CultCache envelope identity is now the tuple (type, key), not delimiter concatenation, and append_if_snapshot_unchanged compares the complete canonical snapshot beneath the single-file exclusive lock. Soul approved the join after hostile passes for alien keys, duplicate grounded/ungrounded admissions, forged raw semantic heads, receipt cross-field substitution, historical Body failure, Body/authority drift, R1-bound coverage ordering, CAS refusal, and exact concurrent idempotence.

Verification: 21/21 CultCache tests and 465/465 Epiphany library tests passed; two existing live tests remain intentionally ignored. Next: commit/push the CultCache submodule and parent changes, package a new witnessed release, deploy it, then derive the first live whole-repository projection. Reboot/logon remains permission-bound and requires explicit live operator approval.

Yggdrasil live-deployment authority map (2026-07-16)

Live Epiphany deployment proof belongs on new Yggdrasil, not Starfire. The live host already runs Idunn (idunn-yggdrasil.service), Bifrost, Odin/Hermodr, Qdrant, and GPU-backed Ollama locally. Epiphany is not yet deployable there: there is no Epiphany Idunn target, ops manifest/unit, immutable release body, or daemon-owned aggregate idunn.daemon_health.v1 publication.

Two ownership gaps must close before the target is enabled. Epiphany's semantic projection health is component sight and cannot stand in for whole-runtime health; the managed-service supervisor must join the authenticated packaged release with current semantic and workspace-coverage child lineage and publish one explicit CultNet/RUDP health contract. Separately, Bifrost's real GitHub crossing receipts are not consumed by Idunn: Idunn currently observes origin/main as desired revision without proving that Bifrost authorized that exact commit. The new chain is Bifrost exact repository/ref/SHA authority -> Idunn frozen deployment request/artifact -> guarded ops actuator -> immutable release and deployed manifest -> daemon-published runtime health. Branch movement, actuator environment variables, process liveness, and component health are forbidden substitutes.

The intended Ygg body uses /srv/build/Epiphany as Idunn's mutable upstream clone, immutable application releases below /srv/epiphany/app/releases, an immutable deployed source Body below /srv/epiphany/source/releases, canonical state below /var/lib/gamecult/epiphany, local Qdrant at 127.0.0.1:6333, and local Ollama at 127.0.0.1:11434. Actual publication must cross live Bifrost; actual deployment must be requested through live Idunn. Manual SSH deployment is not acceptable evidence. No host reboot is authorized.

Source implementation now closes the Epiphany-owned half. The managed-service supervisor publishes exact idunn.daemon_health.v1 over CultNet/RUDP only after joining the authenticated packaged release with the exact two reserved projectors. Semantic and workspace lineage require current policy, the exact packaged executable, launch-time process incarnation, correlated ready heartbeat, and bounded freshness. Proven stale v2 lineage may be replaced only through its persisted process identity; authentication uncertainty cannot kill. Legacy v1 lifecycle receipts are read-only and enter a typed non-killing retirement path before a v2 launch. Full library verification is 475 passed, 2 intentional live-endpoint ignores.

The adjacent source bodies are also prepared. Bifrost main commit 3bd250f publishes bifrost.repository_release_authority.v1, binds one canonical repository/ref/SHA to a completed crossing receipt and exact GitHub proof, and forbids simultaneous live authorities for the same ref. Odin's Ygg worktree adds a scoped yggdrasil-epiphany target, selects the unique live Bifrost authority rather than branch head, freezes it through deployment request and artifact state, and revalidates at the privileged actuator boundary. The ops body builds exact initialized source through a separate builder identity, root-seals immutable source/application releases, starts Epiphany against Ygg-local Qdrant and Ollama, requires post-candidate Idunn RUDP acceptance, and only then publishes the v2 deployment witness. These source bodies are not yet live on Ygg; bootstrap and deployment remain the next phase.

Yggdrasil GPU pressure exposed missing progress authority (2026-07-17)

The live authority chain now reaches Yggdrasil. Bifrost authorized exact Epiphany main commit 586147a751c6eec2d59cd8dc10bd17ce0d02a4d1; Idunn fetched that exact upstream commit, built it in the pinned Rust container, installed immutable release sha256-a5a43af6d2502377d2078dcb42ab98088f4a812487217436ec1af0ddd0d26b3d, and started both local projectors against Ygg-local Qdrant and GPU-backed Ollama. Mind completed its first pulse, reported providerStatus=ready, and published 215 vectors. Workspace coverage is a real 3,956-file Body pressure run; a local line-based estimate is 14,734 UTF-8 chunks.

The GTX 1080 is genuinely used: the workspace projector sustains roughly 93-100% compute utilization at 2,419 MiB VRAM. The prior 32-text HTTP batches could monopolize one request for more than thirty minutes. Commit 586147a7 bounds batches at four; live Ollama receipts now complete continuously in roughly 0.7-1.7 seconds per call at about 53-63 calls/minute. This proves useful forward GPU work, not merely allocation. It also proves the full first pass is roughly an hour at the current hardware ceiling, longer than Idunn's 50-minute deployment-health wall clock.

Do not fix that by increasing the wall clock. The current execution primitive embeds the entire sealed plan into memory, then performs Qdrant publication and verification, and only returns to the binary afterward. The binary therefore emits no signed provider heartbeat during the long pulse. Ollama logs, nvidia-smi, process existence, elapsed time, and Qdrant point counts cannot become progress authority.

Authority map for the repair:

  • Owner: the authenticated workspace-coverage projector owns domain progress; Idunn owns deployment admission, and the supervisor only derives aggregate health.
  • Inputs: exact packaged release/policy/managed launch, provider incarnation, claim and attempt epoch, sealed plan, Body observation/generation, immutable embedding artifact/dimensions, and acknowledged durable Qdrant checkpoint.
  • Outputs: an append-only provider-signed epiphany.workspace_coverage.projection_progress.v0 event plus CAS latest pointer. It binds sequence/time, exact authority identities, phase, completed/total units, and the currently bounded backend operation.
  • Derived state: warming requires a fresh independent process heartbeat and fresh monotonically advancing exact-lineage progress. stalled follows an expired named operation/no-advance deadline. active still requires the canonical receipt/head and live verification; progress at 100% is not readiness.
  • Forbidden writers: Idunn, deploy scripts, supervisor, Ollama logs, GPU telemetry, stdout, Qdrant counts, running claims, and free-running heartbeat churn cannot advance progress.
  • Shared path: first projection, ordinary Body change, retry, and authenticated successor recovery use the same durable batch/checkpoint primitive.
  • Cut line: split monolithic embed/upsert/verify execution at deterministic durable boundaries; keep liveness heartbeat independent; remove total wall duration as the health verdict. A successor launch cannot inherit work without an explicit authenticated resume/checkpoint contract.

Negative proof must cover frozen progress with live heartbeats, stale heartbeat with advancing progress, replay across launch/Body/plan/model/release, sequence or count regression, mutable totals, progress without acknowledged Qdrant durability, 100% without a valid receipt, deleted/substituted collections, restart inheritance without recovery authority, concurrent owners, clock hostility, and Idunn accidentally treating warming as active.

The current live run remains diagnostic evidence only until its terminal workspace receipt, exact aggregate RUDP health, and deployment witness land. No reboot is authorized.

Checkpoint implementation cut: the authoritative batch checkpoint lives in the repository Body CultCache, not the local Verse. It is admitted by one CAS against unchanged Body/obligation/plan/running claim/running attempt and a claim-scoped checkpoint head. Each checkpoint carries a contiguous canonical plan range plus the exact ordered point, payload-hash, and vector-hash bindings read back from Qdrant after a waited upsert. The signed Verse progress event references the checkpoint's exact CultCache envelope digest; neither a random provider hash nor Qdrant operation text is evidence. Terminal readiness still requires the existing whole-collection scroll and receipt/head CAS.

Same-claim retry may continue only from a contiguous authenticated checkpoint chain whose batches still re-observe exactly in Qdrant. Recovery uses a new claim epoch and new epoch-fenced collection. A successor may authenticate and copy predecessor checkpoint batches into its own collection after exact death and recovery proof, then emit new-claim checkpoints citing the source envelope; it never mutates or inherits the old collection. If live external evidence is missing or changed, it restarts from zero. Required backend cuts are a single bounded waited upsert, exact retrieve-by-ID with vectors/payloads, and a common readback/checkpoint primitive for newly embedded and recovered copied points.

The first bounded-batch pressure run terminated exactly as the model predicted. At 2026-07-17T01:23:50+02:00, after 50 minutes of candidate-health waiting, Idunn stopped Epiphany, left /srv/epiphany/deploy/deployment.env absent, and reported Idunn did not publish exact-candidate Epiphany daemon-health proof. Ollama had completed 3,389 embed HTTP calls since candidate startup. After the Mind projection calls, that represents roughly 13.3k workspace chunks—about 90% of the estimated 14,734-chunk Body. The GPU remained usefully saturated, but the monolithic executor had not yet upserted the accumulated workspace vectors, so Qdrant's inherited Modeling collection remained at 22 points and the hour of partial work was discarded. This is the live falsification of the current execution/deployment contract. Do not reinterpret it as an Ollama or GPU failure and do not repair it by lengthening the total wall timeout.

Live projector checkpoint integration landed (2026-07-17)

Epiphany main commit 7362e54b replaces the production monolithic workspace executor. The live path now processes sealed plan-order batches of at most 128 points, performs a waited Qdrant upsert, reads those exact IDs back with payload and vector, admits a provider-signed Body checkpoint, and publishes progress only from that admitted checkpoint. Restart authenticates the complete genesis-to-head checkpoint chain against current Body, claim, attempt, plan, launch, and host authority; it re-observes every checkpointed batch before resuming at the next ordinal.

Terminal receipt/head proof remains separate. It reconstructs independent payload/vector expectations from the authenticated full checkpoint chain, requires complete contiguous plan coverage, and rejects cycles, gaps, overlaps, duplicate checkpoint or Qdrant rows, missing/extra points, and any payload/vector substitution during the final whole scroll. The previous circular final-vector comparison was found by Soul and cut before commit.

The provider heartbeat is now an independent signed 10-second nerve and keeps publishing while projection blocks. Heartbeat publication, sequence, or local projection-lock failure terminates the whole provider process; a projector may not continue acting after losing its liveness organ. Pulse refusal remains an operator projection and no longer contaminates heartbeat status.

Focused proof: 10 checkpoint tests, 17 projector tests, 3 service tests, the reserved supervisor-argument test, and production checks for both projector and supervisor binaries pass. The old all-at-once executor survives only under cfg(test) for legacy pre-embedded invariant tests; it is absent from the deployed body. The next authority cut is Idunn and aggregate health: consume the exact provider progress document with a no-advance lease, never a generic job progress noun or total projection wall clock.

Live storage pressure later exposed that the production cadence still admitted one immutable Redb checkpoint/progress transaction per point despite the 128-point batch contracts. The cadence now aliases the shared checkpoint maximum of 128 and is compile-time constrained by Qdrant's same 128-point transport ceiling. Durability still follows waited upsert plus exact payload/vector readback; only the authenticated commit unit changed. Existing one-point chains remain valid predecessors for later larger batches when their exact Qdrant collection survives. A progress store whose collection is absent must not be resumed from counts alone.

Organizational Epiphany is the product, not a remote-control experiment (2026-07-18)

The Yggdrasil deployment is the first ordinary organizational Epiphany body. It must remain awake without continual instruction: Modeling persistently maps the bounded domain into typed Mind state, Self extrapolates pressure and direction from that map, and Imagination authors inspectable improvement and feature proposals. This initiative is advisory until the appropriate adoption and consequence authorities act; operator inactivity permits observation, modeling, and proposals, not merge, publication, deployment, or scope growth.

The repository Persona is the organization's shared social crossing. Members may talk to it, correct it, and provide feedback through ordinary Discord conversation. Persona owns discussion and legibility. Conversation produces typed feedback pressure for Modeling, Imagination, and Mind review; it does not directly mutate canonical Mind, invoke Hands, authorize a release, or command Idunn. Authenticated operational capabilities such as brake, objective intake, adoption approval, release authorization, and deployment remain distinct typed Bifrost routes with explicit receipts. VoidBot observes the room and Bifrost routes the typed crossing; do not invent a second Discord bot or grant ordinary chat ambient actuator authority.

The July 22 continuity criterion is stronger than remote command. Yggdrasil must host the resident scheduler/coordinator, model runtime, tool spine, Persona crossing, writable domain worktree, persistent Mind/Modeling state, and local credentials. Starfire may be absent through August 5. The offline rehearsal must prove conversation/feedback -> persistent domain map -> Imagination proposal -> explicit adoption/review -> Hands consequence -> Bifrost exact release authority -> Idunn deployment receipt, plus the negative that conversation alone cannot cross any later boundary.

Live observation on 2026-07-18 sharpened the deployment boundary. Exact release 0601e280480cccc28209fbf0630e921f3ef9056d kept its projector incarnation alive and advanced the Qdrant workspace collection from 1,621 to 3,278 points after the foreground Idunn deploy actuator was no longer present. deployment.env remained absent and Idunn correctly raised dependency-unavailable because it could not establish release freshness. A surviving candidate and advancing checkpoint are resumable work evidence, not deployment admission. After the provider reaches terminal projection, the same exact authorized release must re-enter Idunn's deployment transaction and earn the typed deployment witness; no observer, systemd state, Qdrant count, or journal line may synthesize it.

Resident organizational Self ownership (2026-07-18)

The resident cognition cut now has a concrete authority boundary. Standard heartbeat alone converts one pending typed pressure into one single-consumption Self scheduling grant. Resident Self alone turns that grant into one exact coordinator process lease. The coordinator, model runtime, and tool spine keep their existing authorities; the resident scheduler does not absorb them.

Inputs are an authenticated packaged-release witness, physically separate resident/runtime/Verse/Mind stores, the swarm brake, exact process observation, and typed operator-objective, Body-map-drift, Persona-feedback, or Imagination-proposal pressure. Outputs are immutable pressure/grant, preparation, child-claim, active-lease, coordinator-receipt binding, and heartbeat terminal-ack documents. Active status and cooldown are derived from that chain. Process exit, logs, Persona speech, proposal text, systemd state, Eve/Gjallar projection, and Qdrant progress are forbidden writers.

All wake sources share one path: pressure -> heartbeat grant -> prepared launch -> packaged coordinator child claim before cognition -> exact process lease -> bound coordinator terminal receipt -> terminal acknowledgement. Preparation and grant consumption use one CAS; brake and timeout drain the exact observed process; coordinator exit zero without its exact receipt fails. The old source-tree/Cargo swarm wrapper and its online, run, run-queue, pulse, and epiphany-work queue authority are outside the live body. Packaging now requires witnessed sibling roles for swarm, coordinator, model runtime, and the Codex MCP tool spine.

Verification must remain at these typed transitions: CAS/replay, store separation, release witness, child-claim-before-cognition, exact process identity, brake/timeout timelines, receipt substitution, and absence of runtime Cargo/queue paths. One nonblocking hardening note remains: the parent currently correlates its post-launch process observation with the child's atomic claim. That is stronger than PID custody and fails closed, but it should eventually be replaced by an OS-authenticated parent/child launch channel where available.

This is cognition bootstrap, not deployment admission. Ygg release 0601e280480cccc28209fbf0630e921f3ef9056d remains a live advancing candidate until Idunn publishes the exact typed deployment witness; resident service installation, writable domain custody, credentials, Persona/Discord ingress, and the Starfire-offline rehearsal remain required.

Resident physiology and Ygg service body prepared locally (2026-07-18)

Heartbeat serve is now the single resident physiology loop: it reconciles an exact terminal acknowledgement first, retains pressure while braked, emits at most one grant while clear, never replaces an active coordinator, and performs bounded void/sleep work only while idle. Restart resumes the typed chain rather than guessing from process or journal sight. Heartbeat is a required witnessed release sibling; coordinator and resident Self require the exact authenticated runtime and an explicit provider.

epiphany-swarm status is non-actuating sight. Its typed resident-readiness document binds runtime id, release id, release witness, source commit, packaged binaries, physical store separation, heartbeat/Self freshness and coherence, active lease sight, runtime-scoped brake, writable workspace, and credential posture. The existing daemon supervisor remains the sole signed Idunn health writer and may aggregate the exact heartbeat/Self provider pair. Readiness, systemd, and PID sight cannot admit deployment.

The matching gamecult-ops cut defines three narrow services: epiphany.service owns supervisor/projector execution and signed aggregate health; epiphany-heartbeat.service owns heartbeat state and grants; and epiphany-swarm.service owns resident-Self state and bounded coordinator launches. Coordinator, model runtime, and tool spine remain witnessed child siblings. Yggdrasil's writable organizational Body is /var/lib/gamecult/epiphany/workspace; immutable /srv/epiphany/source/current is release provenance. Bootstrap prepares protected stores and service-user credentials. Deployment authenticates the sibling set, initializes heartbeat, manages all three units transactionally, preserves coverage checkpoints across retries, waits for typed readiness, and lets Idunn write deployment.env only after admission.

This is ordinary organizational Epiphany. Persistent Modeling maps the bounded domain; Self derives bounded attention pressure from map drift; Imagination authors inspectable improvements and feature proposals; the organization talks to the repository Persona through existing VoidBot/Bifrost Discord ingress. Feedback and proposals may request cognition. They cannot adopt Mind state, invoke Hands, authorize Bifrost release, or command Idunn. Those are separate typed crossings and receipts.

Live source 0601e280480cccc28209fbf0630e921f3ef9056d, release sha256-f9fbc9c17cfc4038c49f77dd2a238d487b723600127a982dc4ae2ab98b308a77, and projector PID 145165 remain the sole first-projection owner. Its Qdrant collection advanced beyond 6,585 points. deployment.env and the foreground Idunn actuator remain absent, so this is resumable provider evidence, not admission. Do not interrupt it. After terminal proof, re-enter the exact release through Idunn, then authorize and deploy the coordinated resident generation. Before July 22, run Starfire-offline proof of feedback -> persistent map -> bounded Imagination proposal -> explicit adoption/review -> Hands -> Bifrost -> Idunn, including the negative that conversation alone crosses no later gate.

The immediate live wound precedes that work. The workspace projector is the lifetime owner of workspace-coverage.cc, but the supervisor currently opens that private store to discover and perform recovery. Replace that transitive authority leak with a provider-signed claim sight published immediately after acquisition and a host-signed recovery directive consumed by the replacement projector. Heartbeat remains liveness only. The supervisor must never open or mutate the coverage store; it declares recovery only after authenticating the replacement claim sight. Keep Epiphany and Idunn stopped on Yggdrasil until the corrected exact release is authorized through Bifrost and deployed through Idunn. No host reboot is authorized.

Workspace-coverage recovery ownership cut complete locally (2026-07-18)

The supervisor no longer opens or mutates workspace-coverage.cc, directly or through an imported recovery helper. The lifetime projector owner publishes a provider-signed claim sight before its first backend operation. Claim sight is keyed to the exact current Body observation and generation and binds the exact launch, provider key, coverage-store binding/file/route, Body basis, claim, attempt envelope, plan, and recovery lineage. A signed sight from an older Body is not current recovery authority.

After exact termination and replacement readiness, the supervisor publishes one immutable host-signed recovery directive. It binds the authenticated old claim sight, termination, replacement launch, readiness heartbeat, Body, and coverage route by exact envelope digests. Reconciliation reauthenticates and returns the same signed directive byte-for-byte; a later heartbeat cannot rewrite it, and conflicting lineage is refused. Provider heartbeats now retain immutable per-heartbeat evidence beside the latest pointer because durable termination and recovery documents may cite an earlier heartbeat. Causally safe bounded retirement remains future work; naive deletion is forbidden.

The replacement projector authenticates the directive and performs the recovery CAS through its already-held WorkspaceCoverageAuthority. Recovery is idempotent across the CAS-to-successor-sight crash window: an exact committed successor and receipt are returned on replay, then ordinary acquisition republishes successor claim sight. A directive naming readiness heartbeat H remains valid when the same launch/provider has advanced normally to ready H+1. Heartbeat remains liveness evidence and does not own the lease.

Focused proof passes: eight process-document tests, the exclusive lifetime owner test, supervisor authority-order/prohibition test, pre-checkpoint sight, stale-Body refusal, H/H+1 consumption, immutable directive reissue, conflicting lineage refusal, exact CAS replay, successor sight publication, cargo check --bins, and git diff --check. Soul found no remaining P0/P1/P2. This code is ready to commit and push, then cross Bifrost/Idunn as an exact release while the host remains braked.

Live deployment and reconciliation split follow-up (2026-07-18)

Commit 0601e280480cccc28209fbf0630e921f3ef9056d is pushed, is the sole current Bifrost release authority, and is running through Idunn on Yggdrasil as release sha256-f9fbc9c17cfc4038c49f77dd2a238d487b723600127a982dc4ae2ab98b308a77. The detached deployment request remains in progress and deployment.env is absent, so terminal admission is not yet proven. Projector PID 145165 has remained stable; body.cc remained 612,961 bytes; the dedicated coverage store remained 79,712,256 bytes while its typed state advanced; and the current Qdrant collection advanced from 193 to 1,621 points. GPU samples show the embedding model resident and useful intermittent load. Do not interrupt this sole owner merely because the first full projection is slow.

Live stdout exposed a remaining conceptual substitution: every healthy claim was routed through the termination writer and projected as awaiting-exact-termination. The writer refused ExactAlive, so private state remained safe, but alive, inaccessible, and indeterminate sight were collapsed into dishonest recovery pressure. The local uncommitted correction gives the supervisor one typed non-mutating process observation before recovery: ExactAlive reports observed-alive; uncertain sight reports observation-degraded; authority drift reports observation-refused; only proven terminal sight reaches termination, replacement, readiness, and directive.

The cut also seals the restart timeline. Claim sight is re-read after immutable termination to close the pre-first-claim race. A persisted replacement without a directive is recognized only through exact old-launch, termination, policy, and causal replacement bindings. The supervisor observes that exact replacement alive, selects a fresh signed ready heartbeat under the existing 180-second lease, then re-observes the process immediately at the directive actuation boundary. Terminal or uncertain replacement sight produces no directive, termination write, or second launch. Recovery resumption, newly launched replacement, and immutable directive replay share the same final gate.

Focused proof passes: ten workspace process-document tests, eight supervisor workspace-reconciliation tests, all-bin check, diff check, and final Soul audit with no P0/P1/P2. Behavioral injection proves ExactAlive-to-Missing across the readiness window performs zero directive/termination/launch writes, while ExactAlive-to-ExactAlive performs exactly one directive write. Commit and push this cut next; do not replace the live release until its current projection has landed terminal proof or a real failure requires recovery.

Current organizational Yggdrasil deployment (2026-07-18)

This section supersedes earlier live-PID and release-progress instructions. Release 0601e280480cccc28209fbf0630e921f3ef9056d, projector PID 145165, and their Qdrant counts are historical evidence only. The old deployment transaction was terminated through its rollback boundary, its release authority was revoked, and its missing final witness must not be reinterpreted as admission.

The ordinary organizational feedback path is live on Yggdrasil. VoidBot runs as its host service identity with portable observer-group access and writes atomic typed observations through the exact Idunn-admitted CultLib runtime. Bifrost is healthy, bound to six organization channels, and publishes daemon-owned RUDP health accepted by Idunn. A labeled bound fixture became an immutable admission receipt with grantsWorkAuthority=false and grantsAdoptionAuthority=false; an unbound fixture was refused. Conversation remains feedback pressure only.

Idunn and Bifrost deployment authority were repaired from the coherent Odin schema branch. Idunn now kills timed-out Unix command process groups, treats an absent deployment witness as first-deployment state while refusing corrupt witnesses, and rehydrates its preserved typed store. Bifrost's release runtime uses pinned commits and publishes an exact deployed-revision witness. VoidBot 7c6f0e9e77ef9d2361c9b7a8368f9fdb0b754458 is deployed and witnessed.

Epiphany 37df884c6411da10196e59b741a538f792deeee5 is authorized through Bifrost and is being deployed only through Idunn. The canonical writable Body is /var/lib/gamecult/epiphany/workspace; immutable release provenance is not a substitute. The actuator now writes an engaged typed scope=all swarm brake before starting any Epiphany service. Releasing that brake is a separate operator action. Until Idunn admits exact signed aggregate health and publishes /srv/epiphany/deploy/deployment.env, the candidate is not deployed.

Resident organizational product and authority correction (2026-07-18)

Epiphany's resident organizational behavior is the product posture, not a special dogfood mode. A swarm may continuously map its authorized domain and, from the current admitted model, ask Imagination for bounded proposals without waiting for a chat instruction. Organization feedback through the repository Persona is additional attributed pressure, not the ignition key and never adoption or action authority.

The old body-map-drift pressure was a false measurement: it hashed only the current RepoModel and compared it to no Body or prior model. It is replaced in epiphany-core/src/resident_self.rs by admitted-model-direction-consideration, bound to the exact current admitted model revision/hash and unique admission receipt and emitted only while no terminal direction consideration exists. Imagination remains proposal-only.

Package construction and application-owned state publication are separate; Bifrost owns release crossing and Idunn owns deployment. Verifier/status reads consume immutable provider snapshots without acquiring writer locks. Resident readiness joins separately owned release, runtime/Verse, provider, Mind, and brake facts and grants no cognition or action authority. An engaged brake still permits daemon supervision, leases, health, liveness, and read-only sight while blocking cognition launches, cognitive-work scheduling, Hands consequences, publication, and deployment actuation.

Exact candidate 9165862cce09739a62b20c0c7728ccceb71cfc2f crossed Bifrost and built immutable release sha256-39eed3817a10325b39b7f223fb2919c5959c88443ef82d9cc1497f6af631f365 with witness sha256-9ad9cfe17fcabffb84fb392cbd5ecc1e8823482a338b38ced52e1020532e80c6. It was not deployed. Startup exposed three faults, so all candidate services and the Idunn transaction were terminated through rollback. There is no deployment witness or active-release pointer. The immutable package and stable compiler cache remain reusable evidence only.

The successor source cuts those faults at their owners. Heartbeat reads only its typed identities from the mixed heartbeat/readiness store and writes exact owner entries with CAS, preserving foreign readiness. CultCache now provides a typed in-memory envelope load primitive for this shared-store view. Cold Self without thread state emits no direction request yet instead of failing. A heartbeat.scheduler brake blocks cognitive scheduling but does not block daemon lifecycle physiology; explicit daemon lifecycle surfaces still do. Focused proofs pass and the full core library reports 570 passed, zero failed, one ignored.

Candidate 86d702002acee8321438f32fb9cf69a29a667d70 built and sealed immutable release sha256-da19a70a7e8c0229cd59b292bf5867fd1e97fa40643ab772e918c5d49dd7ff22 with witness sha256-62c65d813837dd4a939e941d798d0842ee5f6c77cddaa645f2c47a18b7c3ec44. It was not deployed. Projection and Heartbeat were healthy and braked, but resident Self found a second cold-start path: feedback-driven Imagination consideration required thread state before a thread existed. Idunn was terminated through rollback; all services are inactive and no deployment or active-release witness exists. The immutable package is evidence only.

That second path now treats absent thread state as a missing prerequisite: it emits no request, writes nothing, preserves admitted feedback, and retries on a later pulse. The causal smoke explicitly requires its fixture thread. Focused Imagination tests, resident-Self tests, and all-bin compilation pass.

Exact successor aa3d2330062a34145cb70b527e02fa00215eac1b was revoked before deployment because packaging repeated the release-root staging permission failure with no predecessor alive. This killed the cleanup-race hypothesis. The real fault was the builder's long-lived write lease over the shared root-owned release directory.

Packaging is now source-generation scoped. The packager stages beneath the exact commit directory and atomically renames the final release within that same directory, so canonical witness paths do not move. Idunn keeps the shared release root root-owned and grants the builder only that exact commit directory; cleanup seals it root-owned and removes only its nested staging. Package tests pass 12/12, all binaries compile, and the actuator passes remote Bash syntax.

Next action: commit and push the generation-scoped Epiphany and ops cuts, install the exact root-owned actuator, then authorize and cross the new exact commit through Bifrost and Idunn while braked. Verify the typed brake, exact release/witness bindings, all three service owners, signed Idunn health, local Qdrant/Ollama routes, and final deployment witness. Then run the Starfire-offline rehearsal before 2026-07-22: organization feedback -> persistent Modeling map -> bounded Imagination proposal -> explicit review/adoption -> Hands consequence -> Bifrost release -> Idunn deployment, plus replay/tamper refusal and the negative chat-only path. No host reboot is authorized.

Generation handoff and resident mixed-store cut (2026-07-18)

Candidate 03e1afd24546a7ca37e900c47ca26ae257b14161 proved generation-scoped packaging and sealed immutable release sha256-fe7f25ff60d84ae9316d7b4aa2833bd5d1b65189c9d08cc64e903a83d8f35268. Its first application publication failed because the exact commit parent was still builder-owned mode 0750; cleanup sealed that parent and an automatic retry reused the exact package and started all three services. The actuator now seals the exact generation parent root-owned mode 0755 before handing publication to the application owner.

The candidate was not deployed. Projection and Heartbeat were healthy and braked, but resident Self treated the shared resident/readiness CultCache store as if every row belonged to Self and rejected the legitimate provider-readiness document. The exact process group was terminated, all services were stopped, active-release.env was removed, and no deployment witness exists. Resident Self now loads only its six owned typed families into its in-memory view, rejects duplicate owned identities, and leaves foreign readiness rows intact. Focused resident proof passes 12/12; full core proof passes 572/572 with one ignored.

Next action: commit and push both cuts, install the exact ops actuator on Yggdrasil, revoke obsolete Bifrost authority, authorize the new exact Epiphany commit, and let Idunn deploy under the engaged brake. Require the immutable package/witness, all three healthy service owners, signed aggregate health, and deployment.env; then prove the ordinary organization loop and its negative authority boundaries. No host reboot is authorized.

Managed-policy rotation preserves historical process evidence (2026-07-19)

Exact candidate 2d4c92d24c2007858914d352b5892f599e6a20e9 sealed release sha256-1dd1271405e82958df2c03133b0d89d2555a8a3c7013486e1c41465ec84f6b3c and witness sha256-e01803545e557488cf2a0a42c31bb65e17ff7ead21790d7c982216901d94e12b. The generation handoff and resident mixed-store repairs held: all three services started, Heartbeat remained braked, and resident Self remained stably braked. Workspace coverage did not launch because its prior signed launch was checked against the newly written current managed policy and became impossible to observe, terminalize, or replace. The exact transaction was rolled back, Bifrost authority revoked, services stopped, active pointer removed, and no deployment witness exists.

The source authority is now split correctly. Historical host-signed launch evidence remains authentic across policy rotation and may prove only exact process identity and immutable termination. New process admission still requires the exact current policy digest. Reconciliation terminalizes the stale identity without deleting history, then launches a causally bound replacement under the current policy. Public current-process observation continues to reject stale launches. Focused process tests pass 11/11, supervisor authority tests pass 24/24, full core passes 573/573 with one ignored, and all binaries compile.

Next action: commit/push the successor, cross its exact SHA through Bifrost and Idunn under brake, and require historical terminal evidence, current-policy replacement launch, three stable services, signed aggregate health, and the final deployment witness before rehearsing Starfire-independent operation.

Candidate b5405beaa95cddc837f3b7a7ca268ac9b5ae4502 then proved the historical authenticator shipped but exposed an ordering fault: reconciliation asked provider claim sight to authenticate before it inspected the supervisor-owned latest launch. Claim sight correctly rejected the stale policy, so the new rotation branch was unreachable. The candidate was rolled back, its authority revoked, services stopped, active pointer removed, and no deployment witness exists. Reconciliation now loads latest launch and completes stale-policy rotation before current claim authentication. Provider claim state participates only after a current-policy launch exists. Supervisor proof passes 24/24 and full core remains 573/573 with one ignored.

Candidate b8517d9d7905eb62314db675cc2f0688510aa5bd then crossed the first two rotation cuts: supervisor PID 1147968 launched replacement workspace projector PID 1148157, and the replacement published advancing ready heartbeats under the new policy while the brake held. Recovery still stalled because the old Body claim was readable only through current-claim authentication, which correctly rejected its historical launch before the mismatch branch could issue a recovery directive. The candidate was rolled back and revoked; no deployment witness exists.

Claim sight now has separate current and recovery readers. Current authentication remains mandatory for provider projection work and refuses a stale launch. Recovery authentication proves only the old signed claim/Body/route lineage. Supervisor recovery and directive writing use that historical reader, while the replacement launch and ready heartbeat remain bound to the current policy. The atomic lease-transfer path also authenticates the old launch historically. The full causal test now performs real policy rotation and proves current refusal, historical recovery, directive fencing, lease transfer, successor current sight, exact replay, and tamper refusal. Full core passes 573/573 with one ignored; all binaries compile.

Candidate 351355d3baee2d475f84168136380d2f50197ef8 reached live runtime with all three service owners active and the brake engaged, but emitted authenticated claim sight does not name the current managed launch. The old claim named the original historical launch while successive failed deployment attempts had created a valid signed chain of replacement generations. Recovery still required the current launch to be the old claim's direct child. The exact Idunn process group was terminated, services stopped, active pointer and witness removed, and Bifrost authority revoked; no deployment witness exists.

Recovery now proves ancestry rather than pretending retries did not happen. It walks backward from the selected current-policy launch to the claimed historical launch, authenticating every host-signed launch, exact parent termination id and envelope digest, and termination-before-child chronology. It refuses cycles, missing ancestors, broken edges, and a non-current endpoint. Directive writing, directive receipt verification, atomic lease transfer, and supervisor crash-resume use the same lineage proof. The supervisor publishes the actual lineage error instead of collapsing it into a generic mismatch. The causal test now includes an intermediate failed-deployment generation and passes the complete recovery transaction. Full library passes 573/573 with one ignored; supervisor authority tests pass 24/24.

Candidate a70fe275195740ecefc2984b32ebd8ae93658c18 crossed the lineage gate and supervisor published recovery directive 06165fb6-97bd-4c27-97e3-38af03dec72d from historical claim c6df4335-7080-4d5f-80fc-4fa18a9d16ce to current launch 9414c32f-f53c-450c-bc19-a69f5ba04a29. The projector still refused every pulse because it authenticated current successor claim sight before consuming the directive that creates that successor. Supervisor replayed the exact directive safely, revealing a circular ordering fault rather than missing evidence. The candidate was rolled back and revoked; no deployment witness exists.

Projector pulse now authenticates and consumes a replacement-addressed recovery directive before retirement or ordinary projection work. The atomic recovery transaction is already exact-replay idempotent, so no speculative current-claim query is needed in front of it. Current claim sight is recovery output, not recovery input. A source-order test makes the authority ordering explicit. Full library passes 574/574 with one ignored; supervisor authority tests pass 24/24.

Ordinary organizational product and current readiness refusal (2026-07-19)

The Yggdrasil body is the normal organizational Epiphany product, not a special experiment or dogfood mode. Persistent Modeling maps the authorized domain. Resident Self may derive direction from the admitted map and ask Imagination for bounded proposals without waiting for an instruction. Organization members talk to the repository Persona; their attributed conversation becomes additional feedback pressure. Conversation is not the ignition key and cannot adopt Mind state, authorize Hands, grant Persona public speech, cross Bifrost, or ask Idunn to deploy. Those remain distinct explicit authorities.

Exact candidate 9e1fa0f527b3bff2c5a709eff640b0d8d2f3b82d consumed recovery directive 6f1dc0c8-b8a5-48d0-add5-761b17368fbf, replaced historical claim c6df4335-7080-4d5f-80fc-4fa18a9d16ce with current claim 2a355736-3792-4f0f-8633-a246219bcf1b, and completed a 14,793-point local Qdrant projection through Yggdrasil's GTX 1080-backed Ollama route. Its three service owners remain active with zero restarts and the all-scope deployment brake engaged. It is not deployed: Idunn's exact transaction PGID 1245215 still owns the candidate, deployment.env is absent, and typed resident readiness remains warming because both provider comparisons refuse.

Both provider rows continue to refresh, name the exact release sha256-0a15262fd4c240a0131755aa6eb63b4eb7feff12e7cc4f49128fbb001887b1f2, witness sha256-49ae1afcf11d18c0e2807ea53f54dba35df4280f6596e848c5cfc50328e01aea, source commit, executable, and local status ready. The old diagnostic stale or release-substituted collapses owner, runtime, release, witness, source, executable, provider status, process incarnation, future time, and freshness into one useless phrase. Replace that opaque boolean with the same fail-closed predicates plus operator-safe failed-predicate names; do not relax admission. Keep the bounded diagnosis window while the Idunn transaction and brake remain exact. If transaction ownership or the brake disappears, or any protected surface actuates, use the existing rollback boundary immediately.