Advance rebuild cutover state

This commit is contained in:
Meta Vens 2026-09-01 19:50:52 +02:00
commit f9f019b970
5 changed files with 101 additions and 83 deletions

View file

@ -32,9 +32,9 @@ ontology reducer, and commits an atomic CultCache revision. Session Zero,
autonomous turns, player commands, imports, and administrative changes must
enter through the same `CommandEnvelope` path.
That owner must be sealed before the ontology widens. The public boundary is
create/open, immutable snapshot, submit, and typed receipts. Mutable aggregate
state, canonical ID issuance, the reducer, and the CultCache journal writer are
The replacement owner is sealed. Its runtime boundary remains create/open,
immutable snapshot, submit, and typed receipts. Mutable aggregate state,
canonical ID issuance, the reducer, and the CultCache journal writer stay
private to the kernel. Controller assignment and affordance grants are
canonical; current executability and exact revision-bound decision
opportunities are derived and revalidated by the kernel.
@ -83,25 +83,27 @@ load or evaluation evidence; none admits ontology or declares a world complete.
exposed mutable state and ID issuance, admitted translation-gap evidence into
canonical types, allowed no-op commits, and left affordance and opportunity
authority undefined. None of it is current authority.
- `b53251f` lands the sealed private `foundation.v0` replacement owner. Exact
create/open, immutable snapshot, command submit, and typed receipts remain
crate-private with mutable aggregate state, ID issuance, authentication
construction, reduction, and the CultCache journal. Nine focused tests prove
exact idempotent create, immutable genesis, one live owner, sealed auth
evidence, replay and digests, persisted rejection and no-op non-commit,
store-path identity revocation, and post-durable lost-ack poison followed by
explicit reopen and exact retry.
- The legacy exported `kernel::WorldKernel` remains the live runtime path. The
next implementation adds the minimal Draft-to-Active/player/autonomous
reducer plus mailbox, controller, affordance, and opportunity authority
behind the private replacement owner.
- Legacy `WorldKernel`, `SessionZeroKernel`, aggregate Campaign/component state,
alternate ingresses, semantic verifier/reconciliation stages, model-owned
scheduling, and checkpoint recovery remain deletion targets.
- `12ee9f4` deletes the dead legacy Elaboration and Mutation kernel ingresses
and their component-write helpers: 686 lines removed without a replacement
compatibility path.
- `66ed2ec` completes the sealed private `foundation.v0` authority loop. Draft
creation, approval, activation, canonical controller assignments, affordance
grants, revision-bound opportunities, and one shared human/autonomous action
reducer all commit through one aggregate and journal. One mailbox serializes
submission and snapshot access. Eighteen focused tests prove lifecycle,
controller and opportunity fail-closed behavior, restart, idempotency,
one-owner, authentication, non-commit, mailbox cancellation, lost replies,
immutable genesis, and journal forgery rejection.
- The replacement remains crate-private. The legacy exported
`kernel::WorldKernel`, executable startup, Session Zero, player turn,
autonomous scheduling, Campaign/component, verifier/reconciliation, and
checkpoint paths remain live deletion targets. The next move exposes and
wires only the replacement runtime facade and mailbox, then cuts those owners
without dual-write.
Do not deploy the rebuild branch or start another acceptance run while the
replacement owner lacks its lifecycle, controller-scope, affordance,
opportunity, privacy, restart, and negative proofs.
legacy executable still owns startup, Draft, player, autonomous, or recovery
mutation paths.
## Immutable failure evidence
@ -131,20 +133,18 @@ and proposals but cannot commit on their behalf.
## Next gate
Add a minimal private reducer behind the sealed `foundation.v0` owner for Draft
creation, approval, activation, one player action, and one autonomous action.
Give it one mailbox, canonical controller assignments and affordance grants,
and kernel-derived revision-bound decision opportunities. A proposal must fail
closed when its revision, controller, authority scope, affordance, or current
opportunity differs. Translation gaps and scheduler output retain no
world-write path.
Expose the sealed replacement as the crate and executable runtime identity,
with `WorldMailbox` as the only live world command boundary. Bind authenticated
runtime identity to its sealed caller evidence, make startup create or open one
owner and spawn one mailbox, then route Draft creation, approval, activation,
player decisions, and autonomous controller proposals through the existing
command path.
The vertical-slice suite must preserve the landed one-writer, authentication,
idempotency, immutable-genesis, replay/digest, non-commit, path-revocation, and
lost-ack invariants while proving lifecycle, controller-scope, affordance,
opportunity, privacy, and restart behavior. Cut obsolete writers as Session
Zero, resolution, elaboration, persistence, and projection move onto that
owner. No live acceptance run precedes this suite.
Cut each old startup, Session Zero, player, autonomous, Campaign/component, and
recovery writer before enabling its replacement path. Do not dual-write, mirror
canonical state, or add a compatibility router. Runtime restart and negative
checks must prove the old paths cannot mutate or repair the replacement owner
before any live acceptance run.
## Essential references

View file

@ -10,21 +10,22 @@ mode additional authority.
## Current mechanism
The repository still contains the pre-rebuild runtime: separate Session Zero
and campaign kernels, aggregate Campaign and component representations,
multiple mutation ingresses, semantic verifier and reconciliation stages,
model-owned scheduling decisions, and persisted recovery/checkpoint paths.
These mechanisms are teardown evidence, not foundations that must survive.
The executable still starts the pre-rebuild runtime: separate Session Zero and
campaign owners, aggregate Campaign and component representations, semantic
verifier and reconciliation stages, model-owned scheduling decisions, and
persisted recovery/checkpoint paths. Commit `12ee9f4` has removed the dead
Elaboration and Mutation ingresses and their component-write helpers; remaining
legacy paths are live deletion targets, not foundations that must survive.
The target map is adopted. The first subtraction removed seven pipeline-smoke
binaries and two live-fire scripts. The projection crate now exposes explicit
`NarrativePersona` and `OperationalAgent` modes plus a total Interpreter report.
An uncommitted broad `world.rs` prototype was rejected and deleted before it
became authority. It exposed mutable aggregate state and ID issuance, placed
translation-gap evidence inside canonical world types, permitted empty commits,
and defined controllers without owning executable affordances or exact decision
opportunities. The sealed aggregate boundary is landed. The active bounded move
is now the minimal private reducer, not a public ontology inventory.
The projection crate exposes explicit `NarrativePersona` and `OperationalAgent`
modes plus a total Interpreter report. Commit `66ed2ec` completes the sealed
private `foundation.v0` authority loop: Draft creation, approval, activation,
canonical controller assignments and affordance grants, revision-bound
opportunities, one shared human/autonomous decision reducer, one mailbox, and
atomic replay. Eighteen focused world tests pass. That module is not yet the
crate or executable runtime identity. The active move is to expose and wire its
mailbox boundary, then cut each old startup, Draft, player, autonomous, and
recovery owner without dual-write.
## Authority map
@ -123,27 +124,30 @@ and CultCache writes unreachable from outside the owning module. Prove the
visibility boundary and the one-writer transaction seam before widening the
state vocabulary.
### 2. Add the minimal private reducer
### 2. Add the minimal private reducer — landed
Behind that boundary, implement only the state and command vocabulary required
for Draft creation, approval, activation, one actor action, and one autonomous
action. The aggregate owns controller assignments and affordance grants; it
derives exact current executability and revision-bound opportunities. Allocate
IDs only after a complete candidate validates, reject empty reductions without
a commit, and persist accepted state plus commit atomically with expected
revision and idempotency. Add places, relations, resources, external ownership,
and other ontology components only when the vertical slice reaches their typed
causal boundary.
`66ed2ec` implements the state and command vocabulary required for Draft
creation, approval, activation, one human action, and one autonomous action.
The aggregate owns controller assignments and affordance grants and derives
exact revision-bound opportunities. IDs issue only after complete seed
validation; rejected and empty reductions do not commit. Places, relations,
resources, external ownership, and other ontology components wait for a live
typed causal boundary.
### 3. Exercise one vertical slice
### 3. Prove the private authority slice — landed
Route Draft creation and activation, one player action, and one autonomous
action through the aggregate. Derive a subject-private projection and one
decision opportunity. Exercise both cognition modes without allowing either
to write directly.
Eighteen focused tests exercise Draft creation, approval, activation, one human
decision, one NarrativePersona-controlled decision, and one
OperationalAgent-controlled decision through the same aggregate action command.
They cover exact controller scope and affordance matching, revision-bound
opportunity rejection, restart, immutable genesis, idempotency, serialized
mailbox ownership, cancellation, lost reply semantics, and forged-history
rejection. Controller mode changes representation only; it does not create a
second reducer path.
For `NarrativePersona`, the Projector emits prose context, the Persona returns
prose only, and the runner first persists an immutable receipt-bound Persona
Live `NarrativePersona` integration still requires the Projector to emit prose
context, the Persona to return prose only, and the runner first to persist an
immutable receipt-bound Persona
turn. The Interpreter returns a completed report containing that exact
noncanonical source prose, zero or more typed proposals, and zero or more
translation gaps. Spoken words require a typed speech proposal. Invalid capture
@ -152,18 +156,30 @@ transport or dispatch fault before explicit finalization discards partial
captures and leaves the immutable source pending for a fresh attempt; it does
not become semantic interpretation failure.
For `OperationalAgent`, the controller receives only its permissioned typed
Live `OperationalAgent` integration receives only its permissioned typed
view and tools. Its proposals enter the same command path as narrative
proposals. It does not bypass projection privacy, authority derivation, or the
reducer.
### 4. Migrate and cut
### 4. Expose, wire, and cut — active
Move Session Zero, turn handling, resolution, elaboration, scheduling,
persistence, transcript/news projection, and external publication onto the
vertical slice. At each move, delete or neuter the old writer first. Retain
model transport, Vault retrieval, Heimdall identity, Eve/CultMesh projection,
Idunn health, and external adapters only where their ownership remains clean.
Expose the replacement facade as the crate's runtime identity while keeping
mutable state, ID issuance, reduction, journal access, and authenticated-caller
construction sealed. Startup creates or opens one replacement owner and spawns
one mailbox; runtime consumers receive only the mailbox-facing command and
snapshot surface.
Route Draft creation, approval, activation, player decisions, and autonomous
controller proposals through that boundary. Delete or neuter each old
Session Zero, legacy kernel, Campaign/component, scheduler, verifier,
reconciliation, and recovery writer before enabling its replacement route. Do
not dual-write, mirror canonical state, or add a compatibility router.
Then move resolution, elaboration, transcript/news projection, and external
publication onto typed commands and derived views as their causal boundaries
are reached. Retain model transport, Vault retrieval, Heimdall identity,
Eve/CultMesh projection, Idunn health, and external adapters only where their
ownership remains clean.
### 5. Contract verification

View file

@ -250,4 +250,5 @@
{"note": "Mind maintenance falsified stale rebuild steering: the map still claimed subtraction had not begun and the handoff later revived Run 111 as an active continuation. Rebuilt the handoff and implementation plan around the adopted one-WorldState authority, landed cuts 64f50de/a144c33, total interpretation, current deletion line, and focused verification gate; chronology remains in Git, evidence, and the frozen teardown map.", "status": "ok", "ts": "2026-09-01T12:37:47+00:00", "type": "architecture"}
{"note": "Rejected and deleted the uncommitted first world.rs foundation after focused tests passed. Review found the public module exposed mutable WorldState and ID issuance, translation-gap inference had become canonical world mutation, empty batches could advance revision, controller commands lacked consumed opportunity/readiness/affordance binding, external ownership was bypassed by world-author authority, command evidence did not bind fact evidence, and batch self-digests were unverifiable. Next cut is private-first: seal WorldKernel/aggregate/journal ownership before reintroducing a minimal reducer behind it.", "status": "rejected", "ts": "2026-09-01T13:03:26+00:00", "type": "architecture"}
{"note": "Commit b53251f lands a private provisional foundation.v0 WorldKernel owner: immutable genesis and exact create retry, sealed authentication evidence, one live CultCache owner, canonical WorldId issuance and reduction kept private, digest/replay recovery, persisted no-op and rejection non-commit, path-identity revocation, and poison/reopen after a simulated post-durable lost acknowledgement. Nine focused world tests pass. The legacy exported kernel remains live; this is the sealed foundation, not cutover.", "status": "ok", "ts": "2026-09-01T14:18:40+00:00", "type": "implementation"}
{"ts": "2026-09-01T14:37:59+00:00", "type": "implementation", "status": "ok", "note": "Commit d49b907 makes the replacement Persona interpretation contract structurally total. Persona source prose is immutable noncanonical evidence bound to typed world/controller/opportunity/revision and inference receipts; only exact typed captures may propose state, actual quoted dialogue is required for speech, malformed spans or raw tool payloads become exact whole-source translation gaps, normal step exhaustion adds an unresolved-source gap, and infrastructure interruption discards partial captures and returns the source pending. Ten focused projection tests pass. Legacy exported Persona runners still contain terminal failure paths and do not expose record_gap; they remain deletion targets, so totality is not yet a live-runtime claim."}
{"note": "Commit d49b907 makes the replacement Persona interpretation contract structurally total. Persona source prose is immutable noncanonical evidence bound to typed world/controller/opportunity/revision and inference receipts; only exact typed captures may propose state, actual quoted dialogue is required for speech, malformed spans or raw tool payloads become exact whole-source translation gaps, normal step exhaustion adds an unresolved-source gap, and infrastructure interruption discards partial captures and returns the source pending. Ten focused projection tests pass. Legacy exported Persona runners still contain terminal failure paths and do not expose record_gap; they remain deletion targets, so totality is not yet a live-runtime claim.", "status": "ok", "ts": "2026-09-01T14:37:59+00:00", "type": "implementation"}
{"ts": "2026-09-01T17:40:32+00:00", "type": "implementation", "status": "ok", "note": "Commits 12ee9f4 and 66ed2ec advance the authority rebuild past the private reducer phase. The first removes 686 lines of dead legacy Elaboration and Mutation ingress without a compatibility writer. The second completes the sealed Draft-to-Active authority loop with canonical controller assignments and affordance grants, revision-bound opportunities, one shared human and autonomous ExerciseDecision reducer, one serialized mailbox, atomic replay, and exact rejection and lost-ack behavior; eighteen focused world tests pass. This is not runtime cutover: the legacy exported kernel and startup, Session Zero, player, autonomous, and recovery paths remain live owners. The next move exposes and wires the replacement runtime identity and mailbox, deleting each old owner without dual-write."}

View file

@ -252,3 +252,4 @@
{"key": "2026-09-01T130326Z0000-0250-72c176f77744", "payload": "eyJub3RlIjogIlJlamVjdGVkIGFuZCBkZWxldGVkIHRoZSB1bmNvbW1pdHRlZCBmaXJzdCB3b3JsZC5ycyBmb3VuZGF0aW9uIGFmdGVyIGZvY3VzZWQgdGVzdHMgcGFzc2VkLiBSZXZpZXcgZm91bmQgdGhlIHB1YmxpYyBtb2R1bGUgZXhwb3NlZCBtdXRhYmxlIFdvcmxkU3RhdGUgYW5kIElEIGlzc3VhbmNlLCB0cmFuc2xhdGlvbi1nYXAgaW5mZXJlbmNlIGhhZCBiZWNvbWUgY2Fub25pY2FsIHdvcmxkIG11dGF0aW9uLCBlbXB0eSBiYXRjaGVzIGNvdWxkIGFkdmFuY2UgcmV2aXNpb24sIGNvbnRyb2xsZXIgY29tbWFuZHMgbGFja2VkIGNvbnN1bWVkIG9wcG9ydHVuaXR5L3JlYWRpbmVzcy9hZmZvcmRhbmNlIGJpbmRpbmcsIGV4dGVybmFsIG93bmVyc2hpcCB3YXMgYnlwYXNzZWQgYnkgd29ybGQtYXV0aG9yIGF1dGhvcml0eSwgY29tbWFuZCBldmlkZW5jZSBkaWQgbm90IGJpbmQgZmFjdCBldmlkZW5jZSwgYW5kIGJhdGNoIHNlbGYtZGlnZXN0cyB3ZXJlIHVudmVyaWZpYWJsZS4gTmV4dCBjdXQgaXMgcHJpdmF0ZS1maXJzdDogc2VhbCBXb3JsZEtlcm5lbC9hZ2dyZWdhdGUvam91cm5hbCBvd25lcnNoaXAgYmVmb3JlIHJlaW50cm9kdWNpbmcgYSBtaW5pbWFsIHJlZHVjZXIgYmVoaW5kIGl0LiIsICJzdGF0dXMiOiAicmVqZWN0ZWQiLCAidHMiOiAiMjAyNi0wOS0wMVQxMzowMzoyNiswMDowMCIsICJ0eXBlIjogImFyY2hpdGVjdHVyZSJ9", "stored_at": "2026-09-01T13:03:26.351584+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-01T141840Z0000-0251-0503ba842a66", "payload": "eyJub3RlIjogIkNvbW1pdCBiNTMyNTFmIGxhbmRzIGEgcHJpdmF0ZSBwcm92aXNpb25hbCBmb3VuZGF0aW9uLnYwIFdvcmxkS2VybmVsIG93bmVyOiBpbW11dGFibGUgZ2VuZXNpcyBhbmQgZXhhY3QgY3JlYXRlIHJldHJ5LCBzZWFsZWQgYXV0aGVudGljYXRpb24gZXZpZGVuY2UsIG9uZSBsaXZlIEN1bHRDYWNoZSBvd25lciwgY2Fub25pY2FsIFdvcmxkSWQgaXNzdWFuY2UgYW5kIHJlZHVjdGlvbiBrZXB0IHByaXZhdGUsIGRpZ2VzdC9yZXBsYXkgcmVjb3ZlcnksIHBlcnNpc3RlZCBuby1vcCBhbmQgcmVqZWN0aW9uIG5vbi1jb21taXQsIHBhdGgtaWRlbnRpdHkgcmV2b2NhdGlvbiwgYW5kIHBvaXNvbi9yZW9wZW4gYWZ0ZXIgYSBzaW11bGF0ZWQgcG9zdC1kdXJhYmxlIGxvc3QgYWNrbm93bGVkZ2VtZW50LiBOaW5lIGZvY3VzZWQgd29ybGQgdGVzdHMgcGFzcy4gVGhlIGxlZ2FjeSBleHBvcnRlZCBrZXJuZWwgcmVtYWlucyBsaXZlOyB0aGlzIGlzIHRoZSBzZWFsZWQgZm91bmRhdGlvbiwgbm90IGN1dG92ZXIuIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA5LTAxVDE0OjE4OjQwKzAwOjAwIiwgInR5cGUiOiAiaW1wbGVtZW50YXRpb24ifQ==", "stored_at": "2026-09-01T14:18:40.242605+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-01T143759Z0000-0252-5215bd873810", "payload": "eyJub3RlIjogIkNvbW1pdCBkNDliOTA3IG1ha2VzIHRoZSByZXBsYWNlbWVudCBQZXJzb25hIGludGVycHJldGF0aW9uIGNvbnRyYWN0IHN0cnVjdHVyYWxseSB0b3RhbC4gUGVyc29uYSBzb3VyY2UgcHJvc2UgaXMgaW1tdXRhYmxlIG5vbmNhbm9uaWNhbCBldmlkZW5jZSBib3VuZCB0byB0eXBlZCB3b3JsZC9jb250cm9sbGVyL29wcG9ydHVuaXR5L3JldmlzaW9uIGFuZCBpbmZlcmVuY2UgcmVjZWlwdHM7IG9ubHkgZXhhY3QgdHlwZWQgY2FwdHVyZXMgbWF5IHByb3Bvc2Ugc3RhdGUsIGFjdHVhbCBxdW90ZWQgZGlhbG9ndWUgaXMgcmVxdWlyZWQgZm9yIHNwZWVjaCwgbWFsZm9ybWVkIHNwYW5zIG9yIHJhdyB0b29sIHBheWxvYWRzIGJlY29tZSBleGFjdCB3aG9sZS1zb3VyY2UgdHJhbnNsYXRpb24gZ2Fwcywgbm9ybWFsIHN0ZXAgZXhoYXVzdGlvbiBhZGRzIGFuIHVucmVzb2x2ZWQtc291cmNlIGdhcCwgYW5kIGluZnJhc3RydWN0dXJlIGludGVycnVwdGlvbiBkaXNjYXJkcyBwYXJ0aWFsIGNhcHR1cmVzIGFuZCByZXR1cm5zIHRoZSBzb3VyY2UgcGVuZGluZy4gVGVuIGZvY3VzZWQgcHJvamVjdGlvbiB0ZXN0cyBwYXNzLiBMZWdhY3kgZXhwb3J0ZWQgUGVyc29uYSBydW5uZXJzIHN0aWxsIGNvbnRhaW4gdGVybWluYWwgZmFpbHVyZSBwYXRocyBhbmQgZG8gbm90IGV4cG9zZSByZWNvcmRfZ2FwOyB0aGV5IHJlbWFpbiBkZWxldGlvbiB0YXJnZXRzLCBzbyB0b3RhbGl0eSBpcyBub3QgeWV0IGEgbGl2ZS1ydW50aW1lIGNsYWltLiIsICJzdGF0dXMiOiAib2siLCAidHMiOiAiMjAyNi0wOS0wMVQxNDozNzo1OSswMDowMCIsICJ0eXBlIjogImltcGxlbWVudGF0aW9uIn0=", "stored_at": "2026-09-01T14:37:59.318539+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-01T174032Z0000-0253-0d12cf9f16ae", "payload": "eyJub3RlIjogIkNvbW1pdHMgMTJlZTlmNCBhbmQgNjZlZDJlYyBhZHZhbmNlIHRoZSBhdXRob3JpdHkgcmVidWlsZCBwYXN0IHRoZSBwcml2YXRlIHJlZHVjZXIgcGhhc2UuIFRoZSBmaXJzdCByZW1vdmVzIDY4NiBsaW5lcyBvZiBkZWFkIGxlZ2FjeSBFbGFib3JhdGlvbiBhbmQgTXV0YXRpb24gaW5ncmVzcyB3aXRob3V0IGEgY29tcGF0aWJpbGl0eSB3cml0ZXIuIFRoZSBzZWNvbmQgY29tcGxldGVzIHRoZSBzZWFsZWQgRHJhZnQtdG8tQWN0aXZlIGF1dGhvcml0eSBsb29wIHdpdGggY2Fub25pY2FsIGNvbnRyb2xsZXIgYXNzaWdubWVudHMgYW5kIGFmZm9yZGFuY2UgZ3JhbnRzLCByZXZpc2lvbi1ib3VuZCBvcHBvcnR1bml0aWVzLCBvbmUgc2hhcmVkIGh1bWFuIGFuZCBhdXRvbm9tb3VzIEV4ZXJjaXNlRGVjaXNpb24gcmVkdWNlciwgb25lIHNlcmlhbGl6ZWQgbWFpbGJveCwgYXRvbWljIHJlcGxheSwgYW5kIGV4YWN0IHJlamVjdGlvbiBhbmQgbG9zdC1hY2sgYmVoYXZpb3I7IGVpZ2h0ZWVuIGZvY3VzZWQgd29ybGQgdGVzdHMgcGFzcy4gVGhpcyBpcyBub3QgcnVudGltZSBjdXRvdmVyOiB0aGUgbGVnYWN5IGV4cG9ydGVkIGtlcm5lbCBhbmQgc3RhcnR1cCwgU2Vzc2lvbiBaZXJvLCBwbGF5ZXIsIGF1dG9ub21vdXMsIGFuZCByZWNvdmVyeSBwYXRocyByZW1haW4gbGl2ZSBvd25lcnMuIFRoZSBuZXh0IG1vdmUgZXhwb3NlcyBhbmQgd2lyZXMgdGhlIHJlcGxhY2VtZW50IHJ1bnRpbWUgaWRlbnRpdHkgYW5kIG1haWxib3gsIGRlbGV0aW5nIGVhY2ggb2xkIG93bmVyIHdpdGhvdXQgZHVhbC13cml0ZS4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDFUMTc6NDA6MzIrMDA6MDAiLCAidHlwZSI6ICJpbXBsZW1lbnRhdGlvbiJ9", "stored_at": "2026-09-01T17:40:32.825638+00:00", "type": "ghostlight.evidence_record.v0"}

View file

@ -212,7 +212,7 @@ pre_rebuild_architecture:
- Institution, faction, and consumer decision models
active_subgoals:
- Extend the sealed `foundation.v0` replacement owner with the minimal Draft-to-Active, player-action, and autonomous-action reducer plus mailbox, canonical controller assignments, affordance grants, and kernel-derived revision-bound opportunities. Preserve its private aggregate and journal boundary, exact idempotency, immutable genesis, one-live-owner lease, sealed authentication, replay and digest checks, durable non-commit evidence, path-identity revocation, and lost-ack poison/reopen behavior. Cut the split Session Zero/Campaign/component writers, model verifiers and reconcilers, model-owned scheduling, checkpoint recovery, and special elaboration commit paths as the vertical slice replaces them. Do not launch another scale run until lifecycle, controller-scope, affordance, opportunity, privacy, restart, and negative tests pass.
- Expose the sealed replacement as Ghostlight Dungeon's runtime identity and wire one mailbox per world into startup. Route Draft creation, approval, activation, player decisions, and autonomous controller proposals through that owner, deleting or neutering each old Session Zero, legacy kernel, Campaign/component, scheduler, and recovery writer before its replacement path becomes live. Do not dual-write, mirror canonical state, or preserve a compatibility owner. Preserve the complete private authority loop and eighteen focused tests landed in `66ed2ec`, plus the dead-ingress subtraction in `12ee9f4`. Do not launch another scale run before runtime cutover and negative proof that the old owners can no longer mutate world state.
- Connect a Delvehold-owned adapter to the admitted generic consumer contract: shared compiler/consumer WorldSeed admission, externally authoritative institution-or-Gestalt snapshots, attributed proposal acknowledgement, and committed-event newspaper composition over typed CultNet, without consumer-specific IDs or schemas in Ghostlight.
- Extend strategic/offscreen named-person individuation beyond the proven emerge-then-act path so people plot across sustained political waves, acquire relationships, fold, and return without granting a cell, arena, or model commit authority.
- Finish the semantic mutation migration: delete or demote remaining legacy model effect schemas and move aggregate campaign fields toward projection-only state. Seed publication and named-person presence now have explicit non-effect authority classifications.
@ -343,10 +343,10 @@ data_flow:
current_status:
summary: Ghostlight is in whole-machine teardown. Run 115 is terminal failed at world revision 2 with two of eight regions admitted and no strategic wave. Provider timeouts and a dangling institution location survived the qualification, verifier, reconciliation, context, timeout, and model-routing patches through commit 8964a92, proving that the pipeline lacks a single structural owner. The adopted rebuild retains NarrativePersona for embodied roleplay and admits OperationalAgent for operator-shaped cognition, both under explicit disjoint controller scopes. One WorldKernel, one typed ontology reducer, one CommandEnvelope ingress, and one atomic CultCache commit path own the target architecture. No acceptance run is active.
provider_acceptance_checkpoint: Exact pushed commit `139b8a6` completed Run 60 under `character-newsroom.v10` without world or per-wave replay. Its acceptance witness and terminal status bind the completed page and exact resume lineage. The independently dispatched blind reviewer, shown only the reader-facing fantasy newspaper, read it as a real left-populist civic broadsheet and did not immediately identify procedural generation, so the narrative reverse-Turing criterion passes. The review's substantive criticism is that the three stories feel like three rewrites of one briefing; accepted Run 60 remains immutable. The run used 96,902 prompt tokens and reported zero cache hits. Its delivered typeset artifact is `output/pdf/canopy-ledger-run-60-front-page.pdf`; frozen-source and visual verification remain accepted. Exact pushed `bc2ca39` then produced frozen-fact newsroom-only Run 61 Issues 13, 15, 16, 17, and 18 without world or wave model replay. Provider output proves `special_issue` convergence in Issues 13 and 15, independent `general_issue` beats in Issues 16 through 18, and assignment-selector cache hits. Blind review of Issues 13, 15, 16, and 17 passes both distinct recurring voices and issue-shape diversity, recognizing Ossan, Mera, Corin, and Lysa's biases plus modest cross-issue evolution. Run 62 exercised v12 without world or wave replay and failed only because two lead articles proposed invalid datelines; recurring reporter calls still recorded zero cache hits. Run 63 used exact pushed v13 `a52d57b`; Issues 17 and 18 completed before root stopped the final weekly recomposition, both repeated bylines again recorded zero cache hits, and live services remained unchanged. Preserve Runs 61 through 63 as stopped or completed immutable evidence. Copy defects remain later deadline-correction work rather than a reason to reopen accepted issue artifacts.
implementation_checkpoint: Pushed commit `b53251f` lands the sealed private replacement owner as `foundation.v0`; the legacy exported `kernel::WorldKernel` remains the live runtime path. The private seam exposes only exact create/open, immutable snapshot, command submit, and typed receipts inside the crate while keeping mutable state, ID issuance, reduction, authentication construction, and the CultCache journal private. Nine focused tests prove exact idempotent create, immutable canonical genesis, one live owner, sealed authentication evidence, replay and digest recovery, persisted rejection and no-op non-commit, store-path identity revocation, and post-durable lost-ack poison followed by explicit reopen and exact retry. The target authority map remains `docs/architecture/ghostlight-dungeon-mvp.md`; `a144c33` established explicit disjoint `NarrativePersona` and `OperationalAgent` interfaces, and `d49b907` refines total Persona interpretation with receipt-bound noncanonical source prose, exact typed captures, whole-source gap fallback for malformed spans, raw decode failure, and normal exhaustion, pending source on infrastructure interruption, typed speech only for actually spoken words, and translation gaps outside `WorldState`. That contract is not wired into the live legacy Persona runners; they still terminalize and remain deletion targets. Legacy `WorldKernel`, `SessionZeroKernel`, aggregate Campaign/component state, alternate ingress, verifier and reconciliation stages, and persisted recovery remain in the Body. The next cut adds the minimal private lifecycle and action reducer plus mailbox, controller, affordance, and opportunity authority behind the sealed owner.
implementation_checkpoint: Pushed commit `12ee9f4` removes the dead legacy Elaboration and Mutation kernel ingresses and their component-write helpers, subtracting 686 lines without adding a compatibility path. Pushed commit `66ed2ec` completes the sealed private `foundation.v0` authority loop: Draft creation, approval, activation, canonical controller assignments and affordance grants, revision-bound opportunities, one shared human/autonomous decision reducer, one serialized mailbox, atomic journal replay, and exact rejection and lost-ack behavior. Eighteen focused world tests pass, including lifecycle, controller and opportunity fail-closed checks, restart, idempotency, one-owner, mailbox serialization and cancellation, authentication, immutable genesis, non-commit, and journal forgery rejection. The target authority map remains `docs/architecture/ghostlight-dungeon-mvp.md`; `d49b907` owns the total Persona interpretation contract. The replacement is still a private module rather than the crate and executable runtime identity: the legacy exported `kernel::WorldKernel`, startup, Session Zero, player turn, autonomous scheduling, Campaign/component, verifier/reconciliation, and checkpoint paths remain live deletion targets. The next cut exposes and wires only the replacement mailbox boundary, then removes those old owners without dual-write.
full_world_acceptance_checkpoint: Run 115 is terminal failed at `/var/lib/gamecult/ghostlight-dungeon/acceptance/full-world-delvehold-0a83034-115`, semantic revision 2, regions 2/8, waves 0/1. Resume2 ended on provider SSE timeout. Resume3 exhausted four reconciliation steps after `inst:kharad-road-keepers` referenced unknown `loc:kharad-rhythm-road`. Preserve the root, receipts, service invocation `d9254cd9b77946aebcf7a7fdae821402`, and failed patch sequence through 8964a92 as immutable evidence. Do not resume it.
scale_checkpoint: Runs 108 through 115 prove load and failure properties of the pre-rebuild body, not world completeness. The 1,200 and 2,400 actor figures are synthetic evaluation profiles only. Production expansion is sparse and causal; structural admission cannot require interest, diversity, name uniqueness, or an actor count. No further scale run is admitted until the replacement single-owner lifecycle, reducer, decision-controller boundaries, recovery path, and negative invariants pass focused tests.
scale_checkpoint: Runs 108 through 115 prove load and failure properties of the pre-rebuild body, not world completeness. The 1,200 and 2,400 actor figures are synthetic evaluation profiles only. Production expansion is sparse and causal; structural admission cannot require interest, diversity, name uniqueness, or an actor count. The private replacement authority suite now passes, but no further scale run is admitted until the executable starts and serves that owner through its mailbox, the old startup, Draft, player, autonomous, and recovery writers are structurally unable to mutate world state, and runtime restart and negative checks pass.
presentation_checkpoint: The historical press-layout and seed-ownership split are complete. `notes/historical-newspaper-layout-grammar.md` remains the durable grammar. Manifest v2 at `output/tex/canopy-ledger-run-61-style-1847-flow-723.manifest.toml` independently binds `style_seed=1847`, `flow_seed=723`, frozen source SHA-256 `8f195140f52a40ba705d6a66987146a1500ae89668e5d82b01d1792eb3afb882`, and the final artifact `output/pdf/canopy-ledger-run-61-style-1847-flow-723.pdf`, SHA-256 `a457f4b1702a7a52480e42fce0039f0dbe677ff32958e98f1c412b346237190c`. An identical seed pair produces byte-identical TeX and PDF; changing only flow preserves the exact style section while materially changing a plausible layout, and changing only style preserves flow topology. Cut-first and cut-midstory templates pass visual inspection; the failed split-card template is deleted. Frozen copy/assets, actual PDF `/BM /Multiply`, and economic-layer advertising authority remain invariant.
public_reference_checkpoint: The published public architecture is immutable pre-rebuild history, not current rebuild authority. Canonical Ghostlight commit `15ea0f0` owns five archived pages covering the former overview, authority, pipelines, 43 named production stages, and eight titled elaborators. Site commit `2035e799c2cf7470b2bfc70d5a878d5d3be5e90f` publishes a shared mobile Home/Blog/Docs masthead, visibly marks every Docs page as a teardown archive, and publishes the postmortem `The World Counter Lied` at `https://ghostlight.gamecult.org/Blog/the-world-counter-lied`; live HTTP inspection returned 200 for the postmortem and Docs index and found the masthead and archive banner. Do not use the archived pages to steer the whole-machine rebuild. `docs/architecture/ghostlight-dungeon-mvp.md` owns the adopted target; publish replacement architecture only after the replacement body is implemented and verified. The site repository owns public composition and deployment.
next_action: Add the smallest private reducer behind the sealed `foundation.v0` owner for Draft creation, approval, activation, one player action, and one autonomous action. Give the replacement kernel one mailbox, canonical controller assignments and affordance grants, and kernel-derived revision-bound decision opportunities; proposals must fail closed when revision, controller, authority scope, affordance, or opportunity differs. Preserve the landed private aggregate, journal, identity, authentication, idempotency, replay, non-commit, path-revocation, and lost-ack invariants. Continue cutting the separate SessionZeroKernel/publication handoff, Campaign writer, legacy transition projection, alternate ingresses, verifier/reconciliation stages, model-owned scheduling, and checkpoint recovery as the vertical slice replaces them. Preserve Run 115 unchanged and do not launch another live acceptance run.
next_action: Expose the sealed replacement as the crate's runtime identity and make its `WorldMailbox` the only live world command boundary. Wire startup and authenticated identity to create or open one replacement owner, then route Draft creation, approval, activation, player decisions, and autonomous controller proposals through its existing command path. Delete or neuter each old owner before enabling the corresponding replacement path; do not dual-write, mirror Campaign state, or add a compatibility router. Preserve the eighteen-test private authority loop, Run 115 unchanged, and the ban on live acceptance until runtime restart and old-writer negative proofs pass.
gestalt_population: Gestalt Personas own shared population baselines; persistent member deltas own named individuality; WorldKernel materialization and approval-gated fission preserve lineage and identity. Materialisation/folding changes only representation and the exact member delta, advances resolution epoch, and retires the old cover; it has no Gestalt-wide effect authority. Selected actionable member exceptions are mandatory Projector perspective owners, so aggregation cannot silently erase their decision. Presence projection is limited to nearby active leaves and exact-location dormant members, includes reciprocal player relationship evidence, and may propose an earned cast without committing it. Simulation cells are derived covers only.