Record the clone-not-worktree lesson for Codex fan-outs
Linked worktrees put .git outside the Codex sandbox's writable roots; the four world workers all died on index.lock. Handoff, map, and one evidence record now carry the clone-plus-network rule and the relaunch witnesses. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
5599c164f3
commit
d87cad84c6
4 changed files with 19 additions and 9 deletions
|
|
@ -233,15 +233,23 @@ the last two records in `state/evidence.jsonl`.
|
|||
`OperationalAgent` loop whose tool catalog is a projection of the operation
|
||||
set; no elaborator gets a tool the reducer cannot validate.
|
||||
2. Four detached Codex CLI world workers are live on the prose plus
|
||||
illustration Ink fixture path (started 2026-09-04T15:56). PIDs:
|
||||
`C:\Users\Meta\.claude\worlds\logs\pids-worlds.csv`. Poll from
|
||||
illustration Ink fixture path (relaunched 2026-09-04T16:17:56 local). PIDs
|
||||
and per-run stderr paths: `C:\Users\Meta\.claude\worlds\logs\pids-worlds.csv`
|
||||
(stderr logs are timestamped `world-<w>.<stamp>.stderr.log`). Poll from
|
||||
`C:\Users\Meta\.claude\worlds\` with `.\Invoke-Worlds.ps1 -Phase Status`.
|
||||
Ledgers: `F:\Projects\Ghostlight-worlds\<world>\examples\ink\<world>\RUN.md`
|
||||
for aetheria, delvehold, kalsa, zyphos. Worktrees branch from `9c662bd` on
|
||||
`codex/world-<world>`; `git worktree list` lists them. Lore worktrees at
|
||||
`F:\Projects\<Lore>-worktrees\ghostlight-worlds`. Image rendering is
|
||||
deferred: the BFL key drive E: is gone, workers emit imagegen-ready prompts
|
||||
only, and `scripts/generate_bfl_images.py` has no working default key path.
|
||||
for aetheria, delvehold, kalsa, zyphos, on branches `codex/world-<world>`.
|
||||
Lore output lands on `codex/ghostlight-worlds` in each vault clone at
|
||||
`F:\Projects\<Lore>-worktrees\ghostlight-worlds`. Every one of those eight
|
||||
paths is a full clone, not a linked worktree: a linked worktree's `.git` is
|
||||
a file pointing into the parent repo's `.git/worktrees/`, outside the Codex
|
||||
sandbox's writable roots, so `git commit` fails with `index.lock Permission
|
||||
denied`. The directory name still says worktrees; `.git` is a directory.
|
||||
`git worktree list` in this repo shows only the main tree. The launcher
|
||||
passes `-c sandbox_workspace_write.network_access=true` so workers can push.
|
||||
Image rendering is deferred: the BFL key drive E: is gone, workers emit
|
||||
imagegen-ready prompts only, and `scripts/generate_bfl_images.py` has no
|
||||
working default key path.
|
||||
|
||||
The deployment gate below is deferred behind both orders, not cancelled:
|
||||
|
||||
|
|
|
|||
|
|
@ -34,4 +34,5 @@
|
|||
{"note": "Swarm triage: every repo under F:/Projects is now clean and pushed. Two findings bear directly on Ghostlight's deployment gate, both caused by the core-stack consolidation removing submodules that Idunn was still told to expect. Odin's deployment/idunn/recipe.toml declared required_gitlinks = [vendor/cultnet-rs], and gamecult-ops' operator binding templates declared gitlinks for vendor/cultcache-rs and vendor/cultnet-rs on codex-connector and vendor/cultnet-rs on odin; Idunn would have refused to admit those targets for gitlinks it could not find. All are corrected and committed at Odin eedce4f and gamecult-ops 8f7ae2a. Ghostlight's own binding is untouched because vendor/cultcache-py and vendor/eve still exist. The rest of the triage: Odin eedce4f also lands 4,167 lines of real in-flight work including UDP route actuation via RouteBinding::stable_socket and an NginxStreamUdp driver, plus the new odin-daemon crate, which cannot compile on Windows because it reads systemd listen file descriptors through std::os::fd, so Linux CI is its first witness. Epiphany 616a2c8e was an interrupted cargo fmt run rather than a feature, finished rather than reverted. Aetheria reclaimed about 1.6GB of scratch checkouts and sandboxed toolchain caches, all verified clean with no unpushed commits first, and the cleanup was scoped to the debris so Unity's Library and Build survived. Two apparently stranded commits turned out to be duplicates already upstream under different SHAs, found by patch-id rather than by subject.", "status": "ok", "ts": "2026-09-04T13:17:04+00:00", "type": "architecture"}
|
||||
{"note": "Run 115 root cause is vocabulary-shaped, not model-shaped. Legacy transition.rs used caller-supplied SubjectRef{kind,id:String}, two-phase AdmitEntity{initial_components}, and a flat Vec<PermittedWorldMutation>, so a dangling reference like inst:kharad-road-keepers -> loc:kharad-rhythm-road was a runtime discovery rather than an unrepresentable input; reconciliation existed only to repair that class and exhausted after four steps. Depth lived in free strings (posture, resource_kind, capability_id, persistent_features), so the prior attempt to fix shallowness added model tribunals (ElaboratorTitle, WorldComplexity*Qualification, *Verification) as compensators for an ontology with nowhere to hold depth. Adopted cut: reducer-issued typed ID namespaces, draft handles resolved inside one closed WorldPatch before any ID allocates, twelve decision-constraining components, and elaboration that answers a derived CausalBoundary instead of running waves and quotas. Recorded in docs/architecture/ghostlight-world-ontology.md.", "status": "ok", "ts": "2026-09-04T13:39:08+00:00", "type": "research"}
|
||||
{"note": "Ontology v2 unifies elaboration and character action under one WorldPatch and one deterministic verifier. Three decisions change future belief: (1) affordances are world-authored data (preconditions, effect slots, weighted outcome bands) over a closed 29-operation kernel set, so genre lives in the seed and the kernel never learns one; (2) uncertainty is resolved by kernel entropy seeded from world/revision/command, so no model ever chooses success, which deletes the legacy wave-level outcome resolver; (3) proposals bind to a scope digest of the components their verification reads rather than the whole state digest, so eight elaborator loops and many subjects do not serialize on one revision, replacing the stale-means-discard rule. Elaborator tools are a derived projection of the operation set and cannot drift. ghostlight-multiresolution-agency.md is demoted to teardown evidence keeping only resumable sessions, compact drafts, and the complete mismatch set.", "status": "ok", "ts": "2026-09-04T14:01:12+00:00", "type": "research"}
|
||||
{"ts": "2026-09-04T14:14:10+00:00", "type": "research", "status": "ok", "note": "Operator correction, 2026-09-04: the 2,400-subject / 240-cell / 10% cover profile is a design target, not a load fixture. A world feels alive only when actors at every level pursue their own goals; that requires generating that detail first and then choking multiresolution simulation so attention is scarce and selection is forced. The mvp doc sentence calling the profile \"test data, not a production elaboration target\" was teardown-era text, not operator design, and is amended. Ontology v2 now carries: an authored WorldScaleIntent with a structurally counted deficit (qualified subject = active, one controller, one Goal commitment, one affordance) that elaborators pursue after boundaries; a budgeted connected cover every tick with singleton detail cells and grouped coarse cells; per-constituent attribution and partitioned knowledge in grouped cells; debt rotation. Still deleted: gestalt as canonical identity, arena knowledge union, semantic qualification and verification models, fission quotas as mutation, string identifiers."}
|
||||
{"note": "Operator correction, 2026-09-04: the 2,400-subject / 240-cell / 10% cover profile is a design target, not a load fixture. A world feels alive only when actors at every level pursue their own goals; that requires generating that detail first and then choking multiresolution simulation so attention is scarce and selection is forced. The mvp doc sentence calling the profile \"test data, not a production elaboration target\" was teardown-era text, not operator design, and is amended. Ontology v2 now carries: an authored WorldScaleIntent with a structurally counted deficit (qualified subject = active, one controller, one Goal commitment, one affordance) that elaborators pursue after boundaries; a budgeted connected cover every tick with singleton detail cells and grouped coarse cells; per-constituent attribution and partitioned knowledge in grouped cells; debt rotation. Still deleted: gestalt as canonical identity, arena knowledge union, semantic qualification and verification models, fission quotas as mutation, string identifiers.", "status": "ok", "ts": "2026-09-04T14:14:10+00:00", "type": "research"}
|
||||
{"ts": "2026-09-04T14:18:47+00:00", "type": "verification", "status": "ok", "note": "Codex CLI fan-out that must commit cannot run in a linked git worktree. A linked worktree's .git is a file pointing into the parent repo's .git/worktrees/, which is outside the Codex sandbox's writable roots, so every git commit fails with index.lock Permission denied; the default sandbox also blocks outbound push. All four world workers died on this on 2026-09-04. Fix: full clones at the same paths (F:/Projects/Ghostlight-worlds/<world>, F:/Projects/<Lore>-worktrees/ghostlight-worlds; .git is a directory despite the directory name) and launch with -c sandbox_workspace_write.network_access=true. Uncommitted worker output was banked by hand to codex/world-<world> and codex/ghostlight-worlds before the worktrees were removed. Rule for any future Codex fan-out that writes: give each worker a clone whose entire .git lives under its own writable root, and grant network if it must push."}
|
||||
|
|
|
|||
|
|
@ -36,3 +36,4 @@
|
|||
{"key": "2026-09-04T133908Z0000-0034-4558985fc604", "payload": "eyJub3RlIjogIlJ1biAxMTUgcm9vdCBjYXVzZSBpcyB2b2NhYnVsYXJ5LXNoYXBlZCwgbm90IG1vZGVsLXNoYXBlZC4gTGVnYWN5IHRyYW5zaXRpb24ucnMgdXNlZCBjYWxsZXItc3VwcGxpZWQgU3ViamVjdFJlZntraW5kLGlkOlN0cmluZ30sIHR3by1waGFzZSBBZG1pdEVudGl0eXtpbml0aWFsX2NvbXBvbmVudHN9LCBhbmQgYSBmbGF0IFZlYzxQZXJtaXR0ZWRXb3JsZE11dGF0aW9uPiwgc28gYSBkYW5nbGluZyByZWZlcmVuY2UgbGlrZSBpbnN0OmtoYXJhZC1yb2FkLWtlZXBlcnMgLT4gbG9jOmtoYXJhZC1yaHl0aG0tcm9hZCB3YXMgYSBydW50aW1lIGRpc2NvdmVyeSByYXRoZXIgdGhhbiBhbiB1bnJlcHJlc2VudGFibGUgaW5wdXQ7IHJlY29uY2lsaWF0aW9uIGV4aXN0ZWQgb25seSB0byByZXBhaXIgdGhhdCBjbGFzcyBhbmQgZXhoYXVzdGVkIGFmdGVyIGZvdXIgc3RlcHMuIERlcHRoIGxpdmVkIGluIGZyZWUgc3RyaW5ncyAocG9zdHVyZSwgcmVzb3VyY2Vfa2luZCwgY2FwYWJpbGl0eV9pZCwgcGVyc2lzdGVudF9mZWF0dXJlcyksIHNvIHRoZSBwcmlvciBhdHRlbXB0IHRvIGZpeCBzaGFsbG93bmVzcyBhZGRlZCBtb2RlbCB0cmlidW5hbHMgKEVsYWJvcmF0b3JUaXRsZSwgV29ybGRDb21wbGV4aXR5KlF1YWxpZmljYXRpb24sICpWZXJpZmljYXRpb24pIGFzIGNvbXBlbnNhdG9ycyBmb3IgYW4gb250b2xvZ3kgd2l0aCBub3doZXJlIHRvIGhvbGQgZGVwdGguIEFkb3B0ZWQgY3V0OiByZWR1Y2VyLWlzc3VlZCB0eXBlZCBJRCBuYW1lc3BhY2VzLCBkcmFmdCBoYW5kbGVzIHJlc29sdmVkIGluc2lkZSBvbmUgY2xvc2VkIFdvcmxkUGF0Y2ggYmVmb3JlIGFueSBJRCBhbGxvY2F0ZXMsIHR3ZWx2ZSBkZWNpc2lvbi1jb25zdHJhaW5pbmcgY29tcG9uZW50cywgYW5kIGVsYWJvcmF0aW9uIHRoYXQgYW5zd2VycyBhIGRlcml2ZWQgQ2F1c2FsQm91bmRhcnkgaW5zdGVhZCBvZiBydW5uaW5nIHdhdmVzIGFuZCBxdW90YXMuIFJlY29yZGVkIGluIGRvY3MvYXJjaGl0ZWN0dXJlL2dob3N0bGlnaHQtd29ybGQtb250b2xvZ3kubWQuIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA5LTA0VDEzOjM5OjA4KzAwOjAwIiwgInR5cGUiOiAicmVzZWFyY2gifQ==", "stored_at": "2026-09-04T13:39:08.623701+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-04T140112Z0000-0035-4f8eaa7056cc", "payload": "eyJub3RlIjogIk9udG9sb2d5IHYyIHVuaWZpZXMgZWxhYm9yYXRpb24gYW5kIGNoYXJhY3RlciBhY3Rpb24gdW5kZXIgb25lIFdvcmxkUGF0Y2ggYW5kIG9uZSBkZXRlcm1pbmlzdGljIHZlcmlmaWVyLiBUaHJlZSBkZWNpc2lvbnMgY2hhbmdlIGZ1dHVyZSBiZWxpZWY6ICgxKSBhZmZvcmRhbmNlcyBhcmUgd29ybGQtYXV0aG9yZWQgZGF0YSAocHJlY29uZGl0aW9ucywgZWZmZWN0IHNsb3RzLCB3ZWlnaHRlZCBvdXRjb21lIGJhbmRzKSBvdmVyIGEgY2xvc2VkIDI5LW9wZXJhdGlvbiBrZXJuZWwgc2V0LCBzbyBnZW5yZSBsaXZlcyBpbiB0aGUgc2VlZCBhbmQgdGhlIGtlcm5lbCBuZXZlciBsZWFybnMgb25lOyAoMikgdW5jZXJ0YWludHkgaXMgcmVzb2x2ZWQgYnkga2VybmVsIGVudHJvcHkgc2VlZGVkIGZyb20gd29ybGQvcmV2aXNpb24vY29tbWFuZCwgc28gbm8gbW9kZWwgZXZlciBjaG9vc2VzIHN1Y2Nlc3MsIHdoaWNoIGRlbGV0ZXMgdGhlIGxlZ2FjeSB3YXZlLWxldmVsIG91dGNvbWUgcmVzb2x2ZXI7ICgzKSBwcm9wb3NhbHMgYmluZCB0byBhIHNjb3BlIGRpZ2VzdCBvZiB0aGUgY29tcG9uZW50cyB0aGVpciB2ZXJpZmljYXRpb24gcmVhZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIHN0YXRlIGRpZ2VzdCwgc28gZWlnaHQgZWxhYm9yYXRvciBsb29wcyBhbmQgbWFueSBzdWJqZWN0cyBkbyBub3Qgc2VyaWFsaXplIG9uIG9uZSByZXZpc2lvbiwgcmVwbGFjaW5nIHRoZSBzdGFsZS1tZWFucy1kaXNjYXJkIHJ1bGUuIEVsYWJvcmF0b3IgdG9vbHMgYXJlIGEgZGVyaXZlZCBwcm9qZWN0aW9uIG9mIHRoZSBvcGVyYXRpb24gc2V0IGFuZCBjYW5ub3QgZHJpZnQuIGdob3N0bGlnaHQtbXVsdGlyZXNvbHV0aW9uLWFnZW5jeS5tZCBpcyBkZW1vdGVkIHRvIHRlYXJkb3duIGV2aWRlbmNlIGtlZXBpbmcgb25seSByZXN1bWFibGUgc2Vzc2lvbnMsIGNvbXBhY3QgZHJhZnRzLCBhbmQgdGhlIGNvbXBsZXRlIG1pc21hdGNoIHNldC4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDRUMTQ6MDE6MTIrMDA6MDAiLCAidHlwZSI6ICJyZXNlYXJjaCJ9", "stored_at": "2026-09-04T14:01:12.055210+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-04T141410Z0000-0036-a61849b93cf5", "payload": "eyJub3RlIjogIk9wZXJhdG9yIGNvcnJlY3Rpb24sIDIwMjYtMDktMDQ6IHRoZSAyLDQwMC1zdWJqZWN0IC8gMjQwLWNlbGwgLyAxMCUgY292ZXIgcHJvZmlsZSBpcyBhIGRlc2lnbiB0YXJnZXQsIG5vdCBhIGxvYWQgZml4dHVyZS4gQSB3b3JsZCBmZWVscyBhbGl2ZSBvbmx5IHdoZW4gYWN0b3JzIGF0IGV2ZXJ5IGxldmVsIHB1cnN1ZSB0aGVpciBvd24gZ29hbHM7IHRoYXQgcmVxdWlyZXMgZ2VuZXJhdGluZyB0aGF0IGRldGFpbCBmaXJzdCBhbmQgdGhlbiBjaG9raW5nIG11bHRpcmVzb2x1dGlvbiBzaW11bGF0aW9uIHNvIGF0dGVudGlvbiBpcyBzY2FyY2UgYW5kIHNlbGVjdGlvbiBpcyBmb3JjZWQuIFRoZSBtdnAgZG9jIHNlbnRlbmNlIGNhbGxpbmcgdGhlIHByb2ZpbGUgXCJ0ZXN0IGRhdGEsIG5vdCBhIHByb2R1Y3Rpb24gZWxhYm9yYXRpb24gdGFyZ2V0XCIgd2FzIHRlYXJkb3duLWVyYSB0ZXh0LCBub3Qgb3BlcmF0b3IgZGVzaWduLCBhbmQgaXMgYW1lbmRlZC4gT250b2xvZ3kgdjIgbm93IGNhcnJpZXM6IGFuIGF1dGhvcmVkIFdvcmxkU2NhbGVJbnRlbnQgd2l0aCBhIHN0cnVjdHVyYWxseSBjb3VudGVkIGRlZmljaXQgKHF1YWxpZmllZCBzdWJqZWN0ID0gYWN0aXZlLCBvbmUgY29udHJvbGxlciwgb25lIEdvYWwgY29tbWl0bWVudCwgb25lIGFmZm9yZGFuY2UpIHRoYXQgZWxhYm9yYXRvcnMgcHVyc3VlIGFmdGVyIGJvdW5kYXJpZXM7IGEgYnVkZ2V0ZWQgY29ubmVjdGVkIGNvdmVyIGV2ZXJ5IHRpY2sgd2l0aCBzaW5nbGV0b24gZGV0YWlsIGNlbGxzIGFuZCBncm91cGVkIGNvYXJzZSBjZWxsczsgcGVyLWNvbnN0aXR1ZW50IGF0dHJpYnV0aW9uIGFuZCBwYXJ0aXRpb25lZCBrbm93bGVkZ2UgaW4gZ3JvdXBlZCBjZWxsczsgZGVidCByb3RhdGlvbi4gU3RpbGwgZGVsZXRlZDogZ2VzdGFsdCBhcyBjYW5vbmljYWwgaWRlbnRpdHksIGFyZW5hIGtub3dsZWRnZSB1bmlvbiwgc2VtYW50aWMgcXVhbGlmaWNhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIG1vZGVscywgZmlzc2lvbiBxdW90YXMgYXMgbXV0YXRpb24sIHN0cmluZyBpZGVudGlmaWVycy4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDRUMTQ6MTQ6MTArMDA6MDAiLCAidHlwZSI6ICJyZXNlYXJjaCJ9", "stored_at": "2026-09-04T14:14:10.337953+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-04T141847Z0000-0037-edecdf5c6e4b", "payload": "eyJub3RlIjogIkNvZGV4IENMSSBmYW4tb3V0IHRoYXQgbXVzdCBjb21taXQgY2Fubm90IHJ1biBpbiBhIGxpbmtlZCBnaXQgd29ya3RyZWUuIEEgbGlua2VkIHdvcmt0cmVlJ3MgLmdpdCBpcyBhIGZpbGUgcG9pbnRpbmcgaW50byB0aGUgcGFyZW50IHJlcG8ncyAuZ2l0L3dvcmt0cmVlcy8sIHdoaWNoIGlzIG91dHNpZGUgdGhlIENvZGV4IHNhbmRib3gncyB3cml0YWJsZSByb290cywgc28gZXZlcnkgZ2l0IGNvbW1pdCBmYWlscyB3aXRoIGluZGV4LmxvY2sgUGVybWlzc2lvbiBkZW5pZWQ7IHRoZSBkZWZhdWx0IHNhbmRib3ggYWxzbyBibG9ja3Mgb3V0Ym91bmQgcHVzaC4gQWxsIGZvdXIgd29ybGQgd29ya2VycyBkaWVkIG9uIHRoaXMgb24gMjAyNi0wOS0wNC4gRml4OiBmdWxsIGNsb25lcyBhdCB0aGUgc2FtZSBwYXRocyAoRjovUHJvamVjdHMvR2hvc3RsaWdodC13b3JsZHMvPHdvcmxkPiwgRjovUHJvamVjdHMvPExvcmU+LXdvcmt0cmVlcy9naG9zdGxpZ2h0LXdvcmxkczsgLmdpdCBpcyBhIGRpcmVjdG9yeSBkZXNwaXRlIHRoZSBkaXJlY3RvcnkgbmFtZSkgYW5kIGxhdW5jaCB3aXRoIC1jIHNhbmRib3hfd29ya3NwYWNlX3dyaXRlLm5ldHdvcmtfYWNjZXNzPXRydWUuIFVuY29tbWl0dGVkIHdvcmtlciBvdXRwdXQgd2FzIGJhbmtlZCBieSBoYW5kIHRvIGNvZGV4L3dvcmxkLTx3b3JsZD4gYW5kIGNvZGV4L2dob3N0bGlnaHQtd29ybGRzIGJlZm9yZSB0aGUgd29ya3RyZWVzIHdlcmUgcmVtb3ZlZC4gUnVsZSBmb3IgYW55IGZ1dHVyZSBDb2RleCBmYW4tb3V0IHRoYXQgd3JpdGVzOiBnaXZlIGVhY2ggd29ya2VyIGEgY2xvbmUgd2hvc2UgZW50aXJlIC5naXQgbGl2ZXMgdW5kZXIgaXRzIG93biB3cml0YWJsZSByb290LCBhbmQgZ3JhbnQgbmV0d29yayBpZiBpdCBtdXN0IHB1c2guIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA5LTA0VDE0OjE4OjQ3KzAwOjAwIiwgInR5cGUiOiAidmVyaWZpY2F0aW9uIn0=", "stored_at": "2026-09-04T14:18:47.920625+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
|
|
|
|||
|
|
@ -361,5 +361,5 @@ current_status:
|
|||
scale_checkpoint: Runs 108 through 115 prove load and failure properties of the pre-rebuild body, not world completeness. Operator directive 2026-09-04: the 2,400-subject / 240-cell / 10% cover profile is deliberate design, not a load fixture; a world feels alive only when actors at every level pursue their own goals, so that detail is generated first and multiresolution simulation is then choked so attention is scarce. The seed carries a `WorldScaleIntent`, the elaborators pursue its derived scale deficit, and cover budget is the choke. The 1,200-actor fixture is a load measure only. Structural admission still cannot require interest, diversity, name uniqueness, or an actor count; validity never waits on a count, liveness is authored. The committed replacement authority suite passes, but no further scale run is admitted until Yggdrasil serves the exact world-v2 release through the rebuilt Idunn recipe/binding/router seam, the live state root satisfies the complete world-v2 allowed-path contract, restart preserves exact journal and digest identity, and no old service, state path, process grant, or route can regain write authority.
|
||||
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: Ontology v2 is adopted at `34ce8c8` (`docs/architecture/ghostlight-world-ontology.md`: twelve components, twenty-nine operations under one `WorldPatch`, world-authored affordances, four derived `CausalBoundary` kinds, scope-digest binding, one `AdmitPatch`, eighteen proofs); `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence. (1) Land plan step 6 pass 1 of eight: typed ID namespaces, `Ref<Id>` draft handles, closed-patch resolution, and the complete mismatch set with tests; kernel source is still Speak-only with revision-bound opportunities in `crates/ghostlight-dungeon/src/world/mod.rs`. (2) Four detached Codex CLI world workers are live on the prose+illustration Ink fixture path: PIDs `C:\Users\Meta\.claude\worlds\logs\pids-worlds.csv`, poll with `.\Invoke-Worlds.ps1 -Phase Status` from `C:\Users\Meta\.claude\worlds\`, ledgers `F:\Projects\Ghostlight-worlds\<world>\examples\ink\<world>\RUN.md` for aetheria, delvehold, kalsa, zyphos on branches `codex/world-<world>` from `9c662bd`; image rendering deferred, prompts only. Deferred behind both orders, not cancelled: review and subtract the uncommitted Idunn projection and bounded RUDP transport, add UDP route actuation plus an independently persisted post-reload data-plane observation, and verify that focused pass on Yggdrasil. Then implement the directly managed Rust Odin observation/correlation daemon and exact transaction-frozen capability dependency closure. Install rebuilt Idunn, admit Odin first, then CodexConnector and Ghostlight; prove same-generation continuity, fencing, signed health, route cutover, Odin-outage freeze, and negative legacy authority before purging old units, releases, state roots, and the remote acceptance debris. `GameCult/cultcache-rs` and `GameCult/cultnet-rs` now have no readers anywhere: Epiphany `68939b2c` and CodexConnector `6519289` consume CultLib and carry no submodules at all, and Odin `27cc815` does the same. Both repos are retirable now: that work landed on CultLib main by fast-forward at `8cb3b72`, so every pinned revision -- Ghostlight `85f7024`, Epiphany and CodexConnector `e171eca`, Odin `cbde940` -- is an ancestor of main and resolves from a fresh clone. Still vendored are `VoidBot/vendor/cultcache-ts`, `Ghostlight/vendor/cultcache-py` and `Odin/vendor/cultmesh-rs`. The first two vendored because npm and pip cannot take a package from a subdirectory of a git repo the way cargo can, so there was nothing to depend on. CultLib `8cb3b72` adds a publish workflow: tagging `cultcache-ts-v*` or `cultcache-py-v*` ships `@gamecult/cultcache-ts` to npm and `cultcache-py` to PyPI, refusing any tag whose version disagrees with the manifest. Both repoints wait on the first publish, which needs an `NPM_TOKEN` secret and a PyPI trusted publisher. Ghostlight's is not a bare dependency swap: `tools/ghostlight_state_store.py` puts `vendor/cultcache-py/src` on `sys.path` so the state tooling works from a clone with no install step, and session bootstrap depends on that. Detail on the Odin repoint: Odin's vendored CultNet submodule and CultCache copy are gone from its worktree and both come from CultLib, with only `vendor/cultmesh-rs` still vendored and itself consuming CultLib. Odin's commit had to carry the in-flight CultMesh RUDP document server with it: the previously committed CultMesh calls `assume_connected()`, a CultNet method the fork had and CultLib does not, so the old code cannot build against CultLib at all. It depends on CultLib branch `claude/cultnet-reliable-expiry` at `cbde940`, which must reach main by merge rather than squash or the pinned rev is orphaned. Live citations name CultLib `85f7024`, a permanent ancestor of main; evidence records keep their pre-consolidation SHAs as dated history. Local run scaffolding, downloaded acceptance copies, and redundant Git bundles are already purged, and `.gitignore` now refuses them.
|
||||
next_action: Ontology v2 is adopted at `34ce8c8` (`docs/architecture/ghostlight-world-ontology.md`: twelve components, twenty-nine operations under one `WorldPatch`, world-authored affordances, four derived `CausalBoundary` kinds, scope-digest binding, one `AdmitPatch`, eighteen proofs); `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence. (1) Land plan step 6 pass 1 of eight: typed ID namespaces, `Ref<Id>` draft handles, closed-patch resolution, and the complete mismatch set with tests; kernel source is still Speak-only with revision-bound opportunities in `crates/ghostlight-dungeon/src/world/mod.rs`. (2) Four detached Codex CLI world workers are live on the prose+illustration Ink fixture path (relaunched 2026-09-04T16:17:56): PIDs and timestamped stderr paths in `C:\Users\Meta\.claude\worlds\logs\pids-worlds.csv`, poll with `.\Invoke-Worlds.ps1 -Phase Status` from `C:\Users\Meta\.claude\worlds\`, ledgers `F:\Projects\Ghostlight-worlds\<world>\examples\ink\<world>\RUN.md` for aetheria, delvehold, kalsa, zyphos on branches `codex/world-<world>`, lore patches on `codex/ghostlight-worlds` in `F:\Projects\<Lore>-worktrees\ghostlight-worlds`. All eight paths are full clones, not linked worktrees (a linked worktree's `.git` file points into the parent's `.git/worktrees/`, outside the Codex sandbox's writable roots, so commits fail on `index.lock`); the launcher passes `-c sandbox_workspace_write.network_access=true` so workers can push. Image rendering deferred, prompts only. Deferred behind both orders, not cancelled: review and subtract the uncommitted Idunn projection and bounded RUDP transport, add UDP route actuation plus an independently persisted post-reload data-plane observation, and verify that focused pass on Yggdrasil. Then implement the directly managed Rust Odin observation/correlation daemon and exact transaction-frozen capability dependency closure. Install rebuilt Idunn, admit Odin first, then CodexConnector and Ghostlight; prove same-generation continuity, fencing, signed health, route cutover, Odin-outage freeze, and negative legacy authority before purging old units, releases, state roots, and the remote acceptance debris. `GameCult/cultcache-rs` and `GameCult/cultnet-rs` now have no readers anywhere: Epiphany `68939b2c` and CodexConnector `6519289` consume CultLib and carry no submodules at all, and Odin `27cc815` does the same. Both repos are retirable now: that work landed on CultLib main by fast-forward at `8cb3b72`, so every pinned revision -- Ghostlight `85f7024`, Epiphany and CodexConnector `e171eca`, Odin `cbde940` -- is an ancestor of main and resolves from a fresh clone. Still vendored are `VoidBot/vendor/cultcache-ts`, `Ghostlight/vendor/cultcache-py` and `Odin/vendor/cultmesh-rs`. The first two vendored because npm and pip cannot take a package from a subdirectory of a git repo the way cargo can, so there was nothing to depend on. CultLib `8cb3b72` adds a publish workflow: tagging `cultcache-ts-v*` or `cultcache-py-v*` ships `@gamecult/cultcache-ts` to npm and `cultcache-py` to PyPI, refusing any tag whose version disagrees with the manifest. Both repoints wait on the first publish, which needs an `NPM_TOKEN` secret and a PyPI trusted publisher. Ghostlight's is not a bare dependency swap: `tools/ghostlight_state_store.py` puts `vendor/cultcache-py/src` on `sys.path` so the state tooling works from a clone with no install step, and session bootstrap depends on that. Detail on the Odin repoint: Odin's vendored CultNet submodule and CultCache copy are gone from its worktree and both come from CultLib, with only `vendor/cultmesh-rs` still vendored and itself consuming CultLib. Odin's commit had to carry the in-flight CultMesh RUDP document server with it: the previously committed CultMesh calls `assume_connected()`, a CultNet method the fork had and CultLib does not, so the old code cannot build against CultLib at all. It depends on CultLib branch `claude/cultnet-reliable-expiry` at `cbde940`, which must reach main by merge rather than squash or the pinned rev is orphaned. Live citations name CultLib `85f7024`, a permanent ancestor of main; evidence records keep their pre-consolidation SHAs as dated history. Local run scaffolding, downloaded acceptance copies, and redundant Git bundles are already purged, and `.gitignore` now refuses them.
|
||||
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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue