Files
settled-reach/.claude/rules/project-structure.md
T
jpmschweitzerandClaude Opus 5 c25af8d753 docs(meta): make the wiki seed reachable — blind-prediction experiment and its fix
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>
2026-08-20 00:31:06 +02:00

4.3 KiB
Raw Blame History

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