Demo seed: the wiki's lane 8 pages and lane 10's bot tests (#734, #736) #946

Merged
claude-bot merged 5 commits from build/demo-seed-lanes-8-10 into main 2026-09-30 04:57:59 +00:00
Collaborator

This extends the dev demo seed (webapp/backend/demo/) to lanes 8 and 10. Every built feature gets at least 5 entries of different kinds, plus a README coverage row. The lane 8 rows move out of "Not built yet".

Seeded:

  • Blocks in the articles:
    • :::gm ×10, :::for ×5 (one for the owner's character) and :::party ×2;
    • content.py refuses names it can't resolve.
  • Page audiences:
    • 5 GM-only, 2 party-only and 1 for the owner and Priya;
    • 6 private page pictures, one per audience.
  • Parties:
    • three, with 19 membership spans (joined, left, retired, died, swapped), a companion and hirelings;
    • reputation changes and downtime entries;
    • item custody histories.
  • Quests:
    • 29 quest pages with details (main, givers, rewards, "Posted by") and 32 objectives, 9 of them hidden;
    • lane 7's rumours point at the quest pages.
  • Handouts: 6 handouts (an image, a 4-page PDF, a taken-back one, a letter torn in three, one for the owner alone, one a player uploaded), with 7 reveals and no Discord.
  • Maps:
    • 3 atlases and 5 maps (4 ready and 1 failed);
    • 38 markers, at least 5 of every kind;
    • 4 travel links and a 21-stop trail.
  • Suggestions, links and history: 5 player suggestions (the Tuesday Tide is "Players suggest, I decide"), 485 links, 9 footnotes and 351 wiki events.
  • Bot tests: 6 in the Amberwake Accord, all finished and kept, with no files and audio_deleted_at set. There are 5 session_usage rows with purpose='test'.

Files:

  • Where: 76 files, drawn with Pillow from fixed random seeds, go under media/private/campaigns/<demo campaign>/.
  • When: only after commit, never on --dry-run.
  • Reset: --reset clears only the demo campaigns' own folders, and the writer refuses any path outside them.

Maps are tiled synchronously: the task's cutting loop moved into a pure app.tasks.map_tiles.cut_tiles(), which the task and the seed both call. The behaviour is unchanged.

Not seeded (in the README): shelf_reveal_messages (nothing went to Discord), platform_links and notification_deliveries.

Found: a raw DELETE FROM campaigns fails on quest_objectives because of two cascade paths. The app's ORM purge is fine. Filed as #943; the seed deletes the lane 8 tables first.

Checks:

  • test_demo_seed.py plus the wiki map, tile, picture, handout and quest tests: 83 pass.
  • The CLI on a freshly migrated DB: the first run, a re-run ("already exists"), --reset (same ids, stale file removed) and --dry-run (no files) all behave.
  • 14 tripwires armed, 0 hit.
  • ruff 0.4.4 and changelog.py check pass.

Next dev deploy: re-run the seed with --reset.

🤖 Generated with Claude Code

This extends the dev demo seed (`webapp/backend/demo/`) to lanes 8 and 10. Every built feature gets at least 5 entries of different kinds, plus a README coverage row. The lane 8 rows move out of "Not built yet". **Seeded:** - **Blocks in the articles:** - `:::gm` ×10, `:::for` ×5 (one for the owner's character) and `:::party` ×2; - `content.py` refuses names it can't resolve. - **Page audiences:** - 5 GM-only, 2 party-only and 1 for the owner and Priya; - 6 private page pictures, one per audience. - **Parties:** - three, with 19 membership spans (joined, left, retired, died, swapped), a companion and hirelings; - reputation changes and downtime entries; - item custody histories. - **Quests:** - 29 quest pages with details (main, givers, rewards, "Posted by") and 32 objectives, 9 of them hidden; - lane 7's rumours point at the quest pages. - **Handouts:** 6 handouts (an image, a 4-page PDF, a taken-back one, a letter torn in three, one for the owner alone, one a player uploaded), with 7 reveals and no Discord. - **Maps:** - 3 atlases and 5 maps (4 `ready` and 1 `failed`); - 38 markers, at least 5 of every kind; - 4 travel links and a 21-stop trail. - **Suggestions, links and history:** 5 player suggestions (the Tuesday Tide is "Players suggest, I decide"), 485 links, 9 footnotes and 351 wiki events. - **Bot tests:** 6 in the Amberwake Accord, all finished and kept, with no files and `audio_deleted_at` set. There are 5 `session_usage` rows with `purpose='test'`. **Files:** - **Where:** 76 files, drawn with Pillow from fixed random seeds, go under `media/private/campaigns/<demo campaign>/`. - **When:** only after commit, never on `--dry-run`. - **Reset:** `--reset` clears only the demo campaigns' own folders, and the writer refuses any path outside them. **Maps are tiled synchronously:** the task's cutting loop moved into a pure `app.tasks.map_tiles.cut_tiles()`, which the task and the seed both call. The behaviour is unchanged. **Not seeded (in the README):** `shelf_reveal_messages` (nothing went to Discord), `platform_links` and `notification_deliveries`. **Found:** a raw `DELETE FROM campaigns` fails on `quest_objectives` because of two cascade paths. The app's ORM purge is fine. Filed as #943; the seed deletes the lane 8 tables first. **Checks:** - `test_demo_seed.py` plus the wiki map, tile, picture, handout and quest tests: 83 pass. - The CLI on a freshly migrated DB: the first run, a re-run ("already exists"), `--reset` (same ids, stale file removed) and `--dry-run` (no files) all behave. - 14 tripwires armed, 0 hit. - ruff 0.4.4 and `changelog.py check` pass. **Next dev deploy:** re-run the seed with `--reset`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(demo): seed lane 8's wiki and lane 10's bot tests (#734, #736)
All checks were successful
CI / Bot/backend version sync (pull_request) Successful in 36s
CI / Does this change touch the recording path? (pull_request) Successful in 45s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Has been skipped
CI / Feedback site tests (pull_request) Successful in 1m11s
CI / Backend lint (ruff) (pull_request) Successful in 1m29s
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 3m8s
CI / Docker image build (pull_request) Successful in 3m35s
CI / Bot tests and audit (pull_request) Successful in 5m14s
CI / End-to-end journeys (desktop) (pull_request) Successful in 8m20s
CI / Frontend (shard 2/2) (pull_request) Successful in 13m58s
CI / End-to-end journeys (phone) (pull_request) Successful in 13m56s
CI / Frontend (shard 1/2) (pull_request) Successful in 19m31s
CI / End-to-end journeys (keyboard) (pull_request) Successful in 15m30s
CI / Backend migration, tests, and audit (pull_request) Successful in 34m48s
db0c72eae4
Parties, reputation, downtime, custody and the unidentified ring; the
quests as pages with details, objectives and personal notes; mid-text
blocks and page audiences; six handouts with files and reveals; private
page pictures; atlases, maps drawn and tiled at seed time, markers, links
and the trail; players' suggestions in the Tuesday Tide; the link index and
the wiki feed; six finished bot tests and their usage (D227). Files are
written under media/private/ only after the commit.

app.tasks.map_tiles: the cutting is a pure cut_tiles() the task and the
seed both call.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No description provided.