Standardized YAML frontmatter on all 115 sprint briefing files across sprints 1-26 with title, description, type, status, sprint number, and team fields. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 12 — CI Briefing | Ban HashMap via clippy, tracing infrastructure, system dependency graph, rng_seed field | sprint | archived | 12 | ci |
Sprint 12: Build — CI Tasks
Goal: Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done.
Branch: ci
Agents: Justine (build/deploy)
Carry-over from Sprint 11
None. Sprint 11 was 7/7 done.
New Tickets
| # | Title | Blocked by |
|---|---|---|
| #343 | Ban HashMap in simulation crate via clippy | — |
| #344 | Set up tracing crate infrastructure | — |
| #346 | System dependency graph debug command | — |
| #527 | Add rng_seed field to ObserverSnapshot for deterministic replay | — |
Use db/connectors/ticket show <id> for full details.
Key Decisions
decisions/architecture.md— D-020 (Godot + Rust IPC, bridge types), D-041 (knowledge graph, observer snapshot contract)decisions/scope.md— D-030 (testing architecture — D-phase alignment)
Notes
#343 — Ban HashMap in simulation crate via clippy
- Critical priority. Deterministic simulation requires deterministic iteration order;
std::collections::HashMapdoes not guarantee this. - Add
clippy::disallowed_typesto.clippy.toml(or.cargo/config.toml's[target.*.rustflags]section) scoped to thesimulationcrate only. - Approved alternatives:
BTreeMap(ordered) orIndexMapfrom theindexmapcrate (insertion-ordered, deterministic). - This lint will surface existing violations. Each violation in
server/src/simulation/needs a follow-up fix — file separate tickets for each if the count is large, or fix inline if small. - CI must fail on new violations after this is merged.
#344 — Set up tracing crate infrastructure
- Add
tracingandtracing-subscribertoserver/Cargo.toml. - Initialize in
server/src/main.rswith a stdout subscriber in dev (pretty format) and JSON in CI. - Add structured log points to: tick duration (
tracing::info!(tick_ms = ...)), per-system timing (wrap heavy systems withtracing::instrument), bridge I/O metrics, tier transition events. - This is prerequisite instrumentation for tier system debugging (Sprint 12 server work in #99).
- In CI (
make ci-server), the JSON log output should be captured but not asserted on — just confirm the binary runs without panic.
#346 — System dependency graph debug command
- Implement a
--dump-scheduleCLI flag (ormake debug-scheduleMakefile target) that prints the bevy_ecs system ordering and component access patterns. - Use bevy's
World::resource::<Schedules>()or thebevy_app::App::render_schedule_graph()approach (check bevy 0.14/0.15 API — confirm current version inserver/Cargo.toml). - Output: plain text or DOT format listing systems in execution order with their component read/write access.
- CI integration: run on each PR, save output as artifact, diff against baseline to catch unintended system reordering.
- Lives in
server/src/main.rs(flag) or a dedicatedserver/src/debug.rsmodule.
#527 — Add rng_seed field to ObserverSnapshot for deterministic replay
- The WRONG button (#507, done Sprint 11) writes
inputs.jsonlandseed.txtfor replay, butseed.txtcurrently writes"unavailable"because the server does not includerng_seedinObserverSnapshot. - Fix: add
rng_seed: Option<u64>to theObserverSnapshotstruct inserver/src/bridge/types.rs. - Populate it from the simulation's RNG state on each tick. The RNG system lives in
server/src/simulation/rng.rs. - This is a server-side change committed from the CI branch. Coordinate with server team to avoid conflict on
bridge/types.rs— or implement as a separate additive commit that merges cleanly. - Completes the WRONG button capture loop. After this, replays can fully reproduce observed bugs.
Dependency Chain
#343, #344, #346, #527 — all standalone, all parallel
PR Workflow
When ready to submit, create a PR with tea CLI. All flags are required to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(ci): Sprint 12 — HashMap lint, tracing infra, schedule debug, rng_seed fix" --description "body" --base main --head ci