Skip to content

feat(revise): read a reply an agent drafted, which its poster read, as the poster's guidance - #117

Merged
mmaclay merged 4 commits into
mainfrom
feat/guidance-steered-replies
Nov 7, 2026
Merged

mmaclay merged 4 commits into
mainfrom
feat/guidance-steered-replies

Conversation

@mmaclay

@mmaclay mmaclay commented Nov 7, 2026

Copy link
Copy Markdown
Member

Origin: the maintainer, after #108: most steering of agents happens in replies to their findings, and a reply posted through pr-fix carries the attribution line, so the revision read it as the agent's and lost the person's reason. Closes the first open question #108 left.
Sandbox: the extractor (opus) over three pull requests of the private reference month, 199 comments, each tally run on main and on this branch over the same items. Main drops 14 items from drafted replies. This branch lists the 12 whose poster read the reply: 1 admits (a review-calibration principle), 2 support a live decision and a live data convention, and 9 hold (no signal of generality). The 2 at 5/5 stay the agent's. None of the 12 is an agent's own preference; they are the authors' reasons and design facts. Month-wide, 298 of the 429 drafted replies count as their poster's. The other 131 stay the agent's: 82 at 5/5 and 49 with no sign of reading. On the sandbox fixture (sandbox/harvest), recall is 48/48 and precision 47/49, with the drafted dissent kept apart from the principle it argues against (themes kept apart 9/9).
Canary: the next real revise prepare. Its tally's drafted: count and the report's drafted lines should name the people who answered findings through pr-fix. A disagree reason from a reply at 4/5 or lower that is missing from the report is the failure to look for.

What changes

A reply someone posts through pr-fix or another skill now counts as that person's guidance, however the agent worded it, when its attribution line shows they read it. That means an AI assistance level of 1/5 to 4/5, or the older "reviewed and approved by @" wording.

  • A reply at 5/5, the default, or with no sign that anyone read it, stays the agent's, as on main, so a reason the agent supplied and nobody read never enters the standard.
  • A finding, a review summary or a conversation comment an agent drafted stays the agent's.

Changes by file:

  • scripts/guidance_tally.py:
    • An ai-drafted item in a read reply goes the way a person's does: admit, covered or hold.
    • Each such line gets a drafted · <key> · pr-NNNN · <author> · <1-4>/5|approved · <url> line.
    • The closing line counts drafted:.
    • The level is read only from the attribution line: an own line with the 🤖 and "AI-assisted", outside quotes, fences and code spans.
  • scripts/guidance_clusters.py:
    • Validates the drafted lines, refusing a bad level or a key that names no line.
    • Prints them under their cluster, or under the live entry a covered one supports.
  • Docs:
    • skills/revise/harvest.md "Clusters": a statement that argues against a principle never joins that principle's cluster.
    • skills/revise/prepare.md step 5: the report marks drafted lines.
    • standards/dials.md: the Admission Dial counts a reply its poster read as theirs.
    • README "Asking for guidance": tells people to set 4/5 or lower on a reply they want counted.
    • docs/design.md: the reason for the rule.
  • Contracts: guidance tally v4, guidance clusters v6. The comment list, the record and record.py's authorship_of are unchanged.
  • Sandbox fixture:
    • The authors' drafted pushbacks on T1 are labeled as their own theme, T9: two at 3/5, read and labeled; one at 5/5, the agent's and not labeled.
    • harvest_recall.py counts a read drafted reply as a person's words.
  • revise 2.24.0.

Review

Three adversarial rounds, every finding fixed:

  • Round 1: dissent was put in the cluster it argues against; a covered drafted line was dropped; the level could be read from a quoted line.
  • Round 2: an unread reply still counted toward a cluster's people and pull requests, and a reply with no level was treated as read. This led to the read-only rule above.
  • Round 3: a level or the approval wording in a reply's own text could pass as a sign of reading; the Admission Dial's wording was stale.

Open questions

  • The rule leans on the AI assistance level. pr-fix posts at 5/5 unless the person lowers it, so a person who steers through pr-fix without lowering the level is still read as the agent. A follow-up could have pr-fix ask for the level when the person typed the reason themselves.
  • Older replies that say "reviewed and approved by @" with no level are read as read. In the reference month that is 46 replies.

🤖 Generated with Claude Code. AI assistance level: 5/5 (not read by a person).

mmaclay and others added 4 commits November 6, 2026 17:04
A reply posted through pr-fix carries the attribution line, so the tally
read it as an agent's and listed none of its guidance: a person's reason
for declining a finding, their answer, or their ask never reached the
report. A reply in a thread is now its poster's, however it was worded;
the tally prints a drafted line per such item with its AI assistance
level, and the clusters name it under its cluster. Thread openings,
review summaries and conversation comments an agent drafted stay the
agent's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…issent apart

A drafted reply at 5/5, which no person read, now holds at most rather
than admitting. Its level is read from the last unquoted line that states
one, so a quoted finding's level is not the reply's. A drafted line on a
covered item is printed under the entry it supports. A statement that
argues against a principle never joins that principle's cluster: the
sandbox fixture's three drafted pushbacks on T1 are labeled as their own
theme, T9, and the recall harness counts a drafted reply as the poster's
words.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… read it

A reply at 5/5, or with no sign that anyone read it, was held but still
counted toward a cluster's people and pull requests, which the Recurring
ask Dial reads, and a covered one refreshed its entry. Such a reply now
stays the agent's words, as before. A reply whose own lines end with a
level of 1/5 to 4/5, or that carries the attribution's "reviewed and
approved by @" wording, is its poster's. The level is read from
record.py's own lines with the attribution's anchored form, so quotes and
fenced code do not count, and the clusters script refuses a drafted line
whose level is not one of those.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A level or "reviewed and approved by @" in a reply's own text, in prose
or a code span, read as the reply's sign that its poster read it. The
level and the wording now count only on a line with the attribution's
robot and AI-assisted shape, code spans removed. The Admission Dial says
that a reply its poster read counts as theirs, and the README names the
approval wording and conversation comments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mmaclay
mmaclay marked this pull request as ready for review November 7, 2026 06:12
@mmaclay
mmaclay merged commit 819a483 into main Nov 7, 2026
1 check passed
@mmaclay
mmaclay deleted the feat/guidance-steered-replies branch November 7, 2026 06:13
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