Skip to content

ota-run/ota](https:

v1.6.2 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

cli configuration contracts developer-tools infrastructure ota
+5 more
productivity repo-readiness rust validation workspace

Summary

AI summary

Fixed Windows install and update overwrites, improved persistent container cleanup on interruption.

Full changelog
  • made ota init, ota init --pack ..., and repo-contract detect write flows (ota detect --write, --merge, --rewrite) automatically create or extend repo .gitignore files with .ota/state/ so local Ota runtime state stays out of source control by default
  • added a first safe ota doctor --fix path with --dry-run preview mode, currently scoped to deterministic repo-hygiene repair for .ota/state/ gitignore protection (# Ota local runtime state + .ota/state/) with planned/applied status surfaced in text and JSON output
  • tightened ota doctor --fix truthfulness and scope: contractless repos no longer surface .ota/state/ gitignore repair before Ota is onboarded, dry-run/apply summaries now report only actually plannable file changes, and no-contract --fix output now points operators back to ota detect --dry-run / ota init --bootstrap instead of low-value hygiene mutations
  • added additive named-context inheritance for execution topology: execution.contexts.<name>.extends now resolves parent context shape with deterministic merge semantics (scalars override, maps merge, lists replace) while preserving both existing single-context shorthand (execution.preferred/execution.lifecycle/execution.backends) and existing named-context contracts
  • moved execution.contexts.<name>.extends semantic failures (unknown parent, cycle, unresolved backend) into validator findings, and now reject backend-family switches across inheritance (container/remote/native) with explicit errors instead of inherited cross-backend drift
  • made runtime context selection consume resolved named-context inheritance across execution planning and diagnosis surfaces (ota execution plan, ota up, ota run, and doctor mode context checks) while preserving existing shorthand behavior for single-context contracts
  • fixed task dependency and hook execution so child tasks resolve their own declared backend/context instead of inheriting the parent task's resolved backend; host-scoped dependencies like compose:up now stay on host even when invoked from a container-context parent task
  • fixed reused persistent container service runs so Ota preflights fixed in-container listener binds before exec and raises an explicit field-scoped listener conflict when a stale workload process is still holding the port
  • fixed interrupted persistent container service runs so Ota now cleans up the interrupted in-container service workload instead of deleting the shared persistent backend, and classifies the stop from the exec workload outcome instead of the backend container sleep loop
  • finalized execution-inheritance docs/output guidance so repo docs and ota-site now present three additive authoring patterns clearly (single-context shorthand, named contexts, named contexts with extends), clarify that backend-family switches across extends are rejected, and keep extends positioned as optional multi-context dedup instead of a shorthand replacement
  • tightened execution contract validation so repos must choose one default execution declaration mode: shorthand-only (execution.preferred / execution.lifecycle / execution.backends) or named-context mode (execution.default_context / execution.contexts), with mixed overlap now rejected explicitly instead of allowing duplicated default execution truth
  • tightened streamed service-stop classification so inspected container exit evidence wins over late interrupt flags, preserving real crash/exit causes instead of rewriting them as Interrupted
  • improved streamed service interrupt UX before readiness: user Ctrl+C during startup is now reported as an interruption-before-readiness case (not a generic task failure), while real pre-readiness non-zero startup failures remain normal failures
  • finalized terminal-cause consistency across run rendering and dependency propagation: exit-code-only interrupts (130/143) now still classify as user interruption for direct and dependency-driven runs, while late raw interrupt signals no longer overwrite real non-zero failures or clean inspected service exits in banners, summaries, and receipt status notes
  • made persistent container reconciliation treat Compose attachment namespaces as part of execution shape, so changing execution.contexts.<name>.attachments.compose now recreates stale persistent backends instead of silently reusing containers bound to the old Compose network family
  • made streamed ota up provisioning progress environment-aware: the loader now shows the selected native/container/remote target and container lifecycle/image where relevant instead of a generic preparation spinner
  • fixed Windows release installs and ota self-update / ota upgrade overwrite behavior in scripts/bootstrap.ps1 so existing ota.exe is replaced via copy-and-cleanup semantics instead of failing with PowerShell Move-Item "file already exists" errors

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

Track ota-run/ota](https:

Get notified when new releases ship.

Sign up free

About ota-run/ota](https:

All releases →

Related context

Earlier breaking changes

  • v1.6.16 Enforce `metadata.ota.minimum_version` at contract load time across all commands.

Beta — feedback welcome: [email protected]