2.7 KiB
D&D Item-Occurrence Artifact
dnd/item-occurrences currently produces this source-grounded item and currency
occurrence list. It records discoveries and possession changes, not an
inventory, balance, or ledger.
Identity and compatibility
| Property | Value |
|---|---|
| Artifact kind | dnd/item-occurrence-list |
| Schema ID | notarius.dnd.item_occurrences |
| Schema name | notarius_dnd_item_occurrences_v1 |
| Schema version | v1 |
| Media type | application/json |
v1 accepts one strict JSON object with required occurrences; the array may
be empty. Each occurrence has required item_id, name, kind, and
source_refs, and occurrence and source-reference objects reject unknown
fields. quantity, from, and to appear only when their kind permits them.
An incompatible shape change requires a new schema version.
Registry grounding
Both extraction and normalization require an item_registry reference bound to
an earlier normalized dnd/item-registry artifact. The registry is immutable
for an operation and contributes only its ordered {id,name} projection after
the shared evidence message. It is never occurrence evidence.
Each occurrence must use one exact registry ID/name pair. Extraction omits an unknown ID or mismatched name rather than creating an item. Normalization canonicalizes a recognized name by ID, preserves unknown values for the registry validator, and the registry validator rejects unknown or mismatched pairs.
Wire shape
Each source reference has exactly source_id, start_unit_id, and
end_unit_id. It identifies an inclusive range in the current transcript;
unit IDs are positive and the start may not follow the end.
{
"occurrences": [
{
"item_id": "item:sha256:…",
"name": "Silver Pieces",
"kind": "acquired",
"quantity": 20,
"to": "party",
"source_refs": [
{"source_id": "session-7", "start_unit_id": 2, "end_unit_id": 2}
]
}
]
}
The five kinds remain discovered, acquired, lost, consumed, and
transferred. Holder, quantity, currency, ordering, and exact-duplicate rules
are unchanged: discovered has no holder; acquired requires to; lost and
consumed require from; transferred requires distinct non-party holders.
The only current downstream compatibility requirement is its registry handoff;
the normalized occurrence list is otherwise published for callers. See
Configuration for the binding and
JSON output for publication.
See item registry for the grounding artifact and D&D module internals for implementation details.