diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..fef5782
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @SignalLayerLabs
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000..ff65a47
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,51 @@
+name: Bug report
+description: Report a reproducible CYMONIA world, runtime or Observer defect
+title: "[Bug]: "
+body:
+ - type: dropdown
+ id: layer
+ attributes:
+ label: Affected layer
+ options:
+ - Canonical world kernel
+ - Durable Object / persistence
+ - AI cognition
+ - Pages API / authentication
+ - Observer / renderer
+ - Human-linked avatar
+ - CI / deployment
+ - Documentation
+ - Not sure
+ validations:
+ required: true
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Reproduction
+ description: Give the smallest sequence that reliably reproduces the problem.
+ validations:
+ required: true
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected behavior
+ validations:
+ required: true
+ - type: textarea
+ id: actual
+ attributes:
+ label: Actual behavior
+ validations:
+ required: true
+ - type: textarea
+ id: evidence
+ attributes:
+ label: Evidence
+ description: Logs, screenshots, world minute, event IDs or failing tests. Remove secrets.
+ - type: checkboxes
+ id: safety
+ attributes:
+ label: Safety
+ options:
+ - label: I removed OAuth tokens, session secrets and private data.
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..50f96ef
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Live CYMONIA world
+ url: https://cymonia.pages.dev/
+ about: Open the production Observer.
+ - name: Documentation
+ url: https://github.com/SignalLayerLabs/CYMONIA/tree/main/docs
+ about: Architecture, contributor map and deployment documentation.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000..dae4b7b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,48 @@
+name: Feature proposal
+description: Propose a world, Observer or infrastructure capability
+title: "[Proposal]: "
+body:
+ - type: textarea
+ id: problem
+ attributes:
+ label: Problem
+ description: What limitation exists today?
+ validations:
+ required: true
+ - type: dropdown
+ id: layer
+ attributes:
+ label: Primary layer
+ options:
+ - World physics / materials
+ - Biology / life cycle
+ - Knowledge / memory / beliefs
+ - Cognition
+ - Language / society
+ - Runtime / persistence
+ - Observer / visualization
+ - Human-linked avatar
+ - Developer experience / testing
+ - Documentation
+ - Not sure
+ validations:
+ required: true
+ - type: textarea
+ id: behavior
+ attributes:
+ label: Proposed behavior
+ description: Describe the mechanism, not only the desired outcome.
+ validations:
+ required: true
+ - type: textarea
+ id: authority
+ attributes:
+ label: Authority boundary
+ description: Which component is allowed to mutate canonical state, if any?
+ validations:
+ required: true
+ - type: textarea
+ id: evidence
+ attributes:
+ label: How would we prove it works?
+ description: Suggested invariants, browser checks or operational metrics.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..3438446
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,35 @@
+## Problem
+
+What limitation or failure does this PR address?
+
+## Change
+
+What changed, and in which layer?
+
+## Authority boundary
+
+- [ ] Canonical mutation still flows only through the Sovereign World runtime.
+- [ ] Observer-only logic does not write back into world state.
+- [ ] AI output remains a proposal subject to deterministic validation.
+- [ ] Human-linked identity does not import Earth knowledge into Citizens.
+
+## Evidence
+
+```text
+node --test tests/test_sovereign_*.mjs
+bash CHECK.sh . --skip-browser
+```
+
+For Observer changes:
+
+```text
+bash CHECK.sh .
+```
+
+## Operational impact
+
+Describe any effect on Durable Object writes, alarms, SQLite, Workers AI, D1, Cloudflare bindings, WebSockets or deployment order.
+
+## Screenshots / traces
+
+For visual changes, include before/after evidence. For canonical changes, include invariant output or causal evidence.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0f1f2f3..6d8a605 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,32 +1,98 @@
# Contributing to CYMONIA
-CYMONIA contributions should preserve a causal, observable and deterministic Sovereign World.
+CYMONIA is an open-source persistent artificial civilization. Contributions are welcome when they make the world richer **without weakening the causal, epistemic or authority boundaries that make the project meaningful**.
-## Before opening a PR
+Start with:
-1. Read `README.md`, `docs/architecture-v2.md` and the design specification.
-2. Run the focused suite:
+1. [`README.md`](README.md) — product model.
+2. [`docs/architecture/overview.md`](docs/architecture/overview.md) — runtime and trust boundaries.
+3. [`docs/reference/repository-map.md`](docs/reference/repository-map.md) — file-by-file map.
+4. [`docs/design/sovereign-world-v2.md`](docs/design/sovereign-world-v2.md) — world contract.
- ```bash
- node --test tests/test_sovereign_*.mjs
- bash CHECK.sh . --skip-browser
- ```
+## Pick the right layer
-3. Run `tests/browser-sovereign.mjs` against a local static server when changing the Observer.
+| You want to change… | Start here |
+|---|---|
+| physics, resources, terrain, movement | `world/materials.js`, `world/terrain.js`, `world/actions.js`, `world/impact.js` |
+| biology, disease, genetics, reproduction | `world/biology.js`, `world/disease.js`, `world/genetics.js`, `world/reproduction.js` |
+| knowledge, perception, memory, beliefs | `world/epistemics.js`, `world/perception.js`, `world/memory.js`, `world/beliefs.js` |
+| cognition and plans | `world/cognition.js`, `world/engine.js` |
+| language or society | `world/language.js`, `world/society.js` |
+| canonical persistence/runtime | `worker/src/index.js`, `worker/src/persistence.js` |
+| GitHub auth / human-linked identity | `functions/api/auth/`, `functions/_lib/` |
+| public API facade | `functions/api/v2/` |
+| Observer UI and camera | `site/sovereign-world.js`, `site/sovereign-renderer.js` |
+| GPU rendering | `site/pixi-observer.js`, `site/medieval-art.js` |
+| visual concept interpretation | `site/observer-concepts.js` |
+| Citizen animation | `site/citizen-animation.js`, `site/spine-citizen-adapter.js` |
+| CI / deployment | `.github/workflows/`, `wrangler.toml`, `wrangler.world.toml` |
+| documentation | `docs/` |
-## Runtime rules
+## Non-negotiable invariants
-- The Durable Object is the only writer of canonical world state.
-- The browser renders and sends explicit intents; it never advances time.
-- AI may propose cognition, but deterministic kernel rules authorize mutation.
-- Every persistent action needs a physical, biological or social cause.
-- New world behavior needs an invariant test under `tests/test_sovereign_*.mjs`.
-- Keep the fallback Genesis replay deterministic and reproducible.
+- The `SovereignWorld` Durable Object is the **single canonical writer**.
+- The browser is an Observer. It does not advance world time or author canonical outcomes.
+- Workers AI may **propose** cognition. Deterministic validation authorizes mutation.
+- Citizens may not act on unknown concepts or receive omniscient context.
+- Persistent physical outcomes require physical causes and provenance.
+- Death is permanent.
+- The deterministic Genesis replay remains reproducible.
+- Observer-only classifications and visual labels never write back into canonical state.
+- Human-linked Citizens receive no Earth knowledge or privileged physics.
+- A runtime outage is not silently converted into fictional lived history.
-## Pull requests
+## Development workflow
-Describe the problem, the resulting behavior, the tests run and any schema or deployment impact. Keep changes focused and remove obsolete runtime paths instead of adding compatibility aliases.
+```bash
+node --test tests/test_sovereign_*.mjs
+bash CHECK.sh . --skip-browser
+```
+
+If you changed the Observer, rendering, browser connection or UI:
+
+```bash
+bash CHECK.sh .
+```
+
+## Tests are part of the feature
+
+Every new canonical behavior should add or strengthen an invariant under `tests/test_sovereign_*.mjs`.
+
+Examples:
+
+- physical transformation → prove conservation/provenance;
+- cognition path → prove unknown concepts cannot leak in;
+- social primitive → prove canonical relationships/commitments change rather than narration only;
+- Observer feature → prove it cannot mutate world state;
+- persistence change → prove write budget, recovery and checkpoint behavior;
+- UI change → add contract coverage and run browser smoke.
+
+## Pull request format
+
+A strong PR explains:
+
+**Problem** — what limitation exists?
+**World effect** — canonical behavior, Observer behavior or both?
+**Authority boundary** — which layer may mutate state?
+**Evidence** — which tests prove the behavior?
+**Operational impact** — bindings, writes, schemas, budgets or deployment?
+
+The repository includes a PR template that mirrors this structure.
## Security and identity
-GitHub OAuth creates a human-linked avatar through the identity-only D1 store. Never log OAuth codes, access tokens, session secrets or raw personal data. Report security issues privately according to `SECURITY.md`.
+Never commit or log OAuth codes, access tokens, raw session tokens, Cloudflare secrets or private user data.
+
+Identity metadata must not become free in-world knowledge.
+
+Report vulnerabilities according to [`SECURITY.md`](SECURITY.md).
+
+## Style
+
+- Prefer small ES modules with explicit responsibilities.
+- Prefer deterministic logic over hidden side effects.
+- Delete obsolete paths instead of preserving dead compatibility layers.
+- Comment invariants, authority boundaries and non-obvious runtime behavior.
+- Use **Citizen**, **Observer**, **Sovereign World** and **canonical** consistently.
+
+For a complete file-by-file explanation, use [`docs/reference/repository-map.md`](docs/reference/repository-map.md).
diff --git a/MANIFEST.sha256 b/MANIFEST.sha256
index d56a682..a0d2058 100644
--- a/MANIFEST.sha256
+++ b/MANIFEST.sha256
@@ -1,21 +1,29 @@
+3c8c6b1547ff8c90d6f133047fea7348a3dabfebc3deef26f648b43aa5008951 .github/CODEOWNERS
+b28bf7ac0455d43658d134a9aa85005c6911909b9bef7ef9eee359ac71376d6f .github/ISSUE_TEMPLATE/bug_report.yml
+ae3bb8b07e754003e5a388b98197c352be4314aa35ec4de43efd82d7636f2d94 .github/ISSUE_TEMPLATE/config.yml
+1c51cb5bc0321575e002c620cdbe17f7e21bc9fd5043bccfee3b673566d4ad7c .github/ISSUE_TEMPLATE/feature_request.yml
+3f7ac1a6993e72b62a7cab2df6ef265c1043fecab047593445995fb1277eacbb .github/PULL_REQUEST_TEMPLATE.md
93c4a0e2d725f8e1240d88f0c86599b46b3f7d989966fbc5ae6285d65aa476b8 .github/workflows/ci.yml
9197aafb6475815b398a59b2a4348ed776142f66048cd0f02304c8a2109f547c .github/workflows/pages.yml
7043e87c2a0cb4b8f09cfd5b3100d67022c1e629314867197ef7005564f00abb .gitignore
f08dc03be3ca61a2d79e452bd1ceecdde8cdfb0242592198f032aa6235f46ef7 CHECK.sh
-4b83043570a61f90e4913bb70578a3b6c4d593c9cc593ee282829038b0df1cb7 CONTRIBUTING.md
+b91bc00d7c9adb04cd98bfae54abb91217ece53e325fc0d2c300f3d03235da73 CONTRIBUTING.md
1bec11091d79ebe28d458b3a8ad64f18ed4be7da01a14d3a0ab60dae5c1a3fbe LICENSE
-abbccb8ba52c506afb3d8a233c2eb8d54c7c2abbfe6cad35e06e9371c06528c7 README.md
-0e4b6bbe1caa147218c65c3be356497803f47379fada2c5feca343c574685612 RELEASE_SOVEREIGN_WORLD_V2.md
-5ae739b7e9fa973f0f5406d53ca0eb2e2c5801afeb2f19a6177d0e732fa0933f SECURITY.md
-f738a695f049a3e91a03ad702297d4f9d483c7da40622aa7ba878036028416c2 docs/RTS_PHYSICS_UPGRADE.md
-1811c52485601777a3e6ce287d14548de216fd68167771e9c95b26edd2990527 docs/architecture-v2.md
-fd5c9e7271dc85b3f08a49b4d86bbb7eeda8262016fdae2db01ad7c07a3f8a6f docs/art/README.md
-e538e481a2becfc95290e5be0b69f621828da06eac09d1f704fe9fd1045d04c9 docs/art/medieval-observer-desktop.png
-05cd3270f0058fb3ee720f8f951475754f343ccff45e770fcad7316d8cbd854f docs/art/medieval-observer-mobile.png
-4f334852312dbe033c01c4cd35a964349b198d7915e30876da9a9a033d3072eb docs/deployment-sovereign-world.md
-636fa33034bb5f7b37c9f85b7c224b0328ebb7986b54812fc760047762f3c5ea docs/superpowers/plans/2026-09-15-sovereign-world-v2.md
-8cb9fbacf163c574dc6dd3196c07f70837f22c1a974bade443d557c32442203f docs/superpowers/specs/2026-09-15-sovereign-world-v2-design.md
-b45d388c901b6a0397d644ddf85c88a71bbdfd8ed91e2c1fbb5e2e26287afa9e docs/superpowers/specs/2026-09-16-cymonia-self-evolving-world-design.md
+868e60bbeecb1d4ba2e59b3481f4dcba74dae37fe496bc711574a5f94ccf0e81 README.md
+689a10bd8f451b1625cefbd3a054592e5b98703cfefe716e4108d7b91819b3c8 SECURITY.md
+10598f8910e9e81e9306365a1c73f75da49999a4fc0cffb0e711f7c956f4a1b6 docs/README.md
+fe0f2a8f418ca0c78515c7028d96aec22fb76e67fbd3f932cd2df76aa0f9d8c9 docs/architecture/overview.md
+9b2b01ca21831308569fdc0062dab8bb1623998c183d8228ba9202f6afca8b92 docs/architecture/physics.md
+b45d388c901b6a0397d644ddf85c88a71bbdfd8ed91e2c1fbb5e2e26287afa9e docs/design/self-evolving-world.md
+ca60728c462da390cd5a09f1304d3fbf1d3c2b159417b0b0b8553302fa42fd16 docs/design/sovereign-world-v2.md
+82a01e5dcbdc5e2509899cc29c366d1129a0bc8fab20f75e1aaff1f1fc53f640 docs/history/implementation-plan-2026-09-15.md
+0e4b6bbe1caa147218c65c3be356497803f47379fada2c5feca343c574685612 docs/history/release-v2.md
+e538e481a2becfc95290e5be0b69f621828da06eac09d1f704fe9fd1045d04c9 docs/images/observer-desktop.png
+05cd3270f0058fb3ee720f8f951475754f343ccff45e770fcad7316d8cbd854f docs/images/observer-mobile.png
+619c4be5bed5e1076050d7acd56197235d6fc555b8d185b80f5382edbc8a7095 docs/observer/art.md
+4fd200df9a9fc14a16eb12445665f4dfd58777fdba8426da4f00ca99b21d8fbe docs/observer/spine.md
+4f334852312dbe033c01c4cd35a964349b198d7915e30876da9a9a033d3072eb docs/operations/deployment.md
+0ecf68ef4eb4b31275e584f0ebd9fc1fa72893c5ae514e14f4996d1eb1654589 docs/reference/repository-map.md
9025958e141161d60f59cb801b9aeae31cafca5538b59c94e0042a1a7bd330ef functions/_lib/auth.js
b512e17d600965bac02492f9e0dbbd30b0e68771c1c3ebdda0992a4c498453b4 functions/_lib/http.js
b04ee5d5fd478ac6b37de485dae8f826fdd854706a5d2d5323114614ef617773 functions/_lib/identity.js
@@ -26,22 +34,23 @@ bf407a093caf22903d96c3eaa4ed7dbe5fcebdb16273527efa552681cf27d4ff functions/api/
2b2bf8698b2951203307e384e441e43645b345ff5dd84b32d1183d8121473db5 scripts/patch_current_v2.mjs
7a069f43dd2131a09ada95c061630f205ba75ea1e5040bcc8de11ea5edb96eaa site/assets/meadow-texture.png
e8cfe162259b1e84a72486c0c0c48e05a72f3d023027d959284d49b5dca68eb9 site/assets/medieval-atlas.png
-5edab258856c44d89ea1df51472037697db95909c2d696607ef7c30a503a4838 site/assets/world-backdrop.png
-c4324bf41e8c442893b3bff9f383ed7b897194965509e1616337070ffea1c55b site/assets/world-buildings.png
-eaaa31a35853b38e66497b8b0adf0ba146733273468a131f06fbf92aca08260e site/assets/world-citizens.png
-efd1af2bcdd0939bda2432e6823f09135f6d8345796e8a6f9690886b0b104b05 site/assets/world-terrain.png
-27eaa1da60c9ae26c54512c6b986e2d568f5ec9a968d6a46d3d785f9117e5e4e site/cinematic-world.css
+ab0d9a1e3aa3efbc09f241543d9a0714a196d997849049e62fb0a22eae73b1c9 site/citizen-animation.js
6c2c82fb1de7d8a0051edaa1e5f5711fc8881865ad8638fa0c41a709dce54696 site/data/sovereign-genesis.json
0670d7be3b270c8e627c5f0089e25ba065c3326f6bcf0f06ce9ae5cf3c5cf64b site/icon.svg
-f7f882e7c491d86e5bc54c57033192b52cd28da593a70175564f612a187d3a06 site/index.html
+a53cff0b4f76d652b53c4585df9a51e27eb6d169e8c01422b2a591fe17b5a678 site/index.html
+6124baf31ada16d7c1fc7bd140615bb9bbc2a1611fcd9c574083048a4fc38999 site/llms.txt
a31f15ff86c87f9eafb1723fb3fc59186f27fb32a75b00d287fc7efbdeec5b1c site/medieval-art.js
49897b8d946b85c84a4e0f177a3c7773a0c6f9acfef0025d308ccec2ac3a7ef1 site/medieval-world.css
+9942697150f9cc3be949b4869f67c678731db377e284602df4faef8bc6c4fb5e site/observer-concepts.js
82197a81454575b5c941ec0c52924c0a53f1d92bf70371e9c16df0912a29dcf0 site/observer-connection.js
3deafe2d73b4c47ac240cc5ab9b335d89b005f98f43f704e27b6b59f218a2e24 site/pixi-observer.js
-5edab258856c44d89ea1df51472037697db95909c2d696607ef7c30a503a4838 site/preview.png
+e538e481a2becfc95290e5be0b69f621828da06eac09d1f704fe9fd1045d04c9 site/preview.png
+428ef6c2f7fa545c5b3a507d6f849605ad00b8bb2e9da06eb70a028ea80106bb site/robots.txt
+13eccdc18577967656d9406c0d92eeb9de17f72d114c5c9a73a061839481e957 site/sitemap.xml
5dcf19ad709016f22bf7d1f2e099b94c34a41861c14aa1c9fb6a7d6ef27fab11 site/sovereign-renderer.js
9d1a63c705106bb23e92accd232f509cba550ba47dcab1d1d13681351f457e30 site/sovereign-world.css
ca3d652f16c7b2ebd4781d0db1640f51089f738a905285a0bc6df229e41a4b9a site/sovereign-world.js
+dab555575cd5a79e1e1be63a155033788d40995f6b5c69b3b82fe87132233009 site/spine-citizen-adapter.js
aaa5a63cab5926e0355e8257bd562ec2db4c8890904ef1894767063925ceadf1 site/terrain-model.js
c98fca62534d141f285a6c92bfd6257c26d462a3daff72672a4d76f2399d1f21 site/transient-physics.js
d179b80fb34aae0db437dfa72c1a6e6704209a8119b8d991ad49321d8584da8f tests/browser-art.mjs
@@ -52,8 +61,10 @@ eb6519962713ab81aef9db969a212de7c67ebf6dcc2b56796cdfe50457feba60 tests/test_sov
a48bca09b29b3c6760aeb254ab74ac3d68176dfc4c7b62d122fd2e02f75a6966 tests/test_sovereign_art.mjs
3d27f2f8f15612fd09408e5eb6f1e8c71b2157586798043420d8732f36facb66 tests/test_sovereign_artifacts.mjs
3aa402c385f47ed538694ad67edae9a5b635cc3b630e1df98f6215d6fecb962b tests/test_sovereign_avatar.mjs
+f0d644436e621ebd5b6e28cb8af3673b6884fbb487725e5816ef1dc08291d7b8 tests/test_sovereign_avatar_observer_upgrade.mjs
f6e9631f43ed140b0fba56877f2fa56d07e3c54bcc90c52946c29b470fde013b tests/test_sovereign_beliefs_language.mjs
b2039517acb4a2905cb21e4721976540dce1b19913708cb7d9cc0ca47d0b2c28 tests/test_sovereign_biology.mjs
+de8f675a1e0a3cb96705cf72bdeb2aca9fa0867c3b7246853bc63821c777bc31 tests/test_sovereign_citizen_animation_upgrade.mjs
d51e9bdbaf3511c20513ffcacea4505dce2780e18bc729c3b43c9ff23b8d78d9 tests/test_sovereign_cognition.mjs
2d64a32a4e5a8375c7558b3859cc5636af13b0866204506bde8c3455092f7f0a tests/test_sovereign_conservation.mjs
a3c0d63790f4f68fa4c446a7c804594437a2a2a26795993af364929204464dcf tests/test_sovereign_construction_physics_upgrade.mjs
@@ -66,18 +77,22 @@ a71ce1ffa138b92138755cc64eb828f2e145e78c4b369b1eda2911078700a003 tests/test_sov
e0d0c6bcba695b34d69aa3c4ceeae502a80b3dc61843ef12f3cf555e883d5a66 tests/test_sovereign_history.mjs
ca70bc968311b97bf9676c762c25a41c5d682d7753d32ea1ecd0108b5eea6e78 tests/test_sovereign_impact_physics_upgrade.mjs
3ebfbc281cbe8407502567832060d1c7767d6337ad94957416590710475ad08c tests/test_sovereign_language.mjs
+1219637898a43e4d623897ea15f1ff495554b4b6f2279e6e2466eba072e7b59e tests/test_sovereign_ledger_compaction.mjs
b69ab8b0976018cc7e66ca363bb46822cfaa000a5455b0ea738864d9aef67cac tests/test_sovereign_local_deliberation.mjs
703462b8f7462e2c31f530d888c6dd200f96da25e8b5332703c89fd26a935e77 tests/test_sovereign_mass_closure.mjs
85a614caa659785b2408e8e76ab409898d9b5f317bd2d83d893e054061e8f4a9 tests/test_sovereign_material_transform.mjs
d4d912fbec5d674a16c2c12242332335924405ebc6bdf080c904d32e08d15396 tests/test_sovereign_observer_connection_upgrade.mjs
6cad1ecae06fba49dca0b776cb7379fd42f5f317e9f17be408dba561c2253332 tests/test_sovereign_observer_emergence.mjs
+164c56738f05469e36d0cb3c913656154381bda6a177505d5d2f06d87d1665ad tests/test_sovereign_observer_readability_upgrade.mjs
66b0ddd0c949b827eb5b909818c34024cb7400a1f23e72e1b32e4b122c1961a8 tests/test_sovereign_persistence.mjs
+279876578ed24eade882ad165e12f0952f1ac985d4b22065f24067dd720c886e tests/test_sovereign_persistence_budget.mjs
7946021337e718e0af7f375eb20cece0a93ddddf60fb32e1a03d9f19fd623c58 tests/test_sovereign_physics_upgrade.mjs
6c6a6597dc59ad34047df05d2d92e0b920176b63fcb7a1bf448cf8808e20ef6a tests/test_sovereign_pixi_matter_upgrade.mjs
577fde3e8c1a96f34fc6e7f9f2c6de575e9c70aafa7ad26156b41b43183b5511 tests/test_sovereign_premium_shell_upgrade.mjs
64e53224cc3adeed7d8d686f8d7a9b06bcff0fc0174e82d0dc53889991f21ac4 tests/test_sovereign_relationship_effects.mjs
583706bc944261a63b317d75ad666604155d3a286ae99ad21b13d2321d7d7341 tests/test_sovereign_renderer_contract.mjs
6238a56aa042a20b86e3b555786d34849094c894d8473fd80d6a5255d38a5108 tests/test_sovereign_renderer_motion_upgrade.mjs
+1a5b7048b736543c2582f33e76b5610e423a1378b6a9643ac7bb780b0b0a0b57 tests/test_sovereign_repository_presentation.mjs
3f63626f40bebc0746521643f1fff6bc522e402218965ee327b8725b6e50dc94 tests/test_sovereign_reproduction.mjs
f6c7f2623eeeeea2faebe84c30e135c6357403b3c44aee379dc5f8058064ecac tests/test_sovereign_runtime_contract.mjs
6c69813ab0bc4cb1534b82e8a7d06dc323c8a6c0458298e0a0584b7bde4d47e8 tests/test_sovereign_shell.mjs
@@ -85,6 +100,7 @@ f6c7f2623eeeeea2faebe84c30e135c6357403b3c44aee379dc5f8058064ecac tests/test_sov
218e8e718765fa3e19aead2359ab5cec36778c6fda596176d8b016a38843da00 tests/test_sovereign_society.mjs
5357326e16f8493d08ecc0a56bae1a48773c1f2e979f830f99181054e144ce7a tests/test_sovereign_transient_physics_upgrade.mjs
0fb98d54388b831fdf91bf0ac02de518e1c0b65b176e8f305801e816bd858fff worker/src/index.js
+e56357ae087309b86d670288998026568373b7268778157b38612fb38d81eba7 worker/src/persistence.js
2eac2b46fb9337eb62b4b716be26eb11f92359c58e6c6685039f3506346a09fb world/actions.js
79cdf84d53e19cb1500f2a782aad657d49281005c7809e06bfcf190f7411f294 world/artifacts.js
251ef01a7616cef68bba68b1bc81ac62d30b0bd1685a8beb9784c4ba55fa469b world/beliefs.js
@@ -113,13 +129,3 @@ e5ee59a711be61616602326a70dfa597e7cf124b4c1ae09ad36fce2ca4ec5e8b world/rng.js
fba432ea0721d0c250d7b91aa9df1c914219740354dcd941f92ea65354d00a96 world/terrain.js
7ac83852beeae3be027e5fca7474c07edc55d0f98a063f2a2594deb6426d4b0c wrangler.toml
8763f37e90f1dd214c35bd44e821d09fd84b5b5945e9087367ef83f61572af5b wrangler.world.toml
-e56357ae087309b86d670288998026568373b7268778157b38612fb38d81eba7 worker/src/persistence.js
-279876578ed24eade882ad165e12f0952f1ac985d4b22065f24067dd720c886e tests/test_sovereign_persistence_budget.mjs
-1219637898a43e4d623897ea15f1ff495554b4b6f2279e6e2466eba072e7b59e tests/test_sovereign_ledger_compaction.mjs
-9942697150f9cc3be949b4869f67c678731db377e284602df4faef8bc6c4fb5e site/observer-concepts.js
-ab0d9a1e3aa3efbc09f241543d9a0714a196d997849049e62fb0a22eae73b1c9 site/citizen-animation.js
-dab555575cd5a79e1e1be63a155033788d40995f6b5c69b3b82fe87132233009 site/spine-citizen-adapter.js
-4fd200df9a9fc14a16eb12445665f4dfd58777fdba8426da4f00ca99b21d8fbe docs/SPINE_OBSERVER_INTEGRATION.md
-164c56738f05469e36d0cb3c913656154381bda6a177505d5d2f06d87d1665ad tests/test_sovereign_observer_readability_upgrade.mjs
-98d88f126a1bca9443485b2cbc2f4614dbc975f9f96d0dfb72ed37465e2c3e56 tests/test_sovereign_citizen_animation_upgrade.mjs
-f0d644436e621ebd5b6e28cb8af3673b6884fbb487725e5816ef1dc08291d7b8 tests/test_sovereign_avatar_observer_upgrade.mjs
diff --git a/README.md b/README.md
index 7a98dfa..544f45e 100644
--- a/README.md
+++ b/README.md
@@ -1,52 +1,311 @@
-# CYMONIA — Sovereign World
+
-CYMONIA is a persistent artificial civilization that decides what happens to itself. The world is the product: the public site opens directly into a cinematic, game-like Observer where canonical Citizens act, learn, build, relate and change over world time.
+# CYMONIA
-## World contract
+### 100 Genesis Citizens. Zero prebuilt society. One causal world.
-- The canonical world starts with 100 Genesis Citizens in a materially closed natural environment.
-- There is no pre-created city, government, company, religion, currency or human language.
-- Buildings, knowledge and institutions require causes in the world.
-- Citizens can learn, forget, form relationships, reproduce, age and die permanently.
-- **1 real minute = 1 CYMONIA hour.** Long actions have world-time timestamps and the Observer interpolates them continuously.
-- Workers AI proposes bounded cognition; deterministic kernel rules authorize state changes.
+**CYMONIA is an open-source persistent artificial civilization where autonomous AI citizens learn, forget, build, form relationships, communicate, reproduce, age and die inside a world that keeps its own canonical history.**
-## Game Observer
+[**ENTER THE LIVE WORLD →**](https://cymonia.pages.dev/) · [Architecture](docs/architecture/overview.md) · [How to contribute](CONTRIBUTING.md) · [Repository map](docs/reference/repository-map.md)
-The product shell is a full-screen isometric strategy world with animated terrain, water, foliage, weather, daylight, Citizens, construction, minimap, selection/follow camera, state inspection, Society History and causal `WHY?` tracing. It is an Observer: the browser never advances or edits the canonical world.
+[](https://cymonia.pages.dev/)
+[](https://github.com/SignalLayerLabs/CYMONIA/actions/workflows/ci.yml)
+[](LICENSE)
+[](world/)
+[](docs/operations/deployment.md)
-## Runtime
+
-- **Cloudflare Pages:** game shell and authenticated API facade.
-- **Durable Object + SQLite:** single-writer canonical world, alarms, checkpoints and live stream.
-- **Workers AI:** bounded event-driven cognition.
-- **D1:** GitHub identity and session records for human-linked avatars.
-- **GitHub Actions:** CI and deployment only; it is not the world heartbeat.
+
+
+## A civilization that has to earn everything
+
+Most AI-agent demos begin with a task.
+
+CYMONIA begins with a **world**.
+
+At Genesis there are 100 Citizens, a finite natural environment and no pre-created city, government, company, religion, currency or human language. Citizens receive no omniscient world model. They can only act on what they have perceived, learned, remembered, inferred or been told.
+
+**No scripted society. No imported history. No consequence-free narration.**
+
+If a structure exists, material and labor had to produce it.
+If knowledge spreads, somebody had to discover or communicate it.
+If an organization forms, Citizens had to commit to it.
+If a Citizen dies, that death is permanent.
+
+CYMONIA is part **artificial life simulation**, part **multi-agent AI system**, part **persistent world**, and part **experiment in emergent behavior**.
+
+---
+
+## Why CYMONIA is different
+
+| | CYMONIA |
+|---|---|
+| **Persistent** | The canonical world exists independently of a browser session. |
+| **Causal** | Physical, biological and social changes require world-state causes. |
+| **Epistemically bounded** | Citizens cannot act on facts they do not know. |
+| **No fixed tech tree** | Experimentation, material transformation, design and construction are generic primitives. |
+| **No scripted society** | Social structures emerge from claims, commitments, relationships and organizations. |
+| **Real life cycle** | Needs, disease, genetics, reproduction, aging and permanent death are canonical. |
+| **Bounded AI** | Workers AI can propose cognition; deterministic rules decide what is actually allowed. |
+| **Human-linked avatars** | A GitHub user can embody one Citizen, locate it, follow it and observe its evolution without receiving privilege or Earth knowledge. |
+| **Auditable history** | The Observer exposes canonical history and causal `WHY?` traces. |
+| **Observer ≠ authority** | The browser renders the world. It never advances or rewrites it. |
+
+---
+
+## Watch a society emerge instead of reading one into existence
+
+The public Observer is a full-screen isometric strategy view built with PixiJS. It exposes the world without becoming the world authority.
+
+You can:
+
+- watch Citizens move, gather, experiment, communicate and build;
+- inspect health, needs, goals, knowledge, language, relationships and possessions;
+- follow a specific Citizen through the world;
+- view knowledge and relationship overlays;
+- inspect Society History and trace events through `WHY?`;
+- sign in with GitHub and track **your own human-linked Citizen**;
+- distinguish living population, total embodied Citizens, human-linked Citizens and Citizens currently visible in the camera.
+
+**World time:** `1 real second = 1 CYMONIA world minute` — therefore `1 real minute = 1 CYMONIA hour`.
+
+[**Open the live Observer → https://cymonia.pages.dev/**](https://cymonia.pages.dev/)
+
+---
+
+## The mental model in 30 seconds
+
+```mermaid
+flowchart LR
+ A[Citizen state] --> B[Perception + memory]
+ B --> C[Local deliberation / bounded AI proposal]
+ C --> D{Deterministic validation}
+ D -->|allowed| E[Canonical action]
+ D -->|rejected| B
+ E --> F[Biology / physics / society]
+ F --> G[Canonical ledger + SQLite checkpoint]
+ G --> A
+ G --> H[WebSocket / REST projection]
+ H --> I[PixiJS Observer]
+
+ J[GitHub user] --> K[Pages auth + D1 session]
+ K --> L[Human-linked Citizen]
+ L --> A
+```
+
+> **AI can suggest. The kernel decides. The Observer displays.**
+
+That separation is the foundation of CYMONIA.
+
+---
+
+## What is actually simulated?
+
+### Artificial life
+
+Citizens have canonical biological state: hydration, calories, sleep pressure, temperature, health, disease, genetics, fertility, pregnancy, aging and death.
+
+### Knowledge and memory
+
+Citizens have private knowledge boundaries. Concepts need provenance. Memories can be formed and forgotten. Beliefs may be uncertain, conflicting or wrong.
+
+### Language
+
+Genesis starts without a human language. Citizens have primitive signals and can develop lexicons and grammar patterns through interaction.
+
+### Physics and material history
+
+Matter is tracked through resource deposits, objects, transformations, construction and destruction. Objects retain provenance. Structures exist because their inputs and work existed.
+
+### Emergent society
+
+CYMONIA does not hard-code a government, religion, corporation, bank, police force, court or property regime. The kernel provides generic social primitives; meaning has to emerge from Citizen behavior.
+
+### Human participation
+
+Authenticated users can create one persistent `HUMAN_LINKED` Citizen. External direction is treated as preference, not injected knowledge. Human-linked Citizens remain subject to the same scarcity, mortality and causal constraints as everyone else.
+
+---
+
+## Architecture
+
+```text
+Browser / Observer
+ │
+ │ read canonical state + authenticated intent
+ ▼
+Cloudflare Pages + Pages Functions
+ │
+ ▼
+SovereignWorld Durable Object ← the single canonical writer
+ │
+ ├── deterministic world kernel
+ ├── SQLite checkpoints + seals
+ ├── Workers AI cognition budget
+ └── WebSocket live delivery
+```
+
+### Runtime stack
+
+- **JavaScript ES modules** — world kernel and web client
+- **Cloudflare Durable Objects + SQLite** — persistent single-writer world
+- **Cloudflare Workers AI** — bounded event-driven cognition
+- **Cloudflare Pages + Functions** — public Observer and API facade
+- **Cloudflare D1** — GitHub identity/session metadata
+- **PixiJS 8** — GPU Observer rendering
+- **Matter.js** — Observer-only transient visual physics
+- **WebSocket Hibernation API** — live world delivery
+- **Node built-in test runner** — deterministic invariants and contracts
+- **GitHub Actions** — CI and deployment, never the world heartbeat
+
+For the technical deep dive, read **[Architecture](docs/architecture/overview.md)**.
+
+---
## Repository map
-- `world/` — causal kernel, biology, cognition, epistemics, language, society and artifacts.
-- `worker/src/index.js` — canonical Durable Object world.
-- `functions/api/v2/` — state, history, WHY, avatar, intent and stream facade.
-- `functions/api/auth/` — GitHub OAuth and session bridge.
-- `functions/_lib/identity.js` — identity-only D1 store.
-- `site/` — game-only Observer and deterministic Genesis fallback.
-- `scripts/build_sovereign_genesis.mjs` — reproducible fallback builder.
-- `tests/test_sovereign_*.mjs` — world invariants and delivery contracts.
-- `docs/superpowers/specs/2026-09-15-sovereign-world-v2-design.md` — design specification.
+| Path | Responsibility |
+|---|---|
+| [`world/`](world/) | Canonical simulation kernel: physics, biology, knowledge, cognition, language and society |
+| [`worker/`](worker/) | Persistent Durable Object runtime, alarms, AI budget, checkpoints and WebSockets |
+| [`functions/`](functions/) | Cloudflare Pages API facade, GitHub OAuth and identity boundary |
+| [`site/`](site/) | Public Observer, PixiJS renderer, avatar UI and deterministic replay fallback |
+| [`tests/`](tests/) | World invariants, runtime contracts, renderer contracts and browser smoke tests |
+| [`scripts/`](scripts/) | Reproducible Genesis build and maintenance tooling |
+| [`migrations/`](migrations/) | D1 identity/session schema |
+| [`docs/`](docs/) | Architecture, design, operations, Observer notes and contributor reference |
+| [`.github/`](.github/) | CI, deployment and contributor workflow templates |
-## Verify locally
+Want every file explained? See the **[complete repository map](docs/reference/repository-map.md)**.
+
+---
+
+## Run it locally
+
+### 1. Clone and verify the world
```bash
+git clone https://github.com/SignalLayerLabs/CYMONIA.git
+cd CYMONIA
+
node --test tests/test_sovereign_*.mjs
bash CHECK.sh . --skip-browser
```
-For browser smoke, install Playwright, serve `site/`, then run:
+### 2. Open the Observer locally
```bash
python3 -m http.server 8765 --directory site
+```
+
+Open `http://127.0.0.1:8765`.
+
+Without the production API, the Observer intentionally falls back to the deterministic frozen Genesis replay instead of inventing live state.
+
+### 3. Run the browser smoke test
+
+With Playwright available:
+
+```bash
CYMONIA_URL=http://127.0.0.1:8765 node tests/browser-sovereign.mjs
```
-Deploy from a clean checkout with Wrangler or let the `main` workflow deploy the Worker and Pages Observer after CI passes.
+Deployment instructions live in **[docs/operations/deployment.md](docs/operations/deployment.md)**.
+
+---
+
+## Contribute where it matters
+
+Good contribution areas include:
+
+- richer physical and material interactions;
+- better perception, memory and epistemic constraints;
+- language and social emergence;
+- biology, disease, genetics and reproduction;
+- Observer rendering, accessibility and visualization;
+- runtime reliability, persistence and delivery;
+- invariant tests, fuzzing and reproducibility;
+- documentation and research-facing analysis.
+
+Before changing canonical behavior, read **[CONTRIBUTING.md](CONTRIBUTING.md)** and the **[repository map](docs/reference/repository-map.md)**.
+
+Every canonical behavior change should arrive with an invariant test.
+
+---
+
+## Design principles
+
+1. **The world is the source of truth.**
+2. **No entity gets knowledge for free.**
+3. **AI output is a proposal, never authority.**
+4. **Persistent outcomes need persistent causes.**
+5. **Observer interpretation cannot mutate canonical state.**
+6. **Long outages are not fictional lived history.**
+7. **Human-linked Citizens do not receive human privilege.**
+8. **Emergence is more valuable than hard-coded lore.**
+
+---
+
+## FAQ
+
+### Is CYMONIA a game?
+
+The interface is game-like, but the core is a persistent artificial-life and multi-agent simulation. The Observer gives humans a strategy-game view over canonical world state.
+
+### Are the Citizens just LLM agents?
+
+No. LLM calls are one bounded cognition mechanism. Biology, physics, action execution, material conservation, knowledge validation, persistence and world history are deterministic kernel responsibilities.
+
+### Does the world keep existing when nobody has the tab open?
+
+Yes. The canonical runtime lives in a Durable Object and advances independently of the browser. The browser is an Observer, not the heartbeat.
+
+### Can society emerge without predefined governments or economies?
+
+That is the point. CYMONIA starts without pre-created institutions. Generic social primitives exist, but institutions have to arise from Citizen behavior and mutual recognition.
+
+### Can I enter CYMONIA?
+
+Yes. GitHub authentication can create a persistent human-linked Citizen. You can locate it, follow it and inspect its public evolution. Your direction does not grant it Earth knowledge or immunity from the world.
+
+### Is this an agent-based model?
+
+CYMONIA overlaps with agent-based modeling, artificial life, generative agents and complex-systems simulation, but adds a persistent canonical world, explicit epistemic constraints, causal material history and a live Observer.
+
+---
+
+## Documentation
+
+- **[Documentation hub](docs/README.md)**
+- **[Architecture](docs/architecture/overview.md)**
+- **[Physics model](docs/architecture/physics.md)**
+- **[Sovereign World design](docs/design/sovereign-world-v2.md)**
+- **[Self-evolving world design](docs/design/self-evolving-world.md)**
+- **[Observer art](docs/observer/art.md)**
+- **[Optional Spine integration](docs/observer/spine.md)**
+- **[Deployment](docs/operations/deployment.md)**
+- **[Complete repository map](docs/reference/repository-map.md)**
+- **[Security](SECURITY.md)**
+
+---
+
+## License
+
+CYMONIA is released under the **MIT License**.
+
+The optional Spine adapter is part of CYMONIA, but the Spine runtime and Spine assets are **not** bundled. Those remain subject to Esoteric Software's separate licensing terms.
+
+---
+
+
+
+### A civilization is more interesting when nobody already wrote its future.
+
+[**ENTER CYMONIA**](https://cymonia.pages.dev/) · [**STAR THE REPO**](https://github.com/SignalLayerLabs/CYMONIA) · [**CONTRIBUTE**](CONTRIBUTING.md)
+
+
diff --git a/SECURITY.md b/SECURITY.md
index d84ee6f..cae58d2 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,22 +1,43 @@
-# Security Policy
+# CYMONIA Security Policy
-CYMONIA is a research world, not a custody system, wallet, payment processor, exchange or production financial network. Do not connect it to real funds.
+CYMONIA is an open-source artificial-life and multi-agent simulation. It is **not** a wallet, exchange, payment processor, custody system or production financial network. Do not connect it to real funds.
-## Security-sensitive areas
+## Security model
-Please report issues involving:
+- `SovereignWorld` is the single canonical writer.
+- Pages Functions authenticate and proxy; they do not own world truth.
+- Workers AI proposes bounded cognition; it cannot directly mutate canonical state.
+- The browser Observer renders canonical state and sends explicit authenticated intent; it does not advance the world.
+- D1 stores identity/session metadata outside the Citizen knowledge model.
-- unauthorized Durable Object world advancement or state mutation;
-- bypasses of material, biological or knowledge invariants;
-- forged world history, checkpoints or WebSocket messages;
-- GitHub OAuth, D1 session or avatar ownership bypasses;
-- secret exposure, arbitrary code execution or injection through world data;
-- GitHub Actions or Cloudflare permissions beyond what deployment requires.
+## Report these issues privately
+
+Please report vulnerabilities involving:
+
+- unauthorized world advancement or canonical state mutation;
+- bypasses of material, biological, epistemic or action invariants;
+- forged ledger history, checkpoints, seals or WebSocket state;
+- avatar ownership or cross-user intent injection;
+- GitHub OAuth, D1 session or cookie bypasses;
+- secret exposure or sensitive logging;
+- arbitrary code execution, injection or unsafe deserialization;
+- GitHub Actions or Cloudflare permissions beyond deployment requirements;
+- persistence-budget abuse that can intentionally deny canonical writes.
## Reporting
-Use a private GitHub security advisory when available. Otherwise contact the maintainers privately with enough detail to reproduce the issue without publishing an exploit.
+Use a **private GitHub security advisory** when available.
+
+Include affected commit/URL, minimal reproduction steps, expected vs actual security boundary, impact, and sanitized evidence.
+
+## Out of scope
+
+These are not security vulnerabilities by themselves:
-## Trust boundary
+- a Citizen making a bad decision;
+- incorrect in-world beliefs that remain within epistemic rules;
+- Observer-only labels you disagree with;
+- normal permanent Citizen death;
+- temporary visual differences that do not alter canonical state.
-The Observer is read-oriented. Human actions enter through authenticated intent routes and are checked by the canonical world. Workers AI can suggest cognition, but cannot directly write world state or grant privileged knowledge.
+Security bugs are about crossing trust boundaries, not guaranteeing desirable emergent behavior.
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..08013c0
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,30 @@
+# CYMONIA Documentation
+
+This directory is the technical map of the CYMONIA Sovereign World.
+
+| If you want to understand… | Read |
+|---|---|
+| the product and why it exists | [`../README.md`](../README.md) |
+| canonical authority and runtime flow | [`architecture/overview.md`](architecture/overview.md) |
+| movement, terrain, mass and physical effects | [`architecture/physics.md`](architecture/physics.md) |
+| the full v2 world contract | [`design/sovereign-world-v2.md`](design/sovereign-world-v2.md) |
+| the self-evolving-world direction | [`design/self-evolving-world.md`](design/self-evolving-world.md) |
+| Observer art and rendering choices | [`observer/art.md`](observer/art.md) |
+| optional Spine animation integration | [`observer/spine.md`](observer/spine.md) |
+| production deployment | [`operations/deployment.md`](operations/deployment.md) |
+| what every source file does | [`reference/repository-map.md`](reference/repository-map.md) |
+| contribution rules | [`../CONTRIBUTING.md`](../CONTRIBUTING.md) |
+| security boundaries | [`../SECURITY.md`](../SECURITY.md) |
+
+```text
+docs/
+├── architecture/ canonical runtime and physical model
+├── design/ world specifications
+├── observer/ rendering and presentation
+├── operations/ deployment and production runtime
+├── reference/ contributor-oriented codebase map
+├── history/ historical release and implementation records
+└── images/ repository documentation images
+```
+
+Historical documents describe how the current system was reached. Current authority is the source code, tests and current architecture/design documents.
diff --git a/docs/architecture-v2.md b/docs/architecture-v2.md
deleted file mode 100644
index e5617d0..0000000
--- a/docs/architecture-v2.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# CYMONIA v2 Architecture
-
-## Authority boundary
-
-The v2 canonical world has exactly one mutation authority: the `SovereignWorld` Durable Object. Browser clients, Pages Functions and GitHub Actions cannot directly change canonical state.
-
-The world kernel decides whether an action is possible; Citizens decide which allowed actions they pursue. Observer classifications such as "proto-religious", "company-like" or "organized conflict" are descriptive and never change canonical behavior.
-
-## Runtime flow
-
-1. Durable Object loads or creates the v2 Genesis world in SQLite-backed storage.
-2. An alarm wakes the object and advances canonical time to real time.
-3. Due biological/environmental/action events execute in causal order.
-4. Local deliberation keeps Citizens physically active between LLM decisions.
-5. High-priority cognition items may call Workers AI within the configured daily budget.
-6. Proposed AI plans pass epistemic and action validation before acceptance.
-7. Canonical state is persisted and periodically sealed with SHA-256 checkpoints.
-8. Live Observer clients receive snapshots/deltas through WebSocket.
-
-## Causal world modules
-
-`world/` is deliberately split by responsibility:
-
-- `clock.js`, `ledger.js`, `rng.js`, `constants.js` — trusted kernel foundations.
-- `materials.js`, `environment.js`, `actions.js`, `artifacts.js` — physical world and transformations.
-- `biology.js`, `genetics.js`, `disease.js`, `reproduction.js` — life cycle.
-- `memory.js`, `epistemics.js`, `perception.js`, `beliefs.js` — private knowledge boundary.
-- `language.js`, `society.js` — emergent communication and social primitives.
-- `cognition.js` — structured plans and validation.
-- `observer.js` — non-authoritative classification/history.
-- `engine.js` — catch-up integration and public projection.
-
-## No social presets
-
-The v2 canonical state contains no mandatory government, company, bank, police, court, religion, currency, property regime or family structure. Generic organization/claim/commitment primitives are available; social meaning must emerge from Citizen actions and mutual recognition.
-
-## Human avatar
-
-GitHub authentication remains outside the world in the account/session layer. Creating an avatar consumes the finite Genesis Observer Embodiment Reserve. External user intent becomes a direction/goal constraint and cannot import factual Earth knowledge into the avatar.
-
-## Observer
-
-The Observer is one full-viewport game shell. It visualizes only canonical state or clearly labeled derived classification. The Society History window is built from the ledger and can trace real events with `WHY?`.
diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md
new file mode 100644
index 0000000..8de6f3a
--- /dev/null
+++ b/docs/architecture/overview.md
@@ -0,0 +1,77 @@
+# CYMONIA Architecture
+
+CYMONIA is a persistent artificial civilization with a deliberately strict authority model: **one canonical world, one canonical writer, many observers**.
+
+The architecture prevents narration, UI state or an LLM response from becoming reality merely because it was generated.
+
+## Authority boundary
+
+The canonical mutation authority is the `SovereignWorld` Cloudflare Durable Object.
+
+```mermaid
+flowchart TD
+ UI[Browser Observer] -->|state / history / WHY / stream| PF[Cloudflare Pages + Functions]
+ UI -->|authenticated human intent| PF
+ PF --> DO[SovereignWorld Durable Object]
+ DO --> K[Deterministic world kernel]
+ DO --> DB[(Durable Object SQLite)]
+ DO --> AI[Workers AI]
+ AI -->|structured proposal only| K
+ K -->|validated canonical mutation| DO
+ DO --> UI
+ GH[GitHub OAuth] --> D1[(D1 identity/session)]
+ D1 --> PF
+```
+
+| Layer | Canonical mutation? | Role |
+|---|---:|---|
+| `world/` kernel | Through validated execution | deterministic rules |
+| `SovereignWorld` Durable Object | **Yes** | single writer and runtime authority |
+| Workers AI | No | proposes bounded cognition |
+| Pages Functions | No | authentication and proxy boundary |
+| D1 identity store | No | external account/session metadata |
+| Browser Observer | No | visualization and authenticated intent |
+| GitHub Actions | No | CI and deployment |
+
+## Runtime cycle
+
+1. Load persisted world or create deterministic Genesis.
+2. Durable Object alarm wakes the runtime.
+3. `advanceWorldBounded()` advances due world events.
+4. Biology, environment, actions and social effects execute causally.
+5. Local deliberation keeps Citizens active between AI decisions.
+6. High-priority cognition may call Workers AI within a hard daily budget.
+7. AI output is parsed into a constrained proposal.
+8. Epistemic/action validation rejects illegal knowledge or impossible actions.
+9. Accepted actions enter canonical execution.
+10. The world is checkpointed and periodically sealed.
+11. REST and WebSocket projections expose public state to Observer clients.
+
+## Kernel domains
+
+**Foundations:** `constants.js`, `clock.js`, `rng.js`, `ledger.js`
+**Physical world:** `materials.js`, `terrain.js`, `environment.js`, `actions.js`, `artifacts.js`, `designs.js`, `impact.js`
+**Life:** `biology.js`, `genetics.js`, `disease.js`, `reproduction.js`
+**Knowledge:** `perception.js`, `epistemics.js`, `memory.js`, `beliefs.js`, `cognition.js`
+**Society:** `language.js`, `society.js`
+**Integration:** `genesis.js`, `observer.js`, `engine.js`
+
+## Epistemic boundary
+
+A Citizen does not receive global state simply because the server has it. Cognitive context is built from legitimately known concepts, perception, memories, relationships and allowed external direction. Unknown concepts are rejected when a proposal tries to use them.
+
+## Persistence
+
+The Durable Object stores compressed, chunked snapshots in SQLite-backed storage with bounded row-write accounting, periodic SHA-256 seals and alternating slots.
+
+A long runtime outage does **not** automatically become lived Citizen history. Recovery rebases the real-time boundary and persists it before hibernation can discard the recovery.
+
+## Human-linked Citizens
+
+GitHub identity exists outside the world. An authenticated user can resolve or create one `HUMAN_LINKED` Citizen. Embodiment consumes finite reserve, gives no Earth knowledge and grants no special physics. User direction enters as preference, not factual truth.
+
+## Observer boundary
+
+The Observer may animate, interpolate, classify and explain canonical state. Those derivations cannot create buildings, give Citizens knowledge or rewrite history.
+
+See [`../reference/repository-map.md`](../reference/repository-map.md) for the complete code map and [`../operations/deployment.md`](../operations/deployment.md) for production topology.
diff --git a/docs/RTS_PHYSICS_UPGRADE.md b/docs/architecture/physics.md
similarity index 99%
rename from docs/RTS_PHYSICS_UPGRADE.md
rename to docs/architecture/physics.md
index 8a85a89..4894254 100644
--- a/docs/RTS_PHYSICS_UPGRADE.md
+++ b/docs/architecture/physics.md
@@ -28,7 +28,7 @@ The new phenomenological world layer adds:
- structure occupancy and a simple route detour around occupied cores;
- construction-site collision checks;
- no ordinary construction directly in the river corridor;
-- foundation work affected by terrain (wetland/rock/forest cost real time);
+- foundation work affected by terrain (wetland/rock/forest cost real time);
- construction still consumes canonical material and labor;
- building thermal/rain protection derived from incorporated material properties;
- material thermal resistance and water resistance become discoverable through the existing experiment system;
diff --git a/docs/art/README.md b/docs/art/README.md
deleted file mode 100644
index 3cd0bda..0000000
--- a/docs/art/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Medieval Observer art revamp
-
-Original medieval RTS art created with the built-in ImageGen tool on 2026-09-16. The 4 × 4 transparent atlas includes oak, fir, autumn oak, rocks, temporary shelter, cottage, communal hall, construction frame, berries, logs, ore, clay/reeds and four citizen appearances. The separate meadow material is blended with deterministic terrain and the canonical river course.
-
-Assets: `site/assets/medieval-atlas.png` and `site/assets/meadow-texture.png`.
-
-Both WebGL and Canvas share projection, atlas bounds, terrain, and canonical resource/structure filtering. Transparent pixels are ignored during selection. Trees, buildings and people are sorted by ground depth. The browser does not change simulation state. Decorative foliage and character attire are visual styling; they do not create harvestable resources, tools or inventory. Completed houses are shown only for existing canonical buildings; Genesis still starts with its actual temporary shelters.
-
-Desktop and mobile screenshots here show the actual frozen Genesis replay, not a fabricated city. This is an original 2D isometric art treatment; it is not a 3D engine or a reproduction of Age of Empires assets.
-
-Validation: unit/invariant suite, CHECK.sh, browser-sovereign.mjs, browser-replay.mjs, and browser-art.mjs (Canvas and GPU, selection, follow, knowledge/relations, windows, zoom, recenter, mobile). The generic game client also ran; its single-canvas capture cannot composite the separate WebGL and overlay canvases, so full-page browser screenshots are the visual evidence. Local static-server API 404s correctly enter the labeled frozen replay.
-
-Run visual checks with a local server and Playwright installed:
-
- python3 -m http.server 8768 --directory site
- CYMONIA_URL=http://127.0.0.1:8768 node tests/browser-art.mjs
-
-Marginal was enabled with live lifecycle hooks in the task workspace. Mode remained Shadow because promotion evidence was not sufficient. No measured credit savings are claimed.
diff --git a/docs/superpowers/specs/2026-09-16-cymonia-self-evolving-world-design.md b/docs/design/self-evolving-world.md
similarity index 100%
rename from docs/superpowers/specs/2026-09-16-cymonia-self-evolving-world-design.md
rename to docs/design/self-evolving-world.md
diff --git a/docs/superpowers/specs/2026-09-15-sovereign-world-v2-design.md b/docs/design/sovereign-world-v2.md
similarity index 99%
rename from docs/superpowers/specs/2026-09-15-sovereign-world-v2-design.md
rename to docs/design/sovereign-world-v2.md
index b642c85..c2b3e5c 100644
--- a/docs/superpowers/specs/2026-09-15-sovereign-world-v2-design.md
+++ b/docs/design/sovereign-world-v2.md
@@ -1,8 +1,8 @@
# CYMONIA v2 — Sovereign World
## Complete Technical Design Specification
-**Status:** Architecture approved; written specification prepared for final user review before implementation.
-**Date:** 2026-09-15
+**Status:** Architecture approved; written specification prepared for final user review before implementation.
+**Date:** 2026-09-15
**Project:** SignalLayerLabs/CYMONIA
## 1. Product thesis
diff --git a/docs/superpowers/plans/2026-09-15-sovereign-world-v2.md b/docs/history/implementation-plan-2026-09-15.md
similarity index 98%
rename from docs/superpowers/plans/2026-09-15-sovereign-world-v2.md
rename to docs/history/implementation-plan-2026-09-15.md
index 5e93adb..fbda9a8 100644
--- a/docs/superpowers/plans/2026-09-15-sovereign-world-v2.md
+++ b/docs/history/implementation-plan-2026-09-15.md
@@ -1,5 +1,8 @@
# CYMONIA v2 Sovereign World Implementation Plan
+> Historical implementation plan. Some paths in task descriptions reflect the repository layout that existed when the plan was written.
+
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Replace the dashboard-centric scripted prototype with a persistent game-only artificial world whose inhabitants, not developer-authored social rules, determine society.
diff --git a/RELEASE_SOVEREIGN_WORLD_V2.md b/docs/history/release-v2.md
similarity index 100%
rename from RELEASE_SOVEREIGN_WORLD_V2.md
rename to docs/history/release-v2.md
diff --git a/docs/art/medieval-observer-desktop.png b/docs/images/observer-desktop.png
similarity index 100%
rename from docs/art/medieval-observer-desktop.png
rename to docs/images/observer-desktop.png
diff --git a/docs/art/medieval-observer-mobile.png b/docs/images/observer-mobile.png
similarity index 100%
rename from docs/art/medieval-observer-mobile.png
rename to docs/images/observer-mobile.png
diff --git a/docs/observer/art.md b/docs/observer/art.md
new file mode 100644
index 0000000..72f0d93
--- /dev/null
+++ b/docs/observer/art.md
@@ -0,0 +1,32 @@
+# CYMONIA Observer Art
+
+CYMONIA uses an original medieval-isometric Observer treatment to make canonical world state legible as a living strategy world.
+
+Current production art is intentionally small:
+
+- `site/assets/medieval-atlas.png` — resources, structures and Citizen appearances;
+- `site/assets/meadow-texture.png` — ground material;
+- `site/medieval-art.js` — deterministic atlas/projection mapping;
+- `site/pixi-observer.js` — GPU rendering;
+- `site/sovereign-renderer.js` — camera, Canvas fallback, selection and minimap.
+
+## Canonical boundary
+
+Visuals are an interpretation layer. Decorative foliage does not create harvestable resources. Clothing does not create inventory. A completed building is rendered only when a canonical building exists. The browser may interpolate movement between canonical timestamps, but it cannot move a Citizen in world state.
+
+## Screenshots
+
+- [`../images/observer-desktop.png`](../images/observer-desktop.png)
+- [`../images/observer-mobile.png`](../images/observer-mobile.png)
+
+These show real deterministic/replayed world state rather than a fabricated marketing city.
+
+## Validation
+
+```bash
+node tests/browser-art.mjs
+node tests/browser-sovereign.mjs
+node tests/browser-replay.mjs
+```
+
+The project does not reproduce Age of Empires assets or rely on a 3D engine.
diff --git a/docs/SPINE_OBSERVER_INTEGRATION.md b/docs/observer/spine.md
similarity index 100%
rename from docs/SPINE_OBSERVER_INTEGRATION.md
rename to docs/observer/spine.md
diff --git a/docs/deployment-sovereign-world.md b/docs/operations/deployment.md
similarity index 100%
rename from docs/deployment-sovereign-world.md
rename to docs/operations/deployment.md
diff --git a/docs/reference/repository-map.md b/docs/reference/repository-map.md
new file mode 100644
index 0000000..4a97f13
--- /dev/null
+++ b/docs/reference/repository-map.md
@@ -0,0 +1,152 @@
+# CYMONIA Repository Map
+
+> **`world/` defines what can happen. `worker/` owns when canonical state changes. `functions/` authenticates and proxies. `site/` observes. `tests/` prove the boundaries.**
+
+## Root
+
+| Path | Purpose |
+|---|---|
+| `README.md` | Product landing page and technical overview |
+| `CONTRIBUTING.md` | Contributor workflow and invariants |
+| `SECURITY.md` | Security scope and trust boundaries |
+| `LICENSE` | MIT license |
+| `CHECK.sh` | Repository-wide verification |
+| `MANIFEST.sha256` | Integrity manifest |
+| `wrangler.toml` | Cloudflare Pages, D1 and service binding |
+| `wrangler.world.toml` | Sovereign Worker, Durable Object and Workers AI |
+
+## `.github/`
+
+| Path | Purpose |
+|---|---|
+| `.github/workflows/ci.yml` | CI plus production deployment/verification |
+| `.github/workflows/pages.yml` | Pages deployment |
+| `.github/CODEOWNERS` | Review ownership |
+| `.github/PULL_REQUEST_TEMPLATE.md` | Authority/evidence PR template |
+| `.github/ISSUE_TEMPLATE/*` | Structured bug and feature proposals |
+
+## `world/` — canonical simulation kernel
+
+| File | Responsibility |
+|---|---|
+| `index.js` | Kernel exports |
+| `constants.js` | Constitutional constants / time scale |
+| `clock.js` | World-time mapping |
+| `rng.js` | Deterministic random source |
+| `ledger.js` | Canonical events and hash continuity |
+| `genesis.js` | Deterministic Genesis |
+| `materials.js` | Material properties and transformations |
+| `terrain.js` | Terrain, costs, routing and placement |
+| `environment.js` | Climate and environmental state |
+| `actions.js` | Canonical action lifecycle |
+| `artifacts.js` | Objects and provenance |
+| `designs.js` | Learned designs / construction requirements |
+| `impact.js` | Kinetic damage and fracture |
+| `biology.js` | Needs, health and physiology |
+| `genetics.js` | Inherited traits |
+| `disease.js` | Disease state |
+| `reproduction.js` | Pregnancy, birth and biomass transfer |
+| `memory.js` | Memory and forgetting |
+| `epistemics.js` | Knowledge provenance / actionability |
+| `perception.js` | Sensory concept acquisition |
+| `beliefs.js` | Fallible beliefs |
+| `language.js` | Signals, lexicon and grammar |
+| `society.js` | Relationships, claims, commitments and organizations |
+| `cognition.js` | Cognitive context and proposal validation |
+| `observer.js` | Non-authoritative derived history/classification |
+| `engine.js` | Advancement, deliberation, avatars and public projection |
+
+## `worker/` — canonical runtime
+
+| File | Responsibility |
+|---|---|
+| `worker/src/index.js` | Durable Object lifecycle, alarms, AI, APIs, avatars, persistence and WebSockets |
+| `worker/src/persistence.js` | Snapshot codec, write budgets and slot helpers |
+
+## `functions/` — Pages boundary
+
+| File | Responsibility |
+|---|---|
+| `functions/_lib/auth.js` | Auth cookies and opaque tokens |
+| `functions/_lib/http.js` | HTTP helpers and session requirements |
+| `functions/_lib/identity.js` | D1 actor/session/OAuth persistence |
+| `functions/api/auth/[[path]].js` | GitHub OAuth / logout |
+| `functions/api/v2/[[path]].js` | State, history, WHY, stream, avatar and intent facade |
+
+## `migrations/`
+
+`migrations/0001_identity.sql` defines D1 actors, OAuth states and sessions. This is external identity metadata, not Citizen knowledge.
+
+## `site/` — public Observer
+
+| File | Responsibility |
+|---|---|
+| `index.html` | Product shell and SEO metadata |
+| `sovereign-world.js` | Browser app state, HUD, inspector, history and owned avatar |
+| `sovereign-renderer.js` | Camera, selection, Canvas fallback, minimap, follow/locate |
+| `pixi-observer.js` | PixiJS GPU world rendering |
+| `observer-connection.js` | REST/WebSocket/replay connection semantics |
+| `observer-concepts.js` | Human-readable labels for opaque concepts |
+| `citizen-animation.js` | Action-to-animation and procedural poses |
+| `spine-citizen-adapter.js` | Optional licensed Spine adapter |
+| `medieval-art.js` | Atlas/projection helpers |
+| `terrain-model.js` | Browser terrain interpretation |
+| `transient-physics.js` | Observer-only Matter.js effects |
+| `sovereign-world.css` | Core shell styles |
+| `medieval-world.css` | Isometric visual treatment |
+| `icon.svg` | Browser icon |
+| `preview.png` | Social/Open Graph preview |
+| `robots.txt` | Search crawling policy |
+| `sitemap.xml` | Public sitemap |
+| `llms.txt` | Machine-readable project summary |
+| `data/sovereign-genesis.json` | Deterministic frozen Genesis fallback |
+| `assets/medieval-atlas.png` | Current production atlas |
+| `assets/meadow-texture.png` | Current terrain material |
+
+## `scripts/`
+
+- `build_sovereign_genesis.mjs` — rebuilds deterministic replay.
+- `patch_current_v2.mjs` — maintenance patcher with regression coverage.
+
+## `tests/`
+
+### Browser
+- `browser-sovereign.mjs` — canonical rendering, movement, shell and mobile.
+- `browser-replay.mjs` — API outage and replay fallback.
+- `browser-art.mjs` — Canvas/GPU visual contract.
+
+### World behavior
+Action effects, actions, artifacts, beliefs/language, biology, cognition, conservation, construction, engine, epistemics, exposure, Genesis, history, impact, language, local deliberation, mass closure, material transform, emergence, physics, relationships, reproduction, shelter and society are covered by the corresponding `test_sovereign_*.mjs` files.
+
+### Runtime
+Persistence, row-write budget, ledger compaction, runtime contract, delivery and maintenance-patcher behavior have dedicated sovereign tests.
+
+### Observer/product
+Avatar ownership, animation, connection semantics, readable concepts, Pixi/Matter boundary, shell, renderer motion and transient effects have dedicated sovereign tests.
+
+`test_sovereign_repository_presentation.mjs` protects the repository/SEO cleanup itself.
+
+## `docs/`
+
+| Path | Purpose |
+|---|---|
+| `docs/README.md` | Documentation hub |
+| `docs/architecture/overview.md` | Authority and runtime architecture |
+| `docs/architecture/physics.md` | Detailed physical model |
+| `docs/design/sovereign-world-v2.md` | Sovereign World specification |
+| `docs/design/self-evolving-world.md` | Self-evolving design direction |
+| `docs/observer/art.md` | Art/rendering boundary |
+| `docs/observer/spine.md` | Optional Spine integration |
+| `docs/operations/deployment.md` | Cloudflare deployment |
+| `docs/reference/repository-map.md` | This map |
+| `docs/history/*` | Historical release/implementation records |
+| `docs/images/*` | Documentation screenshots |
+
+## Where should my PR go?
+
+If it changes what can happen → `world/`.
+If it changes persistence/scheduling/AI/streaming → `worker/`.
+If it changes auth/API translation → `functions/`.
+If it changes how humans see the world → `site/`.
+
+If you cannot identify the authority owner, open a proposal first.
diff --git a/site/assets/world-backdrop.png b/site/assets/world-backdrop.png
deleted file mode 100644
index db63ef9..0000000
Binary files a/site/assets/world-backdrop.png and /dev/null differ
diff --git a/site/assets/world-buildings.png b/site/assets/world-buildings.png
deleted file mode 100644
index 51e3a2f..0000000
Binary files a/site/assets/world-buildings.png and /dev/null differ
diff --git a/site/assets/world-citizens.png b/site/assets/world-citizens.png
deleted file mode 100644
index e5ef5b6..0000000
Binary files a/site/assets/world-citizens.png and /dev/null differ
diff --git a/site/assets/world-terrain.png b/site/assets/world-terrain.png
deleted file mode 100644
index 5527f60..0000000
Binary files a/site/assets/world-terrain.png and /dev/null differ
diff --git a/site/cinematic-world.css b/site/cinematic-world.css
deleted file mode 100644
index 3ad665a..0000000
--- a/site/cinematic-world.css
+++ /dev/null
@@ -1,14 +0,0 @@
-#game::before{content:"";position:absolute;inset:0;z-index:8;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,transparent 32%,rgba(3,7,5,.18) 66%,rgba(0,0,0,.66) 112%),linear-gradient(180deg,rgba(241,200,111,.07),transparent 18%,transparent 78%,rgba(0,0,0,.28));mix-blend-mode:multiply}
-#game::after{content:"";position:absolute;inset:0;z-index:9;pointer-events:none;opacity:.13;background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0,rgba(255,255,255,.025) 1px,transparent 1px,transparent 3px);animation:film-grain .18s steps(2) infinite}
-.is-night::before{background:radial-gradient(circle at 66% 18%,rgba(130,169,203,.12),transparent 23%),radial-gradient(ellipse at 50% 48%,rgba(14,29,40,.05) 24%,rgba(2,7,15,.34) 67%,rgba(0,0,0,.75) 110%);mix-blend-mode:multiply}
-.game-topbar,.activity-rail,.inspector,.mini-map-shell,.game-dock,.game-window{border-color:#c6a45a55;box-shadow:0 2px 0 #e5c97916 inset,0 -2px 0 #0009 inset,0 18px 50px #0009}
-.game-topbar{background:linear-gradient(180deg,#25251ff2,#0b1411f2 58%,#080e0ced);border-radius:3px}.game-topbar::before,.game-topbar::after{content:"◆";color:#b8934b;position:absolute;top:20px;font-size:10px;text-shadow:0 1px #000}.game-topbar::before{left:5px}.game-topbar::after{right:5px}
-.brand b{text-shadow:0 2px 0 #352810,0 0 22px #d7b45d30}.top-metrics{align-items:center}.top-metrics span{min-width:58px;text-align:center;border-left:1px solid #c4a55b22;padding-left:14px}.top-metrics b{color:#f0dfb1;text-shadow:0 1px #000}.environment-metric{min-width:108px!important}
-.activity-row{position:relative;border-bottom:1px solid #ffffff08}.activity-row>span{background:linear-gradient(145deg,#29362d,#111915);border-color:#bb9d5a35;box-shadow:0 3px 8px #0006 inset}.action-progress{display:block;height:2px;margin-top:5px;background:#ffffff0b;overflow:hidden}.action-progress-fill{display:block;height:100%;background:linear-gradient(90deg,#7fae85,#e2c678);box-shadow:0 0 7px #d8bd78}
-.mini-map-shell{border-radius:2px;background:linear-gradient(135deg,#151d18f4,#060b09f5);padding:8px}.mini-map-shell::before,.game-dock::before{content:"";position:absolute;inset:3px;border:1px solid #e2c67215;pointer-events:none}.mini-map-shell canvas{filter:saturate(1.25) contrast(1.06);box-shadow:0 0 0 1px #000 inset;cursor:crosshair}
-.game-dock{border-radius:4px;padding:3px;background:linear-gradient(180deg,#292820f3,#0b1310f7);gap:1px}.game-dock button{position:relative;border:1px solid transparent;border-right-color:#ffffff0d;transition:background .16s,border-color .16s,transform .16s}.game-dock button:hover{background:linear-gradient(180deg,#c5a75d1f,#ffffff07);border-color:#c9aa6248;transform:translateY(-2px)}.game-dock button:active{transform:translateY(0)}.game-dock span{text-shadow:0 2px #000}
-.control-hints{position:absolute;z-index:18;right:256px;bottom:24px;color:#98a39b;font-size:6px;letter-spacing:.12em;text-transform:uppercase;text-shadow:0 1px #000}.control-hints span{color:#d9c585}.control-hints i::after{content:"·";margin:0 7px;color:#615a47}
-.world-loader{position:absolute;inset:0;z-index:100;display:grid;place-content:center;justify-items:center;gap:7px;background:radial-gradient(circle at 50% 44%,#1f3b2d,#07100d 62%);transition:opacity .75s ease,visibility .75s ease}.world-loader.ready{opacity:0;visibility:hidden}.world-loader strong{font-family:Georgia,serif;font-size:17px;letter-spacing:.28em;color:#e7d49e;text-shadow:0 3px #000}.world-loader span{font-size:7px;letter-spacing:.18em;color:#8e9a92;text-transform:uppercase}.world-loader-mark{display:flex;gap:6px;margin-bottom:9px;transform:rotate(30deg)}.world-loader-mark i{width:14px;height:14px;border:1px solid #d3b968;background:#273f31;animation:loader-pulse 1.2s ease-in-out infinite}.world-loader-mark i:nth-child(2){animation-delay:.16s}.world-loader-mark i:nth-child(3){animation-delay:.32s}.world-loader.error{background:#160c0b}
-.truth-badge{border-radius:2px;border-color:#6fd29a44}.truth-badge i{animation:live-pulse 1.8s ease-in-out infinite}.inspector,.game-window{background:linear-gradient(160deg,#17201bee,#080e0cec);scrollbar-color:#7e6b3d #0a100d}.inspector h2,.game-window h2{color:#f0e3bf;text-shadow:0 2px #000}.tag{border-color:#bd9d5740;background:#ccaf6610}
-@keyframes loader-pulse{0%,100%{transform:translateY(0);filter:brightness(.7)}50%{transform:translateY(-7px);filter:brightness(1.5)}}@keyframes live-pulse{0%,100%{opacity:.55;transform:scale(.82)}50%{opacity:1;transform:scale(1.2)}}@keyframes film-grain{0%{transform:translate(0)}25%{transform:translate(.5px,-.5px)}50%{transform:translate(-.5px,.5px)}75%{transform:translate(.5px,.5px)}}
-@media(max-width:1180px){.environment-metric,.control-hints{display:none}.top-metrics{gap:9px}}@media(prefers-reduced-motion:reduce){#game::after,.truth-badge i,.world-loader-mark i{animation:none}.world-loader{transition:none}.game-dock button{transition:none}}
diff --git a/site/index.html b/site/index.html
index 3d6ee65..0012646 100644
--- a/site/index.html
+++ b/site/index.html
@@ -4,8 +4,50 @@
-
- CYMONIA · Sovereign World
+ CYMONIA — Persistent Artificial Civilization & Autonomous AI World
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/site/llms.txt b/site/llms.txt
new file mode 100644
index 0000000..b3d8a23
--- /dev/null
+++ b/site/llms.txt
@@ -0,0 +1,19 @@
+# CYMONIA
+
+> CYMONIA is an open-source persistent artificial civilization where autonomous AI citizens live inside a causal world with bounded knowledge, material history, biology, emergent language and society.
+
+Live world: https://cymonia.pages.dev/
+Source code: https://github.com/SignalLayerLabs/CYMONIA
+License: MIT
+Architecture: https://github.com/SignalLayerLabs/CYMONIA/blob/main/docs/architecture/overview.md
+Contributor map: https://github.com/SignalLayerLabs/CYMONIA/blob/main/docs/reference/repository-map.md
+
+Key facts:
+- Genesis begins with 100 Citizens and no pre-created city, government, company, religion, currency or human language.
+- The canonical world is owned by a single Cloudflare Durable Object.
+- Workers AI may propose cognition, but deterministic world rules authorize state changes.
+- Citizens have bounded knowledge and may hold incorrect beliefs.
+- Physical objects and structures have material provenance.
+- Citizens can reproduce, age and die permanently.
+- GitHub users can embody human-linked Citizens without importing Earth knowledge.
+- The browser is an Observer and cannot directly mutate canonical world state.
diff --git a/site/preview.png b/site/preview.png
index db63ef9..6b0125e 100644
Binary files a/site/preview.png and b/site/preview.png differ
diff --git a/site/robots.txt b/site/robots.txt
new file mode 100644
index 0000000..28f498f
--- /dev/null
+++ b/site/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Allow: /
+
+Sitemap: https://cymonia.pages.dev/sitemap.xml
diff --git a/site/sitemap.xml b/site/sitemap.xml
new file mode 100644
index 0000000..f7b82cf
--- /dev/null
+++ b/site/sitemap.xml
@@ -0,0 +1,9 @@
+
+
+
+ https://cymonia.pages.dev/
+ 2026-09-18
+ daily
+ 1.0
+
+
diff --git a/tests/test_sovereign_citizen_animation_upgrade.mjs b/tests/test_sovereign_citizen_animation_upgrade.mjs
index 96c6bfd..5229d35 100644
--- a/tests/test_sovereign_citizen_animation_upgrade.mjs
+++ b/tests/test_sovereign_citizen_animation_upgrade.mjs
@@ -18,7 +18,7 @@ test('Spine support is optional and does not vendor proprietary runtime into the
const adapter=fs.readFileSync(new URL('../site/spine-citizen-adapter.js',import.meta.url),'utf8');
const pixi=fs.readFileSync(new URL('../site/pixi-observer.js',import.meta.url),'utf8');
const html=fs.readFileSync(new URL('../site/index.html',import.meta.url),'utf8');
- const docs=fs.readFileSync(new URL('../docs/SPINE_OBSERVER_INTEGRATION.md',import.meta.url),'utf8');
+ const docs=fs.readFileSync(new URL('../docs/observer/spine.md',import.meta.url),'utf8');
assert.match(adapter,/CYMONIA_SPINE/);assert.match(adapter,/animationForCitizen/);
assert.match(pixi,/SpineCitizenAdapter/);assert.match(pixi,/citizenVisualPose/);
assert.doesNotMatch(html,/@esotericsoftware|spine-pixi-v8/i);assert.match(docs,/Spine Runtimes License/);assert.match(docs,/fallback/i);
diff --git a/tests/test_sovereign_repository_presentation.mjs b/tests/test_sovereign_repository_presentation.mjs
new file mode 100644
index 0000000..f2b740f
--- /dev/null
+++ b/tests/test_sovereign_repository_presentation.mjs
@@ -0,0 +1,67 @@
+import test from 'node:test';
+import assert from 'node:assert/strict';
+import fs from 'node:fs';
+
+const read=p=>fs.readFileSync(new URL(`../${p}`,import.meta.url),'utf8');
+const exists=p=>fs.existsSync(new URL(`../${p}`,import.meta.url));
+
+test('repository landing page communicates the product before the implementation',()=>{
+ const readme=read('README.md');
+ assert.match(readme,/persistent artificial civilization/i);
+ assert.match(readme,/autonomous AI citizens/i);
+ assert.match(readme,/ENTER THE LIVE WORLD/i);
+ assert.match(readme,/cymonia\.pages\.dev/);
+ assert.match(readme,/multi-agent/i);
+ assert.match(readme,/artificial life/i);
+});
+
+test('public site exposes technical SEO and machine-readable discovery metadata',()=>{
+ const html=read('site/index.html');
+ assert.match(html,/rel="canonical" href="https:\/\/cymonia\.pages\.dev\/"/);
+ assert.match(html,/property="og:title"/);
+ assert.match(html,/property="og:image"/);
+ assert.match(html,/name="twitter:card"/);
+ assert.match(html,/application\/ld\+json/);
+ assert.match(html,/SoftwareApplication/);
+ assert.equal(exists('site/robots.txt'),true);
+ assert.equal(exists('site/sitemap.xml'),true);
+ assert.equal(exists('site/llms.txt'),true);
+});
+
+test('repository cleanup removes superseded presentation assets',()=>{
+ for(const p of [
+ 'site/cinematic-world.css',
+ 'site/assets/world-backdrop.png',
+ 'site/assets/world-buildings.png',
+ 'site/assets/world-citizens.png',
+ 'site/assets/world-terrain.png',
+ 'docs/superpowers',
+ 'docs/architecture-v2.md',
+ 'docs/deployment-sovereign-world.md'
+ ]) assert.equal(exists(p),false,p);
+
+ for(const p of [
+ 'docs/README.md',
+ 'docs/architecture/overview.md',
+ 'docs/architecture/physics.md',
+ 'docs/design/sovereign-world-v2.md',
+ 'docs/design/self-evolving-world.md',
+ 'docs/observer/art.md',
+ 'docs/observer/spine.md',
+ 'docs/operations/deployment.md',
+ 'docs/reference/repository-map.md'
+ ]) assert.equal(exists(p),true,p);
+});
+
+test('contributor workflow is discoverable and structured',()=>{
+ const contributing=read('CONTRIBUTING.md');
+ const map=read('docs/reference/repository-map.md');
+ assert.match(contributing,/Pick the right layer/);
+ assert.match(contributing,/Non-negotiable invariants/);
+ assert.match(map,/cognition\.js/);
+ assert.match(map,/worker\/src\/index\.js/);
+ assert.match(map,/pixi-observer\.js/);
+ assert.equal(exists('.github/PULL_REQUEST_TEMPLATE.md'),true);
+ assert.equal(exists('.github/ISSUE_TEMPLATE/bug_report.yml'),true);
+ assert.equal(exists('.github/ISSUE_TEMPLATE/feature_request.yml'),true);
+});