This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryAdded a first‑class agent contract confirmation workflow (ota agents --review, --confirm) that writes reviewed boundary flags before downstream sync.
Full changelog
-
added a first-class contract confirmation workflow for inferred agent boundaries:
ota agents --reviewnow inspects the currentagentboundary and provenance directly fromota.yaml,ota agents --confirm --dry-runpreviews the exact reviewed-boundary contract mutation, andota agents --confirmwritesagent.inferred_boundary.reviewed: truebefore any downstreamAGENTS.mdsync -
extended the execution-selector family onto
ota doctorandota receipt: both commands now accept backend shorthands (--native,--container,--remote), real lifecycle override via--lifecycle, and lifecycle shorthands (--persistent,--ephemeral), while preserving the selected lifecycle in receipt identity, doctor execution context reporting, and rerun guidance instead of silently collapsing container diagnosis back to ephemeral -
evolved the starter
agentcontract surface beyond raw writable/protected path inference: starter init/detect now emitagent.inferred_boundary.reviewed: falseplus provenance for inferred boundary entries,ota doctorwarns when that inferred boundary has not been confirmed yet, and doctor’s agent summary now shows whether the current boundary is reviewed or still inferred -
standardized implicit no-contract repo command failures around one blocked onboarding surface: commands like
ota agents,ota tasks,ota run,ota up,ota env,ota explain,ota receipt,ota policy review,ota extensions, the assist commands, and related repo surfaces now reportContract missing, reuse the compare-first onboarding lane, and includeRepo Signalsinstead of falling back to low-level contract-resolution errors -
added
ota run --skip-depsas an explicit local execution override: it skips only the requested task's declareddepends_onchain, leaves required service acquisition and hooks intact, rejects tasks with no declared dependencies, and marks the override explicitly in run summaries, receipts, and follow-up guidance so it never masquerades as the canonical declared task flow -
corrected the repo-owned
bump:versionnext-step guidance so it now points at the canonicalota run civerification task instead of bypassing the contract with a rawcargo test -
made several command
Next:lanes more helpful and consistent: init and detect write paths now explain whyvalidate,tasks --use,doctor, andup --dry-runare the right follow-up sequence, detect preview/review lanes now describe the decision behind each next command, starter-pack catalog entries explain why the preview command is next, and shell-completion recovery guidance now explains when to use the explicit setup/remove/check commands -
reshaped
ota doctorexecution environment output so execution facts stay compact, environment resolution gets its own section, required-missing counts are explicit, and env entries are grouped as policy-backed, process-backed, source-backed, defaulted, or missing instead of rendering as a flat repeatedEnv:list -
normalized another public CLI output-coherence slice: workspace detect/init scaffold mutations now keep stable command headers with result status in-body,
ota workspace tasksno longer fakes a readiness verdict, previewContractsections now use the newer unpunctuated grammar,ota assistpreviews now useNext:instead of legacyApply:tails, andota receiptnow groups archive metadata inside a properArchivesection -
improved no-contract
ota doctorsignal formatting in rich mode so the detected values now stand out visually without changing the labels, plain output, or JSON behavior -
redesigned
ota agentswhen the repo contract lacksagent: preview mode now reportsAgent contract missingas a blocked boundary-sync diagnosis with inferred repo signals and inferred starter agent boundaries, andota agents --writenow refuses until the contract declares a real agent boundary -
improved no-contract
ota doctoroutput so it now reportsContract missing, shows trustworthy repo signals underRepo Signals, and uses the compare-first onboarding lane withota detect --dry-run,ota detect --contract, andota init --dry-run -
expanded no-contract
ota doctorsignal coverage for Node/package-manager repos so it now surfaces repo type, detected package manager, likely runnable tasks, and host tool availability from existing detector signals -
expanded no-contract
ota doctorsignal coverage across the broader detected repo families too: Python, Go, Java, .NET, PHP, Ruby, Elixir, Scala, and Swift repos now surface repo-type, dependency/build-tool, and host-tool hints from the same detector truth instead of falling back to an empty signal section -
finished the next contractless
ota doctorcoverage tier too: C/C++, Clojure, Haskell, Lua, OCaml, and F# repos now surface the same detector-backed repo-type, build/dependency-tool, and host-tool hints instead of falling through to the generic no-signal path -
finished the long-tail contractless
ota doctortier too: Dart/Flutter, Julia, R, Nim, Erlang, Zig, D, Fortran, Crystal, Elm, Perl, Haxe, Gleam, V, Ada, Solidity/Foundry, Tcl, Racket, shell, PowerShell, and Deno repos now surface the same detector-backed repo-type, build/dependency-tool, and host-tool hints instead of falling through to the generic no-signal path -
refined that broader no-contract doctor coverage so Kotlin-first Gradle repos now surface as Kotlin instead of being mislabeled as Java
-
starter contract previews and writes now keep derived
agentguidance more consistently: detect preview, detect exact starter text, detect write, init preview, and init write all preserve the starteragentblock, writable-path inference now covers common app directories such asapp,components,lib, andpublic, and default agent verification now prefers verifier-style safe tasks such astypecheckwhentestis absent -
starter
agent.writable_pathsinference is now broader and more durable: ota still includes common source/app directories explicitly, but it also performs a bounded source-root scan so custom code roots can surface in starter agent guidance without falling back to. -
tightened that starter writable-path inference again so operational directories such as
config,database,migrations,manifests,deploy, andinfrano longer enter the default starter allowlist just because they exist -
tightened that starter writable-path scan further so custom roots are now stack-aware instead of purely structural, which keeps repo-local source trees in
agent.writable_pathswhile leaving unrelated non-source directories out by default -
tightened starter writable-path precision further for detected repos: ota now prefers detector-backed nested project roots such as
src/Ota.Appover broad container paths such assrcwhen the repo shape provides that stronger ownership signal -
made detected starter boundaries more explicit too: detect/init now seed
agent.protected_pathswith detector-backed control files such as manifests, lockfiles, and nested project descriptors so starter agent boundaries say both what may be edited and what must stay out of bounds -
made that stronger boundary visible in the generated starter notes too: detect/init now explicitly tell authors to review
agent.writable_pathsandagent.protected_pathsbefore trusting automation -
hardened workspace drift semantics for automation:
ota workspace diff --jsonandota workspace status --jsonnow expose additive per-repodrift_kindso local dirtiness, commit divergence, missing repo, missing contract, target ambiguity, and unresolved comparison are machine-readable directly -
refined workspace drift semantics further:
ota workspace diff --jsonandota workspace status --jsonnow also expose additive per-repotarget_sourceso automation can tell whether the comparison target came from declaredsource.refor from the repo's upstream branch -
clarified workspace drift text too:
ota workspace diffandota workspace statusnow make eachTarget:line explicit about declared-source-ref versus upstream-branch comparison provenance -
refined workspace drift roll-ups too: workspace diff/status summaries now break the previously collapsed
MissingandUnresolvedbuckets into explicit missing-contract and target-unavailable subcounts when those cases are present -
clarified workspace source governance further: when drift is being compared against upstream-branch fallback instead of declared
source.ref, repo-level follow-up now says that explicitly and suggests declaringsource.refwhen the workspace should own the target -
pinned the workspace refresh machine surface explicitly with a dedicated
workspace-refresh.jsonschema so preview/apply refresh output is no longer documented only by shared prose -
hardened workspace source-target trust for
ota workspace refresh: refresh now resolves targets in the explicit order--ref→ declaredsource.ref→ repo upstream branch, and refuses before preview or apply when none exists instead of falling through to a vaguegit pullfailure -
refined workspace refresh failure routing further: wrong remote target (
source.ref/--ref) now stays distinct from source-access failures and generic local git-state failures so the follow-up lane stays specific -
hardened the workspace lifecycle lane so
ota workspace diffandota workspace statusnow carry additive top-level and per-reponext/next_stepsfollow-up guidance, and successfulota workspace refreshpreviews now point back into the apply-and-recheck loop more explicitly -
hardened execution failure routing for
ota run: backend-configuration failures now point throughota execution planbefore contract edits or retries, and declared env-source failures now point throughota env --task <name>before file repair and rerun -
hardened execution failure routing for
ota up: execution-plane precondition failures, backend startup failures, and provisioning failures now point throughota execution planbefore execution-setting edits or retries -
kept repo-level
ota upexecution receipts aligned across text and JSON by appending shared receipt follow-up guidance after the finalUP SUMMARYblock and carrying the same execution-plan-first lane onto repo-targetreceipt.next -
refined the execution receipt JSON contract with additive
receipt.next_steps, so receipt-bearingup,workspace up,workspace run, andreceiptoutputs expose ordered follow-up steps without forcing agents to split the humannextstring -
polished the compact human execution summaries so
RUN SUMMARYandUP SUMMARYlead withStatus, making success, failure, blocked, and interrupted outcomes easier to scan before the longer execution details -
hardened the workspace readiness and execution surfaces too:
ota workspace doctor/ota workspace checknow expose per-repo additiveprimary_blocker,ota workspace explain --jsonnow exposes one top-level ordered workspaceactionslane before the repo drill-in, andota workspace up/ota workspace runnow carry repo-owned additivenext/next_stepsalongside the shared workspace receipt follow-up lane -
hardened workspace onboarding too: first workspace creation is now compare-first between
ota workspace detect --dry-runandota workspace init --dry-run, workspace doctor/validate/list/status/receipt missing-contract guidance now points through that preview lane, and successful workspace writes now hand directly intoota workspace validate,ota workspace up --dry-run, andota workspace up -
restored
ota detect --contractas the minimal exact starter preview and removed the brittle explain JSON command-lane surface soota explain --json/ota workspace explain --jsonexpose only structuredactionsandstepsinstead of scraping machine commands back out of prose -
tightened the detect merge success lane so remaining diff now stays on detect-owned review (
ota detect --merge --dry-run/ota detect --rewrite --dry-run) instead of incorrectly handing users toota explain, and clarified the review/write/preparation wording in README and public onboarding examples -
aligned the remaining onboarding-facing docs and help surfaces with the stronger first-contract lane: repo README, command reference, and root help now teach
ota doctor,ota detect --dry-run,ota detect --contract,ota init --dry-run, then the explicit write/preparation path instead of skipping the exact starter comparison step -
completed the detect mutation onboarding lane: successful
ota detect --writenow hands users directly toota validateandota up --dry-run, successful merge writes now route toota validateplus detect-owned review when drift still remains orota up --dry-runwhen the contract is execution-ready, and successful rewrites now point straight toota validateandota up --dry-run -
tightened the first-contract apply lane too: successful detector-led
ota initnow points toota up --dry-runafter validation so the onboarding path flows from review into preparation instead of bouncing back into generic diagnosis -
tightened the first-contract onboarding lane again so no-contract
ota detect --dry-runnow points operators to compareota detect --contractwithota init --dry-runbefore any write, and detector-ledota init --dry-runnow renders that same compare-first review path explicitly instead of jumping straight toota init -
ota explainnow orders grouped remediation actions deliberately instead of inheriting raw finding order, so preview-first and contract-authoring fixes surface ahead of later runtime follow-ups when several blockers exist at once -
aligned
ota explain --jsonandota workspace explain --jsonwith the ordered remediation story shown in text by adding groupedactionsalongside detailed finding-levelsteps, so machine consumers get the same stable first-action plan without losing per-finding detail -
expanded the safe
doctor --fixrepo-hygiene surface so the same.gitignorefix path now protects both.ota/state/and.ota/receipts/as Ota-owned local artifacts, with matching init/detect write behavior and updated doctor messaging -
hardened the doctor-first onboarding lane:
ota doctornow renders the repo state asREADY,READY WITH WARNINGS, orBLOCKED, warning-only reports still single out one highest-priority primary finding, ready repos no longer get told to rerunota up, contractless guidance is preview-first (ota detect --dry-run/ota init --dry-run), and deterministic next steps now point intoota assistwhere Ota can safely author the missing contract surface -
tightened doctor's service guidance further: unverifiable required services now route into
ota assist declare-readinesswhen only the probe is missing, orota assist declare-servicewhen the managed service declaration still lacks a start path and wider service shape -
tightened doctor's setup guidance too: missing-file precondition failures now point to
ota up/ota run setupwhentasks.setupalready exists, or toota assist wire-setupwhen the contract still lacks a setup path Ota can own -
kept the no-task doctor lane preview-first as well: taskless contracts now point to
ota detect --dry-runbefore any detect write, while still offeringota assist add-taskwhen the right fix is one explicit runnable task -
added the first shipped
ota assistoperation withota assist declare-readiness: it previews or applies deterministic readiness declarations for existing task runtime services and top-level managed services, supports monorepo--membertargeting, emits a stable proposal/apply JSON shape, and validates writes through the same contract rules as the rest of Ota -
added
docs/spec/assist-operations.mdto formalize the long-termota assistdirection as a deterministic contract-operation surface with a stable command catalog, stable preview/apply proposal model, explicit AI boundary, and canonical first implementation order -
added
docs/spec/assist-workflow.mdand tightened the command and JSON references so the shippedota assist declare-readinessslice now has a complete operator guide, concrete task/service/member examples, explicit refusal rules, and replacement visibility guidance alongside the long-term assist spec -
added the second shipped
ota assistslice withota assist declare-service: it previews or applies deterministic managed-service declarations, creates or refines oneservices.<name>block at a time, supports explicit manager and endpoint inputs plus optional structured readiness, honors monorepo--memberwrites, and now has matching command, workflow, and JSON reference coverage -
added the fourth shipped
ota assistslice withota assist bind-task: it previews or applies deterministictasks.<consumer>.targets.<name>mutations, binds one consumer task to one producer runtime listener through the current target contract, supports monorepo--memberand--producer-memberedges, refuses ambiguous listener selection instead of guessing, and now has matching command, workflow, JSON schema, and public-site coverage -
added the fifth shipped
ota assistslice withota assist declare-env: it previews or applies deterministic env contract mutations for one rootenv.varsrequirement, one curatedenv.sources[]entry, or one explicit task-localtasks.<name>.envvalue, preserves current env precedence rules, supports monorepo--memberwrites, and now has matching command, workflow, JSON schema, and public-site coverage -
added the sixth shipped
ota assistslice withota assist add-task: it previews or applies deterministic new-task declarations, creates onetasks.<name>entry at a time, supports explicitcommand,service,setup,check, andsandboxstarter kinds, requires explicit service listener inputs instead of guessing runtime shape, supports monorepo--memberwrites, and now has matching command, workflow, JSON schema, and public-site coverage -
added the seventh shipped
ota assistslice withota assist normalize: it previews or applies one deterministic normalization intent that moves an existing setup-like task into the canonicaltasks.setupslot, forces the canonical setup task back tointernal: true, refuses inherited member-overlay sources it cannot safely delete, and now has matching command, workflow, JSON schema, and public-site coverage -
added the third shipped
ota assistslice withota assist wire-setup: it previews or applies deterministictasks.setupmutations, can create or refine setup bodies with explicit--runor--script, owns the phasedsetup.requires_servicesboundary forota up, supports monorepo--memberwrites, and now has matching command, workflow, JSON schema, and public-site coverage -
expanded the maintainer version bump scripts so one bump now updates
Cargo.toml, rollsCHANGELOG.mdfromUnreleasedinto the requested version heading, and repins the readiness workflow'sota-versionconsistently -
tightened the adoption path around Ota's own dogfood and first-run UX: the readiness workflow now pins
1.6.7, root help now emphasizesdoctor -> detect/init -> explain -> up -> run,doctor --fixexplicitly presents its current repo-hygiene-only scope, and the repo's own contract now avoids warning-producing install drift and execution-only ephemeral lifecycle advice during self-hosted readiness checks
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About ota-run/ota](https:
All releases →Related context
Related tools
Earlier breaking changes
- v1.6.16 Enforce `metadata.ota.minimum_version` at contract load time across all commands.
Beta — feedback welcome: [email protected]