Document scene-aware combat extraction
This commit is contained in:
@@ -123,6 +123,28 @@ shared `internal/modules/dnd/codec/candidatejson` package supplies strict typed
|
||||
candidate JSON mechanics; each artifact codec retains its own durable schema
|
||||
and approved-value policy.
|
||||
|
||||
### `internal/modules/dnd/scenedescriptions/registry`
|
||||
|
||||
The scene-description registry owns the required `scene_descriptions` control
|
||||
reference used by combat extraction. It decodes exactly one approved scene-list
|
||||
artifact through the scene-description codec and retains only scene ID, exact
|
||||
source reference, and kind. Titles, summaries, original bytes, paths, and
|
||||
prompt material do not cross this domain boundary.
|
||||
|
||||
An external reference is validated during preparation; an unbound seed is
|
||||
permitted only while a configured generated reference awaits the ordered
|
||||
handoff. At operation time, a generated artifact overrides the seed and is
|
||||
resolved into an immutable view safe for concurrent extract jobs. Matching is
|
||||
strictly exact by chunk ID, source ID, start unit ID, and end unit ID, producing
|
||||
an exact, missing, or mismatched result. Only an exact result exposes kind.
|
||||
|
||||
The registry's semantic eligibility digest is derived from a sorted projection
|
||||
of ID, exact range, and kind. It ignores titles, summaries, and input order;
|
||||
the unbound view has a stable empty projection digest. Combat extractor
|
||||
metadata and checkpoint identity use this semantic boundary for external
|
||||
references, while generated artifact identity and dependencies remain owned by
|
||||
the framework handoff.
|
||||
|
||||
The `internal/modules/dnd/codec/combatturns` package owns the durable
|
||||
`dnd/combat-turn-list` schema and candidate versus approved JSON boundary. It
|
||||
is registered by the production D&D family registrar for the selectable combat
|
||||
@@ -293,18 +315,31 @@ checks. The durable contract is defined in the
|
||||
|
||||
### `internal/modules/dnd/extract/combatturns`
|
||||
|
||||
The combat extractor prepares one structured request per supplied chunk using
|
||||
the shared extraction-evidence, identity, campaign-reference, NPC-grounding,
|
||||
and transcript prompt inputs. It
|
||||
maps the private response to `dnd.CombatTurnList`, assigns the current source
|
||||
identity, removes exact duplicate source ranges, and orders turns by valid
|
||||
source-document position while preserving malformed candidate fields for
|
||||
deterministic validators. Its package-owned private response schema enforces
|
||||
only the structural JSON envelope; semantic artifact constraints remain with
|
||||
the validator chain. Its prepared metadata and checkpoint fingerprints contain
|
||||
only prompt/schema/mapping identities plus an optional NPC registry digest.
|
||||
The prompt follows the shared D&D extraction ordering and cache policy
|
||||
documented in
|
||||
The combat extractor requires the `scene_descriptions` reference and resolves
|
||||
it through the immutable scene-description registry before it resolves NPC
|
||||
grounding or constructs prompt inputs. It calls the LLM only for an exact
|
||||
current-chunk match whose kind is `combat`. Exact `narrative`, `recap`, and
|
||||
`meta` matches return an accepted empty `dnd.CombatTurnList`; missing or
|
||||
mismatched coverage returns the same result with one bounded unavailable-
|
||||
classification warning. These deterministic results do not consume retry
|
||||
attempts. Scene descriptions are control context only and are not passed to the
|
||||
combat prompt or copied into combat evidence.
|
||||
|
||||
For eligible chunks, the extractor prepares one structured request using the
|
||||
shared extraction-evidence, identity, campaign-reference, NPC-grounding, and
|
||||
transcript prompt inputs. It maps the private response to
|
||||
`dnd.CombatTurnList`, assigns the current source identity, removes exact
|
||||
duplicate source ranges, and orders turns by valid source-document position
|
||||
while preserving malformed candidate fields for deterministic validators. Its
|
||||
package-owned private response schema enforces only the structural JSON
|
||||
envelope; semantic artifact constraints remain with the validator chain.
|
||||
|
||||
Prepared metadata and checkpoint fingerprints include prompt, response-schema,
|
||||
mapping, and scene-gate identities. An external scene reference additionally
|
||||
reports its semantic eligibility digest and count; generated identity remains
|
||||
framework handoff provenance and dependency state. Neither surface retains
|
||||
scene prose or payload bytes. The prompt follows the shared D&D extraction
|
||||
ordering and cache policy documented in
|
||||
[LLM Runtime](llm.md#dd-extraction-prompt-ordering-and-cache-boundaries). The
|
||||
package exposes typed registration and is included in the production D&D
|
||||
registrar with the default combat extraction chain.
|
||||
|
||||
Reference in New Issue
Block a user