Goal-negotiated conversation needs a reified update call
Type: kb/types/note.md · Tags: computational-model
Bounded-context orchestration model types its loop as symbolic computation over K alternating with bounded calls r = call(P). Any symbolic program with LLM calls is a select/call program claims this covers the full space of such architectures, but its own Scope section carves out an exception: "external mutable state not represented in K." An unsolicited human turn that revises the goal itself is exactly that — not symbolic computation, and not a call(P) the scheduler asked for.
The model stays clean only if that revision is reified as its own call: K.goal' = call(interpret_goal_revision, K.goal, turn), inserted after every human turn. select stays symbolic; the one genuinely semantic operation — does this turn modify the goal, replace it, or leave it untouched — goes to the LLM side, where scheduler-LLM separation exploits an error-correction asymmetry says it belongs: free-text interpretation "resists cheap error correction" and can't be done as bookkeeping. This is a pattern inside the existing model, the same status as the ContextProvider pattern the orchestration note already names — not a new theory.
Two failure modes this avoids
Without an explicit K.goal, two things go wrong. Raw history (the chat-history model) re-derives the goal from the full transcript every call; with no scoping boundary between the current and abandoned goal (LLM context is composed without scoping), it leaks — context contamination operates below an agent's compliance reasoning is direct evidence that even an explicitly superseded stance keeps pulling at fine grain. Silent tool-loop defaults (agent-is-a-tool-loop) fold a goal-revising turn into K like any other result, with nothing that notices the goal moved at all — the opposite failure, understating the revision instead of drowning in it. The reified update call sits between: it doesn't carry the full deliberation forward, but it doesn't let a change pass unmarked either.
Precedent, and what's actually novel
Task-oriented dialogue systems already run this recursion for a closed schema: dialogue state tracking updates a belief state each turn from that turn's evidence and the prior state (Mrkšić et al., 2017), and MultiWOZ (Budzianowski et al., 2018) covers exactly this across multi-domain goal switches. What DST doesn't need to solve is the open-ended case — its slots are fixed, so "did the goal change" is a classification problem. A general chat agent's goal has no fixed schema; recognizing modify-versus-replace is a judgment call, which is why the update has to be an LLM call rather than a trained classifier. The recursion isn't new; generalizing its target from closed slots to an open-ended goal is.
One thing this rules out
LLM-mediated schedulers are a degraded variant of the clean model treats LLM-mediated bookkeeping as a state to escape by factoring it into code. That doesn't apply here: there's no symbolic endpoint to recover, because the party whose judgment is being tracked — a human — isn't part of the system that could be rewritten. interpret_goal_revision is essential, not a placeholder for code not yet written.
Open Question
Does distinguishing "modifies" from "replaces" need more than K.goal plus the new turn, or can an implicit shift only be caught with a window of recent history? And the pattern's own new failure mode: the update call can misclassify a turn, where raw history at least preserves the ambiguity for a human to notice — is there a cheap confidence check that doesn't reintroduce the cost this pattern is meant to avoid?
Sources: - Mrkšić et al. (2017). Neural Belief Tracker: Data-Driven Dialogue State Tracking — belief state updated per turn from current-turn and prior-turn evidence, the update recursion this note's pattern generalizes. - Budzianowski et al. (2018). MultiWOZ: A Large-Scale Multi-Domain Wizard-of-Oz Dataset for Task-Oriented Dialogue Modelling — multi-domain conversations with goal switches at scale, the closed-schema precedent for tracked goal replacement.
Relevant Notes:
- Bounded-context orchestration model — extends: names a second concrete pattern within the select/call model, alongside ContextProvider
- Any symbolic program with LLM calls is a select/call program — grounds: its own Scope section names the boundary case this note resolves
- Scheduler-LLM separation exploits an error-correction asymmetry — grounds: why goal interpretation must be an LLM call, not symbolic bookkeeping
- The chat-history model trades context efficiency for implementation simplicity — contrasts: names the raw-accumulation default this pattern replaces with an explicit update
- LLM context is composed without scoping — mechanism: explains why the raw-history default has no boundary between current and abandoned goal
- Context contamination operates below an agent's compliance reasoning — evidenced-by: the fine-grained leakage signature the raw-history failure mode predicts
- LLM-mediated schedulers are a degraded variant of the clean model — contrasts: its factor-into-code trajectory doesn't apply when the external party is irreducibly semantic
- "Agent" is a useful technical convention, not a definition — contrasts: the tool-loop shape whose silent-ignore gap this note's second failure mode names