@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
@@ -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`.