@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
@@ -4,174 +4,78 @@ One release built from one tag: `@awebai/oats@0.19.0`,
4
4
  `@awebai/oats-pi@0.19.0`, and **OATS Desktop 0.19.0** in this GitHub Release.
5
5
 
6
6
  This release introduces distribution packages, exact OATS-managed instance
7
- curricula, canonical primary-checkout instance homes, and the package/profile
8
- setup flow needed for independently published official capabilities.
7
+ curricula, canonical instance homes, and package config profiles.
9
8
 
10
9
  ## Distribution packages
11
10
 
12
- An OATS package is now the acquisition, integrity, update, and review unit above
13
- independently targetable capabilities. A Git repository may contain ordinary
14
- development content and one or more package payloads; the selected payload path
15
- is part of the source and lock contract.
16
-
17
- ```bash
18
- # Git/catalog sources default to the contained oats-package/ directory.
19
- oats install https://github.com/example/project.git@v1.0.0
20
-
21
- # Select another contained directory, or the repository root explicitly.
22
- oats install 'https://github.com/example/project.git@v1.0.0#dist/oats'
23
- oats install 'https://github.com/example/root-package.git@v1.0.0#.'
24
-
25
- # A local path always names the exact package root.
26
- oats install ../project/oats-package
27
- ```
11
+ An OATS package is the acquisition, integrity, update, and review unit above
12
+ independently targetable capabilities. Git and catalog sources default to the
13
+ contained `oats-package/` directory; `#<path>` selects another directory (`#.`
14
+ for the repository root), and a local path names the exact package root.
28
15
 
29
16
  Lock v2 records source, exact commit, selected path, integrity, dependency
30
17
  closure, exported capabilities, and per-capability executable approvals. Bare
31
- `oats install` restores the exact locked graph; it never advances a branch,
32
- catalog selector, package path, or dependency closure. Updating remains
33
- explicit:
34
-
35
- ```bash
36
- oats update <package-id>
37
- ```
18
+ `oats install` restores the exact locked graph; updating is explicit
19
+ (`oats update <package-id>`). Acquisition installs and hashes only the selected
20
+ payload subtree; root `.git` metadata appearing later inside a managed artifact
21
+ is treated as source drift and invalidates trust. See
22
+ [Distribution packages](../packages.md).
38
23
 
39
- Acquisition installs and hashes only the selected payload subtree. Repository
40
- CI, documentation, owner souls, sibling packages, and source-control metadata
41
- are not installed. If root `.git` metadata later appears inside a managed
42
- artifact, it is treated as source drift and invalidates trust rather than being
43
- an approval-invisible exclusion.
24
+ ## Package config profiles
44
25
 
45
- ## Package config profiles and workspace setup
46
-
47
- Packages may ship complete reference `oats-config.yaml` profiles. Adoption is
48
- explicit and produces an editable local snapshot:
26
+ Packages may ship reference `oats-config.yaml` profiles. Adoption is explicit
27
+ and writes an editable local snapshot:
49
28
 
50
29
  ```bash
51
30
  oats init --package <package-source> [--config <profile>] --dir <workspace>
52
31
  oats install --dir <workspace>
53
32
  ```
54
33
 
55
- The first command acquires and exact-locks the full package closure, validates
56
- the selected profile against its capability providers, and writes the snapshot.
57
- The second command reconciles the team boundary and nested repository locks.
58
- Package updates never rewrite an adopted config; normal targeting, exclusions,
59
- settings, and closer repository overrides remain authoritative.
60
-
61
- Missing host commands and runtime packages remain a separate consent decision.
62
- Human and JSON plans show every ordered argv step before anything executes.
63
- Spawn verifies required runtime packages but never installs them.
64
-
65
- ## Exact OATS-managed instance curriculum
66
-
67
- For each soul, the scoped config cascade now determines the complete
68
- OATS-managed skill and instruction set. Active capability resources are
69
- enumerated before scaffolding, copied into the canonical instance tree, and
70
- asserted against the expected composition. Missing, untrusted, duplicate, or
71
- uncontained active resources fail closed instead of producing a half-configured
72
- agent.
73
-
74
- Canonical instance resources are:
75
-
76
- ```text
77
- <instance-home>/.agents/skills/
78
- <instance-home>/.claude/skills -> ../.agents/skills
79
- <instance-home>/AGENTS.md
80
- <instance-home>/CLAUDE.md -> AGENTS.md
81
- ```
82
-
83
- Runtime posture is deliberately provider-specific and recorded in
84
- `instance.json`:
85
-
86
- - **Pi** suppresses ambient skills, context files, and prompt templates while
87
- preserving operator-configured extensions.
88
- - **Claude Code** preserves the operator's native user/repository settings,
89
- skills, plugins, MCP, hooks, and memory; OATS adds its canonical composed
90
- resources without exclusion flags.
91
-
92
- The guarantee is exact OATS-managed composition, not identical ambient behavior
93
- across providers.
94
-
95
- ## Canonical instance homes and the home/work boundary
34
+ Package updates never rewrite an adopted config. Missing host commands and
35
+ runtime packages remain a separate consent decision; plans show every ordered
36
+ step before anything executes, and spawn verifies required runtime packages but
37
+ never installs them.
96
38
 
97
- Instance homes now live under the soul-owning repository's primary checkout,
98
- even when spawn is invoked from a linked worktree or from an agent's `work/`.
99
- Unresolvable placement fails closed before creating anything.
39
+ ## Exact instance curriculum and canonical homes
100
40
 
101
- Every runtime and lifecycle hook receives the absolute `OATS_INSTANCE_HOME`.
102
- Generated instructions distinguish the two operational surfaces:
41
+ The scoped config cascade determines each soul's complete OATS-managed skill and
42
+ instruction set. Missing, untrusted, duplicate, or uncontained active resources
43
+ fail closed. Resources are composed into `<instance-home>/.agents/skills/`
44
+ (linked from `.claude/skills`) and `AGENTS.md` (linked from `CLAUDE.md`). Pi
45
+ suppresses ambient skills, context files, and prompt templates; Claude Code
46
+ keeps the operator's native settings, skills, plugins, MCP, hooks, and memory.
103
47
 
104
- - instance home contains instructions, task, soul reference, provenance,
105
- selected skills, and episodic state; OATS lifecycle and active-capability
106
- commands run there;
107
- - `<instance-home>/work` is the repository or workspace view where permitted
108
- reading, editing, Git, builds, tests, and commits happen.
48
+ Instance homes live under the soul-owning repository's primary checkout, even
49
+ when spawn runs from a linked worktree. Every runtime and hook receives the
50
+ absolute `OATS_INSTANCE_HOME`; lifecycle commands run in the home, repository
51
+ work happens in `<instance-home>/work`.
109
52
 
110
- OATS performs resolved-path containment checks and rechecks the created home
111
- before writing credentials or running hooks. The deployment agents directory
112
- must still be operator-owned and not writable by untrusted local processes.
53
+ ## Required hooks and runtime requirements
113
54
 
114
- ## Required hooks, runtime requirements, and safe rollback
55
+ Capability spawn hooks may declare `required: true`; a failing required hook
56
+ fails the spawn. If compensation cannot finish, OATS keeps a quarantine that
57
+ `oats retire` retries before deleting the home (`--force` remains available).
58
+ Requirement consent supports runtime-scoped Pi packages and Claude plugins.
115
59
 
116
- Capability spawn hooks may declare `required: true`. A required hook that cannot
117
- establish its contract fails the spawn. If compensation cannot finish, OATS
118
- retains a versioned quarantine containing the credential and original cleanup
119
- metadata; `oats retire` retries and verifies outstanding cleanup before deleting
120
- the home. `--force` remains the explicit operator escape hatch.
60
+ ## Compatibility with 0.18 installations
121
61
 
122
- Requirement consent now supports runtime-scoped Pi packages and Claude plugins,
123
- including multi-step marketplace registration plans. JSON and human output show
124
- the same exact ordered steps.
125
-
126
- ## Existing 0.18 capability installations
127
-
128
- Upgrading the kernel does **not** force a capability migration. Existing valid
129
- v1 locks, installed official capability artifacts, config activation, and trust
130
- continue to work in 0.19.0.
131
-
132
- The guided command is included:
133
-
134
- ```bash
135
- oats migrate --official --recursive --dry-run --dir <team-root>
136
- oats migrate --official --recursive --dir <team-root>
137
- ```
138
-
139
- It remains held until the official package catalog and immutable package tags
140
- are published. That catalog/default redirect ships in the planned 0.19.1
141
- follow-up. Until then, `oats doctor` explains that the legacy capabilities remain
142
- supported. Migration preserves config files and capability IDs, leaves custom,
143
- owned, and path capabilities untouched, and never transfers executable trust
144
- silently.
145
-
146
- Legacy kernel-marketplace capabilities may still reference framework-hoisted
147
- resources. Those paths now anchor at the declaring capability's canonical
148
- marketplace directory and remain contained by the installed kernel. Valid older
149
- installed+locked capabilities continue working across a kernel upgrade.
62
+ Existing v1 locks, installed official capabilities, activation, and trust keep
63
+ working; no migration is forced. `oats migrate --official --recursive
64
+ [--dry-run] --dir <team-root>` is included but held in this release because the
65
+ official package catalog was not yet published; `oats doctor` explains that the
66
+ legacy capabilities remain supported.
150
67
 
151
68
  ## OATS Desktop
152
69
 
153
- Desktop accepts the matching 0.19 CLI through Desktop CLI API v1
154
- (`>=0.18.0 <0.20.0`) instead of rejecting its own release and degrading to
155
- observation-only mode. Compatibility and recovery copy are derived from one
156
- runtime contract rather than repeated literals.
157
-
158
- Desktop also includes the accumulated 0.18.x post-release work: cluster-aware
159
- agent navigation, persistent editor-style terminal groups, Quick Open for souls,
160
- runtime-scoped model suggestions, improved spawn readiness handoff, and the
161
- existing editable shortcut system.
162
-
163
- ## Downloads
164
-
165
- | Platform | Artifacts |
166
- | --- | --- |
167
- | macOS arm64 (Apple Silicon) | DMG + ZIP |
168
- | macOS x64 (Intel) | DMG + ZIP |
169
- | Linux x64 | AppImage + DEB |
70
+ Desktop accepts CLI versions `>=0.18.0 <0.20.0` (Desktop CLI API v1). It also
71
+ includes cluster-aware agent navigation, persistent terminal groups, Quick Open
72
+ for souls, runtime-scoped model suggestions, and improved spawn readiness
73
+ handoff.
170
74
 
171
- macOS artifacts are ad-hoc signed, not Developer ID signed or notarized. First
172
- launch may require right-click → **Open**, or **Open Anyway** in System Settings.
173
- Verify assets with `SHA256SUMS.txt` and the GitHub build-provenance attestations.
174
- Windows and Linux arm64 are not supported in this release.
75
+ Installers: macOS arm64 and x64 (DMG + ZIP), Linux x64 (AppImage + DEB). macOS
76
+ builds are ad-hoc signed, not notarized; first launch may need right-click →
77
+ **Open**. Verify assets with `SHA256SUMS.txt` and the build-provenance
78
+ attestations. Windows and Linux arm64 are not supported.
175
79
 
176
80
  ## Install or update
177
81
 
@@ -180,7 +84,4 @@ npm install -g @awebai/oats@0.19.0
180
84
  pi install npm:@awebai/oats-pi@0.19.0
181
85
  ```
182
86
 
183
- The kernel, Pi adapter, and Desktop publish from the same tag and should stay on
184
- matching versions. Official OATS capability packages are published separately
185
- after released-kernel consumer probes; this release does not claim that their
186
- catalog entries are live yet.
87
+ Keep the kernel, Pi adapter, and Desktop on matching versions.
@@ -12,9 +12,8 @@ Corrective patch for the v0.19.0 marketplace compatibility bridge.
12
12
  - Preserves framework-author `oats.authoring` skill composition from the
13
13
  published kernel layout.
14
14
 
15
- The official package catalog and default migration redirects are not included
16
- in this corrective patch; they follow after the independently tagged official
17
- packages complete their published-kernel probes.
15
+ This patch does not include the official package catalog or migration
16
+ redirects.
18
17
 
19
18
  Install matching kernel and Pi adapter versions:
20
19
 
@@ -1,16 +1,3 @@
1
- # OATS v0.19.3 (unpublished)
1
+ # OATS v0.19.3
2
2
 
3
- The v0.19.3 pre-publish tag failed its test gate, produced no npm package or
4
- GitHub Release, and was removed. Its documentation refresh shipped in v0.19.4.
5
-
6
- Documentation refresh after the official package and workspace rollout.
7
-
8
- - Rewrites the README around OATS's central value: durable, provider-agnostic
9
- specialist agents with exact OATS-managed curricula, compounding expertise,
10
- mixed-provider teamwork, package/config sovereignty, and Desktop situational
11
- awareness.
12
- - Documents the now-published official package repositories, `oats-package/`
13
- payload convention, `oats.dev` non-Git workspace setup, and guided migration
14
- from 0.18 capability locks.
15
-
16
- No runtime contract changes from v0.19.2.
3
+ Tagged, not published; its changes shipped in v0.19.4.
@@ -64,21 +64,6 @@ Desktop API remains version 1. Desktop 0.20 accepts released CLI versions in
64
64
  `>=0.18.0 <0.21.0`. This range includes the matching 0.20 kernel.
65
65
  Prerelease versions are not accepted.
66
66
 
67
- ## Required release order
68
-
69
- The framework and package releases have a strict dependency order.
70
-
71
- 1. Release the v0.20.0 kernel, Pi adapter, and Desktop first.
72
- 2. After that consumer contract is available, revise and test all six official
73
- package repositories. They are `oats-okf`, `oats-aweb`, `oats-jira`,
74
- `oats-linear`, `oats-authoring`, and `oats-dev`. Tag immutable package revisions
75
- in dependency order. Release leaf packages first and `oats.dev` last.
76
- 3. Only after all six immutable package tags exist, update the kernel catalog.
77
- Cut a framework patch if the catalog change requires one.
78
-
79
- Do not retag an existing package release. The revised package versions do not
80
- become catalog defaults until the catalog follow-up ships.
81
-
82
67
  ## Install or update
83
68
 
84
69
  ```bash
@@ -4,170 +4,104 @@ OATS v0.22.0 is the first release under the OATS name. The framework release
4
4
  includes `@awebai/oats@0.22.0`, `@awebai/oats-pi@0.22.0`, and OATS Desktop
5
5
  0.22.0.
6
6
 
7
- The version number sits above every release of the OAS line (`@oas-framework/oas`
8
- 0.21.2 is the latest as of this release) so that "OATS is at least OAS" holds
9
- numerically. This release includes the OAS 0.20.1, 0.21.1, and 0.21.2
10
- corrections, ported with their original authorship preserved; it does not
11
- include the OAS 0.21.0 remote catalog fetch (see "Not included" below).
7
+ The version sits above every release of the OAS line (`@oas-framework/oas`
8
+ 0.21.2 was the latest). This release includes the OAS 0.20.1, 0.21.1, and
9
+ 0.21.2 corrections; it does not include the OAS 0.21.0 remote catalog fetch.
12
10
 
13
11
  ## The rename: OAS is now OATS
14
12
 
15
13
  Everything previously published as **OAS** (`@oas-framework/oas`,
16
- `@oas-framework/pi`, the OAS Desktop) continues as **OATS** (`@awebai/oats`,
17
- `@awebai/oats-pi`, OATS Desktop). The rename is a clean break: this kernel
14
+ `@oas-framework/pi`, OAS Desktop) continues as **OATS** (`@awebai/oats`,
15
+ `@awebai/oats-pi`, OATS Desktop). The rename is a clean break: the kernel
18
16
  recognizes no `oas-*` file name, no `oas:` config key, and no `oas.*`
19
17
  capability id.
20
18
 
21
- Deployments created by OAS must migrate, and now can:
19
+ Deployments created by OAS must migrate:
22
20
 
23
21
  ```bash
24
22
  oats migrate --from-oas --dry-run --dir <scope> # full plan, touches nothing
25
23
  oats migrate --from-oas --dir <scope> # convert this scope
26
24
  ```
27
25
 
28
- One transaction per scope: file renames (`oas-config.yaml`,
29
- `oas-lock.json`, capability `oas.json` manifests, soul scaffold-owner
30
- files), the `oas:` config key, and capability ids, then the guided package
31
- conversion, so the scope ends on `lockfileVersion: 2` official packages.
32
- Any failure restores the original OAS bytes; a second run is a no-op.
33
- Executable trust is re-earned after conversion. See
34
- [docs/migration-from-oas.md](https://github.com/awebai/oats/blob/v0.22.0/docs/migration-from-oas.md).
35
-
36
- Un-migrated OAS scopes are also **loud** now: `oats doctor` names them with
37
- the remedy, and every `oats migrate` form exits nonzero instead of
38
- reporting "nothing to migrate" on a scope that is actually a pre-rename
39
- deployment.
40
-
41
- The migration was verified against OAS 0.20.x deployments. OAS 0.21.x scopes
42
- use the same file names, config keys, and capability ids, but the official
43
- packages they lock may be the OAS v2.0.0 line, which the OATS catalog does not
44
- yet carry; run the dry run first and read its plan.
45
-
46
- ## Scope of the 0.18 upgrade guarantee, corrected
47
-
48
- Earlier notes said existing valid v1 locks and installed capabilities
49
- continue to work after a kernel upgrade. That claim holds for **OATS-named
50
- scopes only** (`oats-config.yaml` / `oats-lock.json`). It was never true
51
- for OAS-named deployments, whose files this kernel does not read; that is
52
- exactly what `oats migrate --from-oas` is for.
53
-
54
- ## Corrections ported from OAS 0.20.1, 0.21.1, and 0.21.2
55
-
56
- These land here with the same behavior as in the OAS line, renamed.
57
-
58
- - **Own-property config handling and `__proto__` rejection.** Config
59
- parsing and diagnostics no longer consult inherited `Object.prototype`
60
- properties anywhere: key dispatch, capability binding, command-owner lookup,
61
- skill overrides, and shape validation are own-property. YAML keys named
62
- `__proto__` are refused with the typed failure `unsafe-config-key`, and
63
- the offending file is named.
64
- - **Internal annotations cannot arrive from disk.** Underscore-prefixed
65
- engine annotations (`_capabilityLock`, `_soulDir`, `_origin`, ...) are
66
- stripped from every manifest and soul reader before the kernel annotates
67
- them, so an on-disk document cannot assert its own provenance or silence
68
- doctor's orphan warning.
69
- - **Config writes fail closed.** Text that would change the shape of a
70
- written config is refused with `unsafe-config-value` or
71
- `unsafe-config-key` instead of being written: line breaks (including
72
- U+0085, U+2028, U+2029), embedded `" #"`, empty values, leading YAML
73
- structure indicators, and `:` or `#` in keys. This includes the scaffolded
74
- `name:` line: `oats init`, and the first `oats use` or `oats type add` in a
75
- fresh scope, refuse to run in a directory whose basename cannot be stored
76
- as one YAML scalar. Home directories containing `$&`-style sequences are
77
- expanded literally on every write path.
78
- - **Typed CLI failure boundary.** `unsafe-config-key`, `unsafe-config-value`,
79
- and `E_NO_CONFIG` render as one `oats:` line or one `--json` envelope
80
- instead of a raw stack. Configless `oats use` reports `E_NO_CONFIG` with
81
- the `oats init --raw` remedy instead of a misleading `acquired: none`.
82
- Spawn no longer re-badges these as `E_SPAWN_FAILED`.
83
- - **Scope-exact doctor and trust.** `oats doctor` judges each installed
84
- artifact against the lock of the scope that installed it, reading revised-v2
85
- `capabilities` rows directly instead of the merged chain, so a chain that
86
- holds one package id at two scopes with different source spellings is no
87
- longer reported as `invalid-lock`, and v2-locked capabilities are no longer
88
- reported as orphans. Trust evaluation reads the row from the artifact's own
89
- scope.
90
- - **Desktop parity.** The Desktop deployment reader reads revised-v2
91
- capability locks, refuses every lock shape the kernel refuses, and its
92
- legacy-v1 artifact digest counts `.git` and nested lock files exactly as the
93
- kernel does.
94
- - **Package payload is never a deployment scope.** Bare `oats install` at a
95
- team scope no longer reconciles config templates that live under a package
96
- manifest (`oats-package.json`) as if they were live deployments, so a
97
- workspace that develops packages stops failing reconciliation for
98
- directories no operator could act on. The same walk backs
99
- `oats migrate --official --recursive`.
26
+ Each scope converts in one transaction (file names, the `oas:` key, capability
27
+ ids, then the guided package conversion to `lockfileVersion: 2`). Any failure
28
+ restores the original bytes; a second run is a no-op. Executable trust is
29
+ re-earned after conversion. See
30
+ [migration from OAS](https://github.com/awebai/oats/blob/v0.22.0/docs/migration-from-oas.md).
31
+
32
+ `oats doctor` names un-migrated OAS scopes with the remedy, and every
33
+ `oats migrate` form exits nonzero on them. Migration was verified against OAS
34
+ 0.20.x; OAS 0.21.x scopes may lock the OAS v2.0.0 package line, which the OATS
35
+ catalog does not carry, so run the dry run first.
36
+
37
+ The 0.18 upgrade guarantee (existing v1 locks keep working) applies to
38
+ OATS-named scopes only, never to OAS-named deployments.
39
+
40
+ ## Corrections ported from OAS
41
+
42
+ - **Own-property config handling.** Config parsing and diagnostics ignore
43
+ inherited `Object.prototype` properties; YAML keys named `__proto__` are
44
+ refused with `unsafe-config-key`.
45
+ - **Internal annotations cannot arrive from disk.** Underscore-prefixed engine
46
+ annotations are stripped from every manifest and soul read.
47
+ - **Config writes fail closed.** Values or keys that would change the shape of
48
+ a written config are refused with `unsafe-config-value` or
49
+ `unsafe-config-key`. `oats init` and the first `oats use` or `oats type add`
50
+ in a fresh scope refuse a directory basename that cannot be stored as one
51
+ YAML scalar.
52
+ - **Typed CLI failures.** `unsafe-config-key`, `unsafe-config-value`, and
53
+ `E_NO_CONFIG` render as one `oats:` line or one `--json` envelope.
54
+ Configless `oats use` reports `E_NO_CONFIG` with the `oats init --raw` remedy.
55
+ - **Scope-exact doctor and trust.** `oats doctor` and trust judge each artifact
56
+ against the lock of the scope that installed it, ending false `invalid-lock`
57
+ and orphan reports.
58
+ - **Desktop parity.** The Desktop deployment reader accepts and refuses the
59
+ same lock shapes as the kernel.
60
+ - **Package payloads are not deployment scopes.** Bare `oats install` and
61
+ `oats migrate --official --recursive` skip config templates under a package
62
+ manifest.
100
63
 
101
64
  ## The turn record: `oats capture | recall | setup`
102
65
 
103
- The kernel now carries the turn record (`packages/record`): every
104
- conversation an agent has, Claude Code, pi, and Codex sessions plus aw
105
- mail and chat logs, captured as content-addressed turns in append-only,
106
- owner-write journals, searchable with exact provenance.
66
+ The kernel carries the turn record: Claude Code, Pi, and Codex sessions plus
67
+ aw mail and chat logs, captured as content-addressed turns in append-only
68
+ journals and searchable with provenance.
107
69
 
108
70
  ```bash
109
- oats setup # install capture hooks + a background watcher, idempotent
71
+ oats setup # install capture hooks and a background watcher
110
72
  oats capture # one reconciliation pass (--watch, --status, --install-hint)
111
- oats recall <query> # full-text search over everything captured, with provenance
73
+ oats recall <query> # full-text search with provenance
112
74
  ```
113
75
 
114
- The normative v1 format specification and its cross-language conformance
115
- vectors ship inside the package (`packages/record/docs/`,
116
- `packages/record/test/vectors/`).
117
-
118
- `oats experimental <dress|spawn|segments|mind>` exists in the repo checkout
119
- only, and deliberately never in this published package: the synthesis layer
120
- above the record is unproven by design, and its absence from the tarball is
121
- exactly its status.
76
+ The v1 format specification and conformance vectors ship in the package
77
+ (`packages/record/docs/`, `packages/record/test/vectors/`).
122
78
 
123
79
  ## Contract changes
124
80
 
125
- - `oats migrate --dry-run --json` on a scope where `oas-config.yaml` /
126
- `oas-lock.json` are visible now returns `ok: false` with code
127
- `oas-scope-unmigrated` instead of `ok: true` with an empty plan. OATS-named
128
- scopes see no change.
81
+ - `oats migrate --dry-run --json` on a scope with visible OAS files returns
82
+ `ok: false` with code `oas-scope-unmigrated`.
129
83
  - `oats doctor --json` gains `oasScopes`, `oasRemedy`, and per-package
130
- scope-exact rows. The exit code stays 0; automation gating on deployment
131
- health should key on the fields, not the exit code.
132
- - Guided migration plan rows gain `migratesTo`, and applied rows gain
133
- `migratedTo`: the package catalog's capability aliases may carry a rename
134
- (`"oas.okf": { "package": "oats.okf", "capability": "oats.okf" }`). All
135
- seven ids published by OAS 0.20 are mapped.
136
- - New typed failures: `unsafe-config-key`, `unsafe-config-value`, and
137
- `E_NO_CONFIG` from configless `oats use`. Scripts matching error text
138
- should match the typed codes.
139
- - `oats init` and first-write commands refuse directory basenames that
140
- cannot be stored as one YAML scalar (see above). Earlier releases wrote
141
- such names verbatim.
84
+ scope-exact rows; the exit code stays 0.
85
+ - Guided migration plan rows gain `migratesTo`, applied rows `migratedTo`;
86
+ all seven ids published by OAS 0.20 are mapped.
87
+ - New typed failures `unsafe-config-key`, `unsafe-config-value`, and
88
+ `E_NO_CONFIG`.
89
+ - `oats init` and first-write commands refuse unstorable directory basenames.
142
90
 
143
91
  ## Desktop
144
92
 
145
- OATS Desktop 0.22.0 accepts a kernel with `desktopApi: 1` in the semver
146
- range `>=0.22.0 <0.23.0`, probing `@awebai/oats`. The old OAS Desktop
147
- probes for `@oas-framework/oas`; the old app and this CLI are mutually
148
- invisible, so upgrade the CLI and the Desktop together. macOS arm64/x64
149
- and Linux x64 installers are published on the GitHub Release with
150
- checksums and provenance; macOS builds are ad-hoc signed (not notarized).
151
- See [docs/desktop.md](../desktop.md) for the Gatekeeper steps.
152
-
153
- ## Repository
154
-
155
- - A `LICENSE` file (MIT) now ships with the kernel; `package.json` had
156
- declared MIT without one.
157
- - Root `npm test` is correct on a checkout without the Desktop's own
158
- dependencies: it runs the Desktop suites when they are installed and
159
- otherwise prints an unmissable notice with the install command.
160
- - A runnerless release lane (`scripts/release-lane.mjs`) mirrors the release
161
- workflow off GitHub Actions, so registry publish and hosted assets never
162
- depend permanently on a runner.
163
-
164
- ## Not included
165
-
166
- - The OAS 0.21.0 **remote official catalog** (the kernel fetching
167
- `package-catalog.json` from GitHub at resolution time). OATS resolves the
168
- bundled catalog only. Held for a separate decision.
169
- - The `@oas-framework/*` packages are **not deprecated** by this release;
170
- that action belongs to their maintainer.
93
+ OATS Desktop 0.22.0 accepts a kernel with `desktopApi: 1` in
94
+ `>=0.22.0 <0.23.0`, probing `@awebai/oats`. The old OAS Desktop and this CLI
95
+ cannot see each other, so upgrade both together. macOS builds are ad-hoc
96
+ signed, not notarized; see [the Desktop guide](../desktop.md).
97
+
98
+ ## Also
99
+
100
+ - The kernel ships a `LICENSE` file (MIT).
101
+ - Root `npm test` runs the Desktop suites when their dependencies are
102
+ installed and otherwise prints the install command.
103
+ - The OAS 0.21.0 remote official catalog is not included; OATS resolves the
104
+ bundled catalog only.
171
105
 
172
106
  ## Install
173
107
 
@@ -176,5 +110,4 @@ npm install -g @awebai/oats@latest
176
110
  pi install npm:@awebai/oats-pi@latest
177
111
  ```
178
112
 
179
- Install matching kernel/adapter versions; they publish in lockstep from
180
- one tag.
113
+ Install matching kernel and adapter versions.