Commit Graph
21 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Fable 5 2ca70d0228 docs(assets): PR #211 review fixes — ratified glazing tokens, D-257, manifest skip contract
Review round (Hoshe + Tyre, both REQUEST_CHANGES) fully addressed:
palette.md's glass carve-out re-keyed from retired never-shipped tokens
(precision_glass/smart_facade) to the ratified glass_curtain_wall (wall)
+ industrial_glazing (facade); the toon/PBR treatment promoted from a
docs-only ruling to D-257 (architecture, cross-refs D-235/D-244/D-043/
D-044/D-033) with palette.md §2 now citing it as authority; D-149 +
D-257 added to decision_refs; manifest.json _comment gains the explicit
underscore-prefix loader skip contract; master pipeline table Visual row
Stub -> Active; conventions.md mask pointer Section 3 -> 5; pre-existing
broken D-066 links in the mood-board transcript repaired (leave-cleaner).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 20:36:47 +02:00
jpmschweitzerandClaude Fable 5 35a4137304 docs(meta): D-256 — canonical sampling convention ruling
Records the T-1174 ruling: derive(seed, absolute world metres) via the
derive_at_metres family is the only derive core; the batch 64x32
pseudo-grid is re-scoped as a survey raster with a real SurveyCellPos
newtype (role name, not a D-243 rung); derive_district_profile becomes
a thin wrapper at survey-cell-centre positions with binding basin and
riparian preservation; point-feature terrain judgments move to exact
world positions; D-255 step canvases are fenced to the window family.
LayerRegionOutput rebuild deferred to T-1181 (tripwire verified: sole
reader is the region_grid overlay); voxel carrier deferred to Phase 5.

Consults: Tyre APPROVE-WITH-CHANGES, Dudley FEASIBLE-WITH-CHANGES —
both incorporated. Discharges the T-1174 blocker on D-255's T-1181
step-canvas envelope.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 00:39:48 +02:00
jpmschweitzerandClaude Fable 5 18c731a5de docs(meta): D-255 body-map-viewer stepped render architecture + deprecation sweep
D-255 filed (server-determines-content / client map-art function / stepped
six-level ladder Global+Region→Chunk / tagged-envelope wire discharging D-225 /
three-tier cache with distinct staleness-storage axes / cache-accelerated-pure-
function seed-chaining / lakes from settled hydrology, endorheic cue =
outflow-course presence). Twelve in-place amendments: D-166 corollary repoint,
D-192 persistent-cache boundary, D-225 deferral discharged, D-226 consolidated
(ceiling re-scope, select_rung→step-index, stepped transport, item-(d)
per-request + retention cap + chunk-floor partial restore, courses gloss +
cliff sparse-list), D-227 four-part (TTL-split, version tag, seed-chaining,
lakes), D-243 gridunit vocabulary. Clerk-audit fixes: atlas-zoom-ladder-t1143
superseded banner, CLAUDE.md Phase-4 cascade row updated to the stepped model,
Q-093 prior-art cross-ref. river-courses-t1170 carrier gloss. governance
README index regenerated (109 decisions through D-255); validate clean, sync
1344 refs 0 broken. Ticket chain T-1181–T-1185 + reconciliations in changelog.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 10:58:02 +02:00
jpmschweitzerandClaude Fable 5 b57805d0c6 docs(meta): D-254 — standalone Atlas companion app (make atlas, dual-connection reader) (T-1129)
Six sections: connection model (attach SR_PORT/9876 ~500ms else spawn --port 0 + LISTENING parse, auto-attach-else-spawn); Reader connection class (ConnectionRole on StartupMessage, serde-default Player; no character spawn, NO ObserverSnapshot, permitted-message matrix, drop-not-disconnect, 0-1 Player + 0-N Readers, Player-only shutdown-on-disconnect); app shell (dedicated atlas_standalone.tscn, trivial make atlas target); data browser (separate implant/browser app per Jeroen, six registry entities v1, WIRE-ONLY extending the T-949 precedent — no client SQLite); save/load seam (seed picker now, save picker slot Phase 5+); trading seam (TradingReader superset, idempotency tokens, loopback-only auth assumption recorded). Tyre (lead) + Oscar (connection sections, his activation). Validate + sync clean (388 records, 0 broken).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 08:05:57 +02:00
jpmschweitzerandClaude Fable 5 6c078fbec4 fix(meta): PR #175 review round — all 14 findings addressed
H1 godot-cold-parse exit-code guard (+bonus: import-pass for cold checkouts, found live); H2 pr-watchlist-diff loud registry failure; H3/T1 deny list :* normalization (add-only) + uniform allow syntax; H4/T7 helper-script allows; H5 get_api_key env-only (config.json is tracked — no secret fallback); H6 TEAM.md active/standby split; H7 troblum solo-profiling note; H8 pr-review frontmatter Task->Agent; H9 conventions doc taxonomies fixed vs real tree; T2 ask-gate leash files (settings/hooks) in tracked settings; T3 R-013 cross-reference; T4 governance README index regenerated (pql decisions sync); T5 dudley briefing ACTIVE; T6 pr-process step 7 run-from-main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 22:11:36 +02:00
jpmschweitzerandClaude Fable 5 14b2eb69c5 docs(governance): D-253 region transient state model + Q-102/103/105/109 triage (T-1057)
D-253 (resolves Q-105): the region owns transient clock-bound surface
state — four phase terms (diurnal/tidal/weather/seasonal), memoized-by-
bucket absolute-clock evaluation, edge-fuzzed per-tile inheritance,
integer-deterministic (D-010), state-model-only (no gameplay/rendering).
Discharges the T-1030/T-1078/T-1082 forward-contracts. Diurnal promoted to
a first-class term (user-confirmed).

Q-102 resolved-in-practice (D-246 voxel_mosaic + D-228 override stack);
Q-103 + Q-109 deferred to Phase 5+ with dated triage notes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 09:02:48 +02:00
jpmschweitzerandClaude Fable 5 b25860dd04 chore(meta): activate Layer 5 batch — T-959/T-988/T-1097/T-1057 in_progress
T-959 rescoped (objects descoped, title updated); T-1097 (ops-surface
fill, D-233) split out as a new child; T-1057 gates T-959 (blocker edge);
recovered T-1057's lost description + triage dispositions. README index
regen reflects Q-049 resolution (PR #173).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:45:20 +02:00
jpmschweitzerandClaude Fable 5 629c0a9b1e feat(client): D-252 view/movement split — body from leg velocity, view is the mouse (T-1093)
D-252 (new record, amends D-054/D-249, resolves Q-084's walk-vs-aim split):
Facing is view-only; movement no longer writes it. Client side: the rig's
moving-body yaw now always derives from leg velocity (the wire octant is the
VIEW and must never rotate the body — the follow-only commit flag
generalizes and disappears); the layered head/torso look-at runs during any
movement, WASD included; the ~100ms post-step re-assert mitigation is
removed as dead (server-side facing_from_delta removal lands separately).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:59:06 +02:00
jpmschweitzerandClaude Fable 5 ae04091f93 chore(meta): live-session decision trail — cutaway modes, RMB gestures; governance index sync
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:52:25 +02:00
jpmschweitzerandClaude Opus 4.8 cf80c1e1b5 docs(decisions): add D-246 micro-habitat mosaic + D-247 native biospheres (amend D-228)
D-246 (architecture): intra-class micro-habitat mosaic — a voxel_mosaic()
sub-chunk noise band modulates the D-228 axes into spatially-coherent,
relief-conditioned micro-habitats; palette keyed on surface-class ×
climate-biome × biosphere-register; five new D-228 axis values front-loaded
for determinism; within-patch believability metric in scope. Governs T-1084.

D-247 (content): habitable Reach worlds were alive before humans — the
settlement timeline forbids terraforming from dead rock. An authored per-world
chirality bit gates whether native life is edible (Compatible) or
inedible-but-inert (Mirror); "safe" and "edible" are decoupled; colonization
is ecological war that grows an Earth-crop footprint outward from settlements.
Grounds D-246's native-vs-introduced register.

D-228 amended: +Vegetation{Meadow,Deadfall,Lichen}, +TerrainMaterial{Hardpan,Scree}.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 22:29:23 +02:00
jpmschweitzerandClaude Opus 4.8 c95f9d9a70 docs(governance): D-245 nature-layer believability acceptance gate + believability epic (T-1079..T-1084)
Lock the cascade's nature-half deliverable to "reads alive anywhere", not
"implemented" — the holy-grail objective surfaced by probing the generation
cascade.

- D-245 (architecture): the nature layers are accepted only when the
  believability litmus passes at randomly-sampled locations across all
  habitable bodies/seeds — multi-scale + never-repeating (macro identity,
  meso non-stationarity, micro mosaic), coherence + non-stationarity +
  intra-class variety + relief + climate-appropriateness, automated screen
  under a human sign-off, budgeted -> strict. Q-123: threshold calibration.
- T-1079 (epic, north-star, DoD=D-245) + findings T-1080 (uniform climate
  fields), T-1081 (near-zero relief), T-1082 (no water-body generator),
  T-1084 (intra-class micro-habitat mosaic), and T-1083 (the repeatable
  believability test protocol / D-245 enforcer).
- aliveness_probe bin: the exploratory probe that found these (runs the
  deterministic cascade for a body+seed, reports per-district nature +
  verdict). Seed for T-1083.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 07:59:34 +02:00
jpmschweitzerandClaude Opus 4.8 dae1498a6f docs(assets): ratify 3D asset direction (D-244); repurpose sprite-gen as 2D-artwork generator
D-244 ratifies what the character architecture (D-159..D-164, runtime
CharacterVisualDescriptor compositing) and the Trellis env pipeline already implied
but no decision had recorded: the in-world view renders 3D objects directly; the only
flattened 2D content is textures + flat 2D artwork (paintings/flags/billboards/signage).
There is no per-object sprite layer.

Roots out the drift: the early-spike 3D->2D sprite pipeline (#541) and the sprite-centric
docs/assets/visual catalog were never cleaned out when the project went 3D, so the
2026-06-12 fable-ous audit read them as live and re-injected the dead sprite model into
T-1049/T-1050. Fix:
- docs/assets/visual/README.md + docs/assets/README.md re-scoped to 3D models + textures
  + flat artwork (dropped the sprites/tilesets-as-entities framing).
- /sprite-gen + renderer/README repurposed as the 2D-artwork generator (paintings/flags/
  billboards/signage), not the in-world object format; legacy 4-direction object-sprite
  mode flagged as retired.
- T-961/T-1049/T-1050 already held in backlog pending this.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 22:36:13 +02:00
jpmschweitzerandClaude Opus 4.8 e39ba89064 docs(governance): D-243 spatial scale ladder — resolve Q-110, Region→Province
Resolves Q-110 (region/chunk physical-scale anchoring), which had three
contradictory metres-per-scale assumptions in the cascade and no record
fixing metres-per-heightmap-pixel.

D-243 establishes a nested absolute-metre containment ladder with a single
elastic seam at planetary scale:
  voxel 1m -> chunk 64m -> block 128m -> quarter 512m -> district 2km
  -> region ~205km (100x100 districts) -> (elastic) -> planet
A body holds round(2*pi*R/204.8km) regions (the only per-body-floating
quantity); everything below is fixed integer math, so ChunkPos->RegionPos
is body-independent. The region is the largest hard block: the climate/
weather/season lockdown scale (the Q-105 cheap-dynamism source) and the
sane planetary grid. Sub-heightmap detail is invented deterministically
(interpolation + domain warp + detail-scatter, never stored, D-227); climate
is edge-fuzzed so the grid never shows ('climate does not change on a line').

Vocabulary locked and recorded in CLAUDE.md: 'region' = the 205km metric
cell only; the old 1km RegionProfile is dropped onto the 2km district; D-201
tier-4 'Region' renamed Province (the watershed/political overlay), amended
here. Refines D-239 §2 (district temperature now modulates a region baseline).

Implementation tickets: T-1077 (re-scale the code to the ladder + elastic-seam
resampling; blocks T-1046) and T-1078 (region climate stack + edge fuzz).
T-1046 is un-gated on Q-110 and now blocked only by T-1077.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:26:13 +02:00
jpmschweitzerandClaude Opus 4.8 301be77b49 docs(governance): file D-242 corp-HQ settlement model + T-1074/1075/1076
Reviewing the T-1038 road-graph hub model surfaced that corp HQs are
cross-referenced into atlas_city_names as reserved rows — one per corp —
producing duplicate co-named "cities" (e.g. 10 'Groombridge' rows on
GJ380c) that the spatial layers place as separate settlements.

D-242 resolves the data model: corp HQs are not cities. The HQ relationship
lives with the corp; placement is a baked, specialization-keyed preference
(CityTenant vs Standalone, since corp_type is degenerate); population and
settlement_class are install-baked with only position seed-derived. This
supersedes the D-223 corp-HQ-cross-ref and deferred-pop/class notes.

Companion tickets under T-750: T-1074 (corp-HQ model / remove the cross-ref /
specialization map / standalone HQ settlements), T-1075 (bake per-settlement
population + settlement_class), T-1076 (road-graph hub refinement — scaled-cap
hubs, co-location collapse, hybrid minor attach, deferred RailHeadFacing pass;
blocked on T-1074 + T-1075). T-1038 annotated with shipped-vs-deferred.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 20:13:10 +02:00
jpmschweitzerandClaude Fable 5 d23d54b3d6 chore(meta): file the fable-ous audit — 27 tickets, 11 questions, D-225 amendment; retire the report
Completes the audit→records pass; fable-ous.md deleted, full stub→record
mapping preserved in docs/audits/2026-06-12-fable-ous-filing-ledger.md.

- Questions Q-112..Q-122: storyteller f32 vs bps, cross-platform goldens,
  NPC appearance contract, garments simulated-vs-visual, gdlint gate,
  whatsinagame extraction, empty wiki categories, generic-parent first
  slice, garment-token vocabulary, dress canon home, asset sourcing policy
- Audit notes appended to Q-067 (vehicle scope vs T-750 car list) and
  Q-107 (signature-materials field in the consolidation scope)
- D-225 amendment: next inbound message type requires a tagged envelope
- Tickets T-1045..T-1071 under T-750/T-749/T-751/T-1037, each embedding
  its evidence; audit maps embedded in T-1046 (cascade), T-1049 (asset
  matrix), T-1071 (wiki survey). Headline spine ticket: T-1046
- T-982 flipped stale-in_progress → backlog with verified-scope note

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:29 +02:00
jpmschweitzerandClaude Fable 5 27ed13e35b chore(meta): untrack spike binaries — local-only per D-241
416 binary files (~1.7 GB: .glb/.gltf/.bin/.png) removed from the index,
kept on disk; spikes/ keeps verdict/review markdown + spike code tracked
(61 files). .gitignore extended to cover model/texture/render binaries
under spikes/ going forward. Reproducible from purchased packs in
docs/assets/downloads/ + tracked scripts; zero markdown-embedded images
in spikes/, so no docs break. History rewrite deliberately NOT done —
recorded as out of scope in D-241. Closes fable-ous.md finding S-14.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:29:43 +02:00
jpmschweitzerandClaude Fable 5 ca255dc16c chore(meta): cascade refocus — supersede v0.2 cluster, re-home backlog tree, capture workshop WIP
Governance:
- D-166 amendment (2026-06-12): outside-in build order (geo → econ-on-world →
  building templates → door boundary contracts → NPC/interiors → gameplay);
  Phase 5 ramps in parallel once outsides are walkable (gate: T-962)
- D-114/D-115/D-117/D-118/D-120 marked superseded by D-166 (inbound anchors fixed)
- D-221 amended: milestones retired, cascade-hierarchy gating is canonical
- Q-077/Q-068/Q-036 resolved (answered by events); Q-110 (scale anchoring) and
  Q-111 (live-econ coupling) opened from cascade grounding

Ticket tree (147 stray backlog tickets dispositioned):
- New parents: T-1036 (post-cascade gameplay parking), T-1037 (maintenance initiative)
- Re-homed: 15 → Phase 4 (T-750), 30 → Phase 5 (T-749), 11 → Phase 6 (T-751),
  21 → gameplay parking, 28 → maintenance; children follow their epics
- Cancelled 12 administrative shells (mirror tickets, emptied pre-cascade umbrellas,
  v0.2 pivot shell T-603); T-9/T-28 closed done; T-745 in_progress
- New grounded tickets T-1038..T-1044: inter-settlement road/rail graph, L3→L4
  dispatch threading, river-channel-anchor bug, 64m landform-repeat bug,
  region seam blending, road-entry octants, drainage re-run fix

Docs:
- CLAUDE.md cascade paragraph updated to the amended rule
- 20 v0.1-era docs/design files marked superseded with pointers;
  content-structure-canonical retitled (v0.2 label dropped)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:26:32 +02:00
jpmschweitzerandClaude Opus 4.8 bf7da1105d docs(architecture): D-240 — registry orbit/star non-canonical; class-envelope climate (T-1033)
Record D-240: a body's orbital position and stellar assignment are placeholder
registry data with no authored physical intent, so no derivation may use them as
physical inputs. Climate derives from authored planet_class (temperature envelope)
+ atmosphere + hydrosphere + seed. Supersedes the sun-driven Stefan-Boltzmann
portion of D-239 §2, which produced +356 C 'temperate' worlds (NULL spectral_class
-> G-Sun default on an M-dwarf catalog).

File T-1033 under T-974: rewrite derive_temperature_c to the class-envelope model,
drop the orbit/star inputs, regen the T-1031 golden. Audit confirmed the blast
radius is one function (derive_temperature_c).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 18:06:49 +02:00
jpmschweitzerandClaude Opus 4.8 fa8b6ebf08 docs(governance): file D-239 tile derivation contract, resolve Q-101
Resolves Q-101 — how a coarse Layer-1 cell + seed becomes coherent ~1m
voxel geometry across the scale jumps. The tile-derivation-contract
workshop output:

- three-carrier refinement chain RegionProfile -> ChunkContext -> VoxelColumn,
  pure deterministic, no authoring at the derivation layers
- district-temperature climate primitive (2x2 km, C, nullable) + separate
  moisture; everything climatic derives from temperature(+moisture)
- scattered, transient freeze/snow model (freshwater +5..-10, sea ice own
  band, snow moisture-gated; forms cold phase / melts warm phase)
- stateless f64-to-voxel domain warp (anti-squaring)
- 8 morphology families over a frozen 17-zone vocabulary, gated decision tree
- seams prevented at source (gate ordering + build-time matrix); valid
  geomorphic seams kept sharp + warped

Includes workshop brief, round-1 positions, and workshop-outcomes.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 12:14:55 +02:00
jpmschweitzerandClaude Opus 4.8 aefbb4bd88 docs(meta): switch ticket-reference convention #N -> T-N (pql migration phase 3)
Adopts the T-NNN convention (T-N == old #N == pql ticket id) across the active
operational layer: governance/ decision records, .claude/{rules,agents,skills},
CLAUDE.md, DECISIONS.md. 283 references rewritten.

Guarded against false positives (17 correctly skipped, each logged):
  - PR references kept (PR #136/#138/... — PRs are a separate #-namespace)
  - non-ticket numbers kept (#4122; the "#1 process failure" idiom; "task #3")
  - only #N where N is an actual ticket id is rewritten; the 1-4 digit word-bounded
    match also excludes 6-digit hex colours in the visual decision records

Git history is NOT rewritten (a commit's #N already equals T-N numerically), and
historical archives (docs/sprints, docs/discussions, docs/workshops) keep their
point-in-time #N. The /pr-process ticket-ID extraction logic moves to T-NNN in the
Phase 4 consumer cutover.

Verified: pql decisions validate ok; sync 357 records / 1057 refs / broken 0 (the
prose edits don't affect decision parsing or the tickets.decision_ref linkage).
Transform committed at tooling/pql-migrate/retag_ticket_refs.py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 12:41:52 +02:00
jpmschweitzerandClaude Opus 4.8 f936e503da docs(decisions): restructure into pql governance DQR tree
Phase 1 of the pql migration. Moves the flat decisions/*.md layout into
governance/{decisions,questions,rejected}/<domain>.md — the tree pql's
`decisions sync` parses natively (record type from subdir, domain from
filename stem). Proven against pql 1.6.2: sync reports 357 records
(237 D / 108 Q / 12 R), 1057 refs, broken: 0; validate ok.

- 6 D-domain files -> governance/decisions/ (git renames)
- 5 questions-<domain>.md -> governance/questions/<domain>.md (prefix dropped)
- rejected.md split by domain -> governance/rejected/{architecture(R-001..010),
  economics(R-011),perception(R-012)}.md
- decisions/README.md + questions.md index folded into governance/README.md;
  pql's `decisions sync` now auto-maintains the record index appended below
  the hand-written domain guidance (no more manual ID-list table upkeep).
- .pql/config.yaml: canonical vault config (tracked, not ignored).

Link rewrites are token-preserving: only the relative `foo.md` path portion
changes (e.g. `rejected.md#r-011` -> `../rejected/economics.md#r-011`); every
`[D-NNN]` bracket text and `#anchor` stays byte-identical, so pql's reference
extraction is unaffected. The one-shot transform is committed at
tooling/pql-migrate/restructure_decisions.py for provenance.

Codebase path references to decisions/ (CLAUDE.md, rules, skills, docs) are
updated in a follow-up commit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 12:12:45 +02:00