332 Commits
Author SHA1 Message Date
jpmschweitzer ee0dd6df25 chore(meta): activate seam batch T-1125/T-1126/T-1127 — Jeroen's crinkle-varies rulings + Si gap resolutions; T-1126 blocked by T-1125 2026-07-17 07:39:28 +02:00
jpmschweitzer 3d73a4d221 chore(meta): close district-window batch — T-1123 done (PR #181 merged); T-1125 seam story is the recommended next batch 2026-07-16 22:37:02 +02:00
jpmschweitzer c8adc17556 chore(meta): T-1123 to review — PR #181 up 2026-07-16 22:31:40 +02:00
jpmschweitzer c824ca51a1 chore(meta): file T-1125/T-1126/T-1127 — zoom-ladder findings under T-1079 (D-227 seam, ocean-blind veg, glaciation rendering) 2026-07-16 22:26:13 +02:00
jpmschweitzer 96737756dd chore(meta): file T-1123 district-window renderer (activated, dudley) + T-1124 Atlas regional-map-view design — Jeroen's orbit-to-jet-plane bridge gap 2026-07-16 21:56:18 +02:00
jpmschweitzer 531041506d chore(meta): close screenshot-goldens batch — T-1120 done (PR #180 merged) 2026-07-16 21:44:11 +02:00
jpmschweitzer de25063e99 chore(meta): file T-1122 — shared live-server GdUnit helper (PR #180 root-cause fallout) 2026-07-16 21:31:31 +02:00
jpmschweitzer 84cfb05eca chore(meta): T-1120 to review — PR #180 up 2026-07-16 20:36:47 +02:00
jpmschweitzer d3384ab417 chore(meta): file T-1121 — visual golden baseline drift across machines (T-1120 finding) 2026-07-16 20:30:31 +02:00
jpmschweitzer 17cad2bbf9 chore(meta): activate T-1120 — Atlas screenshot capture matrix + goldens (stig) 2026-07-16 19:31:40 +02:00
jpmschweitzer 9706eb9d0e chore(meta): close atlas-layer batch — T-1112/T-1113 done (PR #179 merged); file T-1118 climate overlay, T-1119 quarter-footprint wiring, T-1120 Atlas screenshot goldens 2026-07-16 19:25:54 +02:00
jpmschweitzer a0ca09c22c chore(meta): T-1112/T-1113 to review — PR #179 up 2026-07-16 19:08:47 +02:00
jpmschweitzer c2f236e26e chore(meta): activate T-1112/T-1113 atlas-layer batch — Si refinement appended (both READY) 2026-07-16 18:29:37 +02:00
jpmschweitzer b8cc987e2c chore(meta): close road-hub batch — T-1076 done (PR #178 merged); D-242 triple complete 2026-07-16 17:15:31 +02:00
jpmschweitzer 322cf284fd chore(meta): file T-1117 — heavy_works vocabulary split (PR #178 re-review, Tyre) 2026-07-16 17:10:51 +02:00
jpmschweitzer e372a4b2de chore(meta): T-1076 to review — PR #178 up 2026-07-16 16:25:40 +02:00
jpmschweitzer 3efe5f6a56 chore(meta): file T-1116 — water-heavy bodies get 0 routable road edges (T-1076 finding) 2026-07-16 16:24:13 +02:00
jpmschweitzer f5bb71736b chore(meta): activate T-1076 road-hub batch — Si refinement + gap resolutions (incl. scope item 0: placement-map re-tune per Jeroen) 2026-07-16 15:35:04 +02:00
jpmschweitzer 9336209ea9 chore(meta): close settlement-dataset batch — T-1074/T-1075 done (PR #177 merged); T-1076 unblocked 2026-07-16 13:09:04 +02:00
jpmschweitzer dc982d3c53 chore(meta): set team copy on T-1115 2026-07-16 12:16:30 +02:00
jpmschweitzer 6d97a3cafc chore(meta): T-1074/T-1075 to review — PR #177 up 2026-07-16 11:49:38 +02:00
jpmschweitzer 8b50070cf3 chore(meta): file T-1115 — corp-placement wiki coverage gaps (T-1074 follow-up) 2026-07-16 10:30:33 +02:00
jpmschweitzer 27a78fad7f chore(meta): assign T-1074/T-1075 to dudley 2026-07-16 09:34:35 +02:00
jpmschweitzer 1f958962cc chore(meta): activate T-1074/T-1075 settlement-dataset batch — Si refinement + gap resolutions appended 2026-07-16 09:04:41 +02:00
jpmschweitzerandClaude Fable 5 4113107121 chore(meta): close Atlas-viewer batch — T-960/T-970/T-949 done (PR #176 merged)
Review round processed in full (12 findings + 2 recommendations, no retractions); merged and gate-verified on main; worktree + branch torn down.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 18:03:38 +02:00
jpmschweitzerandClaude Fable 5 8016abe0c7 chore(meta): T-960/T-970/T-949 to review — PR #176 up; T-1114 gdlint-debt filed
Atlas-viewer batch shipped through the gate (2946/2946 gdUnit, full cargo suite, golden untouched). T-1114: 39 pre-existing client gdlint warnings tracked under T-1037.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 16:36:44 +02:00
jpmschweitzerandClaude Fable 5 672a583e64 docs(governance): Atlas-viewer batch refinement — D-226/D-191/D-236 amendments + ticket rescopes
Si audit rulings (Jeroen, 2026-07-13): D-226 amended (shipped always-toggleable overlay pattern ratified, gen_l0 dropped, legend stands, no tile-level Atlas map); D-191 + CLAUDE.md Phase-4 wording aligned; D-236 amended (Oort-cloud gateway station = concrete player-access cap; Sol never in deterministic runs). T-960 rescoped (L2 roads + L3 settlements + legend in; L4/climate/L5 out), T-949 scoped non-Sol + D-010 citation fix, T-970 refined (Paused gates only advance_tick; economy split; Option A manual-pause reconciliation). New: T-1112 (L4 coarse-footprint design), T-1113 (climate cascade wiring). D-254 claim unused (D-236 already covered Sol).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 23:53:59 +02:00
jpmschweitzerandClaude Fable 5 81e4cb25d0 chore(meta): close T-1099 estate-cleanup tree — PR #175 merged
Initiative + 5 epics + 3 tasks done. CLAUDE-CLEANUP.md brief executed in full and deleted; follow-ups live as T-1108-T-1111 under T-1037.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 22:52:45 +02:00
jpmschweitzerandClaude Fable 5 1e7aa8fe63 chore(meta): T-1099 tree to review — PR #175 up; follow-ups T-1108-T-1111 filed
Estate-cleanup epics T-1100-T-1104 (+tasks) moved to review with PR #175. Follow-ups under maintenance T-1037: T-1108 image-gen --aspect smoke test, T-1109 workshop scout-critic decision, T-1110 body-ID moon-suffix standard, T-1111 renderer/README staleness.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 17:18:14 +02:00
jpmschweitzerandClaude Fable 5 2a0ac54109 chore(meta): scaffold estate-cleanup initiative T-1099 + 5 epics (CLAUDE-CLEANUP.md)
T-1099 under T-1037; epics T-1100 (settings/security), T-1101 (skill
removals), T-1102 (workflow skills), T-1103 (asset/tooling skills),
T-1104 (agent roster). Executing the 2026-07-02 .claude review this session.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 15:44:46 +02:00
jpmschweitzerandClaude Fable 5 2bc590c1ba chore(meta): close Layer 5 batch — T-988/T-959/T-1097/T-1057 done (PR #174 merged)
T-1098 (interstitial fill) re-parented to T-750 as the tracked follow-up.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 14:54:54 +02:00
jpmschweitzerandClaude Fable 5 5a31a50874 chore(meta): Layer 5 batch to review (PR #174) + T-1098 interstitial follow-up
T-988/T-959/T-1097/T-1057 → review. T-1098 filed (interstitial-fill,
deferred slice of T-959 with design brief).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 10:34:41 +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 39313bc854 chore(meta): close T-977 batch — T-992/T-994/T-995/T-1003 + T-977 done (PR #173 merged)
T-959 (Layer 5 Chunk→Tile fill) is now unblocked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 15:57:45 +02:00
jpmschweitzerandClaude Fable 5 c02628ca2f chore(meta): T-992/T-994/T-995/T-1003 to review — PR #173 (architecture-flavor pipeline)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 10:01:50 +02:00
jpmschweitzerandClaude Fable 5 e097874587 chore(meta): refine + activate T-977 batch — T-992/T-994/T-995/T-1003 in_progress, T-1003 blocked by T-994, T-1004 parked to Phase 5
Si refinement round resolved 7 decisions: district-dominant = D-243 2048m tier
(build in T-994), draw at GenerateSkeleton, body-level coverage aggregate,
ratify shipped 28-tag palette (amend D-235), Gemma proposes text fields only,
swerve driver mappings pinned, T-1004 render mechanism deferred to Phase 5.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:19:09 +02:00
jpmschweitzerandClaude Fable 5 3d6dcc9d05 docs+fix: sidequest close-out — T-1095 head tint, design doc, wardrobe docs, changelog (T-1088/T-1089)
T-1095 fixed: template heads now receive the body's skin tone (same
treatment as seg_head) — _load_head passes tone.lit with a full-white
fallback mask through _attach_to_bone; without a mask sidecar the tint was
silently ignored, so untinted templates read grey against mid/dark tones.
Verified by lookbook render (head_001 on child, tone 6 — face matches arms).

Docs: the T-1088 locomotion design document committed to docs/design/ (the
sandbox code's 'design §' references now resolve in-repo); character-asset-
organization gains §11 Wardrobe Pipeline and sheds three stale claims (the
never-built indexed-greyscale mask plan, single-mask-per-asset for clothing,
the resolved multi-region open question); CHANGELOG carries the sidequest
entry; D-250 amended with the shipped cutaway-modes verdict (mode 2 default,
user-decided live).

Tickets: T-1088, T-1089, T-1095 closed; T-1096 filed (S9 live feel-tuning,
needs the user). The Fable-5 cascade exception is closed — the cascade
resumes at Phase 4 (T-750).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 14:15:56 +02:00
jpmschweitzerandClaude Fable 5 e562418d06 fix(assets): lookbook findings — 44 missing extracted albedos, manifest nesting, lookbook tool (T-1089)
The lookbook render pass load-checked all 264 garment GLBs and found four
garments (boots, cargo pants, jeans, tank top) shipped WITHOUT their
per-body Godot-extracted albedo textures — 44 GLBs would fail to load after
a clean import. Textures regenerated via forced reimport and committed.
Also: swimsuit_onepiece manifest entry was double-nested (lead's merge bug —
runtime unaffected, reads coverage.json); flattened. The parameterized
lookbook_scene tool (drives the production compositor, auto-framing, job
list) is committed for future catalogue renders. Grey head-template finding
filed as T-1095. Lookbook itself delivered to the desktop, not committed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:04:36 +02:00
jpmschweitzerandClaude Fable 5 ded5c62515 feat(assets): wardrobe wave 2 — footwear, sportswear, swimwear, sweater, cargos, thrds parka, slides (T-1089)
Twelve garments, per-body on all 11 bodies, chromakey-gated (worst clips:
parka 3px, boots 54, sweater/tank 83, sneakers 100 final-geometry, slides
123, swim trunks 132, cargo 138 — all under the 150px gate), previewed:
tank top, sweater (crew-neck via per-body ring-valley probe — first draft
read mock-neck, fixed by measured rim circularization), track jacket
(recolorable sleeve-stripe region), joggers (side-stripe region), cargo
pants, swim trunks, one-piece swimsuit, sneakers (prism-sole), formal
shoes, ankle boots (calf shaft), slides (open strap + sole), and the
hip-length thrds parka — the first canon-branded garment (Braemar
cold-weather cooperative), quilted, logo-capable.

Tops now hem into real hip geometry (the natural seg_torso bottom is a
9-14cm tooth ring — the sweater established the hem-into-hips practice).
Manifest merged by the lead: 24 clothing entries with region/default-tint
metadata. Full modern catalogue: 21 garments across tops/bottoms/feet/
full-body x casual/formal/sport/swim/outerwear.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:20:18 +02:00
jpmschweitzerandClaude Fable 5 dd0d220846 style(tooling): ruff fixes in offset-shell script — unused import, ambiguous loop var
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:26:16 +02:00
jpmschweitzerandClaude Fable 5 e22ea0fa4a feat(assets): wardrobe engine + proof t-shirt — batch-fit, offset-shell, 4-region tint, thrds logo (T-1089)
Engine: tooling/garment-fit/blender_batch_fit_skinned.py (G1 — the skinned
Surface-Deform batch the old script couldn't produce; self-check green),
blender_author_offset_shell.py (route c: garment shells from OUR body
segments, weights inherited by construction, bone-plane cuts, procedural
RGBA region mask, UV2 chest channel), make_logo.py. Shader:
toon_garment.gdshader — channel-blended 4-region tint + UV2 logo composited
after tint / before toon shading. Proof: tshirt_modern fitted to the six
healthy bodies, manifest entry with style:modern + logo_capable, thrds
wordmark, 18-assertion test suite, 216-capture chromakey QA.

Key finding (Q-060 evidence): single-reference SD-fit of an offset-shell
degrades on girth-divergent bodies (muscular_m worst) — 24mm standoff
tripled headroom but the mechanism limits. Route guidance recorded on
T-1089: per-body shell authoring for offset-shell garments; SD-fit for
derived/hand-authored ones.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:21:33 +02:00
jpmschweitzerandClaude Fable 5 b54b8189d9 fix(assets): T-1090 — five fork bodies rebuilt; mesh+armature scale baked together
Root cause was double: (1) segment_body's apply_scale scaled fork MESH
vertices but not each segment's embedded armature — the shared-skeleton
compositor relocates segments by bone name, so internally-inconsistent
segments exploded (child worst at 0.72x: head bone 0.35m above its mesh —
detached heads, spider arms); (2) thin/heavy were stale high-poly artifacts
from an older segmentation, missing seg_hips. Fix: apply_fork_scale bakes
mesh AND embedded armature via transform_apply (edit-bone poking shears
chains — first attempt proved it); new blender_rebuild_forks.py rebuilds
exactly the five from the owned UBC Source exports. All five now 19 low-poly
segments matching the healthy six.

QA on the real compositor (idle+walk, front+side): 5/5 coherent; healthy
controls unchanged. Q-060 answered at the extremes: 15/15 peasant-garment
Surface Deform binds on the forks, zero shrinkwrap fallbacks, no
bust-through — the 6-of-11 placeholder debt is paid (fork garment variants
included). Follow-up filed: T-1094 (child/teen composite at adult height —
pre-existing shared-skeleton normalization, not a regression).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:06:10 +02:00
jpmschweitzerandClaude Fable 5 c82ea3ec92 feat(client): purchased UAL tiers wired — lib/Clip addressing, stance enter/exits, turn-in-place (T-1088)
ual1.glb (120 clips) + ual2.glb (134) replace the free-tier subsets;
CharacterVisual loads both under explicit library names with lib/Clip exact
addressing (bare names keep cross-library search). Gait table re-pointed;
two new one-shot overlays in the gait machine: stance transitions
(Sprint/Crouch Enter/Exit, destination-Enter priority, clip-length timer,
movement never stalls) and turn-in-place (Turn90/180 L/R from shortest-arc
sign, >=60/135 deg idle yaw jumps, retrigger-guarded). All clip names
verified by dumping the imported GLBs. 70 gait tests + live smoke green
(both libraries load with exact counts).

S9 live-tune list: turn handedness (unverified headless — one-line swap),
TURN_SPEED_SCALE=2.0 compromise vs the snappy yaw ease, turn-on-stop feel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 21:53:35 +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 6453f71220 fix(client): re-assert mouse facing after each follow step — vision-cone flap mitigation (T-1088)
Live finding: during a path-follow the cone snapped to path-forward on every
accepted step (server facing_from_delta overwrites Facing; the change-gated
SetFacing never re-sends an unchanged octant) and stayed there until the
mouse crossed an octant boundary. The follower now re-asserts the current
mouse octant 100ms (~2 ticks) after each emitted step — same-tick re-asserts
lose, movement wins within a tick — shrinking the flap to a ~100ms blip.
Full stability needs server-side aim-lock: filed T-1093 (Q-084's walk-vs-aim
split, now with play evidence); wire semantics untouched per the sidequest's
presentation-layer constraint.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:44:52 +02:00
jpmschweitzerandClaude Fable 5 cb6b39331d feat(client): follow-facing — body commits to path, mouse drives layered head/torso look-at (T-1088)
During an RMB path-follow the body yaw locks to the leg direction (rig
commit_body_to_motion, from interpolated velocity — immune to SetFacing
interleaving between throttled steps). The mouse instead drives a layered
look-at: LookAtModifier3D pair on Head (±70°) + spine_02 (±30° torso twist
for looking far lateral/behind — past their sum the character physically
cannot look further without turning). Forward axis measured from the
armature rest pose (+Z), not guessed. Influence fades in/out on follow
start/end. Pure client presentation per D-249; SetFacing still rides the
wire, so the server vision cone follows the mouse while walking — the
character looks where the player points.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:35:43 +02:00
jpmschweitzerandClaude Fable 5 72f88dae1d fix(client): median-of-5 timing in fog perf test — kills load flake (T-1092)
test_visibility_texture_update_performance asserted a single wall-clock
sample against the 0.5ms budget and blocked two pushes while a live session
shared the machine (0.704ms / 0.623ms; 46/46 green in isolation). Median of
5 runs preserves the D-059 budget intent while absorbing load spikes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:18:01 +02:00
jpmschweitzerandClaude Fable 5 98032e9d5a feat(client): cutaway defaults to mode 2 (both) — user verdict from the live session (T-1088)
Known interiors open at a glance (bottom walls low) AND the sightline
corridor punches through unexplored exterior walls; C still cycles modes.
sandbox_constants.gd also carries the path-preview/gesture knobs for the
click-to-move feature landing in the next commit (single tuning file).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:51:38 +02:00
jpmschweitzerandClaude Fable 5 e32a041778 feat(client): cutaway modes — corridor / bottom-walls-low / both, C-key live toggle (T-1088)
Live-session two-minds resolution: the trippy sightline corridor stays as a
mode (candidate signature look); mode 1 drops any wall with a KNOWN non-wall
tile on its camera-far side to the stub (X2 bottom-walls read — the player
sees the room without walking to it); mode 2 combines. Bottom-wall flag rides
MultiMesh INSTANCE_CUSTOM.r, updated on paint and when newly-learned floors
promote camera-ward walls; camera-far directions derived from the live
WorldRoot basis, never hand-derived. Default stays corridor pending the
feel verdict.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:16:14 +02:00
jpmschweitzerandClaude Fable 5 2db7dd25e1 fix(client): cutaway cuts the camera-character sightline corridor, not a proximity dome (T-1088)
Live-session finding: the half-disc cut bit nearby side walls while leaving
the wall actually occluding the character at full height, with dome-contour
scallops across the two-row walls. Rewritten as a sightline corridor: walls
within CUT_CORRIDOR_HALF_W of the character's x, camera-side, out to a
pitch-derived reach (WALL_H / tan(pitch) — how far a wall can still occlude
in ortho; ~4.3 m at -30, breathes with the T-cycle tilt) drop to the stub.
FollowCamera3D exposes pitch_deg(); reach clamped 0.5-16 m.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:01:49 +02:00