This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
ReleasePort's take
Moderate signalStarting with v1.6.16, the system enforces `metadata.ota.minimum_version` at contract load time for all commands.
Why it matters: Contracts must declare a minimum OTA version; otherwise loading fails on any command execution (severity 70).
Summary
AI summaryEnforced minimum Ota version at contract load time and added structured Windows native build bundle support.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
Enforce `metadata.ota.minimum_version` at contract load time across all commands. Enforce `metadata.ota.minimum_version` at contract load time across all commands. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Feature | Medium |
Add `ota --version --json` with stable provenance fields and `contract_capabilities[]` entries. Add `ota --version --json` with stable provenance fields and `contract_capabilities[]` entries. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Feature | Medium |
Introduce `toolchains.python` with provider `uv` as a managed Python runtime owner. Introduce `toolchains.python` with provider `uv` as a managed Python runtime owner. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Feature | Medium |
Add `execution.contexts.<name>.only_on` to declare supported host OSes per execution context. Add `execution.contexts.<name>.only_on` to declare supported host OSes per execution context. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Feature | Medium |
Add `tasks.<name>.effects.writes`, `.network`, and `.external_state` as first‑class task side‑effect metadata. Add `tasks.<name>.effects.writes`, `.network`, and `.external_state` as first‑class task side‑effect metadata. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Feature | Medium |
Pin installer target in `ota init` bootstrap commands to the running Ota version via `OTA_VERSION=v<current>`. Pin installer target in `ota init` bootstrap commands to the running Ota version via `OTA_VERSION=v<current>`. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Bugfix | Medium |
Fix `ota proof runtime` wait‑budget derivation to honor readiness timing policy. Fix `ota proof runtime` wait‑budget derivation to honor readiness timing policy. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Bugfix | Medium |
Fix contract identity counts in preview output to report scoped execution‑context and task requirements accurately. Fix contract identity counts in preview output to report scoped execution‑context and task requirements accurately. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Bugfix | Medium |
Fix selected workflow/task toolchain scoping to avoid false runtime/tool blockers. Fix selected workflow/task toolchain scoping to avoid false runtime/tool blockers. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Bugfix | Medium |
Teach `ota doctor` to short‑circuit probing when preconditions already contain blocking errors. Teach `ota doctor` to short‑circuit probing when preconditions already contain blocking errors. Source: llm_adapter@2026-05-25 Confidence: high |
— |
Full changelog
- removed
visual_studio_build_tools: truefrom docs and shipped workflow examples so public
guidance only teaches the structuredplatforms.windows.visual_studio.componentsform while
keeping legacy shorthand compatibility in the parser - added structured
native_prerequisites.<name>.platforms.windows.visual_studio.components
support plus platform-scopednative_prerequisites.<name>.platforms.<os>.requires
runtime/tool/toolchain/env/check requirements, so contracts can model Windows native build
bundles through an Ota-ownedvswhereprobe, attach dependencies such as Python, and preserve
receipt provenance without embedding long raw PowerShell checks inchecks.run - made
ota --versionbuild identity explicit for source builds by including commit and dirty
markers, and addedota --version --jsonwith stable provenance fields (semver,
source_build,commit,dirty),schema_version, and additive
contract_capabilities[]entries so machines can distinguish build identity from contract
capability support - formalized
ota --version --jsonas a compatibility-locked JSON surface with a published
version.jsonschema and conformance coverage - enforce
metadata.ota.minimum_versionat contract load time across command surfaces (not only
validate), sodoctor,up, and related commands fail early with a clear minimum-version
message when the running binary is too old - centralized preview-status semantics so
doctor,ota run --dry-run, andota up --dry-run
share one verdict model forREADY/READY WITH WARNINGS/BLOCKEDand
RUNNABLE/RUNNABLE WITH WARNINGS/BLOCKED, and fixed preview JSON helpers to keep
preview_statuspresent on repo and memberota up --dry-runpayloads - minimum-version compatibility diagnostics now call out detected unsupported contract
capabilities when the contract uses a known feature newer than the running binary - minimum-version compatibility errors are now feature-first and operator-grade: they report the
contract minimum, current binary identity, detected unsupported contract feature when known, and
the next install/rebuild step withota --version --jsonas the confirmation lane - documented the product rule that
schema_versionmoves only for non-additive contract-generation
changes while additive compatibility growth extendscontract_capabilities[] - added an
ota-readinessCI guard lane (json-schema-guard) that runs
json_schema_contractsandjson_output_conformancebefore readiness execution, preventing
schema/output contract drift from reaching the main readiness lane - aligned
ota up --dry-runandota run --dry-runpreview messaging with explicit
preview_status(RUNNABLE,RUNNABLE WITH WARNINGS,BLOCKED) while keeping canonical
shared readiness verdicts insummary.verdict ota doctornow warns when.devcontainer/devcontainer.jsonadvertises a Node image that
drifts from the repo contract's declaredruntimes.noderequirement, so repo-owned
devcontainer shells do not silently lag repo readiness truthota initstarter agent boundaries now lockota.yamlintoagent.protected_pathsas an
explicit default and carry the matchingagent.exceptions.sensitive_writes: [ota.yaml]rule
whenever a starter intentionally grants contract-authoring authority with writableota.yamlota proof runtimenow treats warning-only risk findings such as
effects.external_state/effects.networkselected-path advisories as visible proof context
instead of proof-failing blockers; only error-level proof findings now collapse a successful
readiness proofota doctornow also warns when a repo-owned devcontainer bootstrap command uses a different
Node package manager than the repo contract declares, and whenagent.writable_pathsincludes
sensitive lockfile, env/config, runtime-topology, CI, or repo-contract paths beyond the
declaredagent.posture; narrow intentional exceptions can be acknowledged through
agent.exceptions.sensitive_writeswhile the legacy
agent.acknowledged_sensitive_writable_pathsalias still loads for compatibility- agent boundary validation now rejects overlapping
agent.writable_pathsand
agent.protected_pathsentries when they duplicate the same normalized path, while still
allowing protected carve-outs under broader writable roots - fixed
ota proof runtimewait-budget derivation for selected service surfaces so proof now
honors declared readiness timing policy (start_period,interval,timeout,retries)
instead of collapsing heavy startup paths down to a small timeout-only window; fresh CI Docker
builds such as Hoppscotch self-host proof now respect the contract's actual startup budget - added
execution.contexts.<name>.only_onso contracts can declare supported host OSes per
execution context;ota doctor,ota up, and task execution now fail early and explicitly
when a selected context is not supported on the current host platform - fixed contract identity counts in preview and related output so scoped execution-context and
task requirements are counted honestly instead of reporting misleading zero-runtime/zero-tool
summaries when the selected workflow is actually blocked on scoped requirements - improved native/container/remote Python runtime probing to accept versioned aliases such as
python3.12andpython3.13when they satisfyruntimes.python, preventing false
Missing runtime: pythonor mismatch findings on repos that already expose a compatible Python
interpreter through standard aliases - shipped
toolchains.pythonwithprovider: uvas a first-class managed Python runtime owner:
validator, doctor, dry-run, and run-path fulfillment now understand uv-backed Python toolchains,
fulfillment: runcan invokeuv python install <version>for installable version references,
and detector/init now prefer the shipped Python toolchain contract over fallback Python
opportunity guidance whenuv.lockand Python version signals are present - fixed selected workflow/task toolchain scoping so preview/doctor/up no longer fall back to every
declared toolchain when the selected closure does not require one, preventing false runtime/tool
blockers on unrelated workflows such as host-Docker setup paths - updated detector-led
ota initstarter agent bootstrap commands to pin the installer target to
the running Ota version viaOTA_VERSION=v<current>, so generated contracts avoid floating
latestinstall targets for both shell and PowerShell bootstrap paths - added Slack release announcements to the release gate workflow by publishing the same generated release summary text to
SLACK_RELEASE_WEBHOOK_URLwhen configured, while keeping Discord publishing unchanged. - run branch-protection-required maintainer checks on branch pushes as well as
main, and remove docs-only trigger filtering fromdocs-quality, so protected branch-first merges work without requiring a public PR flow - taught
ota doctorto short-circuit later service/check readiness probing when selected-path
preconditions already contain blocking errors, so broken setups stay bounded and diagnosis
output keeps the real blocker in front instead of spending time on unreachable surfaces - added
tasks.<name>.effects.writesas first-class task side-effect metadata, and now validate
agent-safe task writes against declaredagent.protected_pathsplusagent.writable_paths
when that writable boundary is present - expanded task side-effect metadata with
tasks.<name>.effects.networkand
tasks.<name>.effects.external_state, surfaced those effects throughota tasks --json,
ota workspace tasks --json, text task inventory, and generatedAGENTS.md, added
validation for machine-readable external-state tokens, and now surface agent-safe risk warnings
plus selected-path doctor signals when those tasks depend on network access or mutate external
systems
Breaking Changes
- Enforced `metadata.ota.minimum_version` at contract load time across all command surfaces, causing early failure with a clear message when the running binary is too old.
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
Beta — feedback welcome: [email protected]