3.4. Conversation context and history
A session accumulates subjects. Someone spends a morning in a codebase and then asks a question about the specification that codebase implements — and gets an answer about the codebase, because that is what the conversation has been about.
The reading was real and the names were real, so nothing in the answer looks wrong. It is simply an answer to a larger question than the one asked.
SPEAR draws one distinction to prevent this:
The rule
History for interpretation is not history for evidence. Earlier turns resolve what the current message means. They do not supply what the current answer is made of.
3.4.1. Scope is read from the current message
Every turn is classified from its own words:
Scope |
The question |
What is on the table |
|---|---|---|
|
about the specification — what it defines, requires or means |
with a standard bound, the authoritative tools; the working-tree tools are withheld |
|
about this project’s code — read it, change it, build it |
with no standard engaged, the coding core’s six tools (Implementation mode) |
|
about both — a comparison, a compliance question, or a change that must satisfy the standard |
both for a question; a change runs the three-pass MIXED pipeline (Mixed mode) |
|
neither, with no document bound |
the coding core’s six tools |
“How does our parser handle this?” is an implementation question and is answered from the code. “What does the specification require here?” is a normative one and is answered from the document. “Does our parser comply?” asks about both and gets both. “Make our parser comply with Rule 7.4.1-2” asks for a change the standard governs, and runs as a MIXED change.
3.4.2. Self-contained and referring turns
A message that names its own subject is self-contained. A message that points at something instead of naming it — “does that comply”, “what does that function do” — needs what it points at, and keeps the whole conversation. That is what makes the referring form work.
For a self-contained normative turn, the generation context is built from:
the current question;
the authoritative evidence retrieved for it;
the conversation, as continuity rather than as material.
Concretely, prior exchanges that were about the project’s own code are carried as a marker saying an exchange happened and what kind it was, rather than as their contents. The appended transcripts of what earlier turns’ tools returned are not carried at all: they are machine output, and a clause this turn needs is a clause this turn fetches.
What was said about the document in earlier turns is carried whole. The withholding is of the project’s material, not of the conversation.
Note
This is why a prior turn’s function names do not appear in an answer about the specification — not because they are filtered out of the text, but because they were never in the turn’s evidence to begin with. Filtering names out of a finished draft would hide the symptom; keeping them out of the context removes the cause.
3.4.4. Practical consequences
Ask normative questions in a self-contained form. “Explain how X works” gets the document; “and what about that other thing we saw” gets the conversation.
To compare, say so. A comparison is a MIXED question and is given both sides.
/clearstarts a fresh conversation when a session has drifted far from what you now want to ask;spear-chat --freshstarts a session without the stored conversation and leaves it for later./historyshows what the session is carrying.