fix: PASS 3 system-override anti-hallucination for deceased Kaelen

Previous rule was hint-only and ignored by LLM deep in long context.
Now uses system: override (added to system prompt) plus hyper-explicit
step-by-step self-check targeting Kaelen by name. Dead = no Location,
no Physical, no Emotional, no Arc. Final self-check before submit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-03-25 07:08:01 -04:00
parent 41ad0596e3
commit f5d4be7f69

View File

@@ -281,59 +281,69 @@ steps:
primary_deliverable: true
- type: think
system: |
EXTRACTION MODE — DO NOT CREATE FICTION.
Your ONLY task is to extract factual state from the chapter you just wrote.
You are NOT writing the story. You are NOT continuing the narrative.
Characters who are DEAD are DEAD. You may NOT invent a living version of them.
KAELEN IS DEAD. HE DIED IN CHAPTER 4. DO NOT WRITE KAELEN AS ALIVE.
If you write a "Location:" or "Physical:" or "Emotional:" field for Kaelen, that is WRONG.
hint: |
PASS 3 -- CHARACTER + WORLD STATE EXTRACTION
You have just completed the chapter. Extract structured state for continuity tracking.
Write in compact format -- this content will be stored as a RAG asset read by the
NEXT chapter's PASS 0. Every character who appeared must have an entry.
NEXT chapter's PASS 0.
══ DECEASED CHARACTER RULE (HIGHEST PRIORITY) ══
If a character DIED before or during this chapter -- whether the death happened in
this chapter or was already established when this chapter began -- their entry is:
══ MANDATORY FIRST CHECK — READ BEFORE WRITING ANYTHING ══
STEP 1: Check PASS 0 above (earlier in this conversation). Find every character listed
as "(DECEASED)" or "†" or "DEAD" in the bible or character state.
STEP 2: For each such character, you MUST use ONLY the short DECEASED format below.
You MAY NOT give them a Location, Physical, Emotional, or Arc field.
They are DEAD. Dead characters do not have locations. They do not have arcs.
They are not "at the stairwell." They are not "resigned." They are ABSENT.
STEP 3: If Kaelen appears in your output with a Location field — DELETE IT.
If Kaelen appears with an Emotional field — DELETE IT.
If Kaelen appears with an Arc field — DELETE IT.
Write ONLY: ## Kaelen — DECEASED (Ch04)
══ DECEASED FORMAT (two lines only) ══
## [Name] — DECEASED (Ch[N])
Established: [one sentence: how and when they died]
Legacy: [one sentence: how their absence affects the current chapter]
DO NOT assign Location, Physical, Emotional, Active obligations, Open loops, or Arc
to a deceased character. A dead character has NO location, NO emotional state, NO arc.
References to a dead character in dialogue, memory, or grief do NOT make them alive.
If a character is mentioned only in past tense, memory, or as an absence -- they are DEAD.
DO NOT invent a living presence for them. DO NOT put them in the scene.
Established: [one sentence: how they died]
Legacy: [one sentence: how their death affected this chapter]
══ LIVING CHARACTER FORMAT ══
# Character State: {chapter_ref}
## [Character Name]
Location: [specific location -- building, floor, city, planet -- no vague "nearby"]
Location: [specific location -- building, floor, city, planet]
Physical: [injuries, fatigue, notable physical state, or "no injuries"]
Emotional: [dominant emotion at chapter end; what they are CARRYING into next chapter]
Active obligations: [debts/promises owed, format: "owes [person] [what] (Ch[N]) -- UNPAID/PAID"]
Open loops: [unresolved conflicts, unanswered questions, format: "[parties] [issue] (Ch[N]) -- UNRESOLVED/RESOLVED"]
Known secrets: [information this character has that others don't -- format: "knows [what] -- [who does NOT know]"]
Arc: [XX%] -- [one sentence: what permanently changed in this character this chapter, or "no change"]
Permanent: [YES if something permanently changed (power gained/lost, relationship status changed, secret revealed); NO otherwise]
Emotional: [dominant emotion at chapter end]
Active obligations: [format: "owes [person] [what] (Ch[N]) -- UNPAID/PAID"]
Open loops: [format: "[parties] [issue] (Ch[N]) -- UNRESOLVED/RESOLVED"]
Known secrets: [format: "knows [what] -- [who does NOT know]"]
Arc: [XX%] -- [one sentence: what permanently changed this chapter]
Permanent: [YES/NO]
(Repeat for EVERY named character who appeared in this chapter -- deceased get the short form above)
(Repeat for EVERY named character who appeared. Deceased = short form only.)
# World State: {chapter_ref}
## NPC Memory
- [NPC Name] ([faction/location]): [ATTITUDE] -- [what happened] -- [behavioral consequence]
(List every NPC who interacted with a protagonist and now has a changed attitude)
- [NPC Name] ([faction/location]): [ATTITUDE] -- [what happened] -- [consequence]
## Faction Attitudes
- [Faction name]: [current attitude toward protagonists] -- [reason]
(List any faction whose attitude changed this chapter)
- [Faction name]: [attitude] -- [reason]
## Active World Events
- [Event]: [status and expected timeline]
(List any ongoing world events that will affect future chapters)
- [Event]: [status and timeline]
CRITICAL: Keep the total output under 3500 characters. Be precise and specific.
Do NOT write prose -- only the structured data above.
FINAL SELF-CHECK before submitting: Scan your output for Kaelen's name.
If he has a Location, Physical, or Emotional field — delete them. He is dead.
If any other character is noted as DECEASED in PASS 0 — apply the same rule.
CRITICAL: Keep total output under 3500 characters. NO prose — structured data only.
- type: rag_write
asset_id: "character-state"