From 6c1876f85604362be3309ec111dacb011b7453c5 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 7 Mar 2026 19:47:00 +0100 Subject: [PATCH] chore(meta): add #627 SQLite settings storage to Sprint 26 Prerequisite for #646 (AI-Enhanced Dialogue toggle). Updated server and client briefings with dependency chain and integration notes. Co-Authored-By: Claude Opus 4.6 --- docs/backups/settledreach.db.backup | Bin 688128 -> 688128 bytes docs/sprints/sprint-26/client.md | 6 +++--- docs/sprints/sprint-26/server.md | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/backups/settledreach.db.backup b/docs/backups/settledreach.db.backup index c4a7fe5dc5f1f818088a82f553aafbc358398558..c445b08e376116b640ba97ea8bf27099b89f314b 100644 GIT binary patch delta 367 zcmXBQO(;ZB7zW_;opZi>=gbVF{LBnHDVh~#NJPV(EU;vwl+7$Gxh1o}H6vp&GWk1c zq-?~FEIvz0StyZ`g^a%x8yjUOR~FCi?d|P#oQUH@4rE*miPVu9-{)MURu6m5y=Hn? zaL#SMkjYrtj0G<45|pvzY)*t=ittK)1N~e}1cDnGREB?$8I0-i9EPa%US0~QAbgZX z;DI*%`Xu|P@maq3py6oTsRO@Hgt?uZm`qM^n-ZV$BoEz$4xWL&n8Q2TNn^?jow{ZT zYmJhjzizUY@RUP8VIHSB_uWx?1p|Us*RhB&=59~w$8D6Nn%mi80bPd6q+-ES|5die zN*#IY|L`SLl&zT&H$PLp*fnnlSdeurTQ!x8K{OgB|GN4S`fb2lrbC;mytJvUJ=W45 zi~Y}~t-KnM6x~$URdUz!z_fRiN2vKgRRH%qQ17AIFtxL%(D=I$hUxuS1bp zMe^fB4j)G=#YvV@N*OD~0S6@|`5qizw|8%){7U(cM1&`}b>fH|uwqKxSeChLnbgK? z94%AKukr+)MYtAUlr{VCrzU_RzY(3X2{>Uaty8Pu!{EKR;?#>!7Y|fFKZ-bGqZoJ+ z4L2P;NvQzE*t3ZxR;l|oF}I<`miK>oqh3HWv@+b{kA^BHf# diff --git a/docs/sprints/sprint-26/client.md b/docs/sprints/sprint-26/client.md index aea25271b..0b2957ec0 100644 --- a/docs/sprints/sprint-26/client.md +++ b/docs/sprints/sprint-26/client.md @@ -9,7 +9,7 @@ | # | Title | Blocked by | |---|-------|------------| -| #646 | UX: AI-Enhanced Dialogue toggle + hardware detection | #641 (done) | +| #646 | UX: AI-Enhanced Dialogue toggle + hardware detection | #627 (server: SQLite settings storage) | Use `tooling/db/ticket show ` for full details. @@ -20,12 +20,12 @@ Use `tooling/db/ticket show ` for full details. ## Notes -- **#646 AI-Enhanced Dialogue toggle + hardware detection:** The voice pipeline (server-side, `server/src/voice/`) is wiring up this sprint via #652. The client needs layered hardware detection and player-facing controls so the feature degrades gracefully. Three detection layers in sequence: (1) CPU/RAM check — can the model even load? (2) time-per-token benchmark on first load — is it fast enough to be useful? (3) player-facing toggle — opt out even on capable hardware. The toggle state must persist (see #627 SQLite settings storage — not in this sprint, use a flat config file or `ProjectSettings` as interim). The UI for this is in the options/settings panel. Coordinate with server team: the client toggle must communicate to the server process whether voicing is requested (the server queue drains but does not requeue when disabled). Key integration point: `client/scripts/` settings panel and the existing `SR_LIVE` / subprocess launch flow. Check `docs/workshops/llm-voice-pipeline/` for hardware thresholds decided in the workshop. +- **#646 AI-Enhanced Dialogue toggle + hardware detection:** The voice pipeline (server-side, `server/src/voice/`) is wiring up this sprint via #652. The client needs layered hardware detection and player-facing controls so the feature degrades gracefully. Three detection layers in sequence: (1) CPU/RAM check — can the model even load? (2) time-per-token benchmark on first load — is it fast enough to be useful? (3) player-facing toggle — opt out even on capable hardware. The toggle state must persist via #627 (SQLite settings storage, server team, same sprint). **Block on #627 landing before implementing the toggle** — the client sends a `ChangeSettings` command over IPC and the server persists it in SQLite. The UI for this is in the options/settings panel. Coordinate with server team: the client toggle must communicate to the server process whether voicing is requested (the server queue drains but does not requeue when disabled). Key integration point: `client/scripts/` settings panel and the existing `SR_LIVE` / subprocess launch flow. Check `docs/workshops/llm-voice-pipeline/` for hardware thresholds decided in the workshop. ## Dependency Chain ``` -#646 (UX toggle + hardware detection) — #641 done, unblocked +#627 (server: SQLite settings) → #646 (UX toggle + hardware detection) ``` ## PR Workflow diff --git a/docs/sprints/sprint-26/server.md b/docs/sprints/sprint-26/server.md index 942ade35f..1ee42e42f 100644 --- a/docs/sprints/sprint-26/server.md +++ b/docs/sprints/sprint-26/server.md @@ -15,6 +15,7 @@ | # | Title | Blocked by | |---|-------|------------| +| #627 | SQLite settings storage | — | | #650 | ContentType::Factual — LLM bypass for fact-bearing lines | — | | #652 | Voice pipeline: observer integration | #650 (preferred, not hard block) | | #655 | Remove v0.1 content loading system | — | @@ -41,12 +42,15 @@ Use `tooling/db/ticket show ` for full details. - **#633 Composable behavior engine:** Current hand-authored behavior pools in `server/src/npc/routine.rs` enumerate culture×zone×role combinations, which won't scale to the generator. Goal: introduce a behavior primitive format (role action + culture modifier + context tag) and an assembly function that composes them at NpcBlueprint instantiation time. The `NpcBlueprint` struct in `server/src/npc/blueprint.rs` is the output target. Do not delete existing behavior pools until new assembly produces equivalent output — verify with an eyeball diff on generated behaviors for seed 42. +- **#627 SQLite settings storage:** Persistent settings via SQLite on the server side (rusqlite with bundled feature — zero runtime dependency). Architecture: settings live on the SERVER in a SQLite database with per-player tables. The client sends `ChangeSettings` commands over IPC, same as any other player action. The client never touches the database directly. Scope: keybindings, audio volume, display preferences, accessibility options, AI-Enhanced Dialogue toggle. This must land before #646 (client toggle) so the toggle has a real persistence layer instead of a flat config file. Key integration point: the existing subprocess IPC in `server/src/bridge/`. The settings schema should be extensible (key-value with typed columns, not a single JSON blob) so future settings don't require migrations. + - **#651 Friendly/RoutineDeviation tells — iterate post-ship:** Spike 2 showed these two tells produce output indistinguishable from neutral on Gemma 2B. Three options: stronger few-shot examples in the prompt, non-speech-act encoding (body language descriptions rather than dialogue register), or treat as a 2B capacity ceiling and defer to a larger model. Start with stronger examples (lowest cost). If no improvement after 3 prompt iterations, document the ceiling and close. This is a low-priority polish ticket — do not block sprint completion on it. ## Dependency Chain ``` #650 (ContentType::Factual) → #652 (observer integration) +#627 (SQLite settings) → #646 (client: AI toggle, cross-team) #633 (composable behavior engine) — parallel track, standalone #655 (remove v0.1 content loading) — parallel track, standalone #651 (tells iterate) — parallel track, standalone