@awebai/oats 0.24.12 → 0.25.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.
- package/bin/oats.mjs +936 -2822
- package/docs/capabilities.md +136 -323
- package/docs/configuration.md +68 -533
- package/docs/design/2026-09-16-fresh-operator-walkthrough.md +19 -14
- package/docs/design/2026-09-16-portable-migration-evidence.md +2 -0
- package/docs/design/2026-09-16-portable-onboarding.md +4 -2
- package/docs/design/2026-09-20-redesign-program-board.md +1 -1
- package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +2 -0
- package/docs/design/2026-09-23-simplified-workspace-model.md +711 -0
- package/docs/design/2026-09-23-workspace-module-contracts.md +309 -0
- package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +65 -0
- package/docs/design/README.md +20 -8
- package/docs/design/operations-contract.md +1 -0
- package/docs/design/package-engine-contract.md +1 -1
- package/docs/design/package-runtime-api.md +1 -1
- package/docs/desktop-cli-api.md +386 -6
- package/docs/desktop-succession.md +3 -4
- package/docs/first-team.md +107 -224
- package/docs/implementation.md +6 -4
- package/docs/integrations.md +45 -44
- package/docs/knowledge-capability-authoring.md +10 -4
- package/docs/knowledge-migration.md +5 -4
- package/docs/knowledge-reference/package-craft.md +11 -3
- package/docs/knowledge.md +24 -8
- package/docs/layers.md +3 -3
- package/docs/oats-local.schema.json +50 -0
- package/docs/oats-membership.schema.json +23 -0
- package/docs/oats-workspace.schema.json +133 -48
- package/docs/official-marketplace.md +9 -6
- package/docs/packages.md +229 -440
- package/docs/rebuild-to-v2.md +233 -0
- package/docs/release-notes/v0.24.13.md +51 -0
- package/docs/release-notes/v0.25.0.md +99 -0
- package/docs/soul.schema.json +41 -68
- package/docs/souls-and-instances.md +175 -108
- package/docs/workspace-adoption.md +70 -345
- package/docs/workspaces.md +429 -119
- package/lib/core.mjs +419 -55
- package/lib/instance-resolution.mjs +312 -0
- package/lib/materialize.mjs +580 -0
- package/lib/packages.mjs +501 -1273
- package/lib/remote.mjs +639 -0
- package/lib/resolve.mjs +576 -0
- package/lib/schedule.mjs +194 -34
- package/lib/workspace.mjs +635 -0
- package/package.json +1 -1
- package/lib/portable-migration-artifacts.mjs +0 -135
- package/lib/portable-migration-evidence.mjs +0 -305
- package/lib/portable-migration-store.mjs +0 -199
- package/lib/portable-migration.mjs +0 -104
- package/lib/portable-onboarding-acceptance.mjs +0 -66
- package/lib/setup-expert-source.mjs +0 -100
|
@@ -1,349 +1,74 @@
|
|
|
1
1
|
# Adopt the OATS development workspace
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`oats
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| Complete immutable instructions and skill resources | Native harness/model/auth, backend endpoint, home and durable state |
|
|
40
|
-
| A reviewed source revision | Exact executable approval, current readiness and deployment acceptance |
|
|
41
|
-
|
|
42
|
-
No machine paths, credentials, private team identifiers, accepted-store locator or
|
|
43
|
-
owner registry belongs in the public workspace. Knowledge publication and acceptance
|
|
44
|
-
(S7) remain separate; no ready knowledge export is advertised. Preserve the parked
|
|
45
|
-
roster/curation and every old home, lock, source, pending job, history and worktree.
|
|
46
|
-
|
|
47
|
-
## Onboard with OATS Soul Setup (0.24.2+)
|
|
48
|
-
|
|
49
|
-
With operator approval, [OATS 0.24.2](release-notes/v0.24.2.md) and later provide:
|
|
50
|
-
|
|
51
|
-
```sh
|
|
52
|
-
oats onboard --dir /absolute/context --json
|
|
3
|
+
> **Superseded (workspace model, 0.25).** The 0.24 narrative this page carried
|
|
4
|
+
> — `oats.yaml` exports, `imports:` of pinned source editions, "classic local
|
|
5
|
+
> bootstrap" with `oats onboard --dir`, source-edition inspection and
|
|
6
|
+
> `oats prepare` pilots — is history: none of those files or verbs exist under
|
|
7
|
+
> the workspace model (decision 5 of `workspace-model-v2`: no migration, v1
|
|
8
|
+
> declaration files are schema errors). What replaces it is short and is
|
|
9
|
+
> written once: **[rebuild-to-v2.md](rebuild-to-v2.md)** (§5 for the
|
|
10
|
+
> deployment layout `oats onboard` creates) and [workspaces.md](workspaces.md)
|
|
11
|
+
> for the model. This page only says what the framework's own workspace looks
|
|
12
|
+
> like under v2 and how to join it.
|
|
13
|
+
|
|
14
|
+
## The framework's own workspace (decisions 18–21)
|
|
15
|
+
|
|
16
|
+
Decision 18 (W9) converts every repository of the OATS organisation to a v2
|
|
17
|
+
member: `oats-membership.yaml` naming the host, v2 `souls/*/soul.yaml`, and
|
|
18
|
+
`capabilities/*/oats.json` for what it exports at latest state. The `oats`
|
|
19
|
+
repository hosts `oats-workspace.yaml` and the official
|
|
20
|
+
`package-catalog.json`. Until that conversion has landed on `main`, the
|
|
21
|
+
repository's checked-in `oats-workspace.yaml` is still `schemaVersion: 1` and a
|
|
22
|
+
0.25 kernel refuses it by name (`E_WORKSPACE_SCHEMA`) — the commands below
|
|
23
|
+
describe the target, not a workspace you can join today.
|
|
24
|
+
|
|
25
|
+
A framework repository is a **member and a package publisher at once**, and the
|
|
26
|
+
two roles never collapse: `oats-okf`, `oats-aweb`, `oats-jira`, `oats-linear`,
|
|
27
|
+
`oats-authoring`, `oats-dev` are members (their `souls/` — `okf-expert`,
|
|
28
|
+
`aweb-expert`, … — are discoverable at latest state, team `global`) **and**
|
|
29
|
+
their `oats-package/` is consumed only as a package: `from: package`, pinned
|
|
30
|
+
in the workspace's `packages:`, locked and approved per version. The framework's
|
|
31
|
+
own souls therefore say `oats.okf: { from: package }` even though `oats-okf` is
|
|
32
|
+
a member. A bare version in `packages:` (`oats.okf: v2.1.3`) resolves through
|
|
33
|
+
the catalog; a package outside it is written `git:<repo>@<ref>`.
|
|
34
|
+
|
|
35
|
+
## Join it on your machine
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
oats onboard ~/oats-workspace --workspace git:github.com/awebai/oats
|
|
53
39
|
```
|
|
54
40
|
|
|
55
|
-
This
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
the
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
## Stage two: published experts and pinned imports
|
|
91
|
-
|
|
92
|
-
- `oats-workspace.yaml` explicitly admits `oats` and the six intended capability
|
|
93
|
-
repositories: `oats-dev`, `oats-okf`, `oats-aweb`, `oats-authoring`, `oats-jira`
|
|
94
|
-
and `oats-linear`. It activates no additional capability; tasks default to none.
|
|
95
|
-
- `oats.yaml` exports the five knowledge-owning editions above plus the separate
|
|
96
|
-
`souls/oats-setup-expert` bootstrap edition, and the actual package roots
|
|
97
|
-
`oats-package` (`oats.framework`) and `capabilities/oats-authoring`, not
|
|
98
|
-
the npm root as a fictitious OATS distribution. Its workspace backlink names
|
|
99
|
-
the same framework repository.
|
|
100
|
-
- The editions are parallel to, not replacements for, the live `agents/` roster.
|
|
101
|
-
Each contains canonical instructions, `CLAUDE.md -> AGENTS.md`, and its reviewed
|
|
102
|
-
private procedures where applicable. No durable KB is copied into them; legacy
|
|
103
|
-
roster/knowledge cutover remains deferred until the fresh-reader proof against
|
|
104
|
-
the accepted public knowledge base.
|
|
105
|
-
- Each of the five expertise editions preserves its owner, node and four cross-reads.
|
|
106
|
-
Store `oats` requires the explicit `stores.oats` binding; no publisher writer,
|
|
107
|
-
production store or grants are supplied. An acceptance fixture is parent-owned
|
|
108
|
-
and cannot be counted as production knowledge adoption.
|
|
109
|
-
- Current authored expert editions require knowledge **oats.okf@2.1.2** and
|
|
110
|
-
messaging **oats.aweb@1.11.2** (both OATS >=0.24.4), not optional defaults.
|
|
111
|
-
The official catalog now offers **oats.okf 2.1.3** (per-cause `check` reasons,
|
|
112
|
-
a named remedy for a soul without `okf.json`, retired sources switch their
|
|
113
|
-
job off); editions move to it when their owner re-reviews them. These published revisions
|
|
114
|
-
are **not proof that their combined bindings/runtime profile is ready**. The provider
|
|
115
|
-
owner supplies that evidence and any subsequently reviewed compatible revision.
|
|
116
|
-
Do not replace either requirement with none or erase a read edge to launch.
|
|
117
|
-
|
|
118
|
-
At those authored revisions, the provider boundary is concrete:
|
|
119
|
-
|
|
120
|
-
- Published OKF 2.1.2 supports `inherit: stores.oats`, normalized to
|
|
121
|
-
`/bindings/knowledge/stores/oats`. The explicit `destination: oats` preserves
|
|
122
|
-
routing; omitting it would instead require `write.default`. No new schema,
|
|
123
|
-
owner or production locator is needed for this declaration.
|
|
124
|
-
- aweb 1.10.3 (`24efa6f9`) has no portable binding interface; **aweb 1.11.0**
|
|
125
|
-
(`v1.11.0`, OATS >=0.24.2) adds it; **1.11.1/1.11.2** (OATS >=0.24.4) are code-identical and declare its fixed reasons, owned operator keys and `helperInjection: omit` (a harvest helper has no messaging identity); the five editions pin 1.11.2. Its `check`
|
|
126
|
-
qualifies only an input-capable Claude/Codex primary with an explicit private team
|
|
127
|
-
and `delivery: session`; strict-Pi print reports `needs-configuration`. Status is on
|
|
128
|
-
the [program board](design/2026-09-20-redesign-program-board.md). Qualification
|
|
129
|
-
is HOME-route operational custody only: not human/native-principal delegation,
|
|
130
|
-
private grants, broker delivery or model consumption.
|
|
131
|
-
- Published OKF 2.1.2 accepts retained Claude/Codex helpers with the complete approved
|
|
132
|
-
capability closure and native-default model intent. Strict Pi still requires an
|
|
133
|
-
explicit model and the sole-OKF profile; Pi plus messaging remains unqualified.
|
|
134
|
-
This provider release alone is not combined-profile acceptance. Do not silently
|
|
135
|
-
switch runtimes, force a model, or drop capabilities.
|
|
136
|
-
|
|
137
|
-
These are explicit readiness holds, not reasons to weaken the source. Parent must
|
|
138
|
-
select reviewed compatible provider revisions and update the source pin deliberately
|
|
139
|
-
before claiming an operational pilot; metadata-only repository indexes change none
|
|
140
|
-
of these runtime facts.
|
|
141
|
-
|
|
142
|
-
Stage one used an empty imports list until source publication. All six imports
|
|
143
|
-
now pin **`906b1558633766cf489451f9b68016216acaa63b`** (after
|
|
144
|
-
[OATS v0.24.3](release-notes/v0.24.3.md)), the reviewed revision at which the
|
|
145
|
-
workspace declares the per-human private team policy (`teams: {private: per-human}`)
|
|
146
|
-
and every messaging edition carries its `teams: []` declaration — without them the
|
|
147
|
-
aweb provider cannot normalize in workspace context, as the second operator found.
|
|
148
|
-
Workspace update `f3ee31e0`. The five knowledge-owning experts therefore select
|
|
149
|
-
OKF 2.1.2 and aweb 1.11.2 with explicit core; setup remains provider-independent,
|
|
150
|
-
requiring core/setup and defaulting all three fundamental layers to none. It is
|
|
151
|
-
not a sixth knowledge owner. This deliberate repin, not a catalog/kernel upgrade
|
|
152
|
-
alone, advances the selected source requirements. Successful source inspection,
|
|
153
|
-
including `ready-for-preparation`, is still metadata readiness—not binding,
|
|
154
|
-
approval, enrollment or a running pilot.
|
|
155
|
-
|
|
156
|
-
## Preserve source-before-import publication order
|
|
157
|
-
|
|
158
|
-
1. Publish complete, reviewed source editions before pinning them. All six imports
|
|
159
|
-
use `906b1558633766cf489451f9b68016216acaa63b`. Future revisions must
|
|
160
|
-
likewise exist before their import update.
|
|
161
|
-
Never use an invented SHA, a mutable branch or an unreviewed local candidate
|
|
162
|
-
as the accepted source.
|
|
163
|
-
2. In each of the six repositories, review a root `oats.yaml` against its actual
|
|
164
|
-
source head and actual `oats-package/oats-package.json`. The declaration is:
|
|
165
|
-
|
|
166
|
-
```yaml
|
|
167
|
-
schemaVersion: 1
|
|
168
|
-
workspace:
|
|
169
|
-
source: git:github.com/awebai/oats
|
|
170
|
-
exports:
|
|
171
|
-
packages:
|
|
172
|
-
- path: oats-package
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Preserve payloads, versions, old tags and legacy templates. This does not
|
|
176
|
-
activate oats.dev, messaging or either optional task integration. Indexes are
|
|
177
|
-
published on `main` in all six capability repositories (oats-okf, oats-aweb,
|
|
178
|
-
oats-authoring, oats-jira, oats-dev, oats-linear); their publication proceeded
|
|
179
|
-
separately from the framework's own source imports.
|
|
180
|
-
3. A subsequent workspace commit pins the published source, never itself or a
|
|
181
|
-
future commit. The current first import is:
|
|
182
|
-
|
|
183
|
-
```yaml
|
|
184
|
-
imports:
|
|
185
|
-
- source: git:github.com/awebai/oats
|
|
186
|
-
soul: souls/oats-expert
|
|
187
|
-
revision: 906b1558633766cf489451f9b68016216acaa63b
|
|
188
|
-
alias: oats-expert
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
The [actual workspace](../oats-workspace.yaml) contains all six imports at that
|
|
192
|
-
same revision; this excerpt is not the full list.
|
|
193
|
-
The layout test checks all six imports and source-document declarations. Do not
|
|
194
|
-
change stable export paths or owners merely because the workspace advances.
|
|
195
|
-
4. Qualify reciprocal admission at the now-published observations. A missing
|
|
196
|
-
backlink, a fork's copied file or a stale workspace observation is not membership.
|
|
197
|
-
Cross-repository indexes may land separately; until both sides exist, report the
|
|
198
|
-
specific unqualified member rather than claim the whole graph is ready.
|
|
199
|
-
|
|
200
|
-
Membership selectors and backlinks omit `revision` deliberately: the repository
|
|
201
|
-
adapter observes the hosting provider's actual default branch, not a guessed
|
|
202
|
-
`main`. Within one preparation, observations are frozen. In particular, the
|
|
203
|
-
framework's self-member and workspace backlink must resolve to the **same commit**.
|
|
204
|
-
A separately pinned older workspace with backlinks resolving to a later head is
|
|
205
|
-
correctly stale; choose a fresh coherent observation, never rewrite an old retained
|
|
206
|
-
record. Imports have their own immutable source revision and need not track each
|
|
207
|
-
new workspace metadata commit.
|
|
208
|
-
|
|
209
|
-
Importing the exported soul directly does **not** follow the publisher's workspace
|
|
210
|
-
as adopter policy. A different workspace, or an explicitly standalone operator,
|
|
211
|
-
may consume it without membership in the OATS development workspace.
|
|
212
|
-
|
|
213
|
-
## Inspect source metadata before preparation
|
|
214
|
-
|
|
215
|
-
The public source inspector ships in [OATS 0.24.1](release-notes/v0.24.1.md),
|
|
216
|
-
following PR24 integration. Use an installed CLI containing that implementation.
|
|
217
|
-
It is **not supported by the original 0.24.0 release**: that older inspect route
|
|
218
|
-
can ignore the request flag and consult ambient classic configuration. Do not
|
|
219
|
-
infer command availability from a capability's version floor or today's catalog.
|
|
220
|
-
|
|
221
|
-
```sh
|
|
222
|
-
oats inspect --request /absolute/inspection.json --json
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
With the stage-two imports published, the authored inspection input can use the
|
|
226
|
-
same repository for workspace, member and source:
|
|
227
|
-
|
|
228
|
-
```json
|
|
229
|
-
{
|
|
230
|
-
"deployment": "/operator/deployments/oats-pilot",
|
|
231
|
-
"workTarget": "/operator/projects/oats",
|
|
232
|
-
"source": "oats-expert",
|
|
233
|
-
"origin": {
|
|
234
|
-
"kind": "operator",
|
|
235
|
-
"document": {"kind": "operator", "id": "workspace-adoption"},
|
|
236
|
-
"pointer": "/source"
|
|
237
|
-
},
|
|
238
|
-
"workspace": {
|
|
239
|
-
"source": "git:github.com/awebai/oats",
|
|
240
|
-
"origin": {
|
|
241
|
-
"kind": "operator",
|
|
242
|
-
"document": {"kind": "operator", "id": "workspace-adoption"},
|
|
243
|
-
"pointer": "/workspace"
|
|
244
|
-
}
|
|
245
|
-
},
|
|
246
|
-
"member": {
|
|
247
|
-
"source": "git:github.com/awebai/oats",
|
|
248
|
-
"origin": {
|
|
249
|
-
"kind": "operator",
|
|
250
|
-
"document": {"kind": "operator", "id": "workspace-adoption"},
|
|
251
|
-
"pointer": "/member"
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
The paths are operator-selected examples, not host defaults or new grants.
|
|
258
|
-
Independent adoption uses the full source/soul/revision/alias reference and an
|
|
259
|
-
explicit standalone context instead of workspace/member. Do not mix this inspect
|
|
260
|
-
mode with current-context flags or captured deployment/resolution selectors.
|
|
261
|
-
|
|
262
|
-
The result is **non-authorizing metadata**, not provider readiness: even `ok:true`
|
|
263
|
-
may carry `needs-configuration` or `separate-deployment-required`. A
|
|
264
|
-
`ready-for-preparation` observation still has no approval or enrollment effect.
|
|
265
|
-
Provider payloads and opaque adoption values are deliberately omitted. Preserve
|
|
266
|
-
the original authored inputs; neither the result nor its inspection request is a
|
|
267
|
-
preparation request or an issued mutation witness. In particular, `workTarget`
|
|
268
|
-
and inspection catalog wrappers are not accepted preparation fields.
|
|
269
|
-
|
|
270
|
-
The inspector owns transient repository scratch but writes no deployment state.
|
|
271
|
-
Missing paths need explicit operator provisioning and reinspection, not automatic
|
|
272
|
-
repair. Observing a project work target does not change the separate captured H/work
|
|
273
|
-
placement. Existing retained inspect remains the later exact-record inspection.
|
|
274
|
-
|
|
275
|
-
## Prepare a fresh local pilot only after the profile is qualified
|
|
276
|
-
|
|
277
|
-
Use the selected installed compatible CLI. Do not turn this source check into a
|
|
278
|
-
global install, a daemon start or a model/GUI test on another operator's machine.
|
|
279
|
-
Keep native HOME/profile/auth and explicit permission choices; no credential copy
|
|
280
|
-
or empty profile. Knowledge, messaging and tasks have distinct authority contracts.
|
|
281
|
-
|
|
282
|
-
Before preparing, the integration lead must supply:
|
|
283
|
-
|
|
284
|
-
- The published workspace/source observations and an explicit fresh physical
|
|
285
|
-
deployment/home placement. Do not copy old locks, retained records or identities.
|
|
286
|
-
- An operator-owned nonsecret request with `workspace` (its source and origin),
|
|
287
|
-
`source: "oats-expert"` (or another published expert alias), and `mode: "directory"`.
|
|
288
|
-
Standalone callers instead give the complete `{source,soul,revision,alias}`
|
|
289
|
-
reference and an explicit standalone context; they do not inherit this workspace.
|
|
290
|
-
- Explicit provider-specific settings and bindings. OKF preparation needs selected
|
|
291
|
-
absolute `bindings-file` and `state-dir`, `harvest-runtime`, and the `stores.oats`
|
|
292
|
-
binding; an omitted `harvest-model` preserves native-default intent. The parent-owned
|
|
293
|
-
acceptance fixture must supply an accepted node registry supporting the preserved
|
|
294
|
-
owner **and all four read nodes**. This is not accepted production KB publication;
|
|
295
|
-
Git destinations remain PR-only.
|
|
296
|
-
- Actual messaging human/context inputs and the pilot's explicit **`delivery: session`**
|
|
297
|
-
setting (aweb's default is channel). Supply it in the complete supported
|
|
298
|
-
`operator.policy.messaging` selection: capability, matching selected source and
|
|
299
|
-
`settings: {delivery: session}`. Retain host requirements, session `ifInstalled`
|
|
300
|
-
minimums and any selected authoring requirements. Selecting session delivery neither
|
|
301
|
-
makes a strict-Pi print primary input-capable nor supplies captured wake authority.
|
|
302
|
-
- A qualified primary/helper runtime/model/resource profile. Capture the intended
|
|
303
|
-
helper selection in `helperLaunches["oats.okf:memory-harvest"]`, not the legacy
|
|
304
|
-
`souls.memory-harvest` configuration. Do not replace retained intent to fit an easier
|
|
305
|
-
runtime profile. An old default-OKF-only learning gate does not qualify a combined
|
|
306
|
-
aweb profile. If provider or kernel support is missing, stop at that typed result;
|
|
307
|
-
do not bypass it with a legacy route, a dropped capability or a fabricated identity.
|
|
308
|
-
|
|
309
|
-
The existing public routes are stepwise (D/R/H are returned or explicitly approved
|
|
310
|
-
values, not names inferred from cwd):
|
|
311
|
-
|
|
312
|
-
```sh
|
|
313
|
-
oats prepare --request /absolute/operator-preparation.json --json
|
|
314
|
-
# Review returned exact artifacts/problems; approve only explicitly authorized code.
|
|
315
|
-
oats trust <capability-id> --deployment "$D" --artifact-set "$ARTIFACT_SET" --json
|
|
316
|
-
oats prepare --request /absolute/operator-preparation.json --json
|
|
317
|
-
oats inspect --deployment "$D" --resolution "$R" --composition --json
|
|
318
|
-
oats spawn oats-expert --deployment "$D" --resolution "$R" --home "$H" --no-launch --json
|
|
319
|
-
oats session start --deployment "$D" --resolution "$R" --home "$H" \
|
|
320
|
-
--request /absolute/approved-native-request.json --json
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
Do not mix other preparation flags into request-file mode. A needs-configuration or
|
|
324
|
-
approval result is not a ready instance. A scaffold materializes resources and may
|
|
325
|
-
run approved hooks; it is not a message exchange or model session. Actual dispatch,
|
|
326
|
-
continuation, native capture, messaging and learning require the integration owner's
|
|
327
|
-
qualified profile and receipts. OATS 0.24.1 adds captured custody checks to the
|
|
328
|
-
existing HOME-only session inspect/input route; it does not supply the missing
|
|
329
|
-
messaging adapter or qualify every lifecycle route. Verify wake/input/retirement
|
|
330
|
-
support for the exact route and runtime. A stopped-home observation is not delivery
|
|
331
|
-
or retirement authority, and a messaging profile cannot pass on start-only evidence.
|
|
332
|
-
Do not bypass custody with a legacy fallback or remove the messaging requirement.
|
|
333
|
-
Consult the current installed public help and the provider's supported commands;
|
|
334
|
-
this guide introduces no new CLI grammar. The source inspector above is a separate
|
|
335
|
-
implementation dependency, not a change to the existing prepare request contract.
|
|
336
|
-
|
|
337
|
-
## Local checks and limits
|
|
338
|
-
|
|
339
|
-
`node --test test/workspace-repository-layout.test.mjs` checks the actual declarations
|
|
340
|
-
against the shipped codecs/schemas, required providers and owner/read mapping, and
|
|
341
|
-
contained source resources. An isolated native-Git fixture exercises source-before-
|
|
342
|
-
import publication, host-default observations, reciprocal/self admission, refusal of
|
|
343
|
-
missing/stale backlinks, and independent public source projection. Fixture member
|
|
344
|
-
indexes are not evidence that the six real repositories are already published.
|
|
345
|
-
|
|
346
|
-
Source and metadata checks do not enroll users, initialize the phase-2 store, register
|
|
347
|
-
production writers or qualify private messaging. Parent alone coordinates publication,
|
|
348
|
-
local operator approval and actual adoption. Full Desktop parity follows usable
|
|
349
|
-
infrastructure adoption, not merely source metadata passing validation.
|
|
41
|
+
This writes `oats-local.yaml`, creates `agents/`, runs the first `sync`
|
|
42
|
+
(membership table, `packages:` resolved into `oats-lock.json`, approval asked
|
|
43
|
+
once per package version — exit `2` until approved in a terminal), and prints
|
|
44
|
+
which members to clone beside it. Read `oats souls` / `oats capabilities`,
|
|
45
|
+
then `oats spawn oats-setup-expert` for the guided rest. Exact shapes and
|
|
46
|
+
errors (`E_ALREADY_ONBOARDED`, `E_REPO_REF`, `details.rolledBack`):
|
|
47
|
+
[desktop-cli-api.md](desktop-cli-api.md#oats-onboard-onboardapi-2).
|
|
48
|
+
|
|
49
|
+
Shared vs local is now one rule: **what is true of the workspace lives in the
|
|
50
|
+
host repo and the members (Git); what is true of this machine lives in
|
|
51
|
+
`oats-local.yaml` (`settings:`, `clones:`, `souls.disabled`, never committed);
|
|
52
|
+
what is true of one instance is given at spawn (`--provider <cap> k=v`)**. No
|
|
53
|
+
machine path, credential, private team identifier or store locator belongs in
|
|
54
|
+
the workspace file — its schema refuses absolute paths.
|
|
55
|
+
|
|
56
|
+
## Public contributors: the standalone view
|
|
57
|
+
|
|
58
|
+
The workspace file names every member, so a mixed public/private organisation
|
|
59
|
+
hosts it in a private repo that is not a public member (decision 26). A
|
|
60
|
+
contributor who can read a public member but not the host points
|
|
61
|
+
`oats-local.yaml` at the member and gets the **standalone view**: the member's
|
|
62
|
+
own souls with `from: here` capabilities plus `oats.core` (decision 25), marked
|
|
63
|
+
`standalone: true` in `oats sync --json` and in
|
|
64
|
+
`instance.json.workspace.standalone`. The view exists only for a repo that *is*
|
|
65
|
+
a member (it has `oats-membership.yaml`) whose host is unreadable for
|
|
66
|
+
access reasons; a repo without a backlink is `E_WORKSPACE_SCHEMA`, and a network
|
|
67
|
+
or timeout failure reading the host is `E_REMOTE_UNREADABLE`, never a silent
|
|
68
|
+
fallback.
|
|
69
|
+
|
|
70
|
+
## History
|
|
71
|
+
|
|
72
|
+
The 0.24 adoption record (PR23 and the portable-souls program) is kept in
|
|
73
|
+
[design/2026-09-20-redesign-program-board.md](design/2026-09-20-redesign-program-board.md)
|
|
74
|
+
and the superseded design notes under [design/](design/README.md).
|