@awebai/oats 0.30.0 → 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 (118) hide show
  1. package/docs/desktop-cli-api.md +3 -3
  2. package/docs/implementation.md +2 -1
  3. package/docs/integrations.md +1 -1
  4. package/docs/knowledge.md +4 -4
  5. package/docs/official-catalog.md +3 -3
  6. package/docs/packages.md +8 -8
  7. package/docs/plans/0.30-close-out.md +24 -2
  8. package/docs/release-lane.md +7 -2
  9. package/docs/release-notes/v0.30.1.md +123 -0
  10. package/docs/souls-and-instances.md +2 -2
  11. package/docs/workspaces.md +6 -1
  12. package/lib/packages.mjs +1 -1
  13. package/lib/resolve.mjs +1 -1
  14. package/package-catalog.json +2 -2
  15. package/package.json +1 -3
  16. package/skills/oats-getting-started/SKILL.md +1 -1
  17. package/capabilities/oats-authoring/LICENSE +0 -21
  18. package/capabilities/oats-authoring/oats-package.json +0 -11
  19. package/capabilities/oats-authoring/oats.json +0 -12
  20. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
  21. package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
  22. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
  23. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
  24. package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1672
  25. package/capabilities/oats-aweb/injects/aweb.md +0 -47
  26. package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -365
  27. package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
  28. package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
  29. package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
  30. package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
  31. package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
  32. package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
  33. package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
  34. package/capabilities/oats-aweb/oats.json +0 -201
  35. package/capabilities/oats-aweb/skills/LICENSE +0 -21
  36. package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
  37. package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
  38. package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
  39. package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
  40. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
  41. package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
  42. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -286
  43. package/capabilities/oats-code-review/injects/reviewer.md +0 -26
  44. package/capabilities/oats-code-review/oats.json +0 -16
  45. package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +0 -66
  46. package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +0 -30
  47. package/capabilities/oats-code-review/skills/security-review/SKILL.md +0 -56
  48. package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +0 -34
  49. package/capabilities/oats-developer/injects/developer.md +0 -38
  50. package/capabilities/oats-developer/oats.json +0 -17
  51. package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +0 -43
  52. package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +0 -47
  53. package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +0 -65
  54. package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +0 -37
  55. package/capabilities/oats-developer/skills/worktrees/SKILL.md +0 -36
  56. package/capabilities/oats-engineering-expert/injects/expert.md +0 -37
  57. package/capabilities/oats-engineering-expert/oats.json +0 -17
  58. package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +0 -37
  59. package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +0 -52
  60. package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +0 -50
  61. package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +0 -53
  62. package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +0 -49
  63. package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
  64. package/capabilities/oats-jira/injects/jira.md +0 -10
  65. package/capabilities/oats-jira/oats.json +0 -22
  66. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
  67. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
  68. package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
  69. package/capabilities/oats-linear/injects/linear.md +0 -8
  70. package/capabilities/oats-linear/oats.json +0 -24
  71. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
  72. package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
  73. package/capabilities/oats-okf/bin/oats-okf.mjs +0 -213
  74. package/capabilities/oats-okf/injects/okf.md +0 -42
  75. package/capabilities/oats-okf/lib/binding-wire.mjs +0 -380
  76. package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
  77. package/capabilities/oats-okf/lib/config.mjs +0 -124
  78. package/capabilities/oats-okf/lib/consult.mjs +0 -518
  79. package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
  80. package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
  81. package/capabilities/oats-okf/lib/inspection.mjs +0 -138
  82. package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
  83. package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
  84. package/capabilities/oats-okf/lib/io.mjs +0 -118
  85. package/capabilities/oats-okf/lib/migration.mjs +0 -137
  86. package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
  87. package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
  88. package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
  89. package/capabilities/oats-okf/lib/sources.mjs +0 -438
  90. package/capabilities/oats-okf/lib/stores.mjs +0 -473
  91. package/capabilities/oats-okf/lib/worker.mjs +0 -486
  92. package/capabilities/oats-okf/oats.json +0 -151
  93. package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
  94. package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
  95. package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
  96. package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
  97. package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
  98. package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
  99. package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
  100. package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
  101. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
  102. package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
  103. package/capabilities/oats-okf-harvest/oats.json +0 -26
  104. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
  105. package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
  106. package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
  107. package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  108. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
  109. package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
  110. package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
  111. package/capabilities/oats-okf-maintenance/oats.json +0 -21
  112. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
  113. package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
  114. package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
  115. package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
  116. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -134
  117. package/capabilities/oats-workspace-experts/injects/oats-experts.md +0 -26
  118. package/capabilities/oats-workspace-experts/oats.json +0 -9
@@ -591,7 +591,7 @@ Read-only (it writes no lock):
591
591
  "souls":["rm"],"capabilities":["nw-house-style"],"publishes":null,"url":"https://github.com/nw/agents/tree/66566512…",
592
592
  "membershipFile":{"path":"oats-membership.yaml","url":"https://github.com/nw/agents/blob/66566512…/oats-membership.yaml"}}],
593
593
  "packages":[{"id":"oats.okf","version":"3.0.0","source":"catalog:oats.okf","commit":"ab897841…","integrity":"sha256-bada35…",
594
- "capabilities":["oats.okf"],"souls":[],"latest":{"version":"4.0.4","ref":"v4.0.4"}}],
594
+ "capabilities":["oats.okf"],"souls":[],"latest":{"version":"4.0.5","ref":"v4.0.5"}}],
595
595
  "declaredPackages":["oats.framework","oats.okf"],"unsynced":["oats.framework"],"stale":[],
596
596
  "external":[{"source":"git:github.com/oss/experts@3c606e09…","soul":"security-reviewer"}],
597
597
  "problems":[],"warnings":[],
@@ -642,8 +642,8 @@ packages' capabilities and souls, sorted by name, then origin. Both carry
642
642
  "defaultTeam":{"label":"mine","team":"mine:ana.aweb.ai","from":"deployment"},
643
643
  "private":false,"path":"souls/writer","work":"directory","description":"Drafts campaigns.","harness":"pi","model":null,"harnessFrom":"kernel-default",
644
644
  "file":{"path":"souls/writer/soul.yaml","url":null},"spawnable":true,"problem":null},
645
- {"name":"knowledge-maintainer","qualifiedName":"oats.okf/knowledge-maintainer","origin":"package oats.okf v4.0.4","kind":"package","package":"oats.okf",
646
- "version":"4.0.4","repoKey":"github.com/awebai/oats-okf","commit":"a4ccca02…","teams":null,"defaultTeam":null,"private":false,
645
+ {"name":"knowledge-maintainer","qualifiedName":"oats.okf/knowledge-maintainer","origin":"package oats.okf v4.0.5","kind":"package","package":"oats.okf",
646
+ "version":"4.0.5","repoKey":"github.com/awebai/oats-okf","commit":"26d8216f…","teams":null,"defaultTeam":null,"private":false,
647
647
  "path":"oats-package/souls/knowledge-maintainer","work":"directory","description":"Reviews harvested knowledge.","harness":"pi","model":null,
648
648
  "harnessFrom":"kernel-default","file":{"path":"oats-package/souls/knowledge-maintainer/soul.yaml","url":null},
649
649
  "spawnable":false,"problem":{"code":"E_TEAM_UNKNOWN","message":"team \"reviewers\" is not declared (oats-local.yaml#/souls/teams/…)"}}],
@@ -30,7 +30,8 @@ published to npm. Its developer docs are in
30
30
  | `lib/` | the kernel (below) |
31
31
  | `injects/` | the kernel and work-mode instruction blocks composed into every instance |
32
32
  | `skills/` | bootstrap skills shipped with the kernel |
33
- | `capabilities/` | generated mirrors of released package capabilities (for example `oats-okf*`), checked by `scripts/check-okf-mirror.mjs` |
33
+ | `capabilities/` | this repository's own member capabilities (`oats-workspace-experts`), discovered at the member's latest state |
34
+ | `mirrors/` | generated byte mirrors of the official packages' capabilities (for example `oats-okf*`, checked by `scripts/check-okf-mirror.mjs`): release-lane and test material, kept out of `capabilities/` so member discovery does not list them a second time; not shipped in the npm package |
34
35
  | `oats-package/` | the `oats.framework` package |
35
36
  | `souls/` | this repository's own souls (a workspace member) |
36
37
  | `docs/` | the reference pages, schemas, design records and release notes |
@@ -40,7 +40,7 @@ arrives from.
40
40
  ```yaml
41
41
  # oats-workspace.yaml: one default per slot, for every soul
42
42
  packages:
43
- oats.okf: v4.0.4
43
+ oats.okf: v4.0.5
44
44
  oats.aweb: v1.17.1
45
45
  oats.linear: v1.0.1
46
46
  oats.jira: v1.0.1
package/docs/knowledge.md CHANGED
@@ -26,7 +26,7 @@ The workspace pins the package and fills the slot for every soul by default:
26
26
  ```yaml
27
27
  # oats-workspace.yaml (excerpt)
28
28
  packages:
29
- oats.okf: v4.0.4
29
+ oats.okf: v4.0.5
30
30
  defaults:
31
31
  knowledge: { oats.okf: { from: package } }
32
32
  stores:
@@ -207,9 +207,9 @@ its `oats trigger test` passes.
207
207
 
208
208
  | Capability | Composed into | Skills | Inject |
209
209
  |---|---|---|---|
210
- | `oats.okf` | every working soul it serves | [`okf-consultation`](../capabilities/oats-okf/skills/okf-consultation/SKILL.md), [`okf-instance-knowledge`](../capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md) | Consult soul and instance knowledge; capture with judgment. |
211
- | `oats.okf-harvest` | `oats.okf/knowledge-harvester` | `knowledge-theory`, [`knowledge-harvest`](../capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md), `okf-authoring` | A judge; its staged roots are its only write surface. |
212
- | `oats.okf-maintenance` | `oats.okf/knowledge-maintainer` | `knowledge-theory`, [`knowledge-review`](../capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md), `okf-authoring`, [`okf-trigger-setup`](../capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md) | One PR per instance; never supersede silently. |
210
+ | `oats.okf` | every working soul it serves | [`okf-consultation`](../mirrors/oats-okf/skills/okf-consultation/SKILL.md), [`okf-instance-knowledge`](../mirrors/oats-okf/skills/okf-instance-knowledge/SKILL.md) | Consult soul and instance knowledge; capture with judgment. |
211
+ | `oats.okf-harvest` | `oats.okf/knowledge-harvester` | `knowledge-theory`, [`knowledge-harvest`](../mirrors/oats-okf-harvest/skills/knowledge-harvest/SKILL.md), `okf-authoring` | A judge; its staged roots are its only write surface. |
212
+ | `oats.okf-maintenance` | `oats.okf/knowledge-maintainer` | `knowledge-theory`, [`knowledge-review`](../mirrors/oats-okf-maintenance/skills/knowledge-review/SKILL.md), `okf-authoring`, [`okf-trigger-setup`](../mirrors/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md) | One PR per instance; never supersede silently. |
213
213
 
214
214
  Working souls get no promotion doctrine: only the harvester judges and only
215
215
  the maintainer merges. `knowledge-theory` and `okf-authoring` ship as
@@ -10,9 +10,9 @@ or workspace membership alone does not make a package official.
10
10
  | package | release | capabilities | package souls |
11
11
  |---|---|---|---|
12
12
  | `oats.framework` | `oats-framework/v1.4.0` (this repository) | `oats.core`, `oats.setup`, `oats.knowledge-theory` | `knowledge-theory-expert` |
13
- | `oats.okf` | `v4.0.4` | `oats.okf` (knowledge), `oats.okf-harvest`, `oats.okf-maintenance` | `knowledge-harvester`, `knowledge-maintainer` |
13
+ | `oats.okf` | `v4.0.5` | `oats.okf` (knowledge), `oats.okf-harvest`, `oats.okf-maintenance` | `knowledge-harvester`, `knowledge-maintainer` |
14
14
  | `oats.aweb` | `v1.17.1` | `oats.aweb` (messaging) | |
15
- | `oats.engineering` | `v1.1.0` | `oats.engineering-expert`, `oats.developer`, `oats.code-review` | `code-reviewer` |
15
+ | `oats.engineering` | `v1.3.0` | `oats.engineering-expert`, `oats.developer`, `oats.code-review` | `code-reviewer` |
16
16
  | `oats.authoring` | `v1.0.3` | `oats.authoring` | |
17
17
  | `oats.jira` | `v1.0.1` | `oats.jira` (tasks) | |
18
18
  | `oats.linear` | `v1.0.1` | `oats.linear` (tasks) | |
@@ -27,7 +27,7 @@ no lock and adds nothing to an existing workspace.
27
27
  ## Find and use packages
28
28
 
29
29
  - A workspace pins an official package by **bare version** in its
30
- `packages:` map (`oats.okf: v4.0.4`); `oats sync` resolves it through the
30
+ `packages:` map (`oats.okf: v4.0.5`); `oats sync` resolves it through the
31
31
  catalog to an exact commit, fetches it, verifies its integrity and locks it.
32
32
  A package outside the catalog is written `git:<repo>@<ref>`. Pinning does
33
33
  not join a team or adopt the publisher's workspace. See
package/docs/packages.md CHANGED
@@ -44,14 +44,14 @@ whole organisation:
44
44
 
45
45
  ```yaml
46
46
  packages:
47
- oats.okf: v4.0.4 # bare version → the official catalog
47
+ oats.okf: v4.0.5 # bare version → the official catalog
48
48
  acme.tools: git:github.com/acme/tools@v0.4.0 # direct ref: git:<repo>@<tag or full OID>
49
49
  ```
50
50
 
51
- - **Bare version** (`v4.0.4`, `4.0.4`, `1.0.0-rc.1`): the id is looked up in
51
+ - **Bare version** (`v4.0.5`, `4.0.5`, `1.0.0-rc.1`): the id is looked up in
52
52
  the official catalog — `package-catalog.json` in the `oats` repo, or the file
53
53
  named by `OATS_PACKAGE_CATALOG` — which supplies the repo url, the tag
54
- convention (`v4.0.4` or `oats-framework/v1.4.0`) and the payload path. An id
54
+ convention (`v4.0.5` or `oats-framework/v1.4.0`) and the payload path. An id
55
55
  the catalog does not know is `E_PACKAGE_MISSING` ("use `git:<repo>@<ref>` for
56
56
  a package outside the catalog"). The catalog is the reviewed official list
57
57
  ([official-catalog.md](official-catalog.md)) and the only way a
@@ -75,7 +75,7 @@ members:
75
75
  - git:github.com/acme/platform
76
76
  packages:
77
77
  oats.framework: v1.4.0
78
- oats.okf: v4.0.4
78
+ oats.okf: v4.0.5
79
79
  oats.aweb: v1.17.1
80
80
  teams:
81
81
  platform: { team: "platform:acme.aweb.ai", description: Platform engineering }
@@ -105,7 +105,7 @@ decision recorded in the lock.
105
105
  $ oats sync
106
106
  workspace acme (github.com/acme/agents @ 3f2a9c1e)
107
107
  members agents ✓↔ (@ 3f2a9c1e) platform ✓↔ (@ 77c0a1b2) billing ✗ (no-backlink)
108
- packages acme.tools 0.4.0 ✓ (@ 47f4b816) oats.okf 4.0.4 ✓ (@ a4ccca02)
108
+ packages acme.tools 0.4.0 ✓ (@ 47f4b816) oats.okf 4.0.5 ✓ (@ 26d8216f)
109
109
  changed acme.tools — → 0.4.0 (@ 47f4b816)
110
110
  souls 9 discovered (6 members, 1 external, 2 package, 0 disabled here) · 0 private capabilities
111
111
  teams platform (shared) · this deployment's: oats teams
@@ -160,8 +160,8 @@ same workspace commit hold identical locks.
160
160
  "source": "catalog:oats.okf",
161
161
  "url": "https://github.com/awebai/oats-okf.git",
162
162
  "path": "oats-package",
163
- "version": "4.0.4",
164
- "commit": "a4ccca0230b75961daa00f59f29b8264be6fb5e8",
163
+ "version": "4.0.5",
164
+ "commit": "26d8216f8ce986cad1ffa7a8291b4a4978510ee2",
165
165
  "integrity": "sha256-…",
166
166
  "capabilities": ["oats.okf", "oats.okf-harvest", "oats.okf-maintenance"]
167
167
  },
@@ -331,7 +331,7 @@ A soul that names one of the package's capabilities with
331
331
  {
332
332
  "policy": "docs/official-catalog.md",
333
333
  "packages": {
334
- "oats.okf": { "url": "https://github.com/awebai/oats-okf.git", "ref": "v4.0.4", "path": "oats-package" },
334
+ "oats.okf": { "url": "https://github.com/awebai/oats-okf.git", "ref": "v4.0.5", "path": "oats-package" },
335
335
  "oats.framework": { "url": "https://github.com/awebai/oats.git", "ref": "oats-framework/v1.4.0", "path": "oats-package" }
336
336
  }
337
337
  }
@@ -1,7 +1,7 @@
1
1
  # OATS 0.30 close-out: the shared plan
2
2
 
3
3
  The single source of truth for the rest of 0.30, owned by BOTH leads (oats-expert-knowledge-reworks
4
- and oats-expert-antares; Juan asked for joint work on 2026-09-28). Whoever changes the state updates
4
+ and oats-expert-antares, succeeded by oats-expert-steward; Juan asked for joint work on 2026-09-28). Whoever changes the state updates
5
5
  this file.
6
6
 
7
7
  ## Rules
@@ -20,7 +20,7 @@ this file.
20
20
  | 5 | The 0.30.0 release PR (brief below) | lead | cli-dev-v2-native | briefed |
21
21
  | 6 | Full rehearsal re-run on the final heads (all cases, incl. 5 and 10); close-out; retire case 9; the 0.30 runbook for Juan and Pepe | Antares | — | DONE on the final heads (main kernel stamped 0.30.0 + aweb v1.17.1 + okf v4.0.4): all cases PASS (1–8, 10, onboarding (a)–(e) + resume, the BYOT leave/retire owner commands actually run → revoked, 22 clean retires). Known: 8 (E_SPAWN_FAILED), the BYOT membership limit. Runbook for Juan and Pepe: next |
22
22
  | 7a | automations.trust (#300, ACKed a0562b9f) + the Desktop grouping of `untrusted` with owner-mismatch (not here, with the remedy; a real-capture test): the Desktop PR merges BEFORE #300. Both land before the tag, or both go to 0.30.1 together | lead | cli-dev-okf-ops + ux-designer-desktop-redesign | routed |
23
- | 7 | Tag v0.30.0 after green main CI on the exact release SHA | Antares | — | after 5 and 6 |
23
+ | 7 | Tag v0.30.0 after green main CI on the exact release SHA | Antares | — | DONE: v0.30.0 + oats-framework/v1.4.0 on dec58082 (main CI green on it); published @awebai/oats 0.30.0 (shasum 2e370157) + @awebai/oats-pi 0.30.0, latest; a clean-room onboard with the published package locks framework 1.4.0, aweb 1.17.1, okf 4.0.4, engineering 1.1.0 |
24
24
 
25
25
  **Sequence:** 1–4 in parallel → 6 on the final heads → 5 with the final pins → 7.
26
26
 
@@ -50,6 +50,22 @@ this file.
50
50
  8. A check of the PACKED tarball: its `package-catalog.json` carries oats.engineering 1.1.0,
51
51
  oats.aweb 1.17.1 and oats.okf 4.0.4.
52
52
 
53
+ ## Released (2026-09-29)
54
+ **OATS 0.30.0** on npm (`@awebai/oats` and `@awebai/oats-pi`, latest), from `dec58082` (#297).
55
+ Tags `v0.30.0` and `oats-framework/v1.4.0` are both on that SHA. Pins: oats.aweb 1.17.1,
56
+ oats.okf 4.0.4, oats.engineering 1.1.0, framework 1.4.0. A clean-room `oats onboard` against the
57
+ published package locks all of them without a catalog override.
58
+
59
+ Found by the rehearsals, and fixed before the tag:
60
+ - joined teams unusable against real aw;
61
+ - okf readiness always `unknown`;
62
+ - `oats aweb setup` from a deployment;
63
+ - launch-hook warnings dropped;
64
+ - `readiness --soul` with no soul copy;
65
+ - a newcomer's first `--join`;
66
+ - a stale `settings.team` orphaning identities on retire;
67
+ - a BYOT retire with no owner command.
68
+
53
69
  ## After the tag
54
70
  - **Flag day:** the oats.engineering release with the souls' `launch:` (experts on Claude Code +
55
71
  Opus 5.5; `code-reviewer` on Codex + Astra; compat `>=0.30.0`), and committing the shared team id.
@@ -57,5 +73,11 @@ this file.
57
73
  - the kernel items that miss the tag: retire of homes whose session is gone, automations.trust;
58
74
  - deployment-scope capability commands without `--soul`;
59
75
  - the case-8 pre-check (`E_TEAM_UNCONFIGURED`).
76
+ - the kernel refuses an unrecognised spawn argument (a bare `join=oats` without
77
+ `--provider oats.aweb` was silently ignored, so the spawn joined nothing).
78
+ - a launch (spawn, `session start`, `session restart`) puts the spawning kernel's bin directory
79
+ FIRST on the instance's PATH and records it in the launch recipe, so plain `oats` inside an
80
+ instance is the kernel that made it (two kernels side by side: a 0.30 home ran the global 0.24.6
81
+ and `oats aweb` was `E_UNKNOWN_COMMAND`; the injected instructions tell agents to run plain `oats`).
60
82
  - **Parked:** item L (`git rm agents/`, cli-dev-v2-native). It needs the GitHub `workflow` token
61
83
  scope from the human on the lead's machine.
@@ -174,9 +174,14 @@ not weaken the pre-publish build/inventory/ABI gates.
174
174
  ## Mirroring a released `oats.okf`
175
175
 
176
176
  The standalone `awebai/oats-okf` repository is authoritative. This repository
177
- carries a generated mirror of its capabilities under `capabilities/oats-okf*/`
177
+ carries a generated mirror of its capabilities under `mirrors/oats-okf*/`
178
178
  and the inventory `scripts/okf-source-inventory.json`; neither is edited by
179
- hand. After an okf release is tagged:
179
+ hand. The inventory records each capability at its path inside the package
180
+ (`capabilities/oats-okf`, what the tag attests) and, in `mirrorPaths`, where
181
+ this repository keeps it. The mirror is not under `capabilities/`: this
182
+ repository is a workspace member, and member discovery would list it as a
183
+ latest-state member capability beside the package. After an okf release is
184
+ tagged:
180
185
 
181
186
  1. Check out the release in a clean clone of `awebai/oats-okf` at the tagged
182
187
  commit, with the tag present locally and `origin` pointing at the official
@@ -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.
@@ -150,8 +150,8 @@ composed skills and instructions, a spawn records:
150
150
  "commit": "3f2a9c1e…", "digest": "sha256-…", "materializedAt": "2026-09-24T10:12:44.118Z"
151
151
  },
152
152
  "oats.okf": {
153
- "from": { "kind": "package", "package": "oats.okf", "version": "4.0.4", "commit": "a4ccca02…", "integrity": "sha256-…", "repoKey": "github.com/awebai/oats-okf" },
154
- "commit": "a4ccca02…", "digest": "sha256-…", "materializedAt": "2026-09-24T10:12:44.201Z"
153
+ "from": { "kind": "package", "package": "oats.okf", "version": "4.0.5", "commit": "26d8216f…", "integrity": "sha256-…", "repoKey": "github.com/awebai/oats-okf" },
154
+ "commit": "26d8216f…", "digest": "sha256-…", "materializedAt": "2026-09-24T10:12:44.201Z"
155
155
  }
156
156
  },
157
157
  "providers": {
@@ -55,7 +55,7 @@ members: # repo refs, NO @revision (E_WORKSPAC
55
55
 
56
56
  packages: # the ONLY versioned things
57
57
  oats.framework: v1.4.0 # bare version → resolves through the official catalog
58
- oats.okf: v4.0.4
58
+ oats.okf: v4.0.5
59
59
  acme.tools: git:github.com/acme/tools@v0.4.0 # outside the catalog → git:<repo>@<tag|OID>; still a package
60
60
 
61
61
  teams: # SHARED teams: the same provider team for everyone
@@ -226,6 +226,11 @@ A repository may be a **member** (it completed the handshake; its `souls/*` and
226
226
  version }` on the member row (informational) and does **not** list the
227
227
  package's capabilities as member capabilities.
228
228
 
229
+ A publisher that also keeps copies of its package's capabilities (a mirror, a
230
+ fixture) keeps them outside `capabilities/`, or discovery lists them as member
231
+ capabilities too: the same capability offered twice, once at latest state. The
232
+ `oats` repository keeps its mirrors of the official packages in `mirrors/`.
233
+
229
234
  So the framework's own souls say `oats.okf: { from: package }` even though
230
235
  `oats-okf` is a member of the OATS workspace, and every package repo carries a
231
236
  member soul that is the expert in that capability (`oats-okf-expert`,
package/lib/packages.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * OATS packages — versions, lock v3 (workspace model v2).
3
3
  *
4
4
  * Contract: docs/design/2026-09-23-workspace-module-contracts.md §4.
5
- * Decision: agents/oats-expert/soul/knowledge/decisions/workspace-model-v2.md.
5
+ * Decision: https://github.com/awebai/oats-knowledge/blob/main/knowledge/nodes/oats-expert/decisions/workspace-model-v2.md.
6
6
  *
7
7
  * A package is a place to fetch from WITH a version attached. Nothing is
8
8
  * installed: `resolvePackages` turns each `workspace.packages` entry into an
package/lib/resolve.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * lib/resolve.mjs — from a soul to an immutable resolution (module contract §3).
3
3
  *
4
4
  * Contract: docs/design/2026-09-23-workspace-module-contracts.md §3.
5
- * Decision: agents/oats-expert/soul/knowledge/decisions/workspace-model-v2.md (6, 12, 14, 16, 19–21).
5
+ * Decision: https://github.com/awebai/oats-knowledge/blob/main/knowledge/nodes/oats-expert/decisions/workspace-model-v2.md (6, 12, 14, 16, 19–21).
6
6
  *
7
7
  * `resolveSoul(discovery, soulEntry, options)` turns a discovered soul into the
8
8
  * exact set of modules an instance will be built from: which capability comes
@@ -3,7 +3,7 @@
3
3
  "packages": {
4
4
  "oats.okf": {
5
5
  "url": "https://github.com/awebai/oats-okf.git",
6
- "ref": "v4.0.4",
6
+ "ref": "v4.0.5",
7
7
  "path": "oats-package"
8
8
  },
9
9
  "oats.aweb": {
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "oats.engineering": {
30
30
  "url": "https://github.com/awebai/oats-engineering.git",
31
- "ref": "v1.1.0",
31
+ "ref": "v1.3.0",
32
32
  "path": "oats-package"
33
33
  },
34
34
  "oats.framework": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awebai/oats",
3
- "version": "0.30.0",
3
+ "version": "0.30.1",
4
4
  "description": "OATS (Open Agent Team Specification) — durable souls, disposable instances, targetable capability packages, and the runtime-neutral oats CLI/kernel.",
5
5
  "keywords": [
6
6
  "agents",
@@ -18,7 +18,6 @@
18
18
  "check": "node scripts/check-package-dry-runs.mjs --syntax-only",
19
19
  "check:pi": "node --experimental-strip-types --check packages/pi/extension/index.ts",
20
20
  "validate": "node scripts/validate-project.mjs",
21
- "validate:okf": "node scripts/validate-okf.mjs",
22
21
  "pack:check": "node scripts/check-package-dry-runs.mjs",
23
22
  "smoke:tarball": "node scripts/clean-room-smoke.mjs"
24
23
  },
@@ -32,7 +31,6 @@
32
31
  "lib/",
33
32
  "skills/",
34
33
  "injects/",
35
- "capabilities/",
36
34
  "docs/",
37
35
  "README.md",
38
36
  "package-catalog.json",
@@ -61,7 +61,7 @@ members:
61
61
  - git:github.com/acme/platform
62
62
  packages:
63
63
  oats.framework: v1.4.0 # bare versions resolve through the official catalog
64
- oats.okf: v4.0.4
64
+ oats.okf: v4.0.5
65
65
  defaults:
66
66
  capabilities: { oats.core: { from: package } }
67
67
  knowledge: { oats.okf: { from: package } }
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 OATS Framework
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,11 +0,0 @@
1
- {
2
- "package": "oats.authoring",
3
- "version": "1.0.3",
4
- "description": "Official additive OATS guidance for capability, skill, and soul authoring.",
5
- "compatibility": {
6
- "oats": ">=0.25.0"
7
- },
8
- "capabilities": [
9
- "."
10
- ]
11
- }
@@ -1,12 +0,0 @@
1
- {
2
- "capability": "oats.authoring",
3
- "version": "1.0.3",
4
- "compatibility": { "oats": ">=0.25.0" },
5
- "description": "Additive framework-authoring guidance for capability packages, agent skills, and souls.",
6
- "requires": [],
7
- "skills": [
8
- "skills/integration-authoring",
9
- "skills/skill-craft",
10
- "skills/soul-craft"
11
- ]
12
- }
@@ -1,84 +0,0 @@
1
- ---
2
- name: integration-authoring
3
- description: >-
4
- Route custom OATS capability-package and integration work to the framework's
5
- integrations expert. Use when building, adapting, or debugging a reusable
6
- capability, new tasks/messaging/knowledge core capability, oats.json manifest,
7
- lifecycle hook, or operational command—not merely activating an existing
8
- package. Triggers: "custom integration", "capability package", "integrate
9
- our tracker", "new messaging integration", "write an oats.json".
10
- ---
11
-
12
- # Capability and integration authoring — delegate
13
-
14
- A capability package may ship skills, instance instructions, requirements,
15
- namespaced commands, and declared hooks. A core capability is the constrained
16
- kind that fills one of the knowledge, messaging or tasks positions (its
17
- manifest's `layer` field names which). Building either requires
18
- manifest, security, targeting-boundary, collision, and probe discipline; use
19
- the framework's **integrations-expert** soul rather than improvising.
20
-
21
- If the user only wants an existing package, declare it and give it to souls;
22
- no build is needed:
23
-
24
- ```yaml
25
- # oats-workspace.yaml (host repository): declaring the package is the trust decision
26
- packages:
27
- vendor.review: git:github.com/vendor/review@v1.0.0
28
- # a soul's soul.yaml, or the workspace defaults: a capability the package exports
29
- # (a package may export several; the soul names each one it wants)
30
- capabilities:
31
- vendor.review: { from: package }
32
- ```
33
-
34
- Then run `oats sync` (fetch, verify integrity, lock). The oats.setup
35
- capability's **oats-package-pins** skill has the procedure.
36
-
37
- ## 1. Verify the expert is available
38
-
39
- Run `oats souls` in the deployment and confirm it resolves the
40
- `integrations-expert` soul (a member repository or package provides it). If it
41
- is absent, ask the human which OATS deployment owns reusable package work;
42
- never locate or import private kernel files.
43
-
44
- ## 2. Spawn the expert against the package's repository
45
-
46
- The package lives in its own repository. Make that repository a member of the
47
- workspace (or use the member that already holds it), then spawn the expert on
48
- it:
49
-
50
- ```bash
51
- oats spawn integrations-expert --preview \
52
- --purpose <package-slug> \
53
- --repo <member clone of the package repository> \
54
- --work worktree \
55
- --task '<capability intent; layer if any; skills/instructions/commands/hooks; external tools; which souls should get it; distribution path>'
56
- # review the preview, then run the same command without --preview
57
- ```
58
-
59
- Use `--relation child --relative-to <your-instance>` only when the documented
60
- workflow makes the expert your child; otherwise leave the spawn unrelated. A
61
- package is distributed from its own repository as `oats-package/` with a
62
- version tag; a framework contribution belongs in the framework's repository.
63
-
64
- ## 3. Brief the design boundary
65
-
66
- Tell the expert:
67
-
68
- - whether it is additive or implements exactly one of knowledge/messaging/tasks;
69
- - external requirements and executable surfaces (commands, hooks);
70
- - intended distribution and version/compatibility;
71
- - which souls or workspace defaults should receive it, and its settings; and
72
- - expected skill/instruction collisions (a duplicate skill name fails the spawn).
73
-
74
- Which souls get a capability is declared by the workspace (`defaults`) and the
75
- souls (`soul.yaml` `capabilities`), never in the manifest. The expert must
76
- test exact pi/Claude/Codex instance materialization, generated instructions,
77
- command gating, deterministic hooks, and the lock's integrity check as
78
- applicable.
79
-
80
- ## 4. Hand off
81
-
82
- Report the new instance (`oats status`). The expert follows its
83
- package/integration craft, runs a preview-only probe, and leaves the
84
- `packages:` pin and the `oats sync` for the user.