Skip to content

docs(instructions): drop history narratives from the instruction files - #851

Merged
atomchung merged 3 commits into
mainfrom
claude/prompt-audit-instruction-surface
Oct 5, 2026
Merged

atomchung merged 3 commits into
mainfrom
claude/prompt-audit-instruction-surface

Conversation

@atomchung

Copy link
Copy Markdown
Owner

Provenance

The second half of the uncommitted work recovered from .claude/worktrees/qa-multi-turn-trace-counting-ed1876 (2026-09-02, never committed, never pushed, no PR). The first half — the judge's move to structured outputs — is #850 and touches none of these files.

Two commits, deliberately separable

9d14048 — drop history narratives. An instruction file is read as instructions, not as a changelog. Past-tense sentences about what a rule used to be, which PR changed it, and when the owner ruled all cost budget and invite the model to reason about this repository's history instead of the user's question.

File Removed
qa/SKILL.md three narrated asides (row counts, "the docs drift occasionally", "This step was added… on 2026-07-27")
flows/book-refresh.md "and the answer changed with #523"
flows/first-review.md "now gated rather than trusted"
references/condition-slots.md "It used to be the one thing thrown away"
references/decision-framing.md "no longer says it a second time" + the > **History:** block
references/trade-consequence.md the dated owner-ruling paragraph and the "Deleted, and what replaced each" table — three renderings becomes two, because two is what there are

server.js's MCP tool description becomes a contract rather than one line, with a .describe() per input field. A tool description is read by a model deciding whether to call it, so precision beats brevity there.

7900180 — compact freeform witness. freeform-answers.md named the compact scenes in prose but fenced only the upper witness, so the only end of the rule a reader could see was the long one. This fences freeform_cash_question beside it, verbatim from the corpus, and widens test_expression_contract.py from "exactly one exemplar block" to a bounded set (every fence in the opening section, same surface, positive scene, non-duplicated, byte-identical to corpus). It also fixes docs/maintainer-guide.md:156, which still named freeform_positions_view as freeform's exemplar after #843 made it freeform_research_depth.

Open question for you

docs/expression-contract.md:253 says each reference file "opens with its own copy of one of them" — singular. Adding a second fence is arguably a §3 revision that needs a §8 ruling. That is why it is its own commit: drop 7900180 and the rest of the PR still stands.

Three hunks deliberately dropped

The recovered work also wanted to remove "Never claim unsupported portfolio facts or execution." from both entry descriptions, and to reword AGENTS.md rule 5. All three are dropped:

None of the three changes behaviour. They are recorded here rather than silently discarded.

Verification

python3 tests/run_all.py → PASS: all 60 suites passed (group: all) at both commits.

Refs #836.

🤖 Generated with Claude Code

atomchung and others added 3 commits October 5, 2026 12:14
An instruction file is read as instructions, not as a changelog. Past-tense
sentences about what a rule used to be, which PR changed it, and when the
owner ruled, all cost budget and invite the model to reason about the
repository's history instead of the user's question.

Removed: qa/SKILL.md's three narrated asides, book-refresh.md's "and the
answer changed with #523", first-review.md's "now gated rather than
trusted", condition-slots.md's "It used to be the one thing thrown away",
decision-framing.md's "no longer says it a second time" and its History
block, and trade-consequence.md's dated owner-ruling paragraph plus the
"Deleted, and what replaced each" table (three renderings becomes two,
because two is what there are).

server.js's MCP tool description becomes a contract rather than one line,
with a `.describe()` on each input field: a tool description is read by a
model choosing whether to call it, so precision is worth more than brevity.

60/60 offline suites pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The four hunks below sat inside the compact-witness commit of #851, so dropping
that commit would have silently dropped them too. They belong with the rest of
the history cut:

- the "revised by owner ruling 2026-07-30 (#561) from the original
  four-column table" narrative on the positions view
- "Since #830, *where* they go is a rule" and "since #830 that block
  separates ..." (the rules stand; the dating goes)
- "and #823 did not build one"

Also corrects the maintainer-guide row for #834, which still named
freeform_positions_view as freeform's exemplar after #843 made it
freeform_research_depth. No second fence, no test change.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r loose

Found by the independent review of #851 (Codex and Antigravity) and checked
against the code before changing anything:

- docs/maintainer-guide.md, the #830 row, still said trade-consequence.md
  "states a reason per keep and per delete". The per-delete table is gone, so
  the row now says what the file does: a reason per kept fact.
- fomo_submit_demo_choice described `locale` as the language of its
  "confirmation text", but the tool returns one fixed English string and only
  echoes `locale` back. The description now says that.
- qa/SKILL.md Step 6 said archive-receipt makes "converting a miss" part of
  the walkthrough. The gate (`verify --require-findings`) requires a recorded
  disposition, and `--no-findings` and `not-episodable:` are legal ones, so the
  sentence now says "recording where each miss went".

No behaviour change.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
atomchung added a commit that referenced this pull request Oct 5, 2026
…r loose

Found by the independent review of #851 (Codex and Antigravity) and checked
against the code before changing anything:

- docs/maintainer-guide.md, the #830 row, still said trade-consequence.md
  "states a reason per keep and per delete". The per-delete table is gone, so
  the row now says what the file does: a reason per kept fact.
- fomo_submit_demo_choice described `locale` as the language of its
  "confirmation text", but the tool returns one fixed English string and only
  echoes `locale` back. The description now says that.
- qa/SKILL.md Step 6 said archive-receipt makes "converting a miss" part of
  the walkthrough. The gate (`verify --require-findings`) requires a recorded
  disposition, and `--no-findings` and `not-episodable:` are legal ones, so the
  sentence now says "recording where each miss went".

No behaviour change.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
atomchung added a commit that referenced this pull request Oct 5, 2026
… prove it

The review of #851 found that the gate widened from "exactly one fence" to a
bounded set was neither bounded nor proven. Both points were then confirmed by
mutating copies of the reference files:

- Nothing capped the count, so any surface reference could take every positive
  scene of its surface. The #836 owner decision allows one extra witness, on
  freeform only; WITNESS_ALLOWANCE now says so and every other surface stays at
  one. weekly-market-read.md has a single `##` heading, so for it the
  opening-section rule is vacuous and only the count keeps a second fence out.
- The widened rules had no mutation proof (test_exemplar_drift_is_caught only
  exercises the extractor). The checks move into _assert_witnesses, a pure
  function of the file text, and test_witness_rules_are_enforced breaks each of
  its nine rules once on a synthetic reference and requires that rule's own
  message. Deleting any one assert from the gate turns the proof red.

It also fixes prose the second fence made wrong: freeform-answers.md gave one
provenance ("It is copied ... scene freeform_research_depth") for two fences,
the maintainer-guide row said "Four rules" over five bold rules, and a
test_doc_language docstring said every reference opens with one exemplar.

Not pinned, on purpose: which freeform witnesses are present and in what order.
The gate checks that what is there is valid, not that a given scene is.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@atomchung
atomchung force-pushed the claude/prompt-audit-instruction-surface branch from 73864ee to b7c92fb Compare October 5, 2026 04:37
@atomchung atomchung changed the title docs(instructions): drop history narratives, and show the compact freeform witness docs(instructions): drop history narratives from the instruction files Oct 5, 2026
@atomchung

Copy link
Copy Markdown
Owner Author

Scope narrowed to the history cut. The compact second freeform exemplar (commit 7900180) is dropped from this PR: the #836 decision makes freeform_research_depth "the one exemplar visible in references/freeform-answers.md" and keeps the compact scenes in the corpus only, until the owner-live rerun. That commit is preserved on branch claude/pr-851-second-witness for a separate proposal after the rerun.

Head is now b7c92fb: origin/main plus the history-narrative removals (including the four freeform-answers.md edits that were inside 7900180), the maintainer-guide exemplar-name fix, the MCP locale description fix, and the doc cross-reference fixes from review. python3 tests/run_all.py passes 60/60 on this head. Reviews: Codex and Antigravity on the full change, Codex on the fix delta; no live rule lost.

🤖 Generated with Claude Code

@atomchung
atomchung merged commit 7c39ae6 into main Oct 5, 2026
5 checks passed
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