@awebai/oats 0.24.1 → 0.24.2

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Purpose:** the one accurate view of every work stream in the redesign, what is on main, what is in flight, who owns it, and what blocks it. Lead: `oats-expert` (redesign lead). Updated whenever anything merges, is returned, or reality changes. Older per-lane boards are superseded by this file.
4
4
 
5
- **Last update:** 2026-09-20 17:40Z · main `87292f40` · OKF `v2.1.1`
5
+ **Last update:** 2026-09-21 04:10Z · main `feef2a2f`+ · **OATS v0.24.2 tagged (CI)** · OKF v2.1.1 · oats-framework/v1.1.1 · aweb v1.11.0 · oats-knowledge 8d67eab4
6
6
 
7
7
  Legend: ✅ on main/published · 🔄 in flight (PR/branch) · 🟡 preserved, not adopted · ⬜ not started · ⛔ blocked
8
8
 
@@ -10,14 +10,14 @@ Legend: ✅ on main/published · 🔄 in flight (PR/branch) · 🟡 preserved, n
10
10
 
11
11
  | # | Stream | State | Owner | Next action |
12
12
  |---|---|---|---|---|
13
- | S1 | Knowledge capability contract rework (kernel↔provider boundary, OKF 2.x) | ✅ shipped 0.24 / **OKF 2.1.1 released** (PR4 merged; mirror, catalog ref, soul source bumped) | P | done for this phase; OATS 0.24.1 cut after L's custody fix |
14
- | S2 | Workspace/Portable Souls adoption of the OATS repos | ✅ PR23 + PR24 merged · ✅ member `oats.yaml` on main in oats-okf/aweb/authoring/jira · ⛔ oats-dev, oats-linear (no push access, human) | M, L, lead | human grants access → push 0434f4ef/8c183c37; then pin imports; then fresh deployment gate |
15
- | S3 | Messaging capability readiness on the new infrastructure (aweb) | 🔄 codec PR2 + custody WIP · needs profile pin | P | lead pins pilot profile + answers authority question |
16
- | S4 | Official capabilities `oats.core` / `oats.setup` + explicit default + onboarding `oats-setup-expert` | 🔄 D1 in progress (P, `feat/d1-oats-core-setup`, package → `oats.framework` 1.1.0) · 🔄 D2 in progress (L) · ⬜ D3 | P (D1), L (D2, D3) | review D1/D2 PRs; assign D3 after D2 |
17
- | S5 | Official marketplace = reviewed list in oats repo | ✅ D4 merged PR26 (`docs/official-marketplace.md`, policy pointer) · ⬜ `oats.core`/`oats.setup` entries after D1 release | M | add entries at D1 release |
18
- | S6 | Five expert souls created in the oats repo (`souls/<name>/`) | 🔄 assigned to M (`feat/s6-expert-soul-editions`) from the reviewed candidate; `souls/oats-expert` on main | M | review PR; `oats.core` follow-up after D1 |
19
- | S7 | Centralised per-soul knowledge in `oats-knowledge` (migration + PR-only learning) | 🟡 35 curated concepts uncommitted on local `curation/expert-knowledge`; bootstrap proven on personal repo; `awebai/oats-knowledge` EMPTY, private | lead + human (visibility) | decide visibility; publish curation as PR; point souls' `stores.oats` at it |
20
- | S8 | Desktop parity (marketplace view, soul creation with `oats.core`, onboarding flow) | ⬜ after S4/S5 | fresh Desktop engineer (blocked: `claude` absent) | pick runtime; spawn |
13
+ | S1 | Knowledge capability contract rework (kernel↔provider boundary, OKF 2.x) | ✅ OATS 0.24.1 / OKF 2.1.1 published | P | done for this phase |
14
+ | S2 | Workspace/Portable Souls adoption of the OATS repos | ✅ workspace + seven indexes + **six imports** (five experts @caa341f3, setup expert @0aad753c) · ✅ second-operator gate run · 🔄 five seams → L, target 0.24.3 | lead, L, Antares | seams PR; Antares re-run on 0.24.2 (aweb 1.11.0) |
15
+ | S3 | Messaging capability readiness on the new infrastructure (aweb) | ✅ aweb 1.11.0 released · ✅ **catalog + six editions pin v1.11.0 (0.24.2)** · ⬜ second-operator re-run | P, lead | Antares re-run |
16
+ | S4 | Official capabilities `oats.core` / `oats.setup` + explicit default + onboarding `oats-setup-expert` | ✅ D1, D2, **D3 merged (PR35)**: `oats onboard` verified live (acquire 1.1.1 → setup expert with both caps → scaffold composes the five capability skills, no legacy) · `oats.framework` 1.1.1 tagged | P, L | done; Desktop surfaces → S8 |
17
+ | S5 | Official marketplace = reviewed list in oats repo | ✅ D4 merged · ✅ `oats.framework` 1.1.1 listed (`oats.core`, `oats.setup`, `oats.knowledge-theory` aliases) | M | Desktop view → S8 |
18
+ | S6 | Five expert souls created in the oats repo (`souls/<name>/`) | ✅ five + `oats-setup-expert` on main, all declaring `oats.core`, exported + imported | M, L, lead | legacy `agents/` cutover after S7 proof |
19
+ | S7 | Centralised per-soul knowledge in `oats-knowledge` (migration + PR-only learning) | ✅ **repo PUBLIC; PR #1 merged → main 8d67eab4, 25 accepted concepts**, owners = published souls, validator pinned OKF 2.1.1 · 🔄 fresh-reader proof assigned to Juan's side · ⬜ legacy in-soul knowledge decommission | lead, Antares/Juan | fresh-reader + PR-learning proof; then retire `agents/*/soul/knowledge` |
20
+ | S8 | Desktop parity (marketplace view, soul creation with `oats.core`, onboarding flow) | ⬜ after D3 · **host offered: Juan's machine (has `claude`)** — accepted | fresh Desktop engineer on Juan's host | brief + spawn params after D3 |
21
21
 
22
22
  ## S1 — Knowledge capability contract rework
23
23
  - ✅ Provider-neutral contract, binding wire v1, helper/input contract, retained execution: OATS 0.24.0 + OKF 2.1.0 (f20f8e57) published.
@@ -28,21 +28,32 @@ Legend: ✅ on main/published · 🔄 in flight (PR/branch) · 🟡 preserved, n
28
28
  - ✅ **PR23 merged f6d5a89b**: `oats-workspace.yaml` (7 members, `imports: []`), `oats.yaml` (exports souls/oats-expert, oats-package, capabilities/oats-authoring), transitional `souls/oats-expert/` edition, `docs/workspace-adoption.md`, layout tests.
29
29
  - ✅ **PR24 merged da38e5a9**: deletion of `skills/oats-portable-setup` + `oats inspect --request` read-only seam (ACCEPTED as the public inspection route); full gate 1621/0.
30
30
  - ✅ Member `oats.yaml` merged to main: oats-okf #3 (fec78a20), oats-aweb #1 (069ea2f6), oats-authoring #1 (54183a6a), oats-jira #1 (2f855daf).
31
- - ⛔ oats-dev (0434f4ef) and oats-linear (8c183c37): neither M nor the lead's GitHub account has push — **human must grant access or push**.
31
+ - ✅ oats-dev#1 (main 6e164ee3) and oats-linear#1 (main a2121e48) merged after Juan granted write access — M's exact commits 0434f4ef / 8c183c37.
32
32
  - ⬜ `imports:` pin of `souls/oats-expert` at its published revision (after member indexes).
33
33
  - ⬜ Fresh local deployment from the shared definition (P1.5) — the real acceptance gate.
34
34
 
35
+ ## S2 — second-operator gate report (Antares, Juan's machine, 2026-09-20)
36
+ Fresh dir, local `@awebai/oats@0.24.1`, no prior state. `inspect --request` → ready-for-preparation, membership eligible, source `souls/oats-kernel-expert@caa341f3`. `prepare` resolved and materialized `oats-package@caa341f3`, `oats.okf@v2.1.1`, `oats.aweb@v1.10.3`, `oats.core`, `oats.setup`, `oats.knowledge-theory` + soul; artifact-set approvals worked. Terminal: `needs-configuration` + `provider-not-qualified` (aweb 1.10.3 has no binding interface) — expected. Seams (assigned to L, one PR, priority):
37
+ 1. `inspect --request` requires `workTarget`; `prepare --request` refuses it (`buildFreshPreparationRequest` exists but the CLI never uses it).
38
+ 2. `prepare` on the absent deployment inspect blessed → raw `ENOENT` + host path through the JSON envelope.
39
+ 3. `prepare` writes lock v3; `oats trust <cap> --dir` rejects it (`unsupported lockfileVersion 3`) → dead end from `--help`.
40
+ 4. The working `trust --deployment --artifact-set <sha256>` route is absent from `--help`.
41
+ 5. Problems carry `origins: []` and no slot/capability; aweb's missing interface masks OKF diagnostics — a valid and a bogus `stores.oats` binding produce byte-identical output. **Fix first.**
42
+
35
43
  ## S3 — Messaging (aweb) on the new infrastructure
44
+ - ✅ **aweb PR3 merged → v1.11.0 (93f8ab96)**: `binding {normalize,bind,check}` on the existing wire; `check` = HOME-route operational custody only (explicit private team, `delivery: session`, kernel ≥0.24.2 via caller-owned `OATS_CLI_BIN`, retained `launchSelection` must be input-capable Claude/Codex; strict-Pi print → `needs-configuration`, never downgraded). Native adapter over existing `aw` commands with physical identity-dir custody and redacted tokens. Standalone 30/0; coupling 14/0 vs kernel b92f0d07. PR33 (launchSelection projection, OATS_CLI_BIN in codec env) merged b92f0d07.
36
45
  - Facts: released aweb 1.10.3 has no binding interface; broker refuses. aw 1.36.1 broker calls `oats session inspect/input --home H`; never restarts stopped runtime; strict-Pi print mode can't take session input.
37
46
  - 🔄 oats-aweb **PR2** codec (165b20e) + uncommitted `lib/captured-execution.mjs` (6/6).
38
47
  - ✅ Lead answered (d9d912a4): pilot primary = Pi strict print host explicit model; helper = Pi sole-OKF (Claude/Codex allowed by 2.1.1); authority = existing HOME route + L's custody fix, gated on `oats >=0.24.1`; no new grant mechanism. P delivers aweb 1.11.0 PR.
39
- - 🔄 L finding c21e36ff accepted; fix assigned (L, `fix/home-route-captured-custody`): reuse `readCapturedInstanceAuthority` on the HOME-only route, refuse before transport.
48
+ - ✅ **PR27 merged (5af848fc)**: HOME-only session route applies existing captured custody; refuses before transport on drift. Full gate 1626/1632 (2 pre-existing env failures reproduced on main). Ships in **v0.24.1** — the kernel floor the aweb adapter gates on.
40
49
 
41
50
  ## S4 — `oats.core` / `oats.setup` / onboarding
51
+ - ✅ **D3 merged PR35 (37c5c012)**: `oats onboard` classic local bootstrap; edition `souls/oats-setup-expert` (core+setup, provider defaults `none`, no knowledge owner). Full gate 1639/0. Live: onboard → acquire `oats.framework` 1.1.1 @0aad753c → soul declares both caps at that commit → scaffold-only spawn composes exactly `oats-operate, oats-souls, oats-config, oats-packages, oats-workspace-setup` + the `oats.core` injection, no legacy kernel skills. Baseline hygiene fixed on main (a96f24df).
52
+ - ✅ **D1 merged PR28 (70b10822)**, distribution tag `oats-framework/v1.1.0` on 9930dcfb; **D2 merged PR29 (9930dcfb)** full gate 1634/0. Verified live: `oats create` writes `requires.capabilities.oats.core` with the catalog source; `oats install oats.framework` acquires all three capabilities from the tag.
42
53
  - ✅ Decision + plan D1–D4 on main 18af53be; docs reference as accepted-not-shipped.
43
54
  - 🔄 **D1** (P, started 16:29Z; package identity confirmed: rename distribution package to `oats.framework` 1.1.0, capabilities 1.0.0, `oats.knowledge-theory` unchanged) package `oats.core` (`oats-operate`, `oats-souls`, oats.md injection) and `oats.setup` (oats-config, oats-packages, adoption guidance) under `oats-package/capabilities/`. Owner P.
44
55
  - 🔄 **D2** (L, after custody fix) soul creation writes explicit `requires.capabilities.oats.core`; kernel skill list de-ambiented (one-release coexistence); checked-in souls updated. Owner L.
45
- - ⬜ **D3** onboarding creates + instantiates `oats-setup-expert` (edition in `souls/`). Owner L (+M edition).
56
+ - 🔄 **D3** (L, in progress) onboarding creates `oats-setup-expert` (edition in `souls/`); CLI verb **`oats onboard`** — `oats setup` is already the record capture-setup command and stays untouched.
46
57
  - Exit: fresh onboarding → running setup expert; created soul shows `oats.core`; kernel ships no ambient operational skill.
47
58
 
48
59
  ## S5 — Official marketplace
@@ -50,21 +61,23 @@ Legend: ✅ on main/published · 🔄 in flight (PR/branch) · 🟡 preserved, n
50
61
  - ✅ **D4 merged PR26 (786490ae)**: `docs/official-marketplace.md`, `package-catalog.json` policy pointer (inert to the reader), README/packages/capabilities links, D3 sketch in adoption guide. ⬜ entries for `oats.core`/`oats.setup` at D1 release. Desktop view → S8.
51
62
 
52
63
  ## S6 — Five expert souls in the oats repo
64
+ - ✅ **PR30 merged (40a579dc)** + maintainer follow-up **caa341f3**: all five declare `oats.core: {source: repo:oats-package}`, oats.okf@v2.1.1; `oats.yaml` exports all five; `oats-workspace.yaml` imports all five at caa341f3 (375b9f42). Live inspection against published main resolves them.
53
65
  - Roster (decided): `oats-expert`, `oats-kernel-expert`, `oats-desktop-expert`, `market-research-expert`, `oats-assistant`.
54
66
  - 🟡 Candidate: `expert-roster` worktree (b5e233b9 + 519 uncommitted changes: five `agents/<name>/soul/` + legacy roster deletions). Reviewed earlier; NOT committed.
55
67
  - ✅ `souls/oats-expert` transitional edition on main already declares owns/reads for the five nodes.
56
68
  - 🔄 Assigned to M (17:05Z): create `souls/<name>/` editions for the other four from the candidate; each declares `oats.core` explicitly (S4 rule) + `oats.okf`/`oats.aweb` sources; export in `oats.yaml`. Legacy `agents/` roster retirement is a separate, later cutover.
57
69
 
58
70
  ## S7 — Centralised knowledge in `oats-knowledge`
71
+ - ✅ Juan made the repo PUBLIC (2026-09-20). Bootstrap history pushed to main; **PR #1 merged (8d67eab4)**: 25 curated concepts, roadmap re-verified to the 0.24.1 baseline and 2026-09-20 decisions, validator pinned to OKF v2.1.1, strict OKF 25/0/0, ownership tests 24/24.
59
72
  - 🟡 Curated corpus: 35 concepts (five nodes) on local `curation/expert-knowledge` in `/Users/pepe-reyero/OATS-workspace/oats-knowledge`, **uncommitted**. Bootstrap + one PR-only harvest already proven on `josep-reyero/oats-knowledge` (3 commits).
60
73
  - ⛔ Target `awebai/oats-knowledge` is EMPTY and PRIVATE; **visibility undecided** (stated requirement: public). Human decision needed before publishing.
61
74
  - ⬜ Then: push bootstrap + curation as PR to awebai; bind `stores.oats` in the pilot deployment; prove fresh-reader + Git-PR learning with the new souls; retire old in-soul knowledge (`agents/*/soul/knowledge`) as a final cutover.
62
75
 
63
76
  ## S8 — Desktop parity
77
+ - Finding (L, D2 audit): the Desktop server has **no soul-creation endpoint** today (roster reads, existing-soul edits/capability operations, instance spawn only). Soul creation with explicit `oats.core`, the marketplace view and the onboarding flow are new Desktop features, not wiring.
64
78
  - ⬜ After S4/S5: official marketplace view/search; soul creation showing `oats.core`; onboarding flow; redesign parity vs `Oats UX Redesign and Desktop Discovery (1)`.
65
79
  - ⛔ Fresh `oats-desktop-engineer` not spawned: `claude` not on PATH → choose Pi/Codex or install (human).
66
80
 
67
81
  ## Blockers needing the human
68
- 1. `awebai/oats-knowledge` visibility (public vs private) — gates S7 publication.
69
- 2. Push access to `awebai/oats-dev` and `awebai/oats-linear` for `josep-reyero` (or human pushes M's exact commits 0434f4ef / 8c183c37 as `oats.yaml`) — gates S2 completion.
70
- 3. Desktop engineer runtime (Claude absent) — gates S8.
82
+ - ~~oats-knowledge visibility~~ → PUBLIC (Juan). ~~oats-dev/oats-linear access~~ → granted, indexes merged. ~~Desktop runtime~~ → Juan's machine hosts the Desktop lane (has `claude`).
83
+ - None open at 23:10Z. Juan's side (Antares) takes: (a) fresh-deployment gate P1.5, (c) fresh-reader proof, (b) Desktop host after D3.
@@ -42,6 +42,48 @@ For several repositories initialize their common workspace, then select the
42
42
  repository owning the soul with `--dir /path/to/workspace/project` for
43
43
  create/spawn/retire. A team roster does not select a work repository for spawn.
44
44
 
45
+ ## Onboarding with the setup expert
46
+
47
+ For a kernel build that includes `oats onboard` (check `oats onboard --help`),
48
+ start in an explicit empty deployment:
49
+
50
+ ```bash
51
+ oats onboard --dir /absolute/new-deployment --json
52
+ ```
53
+
54
+ This command is **not present in the published 0.24.0/0.24.1 kernels**. It is a
55
+ classic local bootstrap, not captured preparation or workspace enrollment. It
56
+ acquires `oats.framework` from the official catalog, exact-locks its artifacts,
57
+ selects only `oats.core` and `oats.setup` for the new local `oats-setup-expert`,
58
+ and prints the exact next spawn command. Review and run the returned
59
+ `result.next.command` when ready; it addresses this same kernel and deployment.
60
+ Onboarding itself never launches a model, changes native authentication or
61
+ installs capture hooks/services. **`oats setup` remains the separate record
62
+ capture-setup command**, not an alias for onboarding.
63
+
64
+ The expert receives `oats-operate`, `oats-souls`, `oats-config`, `oats-packages`
65
+ and `oats-workspace-setup`, without duplicate legacy kernel skill copies. It has
66
+ no hard knowledge/messaging dependency, so it can help select and configure those
67
+ providers afterward. Catalog identity grants no executable trust: the bootstrap
68
+ uses resource-only core/setup capabilities and refuses unexpected executable
69
+ surfaces instead of auto-approving them.
70
+
71
+ An existing roster is refused unless `--force-existing` is explicit. That flag
72
+ permits adding the new soul, not overwriting an existing setup expert or disabling
73
+ providers for other souls. Failures report partial acquisition/creation rather
74
+ than claiming atomic captured preparation. Preserve that evidence before retrying.
75
+
76
+ Optional `--workspace git:host/org/repository[@revision]` reads the selected
77
+ repository through ordinary discovery: use its pinned `oats-setup-expert` import
78
+ when present, otherwise its own advertised `souls/oats-setup-expert` edition at
79
+ the observed revision. Missing or incompatible explicit sources refuse; they do
80
+ not fall back to the packaged default. The copied edition's package must match
81
+ the official acquisition; workspace policy, teams and provider adoption values
82
+ are not silently adopted. Without this option, only the packaged definition and
83
+ instruction text are used—no knowledge corpus is bundled.
84
+
85
+ The manual path below retains its stated older integration/version scope.
86
+
45
87
  ## Configure explicit knowledge and optional messaging
46
88
 
47
89
  Edit the existing entries in `oats-config.yaml`; do not append a second
package/docs/layers.md CHANGED
@@ -80,7 +80,7 @@ Messaging is conversation, not automatically task state. Accepted knowledge may
80
80
 
81
81
  The current slot name is **`messaging`**. The capability owns native identity, addressing, team membership, transport, wake delivery and qualification. A team alias in a workspace is a declaration, not proof that an actor is enrolled or a privacy property is enforced.
82
82
 
83
- The released aweb1.10.3 integration supports its legacy setup/lifecycle path but lacks the captured provider-binding interface required for a new portable profile. That capability needs adaptation and real qualification; a codec that always refuses readiness is not completed messaging support.
83
+ aweb 1.10.3 supports its legacy setup/lifecycle path but lacks the captured provider-binding interface. **aweb 1.11.0** (OATS >=0.24.2) adds it: `check` qualifies HOME-route operational custody for an input-capable Claude/Codex primary with an explicit private team and `delivery: session`; a strict-Pi print primary reports `needs-configuration` rather than dropping the requirement. Qualification is not account delegation, broker delivery or model consumption.
84
84
 
85
85
  The earlier proposed `reach` ladder is **not an enforced universal field**. In particular, aweb's `team_and_contacts` includes verified same-team senders; the compatibility spellings `contacts-only` and `contacts_only` do not establish owner-only admission. A config command succeeding proves neither inbound/outbound restrictions nor knowledge visibility. See the [identity/membership amendment](design/2026-09-08-expert-assisted-deployment-proposal.md#membership-reach-and-visibility-are-separate) and [messaging boundary](design/2026-09-16-messaging-capability-contract.md).
86
86
 
@@ -58,17 +58,22 @@ or workspace membership alone does not make a package official.
58
58
  Contact and license evidence may live in the package/repository documentation;
59
59
  this policy does not invent new catalog or manifest fields.
60
60
 
61
- ## Planned first set
61
+ ## Listed first set
62
62
 
63
- - Already listed: `oats.okf`, `oats.aweb`, `oats.authoring`, `oats.jira`,
64
- `oats.linear`, `oats.dev` and `oats.knowledge-theory`.
65
- - **Planned, not yet listed:** `oats.core` for OATS operation/soul guidance, and
66
- `oats.setup` for OATS Soul Setup, configuration and package guidance. Add their
67
- catalog entries only after their actual D1 package releases exist and pass
68
- review. They are not available merely because this document names them.
63
+ - Listed capabilities: `oats.okf`, `oats.aweb`, `oats.authoring`, `oats.jira`,
64
+ `oats.linear`, `oats.dev`, `oats.knowledge-theory`, `oats.core` and `oats.setup`.
65
+ - **`oats.framework` 1.1.1** is listed at tag `oats-framework/v1.1.1` in
66
+ `awebai/oats`, payload root `oats-package`. The `oats.core`, `oats.setup` and
67
+ `oats.knowledge-theory` aliases select that distribution; package identity is
68
+ distinct from capability identity. Core supplies operation/soul guidance;
69
+ setup supplies OATS Soul Setup, configuration and package guidance.
69
70
 
70
- The [workspace adoption guide](workspace-adoption.md) describes the separate
71
- planned setup-expert flow. No package is silently added to an existing soul.
71
+ These entries are in the current repository catalog. An older installed CLI keeps
72
+ its bundled catalog; publication here does not update that installation or rewrite
73
+ old source references, locks or tags. Follow that CLI's supported acquisition path.
74
+ The [workspace adoption guide](workspace-adoption.md) distinguishes the published
75
+ capabilities and five expert imports from the still-pending D3 setup-expert flow.
76
+ No package is silently added to an existing soul.
72
77
 
73
78
  ## Updates, deprecation and removal
74
79
 
package/docs/packages.md CHANGED
@@ -402,7 +402,7 @@ sources; installing a kernel does not advance existing package locks:
402
402
  {
403
403
  "packages": {
404
404
  "oats.okf": { "url": "https://github.com/awebai/oats-okf.git", "ref": "v2.0.0", "path": "oats-package" },
405
- "oats.knowledge-theory": { "url": "https://github.com/awebai/oats.git", "ref": "v0.23.0", "path": "oats-package" },
405
+ "oats.framework": { "url": "https://github.com/awebai/oats.git", "ref": "oats-framework/v1.1.1", "path": "oats-package" },
406
406
  "oats.dev": { "url": "https://github.com/awebai/oats-dev.git", "ref": "v1.0.0", "path": "oats-package" }
407
407
  },
408
408
  "capabilities": { "oats.review": "oats.dev" }
@@ -427,13 +427,17 @@ npm drops the source worker soul's `CLAUDE.md -> AGENTS.md`. It must not be
427
427
  advertised as a complete local package or repaired after acquisition to evade
428
428
  integrity checks. Git transport preserves the canonical source alias.
429
429
 
430
- The optional `oats.knowledge-theory` package is a separate Git payload in this
430
+ The `oats.framework` distribution package is a separate Git payload in this
431
431
  repository's `oats-package/`, excluded from the kernel npm tarball. The catalog
432
- entry selects published framework v0.23.0, which contains package 1.0.0.
433
- The source reference patch 1.0.1 is separately available through an explicit
434
- v0.23.1 Git source after that framework tag is published. It supplies an authoring skill and
435
- `knowledge-theory-expert`, not a default knowledge-layer binding, runtime judge
436
- or OKF dependency. Acquiring it does not activate it.
432
+ entry selects the published `oats-framework/v1.1.1` tag, which exports three
433
+ capabilities: `oats.core` (day-to-day operation: `oats-operate`, `oats-souls`
434
+ and the "you run on OATS" briefing — declared explicitly on every soul by
435
+ default at creation and removable), `oats.setup` (OATS Soul Setup: `oats-config`,
436
+ `oats-packages`, `oats-workspace-setup`) and the optional `oats.knowledge-theory`
437
+ (authoring skill and `knowledge-theory-expert`). Acquire it with
438
+ `oats install oats.framework`; the capability ids also resolve through the
439
+ catalog aliases. Acquiring it does not activate anything, bind a knowledge
440
+ layer or add a runtime judge.
437
441
 
438
442
  Updating OKF v1 to v2 is a breaking capability change. Preserve existing
439
443
  knowledge and source state/cursors, explicitly bind/provision external owners,
@@ -0,0 +1,21 @@
1
+ # OATS v0.24.2 — `oats onboard`, official capabilities in a soul's definition, aweb 1.11.0 pairing
2
+
3
+ Kernel/Pi/Desktop **0.24.2**. Publication is not deployment: every operator still installs, approves and qualifies locally.
4
+
5
+ ## What changed
6
+
7
+ - **`oats onboard [--dir <deployment>] [--workspace <git:source[@rev]>] [--force-existing] [--json]`** — bootstrap a deployment with an **`oats-setup-expert`** soul that holds `oats.core` and `oats.setup`. Acquires the official `oats.framework` package through the existing engine (resources-only guard before commit, no catalog auto-trust), activates exactly those two capabilities for that soul, writes its definition with both pinned at the acquired immutable commit, and **prints** the spawn command — it never launches a model. Classic local bootstrap, not captured preparation. `oats setup` (record capture setup) is unchanged.
8
+ - **Soul creation declares `oats.core` explicitly.** `oats create` and new local souls write `requires.capabilities.oats.core` resolved from the official catalog; `--no-oats-core` opts out; nothing is invented when the catalog has no entry. When a soul declares `oats.core` or `oats.setup`, the kernel composes **neither** the legacy kernel skills (`oats`, `oats-config`, `oats-packages`) nor the `kernel:oats` injection — the capability's skills are the operational curriculum. Souls without it keep legacy behavior; `oats doctor` prints an informational line.
9
+ - **Official capabilities.** `oats.framework` **1.1.1** (tag `oats-framework/v1.1.1`) exports `oats.core` (`oats-operate`, `oats-souls`, "you run on OATS" briefing), `oats.setup` (`oats-config`, `oats-packages`, `oats-workspace-setup` — now documenting the operator request shape) and `oats.knowledge-theory`. Listed in the official catalog with capability aliases.
10
+ - **Retained inspection projects `launchSelection`** (`{runtime, model}` or `null`) for the primary from the verified retained record; provider binding codecs receive the same-kernel `OATS_CLI_BIN` after the environment scrub. These are what a provider `check` needs to be truthful about the primary's profile.
11
+ - **aweb 1.11.0 pairing.** The catalog and all framework soul editions pin `oats.aweb@v1.11.0`, which adds the portable binding interface (floor `>=0.24.2`). Its `check` qualifies HOME-route operational custody only: explicit private team, `delivery: session`, an input-capable Claude/Codex primary. A strict-Pi print primary reports `needs-configuration`; the requirement is never dropped.
12
+ - **Six framework soul editions** exported and imported by `oats-workspace.yaml`: the five knowledge-owning experts (`oats-expert`, `oats-kernel-expert`, `oats-desktop-expert`, `market-research-expert`, `oats-assistant`) at `caa341f3` and `oats-setup-expert` at `0aad753c`. All six declare `oats.core` from the repository's own payload.
13
+ - Baseline hygiene: golden fixtures use a genuinely empty catalog; the package check lazy-loads dev validators so syntax-only lanes work without `node_modules`.
14
+
15
+ ## Second-operator gate
16
+
17
+ An independent operator on a fresh machine adopted the shared definition from public sources through `inspect` → `prepare` → approvals with 0.24.1: the whole graph (including `oats.core`/`oats.setup`) resolved and materialized; preparation stopped at aweb 1.10.3 as declared. Five usability seams were recorded (request-file mismatch between `inspect`/`prepare`, raw ENOENT on an absent deployment, `trust --dir` rejecting lock v3, `--artifact-set` missing from help, unattributed provider problems). **They are not fixed in this cut**; see the [program board](../design/2026-09-20-redesign-program-board.md).
18
+
19
+ ## Not in this cut
20
+
21
+ Desktop marketplace view / soul creation UI, legacy `agents/` roster and in-soul knowledge decommission (after the fresh-reader proof against the public `oats-knowledge`), Pi session-input support.
@@ -54,6 +54,31 @@ in a soul bundle; see [knowledge](knowledge.md) for its prepared version scope.
54
54
  Future integrations may add expert-specific artifacts such as rule files or
55
55
  runtime-specific guidance, while keeping `AGENTS.md` canonical.
56
56
 
57
+ ## OATS operational knowledge is a capability
58
+
59
+ New souls declare `requires.capabilities.oats.core` with a Git source resolved
60
+ from the official package catalog. `oats create` and new local-soul scaffolds
61
+ write that requirement; `--no-oats-core` explicitly omits it. If the catalog has
62
+ no published revision yet, creation reports `needs-configuration` (also in JSON
63
+ `notes`) and leaves the requirement absent rather than inventing a source.
64
+ Declaring a capability is not acquiring, activating or approving it: those remain
65
+ normal deployment/preparation steps. The Desktop server currently has no
66
+ soul-creation endpoint; `oats soul set` edits existing definitions only.
67
+
68
+ The dependency is visible and removable in `soul.yaml`. Updating an existing
69
+ local soul preserves its requirements—including a deliberate removal—rather
70
+ than applying the creation default again. For the one-release transition,
71
+ a declaration of **either `oats.core` or `oats.setup`** suppresses the entire
72
+ legacy kernel operational skill list (`oats`, `oats-config`, `oats-packages`)
73
+ and `kernel:oats` injection. This also prevents setup's moved skill names from
74
+ colliding with the kernel copies; no skill override is needed for this case.
75
+ Without either declaration, legacy composition is unchanged.
76
+ `oats doctor --soul <name>` reports an absent `oats.core` as an informational
77
+ deprecation notice, not an error. Instance-boundary, work-mode and
78
+ configuration-declared briefings remain kernel-owned. Existing captured records
79
+ keep their retained resources; this does not migrate them or retire the kernel
80
+ skill files yet.
81
+
57
82
  ## Instance anatomy
58
83
 
59
84
  An instance has a lifecycle, but need not be short-lived. It is the identity of
@@ -5,12 +5,30 @@ source-complete exports and declares its own reciprocal membership. `oats-dev`
5
5
  remains a development-capability repository, including `oats.review`; membership
6
6
  neither activates that package nor replaces its existing configuration templates.
7
7
 
8
- This is phase 1: a shared repository graph and a transitional portable edition of
9
- **the existing oats-expert**. It is not the five-role rebuild, the curated knowledge
10
- cutover, a shared live runtime, a private-team enrollment or Desktop feature parity.
8
+ This guide covers the shared repository graph and portable expert source editions,
9
+ beginning with **the existing oats-expert**. Source publication is not a live
10
+ five-role roster or curated knowledge cutover, a shared runtime, private-team
11
+ enrollment or Desktop feature parity.
11
12
  The [phase plan](design/2026-09-20-workspace-and-portable-adoption-plan.md) and
12
13
  [knowledge model](knowledge-theory.md) retain those separate boundaries.
13
14
 
15
+ ## The five framework experts
16
+
17
+ The indexed source editions are `oats-expert`, `oats-kernel-expert`,
18
+ `oats-desktop-expert`, `market-research-expert` and `oats-assistant`. Each declares
19
+ `owns` for its own same-named node and `reads` for the other four through logical
20
+ store `oats`, preserving the reviewed owner UUIDs. These are knowledge-routing and
21
+ context declarations, not access grants or proof of accepted knowledge. The parallel
22
+ `souls/` editions neither replace the legacy `agents/` roster nor adopt the curated
23
+ KB or change live instances; actual adoption still needs compatible providers and
24
+ explicit bindings. All five now explicitly declare `oats.core` under
25
+ `requires.capabilities`, with `source: repo:oats-package`. This retains the complete
26
+ package from the same reviewed source revision.
27
+
28
+ The dependency is visible and removable in the authored definition, not a change
29
+ to existing captured records. An edited edition needs its own reviewed publication
30
+ and import update; changing today's source does not rewrite an older pinned import.
31
+
14
32
  ## Shared versus local
15
33
 
16
34
  | Git-shared declaration | Operator-local input or evidence |
@@ -22,17 +40,18 @@ The [phase plan](design/2026-09-20-workspace-and-portable-adoption-plan.md) and
22
40
  | A reviewed source revision | Exact executable approval, current readiness and deployment acceptance |
23
41
 
24
42
  No machine paths, credentials, private team identifiers, accepted-store locator or
25
- owner registry belongs in the public workspace. The uninitialized phase-2 knowledge
26
- repository is not advertised as a ready knowledge export. Preserve the parked
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
27
45
  roster/curation and every old home, lock, source, pending job, history and worktree.
28
46
 
29
47
  ## Planned onboarding: OATS Soul Setup (D3)
30
48
 
31
- **Not shipped in OATS 0.24.** The planned onboarding flow creates and instantiates
49
+ **The D3 onboarding flow remains pending.** It will create and instantiate
32
50
  `oats-setup-expert`, declaring both `oats.core` and `oats.setup` from the
33
- [official marketplace](official-marketplace.md). Their package releases and this
34
- onboarding flow are future work, not existing catalog entries or a new command
35
- introduced by this guide.
51
+ [official marketplace](official-marketplace.md). Those capabilities are now
52
+ published in `oats.framework` 1.1.0 and listed; the separate setup-expert edition
53
+ and onboarding entry point do not become available merely by listing the package.
54
+ This flow was not shipped in the 0.24.0 or 0.24.1 kernel releases.
36
55
 
37
56
  - The setup expert will help the operator adopt repositories, select capabilities
38
57
  and carry out the normal prepare/approve/scaffold/start steps. It bypasses no
@@ -41,27 +60,29 @@ introduced by this guide.
41
60
  and its source explicitly. The operator can remove or replace that dependency
42
61
  by editing the authored definition, not a captured record; the kernel will not
43
62
  silently reinsert an absent one.
44
- - The CLI/Desktop entry point remains separately implemented and reviewed. Do not
45
- invent a workspace init/adopt command, create a setup soul from this sketch, or
46
- treat a planned package as installed. Existing instances and retained resources
47
- are not rewritten by the plan.
63
+ - The CLI/Desktop entry point still requires separate implementation and review.
64
+ Do not invent a workspace init/adopt command, create a setup soul from this
65
+ sketch, or treat a listed package as installed. Existing instances and retained
66
+ resources are not rewritten by the plan.
48
67
 
49
- ## What this first source commit establishes
68
+ ## Stage two: published experts and pinned imports
50
69
 
51
70
  - `oats-workspace.yaml` explicitly admits `oats` and the six intended capability
52
71
  repositories: `oats-dev`, `oats-okf`, `oats-aweb`, `oats-authoring`, `oats-jira`
53
72
  and `oats-linear`. It activates no additional capability; tasks default to none.
54
- - `oats.yaml` advertises `souls/oats-expert` and the actual framework package roots
55
- `oats-package` and `capabilities/oats-authoring`, not the npm root as a fictitious
56
- OATS distribution. Its workspace backlink names the same framework repository.
57
- - `souls/oats-expert/` is parallel to, not a replacement for, the live `agents/`
58
- source. It contains canonical instructions, `CLAUDE.md -> AGENTS.md`, and the
59
- existing reviewed PR/release procedure closure. No durable KB is copied into it.
60
- - The role preserves its knowledge owner, owned node and four cross-read interests.
73
+ - `oats.yaml` exports all five `souls/<name>` editions above and the actual package
74
+ roots `oats-package` (`oats.framework`) and `capabilities/oats-authoring`, not
75
+ the npm root as a fictitious OATS distribution. Its workspace backlink names
76
+ the same framework repository.
77
+ - The editions are parallel to, not replacements for, the live `agents/` roster.
78
+ Each contains canonical instructions, `CLAUDE.md -> AGENTS.md`, and its reviewed
79
+ private procedures where applicable. No durable KB is copied into them; legacy
80
+ roster cutover remains deferred until S7 knowledge publication.
81
+ - Each edition preserves its knowledge owner, owned node and four cross-reads.
61
82
  Store `oats` requires the explicit `stores.oats` binding; no publisher writer,
62
83
  production store or grants are supplied. An acceptance fixture is parent-owned
63
84
  and cannot be counted as production knowledge adoption.
64
- - Knowledge **oats.okf@2.1.1** and messaging **oats.aweb@1.10.3** are explicit hard
85
+ - Knowledge **oats.okf@2.1.1** and messaging **oats.aweb@1.11.0** are explicit hard
65
86
  requirements, not optional defaults. They are published starting revisions,
66
87
  **not proof that their combined bindings/runtime profile is ready**. The provider
67
88
  owner supplies that evidence and any subsequently reviewed compatible revision.
@@ -69,38 +90,41 @@ introduced by this guide.
69
90
 
70
91
  At these starting pins, the provider boundary is concrete:
71
92
 
72
- - Published OKF2.1.0 already supports `inherit: stores.oats`, normalized to
93
+ - Published OKF2.1.1 supports `inherit: stores.oats`, normalized to
73
94
  `/bindings/knowledge/stores/oats`. The explicit `destination: oats` preserves
74
95
  routing; omitting it would instead require `write.default`. No new schema,
75
96
  owner or production locator is needed for this declaration.
76
- - Released aweb1.10.3 (`24efa6f9`) has **no mandatory portable binding interface**,
77
- so it currently blocks this pilot's portable preparation. Candidate
78
- [aweb PR2](https://github.com/awebai/oats-aweb/pull/2), `165b20e7`, adds codecs;
79
- it is not a reviewed/published successor or native lifecycle qualification.
80
- Human/native-principal, private-context, admin/grant and admitted-lifecycle
81
- requirements remain provider/integration-owner work.
82
- - Published OKF2.1.0's captured worker profile retains its strict Pi,
83
- explicit-model and sole-OKF limitation. Candidate
84
- [OKF PR4](https://github.com/awebai/oats-okf/pull/4), `7cff887c`, preserves retained
85
- Claude/Codex/null-model intent and the approved helper capability closure;
86
- review is pending, not published2.1.0 behavior. Pi plus messaging is still
87
- unqualified. Do not silently switch runtimes, force a model, or drop capabilities.
97
+ - aweb 1.10.3 (`24efa6f9`) has no portable binding interface; **aweb 1.11.0**
98
+ (`v1.11.0`, OATS >=0.24.2) adds it and the five editions now pin it. Its `check`
99
+ qualifies only an input-capable Claude/Codex primary with an explicit private team
100
+ and `delivery: session`; strict-Pi print reports `needs-configuration`. Status is on
101
+ the [program board](design/2026-09-20-redesign-program-board.md). Qualification
102
+ is HOME-route operational custody only: not human/native-principal delegation,
103
+ private grants, broker delivery or model consumption.
104
+ - Published OKF2.1.1 accepts retained Claude/Codex helpers with the complete approved
105
+ capability closure and native-default model intent. Strict Pi still requires an
106
+ explicit model and the sole-OKF profile; Pi plus messaging remains unqualified.
107
+ This provider release alone is not combined-profile acceptance. Do not silently
108
+ switch runtimes, force a model, or drop capabilities.
88
109
 
89
110
  These are explicit readiness holds, not reasons to weaken the source. Parent must
90
111
  select reviewed compatible provider revisions and update the source pin deliberately
91
112
  before claiming an operational pilot; metadata-only repository indexes change none
92
113
  of these runtime facts.
93
114
 
94
- The workspace intentionally starts with **`imports: []`**. A source cannot pin a
95
- future commit containing itself. This first commit is publishable source metadata,
96
- not an already usable/adopted pilot graph or a phase-1 exit verdict.
115
+ Stage one used an empty imports list until source publication. Stage two is now
116
+ committed: all five imports pin **`caa341f34009e37006567419a983d5a743037a79`**, the
117
+ published edition revision containing explicit core requirements and the package.
118
+ The later workspace commit `375b9f42` added those imports. Live source inspection
119
+ against published main resolved all five as `ready-for-preparation`; this is
120
+ metadata readiness, not provider binding, approval, enrollment or a running pilot.
97
121
 
98
- ## Publish in this order
122
+ ## Preserve source-before-import publication order
99
123
 
100
- 1. Review and publish this source/export commit to the framework repository. Save
101
- the **actual reviewed immutable source commit** containing the complete soul.
102
- Do not put an invented SHA, a mutable branch or an unreviewed local candidate
103
- in the workspace import and describe it as the accepted source.
124
+ 1. Publish complete, reviewed source editions before pinning them. The current
125
+ source is `caa341f34009e37006567419a983d5a743037a79`; future revisions must likewise
126
+ exist before their workspace import update. Never use an invented SHA, a mutable
127
+ branch or an unreviewed local candidate as the accepted source.
104
128
  2. In each of the six repositories, review a root `oats.yaml` against its actual
105
129
  source head and actual `oats-package/oats-package.json`. The declaration is:
106
130
 
@@ -114,21 +138,25 @@ not an already usable/adopted pilot graph or a phase-1 exit verdict.
114
138
  ```
115
139
 
116
140
  Preserve payloads, versions, old tags and legacy templates. This does not
117
- activate oats.dev, messaging or either optional task integration.
118
- 3. In a subsequent reviewed framework commit, replace the empty imports list with
119
- an import of the source commit from step 1:
141
+ activate oats.dev, messaging or either optional task integration. Indexes are
142
+ published on `main` in all six capability repositories (oats-okf, oats-aweb,
143
+ oats-authoring, oats-jira, oats-dev, oats-linear); their publication proceeded
144
+ separately from the framework's own source imports.
145
+ 3. A subsequent workspace commit pins the published source, never itself or a
146
+ future commit. The current first import is:
120
147
 
121
148
  ```yaml
122
149
  imports:
123
150
  - source: git:github.com/awebai/oats
124
151
  soul: souls/oats-expert
125
- revision: <actual-reviewed-published-source-commit>
152
+ revision: caa341f34009e37006567419a983d5a743037a79
126
153
  alias: oats-expert
127
154
  ```
128
155
 
129
- The placeholder is explanatory text, never a value to commit. Update the
130
- staged-import test with that real publication evidence at this step. Do not
131
- change the stable export path or owner merely because the workspace advances.
156
+ The [actual workspace](../oats-workspace.yaml) contains all five imports at that
157
+ same revision; this excerpt is not a replacement for the full list. The layout
158
+ test now checks stage-two imports and source-document declarations. Do not
159
+ change stable export paths or owners merely because the workspace advances.
132
160
  4. Qualify reciprocal admission at the now-published observations. A missing
133
161
  backlink, a fork's copied file or a stale workspace observation is not membership.
134
162
  Cross-repository indexes may land separately; until both sides exist, report the
@@ -149,19 +177,18 @@ may consume it without membership in the OATS development workspace.
149
177
 
150
178
  ## Inspect source metadata before preparation
151
179
 
152
- The public source inspector is implemented in **PR24, commit
153
- `bc598c484fd097fc5707fd4a33b7877ca00e5da3`**. Use this section only after the
154
- integration owner supplies a reviewed CLI containing that implementation. It is
155
- **not a command supported by the original 0.24.0 release**: that older inspect
156
- route can ignore the request flag and consult ambient classic configuration.
157
- Do not infer availability from the version floor of a capability.
180
+ The public source inspector ships in [OATS 0.24.1](release-notes/v0.24.1.md),
181
+ following PR24 integration. Use an installed CLI containing that implementation.
182
+ It is **not supported by the original 0.24.0 release**: that older inspect route
183
+ can ignore the request flag and consult ambient classic configuration. Do not
184
+ infer command availability from a capability's version floor or today's catalog.
158
185
 
159
186
  ```sh
160
187
  oats inspect --request /absolute/inspection.json --json
161
188
  ```
162
189
 
163
- After the real workspace import from publication step 3 exists, the authored
164
- inspection input may use the same repository for workspace, member and source:
190
+ With the stage-two imports published, the authored inspection input can use the
191
+ same repository for workspace, member and source:
165
192
 
166
193
  ```json
167
194
  {
@@ -222,7 +249,7 @@ Before preparing, the integration lead must supply:
222
249
  - The published workspace/source observations and an explicit fresh physical
223
250
  deployment/home placement. Do not copy old locks, retained records or identities.
224
251
  - An operator-owned nonsecret request with `workspace` (its source and origin),
225
- `source: "oats-expert"` after the real import is published, and `mode: "directory"`.
252
+ `source: "oats-expert"` (or another published expert alias), and `mode: "directory"`.
226
253
  Standalone callers instead give the complete `{source,soul,revision,alias}`
227
254
  reference and an explicit standalone context; they do not inherit this workspace.
228
255
  - Explicit provider-specific settings and bindings. OKF preparation needs selected
@@ -236,7 +263,7 @@ Before preparing, the integration lead must supply:
236
263
  `operator.policy.messaging` selection: capability, matching selected source and
237
264
  `settings: {delivery: session}`. Retain host requirements, session `ifInstalled`
238
265
  minimums and any selected authoring requirements. Selecting session delivery neither
239
- adds the missing1.10.3 binding adapter nor supplies captured wake/input authority.
266
+ makes a strict-Pi print primary input-capable nor supplies captured wake authority.
240
267
  - A qualified primary/helper runtime/model/resource profile. Capture the intended
241
268
  helper selection in `helperLaunches["oats.okf:memory-harvest"]`, not the legacy
242
269
  `souls.memory-harvest` configuration. Do not replace retained intent to fit an easier
@@ -262,10 +289,12 @@ Do not mix other preparation flags into request-file mode. A needs-configuration
262
289
  approval result is not a ready instance. A scaffold materializes resources and may
263
290
  run approved hooks; it is not a message exchange or model session. Actual dispatch,
264
291
  continuation, native capture, messaging and learning require the integration owner's
265
- qualified profile and receipts. Captured wake/input and public captured retirement
266
- remain unsupported; a stopped-home observation is not delivery or retirement authority.
267
- A session-delivered messaging profile therefore cannot pass on start-only evidence.
268
- Do not route it through legacy input/retire or remove the messaging requirement.
292
+ qualified profile and receipts. OATS 0.24.1 adds captured custody checks to the
293
+ existing HOME-only session inspect/input route; it does not supply the missing
294
+ messaging adapter or qualify every lifecycle route. Verify wake/input/retirement
295
+ support for the exact route and runtime. A stopped-home observation is not delivery
296
+ or retirement authority, and a messaging profile cannot pass on start-only evidence.
297
+ Do not bypass custody with a legacy fallback or remove the messaging requirement.
269
298
  Consult the current installed public help and the provider's supported commands;
270
299
  this guide introduces no new CLI grammar. The source inspector above is a separate
271
300
  implementation dependency, not a change to the existing prepare request contract.
@@ -282,4 +311,4 @@ indexes are not evidence that the six real repositories are already published.
282
311
  Source and metadata checks do not enroll users, initialize the phase-2 store, register
283
312
  production writers or qualify private messaging. Parent alone coordinates publication,
284
313
  local operator approval and actual adoption. Full Desktop parity follows usable
285
- infrastructure adoption, not merely seven YAML files passing validation.
314
+ infrastructure adoption, not merely source metadata passing validation.
@@ -9,6 +9,10 @@ configuration cascade, package lock, similarly named capability, or source path.
9
9
  Load **oats-portable** before invoking or reasoning about captured OATS commands.
10
10
  Load **oats-portable-artifacts** for exact retained inspection and approval. Do not load the legacy **oats**,
11
11
  **oats-config**, or **oats-packages** procedures to fill a captured input.
12
+ If this retained composition includes **oats.core**, its **oats-operate** and
13
+ **oats-souls** skills are capability resources, not implicit kernel additions.
14
+ Use only the resources actually included; a missing capability is not permission
15
+ to fetch or substitute a current version.
12
16
 
13
17
  Captured start/restart use exact retained launch inputs and supported native
14
18
  endpoints. Captured wake/retire, unqualified runtime contributions and non-directory