Repository navigation
Conversation
The service's hold now depends on model, reasoning effort, environment, declared tools and bound repositories. run quote and the run submit plan send the given --model, --reasoning-effort, --environment and repositories=1 for --repo/--commit-output; the job create plan sends the spec's model, reasoning_effort, environment and repositories=1 for a repository URL. Nothing is defaulted, so a flagless quote is unchanged. Replace the flat-hold wording in holdBasis, human output, help, guide, SPEC and docs. Accept model, reasoning_effort, repository_url, repository_branch and output in webhook job specs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Why
The hosted service's run hold is no longer flat. It depends on the model, reasoning effort, environment, declared tools and whether a repository is bound.
GET /run/quoteacceptsmodel,reasoning_effort,environment,repositoriesandtools. With no parameters it quotes the default model at its default effort: builtin, no repositories, no tools.The CLI still behaved as if the hold were flat:
holdBasis: "flat hold, independent of program and model", "The same for every program and model", and "the hold does not depend on it" on--model,--reasoning-effortand--repo. The guide, SPEC and docs said the hold is flat and "currently $1.02".run quote, therun submit/run createplan and thejob createplan quoted without parameters.run quote --model <cheaper model>therefore showed the default model's hold.Separately,
job createrefusedmodel,reasoning_effortandrepository_urlin webhook specs, though the service accepts them on a webhook with aprogram_ref. A webhook that reviews pull requests on a given model with a read-only repository therefore could not be created from the CLI.What changes
Quote requests. Both ports send only what the user gave; nothing is defaulted.
run quoteand therun submit/run createplan:--model→model,--reasoning-effort→reasoning_effort,--environment→environment, andrepositories=1for any--repoor--commit-output.job createplan: the spec's nonemptymodel,reasoning_effortandenvironment, andrepositories=1for a nonemptyrepository_urlorcontext_repository_url. This applies to every job type.program draftstill quotes without parameters.run submitand required forjob create, as before.Wording.
holdBasisis nowdepends on model, reasoning effort, environment, declared tools and repositories; quoted from the options given, without the program's own run settings or declared tools; a run's price is known only after it settles.run quoteoutput gains aDepends on:line.docs/service/*match. A program that sets its own model, effort or environment, or declares tools, can hold a different amount, and they all say so.Webhook spec. The
job.createwebhook variant acceptsmodel,reasoning_effort,repository_url,repository_branchandoutput, with the same rules as a schedule. Without aprogram_refthe service refuses these keys, and its message reaches the user asdetails.serviceMessage.Files.
querytemplates, therun.quoteandjob.createtext, and the webhook spec keys.runs.schema.jsonholdBasisconst.help.v1.jsonandservice-guide-*cases.service-capabilities-json,service-capabilities-jsonl,help-json-group-records), refreshed from identical Rust and Bun output.runs/*cases.runs/quote-sends-hold-options,runs/quote-commit-output-only,runs/submit-preview-repo-quote,jobs/job-create-webhook-binding-quote,jobs/job-create-schedule-environment-quoteandjobs/job-create-schedule-empty-strings-quote. Each fixture pins the exact quote query.service/{runs,jobs,render,programs}.rs.service/{http,runs,jobs,render,programs}.ts.cli/CHANGELOG.md: an[Unreleased]entry.Compatibility notes
holdBasistext. The schemaconstis a visible contract change.run quote --model. It still does no local model check. An invalid model now comes back from the service asSERVICE_REQUEST_REJECTED, where before the option was silently ignored.program_ref, and aPOST /run/quotethat takes the run body). Once it lands, the CLI can include a program's own settings and declared tools without parsing it.guide.v1.mdand theservice-guide-*cases. Whichever merges second needspython3 cli/ci/render_service_help.py --write.Evidence
Local, on macOS with Python 3.10.21, Rust from
rust-toolchain.tomland Bun 1.4.2. These gates pass:shared-contracts,service-help,public-surface-filesandservice-operations-corpusdifferential-conformanceandservice-coveragerust-formatandrust-clippyservice-operations-rust-buildandservice-operations-rust: 1095 cases, 0 failuresbun-typecheck,service-operations-bun-buildandservice-operations-bun: 1095 cases, 0 failuresRust service tests (
prose-runner-corelib,service_runs,service_jobs,service_programs,service_framework) and Bun service tests also pass.Not passing locally, and not caused by this change:
rust-tests. The full gate fails on this machine under load, and fails the same way on unmodifiedmain@8e2a258. The failures are process-timing tests that time out with exit 124, a different set each run (weave_host,cli.rsadapter tests). Theweave_hosttests pass 8/8 run alone on this branch.dev-endpoint.test.tsandbuild-identity.test.ts. They fail on unmodifiedmainhere too; local Bun is 1.4.2, while the repo pins 1.3.5.GitHub CI is authoritative for both.
An independent review agent read the diff before this was opened. It found a Rust/Bun divergence on empty spec strings, now fixed and pinned by
job-create-schedule-empty-strings-quote, plus wording overclaims, all addressed.🤖 Generated with Claude Code