v1.6.23
-
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