Skip to content

feat: add genre packs and daemon orchestrator recipes#1

Merged
slabgorb merged 1 commit intomainfrom
feat/daemon-lift
Mar 25, 2026
Merged

feat: add genre packs and daemon orchestrator recipes#1
slabgorb merged 1 commit intomainfrom
feat/daemon-lift

Conversation

@slabgorb
Copy link
Copy Markdown
Owner

Summary

  • Copy genre_packs/ from sq-2 (7 packs with YAML config + audio assets)
  • Update justfile with daemon-run, daemon-status, daemon-stop recipes

Test plan

  • just daemon-run starts the sidequest-renderer daemon
  • just daemon-status reports worker state
  • just daemon-stop shuts down cleanly

🤖 Generated with Claude Code

Copy genre_packs/ from sq-2 (shared YAML + audio assets for the daemon).
Update justfile with daemon-run, daemon-status, daemon-stop recipes
that export SIDEQUEST_GENRE_PACKS.

Co-Authored-By: Claude <noreply@anthropic.com>
@slabgorb slabgorb merged commit 2ffc34b into main Mar 25, 2026
slabgorb added a commit that referenced this pull request Mar 25, 2026
Protocol crate delivered — 20 GameMessage variants, typed payloads,
NonBlankString newtype, input sanitization, 50 tests passing.
PR #1 merged to develop.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@slabgorb slabgorb deleted the feat/daemon-lift branch March 25, 2026 23:07
slabgorb added a commit that referenced this pull request Apr 11, 2026
Updates ADRs and the ADR index to stop lying about current code state.
All amendments are additive "historical" notes; no original decision
rationale is removed.

- ADR-010 (Intent-Based Agent Routing) — marked Superseded by ADR-067.
  The CombatAgent / NPCAgent dispatch described no longer exists;
  creature_smith / dialectician / ensemble agent files are gone.
- ADR-038 (WebSocket Transport) — partially superseded. The "three
  broadcast channels with binary PCM for TTS audio" claim is now false;
  no production code sends Message::Binary. Two-channel topology now.
- ADR-054 (WebRTC Voice Chat Disabled) — historical. The "full
  implementation is preserved" claim was refuted by a grep: PeerMesh.ts,
  useVoiceChat.ts, LocalTranscriber.ts, useWhisper.ts, and the entire
  sidequest-ui/src/webrtc/ directory have been deleted.

ADR index (docs/adr/README.md):
- Add missing entries for ADRs 070, 071, 072, 073, 076
- Correct ADR-065 status from Accepted to Proposed (message.rs still
  a single 1,111-line file)
- Correct ADR-072 status to Proposed (I initially wrote Accepted)
- ADR-045 row updated to note two-channel post-TTS topology
- Media pipeline table: Kokoro TTS row flagged Removed (2026-04), with
  pointer to ADR-076
- ADR-044 row rewritten to drop "during TTS" framing

Flag for pass 3: several module doc comments in sidequest-game/prerender.rs
and sidequest-server/extraction.rs still describe TTS playback windows —
those are the "misleading comments" ADR-076 calls out explicitly and are
Pass 3 target #1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
slabgorb added a commit that referenced this pull request Apr 25, 2026
* docs(spec): shared Room.snapshot for ADR-037 (Python port)

Design for the proper architectural fix to per-session GameSnapshot
divergence in multiplayer. Replaces the band-aid
_merge_peer_state_into_snapshot helper with a single canonical snapshot
held on SessionRoom and shared by every WS session bound to the slug.

Constraint that simplifies scope: no saved MP games exist on disk
(multiplayer has never worked end-to-end). No migration path needed.
Band-aid + its 5 merge tests are deleted in the same change.

Out of scope: ADR-028 LLM rewrites, per-recipient narration region
filtering, PlayerState overlay struct.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(plan): shared Room.snapshot implementation plan (ADR-037 Python port)

Step-by-step plan implementing the spec at
docs/superpowers/specs/2026-04-25-shared-room-snapshot-design.md.
9 tasks, 8 commits, ends at 739 passed / 2 skipped on the server +
agents sweep. Sequential single-developer plan suitable for inline
execution as the Bicycle Repair Man dev agent.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(spec): OTEL dashboard restoration design (faithful ADR-031 port)

Forensic audit found four root causes of the OTEL dashboard regression
since the Rust→Python port: broken `just otel` recipe, ~80% dead SPAN_*
constants, missing Layer-3 narrative validator, and impoverished
translator. Design specifies a four-phase faithful port that restores
full parity with the Rust contract.

Approved interactively via /superpowers:brainstorming. Self-review pass
fixed an emit-double on json_extraction_result (translator owns; not
the validator) and reclassified SPAN_CONTENT_RESOLVE to FLAT_ONLY due
to volume.

Next: writing-plans for implementation plan.

* fix(justfile): point otel recipe at playtest_dashboard.py

- Update `just otel` to call `playtest_dashboard.py` via `uv run` instead of
  the deleted `playtest.py --dashboard-only`
- Add `__main__` entry point with argparse to `playtest_dashboard.py`
  (it was a library-only module with no CLI entry point)
- Add `websockets>=12.0` and `rich>=13.0` to orchestrator `pyproject.toml`
  (required by playtest_dashboard.py, previously missing from manifest)

* ci: smoke-test the just otel recipe to catch script renames

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(adr): ADR-090 OTEL Dashboard Restoration after Python Port

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(adr): amend ADR-031 with Python-port section, regen indexes

Add observability tag, replace stale Rust-only opening blockquote, and
append Python-port note pointing at the canonical telemetry implementation
files in sidequest-server.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(plan): OTEL dashboard restoration implementation plan

Pairs with the design spec at
docs/superpowers/specs/2026-04-25-otel-dashboard-restoration-design.md.
This is the 25-task plan (Phase 0–4) executed by the OTEL feat branches
across orchestrator, sidequest-server, and sidequest-ui.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(otel): Phase-2 port-audit follow-up after bundles #1 + #2

Discovered-state correction for the original Phase-2 emission-rollouts
handoff: the Python port (ADR-082) replaced most Rust info_span!/
start_as_current_span calls with logger.info(...) strings or direct
_watcher_publish calls. The SPAN_* constants in spans.py are mostly
byte-identical-to-Rust name-string prefixes, not actual span openings.

Records:
- Which families are genuinely live in Python (the ones that ship now).
- Which ~7 bundles in the original handoff are port-dead and require
  engine porting before routing.
- The two real Phase-2 workstreams: migrate live _watcher_publish sites
  (Workstream A — what bundles #49 and #50 did), vs. port the missing
  engines (Workstream B — out of scope for telemetry restoration).
- Suggested next bundle picks from Workstream A.
- Open question on whether to bridge port gaps via log-string parsing
  (recommended: no — Illusionism violation per ADR-031).

Closes the loop after PRs slabgorb/sidequest-server#49 and #50.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant