@awebai/oats 0.29.4 → 0.30.1

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 (263) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +194 -50
  3. package/docs/capabilities.md +160 -171
  4. package/docs/capability-manifest.schema.json +6 -11
  5. package/docs/configuration.md +213 -64
  6. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  7. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  8. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  9. package/docs/design/2026-09-27-team-model-v2.md +97 -117
  10. package/docs/design/2026-09-28-automations-trust.md +38 -0
  11. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  12. package/docs/design/HISTORY.md +65 -0
  13. package/docs/design/README.md +23 -54
  14. package/docs/desktop-cli-api.md +1787 -1777
  15. package/docs/desktop.md +30 -91
  16. package/docs/execution-targets.md +146 -292
  17. package/docs/first-team.md +31 -17
  18. package/docs/implementation.md +77 -288
  19. package/docs/integrations.md +118 -320
  20. package/docs/knowledge-capability-authoring.md +25 -52
  21. package/docs/knowledge-reference/acceptance.md +3 -3
  22. package/docs/knowledge-reference/adoption.md +1 -1
  23. package/docs/knowledge-reference/harvester.md +2 -2
  24. package/docs/knowledge-reference/package-craft.md +3 -3
  25. package/docs/knowledge-reference/provider-mapping.md +3 -6
  26. package/docs/knowledge-reference/reader-capture.md +3 -3
  27. package/docs/knowledge-theory.md +62 -166
  28. package/docs/knowledge.md +225 -404
  29. package/docs/layers.md +42 -97
  30. package/docs/oats-local.schema.json +58 -5
  31. package/docs/oats-membership.schema.json +1 -8
  32. package/docs/oats-package.schema.json +5 -5
  33. package/docs/oats-workspace.schema.json +8 -22
  34. package/docs/official-catalog.md +25 -28
  35. package/docs/packages.md +45 -63
  36. package/docs/plans/0.30-close-out.md +83 -0
  37. package/docs/release-lane.md +82 -0
  38. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  39. package/docs/release-notes/v0.19.0.md +48 -147
  40. package/docs/release-notes/v0.19.1.md +2 -3
  41. package/docs/release-notes/v0.19.3.md +2 -15
  42. package/docs/release-notes/v0.20.0.md +0 -15
  43. package/docs/release-notes/v0.22.0.md +71 -138
  44. package/docs/release-notes/v0.22.1.md +42 -90
  45. package/docs/release-notes/v0.22.10.md +1 -1
  46. package/docs/release-notes/v0.22.11.md +1 -47
  47. package/docs/release-notes/v0.22.12.md +4 -13
  48. package/docs/release-notes/v0.22.13.md +1 -42
  49. package/docs/release-notes/v0.22.14.md +3 -11
  50. package/docs/release-notes/v0.22.15.md +1 -46
  51. package/docs/release-notes/v0.22.16.md +6 -8
  52. package/docs/release-notes/v0.22.18.md +1 -99
  53. package/docs/release-notes/v0.22.19.md +3 -14
  54. package/docs/release-notes/v0.22.2.md +6 -15
  55. package/docs/release-notes/v0.22.3.md +0 -1
  56. package/docs/release-notes/v0.22.4.md +1 -14
  57. package/docs/release-notes/v0.22.5.md +2 -12
  58. package/docs/release-notes/v0.22.6.md +0 -3
  59. package/docs/release-notes/v0.23.0.md +9 -25
  60. package/docs/release-notes/v0.23.1.md +9 -25
  61. package/docs/release-notes/v0.23.2.md +2 -4
  62. package/docs/release-notes/v0.24.0.md +56 -97
  63. package/docs/release-notes/v0.24.1.md +7 -11
  64. package/docs/release-notes/v0.24.10.md +34 -45
  65. package/docs/release-notes/v0.24.11.md +12 -20
  66. package/docs/release-notes/v0.24.12.md +35 -48
  67. package/docs/release-notes/v0.24.13.md +34 -41
  68. package/docs/release-notes/v0.24.2.md +9 -13
  69. package/docs/release-notes/v0.24.3.md +7 -11
  70. package/docs/release-notes/v0.24.4.md +6 -6
  71. package/docs/release-notes/v0.24.5.md +6 -10
  72. package/docs/release-notes/v0.24.6.md +2 -5
  73. package/docs/release-notes/v0.24.7.md +46 -75
  74. package/docs/release-notes/v0.24.8.md +58 -96
  75. package/docs/release-notes/v0.24.9.md +38 -54
  76. package/docs/release-notes/v0.25.0.md +59 -76
  77. package/docs/release-notes/v0.25.1.md +57 -81
  78. package/docs/release-notes/v0.25.2.md +51 -70
  79. package/docs/release-notes/v0.25.3.md +11 -13
  80. package/docs/release-notes/v0.25.4.md +9 -13
  81. package/docs/release-notes/v0.25.5.md +3 -5
  82. package/docs/release-notes/v0.25.6.md +20 -29
  83. package/docs/release-notes/v0.25.7.md +5 -7
  84. package/docs/release-notes/v0.25.8.md +26 -39
  85. package/docs/release-notes/v0.26.0.md +175 -646
  86. package/docs/release-notes/v0.27.0.md +4 -5
  87. package/docs/release-notes/v0.27.1.md +4 -6
  88. package/docs/release-notes/v0.27.2.md +1 -1
  89. package/docs/release-notes/v0.28.0.md +57 -124
  90. package/docs/release-notes/v0.29.0.md +89 -208
  91. package/docs/release-notes/v0.29.1.md +1 -1
  92. package/docs/release-notes/v0.29.2.md +3 -4
  93. package/docs/release-notes/v0.30.0.md +205 -0
  94. package/docs/release-notes/v0.30.1.md +123 -0
  95. package/docs/schedules.md +280 -363
  96. package/docs/servers.md +99 -117
  97. package/docs/soul.schema.json +2 -9
  98. package/docs/souls-and-instances.md +145 -158
  99. package/docs/workspaces.md +137 -215
  100. package/lib/automations.mjs +21 -6
  101. package/lib/core.mjs +226 -74
  102. package/lib/instance-events.mjs +1 -1
  103. package/lib/instance-inspect.mjs +109 -34
  104. package/lib/instance-lifecycle.mjs +14 -1
  105. package/lib/instance-resolution.mjs +26 -27
  106. package/lib/launch-preference.mjs +87 -0
  107. package/lib/materialize.mjs +3 -3
  108. package/lib/packages.mjs +1 -1
  109. package/lib/resolve.mjs +30 -88
  110. package/lib/schedule.mjs +1 -1
  111. package/lib/teams-verbs.mjs +195 -0
  112. package/lib/teams.mjs +190 -0
  113. package/lib/triggers.mjs +2 -2
  114. package/lib/workspace.mjs +54 -147
  115. package/package-catalog.json +10 -16
  116. package/package.json +1 -3
  117. package/skills/oats-getting-started/SKILL.md +25 -13
  118. package/capabilities/oats-authoring/LICENSE +0 -21
  119. package/capabilities/oats-authoring/oats-package.json +0 -11
  120. package/capabilities/oats-authoring/oats.json +0 -12
  121. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
  122. package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
  123. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
  124. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
  125. package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
  126. package/capabilities/oats-aweb/injects/aweb.md +0 -47
  127. package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
  128. package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
  129. package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
  130. package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
  131. package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
  132. package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
  133. package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
  134. package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
  135. package/capabilities/oats-aweb/oats.json +0 -208
  136. package/capabilities/oats-aweb/skills/LICENSE +0 -21
  137. package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
  138. package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
  139. package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
  140. package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
  141. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
  142. package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
  143. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
  144. package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
  145. package/capabilities/oats-jira/injects/jira.md +0 -10
  146. package/capabilities/oats-jira/oats.json +0 -22
  147. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
  148. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
  149. package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
  150. package/capabilities/oats-linear/injects/linear.md +0 -8
  151. package/capabilities/oats-linear/oats.json +0 -24
  152. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
  153. package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
  154. package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
  155. package/capabilities/oats-okf/injects/okf.md +0 -42
  156. package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
  157. package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
  158. package/capabilities/oats-okf/lib/config.mjs +0 -124
  159. package/capabilities/oats-okf/lib/consult.mjs +0 -518
  160. package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
  161. package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
  162. package/capabilities/oats-okf/lib/inspection.mjs +0 -119
  163. package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
  164. package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
  165. package/capabilities/oats-okf/lib/io.mjs +0 -118
  166. package/capabilities/oats-okf/lib/migration.mjs +0 -137
  167. package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
  168. package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
  169. package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
  170. package/capabilities/oats-okf/lib/sources.mjs +0 -424
  171. package/capabilities/oats-okf/lib/stores.mjs +0 -473
  172. package/capabilities/oats-okf/lib/worker.mjs +0 -497
  173. package/capabilities/oats-okf/oats.json +0 -148
  174. package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
  175. package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
  176. package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
  177. package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
  178. package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
  179. package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
  180. package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
  181. package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
  182. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
  183. package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
  184. package/capabilities/oats-okf-harvest/oats.json +0 -26
  185. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
  186. package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
  187. package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
  188. package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  189. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
  190. package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
  191. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
  192. package/capabilities/oats-okf-maintenance/oats.json +0 -21
  193. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
  194. package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
  195. package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
  196. package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  197. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
  198. package/capabilities/oats-review/injects/review.md +0 -69
  199. package/capabilities/oats-review/oats.json +0 -10
  200. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  201. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  202. package/docs/conventions.md +0 -90
  203. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  204. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  205. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  206. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  207. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  208. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  209. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  210. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  211. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  212. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  213. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  214. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  215. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  216. package/docs/design/2026-09-15-package-preparation.md +0 -100
  217. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  218. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  219. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  220. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  221. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  222. package/docs/design/2026-09-15-source-observation.md +0 -119
  223. package/docs/design/2026-09-16-captured-admission.md +0 -77
  224. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  225. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  226. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  227. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  228. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  229. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  230. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  231. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  232. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  233. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  234. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  235. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  236. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  237. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  238. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  239. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  240. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  241. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  242. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  243. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  244. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  245. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  246. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  247. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  248. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  249. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  250. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  251. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  252. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  253. package/docs/design/2026-09-25-teams-contract.md +0 -258
  254. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  255. package/docs/design/desktop-ux-plan.md +0 -362
  256. package/docs/design/launch-configurations.md +0 -168
  257. package/docs/design/okf-mirror-provenance.md +0 -105
  258. package/docs/design/operations-contract.md +0 -141
  259. package/docs/oats-member.schema.json +0 -38
  260. package/skills/integration-authoring/SKILL.md +0 -84
  261. package/skills/oats-support/SKILL.md +0 -79
  262. package/skills/skill-craft/SKILL.md +0 -109
  263. package/skills/soul-craft/SKILL.md +0 -116
@@ -24,16 +24,15 @@ bundled `capabilities/oats-aweb` is the tag's tree.
24
24
  - **An agent playbook.** The new `oats-aweb` skill carries the playbook, and
25
25
  the inject is shorter and points to it. `oats aweb roster --label <label>`
26
26
  is new.
27
- - **Deferred to 1.16: per-workspace personal-team enrollment.** It needs a
28
- per-deployment login and a recorded owner. 1.15 makes no `aw auth` or
27
+ - **No per-workspace personal-team enrollment.** 1.15 makes no `aw auth` or
29
28
  `aw team ensure` call, and the primary team resolves as in 1.14.2. A
30
29
  host-set `settings.oats.aweb.roots.personal` is ignored with the readiness
31
30
  warning `personal-root-deferred`.
32
31
 
33
32
  ## Desktop
34
33
 
35
- - **Line counts on the Changes rows** (#245, #246). The server passes kernel
36
- #238's per-file counts through, and each W6 Changes row ends with "+84 −3",
34
+ - **Line counts on the Changes rows** (#245, #246). The server passes the kernel's
35
+ per-file counts (#238) through, and each Git & GitHub Changes row ends with "+84 −3",
37
36
  or "binary". An unknown count (untracked, submodule) and older kernels show
38
37
  nothing, never "+0".
39
38
  - **The Git & GitHub tab counts unresolved review threads** (#247). The tab and
@@ -0,0 +1,205 @@
1
+ # OATS 0.30.0
2
+
3
+ ## Upgrade
4
+
5
+ > **BREAKING: 0.30.0, oats.aweb 1.17 and oats.framework 1.4.0 move in
6
+ > lockstep.** oats.aweb 1.17 and oats.core / oats.setup 2.2.0 require
7
+ > `oats >=0.30.0` (`E_CAPABILITY_INCOMPATIBLE` on an older kernel), and 0.30
8
+ > refuses the 0.29 team keys.
9
+
10
+ **The workspace** (by PR). 0.30 refuses these keys with `E_WORKSPACE_SCHEMA`
11
+ (reason `removed-key`, naming the replacement): `messaging.byTeam`,
12
+ `defaults.byTeam`, `external[].team`, `soul.yaml` `team:` and
13
+ `oats-membership.yaml` `team`. 0.29.4 accepts their removal, so remove them
14
+ first. Then move the pins to `oats.framework: v1.4.0`, `oats.aweb: v1.17.1`,
15
+ `oats.okf: v4.0.4`, and replace `oats.dev` with `oats.engineering: v1.1.0`.
16
+
17
+ **Each deployment:**
18
+
19
+ 1. **Upgrade the CLI**: the npm package `@awebai/oats`, the pi adapter and the
20
+ Desktop, all 0.30.0. Then run `oats sync`.
21
+ 2. **Remove `settings.oats.aweb.team`** from `oats-local.yaml`: teams are
22
+ now `oats teams` and `oats soul teams`, and oats.aweb 1.17 refuses the
23
+ setting.
24
+ 3. **Run setup** from the deployment: `oats aweb setup --soul <soul>`, with
25
+ any soul that has messaging. Plain `oats aweb setup` outside an instance
26
+ home is refused. With an existing messaging root, setup names the team the
27
+ root is in: record it with `oats teams add <label> --team <id>` (the first
28
+ team becomes `defaultTeam`). With no account:
29
+ `oats aweb setup --soul <soul> --username <u>`.
30
+ 4. **Join the teams you share**: ask the owner for an invite, then
31
+ `oats aweb setup --soul <soul> --join <label> --invite <token>
32
+ [--service <url>] [--name <alias>]`. A half-finished join resumes with
33
+ `--join <label> --service <url>` and no new invite. Until the flag day,
34
+ declare the team here as a local team: `oats teams add <label> --team <id>`.
35
+ 5. **Put souls in teams here**, in place of the removed `team:`:
36
+ `oats soul teams '*' --add <label>` or `oats soul teams <soul> --add <label>`.
37
+ 6. **Trust the workspace automations this host runs** (a host that runs
38
+ workspace triggers or schedules): add them to `oats-local.yaml`
39
+ `automations.trust` (`<member>/<id>` entries, or `"*"`). Until then they
40
+ do not run; `oats workspace status` names each missing line.
41
+ 7. **Check**: `oats teams`, and `oats readiness --soul <soul>` shows no team
42
+ problem in `checks.configured`.
43
+
44
+ **The flag day.** Commit a shared team's id in `oats-workspace.yaml`, and add
45
+ `launch:` to a committed soul, only once every deployment of the workspace
46
+ runs 0.30. 0.29.4 refuses both: members are read at their latest commit, and
47
+ its schemas reject the unknown keys.
48
+
49
+ **A deployment still on 0.29.4** has a bundled catalog that does not know
50
+ `oats.engineering`, so its bare-version pin is `E_PACKAGE_MISSING`. Until it
51
+ upgrades, set `OATS_PACKAGE_CATALOG` to a catalog file that lists it, such as
52
+ 0.30.0's `package-catalog.json`.
53
+
54
+ ## Team model v2
55
+
56
+ - **Teams are local to each deployment.** `oats-local.yaml` holds the local
57
+ teams (`teams.<label>: { team, description? }`), `defaultTeam`, and which
58
+ teams each soul may join here (`souls.teams`, `"*"` for every soul, plus an
59
+ optional `souls.default` per soul). Nothing committed says who is in a team.
60
+ - **A shared team is committed** in `oats-workspace.yaml` `teams:` **with its
61
+ provider id**. One declared without an id is `team-unmapped`: its owner
62
+ creates it and commits the id. A label in both files is
63
+ `team-label-collision`, a warning, and the shared definition wins.
64
+ - **A spawn joins the default team only.** Every other eligible team is opt-in
65
+ per instance: `--provider oats.aweb join=<labels>` at spawn, the Desktop's
66
+ checkboxes, or the provider's join and leave verbs later.
67
+ - **A leave is never silent.** A joined team that is no longer eligible is
68
+ left on the next live read; a newly eligible team is offered, never joined.
69
+ A team a soul no longer lists is left automatically on hosted teams. On a
70
+ team you control (BYOT, namespace-controlled), aw cannot release the member
71
+ from the instance, so the leave is reported (a launch warning and an
72
+ `aweb-team-leave-failed` instance event) and the team's owner removes the
73
+ member.
74
+ - **`oats teams`** lists this deployment's teams, ids, default and problems;
75
+ `add <label> --team <id>`, `remove <label>` and `default <label>` edit
76
+ `oats-local.yaml` only. `remove` refuses a referenced label
77
+ (`E_TEAM_IN_USE`) or a shared one (`E_TEAM_SHARED`).
78
+ **`oats soul teams <soul>|'*'`** takes `--add`, `--remove`, `--default` and
79
+ `--clear-default`. Neither verb calls the provider.
80
+ - **`oats aweb setup`** creates and joins provider teams:
81
+ `--soul <soul> --create <label> --namespace <domain>` creates a team you
82
+ control and records it as a local team; `--soul <soul> --join <label>
83
+ --invite <token>` joins an existing one. Each team gets its own messaging
84
+ root (`settings.oats.aweb.roots.<team id>`).
85
+ - **Readiness** reports team problems in `checks.configured`:
86
+ `E_TEAM_UNCONFIGURED`, `team-unmapped`, `team-label-collision`, and
87
+ `default-team-changed` for a running instance. An undeclared label is
88
+ `E_TEAM_UNKNOWN`.
89
+ - **Providers** receive `OATS_DEFAULT_TEAM`, `OATS_DEFAULT_TEAM_ID`,
90
+ `OATS_DEFAULT_TEAM_FROM`, `OATS_TEAMS` and `OATS_TEAMS_SOURCE`. The 0.29
91
+ names `OATS_TEAM_LABEL`, `OATS_TEAM_LABELS` and `OATS_TEAM_ID` are unset.
92
+
93
+ ## Soul launch preferences
94
+
95
+ - **A soul may declare `launch: { harness, model? }`** in `soul.yaml`
96
+ (`pi`, `claude` or `codex`); only a harness and a model.
97
+ - **`oats-local.yaml` `souls.launch` overrides it on this machine**: `"*"` for
98
+ every soul or one soul's entry, each a launch configuration's name or an
99
+ inline `{ harness, model? }`.
100
+ - **Precedence for a new launch:** `--launch-config` or `--harness`, then
101
+ `souls.launch.<soul>`, then `souls.launch."*"`, then the soul's `launch:`,
102
+ then `pi` with its defaults. `--model` alone keeps the deciding layer's
103
+ harness. A missing harness is `E_HARNESS_UNAVAILABLE`, naming the layer
104
+ and the fix; there is no fallback.
105
+ - **A home's recorded launch stays frozen.** A changed preference reaches it
106
+ only with `oats session start|restart --reselect-launch` or a respawn;
107
+ `oats readiness --home` warns `launch-changed`. `session start|restart
108
+ --model` keeps the recorded harness and replaces only the model (#294).
109
+ - `oats souls`, `oats inspect --soul` and `oats spawn … --preview` show each
110
+ soul's `launch` and which layer decided it.
111
+
112
+ ## Changed
113
+
114
+ - **A host runs a workspace trigger or schedule only when its
115
+ `oats-local.yaml` trusts it** (`automations.trust: [<member>/<id>]` or
116
+ `"*"`). Hosts that ran workspace automations must add their trust lines;
117
+ `oats workspace status` names each missing line (#300).
118
+ - **`key` on `oats souls` rows and `oats status` agent rows**: the soul's name
119
+ as `souls.teams` and `souls.launch` take it (`<package>/<soul>` for a
120
+ package soul).
121
+ - **A team id must be safe**: no leading `-`, no whitespace or control
122
+ characters, at most 256 characters.
123
+ - **The teams verbs edit only their own entries** in `oats-local.yaml`;
124
+ comments survive.
125
+
126
+ ## Fixed
127
+
128
+ - **An opted-in second team (`join=`) now yields a connected, usable
129
+ identity** (oats.aweb 1.17.1). It never did against a real aw before.
130
+ - **A newcomer can join a shared team** (oats.aweb 1.17.1): `oats aweb setup
131
+ --join <label> --invite <token>` takes `--service <url>` and `--name <alias>`,
132
+ and a half-finished join resumes without a new invite.
133
+ - **A lost team, or a retire, on a team you control hands the owner the exact
134
+ cleanup command** (oats.aweb 1.17.1), in place of a silent leftover member.
135
+ - **Knowledge readiness is answered.** oats.okf 4.0.4 answers the kernel's
136
+ documented readiness check; on 0.29.x it was `unknown`.
137
+ - **`oats session start` and `restart` show the launch hooks' warnings**, as
138
+ spawn does (#295): JSON `warnings`, always present, and each is kept as a
139
+ `launch-warning` instance event.
140
+ - **`oats readiness --soul` and `oats inspect --soul` materialise the soul's
141
+ copy at the resolved commit first**, as spawn does, so a soul not yet
142
+ spawned at this commit no longer reads as a missing declaration (#298).
143
+ - **`oats retire` can retire a home from before 0.25.9 whose session is
144
+ gone**: only when the recorded window or server is gone AND no live process
145
+ works in the home; anything live or unclear still refuses, `--force`
146
+ included (#299).
147
+
148
+ ## Known in 0.30.0
149
+
150
+ The first two are fixed in 0.30.1; the last is how aw works on a team you
151
+ control.
152
+
153
+ - With no teams configured, a spawn is refused by the provider
154
+ (`E_SPAWN_FAILED`, relaying "no teams configured: run `oats aweb setup`"),
155
+ not by the kernel's `E_TEAM_UNCONFIGURED`.
156
+ - A capability operator command run from a deployment needs `--soul <soul>`.
157
+ - On a team you control (BYOT, namespace-controlled), retiring an instance, or
158
+ a spawn that rolls back, deletes its workspace but cannot revoke its
159
+ membership; its alias stays on the team, and the retire prints the owner's
160
+ exact `aw id team remove-member` command (and records it as
161
+ `pendingControllerCleanup`). Hosted teams release automatically.
162
+
163
+ ## Packages
164
+
165
+ - **oats.framework `oats-framework/v1.4.0`**: oats.core 2.2.0 and oats.setup
166
+ 2.2.0 require `>=0.30.0` and teach the team model v2 and onboarding through
167
+ `oats aweb setup`.
168
+ - **oats.aweb `v1.17.1`** (from 1.16.0): one aw floor, `>=1.36.13` (1.16.1);
169
+ the kernel's teams, with no provider `team` setting (a stale one is refused)
170
+ and one root per team; setup's `--create` and `--join`; the teams
171
+ document's shared/local `from`, `warnings[]` and recently left teams; the
172
+ newcomer's first `--join`, `--soul` on operator commands, the
173
+ `aweb-team-leave-failed` event and the second-team fix (1.17.1); in 1.17.1
174
+ also the resumable `--join` with `--service`/`--name`, the owner's cleanup
175
+ command on a team you control, and a stale `team` setting refused only
176
+ where teams are chosen, so retire still cleans up.
177
+ - **oats.okf `v4.0.4`** (from 4.0.1): the harvester and maintainer live in the
178
+ default team, with no `okf` team (4.0.2); consultation works with harvest
179
+ off (4.0.3); readiness is answered (4.0.4).
180
+ - **oats.engineering `v1.1.0` replaces oats.dev**, which is retired along with
181
+ its catalog aliases (`oats.review`). It ships `oats.engineering-expert`,
182
+ `oats.developer`, `oats.code-review` and the `code-reviewer` package soul.
183
+
184
+ ## Desktop
185
+
186
+ - **A Workspace Teams tab** (#270), before Souls: this computer's teams and
187
+ default, with add, remove and default. A soul page has Teams here (#277),
188
+ the spawn dialog shows the fixed default team and unchecked opt-in boxes,
189
+ and an unmapped default team blocks the spawn with its fix.
190
+ - **The teams panel** shows each team as shared or local, the provider's
191
+ warnings (#286), recently left teams (#270), and a join or leave warning
192
+ under its row (#282). Readiness team items say where the team is declared.
193
+ - **The Spawn view groups souls by their default team** and chips their
194
+ teams, the default first (#285).
195
+ - **Each soul's harness and model again**, with what chose them (#289), and
196
+ a session card says where a model set on this computer came from (#293).
197
+ - **Readiness shows `launch-changed`** for a home whose launch preference
198
+ moved, and the Desktop's readers accept any team id the kernel accepts
199
+ (#292).
200
+ - **One Automations item** with Schedules and Triggers subtabs (#267).
201
+ - **Untrusted workspace automations** need attention: the row reads "Not
202
+ trusted here" and shows the kernel's line to add, and Setup shows each
203
+ trust warning with its remedy (#301).
204
+ - **The spawn dialog says the kernel's missing-harness fix once** (#302).
205
+ - The Desktop accepts OATS CLIs `>=0.25.8 <0.31.0`.
@@ -0,0 +1,123 @@
1
+ # OATS 0.30.1
2
+
3
+ ## Fixes
4
+
5
+ - **Desktop: an instance-less soul no longer takes the whole roster down.**
6
+ `oats status --json` reports an agent row's `key` as `null` when no instance
7
+ records a workspace soul, as the roster contract documents. That happens for a
8
+ soul directory with no instances: after a spawn preview of a soul that has
9
+ never been spawned, or after its last instance is retired. The 0.30.0 Desktop
10
+ accepted only a string there, so one such row rejected the whole observation
11
+ with `E_CLI_PROTOCOL` ("The installed OATS CLI returned an invalid deployment
12
+ observation"). The Desktop now accepts `null` and still refuses any other
13
+ type.
14
+ - **Knowledge readiness answers, fast.** With oats.okf 4.0.5, `oats readiness`
15
+ answers the knowledge check from okf's cache in the knowledge `stateDir`, well
16
+ inside the kernel's 30 s cap, instead of cloning every base and timing out as
17
+ `unknown` (measured: 7 s against 35 s and `unknown` before). A base that is
18
+ not cached yet, out of date or unreachable is reported as a named warning or
19
+ problem, never `unknown`. A spawn with harvest off fills the cache, spending at
20
+ most 20 s per base, and still refuses a soul that names a node its base does
21
+ not have.
22
+ - **Desktop: a stored workspace selection the server no longer serves** (a
23
+ deleted deployment) locked the Desktop out: every roster refresh refused the
24
+ server's reply as "belongs to a different workspace", and the switcher
25
+ already showed the served workspace as active. A selection that is not
26
+ among the served workspaces is now treated like an empty one: both rosters
27
+ adopt the served workspace and the stored selection is replaced. A
28
+ selection the server does serve, answered with another workspace, is still
29
+ refused.
30
+ - **Desktop: terminal tabs are back to native geometry.** 13px system
31
+ monospace, xterm's default line height, and 32px side gutters with no
32
+ vertical inset, as before Redesign v3. The block cursor is one cell tall
33
+ again. A font size you chose yourself is kept.
34
+ - **Desktop: the spawn dialog could stay on "Reading defaults…" forever.**
35
+ A routine roster refresh restarted the spawn preview while it was still
36
+ being read, so on a machine where the preview takes several seconds it
37
+ never finished. The dialog now re-reads only when a fact the preview
38
+ depends on changes.
39
+
40
+ ## Packages
41
+
42
+ - **oats.okf 4.0.5** (was 4.0.4 in 0.30.0): the knowledge readiness fix above.
43
+ - **oats.engineering 1.3.0** (was 1.1.0 in 0.30.0).
44
+ - 1.2.0: the packaged `code-reviewer` launches on Codex with `gpt-6-astra` by default, a different model family from the developers it reviews. A machine without the `codex` binary gets `E_HARNESS_UNAVAILABLE` when it spawns `code-reviewer`, until it installs Codex or overrides the preference (`oats-local.yaml` `souls.launch`, or `--harness`/`--model` at spawn).
45
+ - 1.3.0: review happens on local branches, before the PR. The developer runs its adversarial loop with the `code-reviewer` on its local branch and hands the reviewed branch to its expert. The expert reviews that branch, and only when it accepts is a PR opened. A returned branch's delta goes back through the same reviewer first.
46
+
47
+ ## Changed
48
+
49
+ - **Desktop: calmer selection, focus and search fields.** A selected segment
50
+ (Group by, List/Graph and similar) now uses the brand tint instead of
51
+ white-on-grey. Clicking a button, tab or row no longer draws a focus ring.
52
+ Keyboard focus stays visible as the tint plus a thin accent edge, not a
53
+ 2px ring. Search and filter fields have a single border that turns accent
54
+ on focus, with no inner ring.
55
+ Sidebar instance rows are more compact, with a gap between highlighted rows,
56
+ and an instance's pull request number sits before its branch name instead of
57
+ on its own line.
58
+ - **The official workspace lists each package capability once.** The `oats`
59
+ repository kept byte mirrors of the official packages' capabilities
60
+ (`oats.okf`, `oats.aweb`, `oats.jira`, …) under `capabilities/`, so `oats
61
+ capabilities` in the official workspace also listed each of them as a member
62
+ capability of `github.com/awebai/oats`, beside its package. The mirrors now
63
+ live in `mirrors/`, which member discovery does not read, and the npm
64
+ package no longer carries them (nothing read them at runtime: capabilities
65
+ resolve from Git at the locked commit). No operator action.
66
+ - **Desktop: clearer Workspace views, and Spawn goes straight to the soul.**
67
+ Soul cards label their facts ("Team oats", "No instances" instead of a
68
+ bare "none"), group by repo by default, and keep a compact Spawn on the
69
+ instances line. Capabilities are compact one-line row cards with a
70
+ kind-coloured tile, their source and who uses them; a row opens the
71
+ capability page with the full description. Teams show one card per team,
72
+ split into shared and this-computer sections. Spawn on a soul card or the
73
+ soul page opens the spawn dialog for that soul, with a "What will be
74
+ created" preview (core capabilities and capabilities with their sources);
75
+ "Change soul" returns to the picker.
76
+ - **Two Desktop souls.** The `oats-desktop-designer` soul is removed.
77
+ `oats-desktop-expert` now owns Desktop's UX and design direction as well as
78
+ its product rationale, and `oats-desktop-developer` builds all of
79
+ `packages/desktop`, including renderer views, styles, themes and copy.
80
+ Running designer instances keep working until they are retired; `oats
81
+ status` reports their soul as no longer present.
82
+ - **The legacy Desktop soul trees are removed.** `agents/oats-desktop-engineer`
83
+ and `agents/ux-designer` were no longer offered souls. The
84
+ `oats-desktop-expert` knowledge node carries their durable rationale.
85
+ - **The remaining legacy soul trees are removed.** `agents/cli-dev`,
86
+ `dev-coordinator`, `docs-expert`, `integrations-expert`, `lead`,
87
+ `oats-coordinator` and `oats-expert` were pre-v2 soul bundles, not offered
88
+ souls; the offered souls live in `souls/` and the packages. Their bundled
89
+ knowledge gate (`npm run validate:okf`) goes with them: the souls' knowledge
90
+ lives in the central knowledge base, which validates itself.
91
+ - **Desktop: a calmer instance panel.** The summary bar under the terminal
92
+ (harness, tmux target, team marks, Details, Focus mode) is gone, and the
93
+ terminal gets its height. A panel toggle at the end of the tab bar shows or
94
+ hides the instance panel (⌥⌘B, Ctrl+Alt+B on Linux and Windows; also in the
95
+ command palette). Focus mode stays in the palette; in focus mode the panel
96
+ toggle and the sidebar's edge button stay visible and leave it. The Instance
97
+ tab drops Built from and Details. When the kernel reports drift, its header
98
+ shows an "older build" chip whose tooltip says what changed and that
99
+ re-spawning picks up the new state. Where it works is one card: the work mode
100
+ in plain words, then repo, branch and home. Messaging is a compact list of
101
+ teams, with an icon refresh and the identity address on its own line. The Git
102
+ & GitHub tab is now the Developer tab; it shows branch, changes and pull
103
+ request cards; the branch line says how far it is from main and, when it has
104
+ an upstream, how many commits are unpushed. An instance without Git by design
105
+ (directory or workspace mode) gets a calm "No Git for this instance" note
106
+ instead of a red error; a worktree that has gone missing still reports its
107
+ error.
108
+ - **The official workspace's souls declare launch preferences.** Its experts,
109
+ developers and setup admin prefer Claude Code with Opus 5.5 (`launch:` in
110
+ each `soul.yaml`); each machine can override them in `oats-local.yaml`
111
+ `souls.launch`, and spawn flags win over both.
112
+
113
+ ## Still known in 0.30.1
114
+
115
+ The 0.30.0 notes said the first two below would be fixed in 0.30.1. They are
116
+ not in this release, and are planned for 0.30.2.
117
+
118
+ - With no teams configured, a spawn is refused by the provider
119
+ (`E_SPAWN_FAILED`, relaying "no teams configured: run `oats aweb setup`"),
120
+ not by the kernel's `E_TEAM_UNCONFIGURED`.
121
+ - A capability operator command run from a deployment needs `--soul <soul>`.
122
+ - On a team you control (BYOT), retire cannot revoke membership; the retire
123
+ prints the owner's `aw id team remove-member` command, as in 0.30.0.