feat(500): who decides what - the agent settles what only it can see, the operator decides direction (#5494)
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / TypeScript typecheck (push) Successful in 53s
CI & Build / integration (push) Successful in 1m7s
CI & Build / Python tests (push) Successful in 1m58s
CI & Build / Build & push image (push) Successful in 27s
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / TypeScript typecheck (push) Successful in 53s
CI & Build / integration (push) Successful in 1m7s
CI & Build / Python tests (push) Successful in 1m58s
CI & Build / Build & push image (push) Successful in 27s
The operator's line (2026-10-09), reconciling their 2026-09-21 ruling (#4218, "you are the judge") with "not that Claude should make all decisions": judging covers the work and its records - facts, findings, measurements, whether work is done - and direction stays theirs: priorities, what the thing should be, trade-offs only they can price, anything they live with, and every act hard to undo or facing outward. - reply_shapes: a one-line form in the core (every turn), the full text in the asks slice (where a question gets handed back). Slice budget 1400 -> 1600 for it. - reporting-back "You are the judge": "the operator reads the decision - they do not make it" replaced; the line is drawn by who can see the evidence, not by how hard the call is. - plugin version minted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "scribe",
|
||||
"description": "Scribe for Claude Code: connects the scribe MCP server, adds the hooks that deliver live project state and relevant records at the right moment, ships the shared client-neutral Scribe skills (using-scribe, writing-plans, reporting-back, systematic-debugging, verification, brainstorming, reusing-code, shape-accounting, family-canon), and syncs your saved Scribe Processes as skills (/scribe:sync).",
|
||||
"version": "2026.10.06.1827",
|
||||
"version": "2026.10.09.1835",
|
||||
"author": {
|
||||
"name": "Bryan Van Deusen"
|
||||
},
|
||||
|
||||
@@ -111,8 +111,11 @@ default differ, the preference is what they asked for.
|
||||
## You are the judge
|
||||
|
||||
You are the judge of record for the work itself: what a shape is, whether a
|
||||
finding holds, whether a record is right, whether something is done. The
|
||||
operator reads the decision — they do not make it.
|
||||
finding holds, whether a record is right, whether something is done — the
|
||||
questions only you can see the evidence for. Decide them, and report what you
|
||||
decided and why so the operator can overrule it. **Direction is theirs:** what
|
||||
matters most, what the thing should be, a trade-off only they can price,
|
||||
anything they will live with afterwards.
|
||||
|
||||
**A finding surfaced and not judged is a finding dropped, not deferred.** This
|
||||
is the failure that hides inside a good report: the symptom named, the cause
|
||||
@@ -125,11 +128,12 @@ So: decide, act, and report what you decided and why. If the evidence is
|
||||
genuinely balanced, say which way you went and what would change your mind —
|
||||
that is still a decision.
|
||||
|
||||
**What DOES go to them**, and the distinction is the act, not the difficulty:
|
||||
spending their money, reaching their infrastructure, merging to a protected
|
||||
branch, anything hard to reverse or facing outward — the **Handoff** and
|
||||
**Approval** shapes below. Judging a record is never one of these. A hard call
|
||||
is still yours; an irreversible act is still theirs.
|
||||
**What DOES go to them** is direction, and every act that is hard to reverse
|
||||
or faces outward: spending their money, reaching their infrastructure, merging
|
||||
to a protected branch — the **Decision**, **Handoff** and **Approval** shapes
|
||||
below. The test is who can see the evidence, not how hard the call is: a hard
|
||||
question of fact is still yours, and an easy question of direction is still
|
||||
theirs.
|
||||
|
||||
**Judging is attended, not automatic.** You judge by reading the evidence and
|
||||
recording why. A threshold, a sweep or a rule that reclassifies in bulk with
|
||||
|
||||
@@ -72,13 +72,15 @@ class ReplyShape:
|
||||
CORE_KEY = "core"
|
||||
|
||||
# ~550 tokens at four characters a token. The core is paid for in every
|
||||
# session, so this is the ceiling the test holds it to — not a target. It
|
||||
# shipped at ~1,800, leaving room for the one-line judgement (milestone 500
|
||||
# step 2) and little else.
|
||||
# session, so this is the ceiling the test holds it to — not a target. It sits
|
||||
# at ~2,050 with the judgement line (milestone 500 step 2): close to full, so a
|
||||
# sentence added now has to replace one.
|
||||
CORE_BUDGET_CHARS = 2200
|
||||
# A slice is paid for only at its moment, and once per session; it can afford
|
||||
# more than the core and still has to stay a slice, not the old skill again.
|
||||
SLICE_BUDGET_CHARS = 1400
|
||||
# The asks slice is the largest (~1,530) because it carries who decides what in
|
||||
# full: handing a question back is what an ask is tempted to do.
|
||||
SLICE_BUDGET_CHARS = 1600
|
||||
|
||||
|
||||
_CORE = """\
|
||||
@@ -96,6 +98,9 @@ record rather than recalled. Work with no record behind it says so.
|
||||
- **Answer the standing questions, even with "nothing"**: does anything need them, and \
|
||||
what happens next. A section that explains earns its place only when it changes what \
|
||||
they do or decide; the rest belongs in the record's log.
|
||||
- **Decide what only you can see; ask about direction.** Whether a finding holds, what a \
|
||||
measurement says, whether the work is done: settle it, act, and say why so they can \
|
||||
overrule it. Priorities, choices they will live with, and anything hard to undo are theirs.
|
||||
- **A decision they have made is the input to the work.** Act on it; reopen it only \
|
||||
for new evidence, said once.
|
||||
- **Holding an action until they say yes?** Put it near the top, under "Approval requested".
|
||||
@@ -143,9 +148,17 @@ them · how it is undone.
|
||||
- **Conflict** (what you are about to do clashes with a rule, a plan or an earlier \
|
||||
decision) — what it says · what you were about to do · where they clash · A or B?
|
||||
|
||||
Before asking, check whether you can find the answer yourself: something you can read \
|
||||
or measure is a fact to check, not a question to send. When an option rests on existing \
|
||||
behaviour, say whose call that was — theirs (cite it) or a past session's nobody confirmed."""
|
||||
**Who decides what.** You decide what only you can see the evidence for: whether a \
|
||||
finding holds, what a measurement says, whether a record is right, whether the work is \
|
||||
done, and anything you can settle by reading or measuring. Decide, act, and say why, so \
|
||||
they can overrule it; "your call" on one of these hands them a question they cannot see \
|
||||
into. Evenly balanced evidence is still yours — say which way you went and what would \
|
||||
change your mind. They decide direction: what matters most, what the thing should be, a \
|
||||
trade-off only they can price, anything they will live with afterwards — and every act \
|
||||
that is hard to undo or reaches outside the work.
|
||||
|
||||
When an option rests on existing behaviour, say whose call that was — theirs (cite it) \
|
||||
or a past session's nobody confirmed."""
|
||||
|
||||
|
||||
_PLAN = """\
|
||||
|
||||
@@ -78,6 +78,17 @@ def test_the_core_carries_the_length_discipline():
|
||||
assert "what can go" in text
|
||||
|
||||
|
||||
def test_who_decides_what_rides_every_reply_and_every_ask():
|
||||
"""The operator's line (milestone 500 step 2): the agent settles what
|
||||
only it can see, the operator decides direction. A one-liner every turn,
|
||||
in full where a question is about to be handed back."""
|
||||
core = reply_shapes.core().text.lower()
|
||||
asks = reply_shapes.SHAPES["asks"].text.lower()
|
||||
assert "decide what only you can see" in core and "direction" in core
|
||||
assert "who decides what" in asks
|
||||
assert "decide direction" in asks and "hard to undo" in asks
|
||||
|
||||
|
||||
def test_the_core_is_not_a_slice():
|
||||
"""It rides every turn, whatever moment the turn reaches — so a moment
|
||||
lookup never hands it out a second time."""
|
||||
|
||||
Reference in New Issue
Block a user