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.ccstore, 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.ps1passed 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:
- finish tests/format/docs and commit so the Body is stable;
- relaunch Modeling against thread
readiness-grounding-20260716; - inspect only the operator-safe role finding, then auto-accept if its Body basis, RepoModel patch, and state patch are typed and current;
- run the live repository-readiness join and preserve its projection;
- 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-odincompatibility 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-daemonheartbeat 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_idis address metadata only, not surface availability. - bootstrap no longer writes default operator status. The dedicated writer was
a dead
readytemplate, 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-providerCLI 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/completereceipts. 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 publishandsyncare 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-*.jsonandwork-sync-*.jsonare no longer read by overview, readiness, scheduling, receipt-chain, or proof-bundle paths. Dead writer artifacts cannot remain living authority; closed work waits atawaiting-publicationuntil an owner-aligned provider projection exists. epiphany-hands-action record-pris 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_gatemodule. - 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-smokeare refused before fixture seeding. - Thirty-two repo-family and survival smokes no longer accept an independent
deletion root. They derive
.epiphany-smokeonly after canonicalizing the selected repo root;--smoke-rootis 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, notinstalled. 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
latestmirror is event-time-owned, not last-writer-wins. Invalid/reversed timestamps are refused and delayed old receipts cannot move the mirror backward. - Scheduler
latestis likewise completion-time-owned. Tick timestamps are validated, reversed intervals are refused, and delayed replay cannot rewind the scheduler projection. hands-action-gate/latestis creation-time-owned. Delayed mirror replay cannot advertise obsolete actuator scope or record-pass commands as current.role-review-event/latestis creation-time-owned. Delayed acceptance or supersession readbacks cannot rewind Self/operator coordination context.coordinator-run-receipt/latestis 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
latestis Mind-admission-time-owned. Delayed older projections cannot rewind the queue map, and mirroring before admission is refused. - Repo-work overview global
latestis generation-time-owned. Delayed overview transport cannot make an obsolete queue gate or next move current. - Repo-work readiness global
latestis generation-time-owned. Delayed sight-only reports cannot replace current proof visibility. - The writerless
repo_work_readiness_reviewdocument 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
latestis generation-time-owned. Delayed proof transport cannot replace the current commit/hash evidence projection. - Agent-state SoA
latestis generation-time-owned and local-area confined; delayed summaries cannot rewind prompt/swarm self-knowledge. - Operator snapshots are validated internal-Verse observations and
latestis 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=missingwhile 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=valueTUI prose; legacy or hostile strings cannot steer gate, blocker, item, branch, or next move. - Receipt-directory runbook selection uses typed
service_idonly. 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-smokeimmediately before recursive deletion. - The four typed closure contract families live in
epiphany_work/closure_contracts.rs;epiphany-workis 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 overviewowns no operational fact and performs no scheduling, publication, deployment, lifecycle, admission, or provider acceptance.
Rehydrate
Read, in order:
state/map.yamlnotes/epiphany-current-algorithmic-map.mdnotes/conceptual-substitution-audit-2026-07-12.mdnotes/receipt-writer-provenance-audit-2026-07-12.mdnotes/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.v0event plus CAS latest pointer. It binds sequence/time, exact authority identities, phase, completed/total units, and the currently bounded backend operation. - Derived state:
warmingrequires a fresh independent process heartbeat and fresh monotonically advancing exact-lineage progress.stalledfollows an expired named operation/no-advance deadline.activestill 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.