Hardened D&D spell extraction prompts

This commit is contained in:
2026-07-20 20:25:23 -05:00
parent fa5076f5f1
commit c4c907d421
7 changed files with 130 additions and 32 deletions

View File

@@ -158,11 +158,25 @@ reference into an immutable effective catalog and adds a generated
canonical-name-only JSON input to every structured completion request. Overlay
failures therefore stop construction before source parsing or an LLM call;
campaign references remain separate disambiguation inputs and never become
source evidence. Both the extractor and deterministic catalog validator expose
source evidence.
The prompt requires each cast's source references collectively to support all
reported facts, using separate narrow ranges when a declaration and resolution
are non-contiguous. It grounds caster names in in-world identities, using the
player and party references to disambiguate transcript speakers without
treating those references as event evidence. Effects describe the session as
played: model rules knowledge cannot supplement or correct the transcript, and
nonstandard adjudication is attributed to the GM or table rather than stated as
a universal rule. Structural source validation remains deterministic; semantic
claim completeness is enforced through extraction policy and evaluation.
Both the extractor and deterministic catalog validator expose
the effective base-plus-overlay semantic digest as scoped prepared-component
checkpoint identity. Raw overlay provenance independently covers file-byte
changes, while the semantic digest also invalidates reuse when the embedded
catalog or catalog composition changes. The separate
catalog or catalog composition changes. The extractor additionally fingerprints
its complete prompt assets and private response schema, so either semantic
contract changing invalidates previously recorded extraction checkpoints. The separate
`internal/modules/dnd/codec/spells` package
owns the durable schema and stable JSON representation for artifact kind
`dnd/spell-list`. The runner keeps the result typed through validators and later