Repository navigation
Keep model-authored acceptance from carrying a setup command - #2079
Merged
Merged
Conversation
A supervisor reply could author acceptance.setupCommand and acceptance.timeoutSeconds even though the decision schema never offers them. The server's schema check does not read additionalProperties, a schema-less fallback request carries no schema at all, and the bind maps any member SupervisorAcceptanceSpec declares. The projector froze both into the ledger, and every supervisor grading lane handed them to the grader, which ran the setup argv in the grading workspace (with host network under bubblewrap) and read a timeout of 0 as no wall clock at all. ModelAuthoredAcceptanceConverter now sits on the four acceptance slots a supervisor decision carries (plan subtask, plan phase, stop, amend replacement) and drops both knobs on read and on write. Because it is on the slot, it also covers ledger rows written before this change, which the rehydrate re-reads on every turn. Operator specs (node config, AgentTask.Acceptance) keep both. The grader now bounds every step's window itself (setup, check and the oracle restore's git commands), because the supervisor lanes never validate the contract first: a non-positive value grades at the 300 s default and anything longer is capped at 3600 s. EvaluatorVersion moves to v8 for that change. An operator contract is validated, so it is no longer rewritten silently: ValidateAuthored refuses a timeoutSeconds outside 1..3600 with a message naming the ceiling. agent.code fails at staging, and the executor's and local verifier's contract check fails closed as SpecIncomplete before anything runs. Only lanes that never validate still rely on the grader's bound. The stop gate's reader is now internal and pinned directly, so the stored-row test exercises the production reader instead of a copy. GradeDirectoryAsync's doc no longer claims that grading the agent's live directory is equivalent to grading a clone.
ppXD
deleted the
fix/keep-model-authored-acceptance-from-carrying-setup
branch
October 7, 2026 04:43
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.
Summary
acceptance.setupCommandandacceptance.timeoutSeconds.additionalProperties:falseis advisory (JsonSchemaValidatordoes not read it), and a schema-less fallback carries no schema at all.ModelAuthoredAcceptanceConverternow sits on the four decision slots: plan subtask, plan phase, stop, and amend replacement. It drops both knobs on read and on write, which also covers ledger rows stored before this change.AgentTask.Acceptance) keep both.SupervisorLane.MaxAcceptanceGradeTimeoutSeconds. The supervisor lanes never validate the contract, which is why the bound lives in the grader.AgentAcceptanceContract.ValidateAuthoredrefuses atimeoutSecondsoutside 1..3600 and names the ceiling.agent.codefails at staging.SpecIncompletebefore anything runs.SupervisorTurnService.ReadStopAcceptanceis internal and pinned directly. The stop-gate stored-row test now exercises the production reader, not a copy.GradeDirectoryAsyncdoc no longer claims that grading the live workspace is equivalent to grading a clone.OraclePathspin only literal files.timeoutSecondsis 0 or less, or above 3600, now fails at staging with a named message instead of grading under a rewritten window.EvaluatorVersionmoves tosupervisor-acceptance/v8.Test plan
ValidateAuthoredwindow Theory;agent.codestaging Theory (7200 / 0 refused, 900 kept)SupervisorModelAcceptanceSetupFlowTests;LocalAcceptanceVerifierFlowTests(an out-of-range window isSpecIncompleteand runs nothing)