5196 lines
330 KiB
Markdown
5196 lines
330 KiB
Markdown
# Epiphany Current Algorithmic Map
|
|
|
|
## 2026-08-14 authority supersession
|
|
|
|
The keyed Mind hard cut is complete for RepoModel. `EpiphanyRepoModelView` and
|
|
its exact source-document set own current repository modeling; model output
|
|
contains semantic operations only and runtime constructs the durable proposal,
|
|
Body binding, causal references, receipt, and commit time. The former aggregate
|
|
RepoModel entry, key, patch, admission path, store, and CLI have been deleted.
|
|
`EpiphanyMemoryGraphSnapshot` remains only as a nonpersisted local query and
|
|
semantic-index projection. Any aggregate revision/hash or
|
|
`RepoModelAdmissionReceipt` language retained later in this file describes
|
|
historical evidence, not a live writer or validation path.
|
|
|
|
Cross-repository Modeling now uses the federated Model Atlas documented in
|
|
`notes/model-atlas-vertical-slice.md`. Providers own offers, consumers own
|
|
claims, Soul owns exact verification evidence, a deterministic projector derives
|
|
edges/cycles/blast radius, and each consumer Self alone decides whether a local
|
|
impact wakes Modeling or Soul. Odin transports and indexes; Eve renders; neither
|
|
owns dependency truth or Hands authority.
|
|
|
|
## Causal work identity and creation provenance
|
|
|
|
- Owner: `causal_work_identity` derives durable request identity for Proposal Modeling, Research, frontier Planning, PlanMind, and Admitted Model Direction.
|
|
- Inputs: runtime identity plus the immutable admitted cause specific to each typed family. Proposal content, the exact keyed model projection digest/source-document set, accepted result identity, candidate digest, and typed Mind receipts may participate. Coordinator thread and timestamps may not.
|
|
- Outputs: deterministic typed request IDs consumed by direct and resident launch paths.
|
|
- Derived state: creation thread and request time are provenance. Job, process, grant, model-execution, and tool IDs identify attempts beneath the request and cannot redefine it.
|
|
- Forbidden writers: current coordinator thread, resident projection, retry path, launch callback, and worker output cannot fork, invalidate, or restore a request identity.
|
|
- Shared paths: a request may cross coordinator incarnations while the current admitted thread carries transport. Launch refuses byte-identically if stale provenance attempts to replace that carrier thread.
|
|
- Cut line: family-local causal hash formulas and downstream thread-restoration behavior are removed. Distinct request structs remain explicit; this is a shared invariant, not a stringly request registry.
|
|
- Verification layer: full core tests cover direct/resident generation, hostile causal substitution, current-thread transport, and byte-identical stale-thread refusal.
|
|
|
|
## Immutable public source identity
|
|
|
|
- Owner: `ImmutableGithubSource` owns component validation, composite parsing, lowercase revision canonicalization, repository/source rendering, and round-trip identity.
|
|
- Inputs: GitHub owner, repository, exact 40-hex commit, and bounded canonical repository path.
|
|
- Outputs: one typed identity used by Modeling source selection, Eyes provider execution, and Mind receipt authentication.
|
|
- Derived state: raw-content URL and receipt display fields. Network policy, grant authorization, content bounds, digest verification, and receipt lifecycle remain with their existing owners.
|
|
- Forbidden writers: provider output and mutually consistent JSON fields cannot define or weaken immutable source identity.
|
|
- Shared paths: uppercase provider input canonicalizes to the same lowercase source reference that Modeling stores and Mind authenticates.
|
|
- Cut line: the runtime-only composite parser and provider-local component/path validators are deleted.
|
|
- Verification layer: typed table tests reject mutable revisions, ambiguous repositories, traversal, empty segments, and invalid characters; governed public-tool tests still prove exact grant and receipt binding.
|
|
|
|
## Heartbeat pulse-artifact retention ownership
|
|
|
|
- Owner: heartbeat Continuity owns retirement of its own closed `pulse-NNNNNN` artifact directories. Status display limits and Idunn process supervision own no deletion authority.
|
|
- Inputs: the canonical heartbeat artifact root, direct pulse directory sequences, exact recursive file manifests, the latest cognition artifact reference, a recent-pulse count, and a bounded retirement batch size.
|
|
- Outputs: a typed retention plan committed before deletion and a typed completion receipt after every planned directory is absent. Plans and receipts retain exact directory names, manifest roots, file counts, and byte counts without retaining private artifact bodies.
|
|
- Derived state: the active artifact count is bounded by recent count plus one hysteresis batch. The default 256 recent pulses and 64-pulse batch keep at most 320 active directories between retention runs.
|
|
- Forbidden writers: projection limits cannot masquerade as retention. Unknown directory names, symlinks, paths outside the canonical root, post-plan manifest changes, and the pulse containing the latest cognition artifact all fail closed before deletion.
|
|
- Shared paths: explicit `retain-artifacts` and every resident heartbeat serve outcome call the same plan/reconcile primitive. A crash after plan commitment resumes that exact plan; already absent members are accepted, while surviving members must still match their planned manifests.
|
|
- Cut line: the permanent one-directory-per-15-second growth path is removed. Process stdout/stderr logs remain a separate supervisor-owned rotation problem and are not deleted by heartbeat retention.
|
|
- Verification layer: synthetic CultCache-backed tests prove hysteresis bounding and idempotence, changed-plan refusal with preservation, unknown-directory refusal before deletion, and protection of the latest cognition artifact. Exact packaged `16c4b19f` retired pulse directories 1-2 from a five-pulse copied-store fixture, retained 3-5 byte-identically, emitted its typed plan/receipt projection, and replay returned `within-bound` without another receipt.
|
|
|
|
## Runtime job and session closure ownership
|
|
|
|
- Owner: the worker runtime terminalizes its own outer role job and inner model job. Continuity owns runtime-session completion after every job in that session is terminal.
|
|
- Inputs: worker success, ordinary runtime error, timeout, and the session-local job set. Coordinator status is an observer of these typed documents, not a writer.
|
|
- Outputs: exactly one terminal job result per job, a `Completed` session, and one deterministic `session.completed` runtime event sourced from Continuity.
|
|
- Derived state: `*Running`, open-job count, and active-session count are projections. Adapter-status refreshes may change unrelated store bytes on restart and are not job authority.
|
|
- Forbidden writers: coordinator restart/status code cannot synthesize worker results or pretend a session closed. A repair loop cannot hide a dead worker. New jobs cannot enter a completed session.
|
|
- Shared paths: bounded and unbounded worker execution use the same result-sealing primitive; explicit session closure uses the same terminal-job predicate for coordinator, resident, and model-adapter sessions.
|
|
- Cut line: sessions no longer remain permanently active merely because creation was implemented before completion. Closure refuses any queued, running, or review-waiting session-local job; exact closure replay is idempotent.
|
|
- Verification layer: a byte-identical disposable copy of sealed v28 reproduced the dead Imagination job. Authenticated `55660d78` terminalized it as failed, restart could not create a second result, and the new Continuity primitive closed all four sessions from four active to zero while preserving sealed v28 unchanged.
|
|
|
|
## Proposal frontier routeability invariant
|
|
|
|
Proposal Modeling admission and Self planning selection now share one boundary:
|
|
an admitted frontier `source_scope` must be non-empty safe relative paths in
|
|
strict lexicographic ascending order with no duplicates. Modeling may normalize
|
|
proposal scope hints into that canonical form; it must not preserve arbitrary
|
|
serialization order. `runtime_repo_frontier_planning_eligibility` projects the
|
|
same predicate per active Imagination frontier, alongside challenge and
|
|
dependency blockers, so operator status describes the exact selector reality.
|
|
|
|
Proposal Evolution also requires `status=active`. Mind acceptance is the
|
|
proposal's admission decision; persisting it as merely proposed creates a dead
|
|
document that Self cannot select and proposal Evolution cannot revise. The
|
|
eligibility projection includes unresolved proposed Imagination frontier as a
|
|
diagnostic candidate with `statusValid=false`, but only active frontier can be
|
|
eligible. This projection observes the wound; admission prevents it.
|
|
|
|
Proposal Evolution also requires exact canonical routeable organ identity:
|
|
`Hands`, `Eyes`, or `Imagination`. The field remains a string in the portable
|
|
RepoModel, but Mind admission owns the executable subset and refuses lowercase,
|
|
unknown, or merely display-shaped labels. Planning eligibility includes a
|
|
case-mismatched Imagination-shaped legacy document only to project
|
|
`recommendedNextOrganValid=false`; it never case-folds that document into
|
|
authority. v25 proved why: lowercase `imagination` was admitted but invisible to
|
|
Self's exact selector.
|
|
|
|
Owner: Mind admission owns whether proposal frontier state may enter the model.
|
|
Self only selects admitted routeable state. `source_scope` is no longer assumed
|
|
routeable merely because its individual paths are safe. Invalid ordering is
|
|
rejected before mutation; no repair loop or selector exception may launder it.
|
|
|
|
## Coordinator cold start and source-regather ownership
|
|
|
|
- Owner: typed `UserObjectiveIntake` owns first objective/state creation. It is
|
|
seed-only, atomic, idempotent for identical input, and refuses replacement.
|
|
- Eyes owns source gathering. An accepted CRRC `Regather` judgment becomes
|
|
`RegatherManually`, which Self maps to Research; the continuity judge does not
|
|
recursively relaunch itself after its judgment is accepted.
|
|
- Modeling owns Body mapping only after source inspection. Research, Modeling,
|
|
and Verification share bounded repository read/Git tools; tool receipts are
|
|
operator-safe evidence while direct thought stays sealed.
|
|
- Mind owns admission. Provider JSON Schema is a formatting projection, not
|
|
authority. Canonical worker-result parsing, exact launch Body-basis replay,
|
|
and Mind review/admission decide whether a RepoModel patch exists.
|
|
- The model may name additional evidence, but it does not own transport
|
|
provenance. The OpenAI runtime adds the immutable request-chain reference to
|
|
the typed role result before persistence. Mind still requires the admission
|
|
review to bind that exact non-empty result evidence set.
|
|
- Derived state: status, role boards, and coordinator decisions read one
|
|
canonical typed role/reorient result path. Display synthesis cannot remember
|
|
a finding that coordinator signals forget, or vice versa.
|
|
- Forbidden writers cut: sibling-path local-Verse inference, fake checkpoint
|
|
preparation, recursive reorientation after accepted regather, duplicate
|
|
display/coordinator result readers, and JSON null treated as a state patch.
|
|
- Failure lifecycle: failed and completed-unreviewable results require an
|
|
explicit supersession receipt before relaunch. Exact repeat is idempotent;
|
|
conflicting acceptance authority is refused.
|
|
- Live shakedown evidence: the authenticated model runtime completed
|
|
source-grounded Modeling passes with typed repository reads and emitted a
|
|
reviewable Body-bound `repoModelPatch`. Admission remains the proof layer;
|
|
prose summaries and successful model transport do not make the patch true.
|
|
|
|
## Observation and bootstrap authority correction (2026-07-12)
|
|
|
|
- Owner: diagnostics only project persisted CultMesh state; they never initialize it.
|
|
- Bootstrap owns static policy, topology, schema, brake, and organ-contract declarations. It does not own daemon liveness or provider availability.
|
|
- Daemons own heartbeat/status documents. Missing status produces no observed daemon row; declared targets remain separate and are never promoted to presence or `ready` by a reader or seeder.
|
|
- The provenance-free v0 Odin advertisement, Eve surface, and daemon-tool families are quarantined legacy vocabulary. Live provider directories return no rows from them; missing provider state produces no synthetic row.
|
|
- Forbidden writers removed in this pass: read-command calls to `seed_epiphany_local_verse_context`, loader fallback constructors, and bootstrap's default-ready daemon-status loop.
|
|
- Next authority cut: requester commands may author intents, but Bifrost, GitHub, tool providers, Eve providers, and daemon lifecycle owners must author their own response receipts.
|
|
|
|
## Declared topology versus observed presence (updated 2026-07-15)
|
|
|
|
- Owner of declaration: explicit bootstrap persists seven faculty routes, desired private-Verse addresses, and daemon/Eve targets as configuration.
|
|
- Owner of presence: a provider-authored daemon status/heartbeat is the only input that creates an observed daemon row.
|
|
- Outputs keep the distinction in their names: `declaredFacultyCount`, `declaredPrivateVerseRouteCount`, `declaredDaemonTargetCount`, and `observedDaemonCount`.
|
|
- Restart-policy sight may enumerate desired targets with `daemonStatus=unobserved`; that supports Idunn reconciliation but does not materialize a daemon.
|
|
- Prompt context labels topology as declared routes and targets. It cannot imply those addresses are inhabited.
|
|
- Forbidden substitutions: topology rows cannot become daemon or agent counts; daemon heartbeats cannot become agent counts; configured private-Verse ids cannot become active Verse counts.
|
|
- Cut line: the synthetic `unknown_daemon_status` constructor is deleted. A fresh bootstrap has seven declared targets and zero observed daemons; one persisted provider status yields exactly one observed daemon.
|
|
|
|
## Bifrost body-change request path (2026-07-12)
|
|
|
|
- Owner: the calling Hands/requester owns the body-change intent.
|
|
- Inputs: repository, branch, change summary, justification, changed paths, verification/review receipt references, authors, and credit subjects.
|
|
- Output: one persisted `gamecult.bifrost.body_change_publication_intent`; command status is `pending-bifrost`.
|
|
- Derived sight: requester-owned receipt-directory and publication surfaces show the pending intent and the absence of a provider response. There is no local Bifrost ledger or closure oracle.
|
|
- Forbidden writers: the requester CLI no longer constructs or writes Bifrost acceptance, ledger attribution, GitHub publication, PR, commit, publication URL, or credit receipts.
|
|
- Response owners: Bifrost may answer with its publication receipt; the GitHub publication adapter may answer only after real substrate evidence exists.
|
|
- Negative proof: after request submission, latest intent is present while latest Bifrost publication and GitHub publication receipts are absent.
|
|
- There is no Epiphany-local `bifrost-ledger` or accounting closure surface.
|
|
Missing provider response remains missing with no local follow-up command.
|
|
Provider closure requires a future authenticated provider ingress/admission
|
|
witness; typed local document presence is insufficient.
|
|
|
|
## Daemon tool request path (2026-07-12)
|
|
|
|
- Owner: the requesting agent owns the invocation intent; the advertised host daemon owns the response receipt.
|
|
- Input: a persisted capability plus requester identity, requester cluster, payload reference, and bounded reason/summary.
|
|
- Output: one `epiphany.cultmesh.daemon_tool_invocation_intent`, status `pending-provider`, and the host daemon id as `responseOwner`.
|
|
- Unknown host status does not block request queuing and is never promoted by the requester.
|
|
- Forbidden writers: `invoke-tool` cannot accept or synthesize receipt id/status, result reference, or result summary; it no longer executes local readback functions and labels them daemon results.
|
|
- Negative proof: request intent persists, latest provider receipt remains absent, and response-shaped CLI fields are refused.
|
|
|
|
## Daemon lifecycle request and heartbeat paths (updated 2026-07-15)
|
|
|
|
- Owners: Self/operator requests intervention; Idunn owns poke intent, command-attempt receipt, restart policy, and backoff; `epiphany-cluster-daemon` alone owns its provider heartbeat/status envelope.
|
|
- Inputs: persisted provider status, the heartbeat observed before intervention, restart policy, scheduler staleness observation, and the real command result.
|
|
- Outputs: immutable poke intent/receipt v1 events plus an atomically advanced chronological latest pointer. Exit zero yields `awaiting-provider-heartbeat`; command failure yields `restart-failed`.
|
|
- Derived state: scheduler staleness, lifecycle attention, receipt-directory resolution, and Idunn backoff are observations of provider state and attempts. They are not provider status.
|
|
- Forbidden writers: poke callers and the supervisor cannot assign provider status, operator action, or `last_heartbeat_utc`; command success cannot mint `ready`; stale status cannot be resolved by a heartbeat older than the completed attempt.
|
|
- Shared paths: manual reconcile and scheduled reconciliation use the same attempt primitive. Both retain restart pressure until a provider-authored heartbeat causally newer than the completed attempt proves recovery.
|
|
- Cut line: the supervisor's provider-status writer and synthetic heartbeat advancement are removed. Generated attempts use unique identities; exact retry is idempotent, identity collision is refused, and delayed replay cannot rewind `latest`.
|
|
- Verification: the survival rehearsal preserves the provider envelope across two successful restart commands, observes two distinct awaiting receipts, then publishes a real provider heartbeat and proves receipt resolution plus failure-count reset.
|
|
|
|
## Provider discovery and heartbeat authority (updated 2026-07-15)
|
|
|
|
- Owner: `epiphany-cluster-daemon` owns only its liveness heartbeat/status envelope. No central process currently owns provider advertisement, Eve composition, or hosted-tool availability.
|
|
- Inputs: heartbeat accepts persisted topology identity and daemon-local liveness evidence. Topology `eve_surface_id` is routing/address metadata only; it is not proof that a surface exists.
|
|
- Outputs: heartbeat writes liveness only. Live Odin, Eve, and tool directories remain empty until a future provider-authored contract is admitted.
|
|
- Derived state: topology, labels, expected routes, and test-only templates may describe stable addresses and legacy shape. They cannot become provider presence, composition content, supported actions, or executable capability.
|
|
- Forbidden writers: generic bootstrap, heartbeat, query CLI, and central template builders cannot publish the provenance-free v0 Odin advertisement, Eve surface, or daemon-tool families. Live consumers ignore those families, and explicit bootstrap retires any stale rows of exactly those types.
|
|
- Cut line: `publish_epiphany_cultmesh_provider_state` and the heartbeat call to it are deleted. The seven centrally synthesized surfaces and their tool claims are no longer live state.
|
|
- Re-admission invariant: provider discovery returns only after an owning provider emits a provenance-bearing typed contract whose origin can be verified; actions additionally require a real dispatcher and receipt path.
|
|
|
|
## Persona feedback and typed Imagination consideration boundary (updated 2026-07-18)
|
|
|
|
- Eve is presentation only. Epiphany has no Eve connection intent or receipt
|
|
document, writer, reader, prompt projection, query action, receipt-directory
|
|
row, or tool claim. Presentation connectivity cannot admit feedback or become
|
|
cognition authority.
|
|
- Daemon-tool invocation requests likewise remain pending until the advertised host daemon or authenticated ingest boundary supplies the typed response. Local response construction/writing/validation is test-only; aggregate smoke and receipt-directory projection prove intent-present/receipt-missing instead of manufacturing host acceptance.
|
|
- Idunn deployment and aftercare outcomes have no local production writer. The synthetic deployment-config family smoke and its green aggregate MVP-gate handoff are deleted; config audit/runbook remain pre-deployment surfaces, while typed Idunn readers await genuine daemon-authored ingest.
|
|
- Bifrost artifact-acceptance and metrics requests remain open until actual Bifrost/Maintainer receipts are ingested. The stale response-closing request-family smokes, accounting bundle, wrapper mode, and aggregate green gate are deleted.
|
|
- Repo-work readiness reports are sight only. The generic readiness-review approval command and writer are deleted because one caller supplied four unresolved reviewer labels. `repo.readiness_review_request` now assigns routing to Self, lists Maintainer/Soul/Mind/Bifrost as independent required reviewers, and names no readiness-approval owner; typed review readers await genuine multi-organ/provider evidence.
|
|
- Interpreter Brief is preparation cargo authored by Imagination from accepted public pressure. It requests Mind interpretation and remains `interpretation_admitted=false`; it is not Mind-owned state until a genuine Mind path supplies and admits interpretation evidence.
|
|
- Repo collaboration policy/topic files are proposals, not live social or renderer contracts. Imagination authors them, Persona owns discussion, Persona/Mind review policy, Mind admits repo policy, Bifrost owns publication, and requested public-room/Eve-surface identifiers remain unpublished until provider receipts exist. Epiphany does not own downstream Eve/TUI/GUI composition.
|
|
- The deterministic `repo.tool_capabilities` and `repo.eve_surface` safe families are deleted. Expected tool ids and invented surface/row/lowering catalogs cannot substitute for host advertisements or provider-published composition graphs. Live paths are typed tool requests/host receipts, Odin discovery, authenticated Bifrost feedback delivery, and provider-owned publication.
|
|
- `repo.body_manifest` is deleted. An unconsumed `epiphany.toml` that invents Body/Verse/Eve identity and capability hints is not observed runtime state or admitted birth configuration. Runtime state, repo birth receipts, and provider advertisements own those facts.
|
|
- Doctrine update requests split authority: Imagination authors, Self routes, Maintainer reviews, Soul verifies, Mind admits doctrine state, and Hands mutates `AGENTS.md` under receipts. There is no Maintainer/Mind composite owner or OR gate.
|
|
- Closure has no substring authority. Worklog, planning/checklist notes, managed/status sections, and task cards are explicitly presentation-only; closure relies on committed target/path/blob evidence instead of treating formatting text as Soul truth.
|
|
- Deployment requests split Self routing from independent Maintainer/Soul/Mind/Bifrost review and Idunn-only execution. Maintainer review cannot impersonate Idunn deployment; only Idunn deployment and aftercare receipts prove outcomes.
|
|
- PR requests split Self routing, Bifrost publication gating, Hands execution, and GitHub provider outcomes. GitHub receipt authorship does not grant publication-policy authority.
|
|
- Artifact acceptance requests split Self routing, Maintainer acceptance decisions, and Bifrost accounting. Acceptance receipts and accounting ledger rows no longer claim one composite owner.
|
|
- Metrics requests split Self routing, Bifrost accounting custody, and Maintainer review-load evidence. Spend/review receipts are observations and grant no spend or ledger authority.
|
|
- `repo.planning_brief` is deleted. It contained no candidate work-item records and let copied global catalog/schema/closure constants self-attest as per-item planning and readiness evidence. The live preparation chain is consensus draft -> interpretation request -> objective draft -> Mind adoption.
|
|
- There is no aggregate repo-swarm MVP gate. The former smoke manually aggregated fixture summaries into green rows and `demoReady=true`; it and its wrapper are deleted. Whole-organism readiness requires a live-fire path whose claimed consequences are observed at their owning boundaries.
|
|
- Bifrost owns authenticated Persona-feedback admission. Its signed packet is
|
|
feedback-only pressure, not an Eve connection, Persona command, objective, or
|
|
work proposal.
|
|
- Self owns an immutable Imagination consideration request binding one admitted
|
|
feedback packet digest to one exact admitted keyed Modeling basis and receipt
|
|
and one fixed question enum. Feedback prose is transported only as quoted
|
|
evidence.
|
|
- Imagination owns a proposal-only consideration candidate with `suggest`,
|
|
`hold`, or terminal `no_fit` disposition. The candidate has no state patch,
|
|
model patch, frontier candidate, Hands route, release, or deployment mouth.
|
|
- A separate Self review request is required before a suggestion may enter
|
|
Modeling review. It grants proposal-review authority only; it does not mutate
|
|
the map or adopt work.
|
|
- Eve and Persona render or discuss derived results. They do not own admission,
|
|
cognition, result completion, or adoption. The former Eve-dependent feedback
|
|
and synthetic consensus-receipt shapes are obsolete.
|
|
|
|
## Public-proof submission boundary (2026-07-12)
|
|
|
|
- Request source: an existing redacted `repo_work_public_proof` document is the complete pending publication cargo.
|
|
- Consumer command: `bifrost-public-proof` selects that proof and reports `pending-bifrost`; it writes no new receipt.
|
|
- Bifrost owner: ledger attribution, review and credit receipt binding, public destination, publication URL, publication status, and final receipt.
|
|
- Forbidden writers: the caller-facing command rejects all Bifrost result fields and leaves publication coordinates null.
|
|
- Negative check: absence of a pending proof fails without writing a publication receipt; response-shaped fields are rejected before mutation.
|
|
|
|
## Bifrost accounting request boundaries (2026-07-12)
|
|
|
|
- Artifact acceptance source: Mind-admitted `repo.artifact_acceptance_request`; caller output is pending `Maintainer/Bifrost` with null acceptance coordinates.
|
|
- Metrics source: Mind-admitted `repo.metrics_request`; caller output is pending `Bifrost/Maintainer` with null accounting coordinates.
|
|
- Forbidden artifact writers: caller cannot provide artifact/proof/review/ledger/receipt/status/accepted-by results.
|
|
- Forbidden metrics writers: caller cannot provide accepted artifact, model spend, review load, credit, proof, summary, receipt, or status results.
|
|
- Negative proof: missing requests fail without receipt mutation and response-shaped arguments fail before lookup or write.
|
|
|
|
## Operator snapshot authority boundary (2026-07-12)
|
|
|
|
- Owner: operator snapshot adapter owns only a bounded summary of an edge status artifact.
|
|
- Runtime spine owns daemon-tool execution intent and receipt truth.
|
|
- Forbidden projection: `/tools/invocations` JSON cannot be promoted into canonical daemon-tool schemas by snapshot import.
|
|
- Output explicitly returns null tool intent/receipt fields and `toolInvocationAuthority=runtime-spine-only`.
|
|
- Negative proof: forged accepted tool JSON produced a snapshot but no canonical intent or receipt.
|
|
|
|
## Fixture store quarantine (2026-07-12)
|
|
|
|
- `epiphany-verse-query smoke` owns synthetic contract fixtures only.
|
|
- Its only writable body is `.epiphany-smoke/verse-query-default/local-verse.ccmp` with runtime `verse-query-default-smoke`.
|
|
- Generic local Verse bootstrap owns policy, declared topology, initial brake,
|
|
and organ contracts only. It does not publish Odin provider
|
|
advertisements, Eve surfaces, or daemon-hosted tools. Those families require
|
|
provider publication; discovery preserves their absence.
|
|
- Bootstrap receives the authenticated repository Body domain explicitly and
|
|
stamps that exact domain into every cluster declaration. Cluster topology no
|
|
longer owns a compiled workstation path; seed commands fail closed when the
|
|
Body domain is absent or is not a non-empty `repo:` domain. Stored topology is
|
|
the only live source for downstream liveness, policy, Eve, and tool routing.
|
|
- The generic Verse query CLI has no provider-advertisement preview or Odin
|
|
publication command. Provider bodies must publish their own discovery state;
|
|
central declared topology cannot be lowered into `active`/`daemon-live`
|
|
compatibility presence.
|
|
- `epiphany-cluster-daemon` owns heartbeat liveness only. Heartbeat/serve does
|
|
not publish Odin advertisements, Eve surfaces, or hosted tools. The former
|
|
daemon-ID-bounded central publisher is deleted.
|
|
- Cluster daemons never bootstrap the local Verse and never load its full
|
|
context. They require persisted topology, read narrow liveness, then write
|
|
only their bounded heartbeat. Explicit operator bootstrap
|
|
owns policy/topology/contract initialization.
|
|
- `epiphany-daemon-supervisor` also requires explicit persisted bootstrap for
|
|
every production lifecycle, policy, scheduler, runbook, audit, status, and
|
|
control path. Only its two synthetic audit-smoke commands may initialize
|
|
fixtures, and only beneath `.epiphany-smoke`.
|
|
- In `epiphany-verse-query`, only explicit seed commands and the fixed
|
|
quarantined smoke initialize local Verse state. Every operator/requester
|
|
mutation requires persisted status and topology before writing its bounded
|
|
brake, poke, tool, Eve, Bifrost, metrics, artifact, or feedback document.
|
|
- Coordinator launch-context assembly also requires persisted status and
|
|
topology. Rendering a worker prompt cannot initialize shared state. Its
|
|
standalone smoke accepts no path arguments and writes only beneath
|
|
`.epiphany-smoke`.
|
|
- Bifrost publication/GitHub/public-proof/artifact/metrics response constructors
|
|
are test-only. Production
|
|
retains typed schemas and readers for provider-authored ingest, but no local
|
|
shipped binary owns or writes those response documents.
|
|
- Bulk seven-daemon `ready` construction/writing is also test-only. Production
|
|
loaders enumerate topology keys without manufacturing status; only narrow
|
|
single-daemon heartbeat/observation writers remain. Aggregate synthetic
|
|
readiness exists solely inside the fixed Verse smoke body.
|
|
- Topology-derived Odin advertisement, Eve surface, and tool-capability builders
|
|
survive only as test fixtures for legacy v0 document shapes. Live consumers
|
|
ignore provenance-free v0 rows, and explicit bootstrap retires them. Topology
|
|
`eve_surface_id` remains address metadata, not availability evidence.
|
|
- Generic bootstrap owns declarations and initial control state, not operator
|
|
observation. The template-based operator-status writer and its writerless
|
|
schema/context/prompt/reader family are deleted. Operator snapshots remain
|
|
source-artifact-derived documents.
|
|
- Agent-state SoA sync requires an existing bootstrapped Verse before mirroring
|
|
the persisted agent store. SoA report is filesystem-pure on a missing store.
|
|
Wrapper mode `agent-state-soa` explicitly composes sync then report; the
|
|
report itself never refreshes canonical state.
|
|
- Merely naming a CultMesh store does not create its body. Query, cluster-daemon,
|
|
and daemon-supervisor parsers perform no filesystem writes; missing status or
|
|
topology prerequisites preserve absence because CultCache pulling bypasses
|
|
lock acquisition when the backing file is absent. Full context query refuses
|
|
a nonexistent store. Explicit bootstrap or a real writer owns body creation;
|
|
individual loaders do not carry duplicate absence compensators.
|
|
- Store/runtime overrides fail before fixture seeding or receipt construction.
|
|
- Negative proof: targeting `state/local-verse.ccmp` was rejected and its SHA-256 did not change.
|
|
- Positive proof: the built-in quarantined smoke completes successfully and reports its quarantine coordinates.
|
|
|
|
## Operator-run completion receipt boundary (2026-07-12)
|
|
|
|
- Intent owner: operator orchestration writes run id, mode, roots, limits, and artifact coordinates before execution.
|
|
- Completion evidence: matching latest intent plus a valid JSON result inside the canonical artifact root, modified at or after intent creation.
|
|
- Receipt status is derived as `completed`; callers cannot submit status.
|
|
- Forbidden evidence: missing, non-JSON, pre-intent, out-of-root, or mismatched-run artifacts.
|
|
|
|
## Daemon-supervisor install authority boundary (2026-07-12)
|
|
|
|
- Plan commands force non-execution and may only write planned artifacts/receipts.
|
|
- Execute commands force execution intent and must pass the existing elevation gate before service-manager mutation.
|
|
- Wrapper command identity matches the Rust command exactly; no hidden `--execute-install` switch selects reality.
|
|
- Ambiguous install aliases are not accepted.
|
|
- Negative proof: hostile plan flag cannot mutate; execute without elevation produces an explicit refusal receipt.
|
|
|
|
## Standalone receipt fixture boundaries (2026-07-12)
|
|
|
|
- Deployment-family fixture receipts live only in a disposable repo under `<root>/.epiphany-smoke`.
|
|
- Weksa fixture receipts live only at `.epiphany-smoke/weksa-interlingua/local-verse.ccmp`.
|
|
- Neither smoke accepts a caller-selected receipt store.
|
|
- Redirect arguments fail before synthetic receipt construction.
|
|
|
|
This is the source-grounded map of the live machine. Historical route and
|
|
bridge anatomy belongs in git history and evidence ledgers, not here.
|
|
|
|
## Objective
|
|
|
|
Epiphany is a native typed organism. Persistent Mind, coordinator policy,
|
|
worker lifecycle, organ receipts, prompt context, operator surfaces, and Verse
|
|
publication are owned by Epiphany Rust/CultCache/CultMesh/CultNet organs.
|
|
Vendored Codex retains Codex-native behavior and the OpenAI-compatible
|
|
authentication/model-transport reliquary. It owns no Epiphany state, prompt,
|
|
scheduler, route, notification, or interface contract.
|
|
|
|
## Authority Map
|
|
|
|
| Owner | Inputs | Outputs | Invariant |
|
|
|---|---|---|---|
|
|
| keyed Mind documents and `mind_transaction.rs` | exact semantic documents, strong reads, and invariant-owned mutations | disjoint atomic Mind commits plus exact receipts | Decision authority lives in typed document identities; unrelated writes do not share a revision head. |
|
|
| `current_work.rs` | sealed Mind view plus exact family requests, jobs, results, and decisions | pure family-specific scheduling/continuation projections | Events, timestamps, role lanes, and thread revisions cannot create or suppress work. |
|
|
| Body Modeling launch/acceptance owners | exact Body obligation, runtime attempt, sealed decision context, and semantic mutation | one job-bound lifecycle and keyed Mind/RepoModel commit | Baseline Body Modeling never reads or writes `EpiphanyThreadStateEntry`; Eyes is not its gate. |
|
|
| Proposal Modeling launch/acceptance owners | immutable proposal request, exact launch binding and attempt, sealed decision context, and frontier mutation | one deterministic Launch/Wait/Review lifecycle and `Modeling.proposal_frontier` commit | Thread is creation provenance only; the aggregate launcher refuses proposal cargo. |
|
|
| frontier Planning/PlanMind launch and adoption owners | exact frontier/dependency versions, per-claim obligation guards, immutable candidate, exact attempts, and sealed decision contexts | deterministic Imagination/Mind lifecycle plus atomic adopted frontier and receipt | Imagination proposes; Mind alone adopts. Unrelated keyed writes merge, while frontier or claim-obligation drift conflicts. |
|
|
| `reorientation_work.rs` | exact keyed continuity projection, deterministic attempt, sealed decision context, and terminal result or model-backed failure | typed resume/regather decision plus continuity receipt, or typed failure before retry | Thread, role lanes, freshness labels, timestamps, and aggregate revision cannot launch or admit Reorientation. |
|
|
| `coordinator_state_transaction.rs` and `EpiphanyThreadStateEntry` | legacy aggregate state and generic coordinator companions | obsolete aggregate commits for residual generic paths only | This is a deletion target, not canonical Mind; it may not regain authority over migrated Body, Modeling, Research, Verification, Planning, or Reorientation families. |
|
|
| `coordinator_acceptance.rs` | reviewed residual role result and its concrete admission owner | family-owned admission or residual legacy aggregate transaction | The aggregate Reorientation acceptor is deleted; no duplicate continuity owner survives here. |
|
|
| `thread_state_store.rs` | typed state entry | low-level CultCache codec/read access | Substrate, not policy; it exposes no production writer. |
|
|
| `coordinator_service.rs` | state/runtime store paths and typed commands | state update, launch, accept, interrupt results | Facade routes typed work; it contains no policy or protocol mapping. |
|
|
| `surfaces/*` | native state, runtime snapshots, pressure/freshness inputs | scene, jobs, roles, planning, context, graph, CRRC, coordinator recommendations | Read surfaces derive; they do not mutate. |
|
|
| `runtime_spine.rs` | typed launch/result/receipt documents | CultCache runtime records | Runtime lifecycle and evidence are durable typed documents. |
|
|
| `mind_gateway.rs` and coordinator acceptance | worker findings and proposed patches | review, rejection, or state-commit receipts | Worker thought cannot write Mind directly. |
|
|
| `substrate_gate.rs` | bounded access intent | scoped access grant/refusal | Repository access and state admission are separate authorities. |
|
|
| `eyes_gateway.rs` | inspected source under a grant | evidence review/packet/refusal | Looked-at truth carries provenance. |
|
|
| `hands_gateway.rs` | approved action intent | patch/command/commit/PR receipts | Consequence is bounded, attributable, and reviewable. |
|
|
| `soul_gateway.rs` | claimed consequence plus evidence | verdict/refusal receipt | Work is not true merely because it ran. |
|
|
| `continuity_gateway.rs` | rupture/checkpoint/recovery facts | continuity receipts | Survival state is explicit, not transcript residue. |
|
|
| `heartbeat_state.rs` and daemon binaries | durable schedule/liveness policy | pulses, launch pressure, sleep/rumination state | Scheduling is physiology, not project truth. |
|
|
| `cultmesh_integration.rs` and `epiphany-verse-query` | typed local documents | private/local/public Verse projections | Visibility never creates authority or declassifies private state. |
|
|
| Persona loop | state projection, stimulus, semantic recall | natural speech plus interpreted candidate actions | Imagination projects; Persona speaks; Mind interprets. |
|
|
| vendored Codex | Codex sessions and OpenAI-compatible auth/model transport | Codex behavior and model transport | No Epiphany protocol or durable Epiphany state crosses this boundary. |
|
|
|
|
## Primary State Flow
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
I["Typed observation or worker decision"] --> G["Concrete invariant owner"]
|
|
G -->|reject or conflict| R["Typed refusal or fresh work obligation"]
|
|
G -->|admit| V["Exact strong-read validation"]
|
|
V --> C["MindMutation batch CAS"]
|
|
C --> S["Keyed Mind CultCache documents"]
|
|
S --> P["Deterministic current-work and interface projections"]
|
|
P --> O["Coordinator / operator / Eve projections"]
|
|
```
|
|
|
|
`mind_transaction::commit_mind_mutation` is the canonical keyed Mind commit
|
|
primitive. Concrete invariant owners derive exact strong reads and complete
|
|
write sets; disjoint document identities merge under one CultCache batch CAS,
|
|
while same-identity or changed strong-read conflicts refuse without partial
|
|
mutation. `coordinator_state_transaction` remains only because generic
|
|
coordinator presence and residual objective/state/status paths still depend on
|
|
the obsolete aggregate. It is explicitly not a second canonical Mind and is
|
|
the next deletion target.
|
|
|
|
Forbidden writers:
|
|
|
|
- worker result payloads;
|
|
- operator display JSON;
|
|
- Codex rollouts or Codex thread objects;
|
|
- derived scene/coordinator/context projections;
|
|
- heartbeat telemetry;
|
|
- CultMesh mirrors and public Verse documents.
|
|
|
|
## Worker And Receipt Flow
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
C["Self / coordinator"] --> L["Typed worker launch request"]
|
|
L --> RS["Runtime spine"]
|
|
RS --> M["Model runtime"]
|
|
M --> F["Typed role or reorient finding"]
|
|
F --> MG["Mind review"]
|
|
MG --> SC["State commit receipt"]
|
|
SC --> S["Native thread state"]
|
|
```
|
|
|
|
`runtime_spine.rs` registers and persists worker launch requests, worker
|
|
results, Mind reviews, Mind commit receipts, Eyes packets, Substrate Gate
|
|
grants, Hands consequence receipts, Soul verdicts, Continuity receipts, and
|
|
coordinator run receipts. `EpiphanyCoordinatorService` now accepts one `store`
|
|
path for canonical state and its atomic runtime/witness companions. The native
|
|
status mouth exposes the same boundary as one `--store` argument. Document
|
|
families remain typed and separately owned inside the cache; filesystem path
|
|
plurality no longer pretends to be an authority boundary.
|
|
|
|
## Hands → Soul → Modeling Loop
|
|
|
|
1. Self emits a bounded Hands gate with requested paths and required receipts.
|
|
2. Substrate Gate records the access grant.
|
|
3. Hands records intent/review plus patch, command, and commit receipts.
|
|
4. `coordinator_launch_context.rs` builds sealed work-loop telemetry from that
|
|
receipt chain for Soul.
|
|
5. Soul emits a verdict receipt against the actual consequence.
|
|
6. Modeling receives the verified consequence and proposes a map/state patch.
|
|
7. `coordinator_acceptance.rs` commits an admitted proposal with its Mind
|
|
review/commit witnesses before Self routes another Hands turn.
|
|
|
|
The repo-work scheduler obeys the same order. After a branch-local execute
|
|
receipt it stops at `await-modeling`; it cannot invoke closure or manufacture
|
|
Modeling/Mind evidence. `epiphany-work close` requires explicit model
|
|
authorship, model reference, verdict, and finding before it can admit a map.
|
|
Deterministic checks remain Soul evidence, not a substitute for Modeling. The
|
|
verified consequence now crosses an explicit
|
|
`epiphany.modeling.repo_work_request.v0` boundary authored by Self. The request
|
|
is immutable, references the passing Soul receipt, commit, and changed paths,
|
|
and grants Modeling interpretation authority without granting Self authority to
|
|
write the result. A Modeling finding is refused unless it answers that exact
|
|
request and matches its verified consequence. The current close command writes
|
|
both phase documents from explicit CLI cargo; scheduler launch and asynchronous
|
|
result collection remain the next cut.
|
|
|
|
Soul verification is now an explicit phase of the shared closure pipeline.
|
|
`epiphany-work verify` and the first post-execution scheduler pulse run only
|
|
that phase: deterministic verification, immutable Soul verdict, and immutable
|
|
Self-to-Modeling request. Modeling absence or a non-passing Modeling verdict can
|
|
no longer make Soul report failure. The partial closure artifact is
|
|
`status=awaiting-modeling`; overview and later scheduler pulses preserve that
|
|
gate rather than mistaking file existence for Mind admission. The scheduler
|
|
source contains neither the Modeling finding writer nor map admission.
|
|
|
|
Repo work now has a native third worker launch kind beside generic role and
|
|
reorientation work: `repo-work-modeling`. It runs through the existing
|
|
`epiphany-openai-runtime`, carries the immutable request plus the bounded
|
|
Soul-verified commit diff, and requires
|
|
`epiphany.worker.repo_work_modeling_result.v0`. The runtime—not Self—converts
|
|
model output directly into the canonical `RepoWorkModelingFinding`. Scheduler
|
|
pulses launch one detached runtime job, wait without duplication, consume only
|
|
the typed finding, and then resume the existing immutable Mind/map admission.
|
|
A non-passing finding is immutable and stops for reviewed revision rather than
|
|
being overwritten or silently retried.
|
|
|
|
The former direct CLI writer is cut. `epiphany-work close --model-authored ...`
|
|
may no longer create a Modeling finding; closure can only reread the canonical
|
|
runtime document. The obsolete direct-CLI closure smoke was deleted. A live
|
|
negative probe returned exit 1 for forged passing CLI cargo while leaving the
|
|
typed request awaiting its real Modeling worker.
|
|
|
|
Detached worker physiology is now Idunn-owned. `epiphany-work` opens the typed
|
|
runtime job and invokes `epiphany-daemon-supervisor service-launch`; it contains
|
|
no child-process `spawn`. The supervisor launches the existing model runtime,
|
|
owns Windows hidden-process behavior, redirects stdout/stderr to explicit
|
|
artifacts, and publishes an
|
|
`epiphany.cultmesh.daemon_service_lifecycle_receipt.v0` containing service and
|
|
process identity. Self receives that receipt ID as routing evidence only. Live
|
|
item `idunn-owned-modeling` crossed this boundary and reached the Bifrost gate.
|
|
|
|
The current Modeling request is owned by
|
|
`epiphany.modeling.repo_work_route.v0`, not the filesystem closure projection.
|
|
Generation zero lands atomically with its Soul-backed request. A later
|
|
generation can advance only through `advance_repo_work_modeling_route`: the
|
|
current finding must exist and be non-passing, the new request must preserve
|
|
item/Soul/commit/paths, and a Mind acceptance must grant only
|
|
`repoWork.modelingRoute`. Request, Mind review, and stable route pointer commit
|
|
in one CultCache batch; old request/finding documents remain immutable.
|
|
`epiphany-work revise-modeling --review-ref ... --rationale ...` is the explicit
|
|
review mouth. Scheduler job IDs include the route generation and derive the
|
|
stable route key from the item, so neither close JSON nor an old completed job
|
|
can select current work.
|
|
|
|
Before any Modeling runtime job is opened, the exact consumer executable runs
|
|
`preflight` against the actual runtime store. Its own schema registry must read
|
|
the store and advertise the required route, request, finding, and worker-launch
|
|
types. Preflight hashes both executable bytes and the ordered supported schema
|
|
catalog. Idunn refuses a typed launch without the passing schema flag,
|
|
executable SHA-256, schema-catalog SHA-256, witness ID, and required document
|
|
list; all are persisted in the daemon service lifecycle receipt. The preflight
|
|
ID is correctly a witness, not a fake independent receipt. Preflight precedes
|
|
`open_runtime_spine_heartbeat_job`, so stale consumers leave no queued corpse.
|
|
|
|
The
|
|
accepted interpretation is persisted as
|
|
`epiphany.modeling.repo_work_finding.v0`; it references the passing Soul verdict,
|
|
commit, and changed paths. Mind rereads that typed receipt and the admitted repo
|
|
map plus CultMesh projection carry its receipt ID.
|
|
|
|
The canonical repo-work map entry is `epiphany.repo_work.map_entry.v0` in the
|
|
same runtime CultCache. `commit_repo_work_map_admission` validates it against
|
|
the persisted Modeling finding, then publishes the map entry, Mind review, and
|
|
Mind commit in one prepared batch. The former bespoke
|
|
`.epiphany/state/repo-work-map.msgpack` owner is deleted. CultMesh remains a
|
|
projection after admission and cannot repair or override the canonical entry.
|
|
|
|
Closure phase documents are immutable by stable receipt ID. An identical retry
|
|
reuses the existing Soul verdict and Modeling finding, rereads an already
|
|
admitted Mind/map batch, and regenerates only operator/CultMesh projections.
|
|
Conflicting same-ID Soul, Modeling, or map cargo is refused; no reconciliation
|
|
loop may overwrite the earlier truth.
|
|
|
|
Manual edits and programmatic actions converge at the same receipt and Mind
|
|
admission boundaries. A later action cannot retroactively make an unrecorded
|
|
consequence valid.
|
|
|
|
## Read And Recommendation Flow
|
|
|
|
`epiphany-mvp-status` reads the unified native coordinator store.
|
|
It derives:
|
|
|
|
- scene via `surfaces/scene.rs`;
|
|
- pressure via `surfaces/pressure.rs`;
|
|
- freshness via `surfaces/freshness.rs`;
|
|
- jobs via `surfaces/jobs.rs`;
|
|
- role board via `surfaces/role_board.rs`;
|
|
- planning via `surfaces/planning.rs`;
|
|
- reorientation via `surfaces/reorient.rs`;
|
|
- CRRC via `surfaces/crrc.rs`;
|
|
- coordinator status via `surfaces/coordinator.rs`.
|
|
|
|
`epiphany-mvp-coordinator` consumes that native status shape. Requested Hands
|
|
paths come from the scene checkpoint/frontier. Revision comes from
|
|
`/scene/scene/revision`. There is no Codex `read.thread.epiphanyState` fallback.
|
|
|
|
## Persona Flow
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
T["Typed Persona state + visible stimulus"] --> PR["Imagination Projector"]
|
|
PR --> PE["Persona turn"]
|
|
PE --> IN["Mind Interpreter"]
|
|
IN --> CA["Candidate actions / memory proposals"]
|
|
CA --> G["Review and external authority gates"]
|
|
```
|
|
|
|
Semantic memory recall is a bounded context input, not a state writer. Outside
|
|
world actions pass through Bifrost identity/governance and Heimdall capability
|
|
proofs. Persona speech audits are typed CultMesh witnesses; public speech does
|
|
not expose private worker or operator state.
|
|
|
|
The generalized Projector → Persona → Interpreter prompt membrane is owned by
|
|
Ghostlight's `ghostlight-persona-projection` crate and consumed here at an exact
|
|
Git revision. Epiphany supplies its typed memory, repo activity, social
|
|
affordances, transcript, and organ dependencies to the Projector. The Persona
|
|
receives only the resulting lived narrative stream; raw transcript, semantic
|
|
recall, mentions, repo activity, and typed state are no longer parallel Persona
|
|
prompt authorities. The Interpreter receives that lived stream, the natural
|
|
Persona turn, and Epiphany's bounded effect schema. Epiphany remains owner of
|
|
stage receipts, reasoning projections, effect validation, Mind admission,
|
|
swarm-brake enforcement, Bifrost consequences, and atomic terminal commit.
|
|
|
|
## Heartbeat And Daemon Physiology
|
|
|
|
`heartbeat_state.rs`, `epiphany-heartbeat-store`,
|
|
`epiphany-daemon-supervisor`, and `epiphany-cluster-daemon` own scheduling and
|
|
liveness. A lane is not relaunched while its prior turn is active. Cooldown
|
|
begins after completion. Idle physiology may ruminate, distill memory, or dream
|
|
without claiming project-state authority.
|
|
|
|
Idunn owns daemon survival. Self and Downstream consumers may inspect and recommend; they do
|
|
not become alternate daemon keepers.
|
|
|
|
## Verse And Interface Projection
|
|
|
|
CultMesh is the preferred local typed interface over CultCache/CultNet.
|
|
|
|
- `epiphany-internal`: private thoughts, reviews, receipts, and local organ
|
|
coordination;
|
|
- `gamecult-local`: trusted operator-safe GameCult sharing;
|
|
- `epiphany-global`: public dreams and Persona/public discussion documents.
|
|
|
|
Eve/CultUI surfaces lower typed CultMesh composition/state. Renderers and
|
|
wrappers do not own the projected truth.
|
|
|
|
## Codex Boundary
|
|
|
|
The following are structurally absent:
|
|
|
|
- `thread/epiphany/*` requests and notifications;
|
|
- `ThreadEpiphany*` protocol DTOs and generated bindings;
|
|
- `Thread.epiphanyState` in Codex app-server payloads;
|
|
- Epiphany rollout migration or replay;
|
|
- app-server phase-6 Epiphany smokes;
|
|
- Codex-backed MVP status/interruption;
|
|
- `epiphany-codex-bridge`.
|
|
|
|
Native coordinator/status projections emit `state`, not the deleted Codex
|
|
`Thread.epiphanyState` spelling. Source guards reject that compatibility field
|
|
and reject the old two-store status flags.
|
|
|
|
Codex app-server protocol has no dependency on `epiphany-state-model`.
|
|
App-server has no Epiphany state-model/core/bridge dependency. Negative source
|
|
checks in native launch/coordinator code reject renewed Codex route authority.
|
|
|
|
## Verification Layers
|
|
|
|
| Claim | Evidence layer |
|
|
|---|---|
|
|
| State mutation law | `state_update.rs` and coordinator-state unit tests |
|
|
| Worker/Mind admission | runtime-spine and coordinator-acceptance tests |
|
|
| Read-only derived surfaces | focused `surfaces/*` tests |
|
|
| Native status/interrupt | `epiphany-mvp-status` tests and executable smoke paths |
|
|
| Hands/Soul loop | Hands receipt tests plus coordinator launch-context tests |
|
|
| Protocol starvation | source scans, app-server compile, generated-schema equivalence |
|
|
| Verse privacy/authority | CultMesh/Verse focused smokes and typed receipt readbacks |
|
|
| Public crossings | Persona mouth contract smokes: fail-closed eligibility, single-crossing receipt binding, and private-state seals; no provider-readiness projection |
|
|
|
|
### Persona mouth / provider-readiness boundary
|
|
|
|
Owner: the participating Bifrost/provider boundary owns the consequence of a
|
|
public crossing. Epiphany owns only Persona speech eligibility and artifact
|
|
binding.
|
|
|
|
Inputs: one eligible Discord, Reddit, or named future-surface request plus the
|
|
configured actuator coordinates and target-shaped identity/capability
|
|
references.
|
|
|
|
Outputs: one validated transport/request receipt bound to that one
|
|
speech/request artifact.
|
|
|
|
Derived state: the receipt is artifact-local evidence of the named consequence.
|
|
It does not derive provider inventory, liveness, capability, readiness,
|
|
publication, or future operability. Missing evidence remains unknown.
|
|
|
|
Forbidden writers: MVP status, wrapper summaries, fixture aggregators,
|
|
sibling-path/executable probes, subprocess exit status, parseable JSON, and
|
|
caller-supplied booleans cannot write provider readiness.
|
|
|
|
Shared paths: Discord, Reddit, and future-surface mouths all use the same
|
|
fail-closed eligibility-to-receipt boundary, but each single-mouth smoke proves
|
|
only its own crossing. No cross-mouth aggregate remains.
|
|
|
|
Deletion line: remove the sibling advertisement subprocess projection, both
|
|
aggregate smoke binaries, aggregate output fields, and status/wrapper
|
|
presentation. Retain only the scoped mouth consequence receipts.
|
|
|
|
Repo-work map admission is a canonical generation-bound transaction. A map
|
|
entry names its `RepoWorkModelingRoute` and generation; the runtime spine loads
|
|
that route and admits only a passing immutable finding selected by the route's
|
|
current request. CLI closure is a caller of this invariant, not its owner.
|
|
Non-passing findings and stale generations therefore cannot become durable Mind
|
|
state even through a forged-looking admission call.
|
|
|
|
The model runtime has a deterministic generation-retry proof at
|
|
`epiphany-openai-runtime/src/lib.rs`: both findings pass through the production
|
|
assistant-result parser and runtime-owned finding writer. Generation zero is
|
|
non-passing, Mind alone advances the route, generation one is passing and
|
|
admitted, and a stale generation-zero admission is refused. This proves typed
|
|
handoff and ownership without provider/network variance. The remaining smoke
|
|
boundary is process composition through `epiphany-work revise-modeling`, the
|
|
scheduler's consumer preflight, and Idunn's child lifecycle receipt.
|
|
|
|
Scheduler dry-run is now an authority projection rather than a vague promise.
|
|
When a current typed Modeling request has no finding or job, its
|
|
`advancedResult` names the current route, generation, request, generation-bound
|
|
job id, required preflight, and Idunn lifecycle ownership without opening a job
|
|
or spawning a process. A disposable authority test drives the production
|
|
revision mouth and scheduler and proves generation one is selected. The final
|
|
process proof must compare this projection with a real preflighted Idunn launch
|
|
receipt; it must not add a fake production runtime mode.
|
|
|
|
The physical comparison passes. A real generation-one scheduler pulse matched
|
|
the deterministic route/request/job projection, consumer preflight
|
|
fingerprinted the executable and compiled schema catalog, Idunn persisted the
|
|
launch lifecycle receipt, and the detached model runtime completed a passing
|
|
typed finding with empty stderr. A later scheduler dry-run saw that finding as
|
|
`admit-modeling`; it did not relaunch generation zero. This closes the
|
|
generation-retry authority path. Re-enter through a source-grounded Perfect
|
|
Machine audit rather than adding more closure machinery.
|
|
|
|
## Current Cut Line
|
|
|
|
Keep:
|
|
|
|
- native typed state and runtime stores;
|
|
- explicit organ gates and receipts;
|
|
- native coordinator/status surfaces;
|
|
- CultMesh/CultNet/Eve projection;
|
|
- Codex-compatible auth/model transport where still required.
|
|
|
|
Cut or correct next:
|
|
|
|
- current plans and handoff prose that still describe deleted Codex routes or
|
|
bridge files as live mechanisms;
|
|
- wrapper arguments named for Codex when they no longer cross a Codex boundary;
|
|
- compatibility-shaped JSON field names inside native-only operator artifacts
|
|
when no external contract requires them;
|
|
- misleading state/runtime store path names;
|
|
- any remaining full-context serializer or summary that duplicates typed owner
|
|
state instead of projecting it narrowly.
|
|
|
|
## Native Heartbeat Service Boundary
|
|
|
|
The refreshed Perfect Machine audit selects runtime physiology as the next
|
|
organ boundary. `epiphany-heartbeat-store serve` now owns a native interval
|
|
loop around the existing `run_void_routine_store` primitive. It writes one
|
|
iteration directory per pulse, emits only a compact pulse receipt containing
|
|
artifact identity and success, supports bounded clean shutdown through
|
|
`--max-iterations`, and contains no child-process spawn or second state writer.
|
|
Heartbeat owns pulse timing; the next cut is to launch this binary through
|
|
Idunn and prove restart/resume, swarm-brake observability, and lifecycle
|
|
readback before demoting the PowerShell rumination vigil.
|
|
That cut is now proven. An engaged brake produced two compact refused pulses
|
|
without terminating `serve`; releasing it let the same persisted store complete
|
|
a routine. Idunn then launched two pulses and a separate one-pulse restart from
|
|
that store with empty stderr and lifecycle receipts. The attached PowerShell
|
|
vigil is deleted. The remaining service boundary is durable Idunn policy and
|
|
operator readback: advertise/configure the heartbeat service through typed
|
|
daemon state so restart intent survives beyond one explicit `service-launch`.
|
|
Source inspection corrected the proposed owner: standing daemon restart policy
|
|
requires a topology daemon and liveness status, while heartbeat is an
|
|
Idunn-managed child service. The durable owner must therefore be a typed
|
|
managed-service desired-state document keyed by service id. It delegates all
|
|
starts to the existing service lifecycle primitive and must not invent an
|
|
`epiphany-daemon-heartbeat` topology identity.
|
|
The typed desired-state surface is now implemented as
|
|
`epiphany.cultmesh.managed_service_policy.v0`, persisted at a service-id key.
|
|
`epiphany-daemon-supervisor managed-service-policy` writes command, args, cwd,
|
|
enabled/restart/backoff intent, sealed log refs, and the latest lifecycle
|
|
witness; `managed-service-read` projects desired state plus
|
|
`latestLifecycle`. It deliberately reports process observation as unknown
|
|
until a real reconcile probe exists, so an old launch receipt cannot claim the
|
|
service is alive.
|
|
That probe now exists. `managed-service-reconcile` reads only the service policy
|
|
and lifecycle history, observes the latest PID through the native platform
|
|
process API, applies enabled/restart-mode/cooldown decisions, and delegates a
|
|
restart to `service_launch`. Launch receipt ids now carry attempt time, so
|
|
restarts preserve history. Live root
|
|
`C:\Users\Meta\AppData\Local\Temp\epiphany-managed-reconcile-8e3d7cc5fe0b4c5fa38b18b3d00cea0c`
|
|
proved restart receipt
|
|
`daemon-service-lifecycle-receipt-idunn-managed-heartbeat-launch-1783858125893`
|
|
and PID `19736` were observed alive after the prior process was killed. Next
|
|
fold this reconcile into Idunn's own serve loop and cut the full-context Verse
|
|
load from service launch.
|
|
Both cuts are landed. Service plan/launch now load only the typed swarm brake
|
|
and rely on their own typed writers to open/register the store; they do not
|
|
reseed or serialize the local Verse. `managed-service-serve` is a distinct Idunn
|
|
loop from standing-daemon `serve`, so child service desired state is not blocked
|
|
by absent topology restart policies. Live root
|
|
`C:\Users\Meta\AppData\Local\Temp\epiphany-idunn-unattended-3394ecfaa03f41d8935f9fb70411ca75`
|
|
proved PID `44276` was observed alive without duplication, then after forced
|
|
death the next pulse launched PID `40532` under unique receipt
|
|
`daemon-service-lifecycle-receipt-idunn-managed-heartbeat-launch-1783859054234`.
|
|
The next boundary is provider-owned Eve sight over managed service desired/observed
|
|
state.
|
|
That first sight boundary is now implemented. `observe_native_process` moved
|
|
from the supervisor binary into a shared narrow core organ. Query aliases
|
|
`managed-services` and `idunn-services` join typed
|
|
service policy with latest lifecycle history and native observation, then read
|
|
only the compact heartbeat serve pulse line from the sealed stdout artifact.
|
|
Live row PID `25236` transitioned from `READY/alive` to `ATTN/dead` while
|
|
retaining pulse `completed`, iteration `1`, and lifecycle receipt
|
|
`daemon-service-lifecycle-receipt-idunn-managed-heartbeat-launch-1783859373793`.
|
|
No command args or routine payloads are projected. Next merge these rows into
|
|
the main provider-owned Eve composition rather than keeping a specialist query only.
|
|
|
|
## Semantic Projector Executor Authority
|
|
|
|
Canonical Mind and Modeling admission own projection demand. Their transaction
|
|
writes the exact semantic-projection obligation beside the canonical source
|
|
head; neither Idunn nor the projector may invent that demand. Idunn owns the
|
|
decision to assign an executor or fence an abandoned executor. The projector
|
|
owns only the claim-bound Qdrant mutation, post-write observation, attempt
|
|
terminalization, and exact success receipt.
|
|
|
|
The execution chain is now:
|
|
|
|
`canonical obligation -> Idunn acquisition CAS -> consumed executor grant + running claim/attempt -> epoch-isolated Qdrant synchronization -> canonical authority reauthentication -> terminal claim/attempt + exact receipt CAS`.
|
|
|
|
Acquisition binds scope, obligation, executor identity and incarnation,
|
|
purpose, Idunn incarnation, predecessor claim, and resulting claim epoch in one
|
|
consumed typed grant. `execute` cannot reopen an exact succeeded claim;
|
|
`repair` requires that exact predecessor. The execution CLI accepts a claim id,
|
|
not an executor label, and authenticates the consumed authority behind the
|
|
claim before touching Qdrant. Acquisition reauthenticates the complete sealed
|
|
canonical input and carries its authority envelopes through the same CAS, so a
|
|
persisted historical obligation cannot reopen an advanced source head.
|
|
|
|
Running-claim recovery reloads the exact Idunn poke intent/receipt and a
|
|
provider-authored immutable heartbeat event from CultMesh. It requires an
|
|
`awaiting-provider-heartbeat` lifecycle result followed by a newer ready
|
|
heartbeat for the replacement provider incarnation, hashes those source
|
|
envelopes, requires the heartbeat to name the exact restart receipt as its
|
|
startup cause, and consumes a typed recovery authorization in the same CAS that
|
|
fails the abandoned attempt and advances the claim epoch. The old executor can
|
|
thereafter write only its physically isolated abandoned Qdrant namespace and
|
|
cannot terminalize the active CultCache claim.
|
|
|
|
Projection health, elapsed time, process status, command exit, Qdrant counts,
|
|
CultMesh mirrors, Eve, and swarm overview remain derived sight. They cannot
|
|
create an obligation, grant, claim, attempt, success receipt, recovery, or
|
|
query admission. Initial execution, retry, repair, and recovered execution all
|
|
use the same claim-authenticating execution primitive; only acquisition and
|
|
recovery differ in how Idunn establishes the claim authority.
|
|
|
|
Verification covers concurrent acquisition with one winner and no issued
|
|
litter, predecessor/epoch ordering, purpose separation, claim-authority
|
|
authentication, evidence field substitution, lifecycle/heartbeat causal
|
|
ordering, recovery single use, and the inability of the recovery command to
|
|
execute projection work itself.
|
|
|
|
The packaged workstation body now contains the single projector owner, Idunn
|
|
supervisor, and semantic query verifier. Task Scheduler owns current-user
|
|
after-login presence of the foreground Idunn reconciler; the reserved typed
|
|
policy owns the exact projector launch shape; Idunn seals the launch receipt;
|
|
and the projector authenticates that receipt before taking the host-wide
|
|
canonical-store-pair singleton. `gamecult-ops` separately owns the foreground
|
|
Yggdrasil tunnel that exposes Qdrant on workstation loopback. Canonical store
|
|
and Qdrant placement remain one topology; dual projectors are forbidden.
|
|
|
|
Provider correlation is derived sight. The service-status projection reports
|
|
`provider-correlated` or `provider-degraded`, never semantic readiness. Query
|
|
admission authenticates the newest exact obligation/current/success chain and
|
|
alone owns readiness. Deployment proof uses the packaged verifier with explicit
|
|
`EPIPHANY_QDRANT_URL` and `EPIPHANY_OLLAMA_BASE_URL`; both Mind and Modeling
|
|
queries have returned semantic ranking under those explicit coordinates.
|
|
|
|
Stopping the scheduled reconciler does not kill its detached projector child.
|
|
Process ancestry is therefore current observation, not durable ownership, and
|
|
a task restart can reuse an already-running child. The missing proof is a real
|
|
operator-approved reboot/logon cycle that observes both tasks restored, the
|
|
tunnel ports live, a fresh post-boot reconciler -> exactly-one-projector chain,
|
|
a new launch-correlated provider heartbeat, and semantic ranking from both
|
|
packaged queries. This proves after-login physiology only. Reboot is outside
|
|
agent authority until the operator grants that exact host-wide action.
|
|
|
|
## Coordinator action authority and smoke boundary (2026-07-15)
|
|
|
|
The production coordinator now derives one path:
|
|
`typed status/evidence -> coordinator action -> shared action arm -> optional Hands gate`.
|
|
Typed status and accepted evidence own action selection; Hands/Substrate review
|
|
owns permission. Current typed thread state, accepted role results, and review
|
|
evidence are inputs. The action, run receipt, and optional Hands gate are
|
|
outputs. Smoke fixtures and scenario controls are derived verification state.
|
|
|
|
Production callers, wrappers, fixture flags, and smoke helpers are forbidden
|
|
writers of action, `canAutoRun`, review requirements, bootstrap state, and Hands
|
|
permission. The seven former production fixture flags and their override/helper
|
|
paths are deleted. The dedicated smoke creates fixtures only under
|
|
`.epiphany-smoke/mvp-coordinator`, then exercises the shared typed paths; it
|
|
rejects attempts to reintroduce those flags.
|
|
|
|
Future audit frontier, not established anatomy: sibling Bifrost subprocess JSON
|
|
used by readiness needs a focused identity/schema/provenance audit before any
|
|
cut or confirmed finding.
|
|
|
|
## Historical freshness-based Reorientation path (deleted 2026-08-18)
|
|
|
|
The old `derive_freshness` -> `recommend_reorientation` -> CRRC launch path is
|
|
deleted. It mixed legacy thread checkpoints, watcher/retrieval labels, role-lane
|
|
results, and timestamp ordering into behavioral authority. Those surfaces may
|
|
still describe physiology or display state, but they cannot create, suppress,
|
|
or admit Reorientation. The live owner is the keyed continuity request and
|
|
current-work lifecycle documented below.
|
|
|
|
## Repository Body observation substrate (2026-07-15)
|
|
|
|
`repository_body_observer.rs` owns bounded `git_worktree` observation. A
|
|
separate bind command consumes the existing validated runtime swarm binding and
|
|
pins a caller-supplied workspace ID, exact runtime/swarm/source-identity hash,
|
|
canonical Git root, object format, scope, and ignore policy; observe cannot mint
|
|
identity. One observation-owned disposable index/object quarantine is initialized
|
|
with `read-tree`; two complete `git add --all -- .`/`write-tree`/staged-entry/
|
|
raw-byte manifest scans against that same private index must agree. The second
|
|
scan may reuse Git's verified index stat cache, but it still enumerates the whole
|
|
Body and cannot publish unless its tree and raw manifest exactly equal the first.
|
|
The index is deleted with the observation session and never becomes durable
|
|
truth. CultCache MessagePack persists immutable
|
|
generations and an exact-CAS current head; unchanged raw manifest preserves the
|
|
generation. The observer makes no historical continuity claim and has no Ready field.
|
|
Sparse checkout fails closed, submodules are gitlink-only, and RepoModel/
|
|
retrieval/scheduler/Mind integration is absent. The CultCache store must remain
|
|
outside the observed worktree so observer writes cannot become observed input.
|
|
Machine-global excludes are disabled during observation. Only accepted stable
|
|
observations persist; failed/unstable attempts return errors and advance no
|
|
head. HEAD absence counts as unborn only when a symbolic ref is proven absent.
|
|
Every Git subprocess strips ambient repository, worktree, object, ref,
|
|
namespace, index, shallow/graft, and injected-config environment authority.
|
|
The index owns ignore-aware UTF-8 path, Git mode, and gitlink enumeration; its
|
|
clean-filtered tree OID is auxiliary. Raw regular-file bytes and lengths, or
|
|
non-followed symlink-target bytes, feed ordered typed entries. A domain-separated
|
|
SHA-256 root over workspace, scope policy, and those entries is authoritative
|
|
Body identity. Manifest, observation, and manifest-root head land in one CAS.
|
|
Gitlinks remain nonrecursive. Unsafe or unrepresentable paths fail closed.
|
|
|
|
The bind rite also writes one immutable runtime-side
|
|
`RuntimeRepositoryBodyStoreBinding`. It names the canonical external Body-store
|
|
locator and hashes the exact Body binding while repeating runtime, swarm, and
|
|
workspace identity. Every read reopens the Body store and validates that chain.
|
|
One runtime cannot silently switch between Body stores; relocation or replacement
|
|
requires a future explicit migration receipt.
|
|
|
|
Every coordinator-owned Modeling launch now obtains a typed
|
|
`RepositoryBodyObservationBasis` before the worker thinks. The immutable launch
|
|
binds runtime/swarm/workspace/scope, Body-binding hash, observation
|
|
generation/id/root, and scan interval. Modeling output contract v3 requires the
|
|
worker-authored exact echo; result ingress rejects missing or substituted basis.
|
|
Non-Modeling launches and results cannot carry it. Mind review v1 and admission
|
|
receipt v5 preserve the same basis. Admission validates exact
|
|
launch/result/review equality and the referenced immutable historical Body
|
|
artifacts before copying it into the CAS receipt. It does not resample current
|
|
Body. Direct Mind adoption and legacy migration remain explicitly ungrounded.
|
|
|
|
## Mind readiness join boundary (2026-07-15)
|
|
|
|
A truthful whole-repository readiness join does not yet exist. Body-grounded
|
|
RepoModel admission now exists; Mind must own a
|
|
derived `RepositoryReadinessProjection`; Body observation, Modeling, retrieval,
|
|
semantic projection, schedulers, watchers, jobs, and UI are forbidden writers.
|
|
Its required inputs are a fresh validated Body observation, the canonical
|
|
RepoModel plus its exact Mind admission receipt carrying its Body basis,
|
|
the authenticated Modeling semantic projection receipt for that admitted model,
|
|
and exact workspace-retrieval coverage bound to the same Body manifest and a
|
|
named inclusion policy. Derivation must retry if any participating head advances.
|
|
|
|
The join is a race-bounded operation: observe Body root R1, validate every exact
|
|
artifact against R1, then observe again and require R2=R1 before emitting an
|
|
`observed-ready-at` receipt whose truth interval ends at the second scan. Later
|
|
reads must revalidate rather than present it as timeless Ready. A→B→A is harmless
|
|
when all artifacts are content-addressed to A. Gap-free watcher or journal
|
|
continuity is not required and cannot prove truth after its own final event.
|
|
Legacy retrieval `Ready`, empty dirty paths, timestamps, watcher silence, Git
|
|
tree or HEAD OIDs, Qdrant existence, counts, and unrelated generations are not
|
|
substitutes. Watchers and Hands receipts may trigger recomputation but cannot
|
|
replace either Body observation. The lossy JSON workspace manifest remains cache metadata, not
|
|
coverage authority. Semantic-projector Ready remains exact query eligibility for
|
|
the admitted RepoModel projection; it does not prove repository Body coverage.
|
|
|
|
## Counterfeit workspace retrieval organ removed (2026-07-15)
|
|
|
|
The old `retrieval.rs` module was not wired to any runtime, CLI, scheduler, or
|
|
app-server caller. It stored JSON under `CODEX_HOME`, identified files by
|
|
path/size/mtime/chunk count, used different filesystem walkers for exact and
|
|
semantic search, named Qdrant collections from workspace path plus model, and
|
|
could emit `Ready` from a missing manifest or query-time BM25. It had no Body,
|
|
runtime, swarm, workspace, policy, content-root, or observed point-set binding.
|
|
The module and re-exports are deleted. Legacy `EpiphanyRetrievalState` remains
|
|
presentation-only: clean `Ready` projects Missing, and its index job is
|
|
unavailable and unowned; dirty/stale data may warn but cannot authorize coverage.
|
|
|
|
The replacement starts from an authenticated historical Body manifest,
|
|
classifies every entry under one versioned inclusion policy, verifies eligible
|
|
live bytes against Body hashes, builds a Body-root/policy/index-epoch isolated
|
|
Qdrant projection, observes its deterministic point set, and only then publishes
|
|
an immutable CultCache coverage receipt. Qdrant remains disposable.
|
|
|
|
## Body-bound workspace coverage substrate (2026-07-15)
|
|
|
|
`workspace_retrieval_coverage.rs` now defines the truthful contract boundary
|
|
without pretending the projector exists. Obligation derivation reloads the exact
|
|
historical Body manifest through the authenticated runtime Body-store route;
|
|
callers cannot hand it a manifest-shaped claim. One versioned policy classifies
|
|
every ordered Body entry and seals the complete classification set into the
|
|
obligation. A separate projection plan seals chunker, projection, embedding, and
|
|
expected point-set identity, while deriving its physical Qdrant collection from
|
|
the Body-bound authority instead of accepting a caller-selected namespace.
|
|
|
|
Receipts validate only when an exact Qdrant scroll observation matches that
|
|
sealed plan, and heads join one workspace, obligation, plan, and receipt. This
|
|
module has no store writer, Qdrant actuator, query gate, or readiness writer.
|
|
The next organ must own CAS persistence and execution: verify eligible bytes
|
|
against the historical Body hashes, project, scroll-observe, then atomically
|
|
publish the receipt/head. Until then coverage remains absent.
|
|
|
|
### Projector authority map
|
|
|
|
Repository Body owns observed substrate only: its binding, immutable
|
|
observations/manifests, and current Body head. Projection activity must not
|
|
rewrite `body.cc`. Live Yggdrasil candidate `c94fa580` falsified the old shared-
|
|
store ownership by attributably rewriting `body.cc` while projection ran; it
|
|
remains rejected.
|
|
|
|
Commit `261c7bc8` adds the pinned transactional store foundation. The runtime
|
|
record `epiphany.runtime.workspace_coverage_store_binding.v0` selects one
|
|
canonical store path and file identity while sealing the exact repository Body
|
|
route/envelope and Body-binding hash. The store-local
|
|
`gamecult.epiphany.workspace_coverage_store_binding.v0` repeats runtime, swarm,
|
|
workspace, file identity, Body-binding hash, repository source identity,
|
|
projection scope, and backend. `open_workspace_coverage_authority` validates
|
|
both bindings and returns the owned transactional store together with exact
|
|
read-only Body authority. A naked path is never sufficient.
|
|
|
|
The workspace-coverage store owns obligation, plan, immutable claim/attempt and
|
|
recovery history, current-claim authority, checkpoint events/head, progress
|
|
events/latest, terminal receipt, coverage head, and retirement history. Qdrant
|
|
is disposable derived state. This ownership is the target, not yet the live
|
|
implementation: commit `261c7bc8` provides bindings and transactional keyed
|
|
storage, but existing projector writers still persist projection records in
|
|
Body or local Verse.
|
|
|
|
Inputs are the exact pinned Body route/binding and current observation basis,
|
|
sealed policy/plan/model identity, authenticated managed launch and provider
|
|
incarnation, exact Idunn recovery evidence, and waited Qdrant readback. Outputs
|
|
are the typed lifecycle/proof records above. Current claim, progress, coverage,
|
|
warming, active, readiness, and query eligibility are derived joins; none may
|
|
be manufactured by a path, heartbeat, Qdrant count, or stale head.
|
|
|
|
Forbidden writers are explicit: Body observer/bootstrap never writes projection
|
|
state; projector/checkpoint/recovery never writes Body; local Verse retains
|
|
managed process lifecycle but not coverage progress; Idunn, deploy scripts,
|
|
health, heartbeat, Qdrant, Eve, and swarm overview cannot advance coverage
|
|
authority.
|
|
|
|
The shared execution path resolves the runtime coverage binding, opens exact
|
|
Body read authority, then acquires against the exact current Body chain,
|
|
verify every included live file against its historical length and SHA-256,
|
|
derive deterministic chunks and UUIDv5 point descriptors, embed and write into
|
|
a claim/epoch-fenced plan collection, scroll the whole collection with typed
|
|
payloads, then terminal-CAS success in the coverage store after reopening and
|
|
reauthenticating the still-current Body head. Plans
|
|
must seal an ID-to-payload binding root; equal counts or equal IDs do not prove
|
|
the indexed content. Receipt/head constructors and writers remain projector-
|
|
private. Live query eligibility re-observes Qdrant; a stored receipt proves only
|
|
that one exact observation completed.
|
|
|
|
Each waited batch/readback must transactionally admit its checkpoint event/head
|
|
and derived progress event/latest together in the coverage store. Cross-store
|
|
atomicity is not invented: Body is authenticated before the coverage CAS and
|
|
reopened afterward; if it moved, the projection evidence remains historical and
|
|
cannot become current. Claim authority is scoped to Body generation so an old
|
|
running claim cannot block new Body work. Same-Body abandoned-owner recovery
|
|
remains possible only through exact Idunn predecessor termination and
|
|
replacement authority.
|
|
|
|
Migration/cut line: quiesce projection, create and bind the coverage store,
|
|
copy projection envelopes from Body and progress envelopes from Verse while
|
|
preserving exact envelopes/digests, validate every chain, activate the runtime
|
|
binding as the single authority switch, then CAS-remove legacy records. After
|
|
activation legacy residue is inert. Missing binding, divergent sources, or
|
|
partial migration fail closed. No dual-read or fallback path survives. Every
|
|
bootstrap/deploy path must create the bound store before service start.
|
|
|
|
The execution path is reachable only through the reserved packaged workspace-
|
|
coverage projector managed by Idunn. It validates plan-sealed text hashes and vector
|
|
dimensions, creates or authenticates one exact managed claim/epoch Qdrant
|
|
collection, writes no empty upsert, whole-scrolls typed payloads, rejects cyclic
|
|
pagination plus duplicate/extra/missing/substituted points, and terminal-CASes
|
|
the receipt/head against the exact current Body authority, immutable plan,
|
|
running claim/attempt, and prior coverage head acquired at start. A CAS loser
|
|
cannot mint a receipt; failure can terminalize after Body advance.
|
|
|
|
The dedicated workspace-coverage projector binds claims to an authenticated
|
|
executor incarnation and reserved managed-process launch. Its pulse has an exact
|
|
`Current` result and rematerializes text through the authenticated historical
|
|
Body session rather than caller-supplied bytes. Abandoned-claim recovery admits
|
|
only immutable host-signed termination, one causally linked replacement launch,
|
|
and that replacement's latest signed ready heartbeat before one Body-store CAS.
|
|
Time, Qdrant state, generic policy, process guesses, and caller strings are not
|
|
abandonment authority. If Body advanced, recovery terminalizes the stale claim
|
|
and lets normal acquisition derive a new plan; it never resurrects stale work.
|
|
|
|
### Dedicated service and exact semantic proof
|
|
|
|
The dedicated service is now a real reserved managed body, not a generic job.
|
|
Its policy fixes the packaged sibling executable and exact runtime/Verse/
|
|
Qdrant/Ollama arguments. Startup authenticates the policy-bound launch receipt,
|
|
PID, executable hash, runtime identity, immutable Body-store route, and one
|
|
host-wide singleton. Claims and attempts bind that executor incarnation and
|
|
startup receipt.
|
|
|
|
Each pulse reloads only the persisted current Body basis, resolves the mutable
|
|
Ollama tag to its installed artifact digest, and probes dimensions. An exact
|
|
head/obligation/plan/receipt fast path returns Current without reading worktree
|
|
files. Needed work opens one authenticated Body read session, verifies every
|
|
eligible file and chunk, embeds only after claim acquisition, and observes both
|
|
typed payloads and exact stored vectors. Receipt identity includes the vector-
|
|
binding set; wrong, missing, nonfinite, or wrong-dimensional vectors cannot mint
|
|
success. Body history derives retirement candidates for terminal non-current
|
|
claim collections; current and running collections are preserved, and Qdrant
|
|
deletion requires exact managed metadata.
|
|
|
|
Recovery is present through Idunn's reserved reconciliation path. Launch,
|
|
heartbeat, and termination serialize through one per-launch process-evidence
|
|
head. Host-signed termination binds host+boot incarnation, exact native process
|
|
identity, executable, policy, and launch; it may seal death before heartbeat one
|
|
without turning timeout or PID absence into authority. One termination admits
|
|
one causal replacement slot. Recovery then requires the replacement's latest
|
|
signed ready heartbeat and commits failed history, epoch+1 successor, and an
|
|
immutable evidence-digest receipt in one Body CAS. PID reuse, access failure,
|
|
indeterminate observation, stale ready replay, and timeout remain inadmissible.
|
|
|
|
### Resident organizational Self
|
|
|
|
Resident wake scheduling has one owner. The standard heartbeat consumes one
|
|
pending typed pressure and atomically emits one single-consumption Self grant;
|
|
`epiphany-swarm` does not invent work from an idle loop. Accepted pressure is
|
|
bounded to operator objective, Body-map drift, and reviewable Imagination
|
|
proposal documents. Persona feedback remains persisted pressure and cannot
|
|
become a resident grant or coordinator objective; it enters Imagination only
|
|
through the separate typed consideration carrier. Those documents request
|
|
attention only. They
|
|
cannot adopt Mind state, authorize Hands, publish a release, or deploy it.
|
|
|
|
Resident Self owns the grant-to-coordinator process transaction. Its inputs are
|
|
the authenticated packaged-release witness, separate resident/runtime/Verse/
|
|
Mind stores, the heartbeat grant, the swarm brake, and exact process
|
|
observations. It outputs an immutable preparation, child claim, exact active
|
|
turn lease, coordinator terminal receipt binding, and terminal acknowledgement
|
|
back to heartbeat. The active turn and cooldown are derived from that chain;
|
|
PID, exit code, journal output, and an unbound coordinator receipt are sight,
|
|
not completion authority.
|
|
|
|
Preparation and grant consumption share one CAS. The packaged coordinator must
|
|
claim the preparation before cognition, binding process id, creation token,
|
|
executable path and digest, grant, and launch digest. Resident Self then
|
|
acknowledges exactly that claim. Completion requires the same turn, grant,
|
|
launch digest, release identity, and coordinator receipt. Brake or timeout
|
|
drains the exact process and cannot silently abandon a live lease. A prepared
|
|
launch survives scheduler restart: an unclaimed preparation safely retries the
|
|
same grant and launch contract, while a claimed preparation reattaches only to
|
|
the exact process incarnation recorded by the packaged child before cognition.
|
|
|
|
Forbidden writers are the old source-tree/Cargo `epiphany-swarm` wrapper,
|
|
`epiphany-work` queue machinery, free-running heartbeat loops, Persona,
|
|
Imagination, Modeling, coordinator artifacts, process exit, systemd, and
|
|
presentation projections. Direct operator objectives and domain-derived
|
|
pressure use the same pressure -> heartbeat grant -> preparation -> child claim
|
|
-> lease -> exact receipt -> terminal acknowledgement path. The cut line removes
|
|
the former `online`, `run`, `run-queue`, and `pulse` authority and packages the
|
|
swarm, coordinator, model runtime, and tool spine as witnessed sibling binaries.
|
|
|
|
Verification belongs at the typed transition layer: CAS-loss and replay tests,
|
|
store-separation checks, packaged-witness authentication, brake/timeout process
|
|
timeline tests, child-claim-before-cognition proof, exact receipt substitution
|
|
rejection, and negative scans proving no runtime Cargo or historical queue path
|
|
survives. A nonblocking trust seam remains: the parent currently compares its
|
|
post-launch process observation with the child's atomic claim. The claim closes
|
|
child bootstrap authority, but a future hardening pass should replace parent
|
|
observation trust with an OS-authenticated parent/child launch channel where the
|
|
host supports one; it is not permission to accept PID-only identity.
|
|
|
|
### Resident deployment and organizational loop
|
|
|
|
Heartbeat `serve` owns one physiology sequence: reconcile an exact terminal
|
|
acknowledgement; retain pressure under the brake; refuse replacement while a
|
|
coordinator is active; emit one grant when clear and pressured; otherwise run
|
|
bounded void/sleep work. Restart resumes typed state rather than inferring
|
|
completion from exit codes or journals.
|
|
|
|
`epiphany-swarm status` is a non-actuating join over exact
|
|
runtime/release/witness/source identity, packaged siblings, physical store
|
|
separation, heartbeat and Self freshness/coherence, lease sight,
|
|
runtime-scoped brake, writable workspace, and credential posture. The daemon
|
|
supervisor remains the sole signed Idunn health writer and may aggregate the
|
|
exact heartbeat/Self provider pair. Wrong-release evidence contradicts;
|
|
missing evidence warms; stale or incoherent evidence degrades. Readiness,
|
|
health, systemd, and PID sight cannot write deployment admission.
|
|
|
|
Provider liveness is owned by each role's cross-process singleton beside its
|
|
mounted store. The provider's CAS-replaced readiness row binds that live role
|
|
to exact release, witness, source, executable, status, monotonic sequence, and
|
|
bounded freshness. PID/creation-token observation is same-namespace diagnostic
|
|
evidence; it is not a cross-container liveness owner because PID namespaces do
|
|
not preserve that observation. Each predicate samples its evaluation time only
|
|
after loading the exact provider row; release authentication time cannot make a
|
|
concurrent refresh appear future-dated. Readiness may accept only a narrowly
|
|
bounded future skew around that observation and must still reject a genuinely
|
|
future-dated row. Status and supervisor aggregation share this derivation.
|
|
Neither a fresh row without the role lock nor a role lock without the exact
|
|
fresh row can become ready.
|
|
|
|
Exact packaged `16407f7e` proves the two-container implementation. With
|
|
Heartbeat and resident Self in distinct PID namespaces, a third observer
|
|
projected `active` with both providers fresh. Stopping only Heartbeat immediately
|
|
projected `warming` and named `role-singleton` while its identity row was still
|
|
fresh; restarting that exact container restored `active`. Actual c006 now runs
|
|
the same release under brake and projects `active` with no reasons. Receipts are
|
|
under `.epiphany-run/readiness-16407f7e` and
|
|
`.epiphany-run/c006-readiness-16407f7e`.
|
|
|
|
### Narrow Idunn lifecycle brake sight
|
|
|
|
Managed-task install/control, service-runbook construction, and repo-work
|
|
service audit own lifecycle effects or lifecycle evidence. Their only local
|
|
Verse gate is the canonical swarm brake. They load that one typed family and
|
|
delegate to the shared lifecycle-brake predicate; they do not materialize
|
|
daemon topology, provider state, tools, Eve surfaces, or unrelated receipts.
|
|
Cluster reconciliation and cluster runbook paths retain the broader context
|
|
only where their outputs actually enumerate daemon rows. The cut line removes
|
|
full-context reads from the four narrow lifecycle commands without changing the
|
|
brake decision or granting a new writer.
|
|
|
|
Yggdrasil separates provenance from Body. `/srv/epiphany/source/current` is
|
|
immutable release source. `/var/lib/gamecult/epiphany/workspace` is the writable
|
|
domain Body carrying repository binding, persistent Modeling map, Mind state,
|
|
and Hands consequences. Service authority is split as follows:
|
|
|
|
- `epiphany.service`: supervisor/projector and signed aggregate health;
|
|
- `epiphany-heartbeat.service`: heartbeat pressure, state, and grants;
|
|
- `epiphany-swarm.service`: resident-Self state and bounded coordinator turns.
|
|
|
|
Coordinator, model runtime, and tool spine are witnessed bounded children.
|
|
Deployment authenticates them, preserves coverage checkpoints across retries,
|
|
initializes heartbeat, manages the three units together, waits for typed
|
|
readiness, and crosses admission only through Idunn.
|
|
|
|
```text
|
|
domain Body -> persistent Modeling map -> Self pressure -> Imagination proposal
|
|
^ ^ |
|
|
| +-- Self proposal-review request ----------+
|
|
| ^ v
|
|
| signed feedback -> Self consideration -> Imagination candidate
|
|
| Mind review/adoption
|
|
| |
|
|
+---------------- Hands consequence <- explicit route -------+
|
|
|
|
|
Bifrost exact release
|
|
|
|
|
Idunn deployment
|
|
```
|
|
|
|
Every arrow is a typed request or receipt. Persona owns conversation;
|
|
Modeling owns the persistent map; Imagination proposes; Mind adopts, refuses,
|
|
or holds; Hands changes the Body only through an explicit route; Bifrost and
|
|
Idunn separately own release and deployment. Operator silence permits bounded
|
|
observation, map maintenance, rumination, and proposals. It grants none of the
|
|
later consequences.
|
|
|
|
The frontier-planning substrate is already complete below the MVP mouth.
|
|
`runtime_spine.rs::select_and_commit_repo_frontier_planning_request` selects one
|
|
admitted, unchallenged active Imagination frontier. `coordinator_launch.rs`
|
|
transports that exact request only through an exclusive Imagination launch and
|
|
persists its launch binding. `commit_repo_frontier_plan_mind_request` binds the
|
|
immutable Imagination result and candidate to a dedicated Mind request;
|
|
`EPIPHANY_MIND_ROLE_BINDING_ID` owns that review launch.
|
|
`commit_repo_frontier_plan_decision` then revalidates the entire causal chain and
|
|
atomically adopts or refuses it against the current model.
|
|
|
|
Self now observes this chain through
|
|
`runtime_repo_frontier_planning_lifecycle`, a read-only projection whose stages
|
|
are derived from the canonical request, launch bindings, immutable worker
|
|
results, Mind request, and decision receipt. The MVP coordinator advances each
|
|
stage only through the established commit primitive: select planning, launch
|
|
exclusive Imagination, request Mind review, launch the dedicated reviewer, and
|
|
commit Mind's decision. Failed Imagination or Mind jobs become explicit review
|
|
stages rather than remaining indistinguishable from running jobs. A terminal
|
|
Hold or Refuse suppresses immediate replanning of the same current authority.
|
|
Exact packaged `c35272c9` proves the live chain through the Mind boundary: fresh
|
|
accepted Modeling minted one typed Imagination frontier, Self selected it over
|
|
older CRRC regather display state, Imagination completed, and Self committed the
|
|
dedicated Mind request without adopting the candidate or granting Hands
|
|
authority. Mind launch, judgment, and decision commit remain next.
|
|
|
|
Selected user proposals are also native Self input. `project_current_work`
|
|
derives the oldest unresolved proposal request and its exact Launch, Wait, or
|
|
Review state from family-owned request, binding, runtime attempt/result, and
|
|
Mind commit documents. Coordinator status routes that authority before generic
|
|
regather. An optional request ID is only an equality assertion over Self's
|
|
derived work; it cannot create or reroute a proposal. Exact `d1b031cb` deletes
|
|
the former pending-request projection and aggregate launch path.
|
|
|
|
Proposal Modeling receives the canonical RepoModel shape, including current
|
|
domain, claim, and frontier identity. `existingFrontier` is the operation
|
|
boundary: `upsert_frontier` creates only a genuinely new id, while
|
|
`revise_frontier` changes an id already owned by Modeling. Admission still
|
|
fail-closes both mistakes. This context is required because exact `737f2b94`
|
|
correctly routed a live proposal but the worker, deprived of the frontier
|
|
inventory, attempted to upsert an existing item and was rejected.
|
|
|
|
The autonomous proposal crossing is source-grounded in
|
|
`runtime_spine.rs`, `admitted_model_direction_consideration.rs`,
|
|
`coordinator_launch.rs`, and `repo_model_gateway.rs`. A deployment-configured
|
|
`RuntimeRepositoryDomainBinding` immutably joins the runtime/swarm/workspace to
|
|
the exact repository Body binding. It names organizational jurisdiction only;
|
|
it is not proof of a Git remote. Self promotion reloads the exact direction
|
|
request/result, worker result and launch, admitted model receipt, domain
|
|
binding, and Body-owned canonical Git root, then one preserved-authority CAS
|
|
creates an inert frontier proposal and its Modeling selection. The generic
|
|
proposal mouth rejects Imagination provenance so it cannot substitute for this
|
|
causal crossing.
|
|
|
|
One admitted Imagination result may expose at most three `option_drafts`.
|
|
`MAX_OPTION_DRAFTS` is the single owner of that fan-out bound: the declared
|
|
worker output schema rejects a larger array before admission, and
|
|
`validate_result` rejects any substituted or legacy result that exceeds it.
|
|
Promotion remains one preserved-authority CAS per option and resident ingestion
|
|
still exposes only the current unbound selection. Scheduler ordering is not a
|
|
backpressure substitute; the producer itself is bounded so one model turn
|
|
cannot mint an unbounded durable proposal/selection/pressure queue.
|
|
|
|
Proposal Modeling is structurally bounded: its sole frontier upsert must
|
|
recommend `Imagination` and carry no adopted plan. Proposal Evolution is
|
|
insert-only. Ordinary Modeling has one separate standing transition: the typed
|
|
`checkpoint-update-needed` verdict asserts that the Body map contains a future
|
|
design gap and must mint exactly one new active, unadopted frontier recommending
|
|
`Imagination`, with no unresolved dependencies, safe non-empty source scope,
|
|
and evidence grounded in the result. `checkpoint-ready` and `regather-needed`
|
|
cannot mutate frontier. `nextSafeMove` is display-only. Therefore map
|
|
direction can become an inspectable proposal and planning request, but not a
|
|
Hands route. The full-chain hostile test supplies an exact proposal-citing
|
|
Modeling result that recommends direct Hands; Mind admission rejects it before
|
|
mutation, the store remains byte-identical, and Hands authority remains absent.
|
|
Only the existing explicit Mind adoption transition may create the route that
|
|
Hands consumes.
|
|
|
|
Self remains a router, not a prose interpreter. Once Mind accepts the ordinary
|
|
future-gap patch, the existing frontier-planning eligibility projection sees
|
|
the typed active frontier and launches Imagination before generic CRRC or
|
|
manual regather. Modeling owns representation of the gap; Imagination owns
|
|
possible futures; Mind alone may adopt one; Hands receives no authority from
|
|
this transition.
|
|
|
|
This map must change when ownership changes. Historical scars belong in git,
|
|
evidence, or an explicitly archived note—not in the machine's Modeling state.
|
|
|
|
### Resident producer replay identity
|
|
|
|
Resident domain ingestion is an at-least-once producer. The source request ID,
|
|
kind, provenance, objective, schema, and privacy boundary own pressure identity.
|
|
`created_at_millis` records the first observation; `status` and
|
|
`consumed_by_grant_id` belong to the heartbeat lifecycle. They are not producer
|
|
identity and cannot make an identical later ingestion conflict or recreate work.
|
|
|
|
`enqueue_resident_self_pressure_idempotent` therefore accepts an existing row
|
|
only when its immutable producer fields match, regardless of later observation
|
|
time or grant consumption. It still rejects any same-ID substitution of kind,
|
|
provenance, objective, schema, or privacy authority. The shared path applies to
|
|
admitted-model direction, autonomous proposal Modeling, and Imagination
|
|
consideration pressure. Verification replays after timestamp change and after
|
|
heartbeat consumption, and retains a hostile changed-objective collision.
|
|
|
|
Resident cancellation owns retry admission for a failed bounded coordinator
|
|
turn. In the same CAS that clears the exact active lease and writes its typed
|
|
terminal acknowledgement, cancellation verifies the grant still owns the
|
|
source pressure and returns that pressure from `consumed` to `pending`. It does
|
|
not mint the retry grant. The standard heartbeat remains the sole scheduler and
|
|
may issue a new grant with a new identity for the same exact pressure after it
|
|
has reconciled the terminal turn. A failed launch can therefore recover without
|
|
operator pressure duplication or an authority-bypassing coordinator call.
|
|
Grant identity includes the pressure-local attempt ordinal as well as heartbeat
|
|
schedule and action identity. Historical grants remain immutable receipts; a
|
|
retry cannot collide with its predecessor even when heartbeat reconciles the
|
|
failed turn and schedules the replacement within the same physiological action.
|
|
Concurrent issuers still derive the same next ordinal and contend on the one
|
|
pending-pressure CAS, so attempt identity does not weaken single consumption.
|
|
|
|
Typed pressure does not own a new coordinator thread. Imagination
|
|
consideration, admitted-model direction consideration, and autonomous proposal
|
|
Modeling requests each carry the implementation thread that owns their causal
|
|
state. Resident preparation reloads that exact request from the runtime store,
|
|
verifies its runtime identity against the immutable identity of that mounted
|
|
runtime store, and binds its thread into the coordinator argv. The release
|
|
publication runtime is a separate authority: it authenticates the packaged
|
|
binary body but does not decide which cognitive runtime owns a typed request.
|
|
This distinction matters in the live Starfire topology, where release runtime
|
|
`epiphany-starfire-linux` mounts the Eyes cognition store whose identity is
|
|
`epiphany-starfire-linux-eyes-tools`. Comparing a request to the release
|
|
runtime falsely rejects valid local cognition; comparing it to its own store
|
|
still refuses a request imported from a foreign runtime.
|
|
|
|
The live identity matrix is explicit:
|
|
|
|
- packaged-release witness runtime authenticates the binary publication;
|
|
- mounted runtime-store identity owns coordinator execution, request identity,
|
|
runtime mutation, and the coordinator's `--runtime-id`;
|
|
- mounted runtime-store identity also owns the local-Verse brake namespace for
|
|
Heartbeat scheduling, resident Self, and its coordinator child. Each resident
|
|
process resolves that identity from the immutable runtime envelope;
|
|
release/provider identity cannot choose a second kill switch merely because
|
|
it authenticated the binary;
|
|
- cognition readiness projects mounted cognition as `runtimeId`, authenticated
|
|
binary provenance separately as `releaseRuntimeId`, and reads the brake only
|
|
under mounted cognition. Operator sight and resident actuation therefore
|
|
observe the same kill switch;
|
|
- Persona feedback target identity belongs to the feedback crossing contract
|
|
and is not silently rewritten when cognition mounts a narrower runtime.
|
|
|
|
Plain operator objectives also execute against the mounted cognitive runtime
|
|
and derive `resident-self-thread-{cognitive-runtime}`. They do not get a second
|
|
runtime truth merely because no typed domain request supplied one.
|
|
The prepared argv is then the single source for child launch and lease thread
|
|
identity. Only plain operator objectives use the resident runtime thread.
|
|
`epiphany-swarm` no longer reconstructs a fixed thread after preparation.
|
|
|
|
An Imagination direction result may contain several option drafts. Autonomous
|
|
promotion gives every option its own proposal, provenance binding, and explicit
|
|
proposal-Modeling request. These are selected work items, not candidates still
|
|
awaiting preference. The shared current-work projection schedules the oldest
|
|
unresolved request by `selected_at`, then stable request ID. Its exact binding
|
|
and attempt derive Wait, retry Launch, or Review, exposing the next request only
|
|
after keyed admission. Resident ingestion consumes that same head and emits
|
|
pressure for only that request. It does not mirror every selected request into
|
|
a second independently ordered pressure queue.
|
|
|
|
Resident terminal success is also pressure-specific. For a
|
|
`repo-frontier-proposal-modeling` grant, a zero-exit coordinator receipt proves
|
|
only that the bounded coordinator process ended cleanly; it does not prove the
|
|
requested Modeling work reached a typed terminal result. The resident active
|
|
turn therefore remains the sole acknowledgement owner after coordinator exit.
|
|
For every typed lane it asks one runtime-spine-owned verifier whether the exact
|
|
request has one authenticated terminal worker result. The verifier replays the
|
|
same immutable runtime admission path that owns worker launch role/binding,
|
|
request/runtime/thread/job identity, launch projection, foreign-cargo
|
|
exclusion, and typed companion persistence. Proposal Modeling adds its exact
|
|
selection, proposal payload, autonomous origin chain, launch binding, immutable
|
|
launch Body basis, Evolution patch, and proposal-citing frontier contract.
|
|
Delayed fulfillment does not re-read the current external Body status: that
|
|
mutable eligibility belongs to Mind admission, which separately revalidates the
|
|
live Body binding before changing RepoModel. An autonomous proposal may return
|
|
to Imagination or route to Eyes for more evidence, but cannot route directly to
|
|
Hands or smuggle an adopted plan before Mind adoption. Missing
|
|
terminal evidence is `awaiting-fulfillment`: the active lease remains live and
|
|
cannot be retained, relaunched, acknowledged, or requeued. A later serve cycle
|
|
consumes the route exactly once when the typed evidence appears. Brake,
|
|
shutdown, or timeout while waiting uses the existing cancellation CAS to close
|
|
the lease once and return its exact pressure to Heartbeat; invalid or
|
|
substituted evidence closes as `unfulfilled`. Coordinator process closure is
|
|
therefore evidence, never cognitive completion authority.
|
|
|
|
A failed coordinator receipt cannot erase a valid typed completion. This
|
|
matters when a continuation launch claims a proposal immediately before an
|
|
already-enqueued proposal grant is delivered: the second coordinator correctly
|
|
refuses the duplicate launch, while the first detached worker may still finish
|
|
the exact request. Resident settlement records that grant as `fulfilled`, not
|
|
as the failed process status. Continuation ingress may derive
|
|
`reviewModelingResult` only when the failed receipt, its exact resident grant
|
|
and launch digest, one terminal acknowledgement, the authenticated proposal
|
|
fulfillment, and the current Modeling job link all agree, and no acceptance
|
|
receipt already exists. The job link is launch authority; its result ID remains
|
|
unset until acceptance and is not pre-acceptance evidence. The failed process receipt remains process evidence;
|
|
the typed result owns cognitive review readiness. This route cannot launch a
|
|
second worker or continue into Hands.
|
|
|
|
Receipt-derived launch actions are revalidated at preparation. A terminal role
|
|
result overtakes an older `launchResearch`, `launchModeling`, or
|
|
`launchVerification` continuation before process creation. Resident Self then
|
|
atomically marks the exact unlaunched grant `superseded`, leaves its consumed
|
|
pressure closed, and emits one Heartbeat acknowledgement bound to the
|
|
originating receipt. The stale receipt remains evidence but no longer owns a
|
|
launch; Heartbeat may then schedule the current typed review pressure. This is
|
|
grant-owned closure, not deletion or retry repair.
|
|
|
|
Exact packaged `6dd9b132` proves that ownership cut live. One autonomous
|
|
proposal Modeling coordinator exited while its detached worker continued; Self
|
|
held the same lease as `awaiting-fulfillment`. Runtime later admitted one exact
|
|
`checkpoint-update-needed` result whose proposal-citing frontier routed to
|
|
Eyes. Self consumed it once, wrote one `planned` acknowledgement, terminalized
|
|
the exact grant, and persisted cooldown. Continued serve cycles produced no
|
|
second result or acknowledgement, and SIGTERM ended braked with exit zero.
|
|
|
|
Resident Self now owns only the mapping from grant provenance to a typed runtime
|
|
request reference and the lease transition driven by the verdict. It does not
|
|
scan worker rows or recreate candidate/result policy. No claimant means
|
|
Pending; one authenticated claimant means Fulfilled; item errors, missing or
|
|
swapped launches/bindings, missing companions, foreign cargo, and multiple
|
|
claimants fail closed. Replaying a result already persisted by runtime admission
|
|
is validation-only: exact idempotence performs no write, while a missing
|
|
companion or changed envelope refuses before mutation.
|
|
|
|
Terminal completion owns its cooldown in that same resident-state and
|
|
acknowledgement CAS. `next_eligible_at_millis` is persisted from the configured
|
|
cooldown before the active lease disappears. The serve loop's sleep is only a
|
|
process-efficiency detail; restart cannot become a second eligibility owner.
|
|
The shared preparation primitive reloads the persisted state and refuses every
|
|
grant before that deadline, so `serve`, `once`, and crash/restart do not need
|
|
separate cooldown opinions.
|
|
|
|
One Heartbeat coordinator turn owns at most one resident grant. Grant issuance
|
|
first loads every persisted grant and refuses if any grant already names the
|
|
requesting schedule/action, whether consumed or not. It also refuses any other
|
|
unconsumed grant plus prepared or active Self authority, then atomically advances
|
|
the singleton `ResidentSelfState` revision with the exact pressure-to-grant
|
|
transition. Persisted grant identity is the lifetime cardinality fence; the
|
|
state-envelope CAS is the concurrency fence. Completion, cancellation, cooldown
|
|
expiry, restart, or later pressure cannot restore grant authority to the same
|
|
Heartbeat turn. Pressure arriving after that turn spent its grant stays pending
|
|
until Heartbeat consumes the exact terminal acknowledgement and schedules a
|
|
different coordinator turn.
|
|
|
|
Each `ResidentSelfHeartbeatGrant` owns its irreversible terminality. Completion
|
|
and cancellation write the exact grant's terminal timestamp and status in the
|
|
same snapshot-fenced CAS that clears its active lease. Pending-grant selection
|
|
and Heartbeat issuance read that grant-owned fact before considering the mutable
|
|
`consumed_at_millis` marker. `ResidentSelfTerminalAck` is no longer a launch
|
|
authority; it is Heartbeat-facing notification and provenance. Its absence or
|
|
qualified lifecycle retirement cannot resurrect a grant. The consumed marker
|
|
proves preparation consumed launch authority; clearing it cannot reopen a
|
|
terminal grant after completion, cancellation, restart, stale-envelope
|
|
resolution, or marker regression.
|
|
|
|
Imagination candidate time is part of that causal contract. A candidate must
|
|
have a valid RFC3339 timestamp at or after its request timestamp. A
|
|
well-shaped candidate from before the request cannot close resident authority.
|
|
|
|
Typed resident launches run the bounded coordinator in planning mode so an
|
|
ordinary operator objective cannot silently become actuation. Request-owned
|
|
lanes that already carry their own authority therefore act through exclusive
|
|
startup handlers before the generic planning loop: Imagination consideration,
|
|
admitted model-direction consideration, and proposal-bound Modeling each load
|
|
their exact request and launch only that request's worker. Proposal Modeling
|
|
must not depend on the later generic `launchModeling` action loop; planning mode
|
|
intentionally stops before that loop actuates. Its startup handler creates the
|
|
exact `RepoFrontierProposalModelingLaunchBinding` that resident fulfillment
|
|
then verifies.
|
|
|
|
Role tool authority belongs to the role-scoped adapter, not to resident Self.
|
|
Resident preparation therefore does not append a blanket `--no-auto-tools`:
|
|
Modeling and Eyes must be able to inspect their Body through the adapter's
|
|
read-only grants, while the adapter still refuses tools outside the launched
|
|
organ contract. Live v41 proved the distinction: tool-starved Modeling twice
|
|
returned an empty non-typed payload; the same bounded recovery with native
|
|
tools produced a grounded typed result.
|
|
|
|
Output shape must also match launch authority. Ordinary Modeling with no typed
|
|
proposal, claim-repair, or verdict request exposes only node/edge evolution in
|
|
its output schema. Frontier operations remain available only behind the typed
|
|
authority fields whose exact identities Mind validates. This moves the first
|
|
line of defense from a prose warning plus downstream rejection into the model's
|
|
declared output contract; Mind remains the final admission owner.
|
|
|
|
Live v42 proves that contract end to end: ordinary resident Modeling received
|
|
read-only source tools, grounded its map in inspected repository paths, emitted
|
|
only generic node/edge evolution, and reached Mind RepoModel admission. The next
|
|
split is downstream. CRRC still derives resumability from the thread state's
|
|
durable investigation checkpoint, while Modeling acceptance commits RepoModel
|
|
admission plus observation/evidence state and does not establish that
|
|
checkpoint. Consequently accepted Modeling can leave `prepareCheckpoint` true
|
|
and trigger another generic Modeling launch. Neither generic `statePatch` nor
|
|
the worker may become a second checkpoint owner. A typed proposal now asks the
|
|
frontier-planning circuit to choose one authority: either Mind admission derives
|
|
the continuity checkpoint deterministically from accepted RepoModel evidence,
|
|
or CRRC consumes canonical RepoModel admission directly. Canonical Imagination
|
|
and dedicated Mind must adopt the choice before Hands changes the seam.
|
|
|
|
Fresh v49 proves the current planning path through canonical Imagination and
|
|
dedicated Mind adoption. Its six safe paths are the complete implementation
|
|
owner set at that revision; the previously named vendored app-server owner does
|
|
not exist. The route is nevertheless preserved as incomplete evidence because
|
|
the machine itself lacked the newly required relinquishment transaction when
|
|
Mind adopted that plan. Historical route authority is never widened after the
|
|
fact.
|
|
|
|
The live repair boundary is split deliberately. `hands_gateway.rs` defines the
|
|
immutable refusal receipt. `runtime_spine.rs::relinquish_repo_frontier_hands_route`
|
|
requires exactly one still-current route/authority/intent/review/grant chain,
|
|
requires at least one safe missing path outside the adopted scope, and refuses
|
|
to run after patch, command, commit, or PR consequences exist. Hands attests
|
|
inability; it does not revise RepoModel. In the same compare-and-swap, Mind
|
|
writes its review and admission receipts, retires the exact frontier through
|
|
`RepoModelPatchPurpose::RelinquishFrontierRoute`, emits the next Modeling
|
|
projection obligation, and records the companion relinquishment receipt. The
|
|
route and authority remain immutable historical evidence. Their old
|
|
model revision/hash can no longer validate after the retirement admission, so
|
|
they are structurally unable to authorize edits. Native status projects the
|
|
latest relinquishment; `epiphany-hands-action record-refusal` is the operator
|
|
mouth. Generic Modeling admission explicitly rejects this Mind-owned purpose,
|
|
and the full consequence/Soul path remains the only route to a `Resolved`
|
|
frontier.
|
|
|
|
Planning failure has two adjacent authorities. The generic runtime job owns
|
|
process and transport terminal status. The typed role result owns what Self may
|
|
infer about a faculty outcome. `runtime_repo_frontier_planning_lifecycle` reads
|
|
the latter by exact planning request or launch job identity; it deliberately
|
|
does not treat an arbitrary failed process as an Imagination judgment. A worker
|
|
adapter that rejects a malformed planning candidate must therefore persist both
|
|
receipts: the generic failed job and a non-executable typed Imagination result
|
|
with `item_error`, exact launch job identity, and no candidate cargo. Without
|
|
that projection, a dead failed job remains `ImaginationRunning` and the current
|
|
planning request has no lawful review or retry transition. Native interrupt is
|
|
not the missing owner: it may stop or block a binding, but it cannot fabricate
|
|
the faculty result that Self's lifecycle consumes.
|
|
|
|
The repair must not collapse retry scheduling into the semantic planning
|
|
request. The current request ID is a deterministic function of runtime, thread,
|
|
model, and frontier identity; it describes *what* is being planned. A retry is
|
|
an attempt to execute that same authority, not a new semantic request and not a
|
|
mutation of the old launch receipt.
|
|
|
|
- Owner: the model adapter owns syntactic ingress and must canonicalize
|
|
set-shaped candidate fields such as safe paths before validation. Ordering is
|
|
serialization, not Imagination authority. Mind still owns whether the
|
|
resulting canonical paths stay within the request ceiling.
|
|
- Owner: the model adapter also owns one non-executable typed role failure when
|
|
candidate parsing or validation fails. It binds the exact worker launch job,
|
|
carries `item_error`, carries no candidate or foreign authority cargo, and is
|
|
adjacent to—not replaced by—the generic failed runtime-job receipt.
|
|
- Owner: Self owns attempt scheduling. An explicit reviewed failure may
|
|
authorize a new immutable attempt for the same semantic planning request.
|
|
Attempt identity and launch binding must be unique and monotonic; the prior
|
|
launch and failure remain immutable evidence.
|
|
- Derived state: planning lifecycle reads the latest lawful attempt while
|
|
retaining earlier failures. `ImaginationFailed` is a review boundary, not an
|
|
implicit retry and not a terminal judgment on the frontier itself.
|
|
- Forbidden writers: native interrupt cannot author faculty failure; generic
|
|
job status cannot become Imagination truth; a new launch cannot overwrite the
|
|
old binding; and retry cannot mint a new model/frontier authority or bypass
|
|
the current request's Body hashes.
|
|
- Negative checks: malformed output yields both failure receipts; no retry is
|
|
launchable before explicit failure review; exactly one next attempt becomes
|
|
launchable afterward; stale or substituted review identity is refused; prior
|
|
failed attempts cannot later supply a candidate or override the successful
|
|
attempt.
|
|
|
|
Live v50 exposed a missing-context fault at the Imagination boundary. Runtime
|
|
spine already enforces that every candidate `safe_paths` entry equals an
|
|
immutable planning `source_scope` entry or descends from one. The model-facing
|
|
schema described only a non-empty string array, and the runtime output contract
|
|
asked for identity echo without stating the ceiling. Two consecutive canonical
|
|
Imagination attempts therefore expanded scope and failed closed with no
|
|
candidate cargo. The repair belongs at context ownership: the schema and
|
|
runtime contract now state that safe paths are a sorted, duplicate-free
|
|
narrowing of source scope, and adjacent useful files belong in stop conditions.
|
|
The validator remains unchanged and Mind retains final admission authority.
|
|
|
|
Fresh v51 moved the same immutable planning authority past that ceiling and
|
|
exposed the next retry invariant. Self correctly names attempt zero
|
|
`repo-frontier-planning-launch-<request>` and later immutable attempts
|
|
`repo-frontier-planning-launch-<request>-attempt-<ordinal>`. Result validation
|
|
nevertheless required the attempt-zero record ID for every successful result.
|
|
Consequently failures and reviews could schedule retries, but no retry could
|
|
ever become a valid Imagination result. Validation now derives the expected
|
|
record ID from the persisted binding's attempt ordinal. The regression test
|
|
proves failure, explicit review, suffixed retry binding, successful result
|
|
persistence, and transition to `ImaginationResultReady` without relaxing any
|
|
other causal identity.
|
|
|
|
Fresh v52 then proved that full retry path live: the same planning authority
|
|
produced a valid typed candidate, dedicated Mind adopted it, RepoModel advanced
|
|
to revision 5, and the substrate derived `Hands=true`. A separately launched
|
|
proposal-bound Modeling result became stale at that admission and was correctly
|
|
rejected. Coordinator action ordering nevertheless treated its reviewed failure
|
|
as a demand for a new proposal before consulting the newer actionable Hands
|
|
frontier. This let stale worker history preempt current Mind authority. The
|
|
coordinator now excludes exactly the state `(reviewed proposal failure, current
|
|
Hands frontier)` from stale-result recovery, allowing the existing Hands branch
|
|
to own the decision. Without a Hands frontier, the consumed proposal still
|
|
fails closed at `awaitFrontierProposal`; ordinary non-proposal failures still
|
|
route back to Modeling.
|
|
|
|
## Supervisor execution-amendment authority
|
|
|
|
Owner: Mind owns a single-use repair when an immutable adopted plan contains a
|
|
non-executable command that cannot bind an already-observed Hands consequence.
|
|
The original Imagination plan and Self route remain immutable evidence.
|
|
|
|
Inputs: one exact current route, the exact current frontier-item hash, hashes of
|
|
the original action and command, authenticated supervisor actor/command/admission
|
|
and packet provenance, one replacement action and command, rationale, and an
|
|
operator-owned timestamp.
|
|
|
|
Outputs: one new RepoModel revision plus Mind review, admission, execution-
|
|
amendment, and Modeling-projection receipts in one compare-and-swap. Self must
|
|
derive a fresh route from the amended model; the old route cannot become current
|
|
again. Hands command receipts bind `effective_command`, and the gate projects
|
|
both original and effective values for inspection.
|
|
|
|
Forbidden writers: generic Modeling admission cannot carry the amendment
|
|
operation; Hands cannot substitute a command; a stale route cannot be amended;
|
|
and an already-amended plan cannot be amended again. The amendment is not a
|
|
repair loop and does not erase failed Soul launches or historical Hands receipts.
|
|
|
|
Verification layer: focused derivation tests prove exact success, original-plan
|
|
preservation, single-use refusal, and generic-purpose refusal. The Hands receipt
|
|
test proves a mismatched stated command leaves the store byte-identical before
|
|
the exact command succeeds. Live v53 now proves the amended route through exact
|
|
Hands receipts and an accepted Soul result at thread-state revision 31.
|
|
|
|
Self resolves the complete Soul lifecycle before generic CRRC/regather routing.
|
|
A pending or running Soul job routes only to result observation. A completed,
|
|
accepted Soul result routes according to its verdict: bounded missing evidence
|
|
may return to Hands, while an accepted pass or non-pass awaiting model
|
|
incorporation routes Modeling. CRRC cannot mint a replacement Hands gate while
|
|
Soul is running or after Soul has established the newer causal boundary.
|
|
|
|
## Soul provenance classification for adopted frontier plans
|
|
|
|
Owner: the immutable `RepoFrontierPlanDecisionReceipt` owns the provenance of
|
|
an adopted plan. Its Mind-worker result ID is an audit reference, not an organ
|
|
classifier. All new plan-decision RepoModel admissions therefore carry
|
|
`RepoModelAdmissionSource::FrontierPlanDecision`, regardless of whether Mind or
|
|
an authenticated operator supplied the decision.
|
|
|
|
Soul selects and verifies provenance by typed route anatomy. A non-empty
|
|
`frontier_plan_decision_id` requires the exact decision receipt, Adopt verdict,
|
|
admission receipt binding, pre-admission model revision/hash and frontier
|
|
identity, admission-purpose planning/candidate identity, post-admission route
|
|
model revision/hash, and exact Mind-worker result/job or authenticated-operator source. Only an
|
|
ordinary worker-result admission may require the Modeling acceptance,
|
|
Mind-state-commit, and gateway-review chain. Execution amendments retain their
|
|
separate exact receipt chain.
|
|
|
|
Derived state: `RepoModelAdmissionReceipt.result_id` remains inspectable but no
|
|
longer decides which organ admitted the model. Existing v53 evidence is not
|
|
rewritten: its explicit `frontier_plan_decision_id` selects the correct typed
|
|
validation path despite the legacy generic `WorkerResult` source tag.
|
|
|
|
Forbidden writer: Soul cannot infer Modeling from result presence, and a plan
|
|
decision cannot bypass provenance merely because its admission and review
|
|
contain a model-produced result. Missing, substituted, non-Adopt, or
|
|
route-mismatched decisions fail closed before worker launch. The decision's
|
|
pre-adoption frontier-item hash is deliberately not equated with the route's
|
|
post-adoption frontier-item hash; Mind's admitted patch is the transition that
|
|
changes that item.
|
|
|
|
## Long-lived runtime root-session ownership
|
|
|
|
- Owner: Runtime Continuity owns the canonical `epiphany-main` root session;
|
|
coordinator launches consume that identity but cannot decide its lifetime.
|
|
- Inputs: the exact typed root session, its deterministic Continuity completion
|
|
event, archive absence, terminal job set, repair timestamp/reason, and the
|
|
full runtime snapshot.
|
|
- Outputs: ordinary session closure refuses the root without changing bytes. A
|
|
narrow repair replaces only an invalidly Completed root as Active and deletes
|
|
only its exact completion event in one snapshot-fenced CultCache mutation.
|
|
- Derived state: `active_sessions` is status projection, not leaked-work
|
|
authority. Open job status owns whether work is live.
|
|
- Forbidden writers: generic close-session, retention, operator tidiness, and
|
|
session-count heuristics cannot terminalize or recreate the root. A repair
|
|
cannot infer authority from timestamps, a missing event, an archive, or an
|
|
open job.
|
|
- Shared paths: coordinator heartbeat preparation and all later cognitive jobs
|
|
use `EPIPHANY_RUNTIME_ROOT_SESSION_ID`; the packaged runtime CLI delegates to
|
|
the same strict repair primitive.
|
|
- Cut line: the production string literal and generic closure authority are
|
|
removed. The preserved c007 invalid completion is repaired only after this
|
|
exact source is packaged and authenticated.
|
|
- Verification: generic closure leaves root bytes unchanged; incomplete or
|
|
hostile completion families refuse; exact repair removes the event, restores
|
|
Active, accepts a subsequent job, replays idempotently, and loses a concurrent
|
|
full-snapshot fence rather than merging authority.
|
|
|
|
Resident coordinator Body readiness separately proves the required external
|
|
`git` executable before singleton acquisition or pressure consumption. Missing
|
|
Body capability is a startup refusal, not a reason to hammer one immutable
|
|
typed request through process-failure retries.
|
|
|
|
## Exact release build cache ownership
|
|
|
|
The root release-bundle manifest owns release profile policy. Measured on the
|
|
exact 21-binary bundle after touching `epiphany-core/src/lib.rs`, release
|
|
incremental reduced rebuild time from 7m04s to 31.47 seconds and is therefore
|
|
enabled in `[profile.release]`. An independent `rust-lld` trial reached 29.34
|
|
seconds, only 2.13 seconds faster, while depending on host-specific Windows
|
|
linker discovery; it remains an experiment rather than repository policy.
|
|
Fresh-target timings (1226.69 seconds with the default linker, 1097.14 with
|
|
`rust-lld`) calibrate clean-build cost but do not override the iteration-path
|
|
decision.
|
|
|
|
Release construction has two serialized cache authorities. The graph cache is
|
|
identified only by the frozen root `Cargo.lock`, target triple, and installed
|
|
toolchain fingerprint. It owns Cargo outputs and holds an exclusive graph lock
|
|
through compilation and binary copying. Source commit identity does not
|
|
partition this cache and never becomes derived build authority.
|
|
|
|
The source cache is identified by canonical repository identity. It owns one
|
|
persistent detached worktree so unchanged tracked files retain stable paths and
|
|
timestamps across commits. Before every build it exclusively locks that source,
|
|
pre-cleans cached submodules, checks out the exact parent commit, updates only
|
|
changed submodule pins without forcing unchanged worktrees, re-cleans the main
|
|
tree and recursive submodules, and verifies repository ownership, HEAD, status,
|
|
and submodule identity with long-path-aware Git commands. It remains locked
|
|
until the release has copied and witnessed every binary. No concurrent packager
|
|
can mutate source or graph outputs during that interval. Submodule mtimes and
|
|
Cargo fingerprints are cache mechanics, never release identity.
|
|
|
|
The release witness remains the only packaged-output authority: exact commit,
|
|
runtime, target, toolchain, sorted binary roles, lengths, and byte digests.
|
|
Caches accelerate reconstruction; they cannot certify it.
|
|
|
|
Exact `0ef0c0b8` is the accepted no-force source-preparation proof. The
|
|
source-changing pass compiled only six first-party crates and no vendored or
|
|
external crate, reducing Cargo time from `a4756857`'s 11m04s to 7m19s. An
|
|
identical replay completed in 5.8s wall / 0.77s Cargo and reproduced release
|
|
`sha256-032af7baa251caf32c1843eeace8990001557fe916988d8d1e2f0a27093a2b36`
|
|
and witness
|
|
`sha256-c0b8dbac33f821e9adc15218ea22a9133e0b9ea78f1981916b403fcad79f3d3b`
|
|
exactly across all 24 binaries. Receipts are under
|
|
`.epiphany-run/linux-package-0ef0c0b8` and its `-warm` sibling.
|
|
|
|
Exact `8bb8b7d3` is the steady-state acceptance proof. After the stable source
|
|
cache's one-time local population, a documentation/state-only successor kept
|
|
the same graph and checkout identity; Cargo completed the exact release build
|
|
in 29.92 seconds. Independent witness inspection still authenticated all 21
|
|
binaries and rejected any notion that cache reuse could substitute for release
|
|
identity.
|
|
|
|
The release publisher executable is part of this mechanism and must be
|
|
bootstrapped after its cache implementation changes. On 2026-08-08 an older
|
|
publisher was still launching an ephemeral `ep-src-*` checkout and a
|
|
commit-partitioned target directory; it was terminated after 12.8 minutes while
|
|
still compiling. Rebuilding the publisher from exact `8a9439ca` took 3m49s.
|
|
The current publisher then reused the persistent source/graph authorities and
|
|
packaged the 21-binary core-change release in 6m46s of Cargo work. An identical
|
|
warm package completed Cargo in 1.48s and the full hash/copy/witness path in
|
|
18.669s. Benchmark command lines and resolved cache paths are therefore part of
|
|
release-cache evidence; source code alone does not prove the active packager.
|
|
|
|
The cache does not erase crate invalidation. Exact `58f42b6a` changed
|
|
`epiphany-core` and required 6m50s of Cargo work; its successor `5f09d35a`
|
|
changed only `epiphany-mvp-coordinator`, reused the core artifact, and completed
|
|
Cargo in 29.58s. The current iteration bottleneck is the broad recompilation
|
|
and relink fan-out of the monolithic core crate. Incremental release reuse,
|
|
linker choice, or a deliberate authority-based crate split must be benchmarked
|
|
as separate release-contract changes rather than mixed into a cognition fix.
|
|
Exact `ecfff489` confirmed the slow case at 7m04s of Cargo work. The active
|
|
release rustc command had no incremental directory, and the root bundle built
|
|
all 21 binaries. Release incremental compilation and `rust-lld` therefore have
|
|
separate measurable hypotheses; an authority-based core crate split remains the
|
|
larger structural option if those two changes do not materially reduce edits to
|
|
the current monolith.
|
|
|
|
Exact `6f3cdc61` sharpened the remaining ownership defect. The stable source and
|
|
graph caches were active and third-party dependencies stayed warm, yet one core
|
|
schema/routing change rebuilt the four first-party libraries and all 21 root
|
|
release binaries in 6m59s. The root `epiphany-release-bundle` is one Cargo
|
|
package whose package-wide dependency list includes `epiphany-core` and every
|
|
adapter/runtime crate; 19 of its 21 binary sources directly import
|
|
`epiphany_core`. A changed core artifact therefore invalidates almost the whole
|
|
release bundle even when the changed authority belongs only to coordinator
|
|
routing.
|
|
|
|
The intended split follows authority rather than file size. Stable coordinator
|
|
state/view contracts must live below a volatile Self policy leaf. Runtime-spine
|
|
persistence, Persona/transport, repository observation, and release tooling
|
|
must not depend on that leaf. Only status/coordinator consumers should relink
|
|
when Self policy changes. Removing the root mega-package eventually requires
|
|
the release packager to build and witness binaries from their owning packages;
|
|
the witness remains the cross-package release authority. A compatibility
|
|
re-export from `epiphany-core` would preserve the invalidation edge and is not a
|
|
completed split.
|
|
|
|
Exact `0f0b006d` tested the tempting manifest-only cut and rejected it. The
|
|
packager grouped binaries under three independently locked owner manifests and
|
|
shared one target directory. Cold core completed in 8m02s; the OpenAI owner
|
|
then resolved its own graph and began compiling `epiphany-core` again. The run
|
|
was terminated at 16m53s before the tool owner could repeat the same wound, and
|
|
`a1a43892` reverted the cut. Separate owner lock universes are therefore not the
|
|
crate split. The viable design must keep one Cargo dependency graph while
|
|
moving volatile coordinator policy and the coordinator/status binary consumers
|
|
out of the stable core compilation unit.
|
|
|
|
The local replacement implements that single-graph boundary. Stable coordinator
|
|
DTOs live in `surfaces/coordinator_contract.rs` and remain available to core
|
|
state/projection organs. Routing functions live in the separately compiled
|
|
`epiphany-self-policy` leaf and are not re-exported through core. Core disables
|
|
autobin discovery and explicitly declares all 74 retained non-coordinator
|
|
binaries. The root release graph exposes `epiphany-mvp-coordinator` only behind
|
|
optional feature `coordinator-runtime`; that feature alone enables the policy
|
|
dependency. The packager first builds ordinary bins without the feature, then
|
|
builds only coordinator with it under the same root lock and target directory.
|
|
Target-cache identity depends on target and toolchain, not lockfile bytes;
|
|
Cargo fingerprints changed dependencies, while `--locked` and the release
|
|
witness retain build and publication authority.
|
|
|
|
Launch latency is a separate whole-store-read wound. The live runtime store was
|
|
about 40 MiB, and post-Soul Modeling launch took roughly 50-90 seconds before
|
|
the detached model process appeared. `launch_role` currently reads coordinator
|
|
state, assembles memory context, reloads RepoModel shape, commits/reloads the
|
|
Soul-to-Modeling request and route, reads telemetry, writes telemetry, and then
|
|
commits the job through path-based helpers. Each helper may independently
|
|
construct and pull the append-only CultCache store. The next launch-path cut is
|
|
one transaction-scoped typed read view plus explicit write boundaries, with
|
|
phase timings at the same owner seams. A cache wrapper that leaves repeated
|
|
whole-store pulls authoritative would merely hide the smell.
|
|
|
|
## Runtime-spine keyed storage ownership
|
|
|
|
The live 83 MiB runtime spine still uses
|
|
`SingleFileMessagePackBackingStore`. Every coordinator launch opens a complete
|
|
snapshot and its identity-scoped state/job CAS reads, decodes, sorts, encodes,
|
|
and replaces that whole file. Fresh v53 timings isolate the cost: state load
|
|
79ms, dynamic context 66ms, role augmentation 1.053s, job commit 51.482s,
|
|
total 52.680s. Prompt assembly is not the bottleneck.
|
|
|
|
CultCache already owns the standard replacement:
|
|
`RedbMessagePackBackingStore` stores each polymorphic `(type, key)` identity as
|
|
an independent MessagePack row and performs the same exact batch-CAS checks in
|
|
one redb transaction. Epiphany must promote that existing backend rather than
|
|
inventing a cache, journal, sidecar, or second persistence protocol.
|
|
|
|
Owner: one runtime-spine storage binding selects the physical backend for the
|
|
entire store. All runtime state, jobs, results, events, Mind admissions,
|
|
Hands/Soul receipts, and coordinator transactions resolve through that owner.
|
|
|
|
Migration inputs are an immutable single-file snapshot, its byte digest and
|
|
entry count, an empty destination, and the destination file identity. The
|
|
output is one redb store plus a typed migration receipt binding source hash,
|
|
sorted envelope identities/digests, destination identity, and completion time.
|
|
The old `.cc` file becomes sealed evidence and cannot remain a live fallback.
|
|
|
|
Forbidden writers: no runtime or coordinator helper may instantiate
|
|
`SingleFileMessagePackBackingStore` directly after a redb binding is selected;
|
|
no path may silently infer a backend from whichever decoder succeeds; and no
|
|
dual-write or reconciliation loop may create two authorities. All direct and
|
|
programmatic launch/result/admission paths use the same backend factory and CAS
|
|
primitive.
|
|
|
|
Negative verification must prove stale CAS refusal, immutable identity
|
|
collision refusal, migration equivalence for every envelope, absence of writes
|
|
to the sealed source, crash-safe destination recovery, and a live-sized job
|
|
commit that no longer scales with total historical store bytes.
|
|
|
|
Historical transaction benchmarking after implementation corrected the causal
|
|
map. Exact surviving batches around live job `972f4e31` take roughly
|
|
0.8-1.0s through the legacy snapshot backend and 0.02-0.03s through keyed redb.
|
|
Keyed CAS is a valid secondary optimization, but it cannot explain or remove a
|
|
51.482s coordinator bucket by itself. Live migration is therefore not yet
|
|
authorized by performance evidence.
|
|
|
|
The Modeling-only pre-transaction owner is Repository Body observation. It
|
|
builds two isolated Git indexes/trees and two complete raw SHA-256 manifests,
|
|
then admits only exact equality. On the current 3,994-file Body, an authenticated
|
|
release observation took 92.30s. The isolated Git add/write-tree portion takes
|
|
about 1.62s; serial raw file reads and metadata dominate. Manifest entries are
|
|
independent after typed index parsing, so bounded parallel construction changes
|
|
only execution order. Per-file before/after metadata checks, raw hashes,
|
|
deterministic sorting, manifest-root derivation, the second full scan, and exact
|
|
equality remain owners. The measured parallel observation is 49.52s. A future
|
|
cut that reuses hashes or weakens the second scan requires a new explicit
|
|
freshness authority; it must not be smuggled in as a cache.
|
|
|
|
## Cross-host Persona consequence nerve
|
|
|
|
Owner: Starfire Persona owns cognition, Interpreter effects, and the signed
|
|
`epiphany.persona_discord_delivery_request.v0`. Yggdrasil Bifrost owns Discord
|
|
actuation, its private execution journal, and the signed
|
|
`bifrost.persona_discord_delivery_receipt.v0`. The existing Starfire permit
|
|
issuer owns the final five-second consequence authorization from the canonical
|
|
CultMesh brake.
|
|
|
|
Inputs: one exact signed Persona request, one Bifrost trust binding for the
|
|
admitted target runtime/Persona/channel, one purpose-specific Bifrost permit
|
|
request identity, the canonical Starfire brake document, and the two
|
|
purpose-specific public receipt/permit anchors. Runtime identity must be data
|
|
bound by those anchors and deployment configuration; `epiphany-yggdrasil` is no
|
|
longer a valid compiled assumption while cognition resides on Starfire.
|
|
|
|
Signal path: Epiphany sends the signed request as a typed CultNet raw document
|
|
over RUDP. Bifrost verifies and persists it before processing. Immediately
|
|
before Discord actuation Bifrost requests the existing short-lived permit from
|
|
Starfire and durably records permit consumption before the provider call.
|
|
Bifrost returns the terminal signed receipt as a separately typed CultNet raw
|
|
document. Epiphany persists and verifies that receipt before creating delivery
|
|
evidence and terminalizing the heartbeat request.
|
|
|
|
Derived state: RUDP connection/ack state is transport-only. The request is an
|
|
inert proposal until a permit exists. The permit authorizes one bounded attempt
|
|
but is not delivery evidence. Only the signed Bifrost receipt can prove
|
|
`completed`, `failed`, or terminal-`unknown` consequence.
|
|
|
|
Forbidden writers: SFTP may not copy either live `.cc` store; Bifrost private
|
|
execution state and Discord credentials may not cross to Starfire; Epiphany
|
|
cannot manufacture a receipt; Bifrost cannot manufacture or extend a permit;
|
|
and an `unknown` journal/receipt cannot be retried automatically. Running the
|
|
Bifrost mouth on Starfire would move crossing authority and is not an accepted
|
|
shortcut.
|
|
|
|
Shared paths: first delivery, restart recovery, duplicate request replay,
|
|
expired request, braked permit refusal, provider failure, and terminal receipt
|
|
replay all use the same typed request/permit/receipt identities. The local
|
|
stores are durable endpoint state beneath the network contracts, not the
|
|
crossing themselves.
|
|
|
|
Verification layer: Rust/TypeScript interop fixtures must prove exact tuple and
|
|
wire compatibility; RUDP smokes must prove request persistence, permit
|
|
correlation, signed receipt return, replay idempotence, and substituted
|
|
runtime/channel/signature refusal. Live proof requires one reserved Persona
|
|
turn to reach model terminal, signed request, released-brake permit, Discord
|
|
message ID/URL, signed Bifrost receipt, Epiphany delivery evidence, and
|
|
heartbeat terminal receipt without exposing private state.
|
|
|
|
## Verdict-bound Modeling output authority
|
|
|
|
Live v53 exposed a missing typed boundary after Soul acceptance. The
|
|
coordinator committed an exact `RepoFrontierModelingRequest` and rendered it in
|
|
dynamic context, but the persisted worker launch did not carry that identity.
|
|
The model runtime therefore exposed the generic Modeling schema, and a worker
|
|
could choose ordinary Evolution before Mind rejected it. Context was correct;
|
|
schema authority was not.
|
|
|
|
Owner: the typed worker launch carries the exact
|
|
`repo_frontier_modeling_request_id` returned by the request-commit boundary.
|
|
The model runtime specializes its provider schema from that field: exact ID
|
|
echo, verdict-incorporation purpose, non-empty evidence, and exactly one
|
|
`revise_frontier` operation. Prompt text is derived explanation, not authority.
|
|
Ordinary Modeling retains its generic schema. Mind still validates route,
|
|
verdict receipt, frontier identity, hashes, evidence, and mutation content at
|
|
admission. The old path can no longer spend a model turn producing Evolution
|
|
under verdict authority and rely on a later rejection to discover the mismatch.
|
|
|
|
Exact `61e8be38` proved that operation-level restriction is necessary but not
|
|
sufficient. The inherited frontier-item output schema omitted `adopted_plan`.
|
|
A schema-conforming `revise_frontier` therefore implicitly replaced an adopted
|
|
plan with absence, and Mind correctly rejected it as alteration of execution
|
|
anatomy. Verdict Modeling launch authority must carry both the exact request
|
|
and exact routed item, not merely request identity. The provider schema must
|
|
const-bind all identity anatomy, including the complete adopted plan, while
|
|
leaving only status, evidence references, gap, and update timestamp writable.
|
|
The completed worker result is immutable invalid evidence and cannot be made
|
|
valid by changing admission after the fact. Supersede it only when the corrected
|
|
launch/schema boundary is ready, then run one new inference.
|
|
|
|
## Launch-owned Mind decision identity (2026-08-09)
|
|
|
|
Owner: the authenticated `RepoFrontierPlanMindContextProjection` in the worker
|
|
launch owns Mind request, planning request, Imagination result, candidate, and
|
|
candidate-digest identity. The Mind model owns only the judgment and rationale;
|
|
its JSON echoes are formatting cargo and cannot select executable identity.
|
|
|
|
Current mechanism: `complete_worker_job_from_assistant_text` passes the exact
|
|
launch projection to `role_worker_result_from_ingress`. The adapter constructs
|
|
`RepoFrontierPlanMindDecision` identity fields and the outer request echo from
|
|
that projection. A decision without Mind launch context becomes a typed item
|
|
error. `put_runtime_role_worker_result` retains its exact persisted-request,
|
|
launch-binding, launch-document hash, role, runtime, thread, and candidate
|
|
validation; no admission check was weakened.
|
|
|
|
Forbidden writer: `RoleWorkerResultIngress` no longer deserializes Mind identity
|
|
fields into authority. A model may print counterfeit IDs, but they are ignored.
|
|
This replaces the live failure mode where two validly launched resident Mind
|
|
attempts failed closed because the model imperfectly recopied long immutable
|
|
identities. The failed results remain sealed evidence and cannot be rewritten.
|
|
|
|
Verification layer: `mind_ingress_derives_immutable_identity_from_launch_context`
|
|
feeds five substituted identities and proves the emitted typed decision carries
|
|
only the canonical launch identities. All 15 `epiphany-openai-runtime` library
|
|
tests pass. Exact Linux package `bd96305e` live-proved the boundary: typed review
|
|
superseded failed job `8e5952fb`, authorized retry `2d2a3e8b` completed with the
|
|
canonical request and candidate identities, and Self atomically committed adopt
|
|
decision `repo-frontier-plan-decision-e7d7f3c7...`. The lifecycle is terminal;
|
|
no tools or external consequence occurred.
|
|
|
|
## Starfire package cache physiology (2026-08-09)
|
|
|
|
Owner: the persistent Docker source, graph, and Cargo-home volumes own reusable
|
|
build products. The exact release witness still owns package identity. Free disk
|
|
and cache presence are preconditions for the fast path, not release evidence.
|
|
|
|
A full `C:` disk exposed the physical failure boundary: the shared Windows
|
|
Codex target occupied roughly 276 GiB, rustc faulted with SIGBUS, and Docker's
|
|
backend also faulted until targeted Cargo cleanup restored about 252 GiB free
|
|
and only the `docker-desktop` WSL body was restarted. The recovered package
|
|
then paid a 25m12s cold release compile plus a 33.53s isolated coordinator pass.
|
|
|
|
An identical package against `epiphany-linux-package-source`,
|
|
`epiphany-linux-package-cache`, and `epiphany-linux-cargo-home` completed in
|
|
9.65 seconds wall. Cargo phases were 0.81s and 0.65s and the run reproduced
|
|
release `sha256-01dbed4b...` and witness `sha256-c3ab5a60...`. Therefore normal
|
|
shakedown iteration must retain those volumes and inspect disk/cache health
|
|
before compilation. Routine cache destruction, commit-partitioned graph caches,
|
|
or Yggdrasil builds are forbidden writers of iteration latency.
|
|
|
|
State stewardship currently sits outside that warm release surface. Building
|
|
the unshipped `epiphany-state` binary against the same exact source and graph
|
|
still recompiled a second dependency universe and took 7m11s merely to append a
|
|
typed evidence record. This is not a request for another cache. Either the state
|
|
steward must ship in the owned release graph or its narrow typed write port must
|
|
move into an already-shipped native owner; canonical Mind maintenance must not
|
|
require a second monolithic core build.
|
|
|
|
## Historical route relinquishment and CRRC fallback (retired 2026-08-18)
|
|
|
|
The adopted frontier candidate carried its own negative transition: discard the
|
|
planning draft if later admitted evidence proves the coordinated resident
|
|
circuit already exists. By Hands-gate time, canonical c005 state did prove that
|
|
circuit, while the typed receipt bodies needed to reconcile the later evidence
|
|
were outside the route's two safe paths. Hands made no file or command
|
|
consequence and emitted refusal `hands-refusal-4cd85889...` naming the missing
|
|
artifact scope. Mind-owned relinquishment `7b846272...` atomically retired route
|
|
`817bf422...`, advanced RepoModel from revision 2 to 3, and preserved the adopted
|
|
route as immutable history.
|
|
|
|
The route receipt remains immutable historical evidence. The later status
|
|
compensator that compared reorientation `updated_at` with relinquishment time
|
|
is deleted: timestamps no longer decide causal currency. Current work derives
|
|
from exact typed obligations and their request/result/decision chains. A stale
|
|
continuity projection cannot suppress or manufacture Eyes, Modeling, Planning,
|
|
Hands, or Reorientation work.
|
|
|
|
## Build runner and dependency-graph authority receipt (2026-08-09)
|
|
|
|
The persistent target is useful only when the build process names it as
|
|
`CARGO_TARGET_DIR`; mounting a volume at `/target` alone carries no authority.
|
|
One rejected invocation silently compiled into `/workspace/target` for 17m48s
|
|
before operator intervention stopped it. A cached `CARGO_HOME` must also not
|
|
cover `/usr/local/cargo`, where the image keeps its Rust proxies. The working
|
|
contract uses a separate cache mount, explicit target directory, and explicit
|
|
Rust proxy path. It rebuilt the current coordinator in 37.55s with dependencies
|
|
warm.
|
|
|
|
The root manifest now declares every first-party Epiphany crate as one Cargo
|
|
workspace and the root lockfile is the sole resolution owner. Seven child locks
|
|
and three dead child patch declarations are deleted. Vendored Codex and
|
|
CultCache are explicitly excluded because they own nested workspaces. A release
|
|
contract test rejects any omitted first-party member or regrown child lock.
|
|
|
|
`epiphany-state` stays with its narrow owner, `epiphany-core`; placing it in the
|
|
root release-bundle package was tested and rejected because package-level
|
|
dependencies would preserve the monolith. The native packager instead builds
|
|
that package/bin explicitly on its existing target and witnesses it as required
|
|
role `state-steward`. The release bundle therefore grows from 22 to 23 binaries
|
|
without creating a second graph or a duplicate executable owner.
|
|
|
|
Measured proof: the one-time workspace migration compiled first-party crates in
|
|
5m02s; the identical locked policy test then passed in 4.47s. The core-owned
|
|
state steward built in 23.20s on that graph and served a status read in 1.12s
|
|
including container startup. Eighteen release-contract tests pass. Their
|
|
one-time dev harness cost 5m33s, identical warm execution cost 4.43s, and a
|
|
subsequent packager source edit rebuilt/tested in 20.10s. Exact release witness
|
|
authority remains unchanged; a clean 23-binary package is the next boundary.
|
|
|
|
The first clean-package attempt exposed a lock migration incompatibility before
|
|
release construction. Fresh resolution selected `allocative 0.3.6` beside
|
|
vendored Starlark's older `hashbrown` integration; Rust rejected the missing
|
|
`Allocative` implementation. The lock owner now retains the previously proven
|
|
`allocative 0.3.4`, `allocative_derive 0.3.3`, and `ctor 0.1.26`. A locked
|
|
release-target check traversing Starlark through Codex login and
|
|
`epiphany-openai-auth-spine` completed successfully in 3m16s. This is lockfile
|
|
compatibility authority, not a source patch or relaxed gate.
|
|
|
|
### Single deterministic packaged build authority
|
|
|
|
The original packaged-release path invoked Cargo three times against one target
|
|
directory: the broad root binary graph, the coordinator feature graph, and the
|
|
core-owned state steward. Cargo correctly rebuilt when each command changed the
|
|
selected feature set, so the cache oscillated instead of warming. Exact source
|
|
`e9465c11` took 24m22s cold (17m03s root plus 6m38s state) and 28m30s on an
|
|
identical cached rerun (21m04s root, 34.62s coordinator, 6m42s state).
|
|
|
|
The two runs also yielded different valid authenticated releases. Twenty-one of
|
|
23 binaries were byte-identical; only the two `epiphany-openai-runtime`
|
|
binaries differed, including different ELF build IDs and code bytes. Release
|
|
incremental codegen is therefore not an admissible input to witnessed output.
|
|
|
|
`build_required_release_siblings` now has one process owner. It selects
|
|
`epiphany-release-bundle` and `epiphany-core`, selects
|
|
`epiphany-release-bundle/coordinator-runtime` once, names all 23 required
|
|
binaries explicitly. Follow-up coordinator and state-steward Cargo commands
|
|
are forbidden writers and have been deleted. The root manifest is the release
|
|
profile owner; construction no longer overrides its incremental policy through
|
|
the environment. Incremental artifacts are cache state, never witness
|
|
authority: the packaged binaries and typed witness remain the authenticated
|
|
output. All 20 focused packaged-release tests pass.
|
|
|
|
Exact source `2f2cf6f8` paid a one-time 6m47s cache migration after removing the
|
|
construction override. Its identical replay completed in 8.76s wall time with
|
|
Cargo at 0.77s and reproduced the exact 24-binary release
|
|
`sha256-6cfafa4f3918a96a9ed7c080f6b52ed9e2ed750e7fad51f83f86354c1e90033a`
|
|
and witness
|
|
`sha256-f20677a44d0e29960f43d70091cacaab182e6939220a2173c3bf449392b427d9`.
|
|
This proves deterministic no-change replay. A real core-source delta must still
|
|
beat the 5m02s `acd91e6e` baseline before the source-changing iteration fault is
|
|
closed; core ownership must not be split merely to move that proxy.
|
|
|
|
### Sole packaged executable owner
|
|
|
|
The first single-process proof exposed a deeper split. Selecting
|
|
`epiphany-release-bundle` and `epiphany-core` together compiled overlapping bin
|
|
names into the same output paths. Cargo warned that this collision may become a
|
|
hard error. The cold run took 36m55s and the identical warm run took 11.05s
|
|
(Cargo 1.26s), so graph warming was fixed, but four output files changed and the
|
|
witness did not reproduce.
|
|
|
|
Packaged executable selection now belongs only to `epiphany-release-bundle`.
|
|
It declares all 23 targets, including `epiphany-state`, from their owning source
|
|
paths and selects the core library as a dependency. `epiphany-core` binary
|
|
targets remain developer entry points; the core package is not selected as a
|
|
release writer. The forbidden state is two selected packages writing one
|
|
release filename. Nineteen focused tests prove the command contains one package
|
|
selector and no `epiphany-core` package argument. Exact warning-free Linux and
|
|
byte-identical warm witness proof remain open.
|
|
|
|
### Deterministic warm release proof
|
|
|
|
Exact source `9b8df0b4` completed the corrected package in 12m46s with no Cargo
|
|
output-collision warnings. The resulting 23-binary release is
|
|
`sha256-d13927303c957db6799135a61ce6a2899235c397b525968be0bffc3b5ad2a831`;
|
|
its witness is
|
|
`sha256-d07277cb5f142a4cc90e9364da0bd058eeba8c524eaf8c00bd9d55f088c78de0`.
|
|
Native inspection accepted exact source, inventory, sibling hashes, and private
|
|
state exclusion.
|
|
|
|
The identical warm replay used the same source, Cargo home, and graph cache. It
|
|
completed in 10.73s total with Cargo at 0.97s and reproduced the release and
|
|
witness identifiers exactly. This closes the package-speed and deterministic
|
|
artifact boundary: one workspace lock, one Cargo process, one graph, one
|
|
selected package, 23 explicit outputs, and non-incremental release codegen.
|
|
|
|
Native publication inserted the release entry and head into c005's existing
|
|
local Verse without stopping its resident process. Publication changes release
|
|
availability; it does not own executable replacement. Continuity now owns the
|
|
next boundary: supervised stop, authenticated body replacement, restart on the
|
|
same typed stores, and proof that Self resumes the existing frontier.
|
|
|
|
### Operator projection and resident topology ownership
|
|
|
|
`epiphany-mvp-status` owns read-only coordinator projection. It may execute an
|
|
already-present optional projection helper, but it cannot construct one.
|
|
Missing Heartbeat, Persona, or Void helpers therefore derive an unavailable
|
|
auxiliary panel. `--coordinator-only` omits those panels and reads the accepted
|
|
coordinator state directly; observation can no longer summon Cargo. The status
|
|
binary is an explicit release sibling so deployed operator sight is part of the
|
|
authenticated body rather than a workstation accident.
|
|
|
|
Resident Self has four distinct store roles. `release_store` authenticates the
|
|
running body; `runtime_store` owns nervous-system and coordinator state;
|
|
`local_verse_store` owns the coordination providers and brake; and
|
|
`agent_memory_store` owns Mind material. These paths may share a directory, but
|
|
they are not interchangeable. In c005, the accepted Eyes-to-Hands chain owns
|
|
the `/state/eyes-tools/` runtime, local Verse, and Mind. The main local Verse
|
|
still owns release publication. The old `/state/runtime.cc` is no longer a
|
|
resident cognition owner; it is retained evidence only.
|
|
|
|
Docker SIGTERM currently reaches `epiphany-swarm` PID 1, but `serve` owns an
|
|
unconditional loop followed by blocking `thread::sleep` and installs no signal
|
|
observer. Docker therefore escalates to SIGKILL and records exit 137. Graceful
|
|
shutdown work must assign one signal owner, make sleep interruptible, and define
|
|
how an active exact child is drained or terminalized before claiming closure.
|
|
|
|
### Release-construction bootstrap authority
|
|
|
|
Exact `f00c8279` packages the build-free status projector as the 24th binary.
|
|
The cold package compiled its one deterministic release graph in 18m44s and
|
|
produced release `sha256-a7c4c2e3...` with witness `sha256-e9984086...` without
|
|
warnings. The identical warm replay took 10.64s total, Cargo 0.92s, and
|
|
reproduced both identifiers exactly. Independent native inspection accepted
|
|
both copies. Publication changed c005's main local Verse hash from
|
|
`d88bb300...dcf0d` to `b160c610...3909` without activating the new body.
|
|
|
|
The remaining cold iteration tax precedes that graph. `epiphany-release` owns
|
|
package, inspect, and publish commands but imports all implementation through
|
|
`epiphany-core::packaged_release`; obtaining the publisher therefore compiled
|
|
the monolithic core for 7m57s before the package command compiled core again.
|
|
Release construction and filesystem witness inspection need a narrow owner.
|
|
Live CultMesh publication is a distinct authority and may continue through the
|
|
core document catalog. The deletion line is the core-owned construction module:
|
|
construction logic must not remain duplicated behind a new wrapper, and a
|
|
bootstrap packaging tool must not depend on monolithic `epiphany-core`.
|
|
|
|
Commit `76afdaf0` completes that cut. `epiphany-release-construction` owns the
|
|
typed entries plus package/build/hash/copy/witness/inspect path. Core re-exports
|
|
those contracts and owns only CultMesh publication, load, and authenticated
|
|
lookup. The standalone `epiphany-package` CLI therefore cannot publish live
|
|
state and its dependency graph contains no `epiphany-core`. The shipped
|
|
`epiphany-release` CLI retains publication and consumes the same constructor
|
|
types. All 19 moved tests pass and the core test harness compiles.
|
|
|
|
On the existing Starfire dependency cache, exact cold bootstrap fell from
|
|
7m57s to 30.24s and warm bootstrap to 4.40s. Exact `76afdaf0` packaging produced
|
|
release `sha256-30caab9e...a1aec` and witness `sha256-89c2ad60...fdecf` in
|
|
12m16s of Cargo work without warnings. Its warm replay took 10.16s total, Cargo
|
|
0.82s, and reproduced both identifiers. Independent inspection accepted both.
|
|
The packaged full publisher accepted the narrow tool's witness and advanced the
|
|
resident release Verse hash from `b160c610...3909` to `83ed430f...ae81`.
|
|
|
|
Routine operator sight must consume an already-built `epiphany-state` binary.
|
|
On Starfire, the shared Codex target is the developer/operator binary cache;
|
|
falling back to `cargo run` without naming it created a second repository-local
|
|
debug graph and turned a read-only status check into 61 seconds of compilation.
|
|
The existing shared binary returned the same typed state in 37.9ms. This is an
|
|
operator-instruction ownership fault, not evidence that the deterministic
|
|
release graph should be split. Exact-source release worktrees are likewise
|
|
forge-owned: transient fixture code may not be written into them and then
|
|
"restored," because byte restoration does not restore Cargo fingerprint state.
|
|
|
|
## Continuity retention authority map
|
|
|
|
Retention is not a janitor allowed to erase old-looking rows. Each store owner
|
|
may retire only authority that its live readers can no longer interpret as
|
|
work.
|
|
|
|
### Heartbeat artifacts
|
|
|
|
- **Owner:** Heartbeat owns pulse artifact retirement and its typed
|
|
plan/receipt chain.
|
|
- **Inputs:** exact pulse directories outside the newest configured window.
|
|
- **Outputs:** a CAS-published plan and receipt naming the exact members.
|
|
- **Derived state:** pulse history is diagnostic evidence; the in-store history
|
|
projection is independently capped at 128 entries.
|
|
- **Forbidden writers:** filesystem cleanup outside Heartbeat must not decide
|
|
pulse liveness or manufacture retention receipts.
|
|
- **Deletion line:** only plan members that still match their witnessed type,
|
|
path, and digest may be removed. Symlinks, non-directories, drift, and unknown
|
|
members fail closed.
|
|
- **Verification layer:** existing tests prove boundedness, idempotence,
|
|
exact-member refusal, and typed receipts. Exact packaged `16c4b19f` used the
|
|
same public command path to retire two witnessed directories from a
|
|
five-pulse copied-store fixture, preserve the remaining three, and replay as
|
|
`within-bound` without another receipt. Receipts are under
|
|
`.epiphany-run/heartbeat-retention-16c4b19f`.
|
|
|
|
### Resident Self lifecycle rows
|
|
|
|
- **Owner:** resident Self owns pressures, Heartbeat grants, child claims, and
|
|
terminal acknowledgements in `resident-self.cc`. Heartbeat may consume an
|
|
acknowledgement through the typed CAS function; it does not own arbitrary
|
|
deletion from the resident store.
|
|
- **Inputs:** one fully closed lifecycle: a consumed terminal acknowledgement,
|
|
its consumed grant, the pressure still bound to that grant in a final
|
|
consumed state, and any child claim bound to the same launch.
|
|
- **Outputs:** a typed retention head/receipt preserving a digest and count of
|
|
retired lifecycle identities while carrying no scheduling authority.
|
|
- **Derived state:** closed lifecycle history is evidence only. Pending
|
|
pressures, unconsumed grants, prepared launches, active leases, and
|
|
unconsumed acknowledgements remain live authority.
|
|
- **Forbidden writers:** retention cannot change pressure status, clear an
|
|
active/prepared lease, consume an acknowledgement, or infer closure from age.
|
|
Brake and shutdown cancellations requeue their pressure and are not closed
|
|
merely because they emitted a terminal acknowledgement.
|
|
- **Shared path:** completion, failure, timeout, brake, and shutdown all reach
|
|
the same lifecycle-closure predicate after Heartbeat consumption; no manual
|
|
cleanup path may bypass it.
|
|
- **Deletion line:** remove exact witnessed envelopes atomically only when the
|
|
current state has no prepared or active reference to the grant and no
|
|
pending acknowledgement exists. The test-only
|
|
`ResidentSelfRuntimeReceipt` type is not a live retention target.
|
|
- **Verification layer:** negative tests must prove that a retention head alone
|
|
cannot create pending pressure, issue a grant, satisfy an acknowledgement,
|
|
or resurrect a coordinator turn.
|
|
|
|
### Coordinator receipts
|
|
|
|
- **Owner:** the runtime spine owns coordinator run receipts. Resident Self
|
|
stores only the latest receipt identity and terminal acknowledgements may
|
|
reference an exact receipt.
|
|
- **Inputs:** receipts older than the retained frontier and unreferenced by
|
|
the configurable newest window or explicit IDs supplied from current
|
|
resident state and pending acknowledgements. Retention refuses prepared or
|
|
active launch authority.
|
|
- **Outputs:** a typed accumulator preserving terminal counts/digests without
|
|
pretending to be a runnable receipt.
|
|
- **Forbidden writers:** resident retention cannot delete runtime receipts;
|
|
runtime compaction cannot guess that cross-store references are dead.
|
|
- **Deletion line:** runtime replaces the singleton head and deletes exact old
|
|
receipt envelopes in one full-snapshot-fenced transaction. Unknown runtime
|
|
rows remain byte-identical.
|
|
|
|
### Supervisor stdout/stderr
|
|
|
|
- **Owner:** systemd-journald owns deployed Yggdrasil supervisor, semantic
|
|
projector, and workspace-coverage projector stream retention. Epiphany owns
|
|
typed service state, not a parallel filesystem log history.
|
|
- **Inputs:** the supervisor policies bind managed child output to
|
|
`/dev/stdout` and `/dev/stderr`; `epiphany.service` explicitly binds its own
|
|
streams to the journal.
|
|
- **Derived state:** journal rows are operational evidence. They cannot satisfy
|
|
service readiness, provider health, or typed completion.
|
|
- **Forbidden writers:** Epiphany must not create parallel long-lived projector
|
|
log files under its state root, and no external truncator may cut a file
|
|
beneath an inherited child descriptor.
|
|
- **Cut line:** `gamecult-ops` commit `059821f` removes all four projector
|
|
file-log paths from the Yggdrasil policy, names journald as the sole owner in
|
|
the deployment runbook, and passes the complete organizational operator
|
|
wiring suite. The optional supervisor fatal log is not configured by the
|
|
Yggdrasil unit; service failure is journal-owned too. Starfire's temporary
|
|
Windows shakedown logs remain bounded run receipts, not deployment truth.
|
|
|
|
Resident lifecycle retention now follows this map. Resident Self's production
|
|
serve/once owner applies a configurable closed-lifecycle bound (default 256).
|
|
CultCache commit `fecc17c` adds a complete-snapshot-fenced single-file
|
|
replace-and-delete transaction, so exact pressure/grant/ack/claim deletion and
|
|
replacement of the one digest/count retention head cannot split. The head is
|
|
not read by scheduling. Twenty resident Self tests and six swarm tests pass,
|
|
including refusal of live/requeued authority and negative proof that retained
|
|
history cannot create pending work.
|
|
|
|
Exact `ed15f83a` closes the packaged boundary. Its 24-binary release is
|
|
`sha256-4a4be03688eab1d1f7c13ac0057f0664c4658cab88471a0eac451a1d4607b85d`
|
|
with witness
|
|
`sha256-f163170174f022c124cc2f94d195639d02f65b79bac229af3efb8333176673c4`.
|
|
Under an engaged copied-state brake, packaged Self retired two closed
|
|
lifecycles/six exact envelopes into a revision-1 head with chain digest
|
|
`sha256:69a2c5971430846590fe20ba32a1a9299726a51c997b9e9c07ec044ebbff34a6`.
|
|
Two pending pressures survived, grants and acknowledgements remained empty,
|
|
and replay did not advance the head. Resident lifecycle retention is accepted;
|
|
the next retention owner must be mapped independently.
|
|
|
|
## Runtime and coordinator retention authority map
|
|
|
|
The copied c005 runtime store currently contains 22 coordinator run receipts,
|
|
20 jobs/results, 7 sessions, 482 runtime events, 13 native plus 13 OpenAI model
|
|
requests (about 2.9 MiB of duplicated prompt cargo), 72 model stream events, 13
|
|
receipt pairs, 7 worker launches, and the accepted Mind/Modeling/Hands frontier.
|
|
These are not one retention family merely because they share a file.
|
|
|
|
### Coordinator run receipts
|
|
|
|
- **Owner:** the runtime spine writes `EpiphanyCoordinatorRunReceipt`; the
|
|
resident Self process is its only live authority consumer.
|
|
- **Live input path:** after an active child exits zero, Self scans receipts for
|
|
the exact `thread_id` plus `resident_launch_digest`, then validates the full
|
|
launch contract before emitting its terminal acknowledgement. A receipt is
|
|
not present while the child is still active; a valid terminal receipt is
|
|
therefore the newest receipt at the completion boundary.
|
|
- **Other references:** resident state records the latest receipt ID and
|
|
terminal acknowledgements record their source ID. CultMesh Hands gates and
|
|
role-review events also carry the ID, but source inspection finds no lookup
|
|
from those mirrors back into the runtime receipt store; each mirror is a
|
|
self-contained provenance projection.
|
|
- **Derived state:** old coordinator receipts are historical evidence after
|
|
resident terminal acknowledgement. Their artifact references do not own the
|
|
referenced files and cannot be used as a file-retention decision.
|
|
- **Output:** one runtime-owned typed accumulator head with cumulative terminal
|
|
counts and a chained digest. It is never returned by
|
|
`coordinator_run_receipts` and cannot satisfy resident completion.
|
|
- **Preservation set:** retain a configurable newest global window (default
|
|
256) plus any explicit IDs supplied by a cross-store caller. The newest
|
|
receipt is always retained, even if the configured historical window is
|
|
zero, because it may be crossing the child-exit/terminal-ack seam.
|
|
- **Forbidden writers:** resident Self cannot directly delete runtime rows;
|
|
CultMesh projection, artifact cleanup, and wall-clock age cannot decide
|
|
receipt liveness.
|
|
- **Deletion line:** exact old receipt envelopes and replacement of the one
|
|
accumulator head must share a full-snapshot-fenced transaction. Unknown
|
|
runtime rows remain byte-identical.
|
|
- **Negative verification:** the accumulator alone must not appear in receipt
|
|
enumeration, match a thread/launch digest, terminalize a lease, or change the
|
|
accepted coordinator frontier.
|
|
|
|
### Session, job, event, model, and tool history
|
|
|
|
- **Owner:** runtime session closure owns the eventual archive boundary. Model
|
|
transport owns request/event/receipt families only while a request can still
|
|
receive stream events or construct a tool follow-up. Tool follow-up directly
|
|
reloads the original native model request and its tool intent/receipt chain.
|
|
- **Current authority:** open sessions/jobs, waiting review, accepted role
|
|
results, pending tool intents, current Self/Mind requests, and the coordinator
|
|
thread state remain live. `runtime_spine_status` and operator list commands
|
|
currently enumerate complete history; those counts are observation, not a
|
|
right to keep unbounded authority forever.
|
|
- **Deletion line:** no broad runtime or semantic compaction until a typed
|
|
archived-session summary owns the closed family and all cross-family IDs
|
|
needed by the accepted frontier are explicitly preserved. Model requests
|
|
must not be removed merely because a model receipt exists; tool follow-up and
|
|
review/recovery readers must first be closed.
|
|
|
|
Source inspection after the accepted `6dd9b132` fulfillment run sharpens that
|
|
boundary. `EpiphanyRuntimeSession` is currently a job-admission owner, not a
|
|
complete storage generation. The runtime spine gives every job, generic job
|
|
result, and runtime event an explicit `session_id`; worker launch requests and
|
|
typed role/reorient results join through `job_id`; coordinator run receipts
|
|
also carry `session_id`. Those families have a typed path back to one session.
|
|
|
|
The model/tool families do not yet share that path:
|
|
|
|
- Native and OpenAI model requests carry `conversation_id` and `request_id`,
|
|
but no runtime session or job identity. Worker request IDs happen to contain
|
|
a sanitized job ID and worker conversations happen to name a role binding;
|
|
both are naming conventions, not retention authority.
|
|
- Native and OpenAI stream events and model receipts join exactly to their
|
|
request by `request_id`. A terminal event closes transport production, but
|
|
the native model request remains live while tool follow-up may reload it.
|
|
- Tool intents join to a model request only when they came from a model tool
|
|
call. Tool receipts join exactly to an intent. Direct tool intents have no
|
|
session/job owner at all.
|
|
- Runtime events emitted by the OpenAI runner name the session and job, but do
|
|
not authenticate which model request/event envelope they describe. Human
|
|
summaries and key-shape conventions cannot be promoted into a deletion
|
|
graph.
|
|
- `EpiphanyRuntimeJobResult` may cite `openai-request:<id>` as an evidence ref,
|
|
but this is an artifact/evidence string, not a typed immutable membership
|
|
edge and is not present on every model execution path.
|
|
|
|
The semantic families in the same `.cc` file are not session exhaust. Repo
|
|
model admissions, frontier requests/routes, Hands/Soul receipts, Persona
|
|
effects, memory graph/projection state, and accepted typed worker results may
|
|
remain current Mind or consequence authority after the process session closes.
|
|
Physical co-location is not ownership. Runtime archive must therefore leave
|
|
semantic documents byte-identical unless an owning semantic compactor proves
|
|
its own replacement contract. Conversely, if a retained semantic document
|
|
still resolves an execution request/result by ID, that exact execution
|
|
envelope remains live and runtime archive must refuse it rather than leave an
|
|
ID-shaped hole that a later row could impersonate.
|
|
|
|
The intended archive cut is now explicit:
|
|
|
|
- **Owner:** one runtime-spine `ArchivedRuntimeSession` tombstone owns permanent
|
|
death of an exact completed session. Session status, operator counts, age,
|
|
and a digest-only retention head are no longer archive owners.
|
|
- **Inputs:** the exact completed session; only terminal session-local jobs;
|
|
their typed job/launch/result/event closure; explicit model-execution
|
|
bindings to session and job; terminal native/OpenAI request streams and
|
|
receipts; fully receipted tool intents; coordinator receipts not live across
|
|
resident state; and a full-store scan proving no retained semantic/runtime
|
|
document references a member selected for retirement.
|
|
- **Outputs:** one typed tombstone containing the session identity, terminal
|
|
outcome/counts, exact retired-family counts, a chained digest of exact
|
|
retired envelopes, and the retention timestamp; plus deletion of those exact
|
|
envelopes in the same full-snapshot-fenced transaction.
|
|
- **Derived state:** runtime history counts and old stream text are observation
|
|
only after archival. The tombstone is evidence and an ID-reuse barrier; it
|
|
cannot satisfy a job, model request, tool call, coordinator receipt, or
|
|
semantic review.
|
|
- **Forbidden writers:** model transport, tool runtime, coordinator receipt
|
|
retention, resident lifecycle retention, semantic projection, wall-clock
|
|
cleanup, and operator commands cannot mark a session archived or infer
|
|
membership from prefixes, timestamps, summaries, conversation names, or
|
|
evidence strings.
|
|
- **Shared paths:** every native/OpenAI model execution must publish the same
|
|
typed request-to-session/job binding at request creation; every model-derived
|
|
and direct tool execution must publish an exact execution owner before an
|
|
intent can become pending. Bounded and unbounded runners use the same write
|
|
primitive. Legacy unbound rows are retained and make their candidate session
|
|
ineligible; migration may add a binding only from independently authenticated
|
|
typed evidence.
|
|
- **Cut line:** first add the missing typed model/tool ownership edges and make
|
|
request/intent creation atomic with them. Then add the archive tombstone and
|
|
one snapshot-fenced replace/delete primitive. Do not begin with a generic
|
|
age window, a key-prefix crawler, or a repair registry assembled after the
|
|
fact.
|
|
- **Negative verification:** an archived tombstone blocks recreation of its
|
|
session; missing/duplicate/foreign bindings refuse archive; a nonterminal
|
|
stream or unreceipted tool intent refuses archive; a retained semantic
|
|
reference refuses deletion; stale snapshots refuse; unknown rows and live
|
|
sessions remain byte-identical; the tombstone cannot resurrect work; and
|
|
exact replay is idempotent.
|
|
|
|
The first ownership edge is now implemented. Runtime spine owns
|
|
`EpiphanyRuntimeModelExecutionBinding` and one `open_runtime_model_execution`
|
|
CAS. That transaction validates one native/provider request pair, preserves an
|
|
exact runtime identity/session fence, and atomically publishes the session,
|
|
queued job, deterministic opened event, immutable binding, and both request
|
|
envelopes. The OpenAI runtime cannot begin transport before this succeeds.
|
|
Collision, foreign request shape, concurrent session mutation, or terminal
|
|
session state leaves no partial job/event/request family. Legacy standalone
|
|
request writers remain available only as unbound compatibility surfaces; their
|
|
rows are deliberately ineligible for archival. Core hostile membership tests,
|
|
the CultNet Hello/catalog tests, and all 15 OpenAI runtime library tests pass.
|
|
|
|
Tool execution ownership now shares the same cut. Runtime spine owns
|
|
`EpiphanyRuntimeToolExecutionBinding`. One CAS publishes an intent with its
|
|
exact session/job edge; model-derived intents additionally require the exact
|
|
native/provider model execution binding and request family in the fence.
|
|
Direct intents require an explicit session/job owner. The tool runtime rejects
|
|
an unbound intent before native or MCP execution. Its terminal receipt is also
|
|
immutable: runtime spine validates adapter/server/tool identity and publishes
|
|
it under a CAS fence containing the exact binding and intent. A hostile or
|
|
duplicate receipt cannot become closure evidence. Core tests prove model,
|
|
direct, foreign, missing, hostile-receipt, and replay cases; all 15 OpenAI
|
|
runtime tests and all 10 tool-runtime tests pass without warnings.
|
|
|
|
The next archive prerequisite is retained-reference classification. Before a
|
|
session family can be deleted, source inspection must enumerate which semantic
|
|
documents resolve session job, worker result, model request, tool intent, or
|
|
receipt IDs at read time. Those readers either preserve exact execution
|
|
members or must first own a self-contained immutable evidence projection. No
|
|
generic string scan or age rule may substitute for typed references.
|
|
|
|
That classification exposed and repaired the archive-unit fault. Worker model
|
|
sessions were formerly role-long (`openai-worker-session-{binding}`), so future
|
|
workers kept the session live forever and a session tombstone could never
|
|
bound the dominant prompt/stream family. Worker execution now derives one
|
|
session from the exact outer worker `job_id`; all model/tool-followup jobs for
|
|
that worker share it, while later workers receive different sessions.
|
|
Successful completion closes the inner model session after the outer typed
|
|
worker result is admitted. Tool-loop stall and round-limit closure first write
|
|
failed receipts for the exact unexecuted pending intents, then fail the outer
|
|
worker and close the same inner session. Tests prove terminal outer job,
|
|
terminal tool receipt, and completed unique inner session. Conversation-wide
|
|
model sessions remain intentionally long-lived and cannot be archived until
|
|
their own owner closes them.
|
|
|
|
The initial tombstone can therefore be narrow and honest: archive only a
|
|
completed session whose jobs are model-adapter jobs, each job has an explicit
|
|
model execution binding and terminal result, every model stream is terminal,
|
|
and every tool binding is receipted. Outer worker launch/results and all
|
|
semantic/Mind/consequence families remain untouched. The tombstone must retain
|
|
the exact session, job/result, model-request, and tool-intent identities as an
|
|
ID-reuse barrier plus counts and a digest of bulky retired envelopes.
|
|
|
|
That narrow owner now exists in source as
|
|
`EpiphanyArchivedRuntimeSession` and `archive_completed_model_session`.
|
|
Runtime spine admits only the closed model-generation shape above, verifies the
|
|
native/provider terminal streams and receipts plus every bound tool receipt,
|
|
and refuses outer worker/coordinator membership. One full-snapshot-fenced
|
|
replacement writes the exact-ID tombstone and deletes only its enumerated inner
|
|
execution envelopes. Tombstone IDs block later session, job, model-request, or
|
|
tool-intent aliasing; the tombstone itself is never enumerated as runnable
|
|
authority. Stale-snapshot, missing-tool-receipt, byte-identity, idempotence, and
|
|
ID-reuse negatives pass.
|
|
|
|
`retain_completed_model_sessions` selects only completed generations whose
|
|
jobs are all model-adapter jobs with explicit model bindings, orders them by
|
|
session closure time, and keeps at least the newest even when configured zero.
|
|
Resident Self invokes it beside coordinator-receipt retention only after the
|
|
shared no-active/no-prepared authority gate. The default retained window is
|
|
256. A two-generation test proves the older generation becomes a tombstone and
|
|
the newest remains live. Exact package and copied-state proof remain required;
|
|
conversation-wide sessions and semantic history remain separate owners.
|
|
|
|
Source commit `c137e16b` packages the owner but is not an accepted release: its
|
|
24-binary build emitted one unused-import warning in the tool-runtime binary.
|
|
That import belonged exclusively to `cfg(test)` and has been moved there; the
|
|
production check and all four tool-runtime binary tests pass. Exact repackaging
|
|
of the follow-up commit is required before live archive evidence.
|
|
|
|
Follow-up `cce2b8ac` is accepted. Its exact warning-free package contains 24
|
|
binaries under release
|
|
`sha256-1f29f33c495e8ba79ce8e23c1ac923c4ffcd5d86c97632a17d44566669de481e`
|
|
and witness
|
|
`sha256-25e48f9c79c51cd9853e826e2f9dfdb3b2570006fd37138fd36ac1555bc075e7`.
|
|
On copied live state, two genuine terminal model generations supplied a
|
|
newest-at-one test. Packaged Self retired the older exact 29-envelope family
|
|
into tombstone digest
|
|
`sha256:fc3658898d383333edff411f64999af7890cdeaf8fdce737589bc5667f65db33`,
|
|
preserved the newer generation, left zero pending tools, refused old-session
|
|
identity reuse, and replayed without moving the runtime file hash. All 1,427
|
|
pre-existing envelopes survived and no pre-existing authority envelope changed.
|
|
Narrow model-generation retention is accepted; semantic and conversation-wide
|
|
families remain separate owners.
|
|
|
|
The live fixture exposed an adjacent boundary fault. The `model-turn` CLI reads
|
|
JSON, and the published `epiphany.model_request.v0` schema is object-shaped,
|
|
but direct deserialization into the DatabaseEntry type expects its positional
|
|
CultCache array. JSON ingress must use an explicit schema-shaped boundary DTO
|
|
that rejects unknown/malformed fields and converts into the typed persisted
|
|
request. CultCache serialization remains the persistence owner; JSON does not
|
|
get to reshape it.
|
|
|
|
The implemented CLI boundary now owns JSON syntax only. It first requires an
|
|
object with an exact string `schema_id`, then deserializes into one of two
|
|
`deny_unknown_fields` DTOs matching the published native and OpenAI request
|
|
schemas. Their three published input variants convert into the corresponding
|
|
typed adapter request. The adapter request then enters the unchanged runtime and
|
|
CultCache persistence path.
|
|
|
|
- Owner: the published CultNet JSON schema owns accepted boundary shape; the
|
|
typed adapter request owns runtime meaning; DatabaseEntry owns persistence.
|
|
- Inputs: one native or provider object with the exact schema ID and published
|
|
fields.
|
|
- Output: an `EpiphanyModelRequest` or `EpiphanyOpenAiModelRequest` with
|
|
persistence-only fields left at typed defaults.
|
|
- Forbidden cargo: positional CultCache arrays, unknown top-level or variant
|
|
fields, malformed variants, unsupported schema IDs, and `ToolCall` until a
|
|
published contract owns it.
|
|
- Shared path: both native and provider objects converge on the existing model
|
|
runtime after conversion; neither can deserialize persistence representation
|
|
directly.
|
|
- Verification: all nine binary tests pass, including both positive object
|
|
shapes and negative array/unknown/ToolCall cases. Exact package inspection and
|
|
copied-live execution remain required before acceptance.
|
|
|
|
Exact `eea15e82` closes that acceptance boundary. Its authenticated 24-binary
|
|
release is
|
|
`sha256-6a45bef43ef9f4ecbdc2ba69b8dfee9edf9bb085ce0d482c1ad1649b35464186`
|
|
with witness
|
|
`sha256-088393f4eb9784819250f6a6b44d73bc92c9d889c4eaa2a0a13868c6c71f7cda`.
|
|
A published native object completed on copied live state through direct Responses
|
|
transport and persisted its exact typed request. The positional persistence
|
|
array failed before mutation, produced no request identity, and preserved the
|
|
runtime file hash exactly. The boundary is accepted live.
|
|
|
|
The coordinator receipt accumulator is implemented in source. Runtime owns the
|
|
typed head, cumulative status counts, chained digest, and full-snapshot-fenced
|
|
replacement/deletion. Resident Self supplies the cross-store preservation set
|
|
from pending terminal acknowledgements and `last_coordinator_receipt_id` before
|
|
resident lifecycle retirement; it does not write or delete runtime rows
|
|
directly. Retention is forbidden while active-turn or prepared-launch authority
|
|
exists, closing the interval where a child may have written its terminal
|
|
receipt but Self has not yet observed exit. The default window is 256 and the
|
|
newest receipt survives even when the configured window is zero. CultCache's production non-owning redb handle
|
|
now exposes the same fenced compaction primitive as the snapshot and owned-redb
|
|
backends. Unit tests prove stale-snapshot refusal, explicit-ID preservation,
|
|
zero-window newest preservation, stable replay, and that the head cannot
|
|
deserialize or enumerate as runnable coordinator receipt authority.
|
|
|
|
Exact source `16c4b19f` produced warning-free 24-binary release
|
|
`sha256-6cd1907a87d37cd4517e3f1d3541ecee6595480c21401f977f51f63e929a8ef8`
|
|
with witness
|
|
`sha256-c9f4f8ba962bd97674c5e178a67a881b592af5833048029cd11805604bd6c17e`.
|
|
Under copied engaged-brake state and a retention window of one, packaged Self
|
|
retired 21 receipts, preserved the newest receipt and a deliberately old
|
|
receipt named by both resident state and a pending acknowledgement, and wrote
|
|
revision-1 digest
|
|
`sha256:63587221d745315af81c705824d16313d2f748b6ff9840a2b4152127a6758fbd`.
|
|
All 720 unrelated runtime envelopes retained digest
|
|
`sha256:c21a12653ce1bf0e64342c6fcbf98d006aeb8fa707de69527886db20e4c20e1c`;
|
|
resident pressure/grant/ack/claim counts did not change; active and prepared
|
|
authority stayed absent. Exact replay did not advance the head or create work.
|
|
Receipts are under `.epiphany-run/coordinator-retention-16c4b19f` and package
|
|
construction/inspection under `.epiphany-run/linux-package-16c4b19f`.
|
|
|
|
Coordinator receipt retention is accepted. It does not pretend to solve
|
|
runtime session/model/event/tool retention.
|
|
|
|
## Remaining semantic and conversation retention owner map
|
|
|
|
The remaining histories are not one family and must not share a generic age
|
|
deleter.
|
|
|
|
### Semantic projection lifecycle
|
|
|
|
- Owner: each canonical Mind or Modeling source store owns its semantic
|
|
obligations, scope claim, executor grants, attempts, recovery authorizations,
|
|
and index receipts. The semantic executor owns physical Qdrant epoch cleanup
|
|
only after canonical evidence proves an epoch is inactive.
|
|
- Live inputs: the authenticated current source head and its exact obligation;
|
|
the singleton scope claim; any running attempt; the grant or recovery
|
|
authorization named by that claim; and the exact succeeded attempt/receipt
|
|
admitted by the current query-readiness gate.
|
|
- Retirable inputs in the current safe cut: only older obligations whose source
|
|
generation is no longer the authenticated head and which have no attempt,
|
|
receipt, executor grant, or recovery authorization. Attempted generations
|
|
remain durable until physical retirement has its own crash-safe obligation.
|
|
- Output: one typed per-scope retention head with cumulative type/status counts,
|
|
retired generation count, and chained digest, replacing the exact old
|
|
lifecycle envelopes under the source store's full-snapshot fence. It is
|
|
evidence only and cannot deserialize as obligation, claim, grant, attempt,
|
|
authorization, or receipt.
|
|
- Fail-closed cut: skip logical retirement while the current scope claim or its
|
|
attempt is running. Never retire the current obligation, scope claim, current
|
|
claim authority, or current readiness receipt. Unknown rows remain
|
|
byte-identical.
|
|
- Physical cut: after logical retirement proves an epoch inactive, Qdrant may
|
|
delete only points carrying that exact retired
|
|
`(obligation_id, claim_id, claim_epoch)` namespace. It cannot infer deletion
|
|
from age or collection membership, cannot touch the active receipt namespace,
|
|
and cannot decide query readiness. A missing backend leaves harmless garbage,
|
|
not incorrect canonical state.
|
|
- Negative proof: the retention head cannot make query readiness true, cannot
|
|
acquire/recover a claim, and cannot resurrect an obligation. Current semantic
|
|
query results remain identical; stale CAS refuses; unrelated canonical rows
|
|
and the active physical epoch remain byte-identical.
|
|
|
|
Current source grounds this cut: readiness and execution authenticate the
|
|
current obligation and singleton scope claim, while attempts and receipts are
|
|
enumerated history filtered back to that chain. The executor grant and recovery
|
|
authorization are claim authorities and therefore enter the preservation set
|
|
through the claim rather than through recency.
|
|
|
|
### Persona conversation lifecycle
|
|
|
|
- Owner: Heartbeat owns whether the Persona turn is terminal and no longer
|
|
schedulable. Runtime owns the Projector/Persona/Interpreter stage receipts,
|
|
effect document, effect intents, delivery evidence, terminal model receipt,
|
|
and conversation execution receipt. Bifrost crossing stores own signed
|
|
request/receipt audit evidence. No one store can infer whole-chain closure
|
|
alone.
|
|
- Live inputs: a reserved/nonterminal `PersonaTurnRequest`, missing conversation
|
|
execution receipt, started effect intent, pending signed delivery, absent or
|
|
unverified crossing receipt, or terminal Heartbeat state still needed for
|
|
reconciliation.
|
|
- Retirable family: only a turn with exact model terminal, effect document and
|
|
stage receipts, terminal Heartbeat receipt, terminal conversation execution
|
|
receipt, every effect intent terminal, and any external consequence bound to
|
|
signed terminal delivery evidence. Failed/unknown delivery remains durable
|
|
non-retry evidence, not disposable failure noise.
|
|
- Required tombstone: exact turn/request/effect/stage/delivery identities and
|
|
terminal outcome must remain sufficient to reject replay after detailed rows
|
|
retire. Deleting runtime rows without this identity barrier would let
|
|
`execute_persona_model_turn` recreate a previously consequential turn.
|
|
- Shared cut: terminalization and later reconciliation must consult the same
|
|
archived-turn barrier. Runtime retention cannot delete Heartbeat or Bifrost
|
|
rows; their owners need corresponding bounded audit policies before the whole
|
|
conversation family is physically bounded.
|
|
|
|
Persona conversation retention therefore follows semantic lifecycle retention.
|
|
It requires a cross-store preservation map and replay barrier; it is not a safe
|
|
extension of completed model-session archival.
|
|
|
|
### Persona conversation retention implementation
|
|
|
|
The production Persona service now runs one shared retention primitive in both
|
|
loop and `--once` modes before selecting new work. Heartbeat remains the owner:
|
|
it first persists an exact cleanup plan inside the singleton state, including
|
|
the terminal receipt digest and exact runtime/request/receipt envelope
|
|
identities and hashes. Runtime, Epiphany delivery-request, and Bifrost
|
|
delivery-receipt stores each delete only those named envelopes under their full
|
|
snapshot fence and replace a singleton typed local cleanup receipt. A retry
|
|
that finds detail already absent must authenticate that exact local receipt;
|
|
absence cannot impersonate successful cleanup.
|
|
|
|
Only `delivered`, `silence`, and `dropped` turns with an exact conversation
|
|
receipt, full three-stage model chain, exact effect document, terminal effect
|
|
intents, and (for speech) a verified signed completed delivery request/receipt
|
|
qualify. Failed or unknown delivery, retained mentions, blocked/quarantined
|
|
pressure, missing detail, started or ambiguous effects, feedback, Persona
|
|
state, semantic memory, relationship memory, and disclosure/consent state are
|
|
outside the deletion set.
|
|
|
|
After every planned store cleanup is receipted, Heartbeat atomically removes
|
|
the exact terminal requests, clears the plan, and advances a cumulative
|
|
chained-digest head with a monotonic `through_reserved_at` frontier. Reservation
|
|
and state validation reject any nonterminal turn at or behind that frontier.
|
|
The head is death evidence only; it cannot model a turn, issue a signed
|
|
delivery request, satisfy a crossing receipt, or reschedule speech. A crash
|
|
before the Heartbeat commit leaves terminal authority and the exact plan for
|
|
retry. A crash after it cannot replay the retired turn.
|
|
|
|
Three focused retention tests pass: bounded terminal detail with stable replay
|
|
and hostile old-request rejection; preservation of an older failed/retained
|
|
turn while a neighboring clean turn retires; and refusal to accept already
|
|
absent detail without the exact store cleanup receipt. The full core library is
|
|
green at 646 passed / 1 ignored, the OpenAI runtime is green at 15 passed, and
|
|
the production Persona daemon compiles.
|
|
|
|
Exact `44230a05` packaged copied-state proof accepts the cut. Release
|
|
`sha256-aed15bfb419c6c76ad09e1020e0c3e3d0f6dee52f5d615e18bbc61095aa76ea9`
|
|
with witness
|
|
`sha256-77d3b45e2cd48f5785f02539ba92238013f2385537a776d45514ac13e704706e`
|
|
retired one signed completed speech family and eight exact runtime envelopes.
|
|
The newer dropped turn, failed retained turn, signed unknown/quarantined turn,
|
|
pending delivery turn, blocked pressure, and pending model evidence survived.
|
|
All five stores and their typed inspection were byte-identical on replay.
|
|
|
|
A forced read-only receipt-store replacement failed after runtime and request
|
|
cleanup. Heartbeat still held the exact plan and terminal turn, the local
|
|
runtime/request cleanup receipts authenticated the partial progress, and no
|
|
head existed. A normal retry deleted the exact crossing receipt, cleared the
|
|
plan, removed the old terminal turn, and advanced one revision. Thus a crash
|
|
cannot turn partial deletion into completion, and the accepted frontier plus
|
|
reservation validation prevents either reservation or repost of the retired
|
|
turn. Receipts are under `.epiphany-run/persona-retention-44230a05`.
|
|
|
|
### Starfire Persona-permit firewall ownership
|
|
|
|
- Owner: gamecult-ops exact `6ee08a4` owns one Windows PersistentStore rule;
|
|
Windows projects it into ActiveStore. Epiphany release paths are not owners.
|
|
- Inputs: local WireGuard address `10.77.0.2`, Yggdrasil peer `10.77.0.1`, UDP
|
|
permit port 17877, Public profile, and interface `wg-gamecult-starfire`.
|
|
- Output: one enabled inbound allow rule named
|
|
`Epiphany-Persona-Permit-Yggdrasil`, scoped to that exact tuple.
|
|
- Derived state: ActiveStore is the live projection of PersistentStore;
|
|
application-path Query User rules are unwanted derived OS prompts and have no
|
|
release or permit authority.
|
|
- Forbidden writers: authenticated release publication, executable relocation,
|
|
the Persona permit daemon, and Bifrost cannot create broader firewall policy
|
|
or replace the stable host rule.
|
|
- Shared path: initial installation and reconciliation use
|
|
`allow-starfire-epiphany-persona-permit.ps1`; live verification reads both
|
|
policy stores plus their address, port, and interface filters.
|
|
- Cut line: remove every per-program permit rule and retain only the stable
|
|
WireGuard-scoped tuple. WireGuard membership remains transport identity, not
|
|
a substitute for CultNet signatures or permit validation.
|
|
- Verification: exact matching PersistentStore and ActiveStore rows exist;
|
|
zero application filters target the permit executable; the automatic/running
|
|
WireGuard service owns `10.77.0.2/24`. The earlier authenticated cross-host
|
|
probe proves the rule carries the typed protocol without broadening it.
|
|
|
|
Live receipts are under `.epiphany-run/firewall-bffbaa45`. A non-elevated
|
|
reconciliation attempt was denied before mutation and left identical snapshots;
|
|
it is recorded as a negative authority check, not misreported as idempotence.
|
|
|
|
### Coordinator runtime-session closure and retention gap
|
|
|
|
The broad runtime-history remainder is not an unclassified pile. Exact
|
|
model-adapter generations are already bounded by
|
|
`archive_completed_model_session`: it validates terminal jobs, native/provider
|
|
request streams and receipts, tool bindings/intents/receipts, and runtime events,
|
|
then replaces that exact family with `EpiphanyArchivedRuntimeSession` under one
|
|
full-snapshot fence. Outer-worker and coordinator authority is deliberately
|
|
refused.
|
|
|
|
The live missing family is native coordinator sessions. The coordinator creates
|
|
`coordinator-{thread_id}` plus a `coordinator.started` event and eventually
|
|
writes `EpiphanyCoordinatorRunReceipt`, but it never calls
|
|
`close_runtime_session`. These sessions therefore remain falsely `Active`
|
|
after process-terminal evidence exists. Receipt retention can later remove the
|
|
receipt, but completed-session retention cannot select the session because it
|
|
requires a nonempty model-adapter job family. This is both unbounded growth and
|
|
a false liveness projection.
|
|
|
|
Authority map for the cut:
|
|
|
|
- Owner: runtime spine owns one atomic coordinator-run terminalization
|
|
transaction. Neither resident Self nor the artifact writer closes the runtime
|
|
session.
|
|
- Inputs: exact active coordinator session envelope; exact terminal coordinator
|
|
receipt bound to its session and thread; the absence of session jobs; existing
|
|
coordinator-started events; one terminal timestamp.
|
|
- Outputs: in one full-snapshot-fenced replacement, persist the immutable run
|
|
receipt, mark the session `Completed`, and publish exactly one deterministic
|
|
`session.completed` event.
|
|
- Derived state: coordinator JSON/text artifacts and runtime status projections
|
|
describe the committed terminal transaction; they do not terminalize it.
|
|
- Forbidden writers: `put_coordinator_run_receipt` followed by a separate close,
|
|
receipt retention, resident acknowledgement, process exit, and artifact
|
|
existence may not independently decide session death.
|
|
- Shared paths: every successful native coordinator exit mode uses the same
|
|
finalizer. Legacy active coordinator sessions may be repaired only from one
|
|
exact matching terminal receipt, no jobs, and the authenticated coordinator
|
|
event shape.
|
|
- Retention owner: completed coordinator-session archival owns the whole exact
|
|
session family, including its coordinator receipt and runtime events. Generic
|
|
coordinator-receipt retention must preserve receipts still named by a live or
|
|
completed runtime session; it owns only receipts outside a session family.
|
|
- Cut line: remove the coordinator binary's standalone receipt write. Do not
|
|
teach model-session archival to ignore coordinator receipts or infer closure
|
|
from age. Do not leave two independent deleters able to retire the same
|
|
receipt.
|
|
- Verification: atomic stale-snapshot refusal; exact replay idempotence; legacy
|
|
repair refusal for zero/multiple/mismatched receipts or any job; active and
|
|
newest-session preservation; exact old family replacement; unrelated runtime
|
|
byte identity; tombstone refusal of session/job recreation; and copied exact
|
|
package proof that terminal coordinator sessions plateau without changing
|
|
resident authority.
|
|
|
|
The first owner cut is implemented. `finalize_coordinator_run` validates the
|
|
exact active jobless session and absence of partial terminal authority, then
|
|
uses CultCache's full-snapshot-fenced replace-and-append transaction to persist
|
|
the receipt, Completed session, and deterministic completion event together.
|
|
Exact replay returns the same terminal session; a changed snapshot, a session
|
|
job, partial prior receipt/event, or non-Active state refuses every write. The
|
|
coordinator now derives runtime status after this transaction. CultCache exact
|
|
`e1fc4c0` owns the new primitive for snapshot, keyed, and owned-keyed stores;
|
|
its hostile concurrency test proves an unknown row invalidates the transaction.
|
|
The full core library passes 647 tests with one intentional ignored helper.
|
|
|
|
The remainder of the owner cut is now implemented. Runtime retention first
|
|
repairs only exact legacy jobless coordinator sessions: one matching receipt,
|
|
an exact `coordinator-{thread_id}` binding, and authenticated start events are
|
|
required before the session and deterministic completion event are replaced in
|
|
one full-snapshot transaction. Zero, multiple, or mismatched receipts, any job,
|
|
foreign events, or a stale snapshot refuse without mutation.
|
|
|
|
Completed coordinator-session archival is a distinct exact-family validator,
|
|
not a relaxation of model-session archival. It consumes the Completed session,
|
|
its one bound receipt, and all authenticated start/completion events, then
|
|
replaces those envelopes with one `EpiphanyArchivedRuntimeSession`. Its retired
|
|
type counts and digest cover that exact family; unrelated runtime envelopes are
|
|
outside the cut. Tombstone replay requires the family to remain absent, so the
|
|
archive cannot coexist with recreated session authority.
|
|
|
|
Deletion ownership is ordered and explicit. Resident Self supplies the receipt
|
|
IDs that remain live across stores. Completed-session retention runs first and
|
|
excludes those families. Generic coordinator-receipt retention then derives all
|
|
receipt IDs bound to any surviving runtime session and preserves them in
|
|
addition to resident liveness; it owns only orphan receipts. A receipt can no
|
|
longer be independently retired while its session survives.
|
|
|
|
The verification layer now covers exact repair and archive replay, ambiguous
|
|
legacy refusal with an identical snapshot, cross-store preservation, newest
|
|
retention, generic-retention refusal to consume a session-bound receipt,
|
|
unrelated-envelope byte identity, tombstone recreation refusal, and hostile
|
|
concurrent-event CAS refusal. Focused coordinator tests pass 58/58; the full
|
|
core library passes 649 tests with one intentional ignore; both swarm binary
|
|
suites and the coordinator release target are green. Exact package and copied
|
|
live plateau proof remain the acceptance boundary.
|
|
|
|
Copied-live execution exposed a surviving opening/exit split after that map.
|
|
The coordinator binary still created `EpiphanyRuntimeSession` and
|
|
`coordinator.started` in separate calls, reused an existing Active session on
|
|
the same thread, and invoked `finalize_coordinator_run` only at the bottom of
|
|
the success path. Any ordinary error after opening could therefore leave false
|
|
Active authority; repeated use of the thread could append start events and
|
|
produce the ambiguous receipt family observed in copied c005 state.
|
|
|
|
The corrected authority map is:
|
|
|
|
- Owner: runtime spine owns both boundaries of a normal coordinator run.
|
|
- Inputs: exact runtime identity, unique thread/session pair, objective, start
|
|
timestamp, and later either the success receipt or the captured run error.
|
|
- Outputs: opening atomically appends the Active session plus deterministic
|
|
start event; every normal exit atomically appends one terminal receipt plus
|
|
completion event while replacing the session as Completed.
|
|
- Derived state: CLI errors and process exit codes report the terminalized
|
|
failure; they do not own session status.
|
|
- Forbidden writers: the coordinator binary no longer separately creates a
|
|
session, appends retry start events, or reuses an existing thread authority.
|
|
A catch-all error wrapper may construct the failed receipt but can only close
|
|
through `finalize_coordinator_run`.
|
|
- Shared paths: successful plan/default execution and every ordinary post-open
|
|
error share the runtime finalizer. Failure before atomic opening writes no
|
|
session family. Hard kill after opening remains Continuity recovery work.
|
|
- Cut line: remove `ensure_runtime_session`, the fallback UUID start event, and
|
|
success-only ownership of terminalization.
|
|
- Verification: opening is single-use and full-snapshot fenced; an unrelated
|
|
concurrent event leaves neither proposed session nor start event; conflicting
|
|
typed/operator intake returns an error only after one failed receipt,
|
|
completion event, and Completed session exist.
|
|
|
|
Corrected source verification passes 59 focused coordinator tests, 17 native
|
|
coordinator-binary tests, both 8-test swarm suites, and 650 core library tests
|
|
with one intentional ignore. Exact corrected packaging and copied-live replay
|
|
remain open.
|
|
|
|
Exact corrected package `497df458` closes that acceptance boundary. A live
|
|
post-open input failure terminalized before returning exit 1. Braked Self then
|
|
repaired and archived an older receipt-grounded legacy family, retained the
|
|
newer failed family, and projected one remaining Completed session with no jobs
|
|
or actionable frontiers. Replay and 26 further serve cycles preserved runtime
|
|
SHA-256 `669f3de5...5461` exactly; the short soak stayed near 28 MiB and stopped
|
|
on SIGTERM with exit zero. This proves the retention head/archive cannot
|
|
resurrect coordinator work and normal error exits do not leak false liveness.
|
|
|
|
The remaining cut is intentionally narrower: abrupt process death can occur
|
|
after atomic opening and before the coordinator can author any terminal
|
|
receipt. Retention has no authority to guess that boundary. Continuity must
|
|
bind the opened session to exact process or resident lease identity, prove that
|
|
identity dead, and terminalize or quarantine the session through a dedicated
|
|
receipt-grounded recovery path before retention can see it as closed.
|
|
|
|
#### Receipt-free coordinator death authority map
|
|
|
|
- Owner: resident Self owns the exact child lease and its process-incarnation
|
|
observation; runtime Continuity owns terminal recovery of the corresponding
|
|
orphaned coordinator session.
|
|
- Inputs: the persisted active resident lease, its immutable child claim and
|
|
terminal grant, an exact `Missing` or `Exited` observation for that process
|
|
incarnation, and the runtime's matching Active coordinator session plus
|
|
deterministic start event.
|
|
- Outputs: one typed coordinator-death recovery receipt and one deterministic
|
|
recovery event, atomically replacing the runtime session as Completed. Self
|
|
then uses its existing exact-grant cancellation transaction to requeue the
|
|
pressure.
|
|
- Identity split: the cognitive thread remains request-owned context. A
|
|
resident coordinator session is a distinct run incarnation derived from the
|
|
exact resident launch digest; ordinary non-resident runs retain the simple
|
|
`coordinator-{thread}` identity. Requeue therefore creates a new session
|
|
without rewriting or reusing the cognitive thread.
|
|
- Derived state: timestamps, session age, receipt absence, PID presence, and
|
|
operator projections remain observations only. None can establish death.
|
|
- Forbidden writers: retention, legacy coordinator repair, the coordinator
|
|
itself after death, generic runtime session closure, and timeout policy may
|
|
not synthesize this terminal family. A normal coordinator receipt and a
|
|
death-recovery receipt are mutually exclusive.
|
|
- Shared paths: zero exit without a receipt, nonzero exit without a receipt,
|
|
and restart observation of a missing exact child share one settlement
|
|
classifier. Death before runtime opening proves that exact incarnation family
|
|
wholly absent and requeues without inventing runtime state. Death after
|
|
opening uses the recovery transaction. Normal exits with an exact fully bound
|
|
run receipt retain the normal finalizer path.
|
|
- Typed-work boundary: authenticated terminal typed fulfillment lets the
|
|
death-recovery authority close the original grant exactly once without a
|
|
duplicate launch. No typed attempt permits canonical requeue. A typed launch
|
|
attempt without terminal fulfillment remains active and
|
|
`awaiting-fulfillment`; Continuity does not yet own orphan-worker terminality
|
|
or supersession, so timeout or brake cannot manufacture a retry.
|
|
- Cut line: replace direct receipt-free resident cancellation with runtime
|
|
recovery followed by canonical resident cancellation, and stop using the
|
|
cognitive thread as the resident run identity; do not add an age-based
|
|
scavenger or let session retention repair Active state.
|
|
- Verification: exact lease/claim/session/thread/objective/start-event binding,
|
|
hostile substitution refusal, live or indeterminate process refusal,
|
|
single-use replay, full-snapshot CAS refusal, mutual exclusion with normal
|
|
receipts, restart recovery, pressure requeue without grant resurrection, and
|
|
eventual archive of the recovered terminal family.
|
|
|
|
Retry artifacts are grant-incarnation-owned rather than thread-owned. Prepared
|
|
argv carries `artifact_root/{grant_id}`, so a new launch on the same cognitive
|
|
thread cannot erase the prior attempt's sealed directory.
|
|
|
|
Source verification for this cut is complete: the serial core suite passed 653
|
|
tests with one intentional ignore, followed by all 17 coordinator-binary tests
|
|
and all 8 swarm tests. The detached receipt is
|
|
`.epiphany-run/continuity-death-recovery-source`; stderr is empty and exit is
|
|
zero. Exact packaging and copied-live process-death falsification remain the
|
|
acceptance boundary.
|
|
|
|
### Semantic logical lifecycle implementation
|
|
|
|
`retain_memory_semantic_projection_lifecycles` now realizes the safe unattempted
|
|
portion of the logical half of
|
|
the semantic retention map in each canonical source store. Its one snapshot is
|
|
the authority basis for current-obligation equality, canonical authority
|
|
equality, singleton claim/attempt authentication, historical lifecycle
|
|
classification, prior-head validation, and the final fenced replacement. The
|
|
production semantic projector calls it once per exact source input after the
|
|
synchronous projection pulse and before health publication. The default
|
|
retained window is 256 generations; a non-positive configured window is refused
|
|
at argument parsing.
|
|
|
|
Preserved state is explicit rather than inferred from recency: the canonical
|
|
input obligation; the obligation named by the singleton scope claim; that
|
|
claim's exact attempt and authenticated grant/recovery authority; and the
|
|
current readiness family protected by those identities. Any running current
|
|
claim refuses the whole mutation. Any other same-scope obligation at or beyond
|
|
the canonical input generation also refuses the whole mutation, including when
|
|
it would fall inside the configured recent window. This prevents a stale caller
|
|
from blessing a future row through retention.
|
|
|
|
Retirable state is limited to lower-generation obligations outside the
|
|
preservation set that have no attempt, receipt, executor grant, or recovery
|
|
authorization. The one CAS deletes only those exact unattempted obligations and
|
|
replaces the singleton typed retention head. Unknown families and the scope
|
|
claim remain byte-identical. Attempted history remains intact because the
|
|
digest-only head cannot preserve the physical Qdrant namespace needed later.
|
|
Retention faults are reported as degraded daemon physiology; they neither
|
|
change projection completion nor suppress the health projection.
|
|
|
|
Four focused tests prove stale-snapshot refusal, unrelated-row identity,
|
|
idempotent replay, type separation, running-authority refusal, exact current
|
|
ready-chain preservation, and rejection of hostile future generations even
|
|
inside the recent window. A warning-free production binary check covers the
|
|
daemon wiring. Exact packaged copied-live proof remains the acceptance boundary;
|
|
physical Qdrant epoch cleanup remains a distinct executor-owned action.
|
|
|
|
The first exact packaged copied-state run exposed a catalog crossing omitted by
|
|
the initial map. Logical retention writes into the canonical Mind and Modeling
|
|
stores, so every general reader of those stores must recognize the evidence-head
|
|
schema even though only the retention owner may write or interpret it. The
|
|
projector cache already registered the head; `agent_memory_cache` and
|
|
`runtime_spine_cache` did not, causing current semantic input/health reads to
|
|
refuse the entire store after the first successful retirement. Both canonical
|
|
source catalogs now register the head as evidence-only. Projection-input tests
|
|
persist a head and prove current Mind and Modeling derivation remains unchanged.
|
|
This is schema legibility, not shared decision authority.
|
|
|
|
### Accepted semantic logical-retention boundary
|
|
|
|
Exact pushed source `b1e8c89a` is accepted live. Its warning-free 24-binary
|
|
release is
|
|
`sha256-3ce86fa7ce0ce15d78756d1f57b56e972d9bc37be3115b302ec567ce5e9b202e`
|
|
with witness
|
|
`sha256-fb1dd5599340a2e94600994d68661ed53820ba7fc605ac5b753f5e9632b46baf`.
|
|
On pristine copied state it retired exactly three superseded unattempted
|
|
Modeling obligations, changed no unrelated envelope, preserved all 20 Mind
|
|
envelopes byte-identically, preserved exact semantic health, and replayed with
|
|
zero retention mutation. Receipts live under
|
|
`.epiphany-run/semantic-retention-b1e8c89a` and
|
|
`.epiphany-run/linux-package-b1e8c89a`.
|
|
|
|
### Semantic physical-retirement authority map
|
|
|
|
- Owner: canonical logical retention emits immutable physical-retirement
|
|
authority; the semantic executor owns exact Qdrant deletion; the canonical
|
|
source store owns terminal receipt admission.
|
|
- Inputs: an exact historical obligation and attempt namespace, exact collection
|
|
identity, swarm and partition, obligation ID, claim ID and epoch, plus the
|
|
canonical retention authorization proving that namespace inactive.
|
|
- Outputs: one durable retryable physical-retirement obligation, deletion of
|
|
only points matching the full namespace, and one terminal receipt recording
|
|
observed/deleted count and completion time.
|
|
- Derived state: the cumulative logical retention head remains evidence only.
|
|
It is not a retry address and cannot authorize backend deletion.
|
|
- Forbidden writers: backend age scans, current collection configuration, and
|
|
inferred naming conventions cannot invent historical identity. Logical
|
|
retention cannot delete an attempted lifecycle before durable physical
|
|
authority exists. Qdrant failure cannot alter semantic readiness.
|
|
- Shared paths: every daemon pulse retries the same pending typed obligations.
|
|
Only a terminal physical receipt permits later logical compaction of that
|
|
attempted family; receipt retention is a later bounded cut.
|
|
- Cut line: do not mass-delete attempted history or infer an old collection from
|
|
current configuration. The current attempt schema does not yet persist the
|
|
collection/configuration identity required for failed partial writes; resolve
|
|
that ownership seam from source before implementation.
|
|
|
|
Source inspection resolved the first half of that seam. The Qdrant endpoint and
|
|
collection are selected by `MemorySemanticIndexConfig` in the resident projector
|
|
body, after Idunn previously created the attempt. The attempt therefore owned
|
|
claim/epoch identity but not the physical address used by its writes. Acquisition
|
|
now receives the same exact config used by execution and persists both endpoint
|
|
and collection on the attempt before backend I/O. Execution compares its live
|
|
config with that acquired namespace and terminally fails the claim before any
|
|
backend call when they differ. Migrated historical attempts retain empty paired
|
|
fields rather than receiving invented history; they remain non-retirable until
|
|
operator-grounded evidence can name their old backend.
|
|
|
|
This is only the address-ownership foundation. The next cut must atomically emit
|
|
typed physical-retirement obligations for inactive attempted epochs, process
|
|
only obligations whose endpoint is permitted by current projector policy, and
|
|
admit exact deletion receipts before logical lifecycle compaction.
|
|
|
|
The typed physical cut is now implemented in source. A full-snapshot-fenced
|
|
authorization pass considers only generations below the retained window and
|
|
refuses future or running authority. Each exact terminal attempt must retain its
|
|
authenticated Idunn grant or recovery authorization. The immutable retirement
|
|
obligation binds the old source obligation, attempt, claim and epoch, swarm and
|
|
partition, Qdrant endpoint and collection, plus a digest over current canonical
|
|
authority and the exact historical lifecycle rows. A changed timestamp replays
|
|
the existing obligation rather than minting a new identity.
|
|
|
|
The executor first requires the recorded endpoint and collection to equal the
|
|
current managed projector configuration. Foreign persisted endpoints are
|
|
refused before backend reads. It then reauthenticates the source rows and digest,
|
|
scrolls only the full five-field namespace `(swarm, partition, obligation,
|
|
claim, epoch)`, deletes those exact point IDs, rescrolls to prove absence, and
|
|
appends a terminal receipt under a full-snapshot fence. Backend failure writes
|
|
no receipt and preserves retry authority. Logical compaction accepts attempted
|
|
history only when every attempt has a matching terminal physical receipt; it
|
|
then retires lifecycle and cleanup documents into the cumulative head in the
|
|
same fenced compaction.
|
|
|
|
The daemon runs authorization and pending cleanup before logical retention on
|
|
each pulse. The endpoint gate is deliberately policy-bound: a historical
|
|
endpoint no longer present in current managed policy remains pending rather
|
|
than turning canonical state into arbitrary network deletion authority. Exact
|
|
package and copied-live Qdrant proof remain the acceptance boundary.
|
|
|
|
Exact `6bc3ec3f` closes that boundary. Release
|
|
`sha256-fb1bf9258a7d977fd92d6f8ee17bb540fa870477cdf1d3cea9707ec8d582d4aa`
|
|
with witness
|
|
`sha256-b42dba7296739dc48ecf0d8014a16f9d232cd723ed0292830d50879f546c0e6d`
|
|
passed exact 24-binary inspection. In copied live state, the packaged daemon
|
|
deleted two points in the exact old `(swarm, partition, obligation, claim,
|
|
epoch)` namespace while preserving a same-obligation foreign epoch and a
|
|
same-claim foreign obligation. It compacted all logical and physical lifecycle
|
|
rows only after the terminal receipt; replay was inert. With Qdrant absent, the
|
|
same package preserved the durable obligation without a receipt or attempted
|
|
logical compaction; restart consumed that same authority and completed exactly
|
|
once. Ordinary Mind health and all canonical hashes remained unchanged.
|
|
|
|
Semantic retention is therefore bounded at both logical and physical layers for
|
|
new namespace-bearing attempts. Historical migrated attempts without recorded
|
|
endpoint/collection remain deliberately durable; no inference path may retire
|
|
them. This is honest residual evidence, not active growth. The next retention
|
|
organ is Persona conversation history, followed by the remaining broad organ
|
|
matrix and stable Starfire network ownership.
|
|
|
|
The copied-live physical audit sharpened the next ownership boundary. A durable
|
|
physical-retirement obligation must be emitted before an attempted lifecycle can
|
|
retire. It must carry exact collection name, obligation ID, claim ID, claim
|
|
epoch, partition/swarm, and the canonical retention authorization that proved
|
|
the namespace inactive. The semantic executor alone may delete points matching
|
|
that entire namespace and then write a terminal receipt. Backend failure leaves
|
|
the obligation pending and cannot affect readiness. The logical retention owner
|
|
must preserve attempted lifecycle until that obligation exists; a cumulative
|
|
digest is evidence, not a retry address.
|
|
### Typed attempts own retry eligibility
|
|
|
|
The c006 live run exposed a split between typed runtime authority and resident
|
|
cancellation. A coordinator process receipt owns process closure, but it does
|
|
not own whether a typed request may launch again. The immutable typed launch
|
|
and runtime-owned fulfillment chain own that decision.
|
|
|
|
- Receipt binding is structural: exact session incarnation, thread, grant,
|
|
launch, policy, argv, objective, release, and executable digests. Terminal
|
|
status is classified only after that binding succeeds.
|
|
- A successful coordinator receipt with no observed attempt may briefly retain
|
|
the active lease while asynchronous typed publication arrives.
|
|
- Once an exact typed attempt exists, missing terminal fulfillment remains
|
|
`awaiting-fulfillment`, including across brake, shutdown, or timeout. Those
|
|
signals cannot manufacture supersession.
|
|
- A hostile terminal typed claimant closes the exact resident grant as
|
|
`unfulfilled` and leaves its pressure consumed. It cannot become another
|
|
Heartbeat grant.
|
|
- Generic cancellation may return a typed pressure to Heartbeat only when no
|
|
immutable typed attempt exists. Explicit runtime-owned supersession remains
|
|
the sole route to a later attempt.
|
|
|
|
The negative verification is the c006 failure shape itself: a fully bound
|
|
`failed` coordinator receipt plus an invalid terminal proposal Modeling result
|
|
must settle once, must not crash resident Self, and must not issue attempt
|
|
three. Exact live replay remains the package acceptance boundary.
|
|
# Accepted typed-attempt terminality and c006 settlement — 2026-08-10
|
|
|
|
- Owner: runtime spine owns whether typed worker output is authentic; resident
|
|
Self owns settlement of the exact grant and pressure after coordinator process
|
|
closure.
|
|
- Inputs: the exact active lease and grant, structurally bound coordinator
|
|
receipt, immutable typed launch attempt, and runtime-owned fulfillment result.
|
|
- Outputs: fulfilled work closes normally; hostile terminal output closes the
|
|
exact grant as `unfulfilled`; pending attempted work retains its active lease.
|
|
- Derived state: coordinator success is a classification after binding, not part
|
|
of receipt identity. Heartbeat acknowledgement is notification, not authority
|
|
to recreate a typed attempt.
|
|
- Forbidden writers: generic cancellation cannot return a pressure after an
|
|
immutable typed attempt exists; Heartbeat cannot issue a replacement attempt
|
|
from a terminal acknowledgement; a failed coordinator receipt cannot bypass
|
|
structural binding.
|
|
- Shared paths: `once` and `serve` use the same settlement path. Copied and actual
|
|
c006 replay used exact packaged `c693aaea` and converged at resident revision
|
|
22 with no third grant under the cognitive brake.
|
|
- Cut line: source `c693aaea`; release `sha256-fd46323a`; witness
|
|
`sha256-8ad95c0a`. Exact pre/post receipts are under the c006 intervention and
|
|
replay directories named in the fresh-workspace handoff.
|
|
- Verification layer: 654 core tests plus nine swarm tests; exact 24-binary
|
|
package inspection; copied active-attempt settlement; actual corrupted-state
|
|
intervention; two bounded actual Heartbeat pulses with brake present and grant
|
|
absent.
|
|
|
|
# Heartbeat graceful shutdown authority map — 2026-08-10
|
|
|
|
- Owner: the Heartbeat serve process owns its termination signal and the point
|
|
at which its scheduling loop stops.
|
|
- Inputs: SIGINT/SIGTERM, the current atomic pulse transaction, the configured
|
|
interval, and an optional bounded iteration ceiling.
|
|
- Outputs: no new pulse after shutdown is observed, interruptible idle wait, one
|
|
final `epiphany.heartbeat.serve_receipt.v0` with `shutdownRequested=true`, and
|
|
process exit zero.
|
|
- Derived state: Docker stop timeout is supervision pressure only; it is no
|
|
longer the termination mechanism. A signal cannot roll back an in-flight
|
|
atomic pulse and therefore takes effect at the next transaction boundary.
|
|
- Forbidden writers: Docker's eventual SIGKILL, artifact sequence, provider
|
|
readiness, and the resident Self process do not decide Heartbeat closure.
|
|
- Shared paths: bounded completion and signal completion converge on the same
|
|
final typed serve receipt. Every interval wait observes the same atomic signal
|
|
owner.
|
|
- Cut line: install one process-local signal owner before entering `serve`; stop
|
|
before the next pulse after a signal and replace every blocking interval sleep
|
|
with a signal-aware wait. Do not add persisted shutdown authority or a repair
|
|
loop.
|
|
- Verification layer: pure stop/wait tests, focused Heartbeat binary tests, then
|
|
exact packaged Linux serve under the copied c006 cognitive brake with SIGTERM,
|
|
exit zero, final shutdown receipt, and no new grant.
|
|
|
|
# Orphan worker Continuity authority map — 2026-08-10
|
|
|
|
Current mechanism: the coordinator persists an immutable runtime worker launch,
|
|
spawns `epiphany-openai-runtime run-worker` with an activation-capability digest,
|
|
then waits for the child-authored exact process claim before presenting the
|
|
preimage. The worker cannot enter watchdog, provider, model, or tool paths before
|
|
activation. Runtime result admission atomically replaces the active claim with
|
|
`terminal-result`; generic runtime completion atomically replaces it with
|
|
`terminal-failure`; resident Continuity may replace it with `terminal-death`
|
|
only after exact native process observation.
|
|
|
|
- Owner: the worker runtime owns claiming its exact native process incarnation
|
|
before model or tool work. Runtime Continuity owns activation, terminalization,
|
|
and exact-death recovery of that claim. Resident Self only decides whether the
|
|
authenticated typed request is fulfilled after those runtime facts exist.
|
|
- Inputs: immutable worker launch/job, captured PID/creation token/executable,
|
|
explicit activation bound to that claim, native exact-process observation,
|
|
and authenticated terminal worker result.
|
|
- Outputs: `claimed` before consequence-capable work, `active` only after one
|
|
explicit activation, then exactly one `terminal-result`, `terminal-failure`,
|
|
`terminal-death`, or `terminal-unactivated`. A terminal failure/death/
|
|
unactivated attempt may be superseded by a distinct job/binding incarnation
|
|
without deleting the prior launch family.
|
|
- Derived state: coordinator artifact PID and detached `Child` handle are
|
|
diagnostic only. Request identity remains retry-stable; launch, worker claim,
|
|
process, session, and artifact directory are attempt-incarnation state.
|
|
- Forbidden writers: receipt absence, coordinator death alone, elapsed time,
|
|
generic resident cancellation, and `roleFailureReview` prose cannot declare an
|
|
orphan worker dead or authorize a retry. A worker without an activated exact
|
|
claim cannot invoke model/tools or publish a terminal result.
|
|
- Shared paths: proposal Modeling, Imagination consideration, and admitted model
|
|
direction must use the same worker start gate and terminal claim primitive.
|
|
The worker itself claims before all provider/tool routes; no coordinator-only
|
|
happy path may bypass it.
|
|
- Cut line: implemented in `runtime_spine.rs`, `epiphany-openai-runtime`, the
|
|
coordinator launcher, and resident Self. `roleFailureReview` no longer owns
|
|
proposal retry. All three typed lanes consult exact process terminality, and
|
|
dead runtime-link projections are demoted before planning a replacement.
|
|
Generic job completion now owns one snapshot-fenced write of the runtime job,
|
|
generic result, completion event, and terminal-failure claim. The remaining
|
|
cut is packaged Linux falsification, not another retry policy.
|
|
- Verification layer: kill before claim, after claim/before activation, after
|
|
activation/before result, and after valid result/before coordinator receipt;
|
|
prove no model/tool work before activation, no dual live attempts, same typed
|
|
request with distinct attempt/process/artifact identities, exact replay, and
|
|
retention non-resurrection across all three typed lanes. Source evidence now
|
|
includes exact process/result race tests, activation CLI ordering, typed retry
|
|
for proposal/Imagination/model direction, stale-link demotion, canonical Self
|
|
settlement, core 661 passed/1 ignored, swarm 9, coordinator 17, and OpenAI
|
|
runtime 15+10+10. Exact 75b84180 package inspection authenticates 24 binaries,
|
|
release sha256-3959bcb3, witness sha256-6e34eb0a, and zero warnings. Packaged
|
|
Linux proves terminal-unactivated without provider work, durable claimed and
|
|
active orphan shapes after SIGKILL/no OOM, native terminal-death, canonical
|
|
requeue, and one same-request distinct retry without dual live authority. The
|
|
retry exposed an activated generic-failure path that left its claim active;
|
|
exact pushed 7637b1cf now closes that path atomically. Its authenticated Linux
|
|
package has release sha256-fa3a1e15, witness sha256-f5c3a576, 24 binaries,
|
|
and zero warnings. Fresh copied state proves model-transport failure produces
|
|
one Failed job plus terminal-failure claim, canonical resident settlement
|
|
requeues once, and a distinct same-request attempt receives its own process
|
|
and terminal authority while the first remains terminal. Valid-result-before-
|
|
receipt and retention replay remain the open boundaries.
|
|
|
|
## Receipt-free typed fulfillment settlement owner
|
|
|
|
- Owner: resident Self owns whether a dead receipt-free coordinator completes,
|
|
waits, or cancels its exact grant. The swarm binary owns native observation
|
|
and supplies policy inputs only.
|
|
- Inputs: exact resident lease and grant, authenticated runtime-owned typed
|
|
fulfillment, exact coordinator incarnation, native child observation,
|
|
shutdown/brake/timeout, time, and cooldown.
|
|
- Outputs: fulfilled evidence plus exact coordinator death recovery closes the
|
|
original grant `recovered-fulfilled`; pending live worker authority remains
|
|
awaiting; terminal unfulfilled authority follows canonical cancellation.
|
|
- Derived state: binary outcome projection and Heartbeat visibility do not own
|
|
settlement. A consumed pressure is historical request authority, not a retry
|
|
queue entry.
|
|
- Forbidden writers: binary-local classifiers, receipt absence alone, elapsed
|
|
time, and terminal acknowledgement presence cannot manufacture completion or
|
|
retry.
|
|
- Shared paths: `once` and `serve` both enter the same resident function through
|
|
`cycle`; all three typed request families use runtime-owned fulfillment.
|
|
- Cut line: delete the private binary settlement function and cancellation
|
|
classifiers; resident Self performs recovery and the exact grant CAS.
|
|
- Verification: admitted-model-direction result before coordinator receipt,
|
|
exact missing-child recovery, one recovered-fulfilled grant, consumed
|
|
pressure, byte-identical replay refusal, and no Heartbeat retry. Source passes
|
|
661 core tests with one ignore plus seven swarm tests. Exact package and copied
|
|
Linux proof remain.
|
|
|
|
Exact `2e66433f` closes the source and Linux function-level gate. Its release is
|
|
`sha256-1863385b` with witness `sha256-02f1d04f`, 24 binaries, and zero warnings.
|
|
The Linux fixture proved fulfillment with zero coordinator receipts, one
|
|
recovered-fulfilled original grant, consumed pressure, byte-identical replay
|
|
refusal, exact closed-lifecycle retention, and no retry before or after
|
|
retention. The fixture linked exact pushed source; it did not execute the
|
|
packaged swarm CLI. Direct packaged-binary provenance remains open alongside
|
|
the proposal Modeling and Imagination variants.
|
|
|
|
### Packaged settlement and co-resident retention fence
|
|
|
|
The exact `2e66433f` packaged `epiphany-swarm` now directly proves the
|
|
admitted-model-direction case: zero coordinator receipts plus authenticated
|
|
typed fulfillment and exact process death settle the original grant as
|
|
`recovered-fulfilled`, keep its pressure consumed, clear active authority, and
|
|
exit zero. Exact packaged repository-Body bind/observation supplies the domain
|
|
authority, and cognitive runtime identity remains distinct from release
|
|
provenance throughout the run.
|
|
|
|
Resident lifecycle retention owns deletion of only pressure/grant/ack/claim
|
|
families and replacement of its singleton head. Its compare-and-swap fence,
|
|
however, must be the complete physical backing snapshot because resident
|
|
provider readiness legitimately shares the file. An owner-only snapshot is not
|
|
a full-snapshot fence and caused deterministic refusal after readiness was
|
|
published. The source cut reads every envelope for the fence, selects only
|
|
closed lifecycle envelopes for deletion, and preserves the co-resident row
|
|
byte-identically. Core 662/1 ignored and swarm 7 pass; copied exact-source replay
|
|
retired the packaged lifecycle and produced no retry. Exact packaging of this
|
|
fence remains the next gate.
|
|
|
|
Exact `52ee6b53` closes that packaging gate. Release `sha256-24a8faee` and
|
|
witness `sha256-c1d0f4f1` authenticate 24 binaries with zero warnings. A first
|
|
packaged cycle created the real co-resident readiness shape while settling the
|
|
zero-receipt typed result. After Heartbeat consumed the ack, a second packaged
|
|
cycle with retention zero retired the lifecycle and exited sleeping without a
|
|
replacement grant. Replay had neither retired work nor retry authority. The
|
|
full-backing fence is therefore accepted; Imagination and proposal Modeling
|
|
remain independent typed-fulfillment variants, not reasons to reopen retention
|
|
ownership.
|
|
|
|
The Imagination variant now has the same complete source-level proof. Runtime
|
|
accepts fulfillment only after the exact request, model basis, deterministic
|
|
candidate, launch binding, worker launch hash, and terminal role result agree.
|
|
Resident Self then settles the zero-receipt dead coordinator once, terminalizes
|
|
the original grant `recovered-fulfilled`, preserves consumed pressure, refuses
|
|
replay byte-identically, and permits lifecycle retirement without reopening a
|
|
grant. This changes no owner or production mechanism; it closes the missing
|
|
variant test. Exact packaged Imagination state remains the next evidence gate.
|
|
|
|
Exact packaged `52ee6b53` closes the Imagination evidence gate. The fresh Linux
|
|
state carried the complete runtime-owned candidate chain and zero coordinator
|
|
receipts; packaged Self settled the original grant `recovered-fulfilled` and
|
|
packaged retention later removed the Heartbeat-consumed lifecycle without
|
|
reopening authority. This proves the candidate companion remains producer-owned:
|
|
the first fixture attempt without it failed closed before resident settlement.
|
|
Proposal Modeling remains separate because its fulfillment validator also owns
|
|
the immutable proposal payload, Modeling context, and Evolution patch shape.
|
|
|
|
The proposal Modeling variant now crosses the full resident boundary in source
|
|
verification by reusing the runtime admission fixture rather than copying its
|
|
policy. Runtime remains owner of proposal/request/payload, Body-bound launch
|
|
context and hash, successful Modeling result, Evolution patch, and the single
|
|
safe routeable frontier. Resident Self sees only authenticated fulfillment and
|
|
owns exact zero-receipt death settlement, replay refusal, lifecycle retirement,
|
|
and non-resurrection. Core 663/1 ignored and swarm 7 pass. Direct packaged proof
|
|
still requires Linux-native construction because the worker launch's Body basis
|
|
cannot truthfully be minted under a Windows path and rebound later.
|
|
|
|
## Outer worker-attempt retention authority map
|
|
|
|
### Implemented failure-family cut
|
|
|
|
`resident_self::live_resident_self_typed_request_ids` is the cross-store
|
|
liveness owner: every surviving typed grant preserves its request. After
|
|
resident lifecycle compaction, `epiphany-swarm` passes that set to
|
|
`retain_failed_runtime_worker_attempts`. Runtime spine then retains the newest
|
|
configured failed attempts and may atomically replace an older exact family
|
|
with `EpiphanyArchivedRuntimeWorkerAttempt`. The archive accepts only one of
|
|
the three resident typed request echoes, a failed/cancelled runtime job, and an
|
|
exact terminal-death, terminal-unactivated, or terminal-failure claim with its
|
|
terminal authority. It deletes only the matching launch, claim, lane binding,
|
|
job, generic result, and job events under the full physical snapshot fence.
|
|
The request and all unrelated envelopes remain live.
|
|
|
|
### Fulfillment-capable tombstone cut
|
|
|
|
`archive_fulfilled_runtime_worker_attempt` first asks the runtime-owned typed
|
|
fulfillment verifier to authenticate the complete live attempt. It requires a
|
|
Completed generic job and a terminal-result claim bound to that exact result.
|
|
Proposal Modeling additionally requires exact Mind admission before the worker
|
|
scaffolding stops being the only owner of its patch. The atomic archive records
|
|
request kind, request ID, job ID, result ID, terminal status, exact retired type
|
|
counts, and chained digest. `runtime_typed_request_fulfillment` recognizes that
|
|
narrow tombstone only when no live launch, claim, or worker result coexists.
|
|
Thus resident settlement sees the same fulfillment before and after retention.
|
|
Producer-owned semantic companions and admission receipts are not retirement
|
|
cargo.
|
|
|
|
The all-lane source proof is now closed. Imagination and admitted model
|
|
direction each pass through real resident grant settlement, Heartbeat ack
|
|
consumption, and lifecycle deletion before worker archival; their candidate or
|
|
direction companion remains byte-identical and the tombstone answers the same
|
|
fulfillment query. Failed retention enumeration sorts exact terminal claims,
|
|
keeps the configured newest attempt, and archives the older eligible family.
|
|
The worker job is explicitly distinct from the coordinator's jobless
|
|
Continuity session; mixing those authorities is rejected.
|
|
|
|
Before retirement, runtime spine now authenticates the immutable failed launch
|
|
with the same lane facts that made it admissible: persisted typed request,
|
|
producer proposal where applicable, exact role/binding, runtime and thread,
|
|
launch-document digest, and exact typed context projection. Proposal Modeling
|
|
also binds repository/workspace/payload and Body-bearing Modeling carrier;
|
|
Imagination binds its one launch record and request/model projection; admitted
|
|
model direction binds the request/model projection directly. Failed terminal
|
|
status is not permission to launder malformed launch state into a tombstone.
|
|
Model-direction result admission now checks the same projected model hash.
|
|
|
|
- Owner: `runtime_worker_attempt` owns one immutable outer worker attempt's
|
|
typed request association and process-status semantics. Runtime spine retains
|
|
the CultCache transaction primitives for claim, result, and archival commits.
|
|
Resident Self supplies cross-store liveness but cannot delete runtime rows.
|
|
- Inputs: exact typed request identity; worker launch; lane-specific launch
|
|
binding; process claim; terminal role result and typed companion; runtime job
|
|
and terminal events; downstream result references; resident prepared/active
|
|
lease and terminal-ack liveness.
|
|
- Outputs: one per-attempt typed archive tombstone committed atomically with
|
|
deletion of that exact attempt family. Retry and fulfillment readers consume
|
|
the tombstone as terminal evidence for only its request/job/result tuple.
|
|
- Derived state: a cumulative retention head may count archives but cannot own
|
|
attempt death or request fulfillment. Missing launch/claim/result rows are not
|
|
evidence by themselves.
|
|
- Forbidden writers: completed model-session archival, coordinator receipt
|
|
retention, resident lifecycle retention, semantic retention, wall-clock age,
|
|
and artifact cleanup cannot retire outer worker authority. No generic sweep
|
|
may delete a claim or result independently.
|
|
- Shared paths: proposal Modeling, Imagination consideration, and admitted model
|
|
direction use one exhaustive typed-request projection, the same status
|
|
predicates, the same archive commit primitive, and common launch/claim/job
|
|
invariants, with lane-specific binding/companion validators.
|
|
- Cut line: archive only exact launch, terminal claim, terminal result,
|
|
lane-specific attempt binding/companion, and terminal job/event rows. Preserve
|
|
request, proposal, model, admission, and unrelated runtime families until a
|
|
separately mapped lifecycle owns them. The tombstone must be written in the
|
|
same full-snapshot CAS as deletion.
|
|
- Demotion: serialized process-status strings are wire representation, not local
|
|
policy owners. Resident recovery, coordinator retry, runtime fulfillment, and
|
|
retention derive their decisions from `WorkerProcessStatus`. Per-consumer
|
|
request-family arrays no longer decide which typed work exists.
|
|
- Verification layer: terminal-result/failure/death attempts; prepared/active/
|
|
unconsumed-ack refusal; downstream-reference refusal; stale snapshot race;
|
|
unknown-row byte identity; retry after archived failure; fulfillment after
|
|
archived success; duplicate archive replay; and negative proof that restoring
|
|
or deleting one old envelope cannot resurrect work.
|
|
|
|
The completed-session archive remains separate and accepts only terminal
|
|
`openai-model-adapter` jobs. Outer worker attempts are owned by the dedicated
|
|
per-attempt archive above; retry and fulfillment readers consume its tombstone
|
|
rather than inferring state from independently missing claim/result rows.
|
|
|
|
## CultCache single-file publication substrate
|
|
|
|
Single-file CultCache publication is owned by the exclusive writer. It encodes
|
|
one complete sorted snapshot, stages it beside the destination, syncs the staged
|
|
file, atomically replaces the destination, and then performs the parent
|
|
directory durability barrier. The committed destination is never deliberately
|
|
removed before replacement. A post-replacement durability error is ambiguous
|
|
commit evidence: callers must reread typed identity before considering any
|
|
retry; the error itself cannot authorize a duplicate consequence.
|
|
|
|
- Owner: `SingleFileMessagePackBackingStore::write_all_unlocked`, while holding
|
|
the destination's exclusive sibling lock.
|
|
- Inputs: the complete encoded snapshot, canonical destination, and existing
|
|
sibling directory.
|
|
- Outputs: one old-or-new complete destination snapshot; the next exclusive
|
|
write also removes abandoned regular staging siblings named exactly
|
|
`<destination>.<UUID>.tmp`.
|
|
- Derived state: staging files and the sibling lock are mechanics, never typed
|
|
recovery, replay, or work authority.
|
|
- Forbidden writers: destination truncation/removal, lockless repair, stale
|
|
staging publication, wildcard temp deletion, or error-code-driven retry.
|
|
- Shared paths: single-file push, delete, conditional replacement, append, and
|
|
compaction all converge on the same publisher and cleanup boundary.
|
|
- Cut line: cleanup is confined to the destination parent and exact destination
|
|
prefix plus valid UUID suffix; foreign names, other stores, directories, and
|
|
symlinks survive. The F: bind is not repaired by this cleanup and remains
|
|
rejected as a mutable authority substrate.
|
|
- Verification layer: exact packaged writers killed across randomized publish
|
|
boundaries, concurrent lockless decoding, reopen after every kill, monotonic
|
|
typed counts, file mode/ownership, abandoned-staging cleanup, and explicit
|
|
negative preservation of foreign siblings.
|
|
|
|
The exact Starfire Docker Desktop `F:` bind failed this layer: during packaged
|
|
writer interruption a lockless reader observed an empty published snapshot,
|
|
even though the later store decoded. Capability probes for rename and directory
|
|
fsync were therefore insufficient. A Docker named volume passed sixty
|
|
independent randomized writer kills and 5,000,000 concurrent lockless reads
|
|
without an empty, partial, undecodable, or regressing snapshot. Mutable resident
|
|
state must use the accepted Linux volume substrate; the Windows bind may carry
|
|
immutable package inputs and receipts, not live CultCache authority.
|
|
|
|
Exact source `a4756857` packages CultCache `0ba8745` as release
|
|
`sha256-b2e2793e` with witness `sha256-4bdb22ff`. On a fresh named volume,
|
|
forty continuously writing packaged process incarnations were killed at real
|
|
publication boundaries and all exited 137. Exact packaged status decoded after
|
|
each and never regressed. The concurrent lockless verifier completed 10,000,000
|
|
reads spanning 102-201 envelopes without an empty or invalid sight. The next
|
|
successful write left 200 typed events, mode 0644, uid/gid 0, and no regular
|
|
UUID staging sibling while preserving foreign-store, unknown-suffix, directory,
|
|
and symlink lookalikes.
|
|
|
|
### Braked grant / Heartbeat coordination evidence
|
|
|
|
Copied c006 proves the storage and process restart body while preserving the
|
|
existing pending authority. Heartbeat owns one running coordinator turn and the
|
|
resident store owns its exact proposal grant. Typed payload inspection proves
|
|
the grant is unconsumed and nonterminal, with exact Heartbeat schedule/action
|
|
equality. Resident Self therefore correctly has no prepared or active lease and
|
|
no child claim yet. The cognitive brake holds the grant without destroying or
|
|
launching it; Heartbeat's initiative-frozen projection is expected physiology,
|
|
not stale-turn evidence. Generic age repair or orphan terminalization would be
|
|
corruption here.
|
|
|
|
### Direct proposal Modeling closure
|
|
|
|
The Linux-native `53678374` fixture now constructs the remaining strong lane
|
|
without rebinding Windows-authored Body evidence. `commit_coordinator_job_launch`
|
|
owns the generation-one Body carrier and exact proposal launch binding;
|
|
`put_runtime_role_worker_result` authenticates the immutable proposal/request,
|
|
payload, context, launch hash, result, and one safe proposal-citing frontier;
|
|
`commit_repo_model_admission` owns Evolution adoption. Resident Self sees only
|
|
that runtime-owned fulfillment and closes its zero-receipt jobless coordinator
|
|
incarnation `recovered-fulfilled`.
|
|
|
|
Packaged resident lifecycle retention then deletes only the consumed
|
|
pressure/grant/ack family. Explicit worker archival replaces eight launch/job/
|
|
claim/result/binding/event envelopes with the proposal tombstone while leaving
|
|
the proposal, request, admitted model, frontier, and Mind receipt live.
|
|
`runtime_typed_request_fulfillment` returns the same request/job/result tuple
|
|
before and after that archive. The next Heartbeat grant names the independently
|
|
created admitted-model-direction request, proving causal forward routing rather
|
|
than proposal resurrection.
|
|
|
|
### Exact packaged retention evidence
|
|
|
|
Exact `53678374` closes the Linux package gate. Release `sha256-5d50fa7d` and
|
|
witness `sha256-1814d2b7` authenticate 24 binaries and zero warnings. On copied
|
|
state bound to an exact generation-one Repository Body, packaged swarm window
|
|
one archived the older of two failed proposal-Modeling attempts and the older
|
|
of two fulfilled admitted-model-direction attempts. Each archive replaced
|
|
seven exact envelopes with one tombstone; the configured newest family stayed
|
|
live. The failed tombstone does not satisfy attempt-exists. The fulfilled
|
|
tombstone returns the same exact job/result through
|
|
`runtime_typed_request_fulfillment` as the retained live family. Both packaged
|
|
cycles exited zero under the cognitive brake, so no coordinator or worker was
|
|
launched as an accidental side effect.
|
|
|
|
The live construction also falsified several invalid fixture shapes: a
|
|
Body-less Modeling carrier, a direction launch projecting the wrong model, a
|
|
worker without a terminal job family, and a worker job placed in the jobless
|
|
resident coordinator session. Production gates refused each shape. The
|
|
accepted fixture uses authenticated Body state, the exact persisted model,
|
|
distinct worker and coordinator sessions, a claimed/active worker incarnation,
|
|
typed result admission, generic job completion, and closed resident authority.
|
|
|
|
## Actual c006 braked endurance plateau
|
|
|
|
The deployed physiology now has a long-duration proof for the exact latest
|
|
body, not merely older idle and active releases.
|
|
|
|
- Owner: Heartbeat owns scheduling pulses; resident Self owns the active-turn
|
|
state machine; the cognitive swarm brake owns whether either may launch new
|
|
cognition. The detached monitor owns observation only.
|
|
- Inputs: exact `16407f7e` Heartbeat and Self executables, authenticated release
|
|
and witness, separate role-singleton locks, named-volume state, and the
|
|
engaged cognitive brake.
|
|
- Outputs: Heartbeat pulse projections, resident operator projections,
|
|
process/resource samples, store-size observations, and one final exact
|
|
packaged readiness projection.
|
|
- Derived state: CPU, RSS, block I/O, pulse count, and store sizes are sight.
|
|
They do not schedule, brake, complete, retain, or repair work.
|
|
- Forbidden writers: the monitor cannot release the brake, author grants,
|
|
alter resident state, restart owners, or interpret growth as permission to
|
|
compact authority.
|
|
- Shared paths: all 923 observed pulses traversed the production Heartbeat serve
|
|
loop and every resident observation came from the production Self serve
|
|
projection. Final readiness used the same packaged binary and mounted stores.
|
|
- Cut line: there is no watchdog or repair writer in the plateau. Any stopped
|
|
owner, grant, lease, revision change, wrong brake, or readiness degradation
|
|
fails the rite and preserves the receipts.
|
|
- Verification: 30 samples spanning iterations 573-1496 contain zero invariant
|
|
violations. `/state` stayed exactly 18,161,109 bytes and `/workspace` exactly
|
|
114,209,526 bytes. Heartbeat RSS stayed 28.63-28.88 MiB and resident RSS
|
|
54.11-55.50 MiB. Both containers remained alive. Final readiness was
|
|
authenticated, brake-engaged, `active`, and reason-free.
|
|
|
|
Receipts live under `.epiphany-run/c006-endurance-16407f7e`. The next broad
|
|
gate is autonomous frontier turnover across Self, Eyes, Modeling, Imagination,
|
|
and Mind; it must first run on copied exact state and must not acquire Hands or
|
|
Persona consequence authority.
|
|
|
|
## Receipt-bound internal cognition continuation
|
|
|
|
The first live frontier audit found a scheduling silence, not a permission
|
|
failure. A proposal-Modeling worker fulfilled its typed request and resident
|
|
Self correctly closed that grant, but the exact coordinator receipt ended at
|
|
`reviewModelingResult`. No domain-pressure owner converted that already-derived
|
|
Mind review into another grant, so a brake release could not advance c006.
|
|
|
|
- Owner: the exact fully resident-bound coordinator receipt owns one proposed
|
|
internal continuation. The coordinator remains the owner of live action
|
|
derivation; Heartbeat owns delivery order only.
|
|
- Inputs: the last settled receipt ID in resident state, the matching runtime
|
|
receipt, its authenticated thread and final action, terminal typed role state
|
|
for wait-to-review transitions, and the current planning lifecycle.
|
|
- Outputs: at most one idempotent
|
|
`coordinator-internal-continuation` pressure. Its launch is objective-free,
|
|
uses the receipt thread and mounted cognitive runtime, executes exactly one
|
|
step with auto-review and typed failed-result supersession, and carries the
|
|
receipt-derived required action.
|
|
- Derived state: receipt reason prose, rendered status, pulse artifacts,
|
|
readiness rows, timers, and operator projections are observations. They do
|
|
not create continuation authority.
|
|
- Forbidden writers: idle polling, retention, old role lanes, Hands, Persona,
|
|
deployment, and external consequence paths cannot create these pressures.
|
|
The safe action vocabulary excludes `continueImplementation`, Persona,
|
|
deployment, waiting states, and failure-review actions.
|
|
- Shared paths: proposal Modeling review, Research/Modeling/Verification launch
|
|
and review, and successful Imagination-to-Mind planning stages use the same
|
|
receipt-to-pressure primitive. Wait receipts become review pressure only
|
|
after their exact typed result is terminal.
|
|
- Cut line: there is no generic coordinator retry loop. A continuation starts
|
|
execute mode only when its exact action is safe. Before any action match, the
|
|
coordinator rederives live status; disagreement emits a no-consequence
|
|
required-action refusal, closes the stale pressure, and publishes the newly
|
|
derived action without executing it. If Mind rejects a terminal role result,
|
|
the coordinator's existing failure-review owner supersedes that exact result
|
|
and derives fresh work in the same bounded run; process failure is not the
|
|
rejection protocol.
|
|
- Verification: 30 resident tests and all 18 coordinator tests pass. Exact
|
|
receipt replay creates one pressure and one objective-free execution argv;
|
|
repeated ingestion is idempotent; a Hands final action creates no pressure;
|
|
and source order proves required-action refusal precedes every action effect.
|
|
|
|
Exact `c9a2a979` packages the corrected path as 24 binaries, release
|
|
`sha256-78b09d7c32867c71d593951f328a191b7261600a1d9e81d7fdcd35ce7414f218`,
|
|
and witness
|
|
`sha256-ddf32da018f5a53eb87f3ed5b87ccfa57616203970d6fdab9641ee1ac8f71f24`.
|
|
On fresh copied c006, one old receipt created grant 23; Mind rejected the
|
|
unanchored Modeling patch; coordinator failure review superseded it once inside
|
|
a successful new receipt; that receipt created distinct grant 27; and the
|
|
second run rederived `awaitFrontierProposal` and recorded a no-consequence
|
|
required-action refusal. Both grants completed. No process-failure retry
|
|
occurred, resident state ended idle at revision 34, and all existing
|
|
Hands/Persona/deployment envelopes remained byte-identical. The copied brake is
|
|
engaged and both copied owners exited zero.
|
|
|
|
The same body then replaced the two actual c006 provider processes without
|
|
changing their named stores. Bounded release reproduced the causal shape:
|
|
grant 44 wrote one exact failed-result supersession inside receipt
|
|
`coordinator-run-linux-eyes-tools-c005-1786407375735`; that receipt created
|
|
distinct grant 48; and its coordinator refused stale `reviewModelingResult`
|
|
because the live action was `awaitFrontierProposal`, with consequence `none`,
|
|
before completing receipt
|
|
`coordinator-run-linux-eyes-tools-c005-1786407379115`. Both exact grants are
|
|
terminal completed, resident state is idle at revision 34, the four protected
|
|
Hands/Persona/deployment-family envelopes are byte-identical, and final
|
|
authenticated readiness is active, brake-engaged, and reason-free. Actual
|
|
receipt-bound turnover is accepted.
|
|
|
|
## Narrow local Verse decision inputs
|
|
|
|
Aggregate local Verse context is an operator and topology projection, not a
|
|
default decision input. A command may read it only when its output genuinely
|
|
depends on several state families.
|
|
|
|
- Owner: each typed state family owns the decisions made from that family.
|
|
- Inputs: the single-daemon restart-policy writer reads one exact daemon-status
|
|
envelope plus explicit CLI policy fields.
|
|
- Outputs: one daemon restart policy bound to the status-owned daemon and
|
|
cluster identity.
|
|
- Derived state: Persona, Hands, receipt, telemetry, and unrelated daemon rows
|
|
remain projection data and cannot influence this write.
|
|
- Shared paths: `policy` and `write-policy` converge on the same writer.
|
|
- Cut line: `write_policy` no longer calls
|
|
`query_epiphany_local_verse_context`; reconciliation and runbook construction
|
|
retain aggregate reads because they enumerate policies, statuses, topology,
|
|
and brake scope.
|
|
- Verification: the exact loader returns only the requested typed envelope and
|
|
remains non-creating on an absent store; a source-boundary test refuses
|
|
aggregate-query regression in `write_policy`.
|
|
|
|
Direct `reconcile` also reads only one exact daemon status, one exact policy,
|
|
and the canonical brake. Its consequence helper accepts the brake itself, not
|
|
an aggregate context. Scheduler tick and cluster runbook keep aggregate context
|
|
because their output enumerates multiple daemon policies, statuses, topology
|
|
rows, and brake scope. Focused tests prove the direct source boundary and that
|
|
the narrow brake input preserves lifecycle-poke refusal semantics.
|
|
|
|
Single-target `epiphany-verse-query poke-daemon` follows the same cut. Exact
|
|
daemon status owns target identity, the canonical brake owns refusal, topology
|
|
rows supply only the requested display metadata, and the exact immutable intent
|
|
owns post-write confirmation. Two aggregate queries and the obsolete
|
|
context-shaped brake/topology wrappers are deleted. Bulk poke and triage remain
|
|
aggregate enumeration paths. The complete 19-test verse-query binary suite
|
|
passes without warnings.
|
|
|
|
The full classified batch then passed 669 library tests with one intentional
|
|
ignore, 29 daemon-supervisor tests, and 19 verse-query tests. Detached logs and
|
|
exit-zero status live under `.epiphany-run/narrow-verse-readers-161c6ec8`.
|
|
|
|
Exact pushed `ec54666c` packages that cut as Linux release
|
|
`sha256-4d7347980f2fad658ebc6206b0435f29e1151cfbb75ec2806a8df2d5eb7f63bd`
|
|
with witness
|
|
`sha256-d5e6671cd70e1aeb3df21d1e69fb015b831e2c63c272d7ef3e3bf5f61aac15d1`.
|
|
The copied live gate added one valid Hands daemon status to two copies of actual
|
|
c006 local-Verse state, then added a registered but deliberately undecodable
|
|
Mind-contract payload to only one copy. Exact packaged status, policy, direct
|
|
reconciliation, and single-target poke paths produced the same decisions on
|
|
both copies; reconciliation differed only by observation time. Every input
|
|
envelope remained byte-identical through the writes, including the hostile
|
|
payload. This proves the decision-input cut at the deployed CultCache layer,
|
|
not merely by source inspection: unrelated typed cargo can neither steer the
|
|
decision nor be silently repaired by it. Receipts live under
|
|
`.epiphany-run/narrow-verse-readers-ec54666c`.
|
|
|
|
## Runtime-owned Imagination candidate publication
|
|
|
|
The Imagination consideration result already entered through
|
|
`put_runtime_role_worker_result`, which authenticates the current request,
|
|
candidate causal fields and timestamp, deterministic candidate identity, exact
|
|
single launch binding, worker launch document hash, Imagination role/binding,
|
|
runtime/thread identity, current model projection, and absence of foreign
|
|
authority cargo. Before `ff9dacf1`, that owner persisted the generic result and
|
|
terminal process claim but not the candidate it had just authenticated.
|
|
Resident fulfillment consequently required a typed candidate envelope with no
|
|
production writer; tests supplied one directly and concealed the cut.
|
|
|
|
Runtime result admission now owns one atomic publication:
|
|
|
|
- Owner: authenticated runtime launch context owns candidate causality;
|
|
runtime terminal admission owns publication and timestamp; Imagination owns
|
|
only semantic proposal content.
|
|
- Inputs: exact request and quoted evidence, model-supplied disposition/title/
|
|
summary/rationale/options/uncertainties/recommended route, launch binding,
|
|
worker launch, process claim, and current model projection.
|
|
- Outputs: immutable worker result, terminal process claim, and exact typed
|
|
`ImaginationConsiderationCandidate` companion in one snapshot-fenced CAS.
|
|
Runtime derives request, feedback, packet, room, visibility, classification,
|
|
model, evidence-reference, contract, deterministic candidate, and timestamp
|
|
fields; none are model echoes.
|
|
- Derived state: resident fulfillment observes the admitted result/candidate;
|
|
it does not write either document.
|
|
- Forbidden writers: model output, resident settlement, review routing, tests,
|
|
and operator projections cannot synthesize candidate identity or evidence
|
|
provenance. Model output cannot choose an arbitrary evidence identifier.
|
|
- Shared paths: direct provider completion and replay both use
|
|
`role_worker_result_from_ingress` followed by
|
|
`put_runtime_role_worker_result`; coordinator finalization independently
|
|
CAS-fences only its exact session so concurrent worker publication does not
|
|
become a false conflict.
|
|
- Cut line: an existing candidate without its worker result is an orphan and
|
|
refuses admission; exact result replay requires the persisted companion to
|
|
remain equal. The old candidate-causality output fields are absent from the
|
|
model schema rather than tolerated and checked downstream.
|
|
- Verification layer: hostile model JSON containing every former causal field
|
|
and a substituted evidence reference produces a candidate whose complete
|
|
causal body comes from the authenticated request. Unrelated runtime writes
|
|
coexist with coordinator finalization while an exact session race refuses.
|
|
|
|
The focused atomic/idempotent, orphan-refusal, and receipt-free resident tests
|
|
pass, and the full core library passes 670 tests with one intentional ignore.
|
|
Exact Linux release
|
|
`sha256-6d237cda95de91d999de7403d843507fac89f1f2c091b114957a33118063a03b`
|
|
with witness
|
|
`sha256-3b37136d34e4d4b886544102ec43a258510e246d762640a686b02b29fb13fafc`
|
|
passed 24-binary inspection and a copied c006 braked-once zero-exit gate without
|
|
changing runtime, Mind, or Heartbeat stores.
|
|
|
|
The genuine packaged gate is now closed under exact `acd91e6e`, release
|
|
`sha256-1c5a16efdfd02e453df0fc53c81cf1848ccaaca72e53c528f3385da9c8725085`,
|
|
witness
|
|
`sha256-b592d64ed0d0c3b7b1ef858ae96533a6e890e3805de94cf2aa6438b99eb39401`.
|
|
Fresh copied c006 admitted one signed Bifrost public-feedback packet, issued one
|
|
Heartbeat grant, completed Imagination job
|
|
`12b670b7-e942-4390-98d7-54ab57908947`, and settled Self exactly once without
|
|
retry. Runtime ended with zero open jobs and no actionable Hands or Eyes
|
|
frontier. Mind, Body, workspace coverage, and workspace Git state stayed exact;
|
|
a braked restart issued no grant and resurrected no work. The rejected
|
|
`af2581b5` and `b661ec4b` runs remain receipts for the full-snapshot and
|
|
model-authored-provenance faults instead of being rewritten into victory prose.
|
|
|
|
## Atomic legacy coordinator repair
|
|
|
|
Legacy coordinator repair is one Continuity transaction over the complete
|
|
observed runtime snapshot. It is not a loop of independently committed family
|
|
repairs.
|
|
|
|
- Owner: runtime Continuity owns the batch decision under one full-snapshot
|
|
fence.
|
|
- Inputs: active legacy coordinator sessions, their sole exact receipts,
|
|
joblessness, coordinator-started event families, and immutable runtime
|
|
identity.
|
|
- Outputs: every eligible session becomes Completed and receives its
|
|
deterministic completion event in one CAS.
|
|
- Derived state: deterministic session ordering affects returned presentation
|
|
only; it owns no partial commit boundary.
|
|
- Forbidden writers: an earlier valid family cannot publish before every
|
|
observed candidate family validates.
|
|
- Cut line: any ambiguous receipt, foreign job, malformed start family, or
|
|
concurrent snapshot change refuses the whole batch without mutation.
|
|
- Verification: exact `aa841873` adds a valid family before an ambiguous family
|
|
and proves the complete pre/post snapshot remains byte-identical. The full
|
|
core library passes 670 tests with one intentional ignore.
|
|
|
|
The same genuine core delta proves restored release-profile ownership under
|
|
source change. Persistent-cache packaging completed in 37.27s wall/Cargo
|
|
29.54s versus the prior 5m02s baseline, producing 24-binary release
|
|
`sha256-dd4f05cb2e7f1b26156e7c9d5ed58f6d97ce5808d123b1bec343bfac59bf2ce7`
|
|
and witness
|
|
`sha256-793b29fcb7af4f8314a46f0fe0013cc8f5f382e7490a32c160385d29359adca5`
|
|
with zero warnings. An identical replay completed in 8.65s wall/Cargo 0.69s
|
|
and reproduced both identifiers exactly. Incremental cache state therefore
|
|
accelerates construction without becoming release authority.
|
|
|
|
## Governed directory inventory sight
|
|
|
|
Directory observation is a bounded source faculty, not Heartbeat authority.
|
|
|
|
- Owner: the native `epiphany_source` adapter owns workspace-confined,
|
|
read-only directory observation.
|
|
- Inputs: one canonical path beneath the worker workspace plus explicit depth,
|
|
entry, and sample ceilings.
|
|
- Outputs: deterministic counts of entries, files, directories, symlinks, and
|
|
regular-file bytes; bounded path samples; and explicit entry/depth
|
|
truncation state.
|
|
- Derived state: samples are presentation evidence. Aggregate totals are
|
|
admissible only when `complete=true`; neither totals nor filenames decide
|
|
whether a Heartbeat grant is live or terminal.
|
|
- Forbidden writers: shell execution, symlink traversal, outside-workspace
|
|
reads, mutation, operator-supplied counts, and arbitrary CultCache
|
|
inspection are absent from this organ.
|
|
- Shared paths: Eyes, Modeling, and Soul receive the same model-tool contract,
|
|
native execution path, and completeness rule.
|
|
- Cut line: `directory_inventory` is general source sight beside `read_file`;
|
|
it is not a special Heartbeat inspector and cannot become a second state
|
|
authority.
|
|
- Verification: focused tests prove exact totals, deterministic order,
|
|
confinement, and explicit truncation. Exact packaged `31dcd351` invoked the
|
|
tool in copied live cognition and measured 72 directories, 74 files, and
|
|
3,975,362 bytes with `complete=true`. Modeling refused to infer post-brake
|
|
grant terminality from artifact names, preserving the ownership boundary.
|
|
|
|
## Grant-owned resident lifecycle sight
|
|
|
|
Resident lifecycle observation and scheduling now read the same authority.
|
|
|
|
- Owner: each exact `ResidentSelfHeartbeatGrant` owns its consumed and terminal
|
|
state; `ResidentSelfState` owns whether that grant is prepared or active.
|
|
- Inputs: one explicitly bound resident store, an optional exact grant ID, and
|
|
a bounded recent-row limit.
|
|
- Outputs: typed pressure/schedule/action identity, consumed and terminal
|
|
timestamps/status, active/prepared flags, and derived `launchable` state.
|
|
- Derived state: the projection is read-only evidence. Terminal acknowledgements,
|
|
retention heads, filesystem artifacts, and pulse names cannot decide whether
|
|
a grant may launch.
|
|
- Forbidden writers: the tool adapter cannot discover sibling stores, inspect
|
|
generic CultCache cargo, mutate resident state, or infer authority from
|
|
filenames.
|
|
- Shared paths: Heartbeat issuance, pending-grant selection, and projection all
|
|
use `resident_self_grant_is_pending`; there is no observer-only definition of
|
|
launchability.
|
|
- Cut line: the native `epiphany_state.resident_grant_lifecycle` tool is exposed
|
|
only to Eyes, Modeling, and Soul and only when the authenticated resident
|
|
launch forwards its exact state-store binding.
|
|
- Verification: exact `34d75d05` unit coverage proves an older terminal grant
|
|
remains non-launchable beside a later retry. Exact packaged copied cognition
|
|
observed the same shape; after three strict duplicate-field result failures,
|
|
attempt four admitted typed evidence and resident Self terminalized the exact
|
|
original grant once under the brake. No new grant appeared.
|
|
|
|
The three failed attempts are not accepted reliability evidence. The next cut
|
|
belongs to role-result schema construction/model ingress: preserve strict
|
|
duplicate-field rejection while making the first model-produced result conform
|
|
to its one-owner schema.
|
|
|
|
## Runtime-owned proposal Modeling publication
|
|
|
|
Proposal Modeling owns semantic frontier judgment, not RepoModel causality.
|
|
|
|
- Owner: authenticated runtime launch context owns request/proposal identity,
|
|
model base, Body observation basis, patch identity, deterministic frontier
|
|
identity, evidence binding, and publication time. Modeling owns only the
|
|
closed `proposalFrontierDraft` plus ordinary role verdict/summary sight.
|
|
- Inputs: one immutable proposal Modeling request and launch context, the
|
|
current RepoModel projection, and one strict semantic draft.
|
|
- Outputs: one ordinary role result containing a runtime-composed
|
|
`RepoModelPatch` with exactly one active frontier upsert.
|
|
- Derived state: provider response-format strictness is derived recursively
|
|
from the closed schema. Every constant declares its JSON type; this is a
|
|
provider contract, not a relaxation of runtime admission.
|
|
- Forbidden writers: the model cannot author request IDs, proposal IDs, Body
|
|
basis, patch IDs, base hashes/revisions, timestamps, evidence provenance, or
|
|
arbitrary patch operations. A retry parser cannot merge duplicate fields or
|
|
repair missing anatomy.
|
|
- Shared paths: direct provider completion and replay both pass through
|
|
`role_worker_result_from_ingress` and existing runtime role-result admission.
|
|
- Cut line: the generic proposal full-`RepoModelPatch` schema is absent.
|
|
Legacy non-proposal Modeling schemas remain separate and retain their
|
|
downstream gates.
|
|
- Verification: exact `e723058a`, release
|
|
`sha256-6428f9194c261806a8859ccff9efeb9bb041a0103c5bbd8fac617aae265a651e`,
|
|
witness
|
|
`sha256-7ee2e14548bad526e946fbd79b555b7891d2eb6e2917856fefb1ebb7aeebd995`
|
|
produced one first-attempt outer Modeling result on fresh copied state, zero
|
|
open jobs, and no Hands/Eyes authority. The copied owners stopped at exit
|
|
zero under the restored brake.
|
|
|
|
The proposal grant and outer worker are single-attempt proven. Downstream
|
|
coordinator review is not yet single-consumption proven: the live run emitted
|
|
two receipt-bound `reviewModelingResult` continuation grants for the same
|
|
proposal-bound result before settlement. That route is the next ownership cut.
|
|
|
|
### Receipt-bound role review continuation
|
|
|
|
- Owner: the runtime-linked role result owns when review becomes runnable;
|
|
resident Self owns idempotent conversion of the exact coordinator receipt
|
|
into one continuation pressure.
|
|
- Inputs: exact last coordinator receipt, authoritative thread runtime link,
|
|
and runtime job/result terminal status.
|
|
- Outputs: no pressure while the result is pending; one deterministic
|
|
`{receipt_id, review_action}` pressure after terminal publication.
|
|
- Derived state: a receipt's `review*Result` string is intent, not readiness.
|
|
- Forbidden writers: coordinator final-action prose, pulse timing, cooldown,
|
|
and process exit cannot make a pending result reviewable.
|
|
- Shared paths: direct `reviewResearchResult`, `reviewModelingResult`, and
|
|
`reviewVerificationResult` receipts use the same terminal predicate as
|
|
`waitFor*Result` conversion.
|
|
- Cut line: review actions are removed from the unconditional direct-action
|
|
set. The terminal predicate reads through the runtime-spine cache, which owns
|
|
every schema in the heterogeneous store; the thread-only cache is not a
|
|
runtime-store reader.
|
|
- Verification: focused coverage proves a pending direct review receipt emits
|
|
no continuation, then the same exact receipt emits one after its linked job
|
|
and typed result become terminal; repeated ingestion remains idempotent.
|
|
Thirty resident tests pass. Exact packaged copied replay remains required.
|
|
|
|
Exact packaged `9f597ca2` proved the pending gate but exposed a second owner:
|
|
the role-review transaction updated typed coordinator state, while its run
|
|
receipt retained the action captured before the transaction. Receipt action is
|
|
now refreshed from post-transaction coordinator status after successful role
|
|
acceptance, failure supersession, or admission rejection. The receipt remains
|
|
the continuation source, but can no longer ask Heartbeat to replay an action
|
|
the same transaction already consumed. Exact packaged `d4907ee8` proved this
|
|
cut live on copied state: one proposal grant, one outer Modeling job, one
|
|
terminal review continuation, then `awaitFrontierProposal`; no second review
|
|
grant appeared. Runtime had zero open jobs, Hands/Eyes remained false, the copy
|
|
was braked, and both owners exited zero. Post-transaction typed coordinator
|
|
state is now the sole final-action owner for these review paths.
|
|
## Braked resident maintenance and ingress cadence
|
|
|
|
- Owner: the resident serve loop owns maintenance cadence; retention organs
|
|
own what may be retired, not how often a stable runtime is rescanned.
|
|
- Inputs: cognitive brake, shutdown signal, resident revision, prepared/active
|
|
lease state, and producer-owned typed source stores.
|
|
- Outputs: maintenance runs on startup, resident revision change, or a bounded
|
|
60-second deadline. Stable braked pulses only observe/reconcile resident
|
|
authority and publish operator physiology. Stable released polls still scan
|
|
producer ingress at the configured wake cadence, but do not repeat retention.
|
|
New domain and continuation pressure are ingested only after brake release.
|
|
- Derived state: poll interval, readiness projection, and pulse count are not
|
|
retention or cognition-ingress authority.
|
|
- Forbidden writers: a braked pulse cannot bind a new repository domain,
|
|
derive resident pressure, import Bifrost delivery, or create a grant. It also
|
|
cannot erase producer-owned evidence waiting in runtime or crossing stores.
|
|
- Shared paths: brake and shutdown use the same ingress refusal boundary;
|
|
prepared/active child reconciliation remains live so the brake can drain and
|
|
terminalize exact existing authority.
|
|
- Cut line: unconditional retention scans no longer follow poll cadence, and
|
|
`cycle` no longer runs repository/domain/continuation ingress while braked.
|
|
- Verification: exact packaged `3f37503e` on copied 23 MiB runtime state held
|
|
revision and runtime/local-Verse hashes stable, created no grant, exited zero,
|
|
and measured 0.29-0.33% CPU at one-second cadence versus prior 10-24% spikes.
|
|
Exact packaged `f04abd6b` then proved released sleeping at five-second
|
|
cadence: 91 process ticks over 30 seconds (about 3.0% of one core), stable
|
|
revision/runtime hash, no grant, restored brake, and clean exit zero. A
|
|
second exact braked process start held the same authority/hashes at 0.36%
|
|
sampled CPU and exited zero again, proving startup stewardship without
|
|
resurrection.
|
|
|
|
## Superseded admitted-model-direction authority
|
|
|
|
- Owner: runtime RepoModel owns whether an
|
|
`AdmittedModelDirectionConsiderationRequest` still names the current exact
|
|
model revision and hash. Resident Self owns terminalization of the exact
|
|
Heartbeat grant; neither scheduler timing nor coordinator prose decides
|
|
supersession.
|
|
- Inputs: a structurally valid typed request, current RepoModel snapshot, exact
|
|
resident grant and active lease, and the exact bound coordinator receipt.
|
|
- Outputs: a superseded request terminalizes that exact grant once with status
|
|
`superseded` and the real receipt ID. The consumed pressure stays consumed;
|
|
failure count does not advance and Heartbeat cannot issue a replacement
|
|
grant from the dead authority.
|
|
- Derived state: request age, the `stale` error text, cooldown, receipt action,
|
|
and operator projection are observations only.
|
|
- Forbidden writers: resident retry policy, error-string parsing, Heartbeat
|
|
cadence, and a generic stale-work cleanup pass cannot decide typed request
|
|
death or create a retry.
|
|
- Shared paths: settlement checks supersession before fulfillment and checks it
|
|
again after a failed fulfillment read, covering a concurrent RepoModel
|
|
advance without weakening the ordinary exact-result verifier.
|
|
- Cut line: the old invalid-fulfillment cancellation path no longer requeues a
|
|
structurally valid request whose model binding has been superseded. Historical
|
|
`epiphany-work` acceptance remains inert and is not a fallback workflow.
|
|
- Verification: focused source proof passes 31 resident tests, four
|
|
admitted-model-direction contract tests, and all eight swarm tests. Exact
|
|
`b81b59a7` packages as release
|
|
`sha256-7c1a739c4b287c49051ab7aaab9a9541320f2d768e6b846d84b7bf290acbecc2`
|
|
with 24 binaries and zero warnings. A purpose-built copied CultCache fixture
|
|
advanced RepoModel from revision 1 to 2 behind one active exact request; the
|
|
packaged resident emitted one `superseded` terminal acknowledgement bound to
|
|
the real receipt, left runtime bytes unchanged, and exact packaged Heartbeat
|
|
produced no replacement grant while braked or released. Receipts live under
|
|
`.epiphany-run/b81-superseded-fixture`.
|
|
|
|
## Canonical brake ownership of daemon actuation
|
|
|
|
- Owner: the canonical CultMesh swarm-brake document owns whether Idunn may
|
|
perform daemon lifecycle actuation during a shakedown pause. Idunn owns the
|
|
restart decision only after that brake permits it.
|
|
- Inputs: canonical brake identity and owner, status, all-scope affected
|
|
runtime, protected surfaces, exact daemon status, typed restart policy or
|
|
explicit operator override, cooldown, and force/staleness signal.
|
|
- Outputs: an engaged brake containing `daemon.lifecycle_poke` refuses before
|
|
intent publication or process execution. A permitted attempt emits one poke
|
|
intent, native process result, receipt, and updated retry policy.
|
|
- Derived state: `requesting_agent_id`, CLI command text, status projections,
|
|
and tool-directory rows are provenance or sight; none can release the brake.
|
|
- Forbidden writers: direct `reconcile --restart-command`, scheduled tick,
|
|
generic service launch, v0 daemon capabilities, and compatibility wrappers
|
|
cannot remove a protected surface or infer permission from an all-scope
|
|
brake. Unauthenticated v0 tool capabilities remain ignored and publish no
|
|
invocation command.
|
|
- Shared paths: explicit engagement and engaged-brake adoption both use
|
|
`canonical_epiphany_swarm_brake_protected_surfaces`; direct and scheduled
|
|
reconciliation converge on `assert_swarm_brake_allows_daemon_poke` before
|
|
`run_restart_command`.
|
|
- Cut line: canonical engagement no longer replaces the default surface set
|
|
with a list that omits `daemon.lifecycle_poke`. No second actuator gate or
|
|
Hands impersonation was added.
|
|
- Verification: exact packaged `3fdff19f` passes the full Verse smoke. Forced
|
|
reconciliation with operator-supplied `/bin/sh` against quarantined copied
|
|
state exits 1 with the canonical-brake refusal, preserves the CultCache hash
|
|
byte-for-byte, and creates no marker. Its 24-binary release is
|
|
`sha256-bd0062904fa8e7097946c6fd735191de43ff04a89d1c3c29c0c86f876815fb31`;
|
|
witness
|
|
`sha256-a051980f70b13d9dafa014fedc7fc636eb075a9fc85dc53e3a94081bcc3fe3e0`.
|
|
|
|
## Non-repository process actuator ownership
|
|
|
|
- Owner: each process family retains its existing consequence owner. Forge
|
|
commands belong to explicit release construction; resident cognition launches
|
|
only witnessed coordinator/model binaries; Persona launches the configured
|
|
Bifrost crossing under speech audit and capability reference; Idunn owns
|
|
typed service/restart actuation; Rider and repo birth are explicit operator
|
|
utilities; process observation is sight only; Unity owns editor execution.
|
|
- Inputs: explicit CLI action or typed resident/crossing policy, witnessed or
|
|
discovered executable, scoped workspace/project, owner-specific arguments,
|
|
and the corresponding brake/permit where the path is unattended.
|
|
- Outputs: owner-specific receipts or bounded artifacts. None of these paths
|
|
becomes generic Hands authority, and the ignored v0 daemon tool directory
|
|
publishes no invocation command.
|
|
- Derived state: wrapper modes, command previews, IDE paths, and process
|
|
observations are operator sight. They cannot synthesize cognition, crossing,
|
|
deployment, or editor authority.
|
|
- Forbidden writers: generic Unity caller arguments cannot replace
|
|
`-executeMethod`; Rider cannot open outside the project; repo birth cannot
|
|
mutate branches without explicit create/switch flags; Persona cannot bypass
|
|
Bifrost identity/capability arguments; release and observation helpers cannot
|
|
enter the resident scheduler.
|
|
- Shared paths: generic Unity execution validates caller arguments before the
|
|
internal command builder; named probes alone derive
|
|
`GameCult.Epiphany.Unity.EpiphanyEditorBridge.RunProbe` and its artifact
|
|
contract.
|
|
- Cut line: `-executeMethod` joined the bridge-owned flag set. The old smoke
|
|
happy path that blessed caller-authored method execution was replaced with a
|
|
hostile refusal plus an exact named-probe positive. No generic actuator
|
|
registry or compensating Hands gate was added.
|
|
- Verification: exact source `d7957b42` passes two Unity bridge owner tests and
|
|
the full Windows bridge smoke. A rebuilt standalone bridge executable
|
|
(SHA-256
|
|
`e4a4c50eb575005f956cedb625386ec263cb973b08e8f51348cab539ef728034`)
|
|
refuses the resolved-editor hostile dry-run exit 1 before writing a command
|
|
artifact. Receipt:
|
|
`.epiphany-run/unity-execute-method-refusal-5ccf4cf8-exact`.
|
|
|
|
## Soul verdict ownership and causal consumption
|
|
|
|
- Owner: the coordinator's atomic Mind acceptance transaction creates a Soul
|
|
verdict from one authenticated Verification finding. The verdict is terminal
|
|
acceptance evidence, not an independently writable runtime command.
|
|
- Inputs: the exact runtime worker result and launch contract, typed
|
|
verification request, frontier route, current item/model, accepted result
|
|
receipt, and exact Hands consequence chain.
|
|
- Outputs: one immutable Soul verdict prerequisite; later Modeling derives a
|
|
typed frontier request and Mind may incorporate only the matching disposition.
|
|
- Derived state: general Verse context and receipt-directory projections are
|
|
operator/prompt sight. They do not decide the verdict or its consequence.
|
|
- Forbidden writers: external callers and unrelated runtime families cannot
|
|
publish a standalone Soul verdict. The former public writer is compiled only
|
|
for focused crate fixtures and is absent from the production API.
|
|
- Shared paths: frontier Modeling request creation and verdict incorporation
|
|
both reload and compare the exact result, request, route, model/item, verdict,
|
|
acceptance, and evidence chain.
|
|
- Cut line: remove the public re-export and production compilation of
|
|
`put_soul_verdict_receipt`; retain no compatibility writer.
|
|
- Verification: ten `verdict` library tests, the focused atomic Soul acceptance
|
|
test, and production library check pass. Mixed request, route, result, and
|
|
illegal frontier edits remain byte-identical refusals.
|
|
|
|
Exact source `9370e47a` packages this ownership as 24-binary release
|
|
`sha256-fe3e6c2465017f45649bef61fed1e54b5502f7963c83526fd1f5a791a7a35ac8`
|
|
with witness
|
|
`sha256-712372f40acd4250c54d4d328a79195d6c955cd9c22e7024abb51c038b043942`.
|
|
The release graph contains no standalone Soul-verdict actuator.
|
|
|
|
## Mind state-witness transaction ownership
|
|
|
|
- Owner: `commit_state_with_mind_witness` owns the coordinator state CAS and
|
|
its exact `MindGatewayReview`, `MindStateCommitReceipt`, and organ-specific
|
|
prerequisite envelopes.
|
|
- Inputs: expected coordinator state snapshot, next state, exact gateway
|
|
review, matching state-revision commit receipt, and typed prerequisites.
|
|
- Outputs: one snapshot-fenced coordinator state transition with its complete
|
|
Mind witness family, or no mutation.
|
|
- Derived state: standalone review and commit reads are evidence inspection;
|
|
neither document is an independent state-admission command.
|
|
- Forbidden writers: production callers cannot insert a Mind review or commit
|
|
receipt outside the coordinator state transaction. The narrow fixture writers
|
|
compile only under crate tests and are absent from the public API.
|
|
- Shared paths: native role acceptance, reorientation acceptance, and split
|
|
model-admission completion converge on the same transaction primitive.
|
|
- Cut line: remove production compilation and public re-export of both raw
|
|
writer functions; retain no compatibility route.
|
|
- Verification: the atomic state-and-Mind-witness test, the historical-family
|
|
fixture test, and warning-free production library check pass.
|
|
|
|
Exact source `d4f4f145` packages the Mind portion as 24-binary release
|
|
`sha256-b2490d04a1151d10b8a81b79cd7e56d5544d502829b9b51e1af6cea3a5477d11`
|
|
with witness
|
|
`sha256-3ac4f12aebe70ae854b9156969ee374838c1e48461357a57632035a18bafd058`.
|
|
|
|
The same owner governs accepted Research and Reorientation prerequisites:
|
|
`EyesEvidencePacket` and `ContinuityRecoveryReceipt` publish only in the state
|
|
transaction and their direct writers are test-only. SubstrateGate is explicitly
|
|
outside this cut because its coordinator and Hands producers own independent
|
|
access grants before acceptance. Seven coordinator-acceptance tests prove the
|
|
shared transaction, invalid-witness refusal, prerequisite co-publication, exact
|
|
Soul binding, and split-admission replay.
|
|
|
|
## Resident directive versus canonical objective ownership
|
|
|
|
- Owner: canonical coordinator state owns the long-lived thread objective;
|
|
resident Self's exact prepared launch owns one resident turn directive.
|
|
- Inputs: standalone startup may supply a typed user-objective intake. Resident
|
|
startup supplies an exact preparation or its canonically promoted active
|
|
lease, grant, child claim, process identity, launch digest, objective digest,
|
|
and argv objective.
|
|
- Outputs: standalone intake atomically seeds state plus `UserObjectiveIntake`.
|
|
Resident bootstrap emits authenticated per-turn command context and leaves the
|
|
canonical objective byte-identical.
|
|
- Derived state: coordinator argv `--objective` is a carrier. It is not itself
|
|
permission to replace Mind state.
|
|
- Forbidden writers: a resident directive cannot call the seed-only objective
|
|
intake, replace canonical state, or rely on an absent legacy intake envelope.
|
|
A foreign objective cannot pass the prepared-launch digest checks.
|
|
- Shared paths: objective authentication reads either side of the single
|
|
prepared-to-active CAS, so parent acknowledgement cannot race away the
|
|
authority. Plain operator pressures use resident authentication; typed
|
|
proposal/consideration continuations remain objective-free; standalone
|
|
coordinator startup retains initial intake.
|
|
- Cut line: branch objective handling on authenticated resident bootstrap
|
|
evidence instead of unconditionally calling `intake_user_objective`.
|
|
- Verification: c008 attempt 1 failed closed and terminalized without external
|
|
consequence. Focused tests prove exact resident objective acceptance, foreign
|
|
objective refusal, and unchanged standalone seed-only replacement refusal.
|
|
Exact a07f6541 c008b authenticated live attempt 2 across launch promotion,
|
|
preserved the canonical objective, and settled it once at revision 320.
|
|
|
|
### Historical admitted-thread repair (superseded for proposal launch)
|
|
|
|
- Owner: the runtime-spine promotion transaction owns publication of the exact
|
|
proposal, autonomous binding, and proposal-Modeling selection companion
|
|
family under one full-snapshot fence.
|
|
- Inputs: the accepted model-direction request/result, immutable model
|
|
admission, current Body binding, selected option, and any exact existing
|
|
companion family. The admitted request supplies the causal thread identity;
|
|
the singleton coordinator projection supplies only the current state value.
|
|
- Outputs: either the complete matching three-envelope family or a fail-closed
|
|
refusal with no substituted/partial adoption.
|
|
- Derived state: the singleton `EpiphanyThreadStateEntry.thread_id` is a mutable
|
|
coordinator projection. It is not the owner of already-admitted proposal
|
|
lineage and may transition through the resident orchestration thread between
|
|
promotion, retry, and launch.
|
|
- Forbidden writers: Heartbeat, resident recovery, retry launch, retention, and
|
|
the current singleton thread projection cannot rewrite causal request,
|
|
proposal, binding, or selection identity.
|
|
- Shared paths: initial promotion and replay still use the same exact-family
|
|
equality and CAS primitive. Proposal launch no longer restores any thread or
|
|
enters the ordinary coordinator transaction; exact `d1b031cb` supersedes that
|
|
historical repair with keyed current-work ownership.
|
|
- Cut line: derive promotion companions and proposal Modeling launch provenance
|
|
from the admitted request thread. Delete the mutable-singleton equality veto;
|
|
retain exact equality across request/proposal/runtime/repository/workspace,
|
|
caller state, and full companion family. Do not add a retry compensator.
|
|
- Verification: exact 78ca972b reproduced the c008b collision on copied state,
|
|
proved the only divergent field was causal thread identity, replayed the
|
|
complete family without a write, and refused a hostile partial family. Exact
|
|
d3e433fc adds the launch-transition test and packages as release
|
|
`sha256-11be5dae8429fcb6c604a15e8e122869f3ee60b9699831329b49fb62c1689768`
|
|
with witness
|
|
`sha256-217eafc8752d16fb249aad69b5dfc312e5fd507d2c05bff1cf5a1dbcc1b5ab32`.
|
|
Live c010 restored `linux-eyes-tools-c005`, launched a fresh exact Modeling
|
|
worker after the old claim became `terminal-death`, settled the stranded
|
|
request once, accepted its review, completed native admitted-direction
|
|
Imagination, and completed two resulting proposal Modeling families. The
|
|
brake is engaged at revision 364 with no active lease.
|
|
|
|
The live rule is now narrower: autonomous promotion owns immutable proposal,
|
|
binding, and selection publication; Proposal Modeling launch identity is
|
|
derived from that request plus its attempt ordinal. The request's `thread_id`
|
|
is retained only as immutable pass provenance. Mutable thread state cannot
|
|
admit, suppress, restore, or retry the work.
|
|
|
|
## Manual regather authority boundary (2026-08-11)
|
|
|
|
- Owner: the operator owns approval to cross a current Self-derived
|
|
`regatherManually` boundary. Self owns the recommendation; Heartbeat owns only
|
|
typed scheduling pressure.
|
|
- Inputs: the exact current coordinator action and one explicit
|
|
`--approve-manual-regather` launch capability. The approval helper refuses
|
|
every other current action.
|
|
- Outputs: one launch-local rewrite to `launchResearch`, consumed once by the
|
|
coordinator loop. It does not create durable resident pressure.
|
|
- Derived state: Heartbeat's `reorientation` work-role label and coordinator
|
|
scene projections are observations, not grant authority.
|
|
- Forbidden writers: Heartbeat, resident Self, historical failed
|
|
Reorientation, generic operator objective text, and retry loops may not mint
|
|
manual approval or Eyes pressure.
|
|
- Shared path and cut line: direct coordinator operation currently carries the
|
|
explicit approval flag. Any future resident operator path must define typed,
|
|
authenticated approval ingress and make the flag only its launch carrier; it
|
|
must not parse prose or auto-convert idle status.
|
|
- Verification: source inspection confirms exact-action refusal, single use,
|
|
and the hostile unrelated-action regression. Resident safe-continuation
|
|
routing excludes manual regather. c010 remains alive, braked, and without an
|
|
active lease after native Imagination produced no admitted work.
|
|
|
|
## Governed source-tool authority gap (2026-08-11)
|
|
|
|
The transport body is broader than the admitted source faculty. The generic
|
|
MCP runtime can call configured subprocess or HTTP providers, while live Eyes,
|
|
Modeling, and Soul requests advertise only workspace-confined `read_file`,
|
|
`directory_inventory`, `git_show`, typed Hands-receipt reads, and the exact
|
|
resident-grant projection. No public-source tool is currently model-visible.
|
|
|
|
- Owner: the immutable Substrate Gate grant created with an exact worker launch
|
|
must own which governed source operations that job may invoke.
|
|
- Inputs: exact runtime job, launch binding and role; exact tool server/name;
|
|
and a fixed tool-to-operation classification owned by the source boundary.
|
|
- Outputs: runtime admission accepts a model-derived tool intent only when the
|
|
exact launch grant names its required operation. Public evidence additionally
|
|
carries provider, repository, immutable revision, path, and content digest.
|
|
- Derived state: MCP configuration, model-visible tool definitions, tool-call
|
|
JSON, and transport reach are capability projections or protocol cargo. None
|
|
grants source access by existing.
|
|
- Forbidden writers: a model-selected tool name, generic MCP endpoint, prompt
|
|
instruction, runtime binding, or Eyes packet may not synthesize Substrate
|
|
authority. Arbitrary URLs and redirects are not public-source identity.
|
|
- Shared paths: Eyes, Modeling, and Soul must receive source tools only through
|
|
the same launch-grant and runtime-intent admission primitive. Local and public
|
|
source operations differ in provider policy but share the grant check.
|
|
- Cut line: publish an immutable grant for every launch that advertises source
|
|
tools; reject an intent before adapter/network execution when its exact grant
|
|
lacks the mapped operation. Then add one bounded provider-shaped public source
|
|
operation rather than exposing the generic MCP transport as evidence authority.
|
|
- Verification layer: focused grant/intent tests must refuse absent, foreign,
|
|
role-swapped, job-swapped, and operation-missing grants byte-identically. The
|
|
packaged Linux circuit must admit one immutable public source through Eyes and
|
|
Mind while an ungranted public request produces no network consequence.
|
|
|
|
Current source enforces this map. Research, Modeling, and Verification launches
|
|
publish exact read grants; Research alone receives `publicSourceRead` and the
|
|
model-visible `epiphany_public.github_file` tool. Runtime admission follows the
|
|
inner model binding back to the outer typed worker launch and exact grant before
|
|
persisting an intent or executing an adapter. Public GitHub results become
|
|
`EyesSourceLookupReceipt` only after the full worker/model/tool/grant family and
|
|
the provider/repository/commit/path/content digest are reauthenticated inside
|
|
the same full-snapshot CAS that admits the Eyes packet into Mind. Generic MCP
|
|
transport and result JSON remain transport cargo, not evidence authority.
|
|
|
|
## Resident PID 1 owns adopted worker reaping (2026-08-11)
|
|
|
|
- Owner: resident Self owns OS cleanup for model-worker grandchildren that its
|
|
bounded coordinator children orphan into resident PID 1.
|
|
- Inputs: typed `EpiphanyRuntimeWorkerProcessClaim` rows reconstructed as full
|
|
`ProcessInstanceIdentity` values, plus the kernel's exact child/exit relation.
|
|
Claims are sorted for deterministic inspection.
|
|
- Outputs: nonblocking `waitpid(pid, WNOHANG)` only after the full claimed
|
|
incarnation is observed `ExactExited`. `ECHILD`, a live child, a missing
|
|
process, and a reused PID are clean no-ops.
|
|
- Derived state: runtime job, result, process-claim, archive, and coordinator
|
|
receipt documents remain cognitive evidence. Reaping changes none of them.
|
|
- Forbidden writers: retention, PID age, executable-name scans, generic
|
|
`waitpid(-1)`, and coordinator receipt settlement may not decide which worker
|
|
process to reap.
|
|
- Shared paths: every resident once/serve cycle reaps before maintenance can
|
|
archive the exact claim. Known coordinator children remain owned and reaped
|
|
through their `Child::try_wait` handles.
|
|
- Cut line: there is no PID-only reaping API, signal-handler policy, global
|
|
scavenger, retry writer, or process-name registry. The typed runtime claim
|
|
supplies full incarnation identity; the kernel supplies parenthood and
|
|
terminality.
|
|
- Verification: c010 exposed six defunct adopted workers. Exact `465af24d`
|
|
passes six focused Windows process tests, nine swarm tests, and the Unix
|
|
exact-child test on Starfire. Its authenticated 24-binary release is
|
|
`sha256-089e000511f0420bfaab1136952b8cf94677a72d5c30a3fb3e6a26996bd3726f`
|
|
with witness
|
|
`sha256-20ca293589b33d3b2e6ea5a7411db544741fe18360ecbd4423cdfa000d1ad7c6`.
|
|
Live c011 restarted braked at revision 372 with zero zombies. Typed operator
|
|
proposal `operator-c011-worker-reaper-live-proof-20260811` then drove the
|
|
real route through Modeling request `repo-frontier-proposal-modeling-1c15a1d0...`,
|
|
Heartbeat, Self, the packaged coordinator, and adopted model-worker PID 152.
|
|
The worker terminalized normally, Self settled at revision 376, and the next
|
|
resident cycle removed PID 152 from the process table with no defunct child.
|
|
The Modeling review continuation completed; the brake engaged at revision
|
|
381 before the next admitted-direction Imagination worker launch. The reaper
|
|
owner is therefore accepted at source, package, Linux helper, and genuine
|
|
coordinated runtime layers.
|
|
|
|
The same owner then survived a second distinct live worker family. The exact
|
|
admitted-direction Imagination request `c72af0e16fbc...` launched worker PID
|
|
275 after its preserved Heartbeat grant was released. Self held typed
|
|
fulfillment authority until the result terminalized, settled at revision 384,
|
|
and the next cycle reaped PID 275. Resident PID 1 again had no defunct child.
|
|
Heartbeat returned to routine physiology and the result produced no further
|
|
admitted work. This closes the successful-path reaper gate across Modeling and
|
|
Imagination without adding a lifecycle-specific process rule.
|
|
|
|
The copied `08383c6d` public-Eyes run later falsified the original claim that a
|
|
numeric claimed PID was exact enough. After PID reuse, a historical worker claim
|
|
reaped a newer coordinator child; its Rust `Child` handle then received
|
|
`ECHILD`, terminating resident Self. Exact `f90f1186` changes the reaper port to
|
|
require the full `ProcessInstanceIdentity` and observes `ExactExited` before
|
|
calling `waitpid`. The Linux negative test proves a stale incarnation cannot
|
|
reap the matching current PID. Its exact 24-binary release
|
|
`sha256-0e41c9106eb0e37a9cf3e7a4b67671d494b880b7e71fec65336a8c3e7e1129b4`,
|
|
witness `sha256-a310c72292a44f950ce7b0ab469779d02e6edd1068670fe37f990f7d82846ee4`,
|
|
completed two Research launch/review/Mind-acceptance cycles, survived the process
|
|
turnover that killed `08383c6d`, and stopped both copied daemons braked with exit
|
|
zero.
|
|
## Causal current-frontier Research routing - 2026-08-11
|
|
|
|
- Owner: the exact actionable Eyes frontier in the uniquely admitted current
|
|
RepoModel owns whether Self must launch Research.
|
|
- Inputs: current model revision/hash and admission receipt; exact frontier item
|
|
id/hash/local source scope and strict immutable GitHub evidence refs;
|
|
authoritative runtime identity; creation-thread provenance; typed Research
|
|
worker launch; accepted Eyes packet source job.
|
|
- Outputs: one immutable `RepoFrontierResearchRequest`, its exact typed launch
|
|
projection, and an uncovered/covered readiness decision.
|
|
- Derived state: request `thread_id` records the coordinator incarnation that
|
|
created it but is not request identity or liveness authority. Historical
|
|
`research_result_accepted` is evidence about an old pass, and a terminal
|
|
`Completed` role binding is evidence about its old job; neither owns the
|
|
current frontier. Only a currently `Pending` or `Running` Research job
|
|
suppresses another launch.
|
|
- Forbidden writers: mutable coordinator thread state, timestamps, generic
|
|
accepted Research state, and unrelated Eyes packets cannot invalidate,
|
|
replace, or consume current readiness. Worker prompts cannot invent a public
|
|
target; only a canonical immutable ref already admitted in frontier evidence
|
|
enters the Research launch.
|
|
- Shared path: status, direct coordinator execution, and resident execution use
|
|
the same current-frontier selector and worker-launch carrier.
|
|
- Cut line: only an accepted Eyes packet whose source job carries the exact
|
|
current request may cover the frontier. Model or frontier advance makes the
|
|
old request inert.
|
|
- Verification: deterministic selection/replay across a coordinator-thread
|
|
transition, strict public-ref projection, exact carrier validation, exact
|
|
packet coverage, historical-acceptance routing, and focused Self/OpenAI tests
|
|
are green. Exact `40beb6a9` made the lifecycle emit typed Launch/Review action;
|
|
exact `08383c6d` made coordinator policy consume that action before stale role
|
|
history. Exact packaged `f90f1186` completed two immutable public lookup and
|
|
Mind-acceptance cycles with no Hands consequence.
|
|
|
|
## Exact Research continuation owner and public-source closure (2026-08-14)
|
|
|
|
- Owner: `RepoFrontierResearchLifecycle` owns the one current Research action.
|
|
- Inputs: exact current Research request, its bound launch/attempt, terminal
|
|
review receipt, and accepted Eyes packet.
|
|
- Outputs: `LaunchResearch`, `ReviewResearchResult`, or no action.
|
|
- Derived state: role-board terminal/reviewable state remains an operator display
|
|
and review target for its historical job. It does not decide whether the
|
|
current frontier needs a new launch.
|
|
- Forbidden writers: coordinator thread, generic role binding, completed
|
|
superseded result, status mapper, and Resident retry logic cannot override or
|
|
repair the lifecycle action.
|
|
- Shared paths: Resident pressure ingestion, coordinator policy, and status use
|
|
the same typed lifecycle projection.
|
|
- Cut line: the `eyes_frontier_ready` boolean and later role-projection launch
|
|
suppression are gone. There is no mode flag, retry exception, or registry.
|
|
- Verification: `40beb6a9` exposed lifecycle action to Resident and status;
|
|
`08383c6d` routed coordinator policy from it and live-relaunched after a
|
|
superseded Research result. `f90f1186` then completed two exact public-source
|
|
lookup and Mind-admission cycles. The prior packaged no-grant run refused
|
|
before network under `--network none`, preserved byte-identical runtime state,
|
|
and emitted no receipt. Together these close the immutable public Eyes
|
|
success/denial pair.
|
|
## Decision-auditable concurrent Mind foundation (2026-08-14)
|
|
|
|
The migration seals a reasoning pass before inference. One
|
|
`EpiphanyReasoningBasis` content-addresses the exact typed source envelopes and
|
|
one closed projection variant. Every decision-bearing native model request
|
|
binds that basis. The OpenAI request is derived from the native request by the
|
|
adapter; callers cannot author an independent provider request.
|
|
|
|
At terminal inference, `EpiphanyDecisionContext` records the final native and
|
|
provider requests plus the ordered governed tool intent/receipt versions that
|
|
the final request actually contains. Validation compares exact call identity,
|
|
tool name, arguments, lowered result bytes, runtime model binding, worker,
|
|
session, and basis. Stream deltas are not decision authority.
|
|
|
|
`commit_mind_mutation` accepts exact strong-read envelopes and exact writes.
|
|
CultCache batch CAS merges disjoint identities, refuses changed strong reads or
|
|
same-identity divergence, and writes an immutable Mind commit receipt with the
|
|
mutation. It never rebases model output. This foundation does not yet replace
|
|
persisted thread state or aggregate RepoModel; those obsolete authorities are
|
|
the next hard deletion line.
|
|
|
|
### Persona decision chain and retention
|
|
|
|
Each Projector, Persona, and Interpreter pass seals its own typed reasoning
|
|
basis and terminal decision context. Persona and Interpreter bases cite the
|
|
preceding stage context, so replay validates the exact three-stage causal chain
|
|
without consulting model-event prose. The Interpreter effect cites its context;
|
|
the terminal receipt cites all three contexts; the conversation receipt cites
|
|
the terminal and Interpreter context.
|
|
|
|
Runtime commits the Interpreter effect and Persona terminal receipt in one
|
|
snapshot-fenced batch. Conversation retention deletes only stage receipts and
|
|
effect-execution intents. The structured effect, conversation and consequence
|
|
receipts, model terminal, reasoning bases, and decision contexts remain durable
|
|
decision authority. Heartbeat may retire the scheduling turn, but it cannot
|
|
erase or reconstruct the decision.
|
|
|
|
Exact `833d3964` proves this cut with 689 passing core tests (one ignored
|
|
cross-process helper) and all 42 OpenAI runtime targets. Persona inputs are
|
|
already sealed inside typed projection variants; binding those projections to
|
|
the forthcoming keyed Mind source-document versions remains part of the hard
|
|
Mind cut.
|
|
|
|
### Keyed Mind document foundation
|
|
|
|
Exact `71505941` defines objective, focus, mode, subgoal, invariant,
|
|
observation, evidence, investigation-checkpoint, planning-capture, backlog,
|
|
roadmap, and objective-draft documents as separate CultCache identities.
|
|
`EpiphanyMindView` is assembled deterministically from those envelopes and owns
|
|
only a projection digest; it has no persisted head or global revision.
|
|
|
|
The Mind mutation gate accepts only this closed canonical family and validates
|
|
that each envelope key equals the semantic identity in its typed payload.
|
|
Disjoint identities merge through exact-envelope CAS; same-identity changes
|
|
conflict. Runtime creation atomically installs an immutable matching Mind epoch
|
|
identity, which also exposed and removed one test path that attempted to rewrite
|
|
runtime identity while opening a worker.
|
|
|
|
This is foundation, not cutover. `EpiphanyThreadStateEntry` and its coordinator
|
|
transaction are still live production authorities. The new view does not read,
|
|
translate, mirror, or migrate that aggregate. Concrete admission owners must
|
|
move to keyed mutations, after which the aggregate schema and writer are
|
|
deleted and old writable stores are refused.
|
|
|
|
### First live cut: operator objective
|
|
|
|
Exact `bd5034cd` makes `Self.user_objective_intake` the first migrated owner.
|
|
Its inputs are one typed operator intake and the initialized Mind epoch. Its
|
|
outputs are the semantic objective document, immutable intake, and Mind commit
|
|
receipt written in one exact-envelope CAS. Receipt authority is a closed choice
|
|
between a model decision context and typed operator provenance; operator action
|
|
cannot impersonate model reasoning.
|
|
|
|
`thread_id` is no longer an objective owner; it remains intake provenance.
|
|
Global revision and `EpiphanyThreadStateEntry` are absent from this path, and
|
|
the operator-facing event reports the Mind projection digest and commit receipt.
|
|
Exact replay recovers the same receipt. Objective replacement and split
|
|
intake/objective state refuse without mutation.
|
|
|
|
The aggregate-only supervisor Modeling-acceptance correction is deleted rather
|
|
than translated. It existed to repair receipt-shaped routing authority;
|
|
unresolved typed state must own routing instead. Its commands and exported
|
|
writer are gone. The remaining frontier execution inspector/amendment tool is
|
|
named `epiphany-frontier-execution`, matching its actual authority.
|
|
|
|
### Keyed RepoModel foundation
|
|
|
|
RepoModel identity, domains, nodes, edges, summaries, frontier items, lifecycle
|
|
receipts, and per-node unresolved-claim obligations are distinct Mind document
|
|
identities. `EpiphanyRepoModelView` deterministically sorts and validates those
|
|
documents and is included in `EpiphanyMindView`; it has a projection digest but
|
|
no global revision or model hash. It never reads or translates the aggregate.
|
|
|
|
Each semantic document owns canonical named MessagePack behind a typed
|
|
constructor and decoder. Directly nesting the existing optional-rich graph
|
|
structs exposed compact MessagePack field shifting when a skipped middle field
|
|
was absent; canonical named payloads make that corruption structurally
|
|
unavailable while keeping the `.cc` contract typed.
|
|
|
|
Per-node claim obligations are the narrow concurrency index for the phantom
|
|
invariant: unresolved frontier targeting and node retirement must contend on
|
|
the same semantic node identity. The view validates both directions so neither
|
|
a missing membership nor a dead frontier can masquerade as a live obligation.
|
|
|
|
Strong reads in `commit_mind_mutation` are logical fences, not compulsory
|
|
writes. CultCache's physical CAS requires expected envelopes in its replacement
|
|
batch, so read-only dependencies are re-emitted byte-identically; the Mind
|
|
receipt still lists only actual writes. Tests prove a disjoint insert can depend
|
|
on an unchanged document and that a stale dependency refuses the insert with no
|
|
partial state.
|
|
|
|
### Keyed RepoModel mutation planning
|
|
|
|
`EpiphanyRepoModelMutationProposal` is a durable typed semantic proposal, not a
|
|
base-revision patch. The bounded planner owns domain, node, edge, summary, and
|
|
frontier puts plus node and edge retirement. It derives exact identity, domain,
|
|
node/edge, covered-summary member, dependency-frontier, and per-node
|
|
claim-obligation envelopes from the store, projects the candidate graph,
|
|
validates it, and emits deterministic strong-read and write sets. Callers cannot
|
|
choose which stale inputs are harmless. Admission purpose, commit time, and
|
|
lifecycle receipts are deliberately absent from model-authored operations.
|
|
|
|
Node retirement writes an empty per-node obligation even when none existed.
|
|
Frontier targeting writes that same identity with its live membership. Thus a
|
|
retirement planned concurrently with a new frontier target cannot pass by an
|
|
absence scan: the two operations contend on one document. The test commits the
|
|
frontier and proves the stale retirement returns a typed conflict while the node
|
|
remains accepted. A second proof creates a complete domain/node/edge/summary
|
|
slice in dependency-reversed order, retires the edge, and rejects a proposal
|
|
that addresses the same edge twice.
|
|
|
|
### Fresh keyed RepoModel seed
|
|
|
|
`EpiphanyRepoModelSeed` is the only new-store bootstrap input. It contains the
|
|
Body binding and canonical semantic documents, but no aggregate revision/hash.
|
|
`initialize_keyed_repo_model` derives unresolved-claim obligations and commits
|
|
the typed seed provenance, keyed documents, generic Mind commit receipt, and
|
|
the first Modeling semantic-projection obligation in one exact-envelope
|
|
transaction. The obligation is a derived runtime companion, not a canonical
|
|
Mind document or a second commit authority. One shared pure derivation owns the
|
|
projection source identity for both bootstrap and readiness. Exact replay
|
|
validates the existing companion and returns the same projected state;
|
|
divergent seed identity, an orphaned seed, or an aggregate RepoModel envelope
|
|
refuses. No projector or status loop repairs a partial bootstrap.
|
|
|
|
Exact `d11e6511` closes this fresh-store seam. The focused seed/replay test
|
|
passes against the shared target and asserts one current Modeling obligation.
|
|
|
|
Exact `8ad16be0` moved the production `epiphany-repository-body bootstrap`
|
|
command onto this owner. Exact `18d3783a` then deleted the legacy aggregate
|
|
bootstrap binary; the 2026-08-14 hard cut deleted aggregate admission and all
|
|
production aggregate RepoModel readers and writers.
|
|
|
|
Exact `120663fa` makes launch-context assembly read `EpiphanyRepoModelView`
|
|
directly. The existing
|
|
memory context cutter receives a temporary graph-shaped projection for query
|
|
selection only; that projection is never persisted and its revision/hash fields
|
|
are inert. Modeling prompt context names the view projection digest and semantic
|
|
document identities instead of a global model revision/hash. Missing keyed
|
|
RepoModel state now refuses launch context rather than bootstrapping shared
|
|
authority from thread state.
|
|
|
|
### Federated Model Atlas
|
|
|
|
Local provider offers, consumer dependency claims, Soul verification, and Self
|
|
impact are separate keyed Mind families. Each write is planned from current
|
|
Body evidence and exact typed source versions, then committed through Mind CAS.
|
|
Per-repository publishers sign only their own documents and exact Mind receipt
|
|
bindings. Odin persists the signed events without joining them. The projector
|
|
verifies pinned identities, status watermarks, visibility, and source versions,
|
|
then deterministically derives compatibility, cycles, and direct/transitive
|
|
blast radius. A consumer ingress re-reads its local claim and the exact
|
|
projection before committing an impact and asking Resident Self for a bounded
|
|
Modeling or Soul wake. The wake explicitly grants no Hands authority.
|
|
|
|
Ordinary Modeling authors offers and claims through
|
|
`EpiphanyRepoModelMutationOperation`. The model supplies only a semantic
|
|
transition, a display label, a closed contract/requirement, and sorted current
|
|
repository-relative source paths. The OpenAI runtime constructs
|
|
`epiphany.repo_model.mutation_proposal.v2` from the exact launch request,
|
|
terminal result, evidence identifiers, and sealed Body basis. The keyed planner
|
|
requires that basis to equal the live runtime Body observation, authenticates
|
|
its manifest, resolves every source path to the exact raw file digest, derives
|
|
the opaque UUID, and then emits the Mind strong reads and writes. The publisher
|
|
independently revalidates the stored Body references against the current
|
|
manifest before exporting them. Body drift therefore refuses both stale local
|
|
admission and stale federation; no eventual repair loop owns correctness.
|
|
|
|
The entanglement projection carries the current endpoint labels, exact claim
|
|
requirement and offer contract, offer lifecycle, both endpoint Body evidence
|
|
sets, and only the Soul publication/evidence that matches the exact current
|
|
claim and offer versions. Eve derives its attention age from the projection's
|
|
evaluation time and endpoint publisher heartbeats, then shows contracts, Body
|
|
evidence, Soul evidence, cycles, blast radius, source publications, and
|
|
watermarks in the same retained tree.
|
|
|
|
Atlas authority map:
|
|
|
|
- Owner: each local Modeling/Mind pair owns its offers and claims; Soul/Mind
|
|
owns exact verification; the projector owns deterministic derivation only.
|
|
- Inputs: semantic Modeling operations, the exact causal request/result and
|
|
evidence IDs, current authenticated Body basis and manifest, signed local
|
|
publications, pinned trust, and audience visibility.
|
|
- Outputs: keyed local facts, signed immutable publications, one deterministic
|
|
projection, exact local impacts, and bounded Self pressure.
|
|
- Derived state: shared edges, compatibility, freshness, cycles, blast radius,
|
|
attention age, and Eve views. None can rewrite an endpoint fact.
|
|
- Forbidden writers: models cannot choose IDs/digests/CAS; publishers cannot
|
|
open foreign Mind stores; Odin cannot derive edges; the projector cannot
|
|
mutate dependencies; Atlas cannot grant Hands authority.
|
|
- Shared paths: direct model completion and resident Modeling completion use
|
|
the same proposal-v2 constructor and keyed planner; publisher and impact
|
|
ingress re-read the same typed local facts before consequence.
|
|
- Cut line: aggregate memory-graph authority, `RepoModelPatch`, model-authored
|
|
revision/timestamp/receipt fields, and foreign-store reads remain absent.
|
|
- Verification layer: CAS/body-drift refusals prove local ownership; signature,
|
|
replay, trust, determinism, cycle, partition, transitive-radius, Eve
|
|
conformance, wake-dedupe, cooldown, brake, and no-Hands tests prove the
|
|
federation boundary.
|
|
|
|
The provider-owned Eve projection is one `gamecult.eve.surface.v1` retained
|
|
tree with attention, drilldown, and secondary graph views. Select/filter are
|
|
presentation-only; domain mutation routes back to the owning repository's
|
|
Modeling interface. Brake scopes `atlas.publish`, `atlas.project`, and
|
|
`atlas.impact_ingress` freeze writes and scheduling while preserving the last
|
|
projection as visibly stale read-only state.
|
|
|
|
The repository publisher also owns the lifecycle of its signing identity.
|
|
Its private identity store is enrolled only when absent and reopened exactly on
|
|
later cycles; retries cannot rotate or replace it. Every unbraked cycle exports
|
|
the same public trust anchor idempotently to a physically separate store for
|
|
operator-gated projector pinning. The projector never reads the private store,
|
|
and an existing divergent public anchor refuses instead of being repaired.
|
|
This cut is required for both the second publisher heartbeat and real trust
|
|
enrollment; one-shot identity creation is not a viable daemon lifecycle.
|
|
|
|
Fresh repository bootstrap owns a distinct agent-memory initialization path.
|
|
It atomically creates the immutable swarm identity and the seven typed organ
|
|
memory rows, then admits generation one through the shared generation witness,
|
|
receipt, and semantic-projection obligation primitive. Legacy admission only
|
|
authenticates pre-existing migrated rows and is never asked to invent a fresh
|
|
Mind. Exact fresh replay is inert; a different swarm or any divergent organ row
|
|
refuses. Repository Body bootstrap consumes this fresh owner before binding the
|
|
runtime, so a new project organism does not copy another repository's Persona
|
|
or depend on a JSON seed directory.
|
|
|
|
Gate 1 then exposed the analogous RepoModel bootstrap seam: the keyed Mind seed
|
|
committed successfully but produced no Modeling semantic-projection obligation,
|
|
so readiness correctly refused the store. Exact `d11e6511` moves that companion
|
|
into the seed owner's batch CAS. It is derived from the exact keyed envelopes,
|
|
remains outside canonical Mind, and cannot be synthesized later by status or a
|
|
projector. Historical partial Gate roots remain read-only evidence; the live
|
|
retry must use a fresh root.
|
|
|
|
Exact `2ba6b9dc` makes the semantic projector enumerate both stores it owns.
|
|
Mind and Modeling inputs are loaded independently each pulse, exact shared
|
|
swarm identity is validated when both exist, and one surviving source remains
|
|
actionable when the other refuses. CultMesh health no longer conflates a
|
|
terminal-ready empty projection with query eligibility. Fresh Eve, Odin, and
|
|
Epiphany stores each projected Modeling once and then inspected both partitions
|
|
idle with zero source, retention, or health faults.
|
|
|
|
That success exposed the remaining hard-cut boundary rather than clearing the
|
|
operational gate. `epiphany-mvp-status`, coordinator launch/acceptance, Resident
|
|
Self continuation, and several request selectors still read persisted
|
|
`EpiphanyThreadStateEntry`; the coordinator transaction still writes it.
|
|
Consequently a fully initialized keyed Mind is reported as missing without the
|
|
legacy aggregate. This is live obsolete authority, not compatibility evidence.
|
|
|
|
Remaining hard-cut authority map:
|
|
|
|
- Owner: keyed Mind documents plus exact runtime request/result/receipt families
|
|
own durable decisions and unresolved work.
|
|
- Inputs: sealed Mind views, current Body/RepoModel document versions, and exact
|
|
family lifecycle receipts; thread ID is pass provenance only.
|
|
- Outputs: one pure typed current-work projection, family launch requests, and
|
|
family-owned Mind mutations/receipts.
|
|
- Derived state: coordinator status, role boards, events, latest-result slots,
|
|
and UI views are projections only.
|
|
- Forbidden writers: `EpiphanyThreadStateEntry`, global revision checks,
|
|
`coordinator_state_transaction`, aggregate state patches, accepted-at ordering,
|
|
and generic lane terminality must cease deciding behavior.
|
|
- Shared paths: operator and resident launches use the same current-work
|
|
derivation and family commit primitive; restart re-derives identical work.
|
|
- Cut line: migrate routing, launch/review, and acceptance consumers; then delete
|
|
the aggregate schema, writer, readers, and old-writable-store path. No mirror,
|
|
dual read, bootstrap aggregate, or migrator survives.
|
|
- Verification: fresh objective+Body launches Modeling without Eyes or thread
|
|
state; disjoint Persona/Hands work remains concurrent; source guards find no
|
|
production aggregate reference; restart preserves obligations without
|
|
authority resurrection.
|
|
|
|
Exact `59292e2f` introduces the first replacement work identity without wiring
|
|
it around the obsolete prompt path. Current Body observation generation owns
|
|
baseline Modeling work; the exact RepoModel basis is reasoning cargo and does
|
|
not mint a second obligation merely because Modeling changed the graph. A
|
|
terminal decision receipt can fulfill that Body work after the graph changes.
|
|
The next attempted integration was deliberately discarded: a reasoning basis
|
|
must not cite keyed Mind versions while the final model request still renders
|
|
the aggregate `EpiphanyRoleWorkerLaunchDocument`. The sealed typed role
|
|
projection and its prompt rendering therefore precede decision-receipt
|
|
admission and routing migration.
|
|
|
|
Exact `79346523` lands that boundary. `worker_reasoning_basis` now creates a v2
|
|
`RolePass` from immutable launch authority plus a typed keyed-Mind projection;
|
|
the provider-facing native request renders that sealed projection rather than
|
|
`EpiphanyRoleWorkerLaunchDocument`. Store-backed sealing reassembles the exact
|
|
Mind and refuses projection substitution byte-identically. Mind source
|
|
selection is explicit rather than an `epiphany.mind.*` prefix: only documents
|
|
actually assembled into the view are selected, while the RepoModel contributes
|
|
its own exact source family including Atlas documents. Baseline Modeling
|
|
admission derives a decision receipt from the sealed Body and RepoModel basis
|
|
and commits it atomically with any semantic mutation. Proposal, repair, and
|
|
verdict Modeling remain distinct request families and cannot satisfy baseline
|
|
Body work. Core 561/561 and OpenAI runtime 23/23 pass; an explicit negative
|
|
proves the obsolete aggregate objective and `stateRevision` never reach model
|
|
input.
|
|
|
|
Exact `2eb95df6` closes the remaining external Body read at that boundary.
|
|
Repository Body still owns scanning, manifests, and its authenticated generation
|
|
chain, but it no longer supplies prompt state directly. Each accepted generation
|
|
crosses once as `EpiphanyMindRepositoryBodyObservationDocument`, keyed by its
|
|
semantic observation ID and carrying both the exact
|
|
`RepositoryBodyObservationBasis` and the exact external observation envelope as
|
|
typed provenance. `assemble_mind_view` validates the singular generation chain
|
|
and derives the current observation from the highest admitted generation.
|
|
|
|
Owner: runtime Mind owns the admitted Body observation used by reasoning and
|
|
scheduling. Input: one exact Body-store observation already authenticated
|
|
against the runtime route and manifest chain. Output: one immutable keyed Mind
|
|
document plus its typed-organ Mind commit receipt. Derived state: the current
|
|
Body basis is the highest admitted generation; the Body-store head remains
|
|
physiology and transport authority only. Forbidden writers: prompt renderers,
|
|
current-work selectors, status, and role launch code may not observe the
|
|
repository or Body store to manufacture reasoning state. Shared path:
|
|
`observe_runtime_repository_body_basis` and the repository-Body CLI both admit
|
|
through the same Mind CAS primitive. Cut line: `current_body_modeling_work`
|
|
reads only the admitted Mind view, and `put_reasoning_basis` requires a launch's
|
|
Body basis to equal that sealed projection. Verification: current-work incurs
|
|
zero Body-store/file reads; exact admission replays; a tampered external source
|
|
refuses with the Mind store byte-identical; core 563/563 and OpenAI runtime
|
|
23/23 pass.
|
|
|
|
Exact `e42788c9` lands the shared current-work owner. One pure
|
|
`EpiphanyCurrentWorkProjection` assembles keyed Mind once, derives unresolved
|
|
Body-generation Modeling work, and carries the exact family-owned projections
|
|
for Eyes continuation, frontier planning, proposal Modeling, and Hands
|
|
readiness. `epiphany-mvp-status` consumes those fields instead of repeating the
|
|
derivations. The projection is not a work registry and writes nothing; family
|
|
requests and receipts remain their semantic owners.
|
|
|
|
Owner: keyed Mind plus exact family request/result/decision receipts own whether
|
|
work exists; `project_current_work` owns only their deterministic joint view.
|
|
Inputs: one sealed `EpiphanyMindView` and existing typed lifecycle families.
|
|
Outputs: one typed scheduling/display projection with the Mind projection
|
|
digest. Derived state: status JSON and coordinator recommendations. Forbidden
|
|
writers: events, latest-result lanes, accepted-at ordering, and thread revisions
|
|
cannot manufacture or suppress current work. Shared path: status is migrated;
|
|
operator and Resident Self actuation consume the same projection. Cut line:
|
|
Body Modeling recommends `launchModeling`, follows exact Launch/Wait/Review
|
|
state, and never writes `EpiphanyThreadStateEntry`. Verification: Body work appears before its
|
|
exact decision receipt, clears after that receipt, and performs zero external
|
|
Body reads; the coordinator-runtime status binary builds.
|
|
|
|
Exact `9f7b164f` adds the first thread-free actuation transaction. Baseline Body
|
|
Modeling consumes the unresolved work projection, derives a family attempt,
|
|
and atomically publishes runtime identity/session, queued job, audit event,
|
|
worker launch request, `EpiphanyBodyModelingLaunchBinding`, and the read-only
|
|
Substrate Gate grant. No `EpiphanyThreadStateEntry`, global revision, aggregate
|
|
job binding, or runtime-link projection participates.
|
|
|
|
Owner: the Body Modeling launch transaction owns creation of one exact worker
|
|
attempt for one admitted Body obligation. Strong input: only the immutable Mind
|
|
Body-observation document that owns the obligation. Observational input: the
|
|
current RepoModel projection digest recorded on the launch binding; inference
|
|
will seal its complete current Mind projection immediately before transport.
|
|
Output: one atomic runtime worker family and scoped read grant. Derived state:
|
|
status, role boards, and eventual runtime links. Forbidden writers: unrelated
|
|
Persona, Hands, evidence, or graph documents cannot conflict with this launch;
|
|
thread state cannot create or repair it. Duplicate live launch refuses, while a
|
|
failed/cancelled attempt makes the work eligible for a distinct ordinal.
|
|
|
|
Exact `587c56d2` routes the operator half. The shared Self policy now treats
|
|
unresolved Body Modeling work as a first-class `launchModeling` reason without
|
|
requiring persisted thread presence. The coordinator dispatches that specific
|
|
baseline case through `launch_current_body_modeling_work`; proposal, repair,
|
|
verdict, Research, and Verification launches then retained their family paths.
|
|
Exact `d1b031cb` subsequently migrates proposal launch. Thus a
|
|
fresh keyed Mind can begin Modeling directly, while Eyes remains an independent
|
|
external-evidence obligation rather than a gate on Body understanding.
|
|
|
|
Exact `478fb923` completes that lifecycle through Resident Self and Mind
|
|
admission. `EpiphanyCurrentWorkProjection.body_modeling_action` derives typed
|
|
Launch, Wait, or Review from the exact Body work, family launch binding, runtime
|
|
job/result, and Body decision receipt. Resident Self emits one semantically keyed
|
|
`body-modeling` pressure only for Launch. The coordinator receipt records the
|
|
exact runtime job ID, so continuation revalidates that family lifecycle instead
|
|
of consulting a generic Modeling lane.
|
|
|
|
Owner: `accept_body_modeling_result` owns baseline Body semantic admission.
|
|
Inputs: the exact completed job, exact baseline Modeling result, sealed decision
|
|
context, and current keyed Mind/RepoModel strong reads. Output: one atomic
|
|
RepoModel mutation, Body decision document, and `EpiphanyMindCommitReceipt`.
|
|
Derived state: role boards, events, status, and legacy aggregate projections.
|
|
Forbidden writers: proposal, repair, or verdict results cannot satisfy Body
|
|
work; role-lane terminality and thread state cannot manufacture review or
|
|
acceptance; the aggregate coordinator acceptance branch delegates this family
|
|
to the same owner. Shared paths: operator and Resident review use the same
|
|
current-work projection and admission primitive. Verification exercises Body
|
|
work through pressure, launch, wait, terminal result, review, keyed acceptance,
|
|
and cleared continuation with zero external Body reads; focused current-work,
|
|
Resident, Self-policy, coordinator/status, and full core-library checks pass.
|
|
|
|
Exact `d1b031cb` completes the parallel Proposal Modeling lifecycle without
|
|
copying Body policy into a generic registry. `EpiphanyCurrentWorkProjection`
|
|
derives the oldest unresolved proposal's Launch, Wait, or Review state from its
|
|
immutable request, exact family launch binding, runtime job/result, and
|
|
`Modeling.proposal_frontier` commit. Failed or cancelled exact attempts expose a
|
|
new deterministic ordinal; unrelated Mind writes are outside the launch CAS.
|
|
|
|
Owner: `launch_current_proposal_modeling_work` owns atomic publication of one
|
|
runtime attempt, one exact proposal launch binding, and one scoped read grant;
|
|
`accept_proposal_modeling_result` owns semantic admission. Inputs: immutable
|
|
proposal/request envelopes, admitted Body and keyed RepoModel projection, exact
|
|
runtime result, and sealed decision context. Outputs: job-bound lifecycle and
|
|
keyed RepoModel mutation receipt. Derived state: coordinator action, status,
|
|
Resident pressure, role display, timestamps, and thread provenance. Forbidden
|
|
writers: `EpiphanyThreadStateEntry`, generic Modeling lanes, aggregate
|
|
acceptance receipts, and CLI hints cannot create, suppress, review, or admit
|
|
proposal work. Shared path: operator and Resident use the same projection and
|
|
acceptance owner; Body and Proposal share only the exact-envelope launch CAS.
|
|
Deletion line: the old pending selector, aggregate proposal validator/context
|
|
builder, proposal launch binding writer, and generic Modeling proposal hint are
|
|
gone. Verification proves concurrent launch convergence, exact Wait/Review,
|
|
keyed admission, no thread-state envelope, core 564/564, Self policy 26/26, and
|
|
the coordinator-runtime feature build.
|
|
|
|
Exact `e404c105` collapsed the duplicated Body and Proposal Launch/Wait/Review
|
|
enums; exact `fc5d1a4a` names the now-shared vocabulary truthfully as
|
|
`EpiphanyAgentPassContinuationAction`. This type owns only the common
|
|
attempt-continuation vocabulary. It does not own request selection, result
|
|
validity, mutation shape, or admission; those remain with the concrete Body and
|
|
Proposal families. The shared vocabulary is therefore DRY without becoming a
|
|
generic work registry.
|
|
|
|
The next source audit found that claim-repair was not a live request family.
|
|
`commit_repo_model_claim_challenge` and
|
|
`commit_repo_model_claim_repair_request` have no production caller, no source
|
|
constructs a `RepoModelClaimChallenge`, and no acceptance test proves the chain.
|
|
Its aggregate-thread launch branch was dormant scaffolding. Exact `20dd66c8`
|
|
deletes the repair request/binding/context contracts, runtime registration and
|
|
carriers, coordinator validation/binding writer, reasoning projection, result
|
|
cargo, exports, and OpenAI lowering. A source guard over Rust/TOML paths finds no
|
|
surviving family symbol. The Eyes claim-challenge document remains because its
|
|
exact claim hash independently suppresses unsafe planning. A future Eyes
|
|
contradiction must earn a typed external-evidence obligation through a real
|
|
producer, current-work projection, terminal context, and Mind admission proof.
|
|
|
|
That deletion pass also falsified the initial launch-CAS proof. Body and
|
|
Proposal launchers first projected work, then opened a second cache snapshot;
|
|
the latter could observe a just-committed binding, increment the attempt
|
|
ordinal, and launch a second live worker. The owner now derives launchability
|
|
and ordinal from the same pulled cache snapshot used to construct its exact CAS.
|
|
Concurrent Proposal launch convergence passes 20/20 stress iterations; a live
|
|
attempt cannot be converted into retry authority by a convenience preflight.
|
|
|
|
Exact `d367e525` completes the third Modeling lifecycle: incorporation of a
|
|
typed Soul verdict into one routed RepoModel frontier. Verification acceptance
|
|
atomically persists `SoulVerdictReceipt` and the deterministic
|
|
`RepoFrontierModelingRequest`; neither an accepted Research timestamp nor a
|
|
latest-result slot can manufacture the request. The exact request, Soul verdict,
|
|
route, Verification request/result, and current frontier document are sealed in
|
|
`RepoFrontierVerdictModelingLaunchAuthority` inside the role reasoning
|
|
projection. The runtime launch no longer carries a parallel authority blob or
|
|
aggregate telemetry prompt.
|
|
|
|
Owner: `project_current_work` derives this family's Launch/Wait/Review state;
|
|
`launch_current_frontier_verdict_modeling_work` atomically publishes one
|
|
deterministic attempt; `accept_frontier_verdict_modeling_result` alone admits its
|
|
bounded frontier mutation under `Modeling.frontier_verdict`. Inputs: one exact
|
|
Soul verdict chain, current routed frontier document, admitted Body, sealed Mind
|
|
projection, exact terminal result, and decision context. Outputs: one typed
|
|
worker lifecycle and one exact Mind commit receipt. Derived state: role boards,
|
|
events, timestamps, status JSON, and `modelingResultAcceptedAfterResearch` are
|
|
display/audit projections only. Forbidden writers: Eyes acceptance, aggregate
|
|
thread revision, accepted-at ordering, latest Verification selection, dynamic
|
|
prompt appenders, and generic Modeling role terminality cannot create, suppress,
|
|
review, or admit this work. Shared paths: operator and Resident consume the same
|
|
current-work projection and acceptance owner. Deletion line: the aggregate
|
|
frontier-verdict context constructor, telemetry appender, latest-result selectors,
|
|
parallel MessagePack authority field, and direct Soul-verdict writer are gone.
|
|
|
|
The exact frontier `EpiphanyMindDocumentVersion` is both sealed audit input and
|
|
the family's strong dependency. Admission verifies the mutation planner read
|
|
that same version. A later disjoint keyed node commit therefore merges, while a
|
|
same-frontier change before planning refuses and a change after planning loses
|
|
the batch CAS. The model's terminal output is never reinterpreted against newer
|
|
strong state. The focused lifecycle proves deterministic two-launch convergence,
|
|
sealed context, terminal result, review, admission, disjoint merge, and
|
|
byte-identical stale refusal. Core library 561/561, OpenAI runtime 43/43, Self
|
|
policy 26/26, and coordinator runtime 18/18 pass.
|
|
|
|
## Keyed frontier Research lifecycle (2026-08-18)
|
|
|
|
Exact `c7412998` removes Research from the aggregate coordinator state machine.
|
|
The immutable v3 `RepoFrontierResearchRequest` seals the exact current frontier
|
|
document and its dependency closure. The complete keyed RepoModel view remains
|
|
inside the reasoning projection as audit cargo, but it is not a global strong
|
|
read and unrelated graph changes cannot stale the pass.
|
|
|
|
- Owner: `project_current_work` derives the exact Research continuation;
|
|
`launch_current_frontier_research_work` publishes its deterministic attempt;
|
|
`accept_frontier_research_result` alone admits its decision under
|
|
`Eyes.frontier_research`.
|
|
- Inputs: one explicit external-evidence frontier, its exact dependency document
|
|
versions, immutable request and launch, terminal runtime result, sealed
|
|
reasoning basis and decision context, and exact governed public-source
|
|
receipts actually supplied to the model.
|
|
- Outputs: separate keyed evidence, observation, and optional investigation
|
|
checkpoint documents; one request/context-bound `EyesEvidencePacket`; and one
|
|
atomic `EpiphanyMindCommitReceipt`.
|
|
- Derived state: accepted-at timestamps, role boards, latest-result slots,
|
|
events, generic Research status, and coordinator thread are display or
|
|
transport projections only.
|
|
- Forbidden writers: generic `roleAccept`, aggregate thread-state mutation,
|
|
CRRC regather, Modeling regather hints, accepted Eyes state, and a stale role
|
|
lane cannot create, suppress, review, retry, or admit Research. Eyes acceptance
|
|
cannot create or gate Modeling work.
|
|
- Shared paths: operator and Resident consume the same exact current-work
|
|
lifecycle. Runtime fulfillment and archival use the same typed Research
|
|
request reference as live review.
|
|
- Cut line: Research has no aggregate launch or acceptance fallback. The old
|
|
accepted/failure/timestamp routing branches are deleted; a missing explicit
|
|
external-evidence obligation cannot be repaired into Eyes work.
|
|
- Verification: the complete decision remains durable if its strong frontier
|
|
changes after inference, but admission refuses byte-identically and never
|
|
reinterprets the output. A disjoint keyed RepoModel change merges; an exact
|
|
frontier change conflicts. Exact replay returns the original commit, archived
|
|
fulfillment requires that commit, and accepted Eyes produces no Modeling
|
|
obligation. CultCache 42/42 active tests, core library 561/561, Self policy
|
|
26/26, OpenAI runtime 43/43, coordinator runtime 18/18, and all-target core
|
|
compilation pass.
|
|
|
|
The proof exposed a substrate-level encoding invariant. Compact positional
|
|
MessagePack is unsafe for nested structs whose middle optional fields are
|
|
omitted: later fields can occupy the wrong schema positions. CultCache exact
|
|
`ba6a487` adds `prepare_entry_named`, which retains the typed numeric-slot
|
|
`DatabaseEntry` envelope while encoding ordinary nested document fields as
|
|
named maps. `prepare_mind_document` is the single Mind boundary, and objective,
|
|
Body, and Research writers use it. This is an encoding owner, not a second state
|
|
format or compatibility path.
|
|
|
|
## Keyed frontier Verification lifecycle (2026-08-18)
|
|
|
|
Exact `fc5d1a4a` removes Verification from aggregate coordinator behavior. A
|
|
successful exact Hands commit publishes its `HandsCommitReceipt` and derived
|
|
`RepoFrontierVerificationRequest` in one CAS transaction. The request seals the
|
|
route, exact frontier document, Hands authority, intent, review, patch receipt,
|
|
command receipt, and commit receipt. The full RepoModel projection remains
|
|
audit cargo and cannot turn unrelated graph work into a conflict.
|
|
|
|
- Owner: `project_current_work` derives Verification Launch/Wait/Review;
|
|
`launch_current_frontier_verification_work` publishes the deterministic
|
|
attempt; `accept_frontier_verification_result` alone admits the decision under
|
|
`Soul.verification`.
|
|
- Inputs: one exact routed frontier, one complete authorized Hands consequence,
|
|
immutable Verification request and launch, terminal runtime result, sealed
|
|
reasoning basis, and exact decision context.
|
|
- Outputs: one keyed `EpiphanyMindVerificationAuditDocument`, one typed
|
|
`SoulVerdictReceipt`, one deterministic `RepoFrontierModelingRequest`, and one
|
|
atomic `EpiphanyMindCommitReceipt`.
|
|
- Derived state: role boards, events, accepted-at timestamps, latest result
|
|
slots, generic Verification status, and coordinator thread are display or
|
|
transport projections only.
|
|
- Forbidden writers: generic role launch/acceptance, aggregate thread updates,
|
|
accepted-at comparisons, dynamic Hands telemetry prompt appenders, and the
|
|
model cannot create, suppress, review, or admit Verification. The runtime,
|
|
not model JSON, supplies request and route identity from the sealed launch.
|
|
- Shared paths: operator, status, and Resident consume the same current-work
|
|
projection and the same admission owner. Runtime fulfillment and archival use
|
|
the same typed `FrontierVerification` request reference.
|
|
- Cut line: the aggregate Soul-verdict acceptance prerequisite, latest Hands
|
|
consequence selector, prompt-time request writer, and generic Verification
|
|
launch/acceptance fallback are deleted. `EpiphanyAgentPassContinuationAction`
|
|
shares only Launch/Wait/Review vocabulary across concrete pass families.
|
|
- Verification: exact replay returns the original commit receipt; an unrelated
|
|
keyed node commit between inference and admission merges; an exact-frontier
|
|
change refuses admission with the copied store byte-identical. Core 559/559,
|
|
OpenAI runtime 23/23, coordinator runtime 18/18, and both all-target checks
|
|
pass.
|
|
|
|
## Keyed frontier Planning and PlanMind lifecycle (2026-08-18)
|
|
|
|
Exact `c9329ed6` removes Planning and PlanMind from aggregate coordinator
|
|
behavior. `RepoFrontierPlanningRequest` v4 seals the exact current frontier and
|
|
dependency documents plus each affected claim's obligation document. The full
|
|
keyed RepoModel projection remains immutable audit cargo; it is not a global
|
|
strong read. Request identity is runtime plus frontier semantic identity and
|
|
contains no coordinator thread.
|
|
|
|
- Owner: `project_current_work` derives Planning and PlanMind
|
|
Launch/Wait/Review; `launch_current_frontier_planning_work` and
|
|
`launch_current_frontier_plan_mind_work` publish deterministic attempts;
|
|
`commit_repo_frontier_plan_decision` alone adopts or refuses the candidate.
|
|
- Inputs: exact frontier/dependency versions, per-claim obligation guards,
|
|
immutable Planning request, exact Imagination candidate/result, immutable
|
|
PlanMind request, exact Mind result, and both sealed decision contexts.
|
|
- Outputs: one typed plan-decision receipt and, for adoption, one atomic
|
|
replacement of the exact frontier containing the adopted plan. Imagination
|
|
has proposal authority only; Mind owns adoption.
|
|
- Derived state: complete RepoModel view, role boards, events, accepted-at
|
|
timestamps, latest-result slots, coordinator thread, and operator status are
|
|
audit or display projections only.
|
|
- Forbidden writers: aggregate state patches, generic coordinator Planning or
|
|
PlanMind launch validators, role-lane terminality, accepted-at ordering, and
|
|
thread-derived identities cannot create, suppress, retry, review, or adopt a
|
|
plan.
|
|
- Shared paths: operator, status, and Resident consume the same current-work
|
|
projection. Planning and PlanMind use family-specific requests and admission
|
|
rules while sharing only the pure Launch/Wait/Review vocabulary.
|
|
- Cut line: old aggregate launch constructors and validators are deleted.
|
|
Planning failure review is a typed Self receipt. Terminal replay authenticates
|
|
the immutable request/result chain, then verifies the adopted consequence; it
|
|
does not demand that the frontier still have its pre-adoption value.
|
|
- Concurrency guard: every RepoModel node has a keyed
|
|
`EpiphanyRepoModelClaimObligationsDocument`. Claim challenge admission updates
|
|
that document atomically with the challenge. Planning strongly reads the
|
|
exact guard, so a new external-evidence obligation and stale plan adoption
|
|
cannot both commit; unrelated graph identities still merge.
|
|
- Verification: the capstone launches Imagination and Mind without persisted
|
|
thread state, seals both contexts, adopts and replays the exact candidate,
|
|
preserves an unrelated concurrent node, and makes a copied challenge state
|
|
reject the stale request and launch byte-identically. Core library 555/555,
|
|
OpenAI runtime 23/23, coordinator runtime 18/18, and core/OpenAI all-target
|
|
checks pass.
|
|
|
|
## Keyed Reorientation lifecycle (2026-08-18)
|
|
|
|
Exact `d5df53ae` removes Reorientation from aggregate thread-state behavior.
|
|
`EpiphanyReorientationRequest` seals one explicit typed continuity projection:
|
|
Mind identity, objective, focus/checkpoint, mode, current Body observation,
|
|
RepoModel identity/frontier documents, and the preceding accepted continuity
|
|
decision when one exists. The request stores every exact typed source version;
|
|
thread is creation provenance only and does not participate in request identity
|
|
or currentness.
|
|
|
|
- Owner: `reorientation_work.rs` creates the request, derives
|
|
Launch/Wait/Review, publishes deterministic attempts, records model-backed
|
|
terminal failure, and alone admits a successful decision under
|
|
`Continuity.reorientation`.
|
|
- Inputs: exact keyed Mind source versions, immutable request and launch
|
|
binding, exact runtime job/process result, sealed reasoning basis, and exact
|
|
decision context.
|
|
- Outputs: one immutable `EpiphanyMindReorientationDecisionDocument` plus
|
|
`ContinuityRecoveryReceipt`, or one immutable
|
|
`EpiphanyMindReorientationPassFailureDocument` before retry. Both preserve the
|
|
exact terminal decision context; neither needs a transcript.
|
|
- Derived state: operator status, CRRC wording, role boards, runtime events,
|
|
timestamps, and creation thread are display, physiology, or provenance only.
|
|
- Forbidden writers: `EpiphanyThreadStateEntry`, global expected revision,
|
|
generic coordinator launch/acceptance, latest role-lane result, checkpoint
|
|
freshness labels, accepted-at ordering, and aggregate scratch/checkpoint
|
|
patches cannot launch, suppress, retry, or admit Reorientation.
|
|
- Shared paths: status, operator, coordinator, reasoning-basis sealing, result
|
|
review, and retry all consume the same keyed current-work projection and
|
|
family owner.
|
|
- Cut line: aggregate Reorientation service/acceptance APIs, generic launch
|
|
constructors, the checkpoint/freshness recommender, and the timestamp
|
|
relinquishment compensator are deleted. `surfaces/reorient.rs` retains only
|
|
the display enum for an accepted resume/regather decision.
|
|
- Concurrency: an unrelated Mind insert after basis sealing merges because it
|
|
is not a family strong read. Replacing an exact objective/frontier source
|
|
refuses admission byte-identically; model output is never rebased. The
|
|
accepted decision itself becomes immutable source cargo for a later explicit
|
|
request over otherwise identical state.
|
|
- Verification: core 552/552; OpenAI runtime library 23/23 and both runtime
|
|
binaries 10/10; coordinator 18/18; status 3/3; relevant all-target checks
|
|
pass.
|