Release history
ota-run/ota](https: releases
All releases
72 shown
- Update configuration files to replace `execution.local_backends` with `execution.shared_backends`.
- Review any usage of legacy `local_backends` and migrate to the new shared-backend families (`container`, `native`, `remote`).
- `execution.local_backends` has been renamed to `execution.shared_backends`; legacy `local_backends` is no longer accepted. The shipped shared-backend families are now local `container`, local `native`, and remote `remote`.
- First target-activation support under `tasks...targets...activation.mode` with `manual` and `ensure_ready`, including activation evidence in run receipts/summaries.
- First-class service-task `runtime.readiness` for `http` and `tcp` probes on projected host endpoints, integrated with `activation.mode: ensure_ready` to wait for producer runtime readiness.
- Broadened shared-backend target resolution so `address_view: topology` and `address_view: internal` resolve across `container`, `native`, and `remote` backends; remote service runtimes allowed when they declare fixed contract endpoints.
Full changelog
- breaking contract change:
execution.local_backendshas been renamed toexecution.shared_backends; legacylocal_backendsis no longer accepted, and the shipped shared-backend families are now localcontainer, localnative, and remoteremote - extended policy-governed run-path fulfillment to direct container execution contexts:
execution.contexts.<name>.fulfillment: runnow provisions declared runtimes/tools inside the actual resolved execution container, including deferred fulfillment for ephemeral container tasks before the task body runs, while rejecting unsupported native/remote context declarations and leaving direct ephemeral service-task fulfillment unclaimed for now - added first target-activation support under
tasks.<name>.targets.<target>.activation.modewithmanualandensure_ready, including explicit override skip semantics, validation for self/cyclic activation graphs, activation evidence in run receipts/summaries, and a first honest auto-start slice for persistent container producer services when the target binding itself already resolved truthfully (for examplehost, shared-backendtopology, or shared-backendinternal) - added first-class service-task
runtime.readinesssupport forhttpandtcpprobes on projected host endpoints, and taughtactivation.mode: ensure_readyto wait for declared producer runtime readiness instead of treating an open listener socket as sufficient - broadened
activation.mode: ensure_readyto include unix native producer services via an activation-owned native startup path, while keeping interrupt cleanup semantics that stop activation-started producer services and leave reused producers running - broadened shared-backend target resolution so
address_view: topologyandaddress_view: internalnow resolve truthfully across sharedcontainer, sharednative, and sharedremotebackend boundaries; remote service runtimes are now allowed when they declare fixed contract endpoints - broadened
activation.mode: ensure_readyagain to include built-in remote producer services (ssh,tsh,kubectl,daytona) for shared-remoteaddress_view: topology/address_view: internaltargets with TCP readiness, while leaving remote host-view activation, remote HTTP readiness, and backend-provider remote activation as later slices - fixed persistent container service workloads to run under a managed detached in-container wrapper with pid/status/log tracking, so long-running dev servers like Next.js
next devstay alive across route compilation and request handling instead of spuriously exiting after readiness when launched through the old attacheddocker execservice path
- Rename any task inputs that conflict with reserved flag names (`backend`, `jobs`, `json`, `lifecycle`, `member`, `mode`, `receipt`, `stream`) to unique, task‑specific names before upgrading.
- `ota annotations` now suppresses duplicate primary‑blocker lines and adds `Provenance:`/`Next:` labels when present.
- Task input validation rejects names colliding with reserved `ota run` / `ota workspace run` flags and aliases such as `backend`, `jobs`, `json`, `lifecycle`, `member`, `mode`, `receipt`, or `stream`; existing contracts must rename these inputs to task‑specific names before upgrading.
- First‑class task outcome hooks (`after_success`, `after_failure`, `after_always`) with hook failures treated as part of the parent task result.
- `ota annotations --format markdown` added as canonical compact summary renderer for CI/PR consumption.
- `ota receipt --baseline --fail-on-new-blockers` now carries blocking summary, next step, and provenance in both JSON and text output.
Full changelog
-
improved
ota runso a missing non-path token likeota run version:bump patchcan be reinterpreted as a single declared task input instead of a fake repo path, while still preserving explicit path-like tokens such as./repoorfoo/ota.yaml. -
extended that single-input shorthand to monorepo member runs, so
ota run version:bump --member api patchnow resolvespatchas the declared task input instead of a missing repo path. -
prevalidated requested-task inputs before dependency execution in
ota run, so invalid top-level task input flags or values now fail before anydepends_onwork can mutate repo state. -
clarified run receipt step details for hook reruns so follow-up executions now explain when a task reran via
after_success/after_failure/after_alwaysand when a dependency reran as part of that fresh hook subtree. -
clarified
ota run --helpandota workspace run --helpso the operator rule is explicit: put Ota command flags before task inputs, with concrete examples for input-bearing task syntax. -
breaking change: task input validation now rejects names that collide with reserved
ota run/ota workspace runflags and aliases such asbackend,jobs,json,lifecycle,member,mode,receipt, orstream; existing contracts must rename those inputs to task-specific names such assuite_mode,output_json,target_member, orexecution_backendbefore upgrading. -
fixed task outcome hooks so
after_success,after_failure, andafter_alwayscan rerun a task together with its dependency subtree even when that work already ran earlier in the same top-level invocation throughdepends_on, which fixes flows likeversion:bumpfollowed by a post-bumpbuildthat must rerunsetup. -
dogfooded task outcome hooks in the
otarepo and the public examples repo soafter_success,after_failure, andafter_alwaysnow appear in real shipped contracts instead of docs-only examples -
added first-class task outcome hooks with
after_success,after_failure, andafter_always, made the runner treat hook failures as part of the parent task result, and updated workspace task inventory plus contract docs so the new execution edges are visible in both runtime and machine-readable surfaces -
CI wrapper scripts
scripts/emit-ota-findings.shandscripts/emit-ota-findings.ps1now
delegate directly toota annotations, including markdown summaries andreceipt-diff, so
wrapper paths reuse the canonical CLI renderers instead of maintaining duplicate formatting;
they also resolve the current checkout binary before falling back to an ambient install -
polished
ota annotationsfor CI and PR consumption by suppressing duplicate primary-blocker finding lines and labeling additiveProvenance:plusNext:segments when those fields exist in the input JSON. -
added
ota annotations --format markdownas the canonical compact summary renderer for doctor and workspace-doctor JSON, so step summaries and PR comments can reuse ota’s own status, blocker, provenance, and next-step wording instead of rebuilding it downstream. -
extended
ota annotationswith--mode receipt-diff --format markdown, so baseline compare output now has the same canonical compact renderer for PR comments and step summaries instead of forcing wrappers to rebuild compare/gate wording from raw receipt diff JSON. -
extended
ota receipt --baseline --fail-on-new-blockersso the compare gate now carries the first blocking summary, next step, and provenance in both JSON and text output, making CI summaries and PR comments easier to render without scraping the full introduced-finding list. -
added a compact additive receipt diff comparison summary so JSON and text output can surface baseline/current identity labels plus readiness drift in one small block instead of forcing wrappers to reconstruct that view from the full baseline/current sections.
-
refined explicit
ota init --pack ...advisories so the text output now compares both sides of the mismatch more clearly with suggested signals, selected-pack incidental signals, and an explicit score gap while keeping the pack choice authoritative. -
extended
pack_advisoryinota init --jsonwith additive comparison fields such asscore_gapandselected_signal_details, making the advisory easier to explain in automation without scraping human text. -
clarified the env-resolution docs so root contract env is explained as a repo-wide execution contract, not just a validation surface, including the injected-process boundary for
ota run/ota upand when ota can functionally replace in-app dotenv loading. -
made the env docs more explicit about what
required,allowed,secret, anddefaultmean in practice, including a concreteDISCORD_TOKENplusRELEASE_CHANNELexample. -
added stronger env docs for authoring and operations, including valid-versus-invalid
env.varsexamples, the remote-secret execution caveat, a workspace env precedence example, and a realisticota envtext/JSON example.