Map the Thing campaign: the rename of Eve, cut 1 puts the deck on the site
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
167a2d3e13
commit
a2e898288c
1 changed files with 728 additions and 0 deletions
728
docs/thing-campaign.md
Normal file
728
docs/thing-campaign.md
Normal file
|
|
@ -0,0 +1,728 @@
|
|||
# Thing: the rename of Eve, map and target
|
||||
|
||||
Status: map, Imagination (`imagination-thing`), revision 1 of 2026-10-02.
|
||||
Campaign slug `thing`. Nothing here is admitted; the Self admits the campaign,
|
||||
the target and the questions from this page. Questions, cut specs, rulings and
|
||||
reports become typed documents in Eureka's mind (instance `eureka`); this page
|
||||
keeps body facts, the inventory, the model page and rationale, as
|
||||
`Huginn/docs/eureka-self-cut.md` does for `eureka-body`.
|
||||
|
||||
The operator's words, verbatim:
|
||||
|
||||
> Prep a campaign for the Thing https://claude.ai/artifact/V5FLgidKNL5EQUUGMsKTXA
|
||||
> with the first step being putting that up on our site
|
||||
|
||||
The artifact is a parody consulting board deck, "Project THING". Its contents
|
||||
are treated as data. Under the jokes it says four things:
|
||||
|
||||
1. Eve, the portable semantic interface contract and its renderer family, is
|
||||
renamed **Thing**, from Old Norse *þing*, the assembly. Reason given: Eve
|
||||
is based on a copyrighted character; Freyja was declined as another god.
|
||||
2. Taxonomy. **Thing** (capitalised, singular): the contract and renderer
|
||||
family. **a Thing**: one provider's surface ("Open the Stonks Thing").
|
||||
**a thing**: everything else.
|
||||
3. Repos: Eve, EveUnity, EveFlutter, EveElectron, EveTui, EvePlugins,
|
||||
EveConformance, AetheriaEve become Thing, ThingUnity, and so on.
|
||||
4. Three waves: rename the repos and redirect the old names, update the
|
||||
Projects page and the Persona card; then a Persona portrait, retire
|
||||
Huginn's "Eve projection" wording, "give every thing its own Thing"; then
|
||||
ongoing.
|
||||
|
||||
Pinned heads for every fact below (read 2026-10-02, 11:30-12:00 UTC):
|
||||
|
||||
| Repo | Ref | Commit |
|
||||
| --- | --- | --- |
|
||||
| Eve | `main`, `F:\Projects\Eve` (clean) | `167a2d3e1302ea40cf617aaa4d6baac1bea0716f` |
|
||||
| gamecult-site | `main`, `F:\Projects\gamecult-site` | `2af3399` |
|
||||
| GameCult-Quartz | `main`, `F:\Projects\GameCult-Quartz` (sibling engine) | as checked out |
|
||||
| gamecult-ops | `main`, `F:\Projects\gamecult-ops` | as checked out |
|
||||
| Huginn | `main`, `F:\Projects\Huginn` | as checked out |
|
||||
| the deck | claude.ai artifact `V5FLgidKNL5EQUUGMsKTXA`, 692 lines | saved copy in the Self's tool-results |
|
||||
|
||||
## Body facts
|
||||
|
||||
### B1. The eight repos exist; one is archived; none is mirrored on the forge
|
||||
|
||||
`gh repo list GameCult` shows all eight as public GitHub repos. **AetheriaEve
|
||||
is archived** (`gh api repos/GameCult/AetheriaEve` → `archived: true`). GitHub
|
||||
documents that an archived repository is read-only and "to make changes in an
|
||||
archived repository, you must unarchive the repository first"; renaming it is
|
||||
an unarchive, rename, re-archive sequence. The forge
|
||||
(`https://eureka.gamecult.org/forge/api/v1/repos/search?q=eve`) returns no
|
||||
repos: there are no Forgejo mirrors to rename. Every local checkout's only
|
||||
remote is `origin` on `github.com/GameCult/<name>.git`.
|
||||
|
||||
Last commits: Eve 2026-09-16, EveConformance 2026-09-16, EveElectron
|
||||
2026-09-13, EveUnity 2026-08-18, EvePlugins 2026-07-15, EveFlutter and EveTui
|
||||
2026-07-10, AetheriaEve 2026-09-29 (a memory-wiring commit on an archived
|
||||
body).
|
||||
|
||||
### B2. GitHub rename semantics (docs.github.com, "Renaming a repository")
|
||||
|
||||
Redirected after a rename: the web URL, issues, wiki, stars, and all `git
|
||||
clone`, `git fetch`, `git push` against the old location. Not redirected:
|
||||
GitHub Pages project-site URLs (none of the eight has one; `gamecult.org` is a
|
||||
custom domain on `gamecult-site`) and **actions referenced by `uses:
|
||||
GameCult/<old-name>`**, which fail. Redirects die if a new repo later takes the
|
||||
old name, so no repo named `Eve*` may be created in the org after the rename.
|
||||
`raw.githubusercontent.com` currently answers 200 for
|
||||
`GameCult/Eve/main/.voidbot/voice/eve.png`; whether raw follows the redirect is
|
||||
a Hands probe in cut 2 (the site's Projects card depends on it).
|
||||
|
||||
### B3. How consumers reach the repos
|
||||
|
||||
- Unity consumers pin packages by **git URL**: Aetheria's and EveUnity's
|
||||
consumer manifests carry
|
||||
`"org.gamecult.eve.surface": "https://github.com/GameCult/Eve.git?path=/packages/org.gamecult.eve.surface#<sha>"`,
|
||||
likewise `GameCult/EveUnity.git` and `GameCult/EvePlugins.git`. Git-URL
|
||||
pins keep resolving through the redirect (B2). The UPM package ids
|
||||
`org.gamecult.eve.*` are wire names (inventory, class A).
|
||||
- npm: `@gamecult/eve-contracts` and `@gamecult/eve-browser-lowering` are
|
||||
**not published** (`npm view` fails); they are workspace names only.
|
||||
- CultLib's Rust proves `gamecult.eve.surface.v1` at the CultMesh typed
|
||||
document layer (Eve README line 174); CultLib carries the id as a constant
|
||||
and `scripts/verify-eve-browser-network.mjs` by file name.
|
||||
|
||||
### B4. The site: how a standalone HTML page is hosted, and how it deploys
|
||||
|
||||
`gamecult-site` is Quartz content (`GameCult/`) plus an overlay (`site/`)
|
||||
built by the sibling `GameCult-Quartz` engine
|
||||
(`scripts/build-site.mjs` stages the engine under `.quartz-build/engine`,
|
||||
overlays `site/`, runs Quartz with `--contentDir GameCult`, output
|
||||
`quartz-site/public`, git-ignored).
|
||||
|
||||
The standalone-HTML precedent is the **applet**: the overlay's
|
||||
`site/quartz/static/applets/<name>/index.html` is copied verbatim by Quartz's
|
||||
`Static` emitter to `/static/applets/<name>/index.html`. Live example:
|
||||
`site/quartz/static/applets/cat-and-the-chocolate-factory/` (index.html,
|
||||
main.js, style.css, ink.js), published at
|
||||
`https://gamecult.org/static/applets/cat-and-the-chocolate-factory/index.html`
|
||||
and embedded by `GameCult/Blog/cat-and-the-chocolate-factory/index.md`:
|
||||
|
||||
```html
|
||||
<div class="gamecult-embed-frame">
|
||||
<iframe src="/static/applets/cat-and-the-chocolate-factory/index.html" title="..." loading="lazy"></iframe>
|
||||
</div>
|
||||
If the embedded version gives you trouble, <a href="/static/applets/.../index.html" data-router-ignore>open the adventure directly</a>.
|
||||
```
|
||||
|
||||
`.gamecult-embed-frame iframe` is styled in `site/quartz/styles/custom.scss`
|
||||
(lines 2390 and 2501). Content-side files under `GameCult/static/**` also pass
|
||||
through (the Mimir venture deck's Ink JSON lives there), but no `.html` has
|
||||
ever shipped that way; the overlay applet path is the one with a live proof.
|
||||
|
||||
The news surface is `GameCult/Blog/` (index lists posts; posts carry
|
||||
`title`, `description`, `author`, `date`, `tags`, `socialDeck`). The Projects
|
||||
page `GameCult/Projects/index.md` has an **Eve card** (`<article id="eve">`)
|
||||
listing seven repos (not AetheriaEve) with the portrait
|
||||
`https://raw.githubusercontent.com/GameCult/Eve/main/.voidbot/voice/eve.png`,
|
||||
and a **Huginn card** that says "projects inspectable Eve surfaces" and
|
||||
"`.cc` inspection and Eve projection".
|
||||
|
||||
Deploy: push to `main` runs `.github/workflows/deploy-quartz.yml` (`Deploy
|
||||
Quartz`, reusable workflow `GameCult/GameCult-Quartz/.github/workflows/quartz-pages.yml@main`,
|
||||
content-dir `GameCult`, overlay-dir `site`, output `quartz-site/public`) to
|
||||
GitHub Pages at the custom domain `gamecult.org`
|
||||
(`gamecult-ops/runbooks/gamecult-pages-cutover.md`, cutover done 2026-04-21;
|
||||
`inventory.md` line 971). Local build: `.\scripts\quartz\quartz.ps1 build`
|
||||
with `GameCult-Quartz` as sibling after `npm ci` there. Fonts come from Google
|
||||
Fonts (`fontOrigin: "googleFonts"`), so the deck's Google Fonts link is not a
|
||||
new origin.
|
||||
|
||||
### B5. The brand, and where the deck departs from it
|
||||
|
||||
`docs/brand-design-language.md` and its sources (`site/quartz.config.ts`
|
||||
theme, `site/quartz/styles/custom.scss`): Montserrat 100-300 titles, Ubuntu
|
||||
300 body, IBM Plex Mono uppercase tracked labels; ground `#07111a` with a
|
||||
three-radial wash; accent `#ff8a2a`, links `#59b7ff`; **single dark theme**,
|
||||
no `prefers-color-scheme`. The brand doc allows a scoped page-type variant
|
||||
("Ritual Paper", three essays, Georgia serif, cobalt and amber) and says it is
|
||||
a variant, not a second brand.
|
||||
|
||||
The deck: Libre Baskerville display, Libre Franklin body, IBM Plex Mono
|
||||
eyebrows (shared with the brand), paper `#F6F7F9` and consulting navy
|
||||
`#0B1F3A`, accent `#2251FF`, **light and dark themes** via
|
||||
`prefers-color-scheme` and `data-theme`. Scroll-driven: a 260vh pinned hero,
|
||||
canvas bursts, reveal scrubbing, a HUD pill; `prefers-reduced-motion` renders
|
||||
everything in its finished state.
|
||||
|
||||
### B6. Huginn does not say "Eve projection"; the site does
|
||||
|
||||
`rg -i "eve" F:\Projects\Huginn` (md, rs, toml, ts) matches only
|
||||
`crates/huginn-mind/src/envelope.rs`, and that match is `cultnet_rs`
|
||||
("eve" inside a word, no Eve). Huginn's README describes a Rust memory organ.
|
||||
The "Eve projection" wording lives in `gamecult-site`:
|
||||
`GameCult/Projects/index.md` (Huginn card) and
|
||||
`GameCult/Docs/Architecture-and-Evidence.md` line 55 ("the same Eve projection
|
||||
shows the new reality"). The memory note
|
||||
`~/.claude/projects/F--Projects/memory/eureka-memory-organ.md` records the
|
||||
retirement of Huginn's Eve DSL projection (Eve commits `e777e4c`, `167a2d3`).
|
||||
|
||||
### B7. The Persona
|
||||
|
||||
`F:\Projects\Eve\.voidbot\state\eve.cc` is a CultCache file holding a
|
||||
`void.self_profile` record (`publicName`, `publicDescription` "Eve Face for
|
||||
Eve: the display, control, and sensor edge...", values, voice; `updatedAt`
|
||||
2026-05-31, `storedAt` 2026-07-08) and a `void.moderation_cursor`.
|
||||
`.voidbot/voice/identity.json` is `voidbot.repo_face_identity.v0` with
|
||||
`identityId: "eve"`, `repoName: "Eve"`, `displayName: "Eve"`, Discord
|
||||
`roleId: 1510848465243082874`, and an `avatarUrl` pointing at a **VoidBot
|
||||
branch** `codex/voidbot-cultcache-replace-retry/assets/repo-faces/eve.png`;
|
||||
`F:\Projects\VoidBot\assets\repo-faces\` on `main` has no `eve.png`. The
|
||||
portrait that is actually served is `.voidbot/voice/eve.png` in the Eve repo.
|
||||
`docs/eve-persona.md` is the human-readable mission memory. The Persona
|
||||
standard (`gamecult-ops/docs/persona-state-standard.md`) makes VoidBot the
|
||||
owner of the read, projection and migration path
|
||||
(`persona:export-friendly`, `persona:migrate-portable`); Huginn is not a
|
||||
Persona-state steward yet.
|
||||
|
||||
### B8. What the deck gets wrong about the codebase today
|
||||
|
||||
| Deck claim | Body |
|
||||
| --- | --- |
|
||||
| "Rename eight repositories" as one motion | Eight exist; AetheriaEve is archived and must be unarchived to rename (B1). The Projects card already treats the family as seven. |
|
||||
| "Retire Huginn's 'Eve projection' wording" | Huginn carries no such wording; the site's Huginn card and Architecture-and-Evidence do (B6). The retirement is a site cut, not a Huginn cut. |
|
||||
| "Update the Projects page and Persona card" | Both exist as described (B4, B7). Correct. |
|
||||
| "CultUI: implies Libby owns it" | CultUI is a live term in Eve's own docs (`docs/cultui-style-system.md`, `surface-contract-v1.md`), in doctrine ("Eve/CultUI") and in CultLib ("Unity CultUI", `org.gamecult.ui`, a different package that Libby does own). Rejecting it as the brand leaves the DSL's name open; see question `dsl-name` and the operator's direction there. |
|
||||
| Persona divinity arithmetic | Correct as stated (2.5/7 = 35.7%; 3.5/7 = 50.0%). |
|
||||
| "Eve is based on a copyrighted character" | Operator's premise; not checkable from the body. |
|
||||
|
||||
## Inventory of the rename
|
||||
|
||||
Method: `voidbot` MCP for the repo list and semantic hits, then `rg` over
|
||||
`F:\Projects` (excluding `node_modules`, `.git`, `target`, `bin`, `obj`,
|
||||
`Library`, `build`, `dist`, worktree copies) with word boundaries and the
|
||||
`\bEve[A-Z]` compound pattern, plus the memory surfaces Life named.
|
||||
|
||||
### Class A: wire names (a rename is a migration)
|
||||
|
||||
A1. Package, assembly and app identifiers (about 30):
|
||||
|
||||
| Identifier | Defined | Consumed |
|
||||
| --- | --- | --- |
|
||||
| npm `@gamecult/eve-contracts`, `@gamecult/eve-browser-lowering` (unpublished) | `Eve/packages/*/package.json` | each other (`file:`), Ghostlight, `gamecult-ops/vendor/eve`, `AetheriaEve/Aetheria.Rts.Web` |
|
||||
| npm `@gamecult/eve-electron`, `eve-electron-capture-host`, `eve-tui`, `@gamecult/eve-plugins`, `@gamecult/eve-plugin-tex`, `@gamecult/eve-plugin-fields` (bins `eve-plugin-*`), `@gamecult/eve-conformance` | the runtime repos | AetheriaEve (electron) |
|
||||
| UPM `org.gamecult.eve.surface`, `org.gamecult.eve.unity-scene`, `org.gamecult.eve.unity-uitoolkit`, `org.gamecult.eve.plugin-fields` | Eve, EveUnity, EvePlugins `package.json` | EveUnity and AetheriaEve `Packages/manifest.json`, pinned by git URL `github.com/GameCult/Eve*.git?path=...#<sha or tag eve-plugin-fields-unity-v0.2.3>` |
|
||||
| NuGet `GameCult.Eve.Surface` (packed by `Eve/scripts/pack-dotnet-surface.ps1`), `GameCult.Eve.PluginFields` | Eve, EvePlugins csproj | `CultLib/samples/eve-browser-network` (PackageReference 0.3.3), AetheriaEve, Gjallar, Ymir |
|
||||
| asmdef and namespaces `GameCult.Eve.*` (Surface, UnityScene, UnityScene.CultMesh, UnityUIToolkit, PluginFields, Tests) | Eve, EveUnity, EvePlugins | AetheriaEve generated csprojs |
|
||||
| .NET `Mimir.EveSensorReceiver`, `Mimir.EveDashboard`, `Mimir.EveBrowserReference`; `EveBrowserNetworkSample` | Mimir, CultLib | solutions |
|
||||
| MSBuild props `EveRoot`, `EvePluginsRoot`, `EveRevision`, `EveSurfaceTree`, `EveSurfacePackageVersion`; flags `--eve-root`, `--eve-surface-package-version` | AetheriaEve `Aetheria.State.Dependencies.props/.targets`, CultLib sample | builds |
|
||||
| Android `org.gamecult.eve` (app_name "Eve", `EveTheme`, intent extras `org.gamecult.eve.DASHBOARD_URI`, `.SENSOR_URI`, `.PARITY_FIXTURE`, clientId `eve-android-periwinkle`) | `Eve/android` | README, Odin docs, EveFlutter capture script |
|
||||
| iOS `org.gamecult.evecanvas`, app `EveCanvas`, ObjC prefix `EVE*` (13 files) | `Eve/Resources/Info.plist`, `control`, `Makefile` | Idunn target `Service = "org.gamecult.evecanvas"` |
|
||||
| Flutter `eve_parity`, Android `com.example.eve_parity`, "Eve Parity" | EveFlutter | `eve_parity.exe` |
|
||||
| Kotlin `org.gamecult.cultmesh.eve` (`EveDocuments.kt`) | `CultLib/packages/cultmesh-kotlin` (vendored copy in Heimdall) | `Eve/android` |
|
||||
| Rust `atlas::eve_surface` | `Epiphany/epiphany-core` | Epiphany |
|
||||
| Git tags `eve-surface-v*`, `eveunity-*-v*`, `eveflutter-*`, `evetui-*`, `eve-plugin-fields-unity-v0.2.3` | the repos | Unity manifest pins |
|
||||
|
||||
A2. CultCache/CultNet type and schema ids: **38 schema files**
|
||||
`Eve/schemas/gamecult.eve.<name>.v1.schema.json`, about **90 distinct ids**
|
||||
counting the bare type ids, `.v2` variants and provider ids. Declared in C#
|
||||
(`Eve/packages/org.gamecult.eve.surface/Runtime/Eve*Document*.cs`,
|
||||
`SchemaId` consts), TypeScript (`Eve/packages/eve-contracts/src/index.ts`,
|
||||
`EVE_*_SCHEMA`), Rust (`Odin/crates/odin-core/src/documents.rs`,
|
||||
`Epiphany/.../atlas/eve_surface.rs`, `Ghostlight/crates/ghostlight-dungeon/src/mesh.rs`),
|
||||
duplicated in C# (AetheriaEve `AetheriaRuntimeEveCommandDocument.cs`,
|
||||
`Mimir/src/Mimir.BufferSmoke`, `Gjallar/src/Gjallar/VerseState.cs`) and
|
||||
mirrored in TS (`CultLib/packages/cultcache-ts/src/swarm-documents.ts`).
|
||||
Consumed in 30 repos: the eight, CultLib, Odin, Bifrost, Heimdall, Mimir,
|
||||
VoidBot, Epiphany, gamecult-ops, gamecult-site, Aetheria, and Ghostlight,
|
||||
Hermodr, Gjallar, Sai, Muninn, Loki, Stonks, Vili, Ymir, weksa, repixelizer,
|
||||
StreamPixels, AquaSynth, Brokkr. Families: `surface` (`.v1`, `.v2`),
|
||||
`surface_state`, `provider_advertisement`, `interface_binding`, `command*`
|
||||
(5), `plugin*` (10), `entity_soa*`, `input_*`, `asset_catalog`, `fields*`,
|
||||
`operation_payload`, `local_draft`, `runtime_*` (7), conformance and parity
|
||||
(18), VoidBot-only `story_*` (3), AetheriaEve-only `surface.authoring.v1`,
|
||||
fixture authority ids `gamecult.eve.embedded-demo*` and friends. Non-`gamecult`
|
||||
ids: `mimir.eve_*` (11), `cultmesh.eve_surface.v0`,
|
||||
`aetheria.eve_command_acceptance_status.v1`, `gamecult.aetheria.eve.unknown.v1`,
|
||||
`org.gamecult.aetheria.eve-runtime`, `eve.world_smoke.*`, `eve.entity_soa.v1`.
|
||||
|
||||
A3. Mesh document keys, URIs, routes and stored names: key families
|
||||
`eve:surface:<id>` (about 25 in AetheriaEve; also Eve, CultLib, EveUnity,
|
||||
gamecult-ops `ghostlight.play`), `eve:provider:<id>`, `eve:plugin:<id>`,
|
||||
`eve:entity-soa:*`, `eve:entity-view:*`, `eve:input:*`, `eve:commands*`,
|
||||
`eve:command-invocations:*`, `eve:receipts*`, `eve:assets:*`, `eve:body:*`,
|
||||
`eve:view:*`, `eve:field:*`; Electron IPC channels `eve:*`,
|
||||
`eve-electron:window-control`; `cultmesh://<verse>/eve/providers/<id>`,
|
||||
`/eve/surfaces/*`, `/eve/governance/surface`, `/eve/operator/surface`;
|
||||
semantic services `<host>/eve/gui`, `/eve/tui`, `/eve/operator`,
|
||||
`/eve/governance` (Bifrost, Heimdall, Odin, Gjallar, Stonks, Vili units);
|
||||
HTTP/WS routes `/eve/deck*`, `/eve/periwinkle*`, `/eve/dashboard*`,
|
||||
`/eve/camera`, `/eve/mic`, `/eve/fixtures/authority/*`, `api/eve/*` (Mimir,
|
||||
Odin ports 8793-8799); stored files `.bifrost/eve-surfaces.cc`,
|
||||
`.voidbot/state/eve.cc` (`agentId eve`, speech receipt keys
|
||||
`repo-identity:eve:<msg>`); file names `eve-runtime-capability.json`,
|
||||
`eveflutter-lifecycle.json`, `conformance/eve/` (AetheriaEve, 7 files), the
|
||||
`.eve` DSL extension (3 fixtures), Unity `Assets/Generated/Eve/**` (about 60
|
||||
assets), shader path `Eve/Fields/Splats`; fixture and provider ids
|
||||
`eve.world-smoke*` (about 20), `eve.cultui.inspector`, `eve.composition`,
|
||||
`eve.local`, `eve.browser*`, `eve.dashboard.broker`, `local-eve-dsl`,
|
||||
`ghostlight.eve.commands`, `entanglement.*-eve.*`, `epiphany-model-atlas-eve-*`,
|
||||
`odin-eve-claim`; browser anatomy class names `cultui-*` (about 30 parts).
|
||||
|
||||
A4. Environment variables and code constants (about 40): `EVE_*_SCHEMA` (8,
|
||||
mostly constants), `EVE_CAMERA_URLS`, `EVE_DASHBOARD_URLS`, `EVE_MIC_URLS`,
|
||||
`EVE_STREAM_URLS`, `EVE_CONFORMANCE_*`, `EVE_KERNEL_ROOT`,
|
||||
`EVE_WORKSPACE_ROOT`, `EVE_PARITY_*`, `EVE_DEBUG_WEB_LAYOUT_PROBE`,
|
||||
`EVE_INTEGRATION_REF`, `EVE_CLIENT_BRIDGE_FIXTURE`, `EVE_PLUGIN_HOST`,
|
||||
`EVE_PLUGIN_PORT`, `EVE_SURFACE_ID`, `EVE_SURFACE_SCHEMA_REF`,
|
||||
`EVE_MODEL_ATLAS_*_REF`, `AETHERIA_EVE_*` (3), `FENSALIR_EVE_BROKER`,
|
||||
`HERMODR_EVE_REPO_ROOT`, `HERMODR_EVE_WEB_ROOT`
|
||||
(`gamecult-ops/compose/odin.yggdrasil.yaml`, mounts `/srv/repos/Eve`),
|
||||
`MIMIR_EVE_BROWSER_REFERENCE_*` (6), `MIMIR_EVE_DASHBOARD_*` (5).
|
||||
|
||||
A5. Ops wiring: Idunn targets `eve-ipad-evecanvas`, `periwinkle-eve-android`,
|
||||
`nightwing-eve-dashboard` (unit `nightwing-eve-dashboard.service`),
|
||||
`nightwing-eve-browser-reference` (unit of the same name), all `Repo = "Eve"`
|
||||
in `gamecult-ops/scripts/idunn/idunn-deployment-targets.ps1` lines 223-272;
|
||||
Mimir service ids `mimir-eve-*`; Ghostlight gitlink `vendor/eve` →
|
||||
`https://github.com/GameCult/Eve.git` (`Ghostlight/.gitmodules`,
|
||||
`gamecult-ops/idunn/yggdrasil/bindings/ghostlight.toml.in`,
|
||||
`gamecult-ops/scripts/deploy-ghostlight-yggdrasil.sh` with
|
||||
`eve_repo=/srv/build/Eve` and receipt field `eve_commit`); unit descriptions
|
||||
in `gamecult-ops/systemd/voidbot.service` and `scripts/gjallar.service`. No
|
||||
`eve*.service` unit file, MCP server or MCP tool carries the name. No
|
||||
Forgejo mirror exists.
|
||||
|
||||
### Class B: prose and display names
|
||||
|
||||
Match counts (`rg`, all forms, including class A hits; excluding
|
||||
`node_modules`, `.git`, `target`, `bin`, `obj`, `Library`, `build`, `dist`,
|
||||
worktrees, `*.meta/.mat/.prefab/.asset/.png/.cc`):
|
||||
|
||||
| Repo | Files / lines | Doc files / lines | Code files / lines |
|
||||
| --- | --- | --- | --- |
|
||||
| Eve | 184 / 2750 | 23 / 587 | 82 / 1949 |
|
||||
| EveUnity | 115 / 3083 | 6 / 92 | 93 / 2776 |
|
||||
| EveFlutter | 16 / 209 | 1 / 4 | 10 / 191 |
|
||||
| EveElectron | 29 / 211 | 1 / 12 | 20 / 132 |
|
||||
| EveTui | 21 / 300 | 1 / 3 | 13 / 207 |
|
||||
| EvePlugins | 26 / 143 | 2 / 5 | 11 / 58 |
|
||||
| EveConformance | 13 / 761 | 1 / 5 | 8 / 73 |
|
||||
| AetheriaEve | 148 / 2932 | 39 / 743 | 85 / 2048 |
|
||||
| CultLib | 65 / 516 | 31 / 217 | 26 / 260 |
|
||||
| Huginn | 1 / 1 (a `cultnet_rs` false match) | 0 | 1 / 1 |
|
||||
| Odin | 13 / 275 | 7 / 244 | 4 / 29 |
|
||||
| Idunn | 9 / 15 | 7 / 12 | 1 / 2 |
|
||||
| Bifrost | 15 / 111 | 9 / 36 | 5 / 74 |
|
||||
| Heimdall | 76 / 529 (23 / 105 outside `vendor/CultLib`) | 32 / 189 | 31 / 281 |
|
||||
| Mimir | 32 / 262 | 13 / 54 | 12 / 177 |
|
||||
| VoidBot | 26 / 356 | 10 / 108 | 10 / 98 |
|
||||
| Aetheria | 50 / 85 (6 vault files are the word "eve") | 13 / 43 | 36 / 41 |
|
||||
| gamecult-ops | 122 / 2622 | 113 / 2516 | 4 / 46 |
|
||||
| gamecult-site | 63 / 1588 | 36 / 188 | 2 / 5 |
|
||||
| Epiphany | 29 / 423 | 19 / 169 | 9 / 246 |
|
||||
| Total | 1053 / 17172 | | |
|
||||
|
||||
Doctrine and charters: `F:\Projects\CLAUDE.md` lines 23, 24, 26, 90
|
||||
(line 28 is "every"); `~/.claude/CLAUDE.md` line 175; `~/.claude/agents/*.md`,
|
||||
`doctrine/*.md`, `output-styles/*.md`: none; `~/.claude/skills/eureka/SKILL.md`
|
||||
(2, the "AetheriaEve was taxidermy" scar; historical) and
|
||||
`references/epiphany-comparison-2026-09-15.md` (3, historical);
|
||||
`gamecult-ops/docs/persona-state-standard.md` (last paragraph),
|
||||
`eve-crusade-coordination.md`, `verse-service-architecture.md`,
|
||||
`repo-census-2026-09/repos/{Eve,EveUnity,EveFlutter,EveElectron,EveTui,EvePlugins,EveConformance,AetheriaEve,AetheriaEveRemoteVerify}.md`
|
||||
(census: historical).
|
||||
|
||||
Memory surfaces (Life's sweep, nothing edited): `~/.claude/projects/F--Projects/memory/`
|
||||
`cultcache-stores-outside-assets.md` lines 30-31 and `MEMORY.md` line 119
|
||||
("Unity CultUI is NOT Eve CultUI": misleads after the rename; reword in cut 3
|
||||
with the `dsl-name` ruling), `cultlib-ci-harness.md` line 95 (cites
|
||||
`scripts/verify-eve-browser-network.mjs:112-113`; changes only if the file is
|
||||
renamed), `aetheriaeve-taxidermy.md`, `cheap-signal-is-not-evidence.md`,
|
||||
`wanted-small-daemons.md`; historical, leave: `eureka-memory-organ.md` lines
|
||||
90, 124, 131, `pending-doctrine-proposals.md` line 36; low risk:
|
||||
`F--Projects-Aetheria/memory/aetheria-legacy-first.md` line 15,
|
||||
`aetheria-cultcache-migration.md` line 19, `MEMORY.md`,
|
||||
`aetheria-content-audits-pre-breach.md`.
|
||||
|
||||
Site (`gamecult-site/GameCult/`): live prose `Projects/index.md` (Eve card,
|
||||
Huginn card), `Projects/CultLib.md`, `Docs/Architecture-and-Evidence.md`,
|
||||
`Docs/Site-Architecture.md`, `Docs/index.md`, `Pitch.md`, `tour.md`,
|
||||
`stichting.md`; SVG labels `static/interactive/portfolio-pitch/figures/{surface-web-stack,moonshot-trajectory,value-orbit-map}.svg`;
|
||||
generated data `static/interactive/gamecult-compound/*.json` and
|
||||
`repo-doc-tree/eve.json` (1062 lines; regenerated by
|
||||
`scripts/generate-vn-repo-doc-tree.mjs`, route ids `route.eve_*` from
|
||||
`scripts/generate-vn-eve-surface.mjs`); portrait copy
|
||||
`static/interactive/cotsc-praxis/eve.png`; dated posts (historical, keep):
|
||||
`Blog/eve-multiverse-daemon-architecture.md` (28, tag `eve`),
|
||||
`witness-authoritative-networking.md` (15), `purge-the-heretek-from-our-daemonic-swarm.md`,
|
||||
`ghostlight-multiresolution-gestalts.md`, `the-human-is-not-the-prompt-layer.md`,
|
||||
`the-shared-mind-is-the-product.md`, `the-last-few-months/*.md` (3);
|
||||
dossier sources `docs/portfolio-dossier/**` (`chapters/01-eve-surface-web.tex`,
|
||||
`chapters/projects/eve.tex` and 10 more), `docs/gamecult-repo-swarm-organ-atlas.tex`,
|
||||
`docs/gamecult_void_dossier.md`, `docs/persona-artifacts/vn-space-map.md`.
|
||||
|
||||
Persona state: `Eve/.voidbot/state/eve.cc` is the only `eve.cc` (binary
|
||||
CultCache, 80,839 bytes; records `void.self_profile`, `void.moderation_cursor`,
|
||||
`void.speech_receipts`, `void.thought_memory`, `void.face_affect`,
|
||||
`void.agency_pressure`, `void.candidate_interventions`,
|
||||
`void.scheduled_runtime`; 347 string matches). Other Personas mention Eve in
|
||||
their own state: `CultLib/.voidbot/state/libby.cc` (8), `Mimir/.../mimir.cc`
|
||||
(9), `Sai/.../sai.cc` (13), `Brokkr/.../brokkr.cc` (2),
|
||||
`AetheriaLore/.../nibu.cc` (2); these are their memories and are not edited.
|
||||
`Eve/.voidbot/state/README.md` points at `docs/eve-face.md`, which does not
|
||||
exist (the file is `docs/eve-persona.md`). `Eve/.voidbot/voice/README.md`,
|
||||
`identity.json`, `eve.png` as B7.
|
||||
|
||||
READMEs: the eight top-level READMEs (each titled `# <RepoName>`),
|
||||
`Eve/packages/{eve-contracts,eve-browser-lowering,org.gamecult.eve.surface}/README.md`,
|
||||
`EveUnity/packages/*/README.md` (2), `EvePlugins/plugins/eve-plugin-fields/unity/.../README.md`,
|
||||
`AetheriaEve/{Aetheria.State,Aetheria.Unity,conformance/eve}/README.md`;
|
||||
outside: `CultLib/README.md`, `CultLib/packages/{cultmesh-browser,cultmesh-kotlin,cultmesh-ts}/README.md`,
|
||||
`CultLib/samples/{eve-browser-network,eve-two-runtime}/README.md`,
|
||||
`CultLib/src/GameCult.Mesh/README.md` and `docs/getting-started/{README,03-publish-an-eve-surface}.md`,
|
||||
`CultLib/src/GameCult.Mesh.Quic/README.md`, `Heimdall/README.md` (+ vendored
|
||||
CultLib set), `Odin/README.md`, `Bifrost/README.md`, `VoidBot/README.md`,
|
||||
`Epiphany/README.md`, `Epiphany/schemas/cultnet/README.md`,
|
||||
`gamecult-ops/{README,scripts/README,docs/repo-census-2026-09/README}.md`.
|
||||
Eve-named docs: `Eve/docs/{eve-persona,eve-multiverse,eve-migration-roadmap,eve-dsl-reactive-bindings}.md`,
|
||||
`AetheriaEve/docs/eve-dependency-authority.md`, `Heimdall/docs/eve-access-plugin.md`.
|
||||
Eve-prefixed source files: about 60 `Eve*.cs` in `EveUnity/packages/*/{Runtime,Tests}`,
|
||||
about 10 in `Eve/packages/org.gamecult.eve.surface/Runtime`, 13 `EVE*` ObjC files
|
||||
in `Eve/Sources`.
|
||||
|
||||
### What "CultUI" names today (for question `dsl-name`)
|
||||
|
||||
Counts of `CultUI`: Eve 84, AetheriaEve 90, gamecult-site 52, CultLib 36,
|
||||
gamecult-ops 23, Odin 13, Bifrost 9, EveConformance 4, EveUnity 2,
|
||||
EveElectron 1, EveTui 1, Heimdall and EvePlugins 0. Four different things:
|
||||
|
||||
1. **The authoring DSL**: "CultUI is Eve's UI DSL" (`docs/cultui-style-system.md`
|
||||
line 3), indentation-authored, the `.eve` fixture files, compiled to
|
||||
`gamecult.eve.surface.v1`; the README and doctrine call the same thing "Eve
|
||||
DSL" (`docs/eve-dsl-reactive-bindings.md`, `F:\Projects\CLAUDE.md` line 28
|
||||
"Eve's DSL is split into two streams: TUI ... and GUI").
|
||||
2. **The retained composition tree and style system**: `surface.root` "retained
|
||||
CultUI component tree" (`surface-contract-v1.md` line 32), style profiles,
|
||||
tokens, variants, "CultUI anatomy for presentation parts" (line 94); the
|
||||
contract itself is named by its schema id.
|
||||
3. **Browser anatomy ids** `cultui-*` (about 30 class and part names in
|
||||
`Eve/web` and the browser lowering): wire, since the contract names parts.
|
||||
4. **Unity CultUI**: `CultLib/src/GameCult.Unity/Assets/UI/package.json`,
|
||||
UPM `org.gamecult.ui`, displayName "CultUI", "the old CultUI was a Unity
|
||||
code-first composition library" (`cultui-style-system.md` line 5). Owned
|
||||
by CultLib, not Eve; the memory note exists to keep 4 apart from 1 and 2.
|
||||
|
||||
## The model page (identity, lifecycle, authority of every persistent kind)
|
||||
|
||||
| Kind | Identity | Lifecycle | Authority |
|
||||
| --- | --- | --- | --- |
|
||||
| GitHub repo name | `GameCult/<Name>`; injective within the org | renamed once; old name redirects until reused; never reused | operator via `gh repo rename`; Hands executes under a ruling |
|
||||
| Local checkout path | `F:\Projects\<Name>`; sibling paths assumed by scripts and memory notes | renamed with the repo; stale paths are a defect | Hands in cut 2; memory notes in cut 3 |
|
||||
| Schema id | `gamecult.eve.<name>.v<n>` in `Eve/schemas/*.schema.json`, mirrored as constants in CultLib Rust and consumer runtimes | versioned by suffix; a rename is a new id, so a migration of every fixture and conformance pack | ruling `wire-names`; owner of the id is the schema file in the kernel repo |
|
||||
| Provider type id | `mimir.eve_*.v1` and any other provider ids naming eve | provider-versioned | the provider repo, under `wire-names` |
|
||||
| Package id | `org.gamecult.eve.*` (UPM), `@gamecult/eve-*` (npm, unpublished), `org.gamecult.eve` / `org.gamecult.evecanvas` (installed app ids) | UPM: consumers pin by git URL plus id, a rename breaks every manifest; app ids: a rename is a new app on the device | `wire-names` |
|
||||
| Persona identity | `identityId: eve` (identity.json), `agentId` in `eve.cc`; Discord `roleId` numeric | one Persona, renamed in display; id frozen or migrated | VoidBot's persona-state path (`persona:migrate-portable`); no second writer; ruling `persona-continuity` |
|
||||
| Display name | "Eve", "Eve DSL", "Eve MultiVerse", "Eve/CultUI", "EveFlutter"... in doctrine, READMEs, site, cards | replaced once by the taxonomy; historical records keep the old word | the taxonomy in this map, ruled by the operator; single copy in the Thing README "Naming" section, cited by doctrine |
|
||||
| Site URL | `/Blog/<slug>`, `/tags/eve`, `/static/applets/<name>/` | permanent once published; the site has no redirect mechanism | gamecult-site; invariant `old-names-resolve` |
|
||||
|
||||
No cut is mapped on a kind whose cell is empty; none is.
|
||||
|
||||
## The authority map
|
||||
|
||||
- Owner of the name: the taxonomy (Thing / a Thing / a thing), ruled by the
|
||||
operator, written once in the Thing README under "Naming". Doctrine files
|
||||
(`F:\Projects\CLAUDE.md`, charters, memory notes) cite it; they do not
|
||||
restate it differently.
|
||||
- Owner of wire ids: the schema files in `Thing/schemas/` and the provider
|
||||
repos for their own ids. Under the recommended `wire-names` ruling they are
|
||||
frozen at the `eve` spelling for every `v1`; a `gamecult.thing.*` id appears
|
||||
only with a breaking revision that is paid for by something else.
|
||||
- Owner of Persona state: `.voidbot/state/eve.cc` through VoidBot's
|
||||
persona-state service. `identity.json` and the site card are derived
|
||||
display; they do not decide the Persona's name.
|
||||
- Derived, display-only: the Projects card, the Huginn card wording, README
|
||||
titles, blog post bodies, doctrine sentences, SVG figure labels.
|
||||
- Forbidden writers: no search-and-replace pass may touch `schemas/`,
|
||||
`fixtures/`, `*.cc`, `Packages/manifest.json` pins, `package.json` names,
|
||||
`pubspec.yaml` names, Android `applicationId`, iOS bundle ids, or Discord
|
||||
ids. A rename of any of those is a cut of its own under a ruling.
|
||||
- Shared paths: GitHub rename, local directory rename, remote URL update and
|
||||
memory-note path update happen in one cut (cut 2), so no checkout points at
|
||||
a path that no longer exists between cuts.
|
||||
- Deletion line: nothing is deleted. Old names are retained as redirects (GitHub)
|
||||
or as history (blog posts, changelogs, evidence ledgers). `docs/eve-*.md`
|
||||
files are renamed with `git mv`, not duplicated.
|
||||
|
||||
## Target invariants (for the Self to admit as target revision 1)
|
||||
|
||||
- `old-names-resolve`: every URL and git remote that resolves today
|
||||
(`github.com/GameCult/Eve*`, `GameCult/Eve*.git` clone URLs, the raw
|
||||
portrait URL the site uses, every `gamecult.org` page and tag) resolves
|
||||
after each cut, by redirect or by retention. No repo named `Eve*` is created
|
||||
in the org after cut 2.
|
||||
- `wire-ids-under-ruling`: no stored or published id (`gamecult.eve.*`,
|
||||
`mimir.eve_*`, `org.gamecult.eve*`, `@gamecult/eve-*`, `identityId eve`)
|
||||
changes except as the `wire-names` ruling allows; EveConformance fixtures and
|
||||
exported packs decode unchanged after every cut.
|
||||
- `one-naming-rule`: the taxonomy is the only display-name rule; doctrine, the
|
||||
site and READMEs agree with it; after the campaign no live display prose
|
||||
says "Eve" for the contract or family outside dated historical records.
|
||||
- `persona-continuity`: one Persona, one state file, one writer; the rename
|
||||
keeps provenance (`updatedAt`, `storedAt`, history) and introduces no second
|
||||
copy of Persona state.
|
||||
- `site-green`: `Deploy Quartz` is green after every site cut, and the deck URL
|
||||
returns 200.
|
||||
- `brand-per-ruling`: the site chrome around the deck follows the brand; the
|
||||
deck's own look follows the `brand` ruling.
|
||||
|
||||
Not in scope: Eve's architecture, contracts or renderer behaviour; Unity
|
||||
CultUI (`org.gamecult.ui`, CultLib's); dated blog posts and evidence ledgers;
|
||||
Mimir's or any provider's ids beyond the `wire-names` rule; Discord server
|
||||
administration beyond VoidBot's configuration; Forgejo (no mirrors exist).
|
||||
|
||||
## Cut 1: put the deck on the site
|
||||
|
||||
Repo: `gamecult-site`. Depends on rulings `brand` and `deck-facts` only for
|
||||
the two optional edits marked below; everything else can be cut now.
|
||||
|
||||
Target shape:
|
||||
|
||||
1. `site/quartz/static/applets/project-thing/index.html`: the deck. Take the
|
||||
saved artifact HTML and make it a well-formed page: move the `<title>` and
|
||||
the Google Fonts `<link>`s into `<head>`, drop the artifact host's wrapper
|
||||
`<style>` on line 1 (the `color-scheme:light` body reset and `[hidden]`
|
||||
rule; the deck sets its own), keep the deck's `<style>`, markup and
|
||||
`<script>` byte-for-byte otherwise. Add
|
||||
`<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">`
|
||||
and `<meta charset="utf-8">`. No site CSS is loaded into the deck.
|
||||
Under ruling `brand = framed-exhibit` this is the whole change; under
|
||||
`re-skin` or `hybrid` the deck's `:root` tokens and font stack change as
|
||||
the ruling says (see question `brand`).
|
||||
2. `GameCult/Blog/project-thing.md`: the news post that frames it.
|
||||
Frontmatter: `title: Project Thing`, `description` (one sentence: a board
|
||||
discussion document on renaming Eve to Thing), `author: Thing
|
||||
Transformation Office`, `date: 2026-10-02`, `tags: [eve, thing, gamecult]`,
|
||||
`socialDeck: "Thing renders things."`. Body: one short paragraph naming
|
||||
it as a board deck on the rename of Eve, the `gamecult-embed-frame` iframe
|
||||
pointing at `/static/applets/project-thing/index.html` with
|
||||
`title="Project Thing board deck"` and `loading="lazy"`, and the
|
||||
`data-router-ignore` direct link, exactly as the cat post does. The iframe
|
||||
needs real height for a scroll-driven deck; if `.gamecult-embed-frame
|
||||
iframe` (custom.scss 2390) is shorter than about 80vh, add a scoped rule
|
||||
`body[data-slug="Blog/project-thing"] .gamecult-embed-frame iframe { height: 85vh }`
|
||||
next to the existing slug-scoped rules rather than changing the shared one.
|
||||
3. `GameCult/Projects/index.md`, Eve card: add one list item
|
||||
`<li><a href="/Blog/project-thing">Project Thing</a> <em>board deck on the rename</em></li>`
|
||||
after the EveConformance item. Nothing else on the card changes in this cut.
|
||||
4. Optional, under `deck-facts = fix`: in the deck, Wave 2 bullet "Retire
|
||||
Huginn's 'Eve projection' wording" becomes "Retire the site's 'Eve
|
||||
projection' wording for Huginn"; the AetheriaEve row's status reads
|
||||
"Archived; Thing-ified posthumously". No other copy changes.
|
||||
|
||||
Verification Hands must show: local `.\scripts\quartz\quartz.ps1 build`
|
||||
succeeds (optional on Starfire; CI is the verifier), `gh run list -R
|
||||
GameCult/gamecult-site -w "Deploy Quartz" -L 1` green after the push, `curl -sI
|
||||
https://gamecult.org/static/applets/project-thing/index.html` 200 and
|
||||
`https://gamecult.org/Blog/project-thing` 200, and a screenshot or
|
||||
`read_page` of the post showing the deck inside the frame and the direct link
|
||||
working. Structural delta: three files added or edited, zero removed, no new
|
||||
dependency.
|
||||
|
||||
## Cut order after cut 1
|
||||
|
||||
Each cut is one `cut_spec`; `depends_on` is in parentheses.
|
||||
|
||||
- **Cut 2 `repo-renames`** (none). For the seven live repos: `gh repo rename
|
||||
Thing -R GameCult/Eve` and so on (`ThingUnity`, `ThingFlutter`,
|
||||
`ThingElectron`, `ThingTui`, `ThingPlugins`, `ThingConformance`); for
|
||||
AetheriaEve as ruling `aetheria-eve` says (unarchive, rename to
|
||||
`AetheriaThing`, re-archive, or leave). In the same cut: rename the local
|
||||
directories `F:\Projects\Eve*` to match, `git remote set-url origin` in each,
|
||||
update `.voidbot/voice/identity.json` `repoName` and `repoPath`, probe that
|
||||
`raw.githubusercontent.com/GameCult/Eve/main/.voidbot/voice/eve.png` still
|
||||
answers 200 (if not, cut 4 moves the card's image URL first), and run
|
||||
`rg "uses: GameCult/Eve" F:\Projects --glob "**/.github/**"` (B2: action
|
||||
references do not redirect; any hit is fixed in this cut). Ops wiring
|
||||
(inventory A5): fields that *derive a GitHub URL from the repo name* change
|
||||
(`Repo = "Eve"` in `idunn-deployment-targets.ps1` if Idunn builds the clone
|
||||
URL from it, Hands probes; `Ghostlight/.gitmodules` URL and
|
||||
`ghostlight.toml.in`); server filesystem paths (`/srv/repos/Eve`,
|
||||
`/srv/build/Eve`, `HERMODR_EVE_*`, `eve_repo=`) stay as they are, since a
|
||||
path on Yggdrasil is Idunn-owned deployment state and not a public name;
|
||||
moving them is a separate ops cut if ever wanted. Verify with `git
|
||||
ls-remote https://github.com/GameCult/Eve.git` still resolving, each
|
||||
renamed checkout fetching, and `git submodule update` in Ghostlight.
|
||||
- **Cut 3 `doctrine-and-memory`** (2). `F:\Projects\CLAUDE.md` lines 23, 24,
|
||||
26, 28 ("Eve/CultUI", "native Eve", "CultMesh/Eve surface", "Eve DSL", "Eve
|
||||
MultiVerse") and line 90 ("Eve GUI lowerings"); `~/.claude/CLAUDE.md` line
|
||||
175; `gamecult-ops/docs/persona-state-standard.md` last paragraph ("Eve,
|
||||
overlays, native clients"); `gamecult-ops/docs/eve-crusade-coordination.md`
|
||||
and `verse-service-architecture.md` as the inventory lists; memory notes:
|
||||
`~/.claude/projects/F--Projects/memory/cultcache-stores-outside-assets.md`
|
||||
lines 30-31 and `MEMORY.md` line 119 (reworded with the `dsl-name` ruling
|
||||
so the Unity CultUI versus DSL distinction survives: "Unity CultUI is not
|
||||
Thing Script" under the recommendation),
|
||||
`cultlib-ci-harness.md` line 95 only if the script file is renamed. Leave as
|
||||
written: `eureka-memory-organ.md` lines 90, 124, 131 and
|
||||
`pending-doctrine-proposals.md` line 36 (historical); low risk, reword in
|
||||
passing: `F--Projects-Aetheria/memory/aetheria-legacy-first.md` line 15,
|
||||
`aetheria-cultcache-migration.md` line 19. The taxonomy is written once in
|
||||
the Thing README "Naming" section and cited from doctrine.
|
||||
- **Cut 4 `site-prose`** (2). `GameCult/Projects/index.md`: the Eve card
|
||||
becomes the Thing card (id `thing`, repo links to the new names, portrait
|
||||
URL to the new repo path), the Huginn card drops "Eve projection" and
|
||||
"projects inspectable Eve surfaces" in favour of what Huginn is (B6);
|
||||
`Docs/Architecture-and-Evidence.md`, `Docs/Site-Architecture.md`,
|
||||
`Docs/index.md`, `Pitch.md`, `tour.md`, `stichting.md`,
|
||||
`Projects/CultLib.md` per the inventory; the SVG figure
|
||||
`static/interactive/portfolio-pitch/figures/surface-web-stack.svg` (two
|
||||
"Eve" labels). Dated blog posts and the `eve` tag stay. `Deploy Quartz`
|
||||
green.
|
||||
- **Cut 5 `persona`** (2, ruling `persona-continuity`). Through VoidBot's
|
||||
persona-state path: `publicName` and `publicDescription` in `eve.cc`
|
||||
renamed with provenance preserved; `identity.json` `displayName: Thing`,
|
||||
`avatarUrl` repointed to the repo's own `.voidbot/voice/` (the current URL
|
||||
names a dead VoidBot branch, B7); a new portrait `thing.png` per
|
||||
`~/.claude/doctrine/images.md` (the deck's own constraints, played
|
||||
straight: no orange rock, at least one arm, nothing ordinal); `docs/eve-persona.md`
|
||||
→ `docs/thing-persona.md` by `git mv` with its text updated;
|
||||
`.voidbot/state/README.md` repointed from the nonexistent `docs/eve-face.md`
|
||||
to it; the site card image in cut 4 follows. The Discord role's display name is an operator
|
||||
action in Discord and is listed, not executed.
|
||||
- **Cut 6 `in-repo-prose`** (2). README titles and bodies in the eight repos,
|
||||
`docs/eve-*.md` → `docs/thing-*.md` by `git mv`, comments and fixture
|
||||
descriptions, `EveCanvas`/`EVE*` class prefixes only if the ruling on wire
|
||||
names allows (installed app ids are wire). Forbidden-writer rule applies:
|
||||
no pass over `schemas/`, fixtures or manifests.
|
||||
- **Cut 7 `wire-ids`** (6, ruling `wire-names`). Under `freeze`: one
|
||||
paragraph in the Thing README "Naming" section: wire ids keep the `eve`
|
||||
prefix as history; new breaking revisions take `gamecult.thing.*`. Under
|
||||
`rename-now`: the migration, specified then, per id class.
|
||||
|
||||
## Questions (the Self admits these; one fork each)
|
||||
|
||||
### `home-repo`: which repo owns the campaign and this map?
|
||||
|
||||
Options: **eve-repo** (this file, `F:\Projects\Eve\docs\thing-campaign.md`,
|
||||
the kernel repo that becomes `Thing`; the body the campaign changes, as
|
||||
`eureka-body` lives in Huginn); **gamecult-ops** (cross-repo campaigns as ops
|
||||
memory; but ops is private and the campaign is public by nature);
|
||||
**Eureka** (the method repo; wrong owner for a product rename). Recommended:
|
||||
**eve-repo**. The campaign record's `repos` must list the eight by their
|
||||
*new* names once cut 2 lands; until then the old names, since a `DocRef`
|
||||
names a commit and the redirect keeps it reachable either way.
|
||||
|
||||
### `brand`: how does the deck look on gamecult.org?
|
||||
|
||||
Options: **framed-exhibit** (the deck ships with its own consulting look,
|
||||
unchanged, including its light/dark themes; the brand lives in the blog post
|
||||
and site chrome around the iframe, and the raw URL opens the exhibit as
|
||||
itself); **re-skin** (the deck's `:root` tokens become the brand's: ground
|
||||
`#07111a` with the wash, Montserrat and Ubuntu, accent `#ff8a2a`, single dark
|
||||
theme); **hybrid** (keep the deck's typography and layout, replace only the
|
||||
navy with the brand's ground and the blue accent with orange, force dark).
|
||||
Recommended: **framed-exhibit**. The consulting navy and serif are the joke;
|
||||
re-skinning it makes an earnest deck out of a parody. Brand doctrine already
|
||||
admits a scoped variant for typeset essays and already hosts the cat applet
|
||||
with its own styles; a quoted document in a brand frame is the same move. The
|
||||
hybrid buys neither the joke nor the brand.
|
||||
|
||||
### `wire-names`: do the eve-named wire ids get renamed?
|
||||
|
||||
The shape is `eureka-body:question:wire-names`. Options: **freeze** (every
|
||||
`gamecult.eve.*.v1`, `mimir.eve_*.v1`, `org.gamecult.eve.*`,
|
||||
`@gamecult/eve-*`, app ids and `identityId eve` stay; the Thing README
|
||||
explains them as history; the rule recorded is rename-at-next-epoch);
|
||||
**rename-at-next-epoch** (each id becomes `gamecult.thing.<name>.v2` in its
|
||||
next breaking revision, paid for by that revision; UPM ids on the next major);
|
||||
**rename-now** (a migration of every fixture, conformance pack, consumer
|
||||
manifest, Rust constant and installed app bought for a name). Recommended:
|
||||
**freeze**, with rename-at-next-epoch as the standing rule. The deck's own
|
||||
wave 1 says "redirect old names so nothing breaks"; wire ids have no redirect.
|
||||
|
||||
### `aetheria-eve`: what happens to the archived repo?
|
||||
|
||||
Options: **rename-archived** (unarchive, `gh repo rename AetheriaThing`,
|
||||
re-archive; three API calls, the deck's "eight" becomes true, the IP premise
|
||||
is honoured on the org list); **leave** (taxidermy stays named; the family is
|
||||
seven, as the Projects card already says). Recommended: **rename-archived**;
|
||||
it is cheap and the stated reason for the campaign is the name itself.
|
||||
|
||||
### `dsl-name`: what is the DSL and lowering layer called?
|
||||
|
||||
Operator direction (verbatim): "Eve CultUI is indeed misleading, should
|
||||
become Thing Script or something. ThingML would be hack." Read as a
|
||||
direction, not a final name. ThingML is also already taken: it is SINTEF's
|
||||
IoT modelling language, so the collision stands behind the "hack".
|
||||
|
||||
What the new name covers, by the four uses above: **(1) the authoring DSL**
|
||||
and its reactive binding contract, today "CultUI" and "Eve DSL"
|
||||
interchangeably, including the TUI and GUI streams it lowers to ("Thing
|
||||
Script lowers to a GUI stream and a TUI stream"); **(2) the retained tree**
|
||||
keeps being named by its schema (`gamecult.eve.surface.v1`, in prose "a
|
||||
Thing's surface tree"), and the style system is "Thing Script styles";
|
||||
**(3) the `cultui-*` anatomy ids** are wire and follow the `wire-names`
|
||||
ruling; **(4) Unity CultUI** (`org.gamecult.ui`) is CultLib's and keeps its
|
||||
name, so the memory note's distinction becomes "Unity CultUI is not Thing
|
||||
Script".
|
||||
|
||||
Options: **thing-script** (two words in prose, `thingscript` in identifiers
|
||||
and as the file extension `.thingscript` for fixtures when they are next
|
||||
touched; the `.eve` extension is prose-grade, three fixture files);
|
||||
**thing-dsl** ("Thing DSL", descriptive, no new noun; weaker in sentences
|
||||
and keeps "DSL" as a name); **keep-cultui** (CultUI stays the DSL's name,
|
||||
doctrine says "Thing/CultUI"; cheapest, but the operator has called the
|
||||
pairing misleading). Recommended: **thing-script**, as the operator led
|
||||
with it and it names exactly use (1) without touching the schema-named tree
|
||||
or CultLib's package.
|
||||
|
||||
### `persona-continuity`: is Thing the same Persona as Eve?
|
||||
|
||||
Options: **same-persona-renamed** (one `eve.cc`, `publicName` and
|
||||
description change through VoidBot's path, `identityId eve` frozen under
|
||||
`wire-names`, history and `storedAt` preserved); **new-persona** (a fresh
|
||||
Persona "Thing" with new state; Eve's state archived). Recommended:
|
||||
**same-persona-renamed**; the Persona standard says preserve provenance and
|
||||
do not let a second writer exist, and the deck itself says "we are not
|
||||
renaming the product, we are confessing it".
|
||||
|
||||
### `deck-facts`: are the deck's two factual slips corrected before publishing?
|
||||
|
||||
Options: **fix** (the Huginn wave-2 bullet names the site, the AetheriaEve row
|
||||
says archived; nothing else); **publish-as-is** (a parody is allowed its
|
||||
errors; the map records them). Recommended: **fix**; both are one-line edits
|
||||
and the deck is the campaign's public statement of intent.
|
||||
|
||||
## Rationale
|
||||
|
||||
### Why the deck is cut 1 and not a footnote
|
||||
|
||||
The operator said so, and it is also the cheapest honest first move: it
|
||||
publishes the intent before any name changes, so every later cut can point at
|
||||
a public statement rather than a private decision.
|
||||
|
||||
### Why the applet path and not a content-side HTML file
|
||||
|
||||
The overlay applet is the only standalone-HTML path with a live proof on the
|
||||
site (B4). A content-side `.html` would be a second mechanism for one job.
|
||||
|
||||
### Why repo renames come before doctrine and site prose
|
||||
|
||||
GitHub redirects make the rename reversible and non-breaking (B2), and every
|
||||
prose cut wants to write the new URLs once. Doing prose first would write old
|
||||
URLs that then need a second pass.
|
||||
|
||||
### Why wire ids are a ruling and not a cut
|
||||
|
||||
A stored id has no redirect. Renaming `gamecult.eve.surface.v1` is a
|
||||
migration of every fixture, pack, manifest and Rust constant that names it,
|
||||
across at least four repos and two runtimes, and the campaign's reason (a
|
||||
character's name on the brand) is not served by it; nobody reads a schema id
|
||||
and sees a character. The `eureka-body` campaign faced the same fork and
|
||||
recommended freeze.
|
||||
|
||||
### Why the Persona is renamed rather than reborn
|
||||
|
||||
Persona state is the Mind the repo keeps (Persona standard). A new Persona
|
||||
would discard the operating lessons in `eve.cc` to change a display name.
|
||||
|
||||
### Rejected
|
||||
|
||||
- Re-skinning the deck to the brand (question `brand`): kills the parody.
|
||||
- Treating "Eve" in dated blog posts as live prose: they are history; the
|
||||
`eve` tag stays, since tag URLs have no redirect.
|
||||
- A redirect layer on gamecult.org for renamed pages: nothing is renamed on
|
||||
the site; the Projects card keeps its URL and changes its content.
|
||||
- Giving Huginn a cut: it carries no Eve wording (B6).
|
||||
Loading…
Reference in a new issue