@awebai/oats 0.29.4 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +194 -50
  3. package/capabilities/oats-aweb/bin/oats-aweb.mjs +538 -204
  4. package/capabilities/oats-aweb/injects/aweb.md +1 -1
  5. package/capabilities/oats-aweb/lib/binding-wire.mjs +31 -22
  6. package/capabilities/oats-aweb/oats.json +5 -12
  7. package/capabilities/oats-aweb/skills/VENDORED.md +4 -4
  8. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +1 -1
  9. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +83 -13
  10. package/capabilities/oats-code-review/injects/reviewer.md +26 -0
  11. package/capabilities/oats-code-review/oats.json +16 -0
  12. package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +66 -0
  13. package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +30 -0
  14. package/capabilities/oats-code-review/skills/security-review/SKILL.md +56 -0
  15. package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +34 -0
  16. package/capabilities/oats-developer/injects/developer.md +38 -0
  17. package/capabilities/oats-developer/oats.json +17 -0
  18. package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +43 -0
  19. package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +47 -0
  20. package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +65 -0
  21. package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +37 -0
  22. package/capabilities/oats-developer/skills/worktrees/SKILL.md +36 -0
  23. package/capabilities/oats-engineering-expert/injects/expert.md +37 -0
  24. package/capabilities/oats-engineering-expert/oats.json +17 -0
  25. package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +37 -0
  26. package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +52 -0
  27. package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +50 -0
  28. package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +53 -0
  29. package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +49 -0
  30. package/capabilities/oats-okf/bin/oats-okf.mjs +8 -4
  31. package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
  32. package/capabilities/oats-okf/lib/inspection.mjs +26 -7
  33. package/capabilities/oats-okf/lib/sources.mjs +16 -2
  34. package/capabilities/oats-okf/lib/worker.mjs +5 -16
  35. package/capabilities/oats-okf/oats.json +6 -3
  36. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +2 -2
  37. package/capabilities/oats-okf-harvest/oats.json +3 -3
  38. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +6 -6
  39. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +2 -2
  40. package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
  41. package/capabilities/oats-okf-maintenance/oats.json +2 -2
  42. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +1 -1
  43. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +11 -23
  44. package/capabilities/oats-workspace-experts/injects/oats-experts.md +26 -0
  45. package/capabilities/oats-workspace-experts/oats.json +9 -0
  46. package/docs/capabilities.md +160 -171
  47. package/docs/capability-manifest.schema.json +6 -11
  48. package/docs/configuration.md +213 -64
  49. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  50. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  51. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  52. package/docs/design/2026-09-27-team-model-v2.md +97 -117
  53. package/docs/design/2026-09-28-automations-trust.md +38 -0
  54. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  55. package/docs/design/HISTORY.md +65 -0
  56. package/docs/design/README.md +23 -54
  57. package/docs/desktop-cli-api.md +1787 -1777
  58. package/docs/desktop.md +30 -91
  59. package/docs/execution-targets.md +146 -292
  60. package/docs/first-team.md +31 -17
  61. package/docs/implementation.md +76 -288
  62. package/docs/integrations.md +118 -320
  63. package/docs/knowledge-capability-authoring.md +25 -52
  64. package/docs/knowledge-reference/acceptance.md +3 -3
  65. package/docs/knowledge-reference/adoption.md +1 -1
  66. package/docs/knowledge-reference/harvester.md +2 -2
  67. package/docs/knowledge-reference/package-craft.md +3 -3
  68. package/docs/knowledge-reference/provider-mapping.md +3 -6
  69. package/docs/knowledge-reference/reader-capture.md +3 -3
  70. package/docs/knowledge-theory.md +62 -166
  71. package/docs/knowledge.md +225 -404
  72. package/docs/layers.md +42 -97
  73. package/docs/oats-local.schema.json +58 -5
  74. package/docs/oats-membership.schema.json +1 -8
  75. package/docs/oats-package.schema.json +5 -5
  76. package/docs/oats-workspace.schema.json +8 -22
  77. package/docs/official-catalog.md +25 -28
  78. package/docs/packages.md +45 -63
  79. package/docs/plans/0.30-close-out.md +61 -0
  80. package/docs/release-lane.md +77 -0
  81. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  82. package/docs/release-notes/v0.19.0.md +48 -147
  83. package/docs/release-notes/v0.19.1.md +2 -3
  84. package/docs/release-notes/v0.19.3.md +2 -15
  85. package/docs/release-notes/v0.20.0.md +0 -15
  86. package/docs/release-notes/v0.22.0.md +71 -138
  87. package/docs/release-notes/v0.22.1.md +42 -90
  88. package/docs/release-notes/v0.22.10.md +1 -1
  89. package/docs/release-notes/v0.22.11.md +1 -47
  90. package/docs/release-notes/v0.22.12.md +4 -13
  91. package/docs/release-notes/v0.22.13.md +1 -42
  92. package/docs/release-notes/v0.22.14.md +3 -11
  93. package/docs/release-notes/v0.22.15.md +1 -46
  94. package/docs/release-notes/v0.22.16.md +6 -8
  95. package/docs/release-notes/v0.22.18.md +1 -99
  96. package/docs/release-notes/v0.22.19.md +3 -14
  97. package/docs/release-notes/v0.22.2.md +6 -15
  98. package/docs/release-notes/v0.22.3.md +0 -1
  99. package/docs/release-notes/v0.22.4.md +1 -14
  100. package/docs/release-notes/v0.22.5.md +2 -12
  101. package/docs/release-notes/v0.22.6.md +0 -3
  102. package/docs/release-notes/v0.23.0.md +9 -25
  103. package/docs/release-notes/v0.23.1.md +9 -25
  104. package/docs/release-notes/v0.23.2.md +2 -4
  105. package/docs/release-notes/v0.24.0.md +56 -97
  106. package/docs/release-notes/v0.24.1.md +7 -11
  107. package/docs/release-notes/v0.24.10.md +34 -45
  108. package/docs/release-notes/v0.24.11.md +12 -20
  109. package/docs/release-notes/v0.24.12.md +35 -48
  110. package/docs/release-notes/v0.24.13.md +34 -41
  111. package/docs/release-notes/v0.24.2.md +9 -13
  112. package/docs/release-notes/v0.24.3.md +7 -11
  113. package/docs/release-notes/v0.24.4.md +6 -6
  114. package/docs/release-notes/v0.24.5.md +6 -10
  115. package/docs/release-notes/v0.24.6.md +2 -5
  116. package/docs/release-notes/v0.24.7.md +46 -75
  117. package/docs/release-notes/v0.24.8.md +58 -96
  118. package/docs/release-notes/v0.24.9.md +38 -54
  119. package/docs/release-notes/v0.25.0.md +59 -76
  120. package/docs/release-notes/v0.25.1.md +57 -81
  121. package/docs/release-notes/v0.25.2.md +51 -70
  122. package/docs/release-notes/v0.25.3.md +11 -13
  123. package/docs/release-notes/v0.25.4.md +9 -13
  124. package/docs/release-notes/v0.25.5.md +3 -5
  125. package/docs/release-notes/v0.25.6.md +20 -29
  126. package/docs/release-notes/v0.25.7.md +5 -7
  127. package/docs/release-notes/v0.25.8.md +26 -39
  128. package/docs/release-notes/v0.26.0.md +175 -646
  129. package/docs/release-notes/v0.27.0.md +4 -5
  130. package/docs/release-notes/v0.27.1.md +4 -6
  131. package/docs/release-notes/v0.27.2.md +1 -1
  132. package/docs/release-notes/v0.28.0.md +57 -124
  133. package/docs/release-notes/v0.29.0.md +89 -208
  134. package/docs/release-notes/v0.29.1.md +1 -1
  135. package/docs/release-notes/v0.29.2.md +3 -4
  136. package/docs/release-notes/v0.30.0.md +205 -0
  137. package/docs/schedules.md +280 -363
  138. package/docs/servers.md +99 -117
  139. package/docs/soul.schema.json +2 -9
  140. package/docs/souls-and-instances.md +145 -158
  141. package/docs/workspaces.md +132 -215
  142. package/lib/automations.mjs +21 -6
  143. package/lib/core.mjs +226 -74
  144. package/lib/instance-events.mjs +1 -1
  145. package/lib/instance-inspect.mjs +109 -34
  146. package/lib/instance-lifecycle.mjs +14 -1
  147. package/lib/instance-resolution.mjs +26 -27
  148. package/lib/launch-preference.mjs +87 -0
  149. package/lib/materialize.mjs +3 -3
  150. package/lib/resolve.mjs +29 -87
  151. package/lib/schedule.mjs +1 -1
  152. package/lib/teams-verbs.mjs +195 -0
  153. package/lib/teams.mjs +190 -0
  154. package/lib/triggers.mjs +2 -2
  155. package/lib/workspace.mjs +54 -147
  156. package/package-catalog.json +9 -15
  157. package/package.json +1 -1
  158. package/skills/oats-getting-started/SKILL.md +25 -13
  159. package/capabilities/oats-review/injects/review.md +0 -69
  160. package/capabilities/oats-review/oats.json +0 -10
  161. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  162. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  163. package/docs/conventions.md +0 -90
  164. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  165. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  166. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  167. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  168. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  169. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  170. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  171. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  172. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  173. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  174. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  175. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  176. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  177. package/docs/design/2026-09-15-package-preparation.md +0 -100
  178. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  179. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  180. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  181. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  182. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  183. package/docs/design/2026-09-15-source-observation.md +0 -119
  184. package/docs/design/2026-09-16-captured-admission.md +0 -77
  185. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  186. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  187. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  188. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  189. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  190. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  191. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  192. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  193. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  194. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  195. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  196. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  197. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  198. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  199. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  200. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  201. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  202. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  203. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  204. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  205. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  206. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  207. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  208. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  209. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  210. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  211. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  212. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  213. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  214. package/docs/design/2026-09-25-teams-contract.md +0 -258
  215. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  216. package/docs/design/desktop-ux-plan.md +0 -362
  217. package/docs/design/launch-configurations.md +0 -168
  218. package/docs/design/okf-mirror-provenance.md +0 -105
  219. package/docs/design/operations-contract.md +0 -141
  220. package/docs/oats-member.schema.json +0 -38
  221. package/skills/integration-authoring/SKILL.md +0 -84
  222. package/skills/oats-support/SKILL.md +0 -79
  223. package/skills/skill-craft/SKILL.md +0 -109
  224. package/skills/soul-craft/SKILL.md +0 -116
@@ -1,102 +1,54 @@
1
1
  # OATS v0.22.1
2
2
 
3
- A bounded reliability release, made from the first day of operating OATS on
4
- its own repository from the published 0.22.0 artifacts. Every item below was
5
- either reproduced during that run or found by the independent review that
6
- preceded it, plus the golden fixtures that guard the kernel's outputs and a
7
- release-workflow correction (a release with nothing to bump finishes rather
8
- than fails). The Desktop compatibility band (`>=0.22.0 <0.23.0`) already
9
- covers this kernel; no Desktop rebuild is needed.
3
+ A reliability release. The Desktop compatibility band (`>=0.22.0 <0.23.0`)
4
+ already covers this kernel; no Desktop rebuild is needed.
10
5
 
11
6
  ## Fixes
12
7
 
13
- - **`oats create` in a fresh scope no longer crashes.** After `oats init`,
14
- the first `oats create` died with a raw stack trace because it demanded the
15
- `agents/` directory that only `create` itself populates. It now bootstraps
16
- the roster root at the enclosing repository, reports that once (and as
17
- `agentsRoot` in `--json`), and the 0.22.0 workaround `mkdir agents` is no
18
- longer needed.
19
- - **Spawn preflights executables and compensates every post-hook failure.**
20
- A missing runtime binary or tmux was detected only after the home, worktree,
21
- branch, and required capability hooks (an aweb identity) had been created,
22
- and those throws bypassed compensation, leaving a branch, a worktree, and
23
- remote state with no `instance.json` and no quarantine. The runtime binary,
24
- tmux (when launching), and the task input are now checked before any
25
- mutation, and one compensation path owns every failure after the spawn
26
- hooks: retire hooks run once, Git topology is removed and verified, a
27
- window that may have been created is stopped and verified before
28
- credentials are touched, and unresolvable cleanup retains the home with
29
- its receipt for a retryable `oats retire`. Six fault-injection tests cover
30
- the paths.
31
- - **The turn record's stream lock is ownership-safe and bounded.** A late
32
- contender could judge a live holder's lock stale by age and enter the same
33
- critical section, and the old holder then unlinked whatever lock was in
34
- place. The lock now carries an owner token; staleness is proven from the
35
- holder's liveness, with age only as the fallback for a foreign-host or
36
- tokenless lock; release removes only a lock the releaser owns; and every
37
- failed acquire iteration passes one deadline check, so an unreadable lock
38
- or a lock that cannot be removed fails with the underlying code and path
39
- instead of spinning forever. Known limit, documented: a pid reused after a
40
- reboot makes an abandoned lock read as held until an operator removes it.
41
- - **README claims match the implementation.** Native captured turns are
8
+ - **`oats create` in a fresh scope no longer crashes.** It bootstraps the
9
+ roster root at the enclosing repository and reports it (`agentsRoot` in
10
+ `--json`); the `mkdir agents` workaround is no longer needed.
11
+ - **Spawn preflights executables and compensates every failure.** The runtime
12
+ binary, tmux (when launching), and the task input are checked before any
13
+ mutation. After the spawn hooks, one compensation path runs retire hooks,
14
+ removes and verifies Git topology, stops any created window, and retains the
15
+ home with its receipt for a retryable `oats retire` when cleanup cannot
16
+ finish.
17
+ - **The turn record's stream lock is ownership-safe and bounded.** The lock
18
+ carries an owner token, staleness is judged from the holder's liveness, only
19
+ the owner releases it, and acquisition has a deadline. Known limit: a pid
20
+ reused after a reboot makes an abandoned lock read as held until an operator
21
+ removes it.
22
+ - **README claims match the implementation.** Captured turns are
42
23
  content-addressed, not signed; projected aweb mail and chat keep their
43
- original signatures; capture covers Claude Code, Pi, and Codex transcripts
44
- plus aw client logs on machines where `oats setup` ran, subject to the
45
- ignore list. The contracts document and the turn-record specification say
46
- the same.
47
- - **Bundled capabilities match their published tags.** The copies of the
48
- official packages bundled under `capabilities/` claimed the published
49
- version numbers but differed from the published payloads; the bundled
50
- `oats.okf` still imported kernel internals and shipped an older harvester
51
- layout. All six are now byte-identical to the tagged payloads (`oats.okf`
52
- 1.4.1, `oats.aweb` 1.8.0, `oats.jira` 1.0.0, `oats.linear` 1.0.0,
53
- `oats.authoring` 1.0.0, `oats.review` 1.2.0 from `oats.dev` 1.0.0). Two
54
- new tests guard it: no file under `capabilities/` may name kernel internals
55
- or shell out to `oats root`, and every bundled manifest must carry the
56
- version the catalog pins. The clean-room smoke asserts the same pin before
57
- wrapping the bundled package, so it now proves the released package and
58
- kernel combination. The bundled `oats.linear` README and test moved with
59
- their package.
24
+ original signatures.
25
+ - **Bundled capabilities match their published tags.** The bundled official
26
+ packages are byte-identical to the tagged payloads (`oats.okf` 1.4.1,
27
+ `oats.aweb` 1.8.0, `oats.jira` 1.0.0, `oats.linear` 1.0.0, `oats.authoring`
28
+ 1.0.0, `oats.review` 1.2.0 from `oats.dev` 1.0.0), and tests enforce the pin.
29
+ - A release with nothing to bump now finishes instead of failing.
60
30
 
61
31
  ## Documentation
62
32
 
63
- - **Run your first OATS team** (`docs/first-team.md`) is the tested path from
64
- install to a real task, harvest, retirement, and a successor, with the
65
- caveats the run met: the harvester runs in Pi even for Claude Code workers,
66
- a Claude Code spawn needs two interactive confirmations today, and a
67
- messaging layer entry that excludes a soul must state `global: true`.
68
- - **First-team example** (`docs/first-team-demo.md`) records what actually
69
- happened on 2026-09-05: two workers, two promotions, one successor that
70
- read its predecessor's promoted lesson.
71
- - **Migration from OAS** is rewritten from shipped state: the packages are
72
- published, the seven catalog aliases exist, and the OAS npm deprecation
73
- remains with its maintainer.
74
- - `docs/layers.md` is now the OATS contracts and `docs/integrations.md` the
75
- binding guide; `docs/2026-09-03-architecture-proposal.md` records the
76
- component model and the migration plan agreed with the framework's author.
77
-
78
- ## Known operating limits and issues, not fixed here
79
-
80
- - The qualified `oats.okf` 1.4.1 configuration runs its harvester in Pi, so
81
- a Pi-runnable model is required even for Claude Code workers.
82
- - A Claude Code worker's first launch can stop on Claude's folder-trust
83
- prompt and on the aweb channel plugin's development-channels
84
- confirmation; attach to the tmux session and answer them. A created
85
- window is not evidence that the agent has started.
86
- - Retiring an instance reports its aweb identity deleted while the server
87
- keeps the alias (aweb-aaum.6). Local cleanup is complete; the name cannot
88
- be reused until an administrator removes the alias. Use a fresh
89
- `--purpose` for successors.
90
- - The OKF harvester's default model assumes the `github-copilot` provider;
91
- set `harvest-model` under the knowledge layer settings to a model your Pi
92
- can run. A package change is proposed.
93
- - `oats spawn` resolves the roster root from the working directory, so from
94
- a workspace root pass `--dir <repo>` even though `oats status --team`
95
- lists the souls.
96
- - `oats status` lists the retirement-baselines directory as a phantom
97
- instance, retire leaves that baseline file behind, and `oats retire --json`
98
- prints a bare object rather than the schema-v1 envelope. Tracked; each
99
- changes a golden fixture deliberately.
33
+ - [Run your first OATS team](../first-team.md): the tested path from install
34
+ to a task, harvest, retirement, and a successor.
35
+ - [Migration from OAS](https://github.com/awebai/oats/blob/v0.22.1/docs/migration-from-oas.md)
36
+ is rewritten for the published packages and catalog aliases.
37
+
38
+ ## Known limits in this release
39
+
40
+ - The `oats.okf` 1.4.1 harvester runs in Pi, so a Pi-runnable model is needed
41
+ even for Claude Code workers; its default model assumes the `github-copilot`
42
+ provider, so set `harvest-model` to a model your Pi can run.
43
+ - A Claude Code worker's first launch can stop on the folder-trust prompt and
44
+ on the aweb channel plugin's confirmation; attach to the tmux session and
45
+ answer them.
46
+ - Retiring an instance leaves its aweb alias reserved on the server; use a
47
+ fresh `--purpose` for successors.
48
+ - From a workspace root, `oats spawn` needs `--dir <repo>`.
49
+ - `oats status` lists the retirement-baselines directory as an instance,
50
+ retire leaves that baseline file behind, and `oats retire --json` prints a
51
+ bare object rather than the schema-v1 envelope.
100
52
 
101
53
  ## Install
102
54
 
@@ -22,4 +22,4 @@ saved route on this machine still has its actions disabled with the same
22
22
  explanation.
23
23
 
24
24
  Nothing else changes: no kernel, session start, start dialog or record
25
- schema change. Tag v0.22.9 and everything it shipped stand.
25
+ schema change.
@@ -1,49 +1,3 @@
1
1
  # OATS v0.22.11
2
2
 
3
- Schedules: cron-driven agent work that runs on the execution host, from
4
- the CLI and from Desktop, including while the GUI is closed.
5
-
6
- ## Schedules (kernel)
7
-
8
- `oats schedule` keeps a per-workspace `oats-schedules.json` of jobs of three
9
- kinds: **spawn** launches a soul as a fresh disposable instance with a task,
10
- **command** runs an `oats` command in a directory (a harvest, for example),
11
- and **wake** starts a stopped instance if needed and sends it a message
12
- through its terminal. Cron expressions are five-field with an IANA time
13
- zone, evaluated by croner; missed minutes are skipped, never caught up.
14
-
15
- One host timer (`oats schedule host install`: a launchd agent or a systemd
16
- user timer) ticks every registered workspace once a minute under a shared
17
- limit on concurrent scheduled launches. A remote workspace's schedules live
18
- and run on that server; `--server` routes every subcommand there.
19
- `oats spawn --wake-file <json>` binds a wake schedule to the new home.
20
-
21
- Outcomes are what the kernel observed, not a claim that a task succeeded:
22
- launched, active, ended, stopped, launch-failed, delivered, started,
23
- skipped, and unknown. A launch whose effects the kernel cannot confirm (a
24
- timed-out or envelope-less command, an incomplete rollback) keeps its slot
25
- as unknown until `oats schedule reconcile <id>` adopts a named receipt or
26
- the operator clears it with `--clear`. A wake's launch slot follows the
27
- runtime through the session start receipt, so a persistent home whose
28
- process exited frees the slot. Locks are never reclaimed automatically;
29
- an unreadable or dead owner names the directory to remove.
30
- `oats version --json` advertises feature `schedule` and `scheduleApi: 1`.
31
- See docs/schedules.md.
32
-
33
- ## Schedules (Desktop)
34
-
35
- A **Schedules** view per workspace: create, edit, pause, run now, check run
36
- state and delete jobs through a single JSON spec; the Soul roster's
37
- **Schedule…** preselects the soul; the spawn dialog offers a recurring wake
38
- for the new agent, forwarded inline to a remote server. Mutations require
39
- an explicit workspace. The reconcile result and its recovery instructions
40
- stay visible across polling. **Enable host scheduler** installs the timer
41
- and registers the workspace. See docs/desktop.md.
42
-
43
- ## Tests
44
-
45
- The kernel adds `test/schedule.test.mjs` (fixture homes, injected
46
- spawn/start/input, dummy commands, fixture-only host unit paths) and
47
- `test/schedule-session.test.mjs`, which drives a real private tmux socket
48
- to prove literal delivery, same-minute deduplication and slot release when
49
- a runtime stops. Nothing in the suites touches a live timer.
3
+ Tagged, not published; its changes shipped in v0.22.12.
@@ -1,8 +1,7 @@
1
1
  # OATS v0.22.12
2
2
 
3
- The same reviewed content as the unpublished v0.22.11 tag, whose hosted
4
- run failed in test fixtures before anything was published; those fixtures
5
- are fixed here.
3
+ Ships the content of the unpublished v0.22.11 tag, with its failing test
4
+ fixtures fixed.
6
5
 
7
6
  Schedules: cron-driven agent work that runs on the execution host, from
8
7
  the CLI and from Desktop, including while the GUI is closed.
@@ -32,7 +31,7 @@ runtime through the session start receipt, so a persistent home whose
32
31
  process exited frees the slot. Locks are never reclaimed automatically;
33
32
  an unreadable or dead owner names the directory to remove.
34
33
  `oats version --json` advertises feature `schedule` and `scheduleApi: 1`.
35
- See docs/schedules.md.
34
+ See [Schedules](../schedules.md).
36
35
 
37
36
  ## Schedules (Desktop)
38
37
 
@@ -42,12 +41,4 @@ state and delete jobs through a single JSON spec; the Soul roster's
42
41
  for the new agent, forwarded inline to a remote server. Mutations require
43
42
  an explicit workspace. The reconcile result and its recovery instructions
44
43
  stay visible across polling. **Enable host scheduler** installs the timer
45
- and registers the workspace. See docs/desktop.md.
46
-
47
- ## Tests
48
-
49
- The kernel adds `test/schedule.test.mjs` (fixture homes, injected
50
- spawn/start/input, dummy commands, fixture-only host unit paths) and
51
- `test/schedule-session.test.mjs`, which drives a real private tmux socket
52
- to prove literal delivery, same-minute deduplication and slot release when
53
- a runtime stops. Nothing in the suites touches a live timer.
44
+ and registers the workspace. See [the Desktop guide](../desktop.md).
@@ -1,44 +1,3 @@
1
1
  # OATS v0.22.13
2
2
 
3
- Terminal essentials for the Desktop and one kernel operation behind them:
4
- attachments reach the agent as a path, never as typed input.
5
-
6
- ## Attachments (kernel)
7
-
8
- `oats session upload --file <local> --home <abs>` copies a file into the
9
- instance home's private `.oats-attachments/` directory (0700, file 0600,
10
- `name-2` when the name is taken) and answers `{path, bytes, sha256}`. With
11
- `--server <id> --instance <name>` (or `--home`), the same saved route as
12
- `session attach` is resolved, the remote must advertise the new
13
- `session-upload` feature, and the bytes travel on ssh stdin into
14
- `oats session receive --home <abs> --name <file>` on the execution host,
15
- which reads stdin event-driven, enforces the 64 MiB kernel bound before
16
- writing anything, allocates the destination exclusively so simultaneous
17
- uploads never overwrite each other, refuses a symlinked or redirected
18
- attachments directory, and reports the path only after the bytes are
19
- synced. The local side refuses the answer unless size and sha256 equal the
20
- local file's. Each side buffers the whole file up to the bound; a remote
21
- file is never a local path over SSH. Upload never sends terminal input.
22
- `oats version --json` lists `session-upload` in `remote` and `features`.
23
- The CLI's temporary tmux viewer session hides its status line; the agents'
24
- session and the operator's tmux settings are untouched.
25
-
26
- ## Desktop
27
-
28
- Drop files or paste clipboard images onto an agent terminal: the paths are
29
- inserted into the draft with bracketed paste and no Enter, local files in
30
- place, clipboard images saved privately under the app's data directory, and
31
- remote terminals uploaded through the installed CLI first (both CLIs must
32
- advertise `session-upload`; a failed transfer leaves the draft unchanged and
33
- never inserts a local path). Up to 16 files and 25 MB per drop. The viewer's
34
- tmux status bar is hidden. Ctrl+Tab stays tab navigation inside terminals
35
- on macOS while other Ctrl chords stay with the program. An already-open
36
- terminal fills an empty split without a second attach; separators resize by
37
- pointer or keyboard. Guide: docs/desktop.md, "Attach files and screenshots".
38
-
39
- ## Design
40
-
41
- docs/design/2026-09-07-architecture-reassessment.md records the direction:
42
- keep the package and capability-layer machinery, fix the places where the
43
- CLI and GUI bypass it, one session contract with both tmux and Herdr
44
- adapters until Herdr is qualified, and the Desktop correction sequence.
3
+ Tagged, not published; its changes shipped in v0.22.14.
@@ -1,8 +1,7 @@
1
1
  # OATS v0.22.14
2
2
 
3
- The same reviewed content as the unpublished v0.22.13 tag, whose hosted
4
- run failed in one Desktop test pin before anything was published; the
5
- test now checks the behaviour instead of the source text.
3
+ Ships the content of the unpublished v0.22.13 tag, with its failing Desktop
4
+ test fixed.
6
5
 
7
6
  Terminal essentials for the Desktop and one kernel operation behind them:
8
7
  attachments reach the agent as a path, never as typed input.
@@ -38,11 +37,4 @@ never inserts a local path). Up to 16 files and 25 MB per drop. The viewer's
38
37
  tmux status bar is hidden. Ctrl+Tab stays tab navigation inside terminals
39
38
  on macOS while other Ctrl chords stay with the program. An already-open
40
39
  terminal fills an empty split without a second attach; separators resize by
41
- pointer or keyboard. Guide: docs/desktop.md, "Attach files and screenshots".
42
-
43
- ## Design
44
-
45
- docs/design/2026-09-07-architecture-reassessment.md records the direction:
46
- keep the package and capability-layer machinery, fix the places where the
47
- CLI and GUI bypass it, one session contract with both tmux and Herdr
48
- adapters until Herdr is qualified, and the Desktop correction sequence.
40
+ pointer or keyboard. See [Attach files and screenshots](../desktop.md#attach-files-and-screenshots).
@@ -1,48 +1,3 @@
1
1
  # OATS v0.22.15
2
2
 
3
- Souls and capabilities become something you inspect and manage, through
4
- one kernel contract, and knowledge providers declare what they can do.
5
-
6
- ## Provider operations and inspection (kernel)
7
-
8
- `oats inspect --json` answers everything a GUI needs in one envelope for a
9
- scope, a selected soul or a running home: souls with runtime defaults,
10
- editability and instructions; installed capabilities with health from the
11
- package engine, separately from their effective activation, provenance and
12
- settings; effective layer bindings; and the operations each provider
13
- declares, with availability and the reason when unavailable. For a home the
14
- answer is its captured bindings (with current manifests and trust), the live
15
- config beside it, and the drift between them. Same-named souls in member
16
- repositories are addressed by name plus agents root; a home selects its own
17
- soul under its own root.
18
-
19
- `oats operation run <layer>:<name>` resolves the provider that fills a layer
20
- for a home or a soul, checks declaration, trust and host requirements, runs
21
- the provider's own command in the right place with the right identity, and
22
- relays its receipt; a view answers labeled documents. Unconfirmed outcomes
23
- carry what was observed and a scheduled operation keeps its slot until
24
- reconciled. Manifests declare `operations`. Schedules gain kind
25
- `operation`. `oats use --json` answers receipts and `--inherit` returns a
26
- level to inheritance; `oats soul set` edits an editable soul's defaults and
27
- instructions in place. All four route to a registered server through the
28
- saved route; the probe advertises `operations` and `operationsApi: 1`. The
29
- retire receipt no longer implies a harvest. See
30
- docs/design/operations-contract.md.
31
-
32
- ## oats.okf 1.6.0
33
-
34
- The official knowledge provider declares `inspect` (a view of STATE.md,
35
- log.md and pending notes) and `harvest` (the existing action); the catalog
36
- pins v1.6.0. Existing scopes keep their locked 1.5.2 until their owners
37
- update them; the GUI then shows no operations for those providers, which is
38
- the truthful state.
39
-
40
- ## Desktop
41
-
42
- Souls & capabilities replaces the launch-centric roster: select a soul to
43
- inspect it, Launch and Schedule are explicit, defaults and instructions are
44
- editable where the kernel says so, installed capabilities are shown apart
45
- from activation with enable, disable and inherit at an exact scope, an
46
- instance's menu opens Knowledge & capabilities, provider views render as
47
- text, and schedules run declared provider operations. See
48
- docs/design/2026-09-07-desktop-souls-capabilities.md.
3
+ Tagged, not published; its changes shipped in v0.22.16.
@@ -1,9 +1,7 @@
1
1
  # OATS v0.22.16
2
2
 
3
- The same reviewed content as the unpublished v0.22.15 tag, whose hosted
4
- run failed in frozen test data (retirement goldens still carrying the
5
- removed `harvested` field, and a Desktop harvest fixture predating the
6
- operations gate) before anything was published; only tests changed.
3
+ Ships the content of the unpublished v0.22.15 tag, with its failing test
4
+ data fixed.
7
5
 
8
6
  Souls and capabilities become something you inspect and manage, through
9
7
  one kernel contract, and knowledge providers declare what they can do.
@@ -31,8 +29,8 @@ reconciled. Manifests declare `operations`. Schedules gain kind
31
29
  level to inheritance; `oats soul set` edits an editable soul's defaults and
32
30
  instructions in place. All four route to a registered server through the
33
31
  saved route; the probe advertises `operations` and `operationsApi: 1`. The
34
- retire receipt no longer implies a harvest. See
35
- docs/design/operations-contract.md.
32
+ retire receipt no longer implies a harvest. See the
33
+ [operations contract](https://github.com/awebai/oats/blob/7838d3ca70772f63854b198601fbc45437c2e999/docs/design/operations-contract.md).
36
34
 
37
35
  ## oats.okf 1.6.0
38
36
 
@@ -49,5 +47,5 @@ inspect it, Launch and Schedule are explicit, defaults and instructions are
49
47
  editable where the kernel says so, installed capabilities are shown apart
50
48
  from activation with enable, disable and inherit at an exact scope, an
51
49
  instance's menu opens Knowledge & capabilities, provider views render as
52
- text, and schedules run declared provider operations. See
53
- docs/design/2026-09-07-desktop-souls-capabilities.md.
50
+ text, and schedules run declared provider operations. See the
51
+ [design note](https://github.com/awebai/oats/blob/7838d3ca70772f63854b198601fbc45437c2e999/docs/design/2026-09-07-desktop-souls-capabilities.md).
@@ -1,101 +1,3 @@
1
1
  # OATS v0.22.18
2
2
 
3
- Choose how an agent runs without replacing its home. Desktop offers
4
- **Start…** for stopped instances and **Restart with…** for running
5
- instances, with harness, model, permissions and named launch
6
- configurations. The kernel records what each home was started with and
7
- starts it again the same way.
8
-
9
- ## Named launch configurations
10
-
11
- Define a reusable configuration in a scope's `oats-config.yaml`, or use
12
- **Manage launch configurations** in Desktop. A configuration chooses `pi`,
13
- `claude` or `codex`, an optional executable or wrapper, literal arguments,
14
- environment values or references, a default model and the shared `yolo`
15
- setting.
16
-
17
- ```yaml
18
- launch-configs:
19
- codex-personal:
20
- runtime: codex
21
- args: ["--profile", "personal"]
22
- yolo: true
23
- ```
24
-
25
- Arguments are passed literally; native configuration files and account
26
- settings stay under the harness's control. For environment credentials use
27
- a reference such as `API_KEY: {fromEnv: PERSONAL_KEY}`: the execution host
28
- resolves it each time the agent starts. The recorded recipe, receipts,
29
- previews, roster answers and spawn answers do not expose the value (the
30
- launch itself and its transport necessarily use it). A configuration cannot name the kernel's own launch
31
- environment or override environment a capability owns.
32
-
33
- An existing instance keeps its recorded launch configuration even if the
34
- scope's definition changes or disappears. Select a named configuration
35
- explicitly to apply its current definition. Changing only the model or
36
- permissions keeps the rest of the recorded invocation; choosing a harness
37
- without a configuration starts that harness's defaults, with no model
38
- carried across harnesses.
39
-
40
- `oats launch-config list | set | remove | preview` author and inspect
41
- configurations; `oats spawn --launch-config` starts a new instance under
42
- one; a soul may name a default (`launch-config:` in soul.yaml,
43
- `oats soul set --launch-config`).
44
-
45
- ## Restart in place
46
-
47
- `oats session start` with a selection validates the requested launch
48
- (recipe, executable, references, capability preparation, runtime packages)
49
- and starts a stopped instance; it never stops a running harness. Only
50
- `oats session restart` does: it runs the same checks first, then sends
51
- SIGTERM to the harness under the pane's launcher and waits a bounded time
52
- for it to end; it does not escalate to a forced kill and refuses to launch
53
- a second harness if it cannot confirm the first has stopped, reporting what
54
- was signalled and observed. The instance keeps its home, identity, work and
55
- notes; OATS does not transfer a native conversation between harnesses.
56
- Save work before restarting.
57
-
58
- Capabilities take part through what was captured for the home: a capability
59
- may declare a `launch` hook to prepare another harness (under the settings
60
- captured at spawn, with the scope's current manifest and trust); a
61
- capability that contributed harness-specific arguments and cannot prepare
62
- the new one refuses the switch. Homes that predate launch recipes are
63
- converted narrowly from their recorded command when a selection asks for
64
- it; unrecognized arguments are refused by name.
65
-
66
- One limitation, stated rather than hidden: a runtime-package requirement is
67
- verified with the package manager's controlled list command under the
68
- launch's environment and executable, which cannot carry a configuration's
69
- arguments. When such a requirement applies and the configuration passes
70
- arguments, the launch is not reported verified (`E_LAUNCH_PROBE_UNSUPPORTED`):
71
- put native configuration a required package must see in a wrapper
72
- executable or the environment.
73
-
74
- ```sh
75
- oats launch-config list --dir /path/to/team
76
- oats launch-config preview --home /path/to/instance --runtime codex --json
77
- oats session restart --home /path/to/instance --launch-config codex-personal
78
- ```
79
-
80
- Local tmux and Herdr sessions use the same lifecycle operations. Registered
81
- servers support configuration management and start/restart choices through
82
- their installed OATS CLI (probe tokens `launch-config`, `session-restart`);
83
- existing remote homes keep their saved route, and an older kernel is
84
- refused after the compatibility probe, before any mutation or stop.
85
-
86
- ## Desktop fixes
87
-
88
- Tabs from other workspaces stay hidden. Instance action menus are positioned
89
- correctly when opened and remain stable through roster refreshes. Failed
90
- launch preflight checks are shown in the invocation preview, and an accepted
91
- launch is not presented as a running agent until the terminal is observed.
92
-
93
- ## Also in this release
94
-
95
- - Capture lock (source only; the installed capture service is unchanged):
96
- nonce-checked ownership, cleanup of a failed initialization that respects
97
- a replacement, release outcomes reported as observed, and the privacy
98
- loader's exit no longer leaves a lock behind.
99
- - A design proposal for managing agents from an iPhone over Tailscale
100
- (docs/design/2026-09-07-mobile-agent-management-proposal.md); no
101
- implementation ships.
3
+ Tagged, not published; its changes shipped in v0.22.19.
@@ -1,12 +1,7 @@
1
1
  # OATS v0.22.19
2
2
 
3
- Version 0.22.18 was tagged but never published: its hosted gate failed on
4
- four tests that pass on macOS and fail on Linux (two launch tests calling
5
- the kernel directly resolved the real harness binary on the test process
6
- PATH, one launch test spawned zsh, which the runner does not install, and
7
- one capture-lock test where Linux reused the inode of an unlinked
8
- directory). The tag stays fixed and unpublished. This release carries the
9
- same content with the corrections below.
3
+ Ships the content of the unpublished v0.22.18 tag, with fixes for tests that
4
+ failed on Linux.
10
5
 
11
6
  Choose how an agent runs without replacing its home. Desktop offers
12
7
  **Start…** for stopped instances and **Restart with…** for running
@@ -71,7 +66,7 @@ the new one refuses the switch. Homes that predate launch recipes are
71
66
  converted narrowly from their recorded command when a selection asks for
72
67
  it; unrecognized arguments are refused by name.
73
68
 
74
- One limitation, stated rather than hidden: a runtime-package requirement is
69
+ Known limit: a runtime-package requirement is
75
70
  verified with the package manager's controlled list command under the
76
71
  launch's environment and executable, which cannot carry a configuration's
77
72
  arguments. When such a requirement applies and the configuration passes
@@ -107,9 +102,3 @@ launch is not presented as a running agent until the terminal is observed.
107
102
  is held open until its owner record is written or its cleanup finishes,
108
103
  preventing its inode from being reused during cleanup; a replacement
109
104
  directory is left alone.
110
- - Test fixtures: the launch tests resolve their fake harness binaries on the
111
- test process PATH and exercise only the shells the host installs; no
112
- kernel change.
113
- - A design proposal for managing agents from an iPhone over Tailscale
114
- (docs/design/2026-09-07-mobile-agent-management-proposal.md); no
115
- implementation ships.
@@ -30,14 +30,9 @@ Register an existing SSH host with `oats server add`, then use `--server`
30
30
  on spawn, status, retire and session inspect/attach. Saved routes keep
31
31
  retirement and attachment available if a registration changes. SSH retains
32
32
  responsibility for keys and host verification. Desktop includes a server
33
- selector and the remote terminal adapter; remote roster projection remains
34
- a follow-up, so use the CLI to attach to a remote instance in this release.
35
-
36
- Live checks covered native Codex launch and subsequent terminal input on
37
- both local backends. A real remote Claude session accepted input through
38
- the Desktop terminal helper, survived viewer closure, and ended its viewer
39
- on retirement. Herdr roster checks include public IDs beyond the ninth
40
- workspace. These checks do not establish reboot recovery.
33
+ selector and the remote terminal adapter; it does not show remote rosters in
34
+ this release, so use the CLI to attach to a remote instance. Recovery after a
35
+ host reboot is not supported.
41
36
 
42
37
  ## Learning and retirement
43
38
 
@@ -56,14 +51,10 @@ as instances. Retiring an instance whose work tree is large no longer fails with
56
51
  now runs with a buffer far above Node's 1 MiB default (found on a real
57
52
  ~9,500-file tree).
58
53
 
59
- ## Package versions and remaining work
54
+ ## Package versions and known limits
60
55
 
61
56
  The catalog pins `oats.okf` v1.5.0 and `oats.aweb` v1.9.0. The latter updates
62
57
  native Codex's messaging instructions; its Pi and Claude channel delivery
63
58
  is unchanged. Native Codex has no automatic aweb delivery in this release.
64
-
65
- The aweb host wake broker, session-delivery capability glue, retained-identity
66
- handover and supported standing-seat reboot recovery are still being
67
- completed. Hosted temporary aliases also remain non-reusable until aweb's
68
- certificate-retirement fix ships; use fresh purpose names. A configured
69
- team or successful spawn does not mean its standing agents have migrated.
59
+ Hosted temporary aliases are not reusable after retirement; use fresh purpose
60
+ names.
@@ -73,7 +73,6 @@ reusable yet.
73
73
  `features` list carries `retire-home`.
74
74
  - `oats retire --json` keeps stdout to the envelope (the cross-repo note goes
75
75
  to stderr).
76
- - Goldens carry `environmentNamespaces` in the resolved capability projection.
77
76
  - Viewers for remote instances resolve by home: `session inspect|attach
78
77
  --server <id> --home <remote home>` uses the saved route that owns the home
79
78
  and refuses a name paired with a different one.
@@ -1,7 +1,7 @@
1
1
  # OATS v0.22.4
2
2
 
3
3
  Two fixes found by running the wake broker and the record-fed harvester as
4
- real host services, the oats.aweb 1.10.1 floor, and the managed lead soul.
4
+ host services, and the oats.aweb 1.10.1 floor.
5
5
 
6
6
  ## Session commands under a service locale
7
7
 
@@ -25,16 +25,3 @@ Session-mode delivery now requires an installed Claude Code channel plugin
25
25
  to be `aweb-channel` 1.7.9 or later (as it already required `@awebai/pi`
26
26
  0.3.10): an older plugin starts its own channel server beside the wake
27
27
  broker and can fetch a message before the broker delivers it.
28
-
29
- ## Managed operating-lead soul
30
-
31
- `agents/lead/soul` is tracked: the operating lead's role instructions and
32
- two knowledge notes (runtime and messaging ownership; where rollout state
33
- lives), ready for a retained-identity binding at its cutover.
34
-
35
- ## Also
36
-
37
- - `docs/operating-team-migration.md` records the published 0.22.3 rollout and
38
- the live wake-broker acceptance on Claude, Codex and Pi.
39
- - oats.okf 1.5.1 (harvest-runtime, promotion exclusions, replan detector) is
40
- not in this release; it ships when its independent review completes.
@@ -1,8 +1,7 @@
1
1
  # OATS v0.22.5
2
2
 
3
- A small release: the knowledge package 1.5.1 pin, a way to move a pinned
4
- package lock from the CLI, and the operating records from the first team
5
- rollouts.
3
+ A small release: the knowledge package 1.5.1 pin and a way to move a pinned
4
+ package lock from the CLI.
6
5
 
7
6
  ## Bundled: oats.okf 1.5.1
8
7
 
@@ -25,12 +24,3 @@ invalidated, then `oats trust`). A plain `oats update <package>` keeps an
25
24
  explicit selector, as before, and `--to` without a package is refused rather
26
25
  than falling through to the kernel self-update (`oats update` with no
27
26
  package).
28
-
29
- ## Also
30
-
31
- - The managed oats coordinator soul (`agents/oats-coordinator/soul`) is
32
- tracked, with playbooks for the release lane, payload publication and
33
- review routing.
34
- - `docs/operating-team-migration.md` records the installed 0.22.4 rollout,
35
- the completed record-fed and note-fed harvest cycles, and the standing
36
- seats prepared for cutover.
@@ -48,6 +48,3 @@ leaving a bound alias behind, retirement reads the alias from the home's
48
48
  ## Also
49
49
 
50
50
  - `oats use` from no binding writes a targeted binding with `global: false`.
51
- - `docs/operating-team-migration.md` records the live rollout, the memory
52
- incident and its mitigation, the serial launch constraint and the TSM
53
- deployment hold.