Skip to content

Every prompt ends on the work it asks for - #192

Merged
tobert merged 2 commits into
mainfrom
prompt-closings
Sep 10, 2026
Merged

tobert merged 2 commits into
mainfrom
prompt-closings

Conversation

@tobert

@tobert tobert commented Sep 10, 2026

Copy link
Copy Markdown
Owner

A kaibo deliberation over the merged 0.5.0 prompts (cast gpt-deliberate — GPT-5.6-sol reasoning offline over a GPT-5.6-luna dossier) found that #190's restyle is right in every preamble read alone, and undone by composition. Each claim below was checked against source before I acted on it. Several other claims in the same report did not survive that check and are not here.

The obligation was no longer the last thing read. phase_preamble splices the project file map and the operator's house rules in after a preamble's closing line, and run_explorer appends the attach directive after that. So a composed explorer prompt ended on "Up to 32 files this sweep." and a composed consult prompt ended on "It is background about how this project works, not the question you are answering." The close is where a model attends most, and we had put a file count there.

The closing obligation is now restated after anything spliced in, and the attach directive ends on the report rather than on a number. An operator override keeps its own last word — [prompts] replaces the role framing in full, so appending kaibo's closing would put back a piece of what the operator removed.

The history framing contradicted the preamble it ships with. It ordered "re-read any file:line an earlier answer cited before you rely on it" — the exact re-verification the consult preamble argues against four paragraphs earlier in the same request, and the behavior the cheap-explorer/capable-synth split exists to avoid paying for. It now names prior citations as trusted and spends the turns on what the new question reaches. The tiebreaker for genuine conflicts stays.

deliberate ended with the dossier, which is the longest thing in the request. It now closes on the answer.

One obligation, one phrasing. The three-way separation sentence appears in every prompt that hands work to someone else, in the same words; oneshot and batch each carried their own variant. Same reason the attach directive now calls its reader "the synthesis agent" — "the consult driver" was a second name for the model the explorer preamble already names.

Six tests, each run against the code with its guard removed. Two of those sabotage runs matched no anchor on the first attempt and reported clean; they were re-run against the real source text before being believed, which is the failure mode that check exists to catch.

Suite 1358/0, clippy clean.

Not done here, and deliberately: the report's list of figurative phrasings ("costs you every read after it", "where the evidence runs out"), the CamelCase report-schema labels, and the 1,200 lines reading cue. The first two are a prose pass over text the pending prompt-analysis import would rewrite anyway, and the third is a fact about the shell rather than a size target for the deliverable.

🤖 Generated with Claude Code

tobert and others added 2 commits September 10, 2026 18:26
A kaibo deliberation over the merged 0.5.0 prompts (cast `gpt-deliberate`,
GPT-5.6-sol over a GPT-5.6-luna dossier) found that #190's restyle is correct
in each preamble read alone, and undone by composition. Every claim below was
checked against source before acting on it; several other claims in the same
report did not survive that check and are not here.

The obligation was no longer last. `phase_preamble` splices the project file
map and the operator's house rules AFTER a preamble's closing line, and the
explorer's attach directive is appended after that — so a composed explorer
prompt ended on "Up to 32 files this sweep." and a composed consult prompt
ended on the house rules. The close is where a model attends most, and we had
put a file count there. The closing is now restated after anything spliced in,
and the attach directive ends on the report rather than on a number. An
operator override keeps its own last word: `[prompts]` replaces the role
framing in full, so appending kaibo's closing would put back part of what the
operator removed.

The session history framing ordered "re-read any `file:line` an earlier answer
cited before you rely on it" — the exact verification behavior the consult
preamble argues against four paragraphs earlier in the same request. It now
names the prior citations as trusted and spends the turns on what the new
question reaches.

The deliberation prompt ended with the dossier, which is the longest thing in
the request; it now closes on the answer. The three-way separation instruction
appears in every prompt that hands work to someone else, in one phrasing —
oneshot and batch each had their own variant, and a second phrasing of one
obligation reads to a model as a second obligation. Same reason the attach
directive now calls its reader "the synthesis agent": "the consult driver" was
a second name for the model the explorer preamble already names.

Six tests, each run against the code with its guard removed. Two sabotage runs
matched no anchor on the first attempt and reported clean; they were re-run
against the real text before being believed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-by: kaibo cast `gpt-deliberate` (GPT-5.6-sol / GPT-5.6-luna)
@tobert
tobert merged commit 6575a4e into main Sep 10, 2026
1 check passed
tobert added a commit that referenced this pull request Sep 10, 2026
#192 changed the session-history framing from re-verification to trust
and acquisition, and left the doc comment above `consult_user_prompt`
describing the behavior it replaced: "History prepends the prior
`(question, answer)` pairs and steers the model to re-confirm any span a
prior answer cited."

A standalone `explore` over the prompt-composition path found it,
reported it as the one thing that looked stale in the area, and named
how to confirm — the framing text and
`session_history_asks_for_more_evidence_not_a_re_read` both pin the
opposite.

Internal comment only: no published text, no behavior change, no test
change. The two claims the old comment made that are still true — the
exploration runs fresh every turn rather than replaying a stored report,
and the files win over a prior answer where they disagree — stay.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant