An experiment, at Jeroen's request: predict how the wiki seed data is structured
WITHOUT reading it, seal the prediction, then score it. The prediction is
a1addf7e2, committed before wiki/ was opened so it could not be retrofitted.
The score, against a rule fixed in advance:
RIGHT — markdown + YAML frontmatter, TOML for economics tables, the body path
shape, more trees than the three I had seen.
WRONG — "a source, never an output". That holds for 253 pages and is backwards
for 3,262: star-systems/ is GENERATED from systems.db by tooling/db/wiki_sync.py,
its <!-- READ-ONLY --> blocks are renders, and body frontmatter IS the body
definition rather than a description of one. Also wrong: "probably no schema
docs" — there are 17 templates, ten authoring guides, economics/schema.md and a
GOVERNANCE.md that states the ownership models plainly.
ABSENT (the expensive bucket) — the two ownership models running in OPPOSITE
directions; the GTTR prose channel; terrain.npz/globe.png; that stations and
districts have NO wiki directories; that `description` frontmatter exists so
agents can filter before loading; and the scale, 11,864 files.
ROOT CAUSE, and it is not missing documentation. The wiki documents itself well.
It was unreachable: wiki/ appears in NEITHER CLAUDE.md's Project Structure block
NOR .claude/rules/project-structure.md, the annotated tree whose entire job is
orienting an agent. The largest tree in the repo — the seed for the whole Reach —
was invisible from both files a session reads first. Every item in the absent
bucket follows from that one omission. The proof is this session: it spent three
days fixing Ferrath's terrain rendering and never once saw
wiki/star-systems/GJ-820B/bodies/GJ820Bc/index.md, the file that defines Ferrath.
Fixed here: wiki/ enters both structure documents with the ownership split stated
where it will be read, and Skill(wiki) carries the traps — never hand-edit a
READ-ONLY block or body frontmatter, stations have no directories, the id is
spelled two ways, editing corp PROSE stales systems.db, and absent variance is
often deliberate rather than a gap.
That last point cost two false findings in one measurement and is worth the
warning: chemosynthetic:false on every body is a namespace reservation for
dextro-DNA-style biochemistry once geology and nature spawn to the 1x1m pixel,
and enabled:false on ~65% is staged rollout — clean planet types first, generator
scripts for the rest after. Both read as defects without the roadmap.
Also measured, since the seed's job is to supply variance: continuous axes are
rich (unique seed per body, 460-716 distinct values across orbit/tilt/ice/land)
while the categoricals that gate morphology are concentrated (68% tectonics low,
51% planet_class frozen). Filed as T-1244 with the design question stated first —
whether the distribution is intended — rather than as a defect.
Method caveat recorded in the findings: the aggregator reads scalar frontmatter
only, and atmosphere_color's "100% null" was a parser artefact, not a finding.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.3 KiB
4.3 KiB
Project Structure (detailed)
wiki/ # THE SEED (11,864 files, the largest tree here). Authored
# world content the generator varies from — NOT a
# reference work, and mostly NOT hand-written.
# See Skill(wiki) before editing anything below.
index.md # the map: 301 systems, 220 named
GOVERNANCE.md # ownership models, status lifecycle, directory rules
_templates/ # 17 templates, one per entity kind — copy to author
authoring/ # 10 guides (monologue, culture, dual-lens, line-id…)
economics/ # INPUT. TOML vocabularies + schema.md. Seeds systems.db
# AND, from Phase 4 on, world content generation
star-systems/ # OUTPUT, 93% of the wiki. Generated by
# tooling/db/wiki_sync.py FROM systems.db + star-map.json
GJ-{id}/ # system dir (hyphenated id)
index.md # no frontmatter; <!-- READ-ONLY --> blocks are
# regenerated — authored prose lives in the named
# sections between them
gttr*.md # Drifter's Guide prose (corridor/system/location)
bodies/{id}/ # body dir (UN-hyphenated id, e.g. GJ820Bc)
index.md # frontmatter IS the body definition: seed,
# land_fraction, axial_tilt_deg — generator INPUT,
# machine-owned, never hand-edited
*.png, *.npz # globe/relief/heightmap renders + terrain grids
markers.json # names-only city pool (D-223)
corporations/ factions/ contraband/ concepts/ triangles/ species/
institutions/ cultural-groups/ lore/ technology/ glossary.md
# INPUT, flat, wiki-is-truth. YAML frontmatter carries
# status (proposed|draft|canonical), cross_refs,
# decision_refs, and `description` — which exists so
# AGENTS can filter before loading whole files
client/ # Godot 4 client
ui/
implant/ # Implant UI component library (D-169): ImplantPanel, ImplantHeader,
# ImplantSeparator, ImplantDataRow, ImplantTextBlock, default_implant.tres
scripts/
autoloads/
hud_groups.gd # HUD z-index layer manager (D-170): GAMEPLAY/INSERT/FULLSCREEN/MODAL modes
rendering/
gameplay_renderer.gd # Base class for occludable renderers; connects to HudGroups signal
server/ # Rust/bevy_ecs simulation server
tooling/ # Build tools, scripts, asset pipelines
tests/ # Integration and end-to-end tests
.config/ # Configuration files (linters, formatters, CI)
.cache/ # Local caches for testing/linting (gitignored)
docs/
discussions/ # Discussion rounds (archived here when complete)
briefings/ # Per-agent context briefings (maintained by Qatux)
architecture/ # Technical architecture documents
design/ # Game design documents
diagrams/ # d2 source + PNG renders
sprints/ # Historical archive (Sprint 1–38) — no new sprint directories
workshops/ # Workshop briefs and outputs
db/
schema.sql # Database schema
tooling/
db/ # Asset/connector scripts (audio, image, trellis, wiki)
config.json # Endpoint configuration
common.py # Shared venv/config helpers
audio_connector.py # Stable Audio Open connector
pql-migrate/ # One-shot scripts from the pql migration (provenance)
.claude/
agents/ # Agent personality files
skills/ # Skill definitions
rules/ # Auto-loaded instruction modules
governance/ # Decision records (pql DQR tree, source of truth)
README.md # Domain guide + pql-maintained record index
decisions/ # D-NNN confirmed — <domain>.md (architecture, perception, content, scope, economics, process)
questions/ # Q-NNN open — <domain>.md
rejected/ # R-NNN rejected — <domain>.md
DECISIONS.md # Redirect to governance/ tree
TEAM.md # Team roster and roles