The shapes we already tried and removed#88
Open
czpython wants to merge 4 commits into
Open
Conversation
A sandbox agent reads the repo, not its history, so it keeps proposing the side of a decision this codebase already discarded — an input class, @step on run(), a deploy drain around in-flight runs, isinstance over a typed stream. Deleted code leaves no trace to read, which is why it comes back. Twenty-two of those, each as one prohibition carrying the reason it exists. Present tense only: no arc history, nothing the SDK already raises on, no code style (that lives in the house-rules skill), and nothing superseded.
The first pass restated two rules the SDK already raises on and six that docs/writing-an-extension.md owns, wrapped in a section framed as history. What is left are nine boundaries an agent crosses with nothing to stop it, appended to the list that already holds that kind of rule.
The Run bullet claimed build still couples to Run; build has no Run reference at all and Run is off the author surface, so the export list already teaches it. The projection bullet forbade the subscriber that records a work item's handoff outcome. Liveness is what must derive from run state; an extension's own outcome is its fact to keep, written by reacting to run lifecycle.
czpython
force-pushed
the
commonzenpython/agents-settled-boundaries
branch
from
July 26, 2026 09:55
a16664b to
c6facaa
Compare
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.
A sandbox agent gets the repo, the skills, and the prompts. It does not get the history — so it re-proposes things this codebase already tried and removed. Recent live examples: an input class for workflow parameters,
@steponrun(), a deploy-time drain around in-flight runs,isinstanceswitching over a typed stream, a settings column for a schedule interval.None of that is discoverable from the code. Deleted things leave no trace, which is the point of deleting them and also why they come back.
What this adds
A
## Settled shapessection under Architectural boundaries: 22 rules across the durable SDK, state and durability, layering, and the wire. Each is one specific prohibition with the reason attached, because a rule without its cost reads as arbitrary and gets argued with.The source was a pass over the decision record built up across this project's design sessions. The filter was three questions: would an implementer plausibly propose the discarded side, can it be stated as one specific prohibition, and is it still true today.
What was deliberately left out
model_prefixes, which was deleted from the harnesses recently. That is the failure mode this section has to stay ahead of.Verification
Every symbol and path asserted here was checked against this branch:
run_multistep,steps_reuse_sandbox,get_prompt_context,dispatch,Gate.answer,Workflow.cancel,Gate.__init_subclass__'s name pin,druks/mcp/,druks/notifications/. One bullet was corrected during that pass — the frontend client isfrontend/src/api/client.tsplus per-extensionapi.tsfiles, not a single rootapi.ts, so the rule names neither path.No ticket references, PR numbers, or dates, per the repo-content rule.
The file goes from 113 to 190 lines. Worth watching: a long instruction file gets obeyed selectively — specific rules land, generic ones get skimmed — which is why every entry here is a concrete prohibition rather than a principle.