This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryAdds first‑class CI verification lane projection and execution‑boundary safety enforcement.
Full changelog
-
tightened active-execution ownership around container attachment isolation: shared logical
write paths now only conflict when they land in the same effective execution namespace, so
container contexts with distinctattachments.isolated_pathsvolume families can coexist
truthfully while shared repo-worktree writes still block as before -
added the first audited-crossing execution evidence slice for heavier governed lanes:
ota run
andota upnow accept additive--reason <text>, repo-target receipts may include
receipt.crossing, andota up --jsoncan mirror the same record atgovernance.crossing
when the selected task or workflow crosses a derived heavier execution boundary; the current
shipped slice keeps requirement source honest asderivedand records runner-visible actor
posture plus caller-supplied reason presence without pretending grant or approval semantics yet -
tightened V11.7 phase semantics for agent-mode governance output: post-execution evidence now
publishes additivenot_run_reasonandcrossing_record_state, so dry-run previews, preflight
refusals, and heavier lanes that have not executed yet no longer force consumers to infer why
nothing ran or why crossing evidence is absent -
widened
ota doctor --jsonwith additivegovernance.merge_gate, publishing a first
machine-readable merge-oriented governance verdict over projected required verification lanes and
recovered CI drift metadata; the same surface now stays honest by distinguishingprojected
fromdrift_detectedinstead of pretending full provider alignment when Ota only has partial
workflow recovery evidence -
added additive harness-facing
capability_profileexport onota tasks --jsonand
ota workflows --json, publishing agent-callable vs refused lanes with canonical preflight
governance, exact agent commands, environment boundaries, and closure effect posture so
harnesses/sandboxes can consume Ota’s execution truth without scraping human output or
rebuilding safe-task/refusal semantics themselves -
widened CI verification governance findings with additive machine-readable
metadata.governance.merge_check_idplus verifier lane metadata onota doctor --json, so
CI/merge consumers can key off stable Ota-owned verification-lane identity instead of brittle
workflow/job/check display names while Ota continues to recover actual provider source paths -
added top-level
governance.required_verification_lanestoota doctor --json, projecting
merge-relevant verification lanes fromci_verification/ legacyci_validationworkflows
before falling back toagent.verify_after_changes, so CI drift compares contract-owned required
lanes instead of broad task truth -
tightened
ota detectpackage-script task inference so pure guidance-only scripts such as
echo "use 'yarn start' instead"orecho '... no longer supported'no longer become
runnable task truth; this closes a mixed-signal precedence gap where redirect-only
package.jsonscripts could incorrectly outrank the repo's actual documented runnable surface -
tightened CI verification drift scoping so repos that already declare workflows only get CI
verification governance on tasks reachable from workflows withintent: ci_validation; local
contributor verification slices no longer get falsely treated as CI mirrors just because their
task names contain verifier-shaped labels such asverify -
fixed script-body tool inference so leading shell comments no longer get treated as required tools;
multi-linescript:tasks now skip comment-prefixed lines before inferring presence-only
command requirements for doctor and dry-run surfaces -
tightened external
AGENTS.md/CLAUDE.mdtask-command admission so placeholder-heavy
command templates such as<PROJECT>or obviouspath/to/...scaffolding stay out of detect
task truth; ota still admits narrow structured boundary-doc command sections, but only when the
recovered command is concrete enough to be runnable evidence instead of prose guidance, and it
now prefers command-derived canonical task identity over prose aliases when the command already
exposes a stable runnable task name -
widened CI verification recovery again so
ota doctorcan now recover repo-local verifier
scripts such asnode scripts/verify-*.jsand bounded step-named opaque checks as declared
verification tasks, reducing false CI verification drift when the workflow lane is canonical
but the verifier body is not an ordinary package-manager subcommand -
tightened
ota detectso GitHub Actionsrun:lines containing${{ ... }}interpolation no
longer get promoted into task-command truth, keeping workflow templating and local contract
execution truth separate instead of hallucinating executable repo tasks from CI expressions -
tightened safe-task detect inference so verifier-shaped task names that still own orchestration
or adapter control lanes, such asdocker:test, no longer get auto-promoted to
safe_for_agent: truejust because their names containtest -
tightened CI verification drift governance so
ota doctornow unions exact verifier coverage
across multiple verification-oriented GitHub workflow files instead of forcing one best-match
file to own the whole aggregate and reporting false drift when the repo truth is intentionally
split -
tightened that same CI verification drift lane again so only verification-oriented GitHub
workflows become canonical verification evidence; deploy, release, publish, sync, and similar
workflows no longer outrank real verification lanes just because they happen to contain one
check step -
widened
prepare.kind: tool_bootstrapwith first-classprepare.tool: cypress_browsersfor
source.kind: node_package_manager, so repos can now ownnpx|pnpm|yarn|bunx cypress install
structurally instead of burying Cypress browser bootstrap inside chained verification shells;
validator, runner, task previews, contract reference docs, and published schemas now treat that
lane as canonical while keeping Playwright-only fields such asprepare.browsers,
prepare.with_deps, andprepare.source.filterstrict -
added first-class
action.kind: ensure_git_template, so deterministic scaffold/factory bootstrap
can now owngit cloneplus inherited.gitremoval plus freshgit initas one governed
materialization lane instead of pushing template bootstrap back into shell glue -
widened
action.kind: ensure_git_checkout/ensure_git_checkoutsagain so deterministic
checkout materialization can now also own declared Git remote wiring throughremotes[];
Ota now idempotently adds missing remotes or updates remote URLs inside existing checkouts
instead of forcing fork/upstream remote truth back into shell bootstrap steps -
added first-class
action.kind: ensure_git_checkouts, so one setup lane can now own several
deterministic Git-backed sibling or vendored checkouts without flattening that materialization
truth into repeated low-levelensure_git_checkoutentries;ensure_bundlecan now compose the
same multi-checkout step with file/env prep, moving-head advisories stay per checkout, and the
published contract/docs/examples now describe the widened VCS materialization surface directly,
including the workspace task JSON schema and capability reference surfaces -
widened
action.kind: ensure_git_checkout/ensure_git_checkoutsso declared checkout targets
may now use sibling or workspace-relative paths such as../uiinstead of being artificially
constrained to repo-internal paths; validator and runner now agree on that bootstrap truth, so
repos whose documented local runtime depends on side-by-side checkouts no longer need shell glue
just to materialize the required workspace layout -
added first-class
effects.workspace_writesfor task paths that intentionally mutate sibling or
workspace-relative filesystem targets outside the repo root, so deterministic checkout/bootstrap
lanes can keep repo-scopedeffects.writesstrict while still declaring broader local workspace
materialization truth explicitly; agent-safe task closures continue to require repo-scoped write
boundaries, and doctor / run-preview surfaces now report workspace-relative write ownership -
added first-class
compose.build: truefortasks.<name>.compose.kind: run, so documented
one-off Compose contributor shells likedocker compose run --rm --build ...no longer need
shell fallback or wrapper-script truth -
added first-class
compose.service_ports: truefortasks.<name>.compose.kind: run, so
documented one-off Compose dev lanes likedocker compose run --rm --service-ports ...no
longer need shell fallback or repo-local wrapper truth -
widened
prepare.kind: dependency_hydrationwith first-class Composer ownership through
source.kind: composer, so repos can now declare structuralcomposer installsetup lanes
natively or through Composeexec/runwrappers instead of leaving Composer dependency hydration
command-owned; validator, runner, dry-run/output summaries, and contract reference docs now all
understand the Composer family consistently -
taught
ota doctorto flag CI bootstrap split-brain when workflows restate Ota install truth
outsideagent.bootstrap.ota.sourceor conflict with it, so repos are pushed toward
ota-run/setup@v1 source: contract/ota-run/action@v1 source: contractinstead of carrying
separate workflow-owned version, git-revision, branch, or source-install refs -
added execution-boundary agent-safety enforcement to
ota runandota up:--agentnow
refuses unsafe requested tasks and declared-safe task/workflow closures before any execution
starts, returns ota-authored blocked receipts/results instead of treating the safe surface as
review-only guidance, and is now recognized correctly onota run <task> --agentinstead of
being misread as task input after the task selector -
widened machine-readable execution governance again with a canonical phase-labeled
governance.evaluationblock onota run --dry-run --jsonplus additivegovernanceon
ota up --json: external consumers can now read explicit preflightallowed|warning_only|blocked|refused
posture separately from post-execution evidence state, andota run --dry-run --json --agent
now truthfully publishes runner refusal instead of looking runnable in preview JSON -
widened
orchestratorswith first-class launcher ownership and directmode: subcommand
mediation so repos can declare truth likenix run ...#devenv -- testordevenv upwithout
faking direct PATH ownership or misusingtask/exec; validator, selected-path diagnosis,
dry-run previews, and task execution now all consume the same orchestrator-owned command shape -
widened orchestrator-mediated command previews across all shipped orchestrator modes (
task,
exec, andsubcommand) soota tasks --useandota run --dry-runnow render the same
mediated command truth operators will actually execute, including readabledevbox run -- ...
andnix run ...#devenv -- ...previews instead of split-brain raw host bodies -
widened orchestrator-mediated first-class prepare execution so command-backed
prepare.kind: dependency_hydrationandprepare.kind: tool_bootstrapcan now run through
execution.orchestrator.mode: execfor declared orchestrators such asdevboxanddevenv,
while mixed/nativeprepare.kind: sequenceremains outside orchestrator mediation in the
current slice; validator, dry-run preview, and runner behavior now all agree on that boundary -
fixed native run-path activation ordering for command-acquired tools so repo-owned binaries such
asdevboxcan now be activated fromtools.<name>.acquisition.provider: commandbefore
orchestrator preparation or other selected task execution depends on them, instead of failing
early with a missing-binary spawn error -
widened
ota doctor --fixbeyond repo-hygiene-only file edits so native doctor can now apply
deterministic command-acquired tool activation (for example a declareddevboxcommand
acquisition) and rerun diagnosis before returning the final readiness verdict, while plain
ota doctorstays non-mutating -
widened
ota detectwith the first V11.2 source-family ingestion step: repo-owned
mise.toml [tools]entries now contribute high-confidence runtime and Node package-manager
inference with explicit precedence over.tool-versionswhile still yielding to more specific
repo-local markers such as.nvmrc,.python-version, andpackage.json#packageManager -
widened
ota detectagain in the same V11.2 source-family lane so
.devcontainer/devcontainer.jsonnow contributes high-confidence Node image and bootstrap
package-manager inference while still yielding to stronger repo-local runtime and package-manager
truth -
widened that same
.devcontainer/devcontainer.jsondetector lane again so Ota now also
recognizes object/arraypostCreateCommandandupdateContentCommandforms plus conservative
high-confidence runtime/tool presence from known devcontainer features such asnode,python,
go,github-cli, andkubectl-helm-minikube, instead of only reading simple string command
fields -
widened the matching doctor-side devcontainer package-manager drift lane so review pressure now
understands object/arraypostCreateCommandandupdateContentCommandforms too, instead of
silently missing real drift once detect had already widened past string-only bootstrap commands -
widened the matching doctor-side devcontainer runtime drift lane so Ota now reports
both feature-backed runtime drift and known image-backed runtime drift fornode,python,
andgo, instead of keeping image-hint review pressure effectively Node-only -
taught Ota to read real
devcontainer.jsonJSONC syntax for the devcontainer source family, so
comments and trailing commas no longer silently disable detect or doctor-side devcontainer truth -
widened doctor-side devcontainer review again so
forwardPortsnow drifts against declared
host-facing contract ports fromsurfaces.*.portandservices.*.endpoints.host.port -
widened
ota detectagain across the next V11.2 source families sodevbox.jsonnow
contributes high-confidencetools.devboxandshell.scriptstask inference, while
devenv.nixcontributes conservative high-confidencetools.devenvpresence without
pretending broader runtime truth than those files really own -
widened the V11.2 agent-boundary source family from review-only metadata to real detect-backed
starter truth: structured repo-authoredAGENTS.mdandCLAUDE.mdlists for
safe_tasks,verify_after_changes,writable_paths, andprotected_pathsnow feed detect
as medium-confidence agent-boundary evidence, while Ota-generated/self-origin agent docs remain
excluded so source provenance does not recurse back into exported contract guidance -
widened that same agent-doc source family again so explicit external
AGENTS.md/
CLAUDE.mdcommand sections now contribute low-confidence task guidance for narrow canonical
lanes such asbuild,check,lint,test,docs, andcompile, including exact
| Task | Command |tables, bounded adjacent| Command | description |forms when ota can
still recover one stable canonical task name from the command itself, and labeled command
bullets inside explicit command sections, without promoting broader prose or
self-origin generated docs into executable contract truth -
widened command-first external agent-doc task recovery again so direct tool commands such as
pytest ...,ruff check ..., andpython -m buildcan now map back to stable canonical
test,lint, andbuildtask names from| Command | description |tables instead of
being ignored unless they were wrapped in package-manager, Make, Taskfile, or Cargo forms -
widened bounded external agent-doc task-table recovery again so structured sections such as
## Individual Commandsand## Common Commands, plus natural-language task labels like
Run all unit tests,Run type checking, andFormat code, now recover canonical
test,typecheck, andfmttask names instead of being dropped even when the table itself
is explicit -
widened bounded external agent-doc command-section admission again so nearby headings like
## Quick Reference Commandsnow participate in the same low-authority task-table recovery
lane instead of being ignored even when the table shape itself is canonical -
tightened CI verification task recovery so bare package-manager flag invocations such as
yarn --no-check-resolutionsno longer mint fake callable tasks just because a verifier token
appears inside the flag name; real verifier scripts and commands continue to recover normally
overclaiming broader Nix environment ownership -
widened doctor/explain source-governance drift so manual contracts now warn when a high-confidence
external environment source already detected by Ota, such asmise.toml,devbox.json, or
devenv.nix, disagrees with the declared runtime/toolchain truth, instead of limiting that
review pressure to detector-owned merged fields; the same governance lane now also covers
high-confidence detected task-command truth frompackage.json#scripts.*and
devbox.json#shell.scripts.*, while existing devcontainer-specific doctor warnings remain the
narrower review surface for devcontainer drift -
widened V11.2 task-command source governance again so Ota now detects high-confidence
Taskfile and justfile task truth as canonical runner-owned commands (task <name>and
just <name>) and uses that same source-governance drift lane to warn when manual
tasks.*.runentries diverge from those external task-runner sources -
widened V11.2 CI/workflow verification governance so Ota now recovers medium-confidence
verifier task truth from explicit GitHub Actionsrun:lanes and warns when manual
tasks.*.runverification entries diverge from enforced workflow verification, while keeping
CI below direct repo execution sources in precedence -
widened that same CI/workflow governance lane again so doctor now also warns when a manual
verifier task is no longer detected from enforced GitHub Actions verification truth, closing
the silent rename/removal case where workflow verification changed lanes without touching the
contract task name -
tightened Taskfile/justfile detection so thin single-command wrappers now recover the underlying
direct task command instead of surfacing weakertask <name>/just <name>drift against an
already-canonical contract lane -
widened V11.2 agent-boundary governance so
ota doctornow detects structuredAGENTS.md/
CLAUDE.mddrift for agent-boundary fields such assafe_tasks,verify_after_changes,
writable_paths, andprotected_paths, without pretending free-form prose is structured truth -
widened first-class orchestrator ownership beyond
mise: ota now shipsdevboxanddevenv
orchestrator kinds, with validator and runner support for mediated task execution;devbox
supportsprepare.install,devenvsupports task/exec mediation, and unsupported trust/install
knobs now fail validation instead of pretending the contract owns behavior it does not -
detect JSON and detect-written metadata now publish additive detector source-class governance
(source_classon inferred/comparison entries andmetadata.ota.detect.field_source_classon
detect-written contracts) so ecosystem-source convergence can stay explicit without inventing a
parallel detector artifact -
widened
ota tasks --useandota tasks --safe --useso the runnable task surface now shows
command preview, safety posture, declared effects, runnable mode commands, task dry-run JSON,
and the receipt follow-up command directly in one operator-facing view instead of leaving
execution-governance proof split across separate commands or implicit inference -
widened
ota run --dry-run --jsonwith an additive top-levelgovernancesummary so CI and
agents can read the selected task lane’s safety posture, review requirement, default mode,
runnable mode commands, effect surface, and receipt follow-up command without stitching those
facts together fromrequested_task, task effects, and preview planning fields by hand -
widened receipt/proof machine surfaces with explicit stage-family truth so execution receipts now
publishsteps[*].stage_familyandota proof runtime --jsonnow publishes
stage_family: "proof", letting CI and agents classify broad execution-governance stages
(prepare,setup,verify,proof,receipt) without inferring them from free-form labels
or proof phase names -
widened execution-governance machine output with additive
artifact_routing[]on dry-run,
receipt, proof, repoup, and workspace execution/status/receipt lanes so operators, CI, and
agents can see which receipt/proof artifact to inspect, archive, or capture next instead of
reconstructing that path from scatterednexttext and command-specific fields -
widened workspace
--progress-jsonNDJSON events with additivephaseandstage_family, so
long-running workspace machine streams now publish command-local operational lane plus broad
governance family directly instead of leaving automation to infer those semantics from progress
status strings and command names -
refined receipt-diff correlation ordering so
likely_related_changes[]now prefers the sharpest
governance-stage match when several nearby semantic changes are otherwise equally plausible,
which keeps verify failures, setup blockers, and proof/readiness drift ordered by the failure
lane they most directly explain -
fixed JSON schema compatibility for provisioning diagnostics so
ota run --dry-run --json
previews that include nullable provisioning fields (source,source_config,
approved_version, and related optional metadata) now validate against published
run-preview.json/doctor.jsonreferences instead of failing smoke validation when blocked
provisioning entries include explicitnullvalues -
fixed selected-backend command executable inference so explicit
command.exeor
launch.kind: commandvalues ofwhere/whichare treated as path-lookup utilities (not
versioned tool requirements), which prevents falseOTA_TOOL_PROBE_FAILEDblockers in the
Windows native proof workflow
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]