fix(content): repair client consumers broken by the Duncarrow purge

The purge plan assumed content/world/** was pure build output. The client
reads it: content_db.gd loads content/world/topics/ (now absent, since every
topic was Duncarrow-generated) and its tests asserted on deleted ids.

- content_db: a missing content dir is an empty dir, not an error (§13)
- test_content_db: repoint at cosmology canon; drop deleted npc.mera-fenn
- test_content_db: assert the no-body-on-client invariant structurally, so it
  cannot pass vacuously when the topic set is empty
- schema.md: finish repointing the worked example onto specimen.md's ids
- restore a local real-bible --check smoke test (was only in CI)
- roadmap: record that generated content has client consumers

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 16:00:06 -05:00
parent fae39d9c79
commit dc4b14d3e5
5 changed files with 50 additions and 17 deletions

View File

@@ -0,0 +1,16 @@
"""Smoke gate: the real Margreave bible builds clean. Local mirror of the CI
content-build workflow's `--check` step — asserts freshness/validity only,
never specific entities (that's what made the old Duncarrow-era test brittle)."""
from pathlib import Path
from content_build.__main__ import check
REPO_ROOT = Path(__file__).parents[3]
def test_real_bible_check_is_clean():
lore = REPO_ROOT / "content" / "lore"
world = REPO_ROOT / "content" / "world"
server = REPO_ROOT / "content" / "server" # absent today — check() must tolerate that
assert check(lore, world, server) == 0