Commit Graph
882 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 91db2f99de docs(sprints): add PR workflow instructions to sprint briefings
All three sprint briefings now include tea CLI PR creation example
with required --login and --repo flags to avoid TTY prompts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:26:15 +01:00
jpmschweitzerandClaude Opus 4.6 198749f9c1 docs(workshops): add v0.1 content gap analysis workshop brief
Nine-layer analysis from global (art direction) to specific (audio).
Identifies gaps in content tickets for Mellanie, Paula, and Araminta.
Structured as 2-round workshop with 6 participants to produce missing
tickets, dependency chain, and content team work plan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:18:28 +01:00
jpmschweitzerandClaude Opus 4.6 9af9b3f3aa chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:17:20 +01:00
jpmschweitzerandClaude Opus 4.6 0041e4453f feat(client): wire SimBridge to Protocol codec
SimBridge now encodes player inputs via Protocol.encode_player_input()
and exposes receive_bytes()/drain_outbound() for the transport layer.
Test mode still works unchanged. Transport (ticket #79) will call
these methods to complete the IPC pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:17:05 +01:00
jpmschweitzerandClaude Opus 4.6 b5dd44313e feat(client): add Protocol codec with cross-language tests (#77)
Protocol.gd decodes ObserverSnapshot and PlayerInput from Rust's
rmp_serde wire format, and encodes PlayerInput for sending to server.
Handles rmp_serde enum encoding: unit variants as bare strings,
data variants as single-element maps.

8 fixture-based tests verify decode of Rust-generated fixtures,
GDScript encode/decode roundtrips, and cross-language compatibility.
All 15 tests pass (3 suites).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:16:56 +01:00
jpmschweitzerandClaude Opus 4.6 84e34f61bd feat(client): add MessagePack library and cross-language fixtures
Install Godot4MessagePack (pure GDScript) for MessagePack encode/decode.
Add Rust fixture generator (gen_fixtures.rs) that produces canonical
.msgpack files using rmp_serde::to_vec_named for cross-language testing.

Fixtures cover: snapshots (empty, one NPC, multi-entity with all
EntityKind variants) and player inputs (unit + data enum variants).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:16:43 +01:00
jpmschweitzerandClaude Opus 4.6 e44e90c2cb chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:08:07 +01:00
jpmschweitzerandClaude Opus 4.6 862ab9099f feat(simulation): add tile collision system (#236)
TilePosition component with discrete grid coordinates, flat-storage
WalkabilityMap resource with O(1) can_move_to() lookup, MoveIntent
component and validate_movement system. Movement validated against
walkability map each tick, blocking all NPC and player movement
through unwalkable tiles. 11 unit tests + 1 integration test.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:07:53 +01:00
jpmschweitzerandClaude Opus 4.6 4ed15c1a38 feat(simulation): add LocalBridge IPC over Unix socket (#78)
Length-prefixed MessagePack framing (4-byte BE length + payload),
LocalBridge struct implementing SimBridge trait over Unix domain
sockets, BridgeResource wrapper for ECS integration. Adds Io
error variant to BridgeError. Two integration tests verify
snapshot and input round-trips over real sockets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:07:47 +01:00
jpmschweitzerandClaude Opus 4.6 0c7d44b265 fix(db): sqlite connector always reads/writes main worktree database
Same fix as the ticket CLI — uses git rev-parse --git-common-dir to
resolve DB path to the main worktree. Prevents WAL/journal pollution
when sqlite-query or sqlite-exec are called from feature branches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:01:26 +01:00
jpmschweitzerandClaude Opus 4.6 70a6f850c6 fix(db): ticket CLI always reads/writes main worktree database
Uses git rev-parse --git-common-dir to find the main worktree root,
then resolves the DB path there. Prevents WAL/journal pollution on
feature branch worktrees that caused merge conflicts on commonwealth.db.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:00:16 +01:00
jpmschweitzerandClaude Opus 4.6 039eac608d chore(skills): start-sprint uses current branch as team
No argument needed — the current branch determines the team.
Only asks if on main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:53:16 +01:00
jpmschweitzerandClaude Opus 4.6 0123c5599c chore(skills): add start-sprint skill
Syncs team branch with main, finds the active sprint, reads the sprint
briefing, loads ticket details and key decisions, then presents an
actionable work plan with suggested first task.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:52:24 +01:00
jpmschweitzerandClaude Opus 4.6 7f88fa79b7 chore(meta): point agents at sprint briefings in CLAUDE.md
Sprint briefings (docs/sprints/sprint-N/{team}.md) are now the primary
starting point for implementation work. Per-agent briefings remain as
background context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:50:02 +01:00
jpmschweitzerandClaude Opus 4.6 116b6c308c docs(sprints): add Sprint 1 team briefings
Per-team sprint briefings under docs/sprints/sprint-1/ for server,
client, and joint tracks. Each lists assigned tickets, dependencies,
key decisions to read, and implementation notes. Agents use
ticket show <id> for full details.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:49:49 +01:00
jpmschweitzerandClaude Opus 4.6 e8f03b4cd8 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:46:20 +01:00
jpmschweitzerandClaude Opus 4.6 4a3022b5aa chore(meta): update CLAUDE.md and ticket skill for new CLI
Reference db/connectors/ticket CLI in project structure and agent
instructions. Rewrite ticket skill to use CLI commands instead of
raw SQL wrapper scripts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:46:09 +01:00
jpmschweitzerandClaude Opus 4.6 19f5c93ad3 feat(db): add ticket CLI and update sprint assignments
Ergonomic Python CLI wrapping parameterized SQLite queries for ticket
management. Supports list, show, create, assign, sprint, deps, search,
epics, children, count commands with JSON output. Replaces raw SQL
access for Si and other agents.

Also includes Sprint 1 "Run" creation and story assignments:
- #77, #79 → client
- #78, #236 → server
- #81, #82, #83 → joint
- 36 tickets updated to done (boilerplate work completed by merged PRs)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:46:04 +01:00
jpmschweitzerandClaude Opus 4.6 590fa08276 chore(meta): document protected branches in CLAUDE.md
main, maintenance, server, client are protected on Gitea.
Agents must not delete or force-push to these branches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:30:34 +01:00
jpmschweitzerandClaude Opus 4.6 784064212f chore(meta): update changelog
Add client boilerplate, tea CLI instructions, review-pr skill
updates, and client bug fixes from PR review rounds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:29:00 +01:00
jpmschweitzerandClaude Opus 4.6 36aea36b0f Merge pull request #1: feat(client): Godot 4 project boilerplate (epic #277)
Merge origin/client into main. Resolve binary conflict in
commonwealth.db by keeping main's version (latest ticket state).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:27:20 +01:00
jpmschweitzerandClaude Opus 4.6 57a67ecb0b fix(client): address PR review round 2 — camera tracking, minimap, monologue wiring
- Camera2D now tracks player_position from GameState (D-015)
- Add SubViewport child to minimap SubViewportContainer (fixes editor warning)
- Wire MonologueDisplay into main loop for D-016 perception data path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:24:13 +01:00
jpmschweitzerandClaude Opus 4.6 8cc6167bd9 chore(skills): add merge workflow and heredoc workaround to review-pr
Document that tea pr merge fails (405) on conflicting branches,
requiring local merge + tea pr close. Also note heredoc hanging
issue with tea comment — use temp file instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:22:14 +01:00
jpmschweitzerandClaude Opus 4.6 cd10834aca Merge pull request #2: feat(simulation): add Rust/bevy_ecs server boilerplate
Merge origin/server into main. Resolve CHANGELOG.md conflict by keeping
both sets of entries (main's review-pr skill + server's boilerplate entries).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:20:59 +01:00
jpmschweitzerandClaude Opus 4.6 4afda9a6b8 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:53:44 +01:00
jpmschweitzerandClaude Opus 4.6 3368231396 fix(client): address PR review — input bug, bounds checks, fixture tests
- Fix input_mapper double-check bug (redundant InputEventKey + pressed filter)
- Add bounds checking for position arrays in entity_renderer and game_state
- Make test snapshot deterministic (incrementing counter, not wall clock)
- Fix tween overlap in monologue_display (cancel active tween before new one)
- Extract TILE_SIZE constant from magic number 32
- Add 5 D-030 Layer 1 fixture tests for snapshot parsing (7/7 total passing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:53:24 +01:00
jpmschweitzerandClaude Opus 4.6 112910df9b test(simulation): expand test coverage per PR #2 review
- Add roundtrip tests for all PlayerAction variants (Hoshe #6)
- Add roundtrip tests for all EntityKind variants (Hoshe #6)
- Add day wraparound at midnight edge case test (Hoshe #7)
- Add day() calculation test (Hoshe #7)
- Add out-of-order input rejection test (Hoshe #7)
- Total: 15 → 20 tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:53:16 +01:00
jpmschweitzerandClaude Opus 4.6 6bda4a7620 fix(simulation): address PR #2 review findings
- Fix Cargo.toml edition 2024 → 2021 (Hoshe #1)
- Switch test runner to cargo-nextest in Makefile (Hoshe #2, D-030)
- Add debug_assert tick ordering enforcement in InputQueue::push (Hoshe #4)
- Add DayPhase Serialize/Deserialize derives (Tyre #6)
- Add day phase boundary comments clarifying half-open ranges (Hoshe #3)
- Add phase duration adjustability comment (Tyre #5)
- Document ObserverSnapshot planned fields as TODO (Tyre #1)
- Document entity_id as wire-format ID, not ECS Entity (Tyre #2)
- Change Relationship.target_name to target_id: u64 (Tyre #3)
- Clarify single app.update() is intentional boilerplate (Hoshe #8, Tyre #7)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:53:01 +01:00
jpmschweitzerandClaude Opus 4.6 997a319992 chore(meta): add tea CLI instructions to CLAUDE.md
Documents non-interactive tea usage with all required flags to
prevent TTY crashes in Claude Code. Agents were accessing the
Gitea API directly — this standardizes on tea CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:52:37 +01:00
jpmschweitzerandClaude Opus 4.6 f8617eadda chore(skills): update review-pr with tea CLI comment posting
Replace raw curl API calls with tea comment command using proper
flags for non-interactive PR comment posting on Gitea.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:44:05 +01:00
jpmschweitzerandClaude Opus 4.6 a6a0a7efde chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:37:36 +01:00
jpmschweitzerandClaude Opus 4.6 dead4361a5 feat(skills): add review-pr skill for dual-agent PR review
Spawns Hoshe (code quality) and Tyre (architecture) in parallel to
review branch diffs against main. Includes Gitea tea CLI integration,
vendor/generated file exclusion patterns, and practical tips learned
from first review run on server and client boilerplate PRs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:37:24 +01:00
jpmschweitzerandClaude Opus 4.6 9de1eb4aa3 docs(meta): add tea PR workflow to CLAUDE.md
Document Gitea tea CLI usage for pull requests with all required
flags for non-interactive execution. Adds Gitea to local services.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:25:00 +01:00
jpmschweitzerandClaude Opus 4.6 938df000ac chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:55:04 +01:00
jpmschweitzerandClaude Opus 4.6 651995590d chore(db): mark server boilerplate epic and stories as done
Tickets 276 (epic) and 278-286 (stories/tasks) updated to done
status after make ci-server passed green.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:54:47 +01:00
jpmschweitzerandClaude Opus 4.6 f67caf1986 feat(server): initialize Rust/bevy_ecs simulation server
Server boilerplate epic (276) complete. Establishes the Rust simulation
server foundation per D-020 (subprocess/IPC architecture).

Structure:
- bevy_ecs 0.18 + bevy_app 0.18, MessagePack serialization (rmp-serde)
- SimulationPlugin with deterministic resources: SimulationTime (D-031),
  SimRng (D-030), InputQueue (D-010)
- Core IPC types: ObserverSnapshot, PlayerInput, SimBridge trait (D-020)
- CauseChain production component for provenance tracking (D-030)
- SimulationTier types with LRU eviction support (D-026)
- NPC 10-axis model components (D-024)
- 15 tests: inline unit tests + integration smoke/serialization tests
- make ci-server passes (clippy, fmt, build, test)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:54:40 +01:00
jpmschweitzerandClaude Opus 4.6 84925b334a chore(config): add Rust build artifacts to gitignore
server/target/ excluded from version control.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:54:23 +01:00
jpmschweitzerandClaude Opus 4.6 1f42ef471a chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:53:12 +01:00
jpmschweitzerandClaude Opus 4.6 fb733209e0 chore(config): add automated Rust install to make setup
Adds tooling/install-rust script that installs Rust via rustup if
not present, with clippy and rustfmt components. Idempotent — skips
when already installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:53:02 +01:00
jpmschweitzerandClaude Opus 4.6 f2d202f1ad chore(db): mark client boilerplate tickets done (#277, #287-296)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:53:00 +01:00
jpmschweitzerandClaude Opus 4.6 b92b99f744 chore(meta): update Makefile and gitignore for Godot client CI
- Implement lint-client, build-client, test-client Make targets
- Add GODOT variable for binary detection
- Gitignore .godot cache, export artifacts, test reports
- Clean target handles Godot artifacts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:52:45 +01:00
jpmschweitzerandClaude Opus 4.6 603c24e177 feat(client): initialize Godot 4 project boilerplate (epic #277)
Set up the complete Godot 4.6 client foundation as a pure renderer (D-020):
- project.godot with 2D rendering, autoloads, input actions
- Main scene: Game > World (TileMapLayer, Entities, FogOverlay) + Camera2D + UILayer
- Autoloads: SimBridge (connection state machine + test mode), GameState, InputMapper
- Rendering stubs: WorldRenderer, EntityRenderer, FogRenderer
- UI stubs: HUD (health/perception/time), Minimap, MonologueDisplay
- Input mapping: WASD/arrows, E (interact), Tab (perception), Esc (menu), Space (pause)
- gdUnit4 smoke tests: scene loads, autoloads registered (2/2 passing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:52:27 +01:00
jpmschweitzerandClaude Opus 4.6 61e0762a84 chore(client): add gdUnit4 test framework addon
Vendor gdUnit4 for Godot 4 client testing (D-030).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:52:00 +01:00
jpmschweitzerandClaude Opus 4.6 feb8ba61ab chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:43:21 +01:00
jpmschweitzerandClaude Opus 4.6 5267d405e0 chore(config): add automated Godot download to make setup
Adds tooling/install-godot script that downloads the Godot binary
from GitHub releases to ~/bin/godot4. Skips download when the
correct version is already installed. Supports Linux x86_64/arm64
and macOS. GODOT_VERSION defaults to 4.6 and is overridable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:43:07 +01:00
jpmschweitzerandClaude Opus 4.6 3a2fe4bd71 chore(db): track ticket database in version control
The SQLite database contains integral project content (273 tickets,
dependencies, sprint planning). Remove from .gitignore and check in.
WAL/SHM journal files remain ignored as transient.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:03:55 +01:00
jpmschweitzerandClaude Opus 4.6 918b404a36 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:57:22 +01:00
jpmschweitzerandClaude Opus 4.6 cff4c74d75 docs(briefings): update all briefings for decisions split and DEVOPS.md
Update Key Documents sections to reference decisions/ directory instead
of monolithic DECISIONS.md. Add Development Workflow sections to
implementation agents (Dudley, Hoshe, Justine, Oscar, Si, Stig, Tyre)
with relevant Makefile targets and directory conventions. Streamline
decision references to point to specific domain files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:55:58 +01:00
jpmschweitzerandClaude Opus 4.6 7a2f97c325 chore(agents): update agent and skill definitions for decisions split
Agent personality files and skill definitions updated to reference decisions/
domain files instead of monolithic DECISIONS.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:48:08 +01:00
jpmschweitzerandClaude Opus 4.6 1513dbf0f8 docs(meta): add DEVOPS.md, update project docs for decisions directory split
Adds DevOps procedures document and updates CLAUDE.md/README.md to reference
decisions/ domain files and Makefile-based workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:46:39 +01:00