Align Decision vocabulary to the Agent Control Standard - #95
Merged
Conversation
Rename ASK -> ESCALATE and REWRITE -> TRANSFORM, keeping the old names
and Decision.ask()/.rewrite() as deprecated aliases bound to the same
strings so every existing comparison and call keeps working. Add WARN
(ACS `warn`), degrading to a labelled `allow` via a new, empty
allow_semantics.WARN_SPEAKS -- the same honest-degrade shape `vouch`
already gets. Keep `vouch` unchanged: ACS's closed verdict set cannot
express it, so ACS becomes the thirteenth surface it degrades to allow
on. Do not adopt pre_model_call/post_model_call (no adapter exposes
either hook yet).
matrix.capability() now returns both "rewrite" and "transform" keys;
can_transform() joins can_rewrite(). Both VOUCH and WARN are now
exported from the package top level. degraded_from now reports the
canonical spelling ("transform"), the one break with no available
alias since it is an evidence value, not a name.
No vendor wire format changes: adapters still speak each vendor's own
words untouched, proven by the golden fixture replay suite passing
byte-for-byte unchanged. Docs, generated examples, and the derived
brand-assets card are updated to match.
Signed-off-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Renames the canonical
Decisionoutcomes to match the Agent Control Standard's verdictnames:
ASK->ESCALATE,REWRITE->TRANSFORM. The old names andDecision.ask()/Decision.rewrite()remain as deprecated aliases bound to the samestrings, so every existing
is/==comparison andDecision("ask"/"rewrite", ...)callkeeps working (the deprecated classmethods now emit
DeprecationWarning). AddsWARN(ACS
warn), which degrades to a plain, honestly-labelledallowvia a newallow_semantics.WARN_SPEAKS(starts empty -- no adapter's warning channel isestablished yet), the same shape
vouchalready gets on ten of twelve adapted agents.vouchitself is unchanged -- ACS's closed verdict set cannot express it, so ACS becomesthe thirteenth surface it degrades to
allowon.pre_model_call/post_model_callarenot adopted (no adapted agent exposes either hook yet; see
plan/acs-alignment-and-delegation.md§1.5 in org-plan).matrix.capability()now returns both a"rewrite"and a"transform"key (same value)for one minor version;
can_transform()joinscan_rewrite().degraded_fromnow reportsthe canonical ACS spelling (
"transform") -- a real, called-out break, since it is a valueinside
evidence, not a name. BothVOUCHandWARNare now exported from the package toplevel, fixing the pre-existing asymmetry where
VOUCHwas reachable only viaagentseam.contract.VOUCH.The wire never moves. No vendor dialect word changes: adapters still speak each
vendor's own
ask/rewrite/etc. exactly as before. W34's golden fixture replay suite(
tests/test_golden_fixtures.py+tests/fixtures/golden/) passes byte-for-byteunchanged, not regenerated -- the proof that this is a rename of agentseam's own
vocabulary, not a wire change. Recounted the zero-literal-comparison claim from W17: still
zero
== "ask"-style literal comparisons insrc/agentseam/adapters/, all via importedconstants.
Docs (
README.md,llms.txt,ARCHITECTURE.md,AGENTS.md), the generated vendorexample pages (
examples/generate.py+examples/generated/), and the deriveddocs/assets/social-preview.svg/.pngbrand card are updated to match. Added aCHANGELOG.mdUnreleased entry; no version bump.Claim check
"transform"keymirrors the existing
"rewrite"value; noMATRIXrow's boolean values changed)MATRIXrow — not applicableChecks
pytest -qpasses (1234 passed, 4 skipped)ruff check .andruff format --check .passcontract.pyaddsimport warnings, which is stdlib)git commit -s)python examples/generate.py --checkpassespython docs/assets/gen_brand_assets.py --checkpasses (regenerated; required CI job)tests/fixtures/golden/untouched (git diffshowsno changes to that directory)
Notes for the reviewer
docs/assets/gen_brand_assets.py'sdecision_outcomes()andexamples/generate.py'sDECISIONSlist both filter outDecision.DEPRECATED_ALIASES(ask,rewrite) — otherwiseeach would try to treat the deprecated aliases as distinct outcomes and either assert-fail
(brand assets:
ASKno longer equals"ask") or duplicate a page section for an outcomethat produces identical output to its canonical counterpart.
Generated by Claude Code