Migrate NPC normalization to shared reconciliation

This commit is contained in:
2026-08-03 23:56:48 +00:00
parent c3513da880
commit c51934d5c6
21 changed files with 204 additions and 767 deletions

View File

@@ -14,7 +14,7 @@ messages:
- role: user
content_file: ./task.md
- role: user
content_file: ./instructions.md
content_file: ./sharedassets/common-dnd-entity-reconciliation.md
cache_control:
type: ephemeral
- role: user
@@ -26,5 +26,5 @@ messages:
output:
format: json
validation_mode: json_schema
schema_path: dnd_npcs_normalize_llm.v1.json
schema_path: dnd_entity_reconcile_llm.v1.json
repair_attempts: 0

View File

@@ -1,10 +0,0 @@
Return duplicate groups only when the transcript context clearly establishes a
single individual. Prefer no group when identity is ambiguous.
Copy supplied display names into each group's members. Choose canonical_name
from that same group's supplied members. Prefer a complete stable proper name
over an abbreviation, but prefer an unadorned proper name over that name plus a
contextual class, role, title, or relationship descriptor unless the descriptor
is established as part of the name.
Do not invent names, source references, replacement records, or explanations.

View File

@@ -1,2 +1,8 @@
Identify only supplied NPC display names that clearly refer to the same
individual in the supplied transcript context.
Review NPC candidates and their cited transcript context to identify aliases
that refer to the same individual. Propose only groups supported by the
transcript, and preserve distinct individuals even when their names are
similar.
For every accepted group, choose as canonical the supplied candidate whose
display name is the most complete and clear NPC name. Do not invent, edit, or
combine display names.

View File

@@ -1,24 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "notarius.dnd.npcs.normalize.llm",
"type": "object",
"additionalProperties": false,
"required": ["duplicate_groups"],
"properties": {
"duplicate_groups": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["members", "canonical_name"],
"properties": {
"members": {
"type": "array",
"items": {"type": "string"}
},
"canonical_name": {"type": "string"}
}
}
}
}
}