Commit Graph
100 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 093b24e38e feat(assets): face-based segmentation pipeline + solidify for hair/clothing
Segmentation:
- Face-based exclusive assignment (no overlap, no caps needed)
- Hips split from torso (pelvis as own segment)
- Torso_upper independent (spine_03 + clavicle, not a variant)
- Clavicle moved from arm_upper to torso_upper

Hair pipeline:
- Solidify modifier (20mm) for scalp hair volume
- Normal recalculation before solidify for consistent direction
- Eyebrows/facial hair NOT solidified
- Fixed mask generation (was outputting black, now white)

Clothing pipeline:
- Solidify modifier (25mm) for clothing thickness
- Peasant shoes added from Fantasy pack

Tooling:
- convert_outfit.py with solidify support
- inspect_glb.py, check_hair_symmetry.py for debugging
- Segment reference distribution locked
- Q-063 footsteps VFX filed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:43:04 +01:00
jpmschweitzerandClaude Opus 4.6 4d9840b68f feat(client): character creator overhaul — manifest, segments, eye color
Major changes from runtime testing and iteration:
- Asset manifest (manifest.json) controls all available content —
  replaces filesystem scanning, solves DirAccess/PCK export issue
- Dynamic tabs: only show tabs with manifest content
- Body segmentation: face-based exclusive assignment, hips split from
  torso, torso_upper independent (not a variant)
- Eye color with iris-only mask from T_Eye_Split.png green channel
- Eyebrows tinted with hair color (from body segment, not separate GLB)
- Hair/clothing loaded as skinned meshes on shared skeleton
- Segment hiding disabled for clothing (solidify handles coverage)
- Gender-aware randomizer (no facial hair on female/teen)
- Clothing slots hidden when empty in manifest
- UI: color docks docked to bottom on all tabs, padding, flow layout
- Debug tab with per-segment visibility toggles
- Screenshot automation with test config JSON

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:42:33 +01:00
jpmschweitzerandClaude Opus 4.6 8218d5a942 fix(client): remove ALPHA output from toon shaders — fixes depth sorting
Writing ALPHA caused Godot to treat all meshes as transparent, breaking
per-pixel depth testing. Hair clipped through the head, clothing through
the body — all caused by object-level depth sorting instead of z-buffer.
Removing ALPHA makes everything opaque with correct depth behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:39:05 +01:00
jpmschweitzerandClaude Opus 4.6 2614c3c57a fix(client): build tab panel entirely in code — remove from .tscn
TabContainer and its VBoxContainer parent vanish during scene
instantiation when loaded as a child of MainMenu in Godot 4.6.
Moving the entire tab panel construction to _ready() resolves
the issue — the .tscn now only defines the preview side and footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 19:11:37 +01:00
jpmschweitzerandClaude Opus 4.6 307a221527 fix(client): resolve TabContainer via find_child instead of @onready
@onready path resolution fails when the scene is instantiated as a
child of MainMenu — the node path is valid in the .tscn but the
layout hierarchy breaks during child instantiation in Godot 4.6.
Using find_child() is more robust for scenes that are dynamically
added to another scene's tree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:51:09 +01:00
jpmschweitzerandClaude Opus 4.6 a2ef1c34cb fix(client): create TabContainer children programmatically
Godot 4.6 TabContainer silently destroys children defined in .tscn
during scene instantiation ("Parent path has vanished"). Moving tab
shell creation to _ready() fixes the right-side settings panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:41:24 +01:00
jpmschweitzerandClaude Opus 4.6 18ee89d066 feat(client): add animation support to character compositor
Load UAL animation library onto the skeleton and play idle animation
after character assembly. Adds play_animation() and stop_animation()
public API. Searches all animation libraries for matching animation
name with common idle variant fallbacks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:33:36 +01:00
jpmschweitzerandClaude Opus 4.6 86acb87771 fix(client): explicit Variant type on JSON.parse_string return
GDScript strict mode rejects type inference from Variant-returning
functions. JSON.parse_string() returns Variant — use explicit type
annotation to satisfy the parser.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:28:35 +01:00
jpmschweitzerandClaude Opus 4.6 5fc9c03683 chore(server): auto-format Rust code (cargo fmt)
Pre-existing formatting issues in generator_spike.rs and
validate_ron.rs caught by the new pre-push lint hook.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:26:06 +01:00
jpmschweitzerandClaude Opus 4.6 c87dbbf4b6 chore(config): add pre-push hook for GDScript and Rust linting
Runs GDScript parse check (headless Godot) and Rust lint (clippy +
fmt --check) before every push. Catches type inference errors and
formatting issues that code reviews missed in sprint 28.

Uses the existing .config/hooks/ infrastructure (core.hooksPath).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:23:56 +01:00
jpmschweitzerandClaude Opus 4.6 acb1119b2a fix(client): add explicit type annotations for GDScript strict mode
Dictionary.get() returns Variant, which fails GDScript's strict type
inference (warnings-as-errors). Add explicit type casts on all
dictionary access in clothing and accessory tab code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:21:50 +01:00
jpmschweitzerandClaude Opus 4.6 145d8fec17 refactor(client): remove archetype selection, fix Randomise→Randomize
- Remove character_select.tscn and character_select.gd entirely
  (Smuggler/Detective archetypes removed per v0.2 pivot)
- New Game goes straight to character creation
- Rename Randomise→Randomize throughout (US English convention)
- Add *.import and *.uid to client gitignore (import artifacts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:18:47 +01:00
jpmschweitzerandClaude Opus 4.6 92209f85e6 fix(decisions): clarify D-148 overhead camera angle convention (0°→-80°)
The original "top-down (0°)" was ambiguous — 0° in the code's pitch
convention is horizontal (eye-level), not overhead. The implementation
correctly uses -80° for near-top-down. Updated the decision text to
match the confirmed implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:57:18 +01:00
jpmschweitzer 5718f44b8b Merge remote-tracking branch 'origin/client' 2026-03-22 17:56:47 +01:00
jpmschweitzerandClaude Opus 4.6 ebac8c9580 fix(client): address PR #99 review round 2 — 3 doc/comment fixes
1. character_creation.gd:125 — cam_pitch_idx comment: 2=overhead(0°) → (-80°)
2. character_visual.gd:37 — segment arithmetic: 17+2+2=21 → 14+2+2=18
3. decisions/scope.md D-158 — overhead angle: 0° → -80° to match code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:54:53 +01:00
jpmschweitzerandClaude Opus 4.6 2c83809329 fix(client): correct second D-160 segment count reference (21→18)
Stig's review fix caught the first reference (line 9) but missed the
class docstring at line 27. Both now say 18 segments per D-160.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:48:50 +01:00
jpmschweitzerandClaude Opus 4.6 321003bd9b chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:46:31 +01:00
jpmschweitzerandClaude Opus 4.6 33d7d6996b fix(ui): address PR #99 review — character creation editor fixes
13 fixes from PR #99 review on #705 (character editor):

- #10/#11: Add _get_swatch_color() helper; fix stale closure in
  _make_color_swatch (reads current color at click time, not
  construction time); fix _on_modal_ok to use helper instead of
  wrong get_child(0) traversal
- #12: Replace HSV palette with D-165 hardcoded hex values (6×9
  rows, muted HSL per spec — reds/greens/blues/purples/browns/grays)
- #13: Fix fallback asset IDs to match actual files — hair: bald/
  bob/buzzed/long; heads: head_001–004; facial hair: beard/moustache/
  mutton_chops (stubble removed — no asset)
- #14: Remove invented "slot field" TODO comment; replace with
  name-prefix convention note
- #15: Fix overhead camera pitch 0.0°→-80.0° (0° was horizontal,
  not top-down as intended per D-158)
- #16: Make hair highlight swatch non-interactive (_make_display_swatch);
  remove _on_hair_highlight_changed and _hair_highlight_auto flag
- #17: Remove no-op self-assignment in _on_hair_selected; remove
  redundant assignment inside _hair_highlight_auto block
- #18: Store _clothing_dock_container/_accessory_dock_container as
  instance vars — eliminates fragile get_child(3).get_child(0) chain
- #19: Fix test_r_key_triggers_randomise — replaces assert_bool(true)
  with a real assertion checking body_type or skin_tone changed
- #20: Cache scan results in _cached_hair_ids/_cached_head_ids during
  tab build; _on_randomise() reads cache (no re-scan per keypress)
- #21: Fix character_visual.gd docstring "21 segments" → "18 segments"
- #22: Fix _get_accessory_ids_for_slot — apply slot name-prefix
  filtering instead of returning all accessories for every slot

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:46:10 +01:00
jpmschweitzer 499c602609 Merge remote-tracking branch 'origin/visual' 2026-03-22 17:38:45 +01:00
jpmschweitzerandClaude Opus 4.6 00479fab09 fix(assets): address PR #98 review — all 7 items
Warning fix:
- Remove torso_upper from hides in 3 coverage.json files
  (coveralls_basic, jacket_utility, shirt_henley) and the generator
  script — redundant when torso_variant is "full"

Suggestions addressed:
- Add pants_cargo authoring note about foot segment distinction
- Add pipeline_log.json provenance output to Surface Deform batch
  pipeline (tracks method per variant: surface_deform/shrinkwrap/copy)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:22:33 +01:00
jpmschweitzerandClaude Opus 4.6 56e8c70081 feat(client): character creation screen with live 3D preview (#705)
Full character creation UI with 5-tab customisation panel (Body, Head,
Hair, Clothing, Accessories), live 3D compositor preview via SubViewport,
D-165 color picker modal, keyboard navigation, and game flow integration.

- CharacterCreation scene + script (~1440 lines) implementing wireframe spec
- SubViewport with Camera3D (frontal/dramatic/overhead presets per D-158)
- Cardinal rotation (Q/E) per D-155, randomise (R), Tab/Enter/Esc navigation
- Body type grid (11 types, D-159), skin tone dock (9 tones, shared state)
- Head template, hair, facial hair, eyebrow grids with DirAccess asset scanning
- Clothing slot selector with per-item Primary/Secondary/Accent tints
- Accessory slot selector with Primary/Secondary tints (Array[Color] descriptor)
- 54-swatch color picker modal (D-165) with hex input and recent colors
- Auto-derive flags for highlight, eyebrow tint, facial hair tint from hair primary
- Game flow: main_menu → archetype select → character creation → game start
- GameState.character_visual_descriptor field for gameplay consumption
- Updated accessory_tints from single Color to Array[Color] in descriptor + compositor
- 40+ GdUnit tests covering scene structure, signals, keyboard nav, color derivation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:16:47 +01:00
jpmschweitzerandClaude Opus 4.6 ec34f27664 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:57:23 +01:00
jpmschweitzerandClaude Opus 4.6 042deb6b75 feat(assets): add initial clothing set with all body type variants
Five placeholder clothing items fitted to all 11 body types via the
Surface Deform batch pipeline (60 GLBs total):
- coveralls_basic, jacket_utility, pants_cargo, shirt_henley, boots_work

Each item includes reference.glb, reference_mask.png, coverage.json,
and 11 body-type variant GLBs. All Surface Deform binds succeeded
with no Shrinkwrap fallbacks needed (#711).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:56:57 +01:00
jpmschweitzerandClaude Opus 4.6 4a605ffea4 feat(assets): add Surface Deform batch pipeline and clothing authoring scripts
Three new Blender/Python scripts for the clothing production pipeline:
- blender_surface_deform_batch.py: fits a reference clothing GLB to all
  11 body types via Surface Deform modifier in headless mode
- blender_create_clothing_refs.py: procedurally creates placeholder
  reference meshes from average_m body segments
- setup_clothing_metadata.py: generates coverage.json and
  reference_mask.png for each clothing item

Surface Deform headless bind confirmed working in Blender 5.0 via
temp_override — upgrades confidence from MEDIUM to HIGH (#710).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:56:38 +01:00
jpmschweitzerandClaude Opus 4.6 fa0af110f1 fix(docs): correct D-160 segment count in asset org doc footer (17→18)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:49:25 +01:00
jpmschweitzerandClaude Opus 4.6 029cf67e08 fix(design): relabel auto-derive to "follow primary"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:45:56 +01:00
jpmschweitzerandClaude Opus 4.6 fb71ff4c9f fix(design): align hair color dock — labels above swatches in 4 columns
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:44:59 +01:00
jpmschweitzerandClaude Opus 4.6 143185741e fix(design): address PR #97 review — all items
Review fixes:
- Eyebrows moved from Head tab to Hair tab (with brow tint + beard tint)
- Head tab now has skin tone dock only
- Eyebrow names match asset keys (regular, female, teen, thick)
- Added earring L/R and necklace slots to Accessories tab
- Added wrist L/R slot labels already present, shifted grid for 3rd row
- Removed "Other" row label for Child (no gendered framing)
- D-155 cross-reference anchor fixed (was stale "full-360-rotation")
- D-160 segment count corrected 17→18 (added torso_upper)
- D-164 rationale corrected: Superhero mesh retained as muscular type
- Added compositor segment visibility note to implementation section
- D-165 cross-ref clarified (clothing colors only, not skin tones)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:42:50 +01:00
jpmschweitzerandClaude Opus 4.6 93260ed696 docs(design): add character creation screen wireframes (#685)
6 wireframe views (Body, Head, Hair, Clothing, Accessories, Color Picker)
as Frame0 JSON source + PNG exports, plus summary spec document.

Layout: 60% preview pane with [Q]/[E] rotation, 35% tabbed panel with
search bar, scrollable grid, and docked color controls per tab.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:28:00 +01:00
jpmschweitzerandClaude Opus 4.6 a435163fd0 docs(decisions): update D-159 body type count (9→11), add D-165 color palette
D-159 was missing teen body type — updated to 5 types × 2 genders + 1 child = 11.
D-165 records the character creator color palette (6×9 HSL-computed swatches).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:27:45 +01:00
jpmschweitzerandClaude Opus 4.6 0b1bfe6a96 fix(assets): address PR #96 review — all 8 items
- Fix stale 21→18 segment count in architecture doc, script docstrings,
  and disk budget table (critical — both reviewers)
- Add average_m/README.md noting role as clothing reference body
- Add __main__ guards to diagnostic scripts
- Preflight-check all source paths in blender_process_bodies.py
- Document solid-white hair masks as v0.2 placeholder for multi-region
- Add fallback size comment for head mask generation
- Add bald_mask.png (1×1 black) for sidecar convention consistency
- Document child non-uniform scale rationale (Y=0.72 vs XZ=0.75)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:24:50 +01:00
jpmschweitzerandClaude Opus 4.6 8f7e0f09b0 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 15:09:28 +01:00
jpmschweitzerandClaude Opus 4.6 d54040e3b7 feat(assets): add body type segment GLBs for all 11 body types
Adds 198 body segment GLBs (11 body types × 18 segments each) to
client/assets/characters/bodies/:

DIRECT BODY TYPES (6): average_m, average_f, muscular_m, muscular_f,
teen_m, teen_f — segmented from Quaternius FullBody GLTF exports

FORK BODY TYPES (5, auto-scaled from source mesh):
  thin_m, thin_f   — scale (0.82, 1.0, 0.88), narrower/ectomorph
  heavy_m, heavy_f — scale (1.20, 1.08, 1.0), wider/endomorph
  child            — scale (0.75, 0.72, 0.75), forked from teen_m

Each body type contains 18 segments:
  seg_head, seg_neck, seg_torso, seg_torso_upper,
  seg_arm_upper_l/r, seg_arm_lower_l/r, seg_hand_l/r,
  seg_leg_upper_l/r, seg_leg_lower_l/r, seg_foot_l/r,
  seg_eyes, seg_eyebrows

Fork directories include README.md flagging auto-generated status
and scale values. Fork proportions may need artist refinement.

Segmentation uses BMesh vertex-weight selection + 1-ring boundary
overlap for seam-free deformation. D-159 (11 body types), D-160
(18 segments), D-164 (Quaternius source assets).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 15:09:00 +01:00
jpmschweitzerandClaude Opus 4.6 8473986905 feat(assets): add head template library and hair/eyebrow accessory GLBs
Adds the character head and hair accessory asset tiers:

HEAD TEMPLATES (client/assets/characters/heads/templates/)
  4 head GLBs from Quaternius OnlyHead .blends:
  head_001 (regular_f), head_002 (regular_m),
  head_003 (teen_f), head_004 (teen_m)
  Each paired with a 1024x1024 solid-white _mask.png (full-face tintable)

HAIR (client/assets/characters/hair/)
  13 hairstyle GLBs + masks: bob, buns, cornrows, curly, long_wavy,
  medium_wavy, pixie, ponytail, short_fade, short_messy, short_neat,
  undercut, up_do; plus bald.glb placeholder

FACIAL HAIR (client/assets/characters/facial_hair/)
  3 GLBs + masks: beard, moustache, mutton_chops

EYEBROWS (client/assets/characters/eyebrows/)
  4 GLBs (no masks — tinted directly by shader):
  female, regular, teen, thick

Masks are white (full coverage) pending future artist-authored greyscale
maps for per-region tinting. Eyebrows excluded per compositor spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 15:08:11 +01:00
jpmschweitzerandClaude Opus 4.6 a60493c2f7 chore(assets): add Blender headless pipeline scripts for character assets
Adds 8 scripts to tooling/ for the Sprint 28 character asset pipeline:

- blender_segment_body.py: segments a FullBody GLTF into 18 body-part
  GLBs using BMesh vertex-weight selection + 1-ring boundary expansion
- blender_process_bodies.py: batch driver for all 11 body types (6 direct
  + 5 auto-scaled forks: thin, heavy, child)
- blender_process_heads.py: processes 4 OnlyHead .blend files into GLBs
  + 1024x1024 solid-white mask PNGs (D-159, D-160)
- blender_process_hair.py: converts 20 GLTF hairstyle/eyebrow exports
  to accessory GLBs + mask PNGs, creates bald.glb placeholder
- blender_inspect_body.py: diagnostic — lists mesh objects + vertex counts
- blender_inspect_vgroups.py: diagnostic — lists vertex groups on skinned mesh
- glb_strip_utility_nodes.py: post-process GLBs to strip utility nodes
  (Icosphere, WGT-*, DEF-*, ORG-* meshes) from the GLTF scene graph
- check_icosphere.py: diagnostic — reads GLB JSON chunk to verify node list

All Blender scripts require flatpak Blender via tooling/blender wrapper.
Scripts must live in project directories (flatpak sandbox blocks /tmp/).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 15:07:55 +01:00
jpmschweitzerandClaude Opus 4.6 bcd5887b82 fix(client): address PR #95 review — 8 items
SLOT_TO_BONE expanded to 12 slots (earring_l/r, necklace, wrist_l/r).
_clear() outline teardown ordering fixed. toon_masked.gdshader: removed
cull_disabled, added ALPHA output. _attach_to_bone() returns node instead
of bool. skin_tone clamped in from_dict(). D-160 segment count 15→17.
Blender scripts: docstrings + __main__ guards. Reload test tightened.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:59:23 +01:00
jpmschweitzerandClaude Opus 4.6 f34e6362c4 docs(decisions): update camera presets, bone names, accessory slots
D-148/D-158: confirm three camera presets (frontal -5°, dramatic -30°,
top-down 0°), supersede 45° isometric. Update asset organization doc
with verified Quaternius bone names, add wrist_l/r and earring_l/r
accessory slots, fix eyebrow naming convention (short names, no prefix).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:48:57 +01:00
jpmschweitzerandClaude Opus 4.6 23ec1ddebd feat(client): CharacterVisualDescriptor and compositor (#703, #704)
Add CharacterVisualDescriptor (11-variant BodyType enum, wire format
encode/decode, body_type_key mapping) and CharacterVisual compositor
(runtime 3D character assembler with slot architecture, BoneAttachment3D,
clothing coverage, recolor mask loading, skin tone tinting, bone
validation). Includes 64 unit tests and Blender utility scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:48:47 +01:00
jpmschweitzerandClaude Opus 4.6 ff3a8e95e4 feat(client): port character shaders, skin tones, skeleton, and animations (#702, #706)
Port proven shaders (toon, toon_masked, outline) and skin tone textures
from quaternius-aesthetic spike to production client. Import 65-bone
armature and Universal Animation Libraries (UAL1 + UAL2). Set
gltf/embedded_image_handling=3 in project.godot (critical import setting).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:48:37 +01:00
jpmschweitzerandClaude Opus 4.6 ea5263ce2c chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:06:57 +01:00
jpmschweitzerandClaude Opus 4.6 61eafbb552 docs(architecture): add character asset organization proposal
Directory structure, naming conventions, segmentation spec, and import
pipeline for the 11 body type / 21 segment character system. Covers
Quaternius Source tier mapping, CharacterVisualDescriptor contract,
Surface Deform batch clothing pipeline, and coverage.json format.
Built from spike findings with all meshes starting fresh from Source
.blend files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:06:38 +01:00
jpmschweitzerandClaude Opus 4.6 496953f69c feat(assets): add Quaternius Source tier bodies and fitted outfits
Source tier purchase provides 3 body types × 2 genders with .blend
source files: Regular (→Average), Superhero (→Muscular), Teen (→Thin).
Only Heavy body type still needs hand-authoring.

Surface Deform pipeline validated: clothing authored for Regular body
successfully fitted to Superhero and Teen bodies with zero bind
failures across all 12 outfit × body combinations.

Adds source-bodies/, outfits-fitted-source/, outfits-fitted-source-female/,
and Blender fitting scripts for both genders. Showcase updated with
8 body type entries and per-body-type fitted outfit scanning.

Resolves Q-062 (Source tier contents: Regular + Teen confirmed).
Partially resolves Q-060 (Surface Deform quality: binds succeed,
visual clipping is a compositor concern, not pipeline failure).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:22:26 +01:00
jpmschweitzerandClaude Opus 4.6 c380ef8a84 feat(assets): add Quaternius aesthetic validation spike
Complete character pipeline spike validating the Quaternius rig as
foundation for The Settled Reach's 3D character system.

Validated:
- 65-bone skeleton + Universal Animation Library as rig foundation
- Body segmentation into 15 bone-group regions with 1-ring vertex overlap
- Trellis-generated heads via BoneAttachment3D
- Skin tone texture generation pipeline (9 variants from source)
- Toon shader + inverted hull outline at gameplay zoom
- CharacterVisual class as compositor prototype

Failed (documented):
- Trellis clothing auto-rigging (sculptures, not garments)
- Bone scaling for body type variants (catastrophic joint deformation)
- Runtime per-segment clothing scaling (same failure as Blender-side)

Includes: Blender pipeline scripts (segmentation, auto-rigging, Surface
Deform fitting), Godot showcase with interactive controls, automated
screenshot cycle, smoke tests, team reviews, and VERDICT.md.

D-158 through D-164 locked. Q-060 through Q-062 opened.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:29:22 +01:00
jpmschweitzerandClaude Opus 4.6 63b7d69535 docs(decisions): add character pipeline decisions from Quaternius spike
D-158: Frontal camera angle for editor/mugshot UI
D-159: Character body type enum (4 adult × 2 genders + 1 child)
D-160: Body meshes segmented into 15 bone-group regions
D-161: Head always separate mesh on Head bone
D-162: Clothing pre-baked per body type via Blender Surface Deform
D-163: Trellis generates unique heads via BoneAttachment3D
D-164: Fork Quaternius skeleton, replace all body meshes

Q-060: Surface Deform quality at extreme body types
Q-061: Base clothing mesh count for v0.2
Q-062: Quaternius Source tier body type coverage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:28:35 +01:00
jpmschweitzerandClaude Opus 4.6 64e188384b chore(config): add spike gitignore rules and Blender wrapper
Add .gitignore entries for spike Godot caches, import artifacts,
and vendor asset downloads. Add tooling/blender wrapper that resolves
flatpak/native Blender installs and auto-converts relative paths to
absolute for flatpak sandbox compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:28:12 +01:00
jpmschweitzerandClaude Opus 4.6 30fd8e4886 chore(db): update database backup after planning merge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:17:51 +01:00
jpmschweitzerandClaude Opus 4.6 033e9afb2b feat(assets): add body type showcase with 16 Trellis-generated bodies
8 body types (slim, average, stocky, tall_lean, short_stout, athletic,
heavyset, petite) × male/female. Style-anchored concept images fed
through Trellis and Blender postprocess.

Adds body_showcase scene with grid display, highlight controls (1-8),
and toon shader with cull_disabled for Trellis mesh normals.

Finding: Trellis works well for props but produces rough character
meshes — characters will likely need composite body parts approach.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 01:21:53 +01:00
jpmschweitzerandClaude Opus 4.6 c27ff44d96 docs(skills): document Trellis API params and Godot import settings
Full parameter reference for image_to_3d (9 params) and extract_glb
(3 params) with failure mode table. Added Godot embedded_image_handling
guidance and input requirements for concept images.

Fix Blender export_image_format from 'PNG' to 'AUTO' (Blender 5.0
removed PNG as a valid option).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 01:21:30 +01:00
jpmschweitzerandClaude Opus 4.6 98f8cbab0d fix(db): fix Trellis connector for updated Gradio API
- Add session_hash to all API calls (maintains gr.State between
  image_to_3d and extract_glb)
- Pass is_multiimage=False at position 2 (9-param image_to_3d)
- Pass output_buf=None at position 0 (3-param extract_glb)
- Document full API parameter reference and failure modes
- Add trellis-batch.sh for gentle sequential batch generation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 01:20:54 +01:00
jpmschweitzerandClaude Opus 4.6 dd9dc9f67c feat(skills): add image-gen Gemini API connector script
Python wrapper for the Gemini image generation API, used by the
image-gen skill to produce concept art for the 3D pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:35:19 +01:00
jpmschweitzerandClaude Opus 4.6 4516a3bac4 chore(skills): streamline image-gen skill, update config
Simplified image-gen SKILL.md, removed obsolete DDS/style references
(replaced by Gemini API connector). Updated audio_connector, gitignore,
and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:35:01 +01:00
jpmschweitzerandClaude Opus 4.6 8ab042e3f1 docs(decisions): add Sprint 28 character visuals decisions
D-148 through D-157: camera angle, live 3D characters, inverted hull
outline, server facings, performance LOD, player indistinction, cardinal
rotation, faction colors as narrative, alarm clock game start.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:34:28 +01:00
jpmschweitzerandClaude Opus 4.6 6dee6b73f0 docs(design): add character visuals spec and compositor API from workshop
Round 22 workshop output: character-visuals-spec.md (color mesh regions,
LOD tiers, layered composition) and compositor-api-spec.md (Node3D
architecture, CharacterColors data structure, set_color API).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:34:16 +01:00
jpmschweitzerandClaude Opus 4.6 e836be1ad4 feat(skills): add glb-gen skill and Trellis/image connectors
New skill for converting concept images to game-ready .glb models via
Trellis (image-to-3D) and Blender post-processing (scale normalization,
material setup, recolor mask generation).

Connectors: trellis_connector.py (Gradio API), image_connector.py
(Gemini API for concept art).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:33:49 +01:00
jpmschweitzerandClaude Opus 4.6 f204bf3372 feat(assets): add 3D pipeline spike — Trellis to Godot with recoloring
Proves the full asset pipeline: concept image → Trellis 3D → Blender
post-process → Godot render with toon shader and recolor masks.

Key findings:
- gltf/embedded_image_handling=3 required (extract mode silently fails)
- Luminance-preserving recolor shader keeps texture detail
- Trellis output quality is sufficient for isometric game assets
- Camera uses pivot-based system with screen-aligned WASD pan

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:33:35 +01:00
jpmschweitzerandClaude Opus 4.6 85f2f53914 chore(meta): activate Sprint 28: Character Visuals
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 13:14:35 +01:00
jpmschweitzerandClaude Opus 4.6 e79a7dea02 chore(meta): plan Sprint 28: Character Visuals
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 12:49:21 +01:00
jpmschweitzerandClaude Opus 4.6 2a3c6b4d12 chore(meta): release v0.1.27
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 12:36:55 +01:00
jpmschweitzer 06d9abbc63 Merge remote-tracking branch 'origin/copy'
# Conflicts:
#	content/npc-conversations/overheard.yaml
#	server/content/global/zone-types/administrative_civil.ron
#	server/content/global/zone-types/administrative_judicial.ron
#	server/content/global/zone-types/archaeological_site.ron
#	server/content/global/zone-types/commercial_market.ron
#	server/content/global/zone-types/commercial_transit.ron
#	server/content/global/zone-types/detention_facility.ron
#	server/content/global/zone-types/diplomatic_elite.ron
#	server/content/global/zone-types/entertainment_hospitality.ron
#	server/content/global/zone-types/entertainment_venue.ron
#	server/content/global/zone-types/extraction_platform.ron
#	server/content/global/zone-types/extraction_space.ron
#	server/content/global/zone-types/extraction_surface.ron
#	server/content/global/zone-types/industrial_manufacturing.ron
#	server/content/global/zone-types/industrial_processing.ron
#	server/content/global/zone-types/medical_facility.ron
#	server/content/global/zone-types/military_garrison.ron
#	server/content/global/zone-types/port_fishing.ron
#	server/content/global/zone-types/port_maritime.ron
#	server/content/global/zone-types/port_space.ron
#	server/content/global/zone-types/port_surface.ron
#	server/content/global/zone-types/research_station.ron
#	server/content/global/zone-types/residential_dispersed.ron
#	server/content/global/zone-types/residential_station.ron
#	server/content/global/zone-types/residential_surface.ron
#	server/content/global/zone-types/rural_aquaculture.ron
#	server/content/global/zone-types/rural_orbital.ron
#	server/content/global/zone-types/rural_pastoral.ron
#	server/content/global/zone-types/security_checkpoint.ron
#	server/content/global/zone-types/wilderness_frontier.ron
#	server/content/npc-conversations/overheard.ron
#	server/content/npc-conversations/overheard.yaml
#	server/content/npc-conversations/overheard.yaml.deprecated
#	tooling/validate-ron
2026-03-17 12:31:38 +01:00
jpmschweitzerandClaude Opus 4.6 034c1c6e37 fix(simulation): apply PR #94 review suggestions
- validate_ron: add eligible_roles referential integrity check against
  defined RoleSpec.id values in zone-type templates
- v01-yaml-content-audit.md: fix grep path from data/templates to
  server/data/templates in the superseded-files verification command
- pre-commit hook: comment out nonexistent check-decision-ids script
  to stop per-commit warnings until the script is implemented

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 12:25:07 +01:00
jpmschweitzerandClaude Opus 4.6 3a86b8bdad fix(copy): address PR #93 review — content fixes
Warnings fixed:
- Delete orphaned overheard.yaml (Hoshe)
- Remove validate-ron line 60 spurious single-slash regex (Hoshe+Paula)
- Replace "the car" with "the departure point" in diplomatic_elite (Miri)
- Soften dock worker accusation in ovh_ifr_003 (Miri)
- Fix relationship_context Colleague→Superior in ovh_hos_002 (Miri)

Suggestions applied:
- Fix CHANGELOG count 15→16 conversations
- Update review doc status to "all issues resolved"
- Add economic/density comment to 5 files missing it
- Fix military_garrison Social→OffDuty context on mess table primitive
- Rewrite residential_station trait-description as observable behavior
- Add gatebuilder ruin note to archaeological_site header

Follow-up tickets: #695, #696, #697

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:19:34 +01:00
jpmschweitzerandClaude Opus 4.6 c7a1164ae1 docs(simulation): audit and flag v0.1 YAML content (#672)
Survey 63 YAML files across content/, data/templates/, and client/data/:
14 deprecated (named NPC detective arc), 25 convertible (reusable schemas,
enums, factions), 4 already-superseded, 20 infrastructure. No deletions —
flag-only audit with recommended disposition priorities.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 12:02:35 +01:00
jpmschweitzerandClaude Opus 4.6 51febc9ab6 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:58:17 +01:00
jpmschweitzerandClaude Opus 4.6 c30baee373 feat(db): add cross-culture name pool collision checking to validate-ron
New --check-name-collisions mode scans all culture-*.ron files and
reports given/family names appearing in multiple culture pools.
Exits 1 on collision with machine-readable output. Sprint 26 review
caught 6 overlaps manually — this automates the check.

Ticket: #665

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:58:00 +01:00
jpmschweitzerandClaude Opus 4.6 d9c2811842 feat(content): replace overheard.yaml with generator-compatible RON format
Archives the 48 hand-authored overheard conversations that referenced
deleted named NPCs (Kael, Sera, Torek). New RON pool format is
parameterized by role pair and zone type, culture-neutral, with
knowledge_payload for investigative value. 15 sample conversations
across 5 zone types. Adds content pattern note to decisions/content.md.

Ticket: #664

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:57:49 +01:00
jpmschweitzerandClaude Opus 4.6 9a89d0cc7c feat(content): author 29 zone-type behavior templates
Completes the zone-type template library (31 total with the 2 existing).
Each file has ~4 roles x ~15 culture-neutral behavior primitives with
context tags and modifier_hints per D-142. 2,210 new primitives across
rural, industrial, port, extraction, commercial, administrative,
research, medical, military, security, entertainment, residential,
detention, archaeological, wilderness, and diplomatic zone types.

Ticket: #662

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:57:37 +01:00
jpmschweitzerandClaude Opus 4.6 18afede4f2 feat(simulation): add cargo audit to CI/review pipeline (#637)
Add `make audit` target running `cargo audit` with an advisory ignore for
RUSTSEC-2025-0141 (bincode, tracked by #636). Wire audit into `make pre-pr`
and `make pre-pr-server`. Add conditional cargo audit to the pre-commit hook
(triggers only when Cargo.toml/Cargo.lock are staged).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:40:15 +01:00
jpmschweitzerandClaude Opus 4.6 aa79dd97e7 fix(simulation): Clippy cleanup and CI enforcement (#635)
Fix all Clippy warnings across the server codebase (2411 insertions, 1341
deletions). Raise type-complexity-threshold to 750 and too-many-arguments
to 12 in .clippy.toml for idiomatic Bevy ECS system signatures. The server
now passes `cargo clippy -- --deny warnings` cleanly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:33:15 +01:00
jpmschweitzerandClaude Opus 4.6 7f7706442a feat(simulation): add ZoneTypeTemplate and LocationSpec structs for D-142 (#663)
Implement the zone-type template architecture: ZoneTypeTemplate (behavior
pools per zone category), LocationSpec (instance metadata with role weights),
SocialSiteTypeSpec, RoleWeight, and LocationSocialSite. Add deserialization
tests for rural_agricultural.ron and industrial_freight.ron. Existing ZoneSpec
kept for backward compatibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:32:42 +01:00
jpmschweitzerandClaude Opus 4.6 b2ef56440f refactor(simulation): move content/ under server/ (#669)
Content files (RON templates, YAML campaigns, gauntlet data) are consumed
exclusively by the server. Colocate them at server/content/ and update all
path references in Rust source, tooling scripts, and schema files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:31:20 +01:00
jpmschweitzerandClaude Opus 4.6 c0669489ff fix(docs): recount all question domain files for PR #92 round 3
Full recount across all 4 question domain files. Content: 10 resolved
(not 9), 12 open (not 13). Scope: 15 total (not 14, Q-058 was missing
from count). Grand total: 61 questions. Both questions.md summary table
and questions-content.md footer now match actual header counts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 09:27:02 +01:00
jpmschweitzerandClaude Opus 4.6 604360620b fix(docs): address PR #92 review round 2
- Add Q-WTF-039/040/041 to questions-content.md row in README.md
- Update questions.md master index: add Q-WTF entries, fix counts
  (57→60 total, content 21→24), update footer
- Add #623 cancelled note to round-21 ticket inventory
- Add Q-WTF-041 design pass to sprint-28 candidates list

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 09:16:21 +01:00
jpmschweitzerandClaude Opus 4.6 a69c75d4ae fix(docs): address PR #92 review comments
- Fix D-134 cross-references to point to architecture.md (not content.md)
- Fix stale #620 reference in D-147 body (now #679)
- Fix content.md footer count (44, not 45)
- Add D-145, D-146, D-147 to decisions/README.md index
- Add Q-WTF-041 entry to questions-content.md (was referenced but untracked)
- Fix sprint-28-candidates.md totals line
- Align spelling to British "customisation" throughout new decisions
- Add information boundary classification to D-147 (public trait, per D-010)
- Add "first message" instruction to proposer rules in sprint-start skill

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 08:26:58 +01:00
jpmschweitzerandClaude Opus 4.6 8db83b1589 fix(skills): add proposer/executor roles for planning team spawns
Sprint 27 planning session exposed that discussion agents (Ozzie) can
unilaterally write decisions and modify the DB before consensus is
reached. Add step 8d-planning to /sprint-start that classifies agents
as proposers (analyze only) or executors (SI, Qatux — wait for
consensus). Also add planning to valid team branches.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 08:15:35 +01:00
jpmschweitzerandClaude Opus 4.6 0d18c76dfa feat(docs): assign teams to v0.2 story tickets (#614-#626)
Resolve Q-WTF-039 (tile-scale heavy zoom, not portrait — D-146) and
Q-WTF-040 (aesthetic taste trait as shared root — D-147). Split #617
into server generator + client rendering, split #620 into server
culture resolution + client location picker. Sprint 28 candidate list
with 7 unblocked tickets.

Ticket: #676

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 08:10:29 +01:00
jpmschweitzerandClaude Sonnet 4.6 2fddf8b6ca chore(meta): plan Sprint 27: Scale
9 tickets assigned. Teams: server (5), copy (3), planning (1).
Sprint goal: extend zone-type template library from 2 to 31 zone types,
wire server structs for D-142, eliminate Clippy debt.

New ticket #676 created: assign teams to v0.2 story backlog (#614-#626).
Tickets #669 and #672 reassigned from maintenance to server.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:47:55 +01:00
jpmschweitzerandClaude Opus 4.6 9855a16a74 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:33:39 +01:00
jpmschweitzerandClaude Opus 4.6 55fd30f692 fix(docs): rename GJ-7547 from Wag-'n-Bietjie to Skemeraand
"Twilight evening" — fits the corridor position (hop 22, one before
Abzu at terminus) without looking cartoonish next to the gravitas
of the deep frontier. Updated index.md etymology, GTTR entry,
Abzu references, and deep frontier regional index.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:17:49 +01:00
jpmschweitzerandClaude Opus 4.6 a28979dcb3 feat(docs): write 61 deep_frontier GTTR entries + regional index
Complete Drifter's Guide coverage for the Deep Frontier.
61 new entries from hop 3 (Cairnside) to hop 23 (Abzu),
plus updated gttr-deep.md index with all 61 deep systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:13:48 +01:00
jpmschweitzerandClaude Opus 4.6 ec4576b6aa feat(docs): write 51 west_reach GTTR entries + regional index
Complete Drifter's Guide coverage for the West Reach corridor.
51 new entries from hop 4 (Kapteyn's Star) to hop 17 (Yttermark),
plus updated gttr-west.md index with all 53 west systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:13:38 +01:00
jpmschweitzerandClaude Opus 4.6 a853e1ccb4 feat(docs): write 50 east_reach GTTR entries + regional index
Complete Drifter's Guide coverage for the East Reach corridor.
50 new entries from hop 4 (Nová Tržnice) to hop 9 (Xa Vời),
plus updated gttr-east.md index with all 54 east systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:12:48 +01:00
jpmschweitzerandClaude Opus 4.6 1f3151d8b4 feat(docs): write 52 south_reach GTTR entries + regional index
Complete Drifter's Guide coverage for the South Reach corridor.
52 new entries from hop 3 (Travessia) to hop 8 (Punta del Sol),
plus updated gttr-south.md index with all 53 south systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:12:19 +01:00
jpmschweitzerandClaude Opus 4.6 95c5bebdee feat(docs): write 49 north_reach GTTR entries + regional index
Complete Drifter's Guide coverage for the North Reach corridor.
49 new entries from hop 3 (Crown's Hollow) to hop 12 (Rekohu),
plus updated gttr-north.md index with all 55 north systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:08:53 +01:00
jpmschweitzerandClaude Opus 4.6 26d73e9ddd feat(docs): write The Narrows (GJ-875) — last placeholder system
Unsettled through-route at hop 14 between Paso Largo and Travessia.
This was the final PLACEHOLDER stub in the star systems wiki.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:36:50 +01:00
jpmschweitzerandClaude Opus 4.6 5a7cabe694 feat(docs): write 18 deep_frontier star system wiki pages (hops 13-23)
Replace PLACEHOLDER stubs with full prose for the deep corridor chain:
GJ-201 (unsettled junction), Paso Largo, Orchard's End, Sonnenkap,
Travessia, Kettenschmied, Pedra Seca, Claraboia, GJ-3943 (unsettled),
GJ-726 (unsettled), Eerste Wacht (wave_2 anomaly), Nova Estrada,
Helderoog, Entremeio, Candeia, Wag-'n-Bietjie (wave_2 anomaly),
Abzu (terminus). Also updates Dalim (GJ-127A) cross-references.

Fixes duplicate Passagem name (GJ-147 renamed to Entremeio) and
Entrocamento typo (corrected to Entroncamento).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:18:23 +01:00
jpmschweitzerandClaude Opus 4.6 7546fb0ad2 feat(docs): write 10 south_reach star system wiki pages (hops 5-6)
Replace PLACEHOLDER stubs with full prose for: Mocamedes (GJ-644C),
Porto Fechado (GJ-785), Entroncamento (GJ-3323), Passagem (GJ-473A),
Retiro (GJ-536), Mavela (GJ-644A), Solandar (GJ-827), Posto Avancado
(GJ-829), Farol (GJ-83.1), The Lantern (GJ-388, unsettled hub).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:18:01 +01:00
jpmschweitzerandClaude Opus 4.6 7a5398758f feat(docs): write 6 north_reach star system wiki pages (hops 5-6)
Replace PLACEHOLDER stubs with full prose for: Fenwick's Lantern
(GJ-285), Dunmore Stillwater (GJ-300), Uusi Vantaa (GJ-3820),
Harrowfield (GJ-588), Kelburn Crossing (GJ-216A), Greymantle (GJ-638).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:17:47 +01:00
jpmschweitzerandClaude Opus 4.6 307b77df46 fix(docs): review cleanup — frontmatter, templates, index links, workshop stub
- Add YAML frontmatter to nordmark-skog.md and talbrau.md
- Update star-system template to match actual 300-page structure
- Fix 10 broken companion star links in star-systems/index.md
- Add workshop-outcomes.md stub for paused GJ 6711 workshop

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 08:53:18 +01:00
jpmschweitzerandClaude Opus 4.6 a3baec4b04 feat(docs): add Calloway Distillery and thrds corporation pages, corporation template
Write full wiki pages for the two missing north_reach corporations
referenced in the corporations index. Content derived from existing
system pages (GJ-3325 Calloway Reach, GJ-475 Braemar). Add
corporation template to wiki/_templates/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 08:53:06 +01:00
jpmschweitzerandClaude Opus 4.6 5402435045 fix(docs): review cleanup — broken anchors, typo, status updates, db backup
- Fix 3 broken D-036/D-128 anchor slugs in decisions/content.md
- Fix typo: Stalowsia → Stalownia in stalownia-kowalski.md
- Mark proposed-llm-voice.md as superseded (D-138)
- Mark smuggler-moral-arc.md and smuggler-voice-card.md as v0.1-only
- Snapshot settledreach.db after planning branch merge

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 01:24:27 +01:00
jpmschweitzerandClaude Opus 4.6 cfd6ba973c fix(content): rename Vargr system to Sindri (GJ 3522)
Rename to avoid association with Traveller RPG species name.
GJ catalog ID unchanged. Updates system page, Drifter's Guide,
cross-references from Kensho and Renaissance, catalog, index,
and cultural migration design doc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 01:24:13 +01:00
jpmschweitzerandClaude Opus 4.6 a301fdab47 fix(content): purge all remaining Krenn references
Replace every occurrence of "Krenn" with "Van Maanen's Star" (or
contextual variants like VMS for locale codes, Van Maanen for proper
noun contexts). Covers CHANGELOG, briefings, workshop docs, sprint
briefings, environmental text examples, templates, ticker content,
and architecture docs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 01:24:04 +01:00
jpmschweitzerandClaude Opus 4.6 1782592dfd chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:56 +01:00
jpmschweitzerandClaude Opus 4.6 a20447ab81 docs(diagrams): add star map topology and coordinate SVGs
Two star map visualizations: topology view (hop-based layout)
and real-coordinate view (spatial positions).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:38 +01:00
jpmschweitzerandClaude Opus 4.6 53a0e3f6b5 docs(workshops): add Abzu carry-out proposals (unresolved)
Round 6: four agents responded to the project lead's challenge
"what do you walk away with?" Gore proposed Threshold Attunement
and Attend verb (too philosophical, not literal enough). Gestalt
proposed vigil_vocabulary flag and Establish Watch verb. Nigel
proposed cross-playthrough WATCHER persistence flag. Ozzie
proposed door-measuring as retroactive evidence reading (thin
but visceral). Lead verdict: "too much philosophy too little
lootbox" — parking this for later. The reward design is TBD.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:31 +01:00
jpmschweitzerandClaude Opus 4.6 c8cead39f3 docs(workshops): add Abzu mechanics design
Round 5: Gestalt translated world texture into playable verbs.
Watch Investment Counter (hidden 0-100), six player verbs
(Watch, Investigate, Converse, File, Document, Depart), bleed
tile states, Adams & Ford entry as accumulated field notes,
investment-scaled gate departure monologue, storyteller
de-escalation. Project lead noted: "extraordinary world texture
and zero playable verbs" — this document fills that gap.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:20 +01:00
jpmschweitzerandClaude Opus 4.6 c765158b59 docs(workshops): add GJ 6711 final syntheses with Abzu naming
Round 4: final positions incorporating the name Abzu and all
challenge results. Locked decisions: high-bleed as failed vigil
canon, vigil predates human tenure, Institute paralyzed by
faction conflict, non-resolution principle. Araminta added
upwelling lighting gradient, departure transit spec, Mode 3
Institute transient vocabulary. Paula endorsed Option C for
the inner envelope. Miri specified six sealed envelope additions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:10 +01:00
jpmschweitzerandClaude Opus 4.6 9e7c83b969 docs(workshops): add GJ 6711 stress test challenges
Round 3: all four agents challenged the sealed envelope against
existing Builder/Interstitium/Gate lore. Key finding: no
contradictions with canon. All four independently converged on
high-bleed gates = failed vigil signal. All four endorsed the
vigil predating human tenure. Inner sealed envelope identified
as required for implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:51:02 +01:00
jpmschweitzerandClaude Opus 4.6 403b168ced docs(workshops): add sealed envelope and project lead direction
The sealed envelope: canonical internal truth about what the
vigil watches — observation is load-bearing, the founding
settlers were recruited, the doors accommodate non-human
shift-takers. Project lead direction: verbatim creative
decisions and critiques across all workshop rounds. Everything
up for grabs when the lead changes their fickle mind.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:50:49 +01:00
jpmschweitzerandClaude Opus 4.6 1f48bebe77 docs(workshops): add GJ 6711 cross-pollination syntheses
Round 2: each agent read all four briefs and synthesized.
Key convergences: the doors as load-bearing detail, Adams &
Ford entry as mechanic, community warmth-without-origin.
Nigel self-cut "memory-without-event" archetype. Paula revised
tier 4 from "they know" to "they've stopped asking."

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 00:50:40 +01:00