@awebai/oats 0.23.2 → 0.24.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.
- package/README.md +224 -391
- package/bin/oats-pi-sdk-host.mjs +17 -0
- package/bin/oats.mjs +470 -51
- package/capabilities/oats-okf/bin/oats-okf-binding.mjs +14 -0
- package/capabilities/oats-okf/bin/oats-okf.mjs +79 -11
- package/capabilities/oats-okf/lib/binding-wire.mjs +268 -0
- package/capabilities/oats-okf/lib/captured-worker.mjs +109 -0
- package/capabilities/oats-okf/lib/config.mjs +2 -1
- package/capabilities/oats-okf/lib/inspection.mjs +16 -1
- package/capabilities/oats-okf/lib/invocation-context.mjs +111 -0
- package/capabilities/oats-okf/lib/invocation-shape.mjs +135 -0
- package/capabilities/oats-okf/lib/io.mjs +1 -1
- package/capabilities/oats-okf/lib/portable-binding.mjs +199 -0
- package/capabilities/oats-okf/lib/source-contract.mjs +46 -0
- package/capabilities/oats-okf/lib/sources.mjs +123 -3
- package/capabilities/oats-okf/lib/stores.mjs +104 -25
- package/capabilities/oats-okf/lib/worker.mjs +69 -10
- package/capabilities/oats-okf/oats.json +35 -7
- package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +87 -0
- package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +113 -0
- package/capabilities/oats-okf/skills/memory-harvest/SKILL.md +23 -5
- package/capabilities/oats-okf/skills/okf/SKILL.md +42 -1
- package/docs/artifact-approvals.schema.json +7 -0
- package/docs/capabilities.md +4 -0
- package/docs/capability-manifest.schema.json +37 -66
- package/docs/captured-invocation-context.schema.json +7 -0
- package/docs/captured-resolution.schema.json +7 -0
- package/docs/design/2026-09-14-artifact-retention-contract.md +190 -0
- package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +708 -0
- package/docs/design/2026-09-14-portable-souls-contract-amendments.md +85 -0
- package/docs/design/2026-09-14-portable-souls-explainer.md +750 -0
- package/docs/design/2026-09-15-captured-dispatch.md +127 -0
- package/docs/design/2026-09-15-captured-resolution-records.md +143 -0
- package/docs/design/2026-09-15-package-preparation.md +100 -0
- package/docs/design/2026-09-15-portable-data-contract.md +121 -0
- package/docs/design/2026-09-15-portable-declarations.md +189 -0
- package/docs/design/2026-09-15-portable-souls-handoff.md +150 -0
- package/docs/design/2026-09-15-portable-souls-implementation.md +417 -0
- package/docs/design/2026-09-15-selection-lock-and-approval.md +122 -0
- package/docs/design/2026-09-15-source-observation.md +119 -0
- package/docs/design/2026-09-16-captured-admission.md +77 -0
- package/docs/design/2026-09-16-captured-helper-dispatch.md +105 -0
- package/docs/design/2026-09-16-captured-launch-inputs.md +42 -0
- package/docs/design/2026-09-16-command-profile-preparation.md +86 -0
- package/docs/design/2026-09-16-fresh-install-first-rollout.md +47 -0
- package/docs/design/2026-09-16-fresh-operator-walkthrough.md +277 -0
- package/docs/design/2026-09-16-knowledge-capability-contract.md +61 -0
- package/docs/design/2026-09-16-messaging-capability-contract.md +59 -0
- package/docs/design/2026-09-16-portable-migration-evidence.md +156 -0
- package/docs/design/2026-09-16-portable-onboarding.md +177 -0
- package/docs/design/2026-09-16-prepare-request-transport.md +26 -0
- package/docs/design/2026-09-16-provider-binding-codecs.md +98 -0
- package/docs/design/2026-09-16-provider-binding-wire.md +247 -0
- package/docs/design/2026-09-17-capability-helper-input-contract.md +95 -0
- package/docs/design/2026-09-17-captured-backend-parity.md +53 -0
- package/docs/design/2026-09-17-captured-native-start.md +58 -0
- package/docs/design/2026-09-17-portable-boundary-hookup.md +19 -0
- package/docs/design/2026-09-17-portable-boundary-resources.md +52 -0
- package/docs/design/2026-09-17-public-captured-start.md +108 -0
- package/docs/design/2026-09-17-public-prepare-request.md +90 -0
- package/docs/design/2026-09-18-captured-pi-host.md +205 -0
- package/docs/design/2026-09-18-first-cut-release-checklist.md +131 -0
- package/docs/design/2026-09-18-herdr-protocol-compatibility.md +60 -0
- package/docs/design/2026-09-20-redesign-program-board.md +70 -0
- package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +287 -0
- package/docs/design/2026-09-20-workspace-onboarding-public.md +124 -0
- package/docs/design/README.md +42 -0
- package/docs/desktop-cli-api.md +5 -2
- package/docs/execution-capsule.schema.json +108 -0
- package/docs/execution-targets.md +20 -7
- package/docs/first-team.md +1 -1
- package/docs/knowledge-theory.md +353 -111
- package/docs/knowledge.md +10 -1
- package/docs/layers.md +89 -354
- package/docs/oats-lock-v3.schema.json +7 -0
- package/docs/oats-member.schema.json +38 -0
- package/docs/oats-workspace.schema.json +68 -0
- package/docs/official-marketplace.md +79 -0
- package/docs/packages.md +4 -0
- package/docs/portable.schema.json +2512 -0
- package/docs/provider-check-input.schema.json +7 -0
- package/docs/release-notes/v0.24.0.md +104 -0
- package/docs/release-notes/v0.24.1.md +17 -0
- package/docs/schedules.md +126 -14
- package/docs/soul.schema.json +82 -0
- package/docs/souls-and-instances.md +20 -7
- package/docs/workspace-adoption.md +285 -0
- package/docs/workspaces.md +154 -0
- package/injects/oats-portable.md +16 -0
- package/injects/portable-instance-boundary.md +39 -0
- package/injects/portable-work-directory.md +29 -0
- package/lib/artifact-approvals.mjs +120 -0
- package/lib/artifact-tree.mjs +141 -0
- package/lib/capability-artifacts.mjs +179 -0
- package/lib/capability-execution.mjs +15 -0
- package/lib/capability-inputs.mjs +39 -0
- package/lib/capability-provenance.mjs +231 -0
- package/lib/captured-action-shape.mjs +21 -0
- package/lib/captured-admission-shape.mjs +20 -0
- package/lib/captured-binding-file.mjs +36 -0
- package/lib/captured-dispatch.mjs +66 -0
- package/lib/captured-instance-index.mjs +277 -0
- package/lib/captured-invocation-context.mjs +130 -0
- package/lib/captured-launch-request.mjs +46 -0
- package/lib/captured-operation-process.mjs +15 -0
- package/lib/captured-pi-custody.mjs +29 -0
- package/lib/captured-pi-host.mjs +167 -0
- package/lib/captured-pi-outcome.mjs +172 -0
- package/lib/captured-resolutions.mjs +275 -0
- package/lib/captured-scaffold.mjs +87 -0
- package/lib/captured-selector.mjs +28 -0
- package/lib/captured-session-backend.mjs +52 -0
- package/lib/captured-source-receipt-file.mjs +72 -0
- package/lib/config-data.mjs +104 -0
- package/lib/core.mjs +961 -566
- package/lib/errors.mjs +7 -0
- package/lib/helper-injection-policy.mjs +98 -0
- package/lib/herdr.mjs +18 -7
- package/lib/instruction-composition.mjs +31 -0
- package/lib/legacy-lock-codec.mjs +106 -0
- package/lib/manifest-settings.mjs +84 -0
- package/lib/package-closure.mjs +48 -0
- package/lib/package-materialization.mjs +83 -0
- package/lib/pi-sdk-host.mjs +229 -0
- package/lib/portable-artifacts.mjs +115 -0
- package/lib/portable-choices.mjs +82 -0
- package/lib/portable-composition.mjs +136 -0
- package/lib/portable-digest.mjs +105 -0
- package/lib/portable-files.mjs +26 -0
- package/lib/portable-identity.mjs +40 -0
- package/lib/portable-lock.mjs +117 -0
- package/lib/portable-migration-artifacts.mjs +135 -0
- package/lib/portable-migration-evidence.mjs +305 -0
- package/lib/portable-migration-store.mjs +199 -0
- package/lib/portable-migration.mjs +104 -0
- package/lib/portable-onboarding-acceptance.mjs +66 -0
- package/lib/portable-onboarding-request.mjs +49 -0
- package/lib/portable-onboarding.mjs +249 -0
- package/lib/portable-package-preparation.mjs +188 -0
- package/lib/portable-policy.mjs +44 -0
- package/lib/portable-shape.mjs +35 -0
- package/lib/portable-soul.mjs +38 -0
- package/lib/portable-state.mjs +80 -0
- package/lib/portable-values.mjs +181 -0
- package/lib/prepare-composition.mjs +151 -0
- package/lib/prepared-bindings.mjs +78 -0
- package/lib/prepared-resources.mjs +127 -0
- package/lib/provider-binding-broker.mjs +59 -0
- package/lib/provider-binding-wire.mjs +110 -0
- package/lib/provider-binding.mjs +22 -0
- package/lib/repository-observation.mjs +226 -0
- package/lib/resolution-shape.mjs +393 -0
- package/lib/schedule-capsule.mjs +206 -0
- package/lib/schedule.mjs +259 -38
- package/lib/servers.mjs +15 -0
- package/lib/soul-constraints.mjs +40 -0
- package/lib/source-projection.mjs +84 -0
- package/lib/source-spec.mjs +189 -0
- package/lib/workspace-definition.mjs +126 -0
- package/lib/workspace-discovery.mjs +146 -0
- package/package-catalog.json +2 -1
- package/package.json +3 -2
- package/packages/record/lib/capture-cc.mjs +14 -6
- package/packages/record/lib/formats.mjs +14 -3
- package/packages/record/lib/native-history.mjs +277 -7
- package/packages/record/lib/session-snapshot.mjs +25 -5
- package/packages/record/lib/sessions-for-home.mjs +30 -13
- package/skills/oats/SKILL.md +12 -7
- package/skills/oats-config/SKILL.md +11 -9
- package/skills/oats-packages/SKILL.md +12 -8
- package/skills/oats-portable/SKILL.md +115 -0
- package/skills/oats-portable-artifacts/SKILL.md +63 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# OATS adoption plan: workspace first, knowledge and experts second
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-09-20
|
|
4
|
+
|
|
5
|
+
**Status:** Phase1 implementation authorised by the human, using the existing developers under lead supervision/review. The workspace home is confirmed as `oats`; `oats-dev` remains development capabilities. This does not claim completed conversion or authorise unspecified new contracts, credential operations or live deployment mutations.
|
|
6
|
+
|
|
7
|
+
## Goal and order
|
|
8
|
+
|
|
9
|
+
1. Put OATS development onto the Git-workspace and Portable Souls architecture: a real shared workspace definition, qualified repository exports, by-reference sources and usable local deployments.
|
|
10
|
+
2. Centralise the curated knowledge and adopt the five expertise souls on that foundation.
|
|
11
|
+
3. Complete Desktop design/feature parity against the resulting supported flows.
|
|
12
|
+
|
|
13
|
+
A distribution work package (below, D1–D4) accompanies phase1: the kernel's operational skills become the official capabilities `oats.core` and `oats.setup`, every soul declares `oats.core` explicitly by default, onboarding creates an `oats-setup-expert`, and the official marketplace is the reviewed list in this repository.
|
|
14
|
+
|
|
15
|
+
The second phase does not run as an unrelated bulk migration while the first is still changing underneath it. Necessary generic knowledge/provider boundary fixes belong in phase1; default OKF behavior and the actual corpus/roster cutover belong in phase2.
|
|
16
|
+
|
|
17
|
+
## Target arrangement
|
|
18
|
+
|
|
19
|
+
Approved repository responsibilities following the framework-hosted workspace choice. The two-phase order is unchanged:
|
|
20
|
+
|
|
21
|
+
| Repository | Role in the new setup |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `oats` | Kernel, adapters, Desktop and portable soul exports through `oats.yaml`; hosts the shared development workspace in `oats-workspace.yaml`; ships the official capabilities `oats.core` and `oats.setup` and the reviewed official package list (`package-catalog.json`) |
|
|
24
|
+
| `oats-dev` | Reusable OATS development capabilities, including selected review skills/behavior; no longer responsible for defining the new workspace through a package template |
|
|
25
|
+
| `oats-okf` | Reference knowledge capability and its complete reading/capture/judgment/delivery behavior |
|
|
26
|
+
| `oats-aweb` | Messaging capability and its provider-owned identity/team/wake behavior |
|
|
27
|
+
| `oats-authoring` | Reusable authoring support |
|
|
28
|
+
| `oats-jira`, `oats-linear` | Optional task capabilities; workspace membership does not activate them |
|
|
29
|
+
| `oats-knowledge` | Curated accepted expertise, not executable soul definitions, working transcripts or a copy of framework documentation |
|
|
30
|
+
|
|
31
|
+
A workspace is a logical role and does not require a dedicated repository. The human has selected co-hosting in `oats`, preserving `oats-dev`'s capability purpose. Keep the `oats.dev` package where its reusable behavior is useful; separately review compatibility and the legacy template. Preserve published tags/payloads and exact restores. Merely adopting the workspace does not activate every capability.
|
|
32
|
+
|
|
33
|
+
`oats-workspace.yaml` and `oats.yaml` have separate contracts even when co-located. Admit the framework repository explicitly if it participates as a member, and verify matching reciprocal observations. Importing a public OATS soul or installing the framework must NOT implicitly select or enroll an adopter in the framework's development workspace. A separate workspace repository remains an option if independent permissions or lifecycle become necessary.
|
|
34
|
+
|
|
35
|
+
The shared workspace is **not a shared live runtime**. Each operator retains local deployment mappings, runtime/authentication, state and explicit approvals. Config and nonsecret lock/template provenance can be Git-shared where supported; credentials and live instance state cannot. Git access, organizational admission, executable approval and messaging enrollment remain distinct.
|
|
36
|
+
|
|
37
|
+
## Verified starting point
|
|
38
|
+
|
|
39
|
+
- Kernel/Pi/Desktop0.24.0 and OKF2.1.0 are released. Workspace/source codecs, discovery, retained composition and scoped execution/provider machinery already exist. This is not a kernel rewrite from zero.
|
|
40
|
+
- A read-only September20 inventory found no root `oats-workspace.yaml` in either `oats` or `oats-dev` and no root `oats.yaml` in the framework or the six inspected capability/development repositories. The selected knowledge repository is not yet initialized. These observations must be refreshed against exact heads before editing.
|
|
41
|
+
- The default development package still supplies a legacy config template and `oats.review`; these are capability/template exports, not a Git workspace definition.
|
|
42
|
+
- The checked-in roster remains legacy. A five-role candidate and curated corpus are preserved but not validly published/adopted as the new portable setup.
|
|
43
|
+
- Earlier live native/directory-learning evidence is valuable but does not prove our actual Git workspace, two-operator deployment, private messaging or Git-PR learning cutover.
|
|
44
|
+
- Current source contains the approved forward correction of the accidentally integrated held record patch. Preserve repaired history and its active-content exclusion; do not reopen that incident or repeat closed test matrices.
|
|
45
|
+
|
|
46
|
+
# Phase 1 — adopt the workspace and Portable Souls architecture
|
|
47
|
+
|
|
48
|
+
## P1.1 — freeze the repository, source and runtime map
|
|
49
|
+
|
|
50
|
+
**Owner:** integration lead, with kernel/provider/deployment owners.
|
|
51
|
+
|
|
52
|
+
Produce one bounded implementation checklist from the actual current code and chosen package revisions:
|
|
53
|
+
|
|
54
|
+
- Exact workspace repository and intended member repositories; external consumption is not membership.
|
|
55
|
+
- Source/export locations for the necessary transitional roles and the eventual five experts. Recommended reusable soul editions remain in the framework repository, separate from live legacy `agents/` sources.
|
|
56
|
+
- Compatible package/source revisions, required capabilities and operator-selectable bindings.
|
|
57
|
+
- Actual runtime/backend and messaging-delivery profiles to support, including intentional local differences. Do not replace native credentials/profiles or copy one operator's raw configuration to another.
|
|
58
|
+
- Existing support versus declaration/resource drift versus provider work versus genuinely missing kernel/CLI seams. Every missing generic field or authority change gets a concrete proposal; reuse the current parser/resolver/invocation engine.
|
|
59
|
+
|
|
60
|
+
**Deliverable:** an exact repository/change/owner matrix and a small gap list, not another open-ended architecture investigation.
|
|
61
|
+
|
|
62
|
+
## P1.2 — author the real workspace
|
|
63
|
+
|
|
64
|
+
**Owner:** workspace/deployment owner, reviewed by the integration lead.
|
|
65
|
+
|
|
66
|
+
Add `oats-workspace.yaml` to the confirmed workspace home `oats` using the shipped schema, alongside that repository's separate `oats.yaml` export index:
|
|
67
|
+
|
|
68
|
+
- Intended members, selected source imports with real reviewed revisions and aliases.
|
|
69
|
+
- Shared defaults bounded by soul requirements, not a new repository-level policy hierarchy.
|
|
70
|
+
- Provider-owned knowledge declarations and team aliases only where meaningful and safe to publish.
|
|
71
|
+
- Explicit discovery/catalog references if needed, not an OATS-hosted registry.
|
|
72
|
+
|
|
73
|
+
Do not advertise a planned source export or uninitialized knowledge base as usable. Do not commit secrets, private runtime state or machine-specific execution paths into the public workspace. The phase2 knowledge destination can remain deliberately unresolved until it is initialized and approved.
|
|
74
|
+
|
|
75
|
+
**Deliverable:** validated, reviewable workspace definition and a short explanation of shared versus operator-local choices.
|
|
76
|
+
|
|
77
|
+
## P1.3 — publish repository indexes and reciprocal admission
|
|
78
|
+
|
|
79
|
+
**Owner:** each repository/package owner, coordinated by the integration lead.
|
|
80
|
+
|
|
81
|
+
For every intended member:
|
|
82
|
+
|
|
83
|
+
- Add `oats.yaml` with the correct workspace backlink and actual exports.
|
|
84
|
+
- Advertise package roots containing real `oats-package.json` files, not arbitrary npm roots.
|
|
85
|
+
- Advertise only source-complete souls with explicit definition paths; imported souls remain references, not adopter-owned copies.
|
|
86
|
+
- Add knowledge exports only when the provider declaration/base actually exists. A metadata-only bootstrap of the knowledge repository must not masquerade as corpus migration or a ready store.
|
|
87
|
+
- Preserve package identities, compatible version floors, immutable releases and old locked revisions.
|
|
88
|
+
|
|
89
|
+
Coordinate publication of backlinks and workspace admission. One side alone is not membership. Resolve the existing contract's default-branch observations and explicit revisions honestly; do not invent mutually dependent future commit pins or guess `main` when the host's default branch is required.
|
|
90
|
+
|
|
91
|
+
**Deliverable:** discovery can qualify intended membership and enumerate real exports across repositories without requiring every source checkout to be present locally.
|
|
92
|
+
|
|
93
|
+
## P1.4 — make the declared setup operational
|
|
94
|
+
|
|
95
|
+
**Owner:** kernel/lifecycle owner and the owners of the selected capabilities.
|
|
96
|
+
|
|
97
|
+
This is **adoption and validation first**, not a mandate to write new runtime code. Exercise the already shipped paths with correct declarations and inputs before changing them. A new inspection convenience is not automatically an adoption blocker; preserve it as a separate proposal unless necessity is demonstrated. Provider adaptation must identify the minimum usable completion path, not merely replace one refusal with a later refusal.
|
|
98
|
+
|
|
99
|
+
Close only demonstrated gaps needed by the chosen workspace/profile:
|
|
100
|
+
|
|
101
|
+
- Public inspection/preparation, explicit artifact approval, retained resolution, scaffold and native start through supported CLI/API paths.
|
|
102
|
+
- Complete source/skill/capability closure; independent source, deployment and work-target identities.
|
|
103
|
+
- Actual provider bindings, required hooks and their truthful readiness. A parsed team/store declaration is not enrollment or a working provider.
|
|
104
|
+
- Required continuation, capture and applicable wake/retire/recovery behavior for the selected profile. A path that is still unsupported must be named and resolved, not hidden behind successful start-only evidence.
|
|
105
|
+
- Version-correct operational skills and guidance, including known stale claims that public request/context/launch inputs are unavailable.
|
|
106
|
+
- Any minimal Desktop compatibility needed to observe/refuse operations truthfully; full redesign parity is later.
|
|
107
|
+
|
|
108
|
+
Use an explicitly agreed transitional edition of an existing role for the pilot, not a new fictitious owner or bootstrap host. Retain its actual requirements. Any temporary acceptance store/profile must be explicitly scoped and must not be counted as production knowledge adoption. Do not silently remove messaging, knowledge, plugins or other requirements to make it launch.
|
|
109
|
+
|
|
110
|
+
New package defaults or executable changes require appropriate release/pinning/approval. Adding metadata does not itself require replacing stable runtime components, but a real runtime change is not deployed merely because it reached main.
|
|
111
|
+
|
|
112
|
+
**Deliverable:** one reproducible operator path from the shared Git definition to a genuinely usable, retained portable instance under the chosen profile.
|
|
113
|
+
|
|
114
|
+
## P1.5 — adopt fresh local deployments without disturbing existing work
|
|
115
|
+
|
|
116
|
+
**Owner:** each local operator; coordinated readiness/evidence review by the integration lead.
|
|
117
|
+
|
|
118
|
+
- Use a fresh explicit deployment location where existing managed state conflicts. Preserve old configs, locks, knowledge, identities, sessions, worktrees and pending jobs.
|
|
119
|
+
- Map local repositories/work targets deliberately; operators need not have identical directory layouts.
|
|
120
|
+
- Review exact software and restore/acquire through supported tooling. Keep native auth and deliberately chosen model/delivery behavior local.
|
|
121
|
+
- Verify source discovery, reciprocal admission, imported identity, retained composition and actual start/continuation on the approved test host.
|
|
122
|
+
- Check the second operator's declarations/readiness and an actual message/reply through its own identity without requesting model or GUI tests on that machine. Existing legacy connectivity is not automatically new-profile qualification.
|
|
123
|
+
- Exercise relevant source-unavailability/update safeguards using owned test fixtures, never by deleting working source repositories or modifying retained artifacts.
|
|
124
|
+
|
|
125
|
+
### Phase1 exit gate
|
|
126
|
+
|
|
127
|
+
The shared workspace and repository declarations are published and discoverable; a fresh deployment can select a real portable source and complete the supported prepare/approve/scaffold/start path with its declared requirements. Required lifecycle/provider limitations are resolved or explicitly constrain the qualified profile. Both operators understand the same shared definition and their own local differences. Old live deployments remain preserved.
|
|
128
|
+
|
|
129
|
+
**Seven YAML files alone do not satisfy this gate.** Nor does an isolated fixture establish production provider readiness. No claim that the five new knowledge-backed experts are adopted is made yet.
|
|
130
|
+
|
|
131
|
+
# Distribution — official capabilities and the official marketplace
|
|
132
|
+
|
|
133
|
+
**Status:** direction accepted by the human on 2026-09-20 (decision `agents/oats-expert/soul/knowledge/decisions/official-capabilities-oats-core-setup-and-marketplace.md`). Runs alongside phase1 once the current lanes' PRs are integrated; it changes how OATS itself is distributed and must be in place before phase2 souls are published, since those souls declare their capabilities explicitly.
|
|
134
|
+
|
|
135
|
+
Today the skills that teach an agent to operate OATS (`oats`, `oats-config`, `oats-packages`) and the "you run on OATS" injection are ambient kernel content. Under Portable Souls a soul declares its capabilities and their sources, so this knowledge must be packaged as capabilities a soul can declare, remove or replace.
|
|
136
|
+
|
|
137
|
+
## D1 — package `oats.core` and `oats.setup` from the oats repository
|
|
138
|
+
|
|
139
|
+
**Owner:** capability/provider owner (packaging), reviewed by the integration lead.
|
|
140
|
+
|
|
141
|
+
- `oats.core` — day-to-day operation, present on every soul by default: skill `oats-operate` (status, spawn, retire, doctor, lifecycle, instance layout) and skill `oats-souls` (soul discovery, spawn relations/linkage, roster, workspace-member souls), plus the former `injects/oats.md` injection.
|
|
142
|
+
- `oats.setup` — deployment and workspace configuration ("OATS Soul Setup"): the former `oats-config` and `oats-packages` skills, workspace adoption guidance and package acquisition/trust/lock knowledge.
|
|
143
|
+
- Both live under the framework's `oats-package/capabilities/` beside `oats-knowledge-theory`, are exported through the repository package manifest and `oats.yaml`, and are versioned/locked like any package. Content is moved from the existing skills, not re-authored; stale claims are corrected in the move.
|
|
144
|
+
- The `instance-boundary` injection, work-mode briefings and config-declared injections **stay kernel-owned** — they describe the layout the kernel itself creates.
|
|
145
|
+
|
|
146
|
+
**Deliverable:** two installable capabilities with manifests and focused inventory tests; the kernel unchanged except for registering nothing new.
|
|
147
|
+
|
|
148
|
+
## D2 — explicit default `oats.core` on every soul; kernel skills de-ambiented
|
|
149
|
+
|
|
150
|
+
**Owner:** kernel/lifecycle owner.
|
|
151
|
+
|
|
152
|
+
- Every soul-creation path (CLI, Desktop, setup guidance) writes `requires.capabilities.oats.core` with its source into the soul definition. It is visible in the file and the user can remove it.
|
|
153
|
+
- The kernel does **not** inject `oats.core` when absent; `oats doctor` reports a soul that has neither `oats.core` nor a deliberate opt-out note, as information, not an error.
|
|
154
|
+
- The hard-coded kernel skill list and the `kernel:oats` injection are retired once souls carry `oats.core`. Transition: both coexist for one release, with existing kernel-listed skills marked deprecated in favor of the capability.
|
|
155
|
+
- Existing checked-in souls in this repository are updated to declare `oats.core` explicitly as part of the same change.
|
|
156
|
+
|
|
157
|
+
**Deliverable:** soul definitions are honest about OATS operational knowledge; no hidden kernel dependency.
|
|
158
|
+
|
|
159
|
+
## D3 — onboarding creates and instantiates `oats-setup-expert`
|
|
160
|
+
|
|
161
|
+
**Owner:** kernel/lifecycle owner, with the workspace/source owner for the soul edition.
|
|
162
|
+
|
|
163
|
+
- Onboarding a new workspace (or a fresh deployment of one) produces a soul `oats-setup-expert` whose definition declares **both** `oats.core` and `oats.setup`, prepares/approves its artifacts under the normal approval bar, and instantiates it.
|
|
164
|
+
- The setup expert then drives adoption: declaring/adopting member repositories, selecting fundamental-layer capabilities, creating further souls (each with explicit `oats.core`), and walking the operator through trust/approval steps. Setup becomes a conversation with a competent soul, not a wall of flags.
|
|
165
|
+
- No new bootstrap authority: prepare/approve/scaffold/start remain the shipped path; onboarding only chooses the first soul and its capabilities. The entry point (CLI verb, Desktop flow, or both) and its relation to the version-scoped `oats init`/`oats use` compatibility path is proposed and reviewed separately; do not document a command before it exists.
|
|
166
|
+
- The soul edition itself is source-complete and exported from the oats repository like the other framework souls.
|
|
167
|
+
|
|
168
|
+
**Deliverable:** one reproducible path from "empty workspace" to a running `oats-setup-expert` that can configure the rest.
|
|
169
|
+
|
|
170
|
+
## D4 — the official marketplace is the reviewed list in the oats repository
|
|
171
|
+
|
|
172
|
+
**Owner:** workspace/source owner (list and docs); Desktop owner for the view in the parity phase.
|
|
173
|
+
|
|
174
|
+
- `package-catalog.json` in `awebai/oats` (read today by `officialPackageCatalog()`) **is** the official marketplace. Listing = official. Do not build a second registry.
|
|
175
|
+
- Officialness is granted by a reviewed PR to that file — for external packages too. That review is the safety gate: we control what is called official even when we do not host the code. Document the acceptance criteria (source-complete package, pinned immutable ref, payload root, trust posture, maintainer contact).
|
|
176
|
+
- First entries: `oats.core`, `oats.setup`, `oats.okf`, `oats.aweb`, `oats.authoring`, `oats.jira`, `oats.linear`, `oats.dev`, `oats.knowledge-theory` (the fundamentals are already listed; add the two new ones once released).
|
|
177
|
+
- Discovery is universal (CLI and Desktop marketplace view/search present official packages as assignable to a soul); installation still goes through acquisition, lock and per-capability executable trust. Discoverable is not installed; installed is not approved.
|
|
178
|
+
|
|
179
|
+
**Deliverable:** documented official-list policy and seeded list; Desktop view tracked under phase3 parity.
|
|
180
|
+
|
|
181
|
+
### Distribution exit gate
|
|
182
|
+
|
|
183
|
+
A fresh workspace onboarding yields an `oats-setup-expert` whose definition shows `oats.core` and `oats.setup` resolved from the official list; a soul created by that expert shows `oats.core` explicitly and still runs after the user removes it; the kernel ships no ambient operational skill. Framework souls in this repository declare `oats.core`.
|
|
184
|
+
|
|
185
|
+
# Phase 2 — centralise knowledge and adopt the five expert souls
|
|
186
|
+
|
|
187
|
+
## P2.1 — align the reference knowledge profile
|
|
188
|
+
|
|
189
|
+
**Owner:** OKF owner, with kernel review only for demonstrated generic-boundary gaps.
|
|
190
|
+
|
|
191
|
+
Apply the accepted knowledge model to actual runtime instructions, skills, bindings and behavior:
|
|
192
|
+
|
|
193
|
+
- Centralised per-soul homes with stable identity and explicit cross-reads.
|
|
194
|
+
- Capability-owned organisation, placement, reading, capture, judgment and delivery—not a kernel-owned mandatory knowledge pipeline.
|
|
195
|
+
- Distinct accepted knowledge, local evidence/working state and immutable execution artifacts.
|
|
196
|
+
- Supported reading/refresh/capture for both short- and long-running instances; no automatic active-context synchronisation or silent curriculum replacement.
|
|
197
|
+
- Independent promotion, reference doctrine and PR-only Git delivery, distinguishing proposal, accepted merge and reader visibility.
|
|
198
|
+
|
|
199
|
+
Do not implement automatic speciation, redirects, whole-session cloning, a permanent maintenance agent or every alternative provider as prerequisites. Preserve their architectural possibility without claiming them shipped.
|
|
200
|
+
|
|
201
|
+
## P2.2 — curate and publish the shared knowledge base
|
|
202
|
+
|
|
203
|
+
**Owner:** knowledge steward, with human publication/visibility decision.
|
|
204
|
+
|
|
205
|
+
- Confirm public/private visibility and access before publishing corpus or exposing private locators in the workspace.
|
|
206
|
+
- Reuse the existing curation and disposition records. Add a focused freshness pass for subsequent accepted decisions and discoveries; do not redo the entire audit or bulk-copy legacy folders.
|
|
207
|
+
- Preserve useful expertise, rationale, limitations and maintained slow state. Keep formal contracts/code navigation in docs, repeatable procedures in skills, and task residue/transcripts in local evidence.
|
|
208
|
+
- Give each accepted concept one canonical home, valid cross-links and appropriate provenance/freshness.
|
|
209
|
+
- Separate administrative repository/bootstrap scaffolding from corpus acceptance. Deliver the corpus through reviewed changes; ongoing runtime Git learning remains PR-only.
|
|
210
|
+
|
|
211
|
+
**Deliverable:** a small, current, reviewed knowledge base with an explicit owner/read mapping, not merely a passing validator over relocated text.
|
|
212
|
+
|
|
213
|
+
## P2.3 — publish and adopt the five expertise souls
|
|
214
|
+
|
|
215
|
+
**Owner:** soul/source maintainer, reviewed by the integration lead and knowledge steward.
|
|
216
|
+
|
|
217
|
+
The five permanent expertise roles are:
|
|
218
|
+
|
|
219
|
+
1. `oats-expert` — overall direction and cross-cutting architectural judgment.
|
|
220
|
+
2. `oats-kernel-expert` — kernel/capability contract rationale and technical expertise.
|
|
221
|
+
3. `oats-desktop-expert` — Desktop/product/interaction expertise.
|
|
222
|
+
4. `market-research-expert` — sourced research and positioning evidence.
|
|
223
|
+
5. `oats-assistant` — user-facing adoption and onboarding help.
|
|
224
|
+
|
|
225
|
+
Use source-complete portable declarations, canonical `AGENTS.md` and the `CLAUDE.md` alias, reviewed procedures, explicit capability requirements and stable knowledge bindings. Final export paths must be deliberately chosen before pinning imports. New adopters' learning must not silently default to the source publisher's writer.
|
|
226
|
+
|
|
227
|
+
The optional knowledge-theory authoring expert is not a sixth mandatory runtime role. The public assistant must work through a real supported adoption path, not only as a maintainer-local role. A distinct cold-bootstrap helper protocol, if needed, requires its own scoped decision; do not invent a persistent owner to bypass helper authority.
|
|
228
|
+
|
|
229
|
+
**Deliverable:** five indexed reusable sources, imported by the workspace at real compatible revisions, with the intended expertise/reading boundaries—not renamed engineer charters.
|
|
230
|
+
|
|
231
|
+
## P2.4 — demonstrate learning, then switch writers/readers
|
|
232
|
+
|
|
233
|
+
**Owner:** integration lead and OKF owner, with local operators.
|
|
234
|
+
|
|
235
|
+
Use a small real end-to-end path:
|
|
236
|
+
|
|
237
|
+
1. An expert obtains its accepted foundation and relevant cross-role context.
|
|
238
|
+
2. A working instance captures a useful new finding.
|
|
239
|
+
3. An independent worker judges it and delivers a Git PR.
|
|
240
|
+
4. Authorised review/merge accepts it.
|
|
241
|
+
5. A different/fresh instance obtains that accepted learning through the supported reader/refresh path.
|
|
242
|
+
|
|
243
|
+
Do not seed the conclusion and call that learning. Check representative questions and source/binding correctness for all five roles without running five redundant full matrices.
|
|
244
|
+
|
|
245
|
+
Then cut over the workspace imports/bindings deliberately. Reconcile or hold outstanding old harvests rather than retarget their frozen destinations; avoid duplicate old/new writers. Do not rename live homes or borrow identities. Keep original knowledge and work recoverable. Retirement/removal of superseded sources is a separately verified cleanup after unfinished work is safe.
|
|
246
|
+
|
|
247
|
+
### Phase2 exit gate
|
|
248
|
+
|
|
249
|
+
The five experts run from portable sources in the shared workspace, consult the curated common knowledge, and demonstrate actual reviewed Git learning visible to a subsequent reader. Publication, access, writer ownership and local runtime configuration are known. The old setup is preserved until this is true.
|
|
250
|
+
|
|
251
|
+
# Execution and review discipline
|
|
252
|
+
|
|
253
|
+
The initial implementation lanes are deliberately disjoint:
|
|
254
|
+
|
|
255
|
+
| Lane | Owns | Does not own |
|
|
256
|
+
|---|---|---|
|
|
257
|
+
| Workspace/source declarations | Framework workspace/member indexes, transitional `souls/oats-expert/` edition preserving its existing logical owner, setup guide and metadata tests; other capability repositories' root `oats.yaml` only | Kernel or provider runtime, provider README/tests, framework mirrors, corpus migration |
|
|
258
|
+
| Kernel/onboarding | Public preparation/lifecycle glue, same-repository workspace regression coverage and portable-setup skill | Root workspace/member indexes, soul editions, provider payloads, record optimisation |
|
|
259
|
+
| Capability/provider readiness | Canonical OKF/aweb payloads, manifests, skills/docs/tests and actual profile-readiness facts | Kernel/record, root member indexes, soul editions, framework mirrors/catalog |
|
|
260
|
+
| Integration lead | Scope/interface arbitration, exact review/integration, shared stewardship, release coordination and combined deployment acceptance | Unilateral changes to another operator's credentials, identity or local deployment |
|
|
261
|
+
|
|
262
|
+
Distribution lanes (D1–D4) map onto the same owners: capability/provider readiness packages the two capabilities (D1); kernel/onboarding owns the explicit default, kernel de-ambienting and the setup-expert onboarding (D2, D3); workspace/source declarations own the official list and its policy docs (D4). They are assigned only after the current phase1 PRs are integrated, to avoid overlapping edits in `lib/core.mjs` and the skills tree.
|
|
263
|
+
|
|
264
|
+
The phase1 transitional source is an edition of the existing overall expert, not the full five-role rebuild or an invented bootstrap owner. Source publication precedes workspace import pinning to its actual approved revision. An owner reports a precise cross-lane seam rather than patching another lane's files. No new review agents or per-edit permission loops are required for agreed work.
|
|
265
|
+
|
|
266
|
+
- One redesign lead owns the cross-repository plan, dependency order, scope questions and integration picture. Contributors deliver bounded agreed work and exact diffs/PRs; no wholesale branch merges that import unrelated or held work.
|
|
267
|
+
- Workspace/source metadata and compatibility work can proceed in parallel once their shared identities/contracts are agreed. Provider changes are reviewed against concrete missing seams, not speculative replacement architectures.
|
|
268
|
+
- Local operator approval remains necessary for installation, executable trust, identity/team changes, deployment cutover and disclosure. Lead coordination is not authority over unrelated deployments.
|
|
269
|
+
- Use focused changed-path checks while developing, then one coherent acceptance gate per usable increment. Keep original failed evidence and distinguish author reports, independent checks, installed bytes and real execution.
|
|
270
|
+
- Preserve normal native harness auth and explicit permissions. No implicit credential handling, safety bypasses, source/identity borrowing or model/GUI testing on another operator's machine.
|
|
271
|
+
- Publish updated versions only where code/payload changes require them; never move existing tags. Record delivery and actual adoption separately.
|
|
272
|
+
|
|
273
|
+
# Decisions to settle at the appropriate boundary
|
|
274
|
+
|
|
275
|
+
- Workspace home is settled: `oats` hosts it and `oats-dev` remains development capabilities. Phase1 authorises the parallel existing-role edition at `souls/oats-expert/`; preserve its logical owner and settle any remaining source-policy details before publishing. Final five-role publication/cutover remains phase2, not permission to replace the live roster now.
|
|
276
|
+
- Confirm knowledge visibility and public-safe content before phase2 publication; this need not block the phase1 contract inventory.
|
|
277
|
+
- Agree the exact pilot/provider/runtime profile and its supported lifecycle. No hidden fallback to an easier profile.
|
|
278
|
+
- Review any newly identified generic contract or bootstrap authority change explicitly. Existing accepted constraints do not need repeated approval.
|
|
279
|
+
|
|
280
|
+
# References
|
|
281
|
+
|
|
282
|
+
- [Portable source/workspace declarations](2026-09-15-portable-declarations.md)
|
|
283
|
+
- [Workspace schema](../oats-workspace.schema.json) and [repository index schema](../oats-member.schema.json)
|
|
284
|
+
- [Fresh onboarding boundary](2026-09-16-portable-onboarding.md) — read historical pending statements with the actual current public routes and release scope
|
|
285
|
+
- [Released0.24 scope](../release-notes/v0.24.0.md)
|
|
286
|
+
- [Canonical knowledge theory](../knowledge-theory.md)
|
|
287
|
+
- [Generic knowledge/capability boundary](2026-09-16-knowledge-capability-contract.md)
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Public source inspection for same-repository workspace onboarding
|
|
2
|
+
|
|
3
|
+
This increment supplies the missing public adapter around the EXISTING portable
|
|
4
|
+
onboarding facade. It does not define another workspace format, parser, resolver,
|
|
5
|
+
registry, identity or permission. Source/member declarations remain separately
|
|
6
|
+
owned; production capability/profile readiness is not established by the fixture.
|
|
7
|
+
|
|
8
|
+
## Read-only entry
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
oats inspect --request /absolute/inspection.json --json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
This mode accepts only one request file and `--json`. Explicit captured selectors
|
|
15
|
+
or current-context flags conflict before file reads; inherited captured environment
|
|
16
|
+
is not new-work input. Other existing inspect modes are unchanged. The shared
|
|
17
|
+
bounded strict JSON request reader feeds the existing inspection validator intact:
|
|
18
|
+
unknown fields are not dropped, and no missing context comes from current config.
|
|
19
|
+
|
|
20
|
+
The public core export `inspectPortableOnboarding(input, {repositoryOptions}?)`
|
|
21
|
+
owns one transient repository transaction and its guarded cleanup. Its input is
|
|
22
|
+
the existing facade contract:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"deployment": "/operator/deployments/example",
|
|
27
|
+
"workTarget": "/operator/projects/example",
|
|
28
|
+
"source": "advertised-alias",
|
|
29
|
+
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/source"},
|
|
30
|
+
"workspace": {
|
|
31
|
+
"source": "git:https://example.org/team/framework.git",
|
|
32
|
+
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/workspace"}
|
|
33
|
+
},
|
|
34
|
+
"member": {
|
|
35
|
+
"source": "git:https://example.org/team/framework.git",
|
|
36
|
+
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/member"}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
These paths/references are placeholders. Workspace and member may identify the
|
|
42
|
+
SAME repository. They still require explicit workspace admission, a member
|
|
43
|
+
backlink and matching observed commits. Omitted repository revisions observe the
|
|
44
|
+
hosting default branch; they do not guess `main` or create circular future pins.
|
|
45
|
+
|
|
46
|
+
Independent adoption replaces workspace/member with an explicit source reference
|
|
47
|
+
`{source, soul, revision, alias}` and explicit `standaloneContextKey` (opaque string
|
|
48
|
+
or null). It does not follow the source publisher's workspace backlink or inherit
|
|
49
|
+
its development defaults/teams. A member check is optional; without one, import
|
|
50
|
+
reports `not-requested` membership, never enrollment.
|
|
51
|
+
|
|
52
|
+
## Metadata is not authority or provider readiness
|
|
53
|
+
|
|
54
|
+
Normal JSON envelope `result` retains schemaVersion1 and the existing statuses:
|
|
55
|
+
`ready-for-preparation`, `needs-configuration`, `separate-deployment-required`.
|
|
56
|
+
`ok:true` means the observation succeeded, including a truthful hold. Separate
|
|
57
|
+
fields expose source identity/revision/export metadata, deployment/work paths,
|
|
58
|
+
workspace identity/import locators, reciprocal observations, declared teams and
|
|
59
|
+
non-effect claims. Inspection executes no provider, hook, approval or native
|
|
60
|
+
backend and writes no deployment state; repository scratch is transient.
|
|
61
|
+
|
|
62
|
+
The public projection deliberately does NOT expose `source.reference` as a
|
|
63
|
+
reusable mutation input. Opaque adoption values and provider declaration payloads
|
|
64
|
+
have not been classified by their owner and are omitted. Import summaries expose
|
|
65
|
+
`adoptionPresent`; knowledge export summaries expose contract/version and
|
|
66
|
+
`payloadOmitted`. Top-level `omitted:{providerPayloads:true,adoptionValues:true}`
|
|
67
|
+
states that this is a metadata view, not a lossless request or a safe-payload claim.
|
|
68
|
+
It is not an issued `buildFreshPreparationRequest` witness, even in the same
|
|
69
|
+
process. Keep the original authored input for an explicit preparation request.
|
|
70
|
+
|
|
71
|
+
Existing managed deployment state is preserved and reported, not repaired or
|
|
72
|
+
migrated. An absent selected path requires explicit operator provisioning and
|
|
73
|
+
reinspection. The serialized inspection does not lock the filesystem or authorize
|
|
74
|
+
later mutation; preparation retains its own existing validation/custody rules.
|
|
75
|
+
The inspected work target does not become source identity or an implied placement
|
|
76
|
+
choice. Supported captured directory scaffolds own their separate H/work.
|
|
77
|
+
|
|
78
|
+
## Existing preparation and retained execution
|
|
79
|
+
|
|
80
|
+
`oats prepare --request` already accepts deployment/source/origin, workspace/member
|
|
81
|
+
OR standalone context, operator policy/bindings, mode/local-input authorization,
|
|
82
|
+
launch and helperLaunches. Do not pass the inspection result or workTarget/catalog
|
|
83
|
+
wrapper. Exact executable approval is separate. A required provider whose binding
|
|
84
|
+
code is unapproved may return `needs-configuration` with an `approval-required`
|
|
85
|
+
problem and exact artifact-set/capability requests, before any record exists:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
oats trust <capability> --deployment <D> --artifact-set <returned-id> --json
|
|
89
|
+
oats prepare --request /absolute/preparation.json --json
|
|
90
|
+
oats inspect --deployment <D> --resolution <R> --composition --json
|
|
91
|
+
oats spawn <subject> --deployment <D> --resolution <R> --home <new-H> --no-launch --json
|
|
92
|
+
oats session start --deployment <D> --resolution <R> --home <H> --request /absolute/native.json --json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Repreparation after explicit approval is ordinary continuation in the selected,
|
|
96
|
+
now-managed deployment; do not delete its state to make fresh preflight pass.
|
|
97
|
+
Required hooks still run under their admitted custody with `--no-launch`; a parsed
|
|
98
|
+
binding or team declaration is not proof of an enrolled/ready native provider.
|
|
99
|
+
Native request version1 supplies backend/task/optional stopGraceMs, not a new
|
|
100
|
+
model or current launch selection. Complete OATS home resources remain composed.
|
|
101
|
+
Native auth stays native and permission bypass requires explicit user opt-in.
|
|
102
|
+
|
|
103
|
+
## Limits and focused evidence
|
|
104
|
+
|
|
105
|
+
`test/workspace-onboarding-public.test.mjs` uses current public CLI/core, actual
|
|
106
|
+
Git and a bounded local SSH upload-pack fixture, contract-shaped inert provider
|
|
107
|
+
codecs/hooks, and inert native/backend executables. It covers self-membership,
|
|
108
|
+
reciprocal stale observations, independent adoption, non-effect/opaque-output
|
|
109
|
+
boundaries, exact approval, full retained resources, source deletion/current
|
|
110
|
+
config poison, required-provider failure BEFORE native admission/backend effects,
|
|
111
|
+
and original-incarnation native dispatch plus receipt-based stopped observation.
|
|
112
|
+
No production provider/SDK/model/server or host installation is exercised.
|
|
113
|
+
|
|
114
|
+
Captured input/wake and public captured retirement remain explicit unsupported
|
|
115
|
+
boundaries; a stopped terminal observation is not permission to deliver a captured
|
|
116
|
+
message or retire through legacy fallback. Session-delivered messaging must retain
|
|
117
|
+
its required wake contract; a start-only fixture does not qualify that profile.
|
|
118
|
+
Non-directory placement is not supplied by inspecting a Git work target. These
|
|
119
|
+
limits go to their owners as precise seams, not silent requirement removal.
|
|
120
|
+
|
|
121
|
+
The user requested removal of `oats-portable-setup` and no new skills in this
|
|
122
|
+
increment. Fresh kernel composition no longer selects that skill; existing
|
|
123
|
+
retained snapshots are unchanged. This document and CLI help describe the public
|
|
124
|
+
adapter, not a replacement skill or a claim of completed workspace deployment.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Design documents — navigation
|
|
2
|
+
|
|
3
|
+
Dated design documents record how decisions were reached and what each implementation slice was bounded to. They are **history with current pointers**: the current architecture is explained in [workspaces](../workspaces.md), [contracts](../layers.md), [souls and instances](../souls-and-instances.md) and [knowledge theory](../knowledge-theory.md); readiness is stated in the [release notes](../release-notes/). When a dated document and a current page disagree, the current page wins.
|
|
4
|
+
|
|
5
|
+
## Current plan
|
|
6
|
+
|
|
7
|
+
- [Redesign program board](2026-09-20-redesign-program-board.md) — live status of every work stream (knowledge contract, workspace adoption, messaging readiness, official capabilities, marketplace, five souls, centralised knowledge, Desktop), owners and blockers.
|
|
8
|
+
- [Workspace-first adoption plan (2026-09-20)](2026-09-20-workspace-and-portable-adoption-plan.md) — phase order, lane ownership, distribution work packages (`oats.core`, `oats.setup`, official marketplace), exit gates.
|
|
9
|
+
|
|
10
|
+
## Portable Souls and Git workspaces — the architecture
|
|
11
|
+
|
|
12
|
+
- [Portable Souls explainer](2026-09-14-portable-souls-explainer.md) — the short version.
|
|
13
|
+
- [Portable souls and Git-backed workspaces](2026-09-14-portable-souls-and-git-workspaces.md) — the accepted architecture.
|
|
14
|
+
- [Contract amendments (14 Sep)](2026-09-14-portable-souls-contract-amendments.md) · [portable declarations](2026-09-15-portable-declarations.md) · [portable data/digest contract](2026-09-15-portable-data-contract.md) · [source observation](2026-09-15-source-observation.md).
|
|
15
|
+
- [Fresh-install-first rollout](2026-09-16-fresh-install-first-rollout.md) · [fresh operator walkthrough](2026-09-16-fresh-operator-walkthrough.md) · [portable onboarding and discovery](2026-09-16-portable-onboarding.md) · [migration evidence](2026-09-16-portable-migration-evidence.md).
|
|
16
|
+
|
|
17
|
+
## Retained execution — artifacts, approval, capture
|
|
18
|
+
|
|
19
|
+
- [Artifact retention](2026-09-14-artifact-retention-contract.md) · [selection lock and approval](2026-09-15-selection-lock-and-approval.md) · [captured resolution records](2026-09-15-captured-resolution-records.md).
|
|
20
|
+
- [Package preparation](2026-09-15-package-preparation.md) · [command/curriculum preparation](2026-09-16-command-profile-preparation.md) · [prepare request transport](2026-09-16-prepare-request-transport.md) · [public prepare request](2026-09-17-public-prepare-request.md).
|
|
21
|
+
- [Captured dispatch](2026-09-15-captured-dispatch.md) · [captured admission](2026-09-16-captured-admission.md) · [retained helper dispatch](2026-09-16-captured-helper-dispatch.md) · [retained launch inputs](2026-09-16-captured-launch-inputs.md).
|
|
22
|
+
- [Boundary resources](2026-09-17-portable-boundary-resources.md) · [boundary hookup](2026-09-17-portable-boundary-hookup.md) · [captured native start](2026-09-17-captured-native-start.md) · [public captured start](2026-09-17-public-captured-start.md).
|
|
23
|
+
- [Backend parity: tmux and Herdr](2026-09-17-captured-backend-parity.md) · [Herdr protocol compatibility](2026-09-18-herdr-protocol-compatibility.md) · [captured Pi print host](2026-09-18-captured-pi-host.md).
|
|
24
|
+
- [First-cut release checklist](2026-09-18-first-cut-release-checklist.md).
|
|
25
|
+
- Implementation records: [implementation](2026-09-15-portable-souls-implementation.md) · [handoff](2026-09-15-portable-souls-handoff.md).
|
|
26
|
+
|
|
27
|
+
## Capabilities and providers
|
|
28
|
+
|
|
29
|
+
- [Package engine contract](package-engine-contract.md) · [package-runtime API](package-runtime-api.md) · [operations contract](operations-contract.md) · [launch configurations](launch-configurations.md).
|
|
30
|
+
- [Provider binding wire v1](2026-09-16-provider-binding-wire.md) · [provider binding codecs](2026-09-16-provider-binding-codecs.md) · [capability helper/input contract](2026-09-17-capability-helper-input-contract.md).
|
|
31
|
+
- [Knowledge capability contract](2026-09-16-knowledge-capability-contract.md) · [messaging capability contract](2026-09-16-messaging-capability-contract.md).
|
|
32
|
+
|
|
33
|
+
## Knowledge and memory
|
|
34
|
+
|
|
35
|
+
- [Knowledge and memory direction](2026-09-13-knowledge-and-memory-direction.md) · [knowledge location contract](2026-09-13-knowledge-location-contract.md) · [knowledge implementation plan](2026-09-13-knowledge-implementation.md) · [OKF mirror provenance](okf-mirror-provenance.md).
|
|
36
|
+
|
|
37
|
+
## Product direction and Desktop
|
|
38
|
+
|
|
39
|
+
- [Architecture reassessment](2026-09-07-architecture-reassessment.md) · [expert-assisted deployment](2026-09-08-expert-assisted-deployment-proposal.md).
|
|
40
|
+
- [Desktop UX plan](desktop-ux-plan.md) · [souls and capabilities in Desktop](2026-09-07-desktop-souls-capabilities.md) · [mobile management proposal](2026-09-07-mobile-agent-management-proposal.md).
|
|
41
|
+
|
|
42
|
+
Adding a design doc: date-prefix it, state its status in the first lines, and add it here under the right theme.
|
package/docs/desktop-cli-api.md
CHANGED
|
@@ -18,8 +18,11 @@ prints exactly one JSON object on stdout:
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
`version` is the installed package's exact semver (e.g. `0.20.0`).
|
|
21
|
-
Desktop 0.
|
|
22
|
-
(the earlier Desktop 0.
|
|
21
|
+
Desktop 0.24 accepts `desktopApi === 1` and semver `>=0.22.0 <0.25.0`
|
|
22
|
+
(the earlier Desktop 0.23 band was `>=0.22.0 <0.24.0`). This admits the paired
|
|
23
|
+
0.24 CLI without changing Desktop API v1. It does not establish complete captured
|
|
24
|
+
UI, backend, plugin, retirement or recovery parity; capability checks and explicit
|
|
25
|
+
refusals below remain authoritative.
|
|
23
26
|
|
|
24
27
|
Optional features are negotiated from the probe's `features` array. Starting
|
|
25
28
|
an existing home requires `session-start`; named launch configurations and
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://oats.dev/schemas/execution-capsule-v1.json",
|
|
4
|
+
"title": "Scheduled execution capsule v1",
|
|
5
|
+
"description": "Immutable local authority for one admitted scheduled execution. executionId identifies this intent; a canonical oats.json.v1 digest of the remaining fields separately identifies content. Structural validation does not verify freshness, the retained resolution, approval, host readiness or provider state.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schemaVersion",
|
|
10
|
+
"executionId",
|
|
11
|
+
"resolution",
|
|
12
|
+
"deployment",
|
|
13
|
+
"action",
|
|
14
|
+
"target",
|
|
15
|
+
"inputRefs",
|
|
16
|
+
"responsibleHuman"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"schemaVersion": {
|
|
20
|
+
"const": 1
|
|
21
|
+
},
|
|
22
|
+
"executionId": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"maxLength": 128,
|
|
26
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
|
|
27
|
+
},
|
|
28
|
+
"resolution": {
|
|
29
|
+
"$ref": "https://oats.dev/schemas/portable-v1.json#/$defs/ResolutionRef"
|
|
30
|
+
},
|
|
31
|
+
"deployment": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1
|
|
34
|
+
},
|
|
35
|
+
"action": {
|
|
36
|
+
"oneOf": [
|
|
37
|
+
{
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": ["kind", "name"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"kind": { "const": "command" },
|
|
43
|
+
"name": { "type": "string", "pattern": "^[^:\\s]+:[^:\\s]+$" }
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"required": ["kind", "name"],
|
|
50
|
+
"properties": {
|
|
51
|
+
"kind": { "const": "wake" },
|
|
52
|
+
"name": { "const": "session" }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"target": {
|
|
58
|
+
"oneOf": [
|
|
59
|
+
{
|
|
60
|
+
"type": "object",
|
|
61
|
+
"additionalProperties": false,
|
|
62
|
+
"required": ["cwd", "argv"],
|
|
63
|
+
"properties": {
|
|
64
|
+
"cwd": { "type": "string", "minLength": 1 },
|
|
65
|
+
"argv": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"minItems": 3,
|
|
68
|
+
"items": { "type": "string" }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"required": ["home", "message"],
|
|
76
|
+
"properties": {
|
|
77
|
+
"home": { "type": "string", "minLength": 1 },
|
|
78
|
+
"message": { "type": "string", "minLength": 1 }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"inputRefs": {
|
|
84
|
+
"type": "object"
|
|
85
|
+
},
|
|
86
|
+
"responsibleHuman": {
|
|
87
|
+
"type": ["object", "null"]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"allOf": [
|
|
91
|
+
{
|
|
92
|
+
"if": {
|
|
93
|
+
"properties": { "action": { "type": "object", "properties": { "kind": { "const": "command" } } } }
|
|
94
|
+
},
|
|
95
|
+
"then": {
|
|
96
|
+
"properties": { "target": { "type": "object", "required": ["cwd", "argv"], "properties": { "cwd": {}, "argv": {} } } }
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"if": {
|
|
101
|
+
"properties": { "action": { "type": "object", "properties": { "kind": { "const": "wake" } } } }
|
|
102
|
+
},
|
|
103
|
+
"then": {
|
|
104
|
+
"properties": { "target": { "type": "object", "required": ["home", "message"], "properties": { "home": {}, "message": {} } } }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
@@ -235,13 +235,26 @@ Set `yolo: true` in an `oats-config.yaml` to apply it to that scope. The closest
|
|
|
235
235
|
scope wins; an optional `yolo` in soul.yaml overrides it; `oats spawn --yolo` or
|
|
236
236
|
`--no-yolo` overrides both. `oats create` accepts those flags too. Desktop offers
|
|
237
237
|
the same per-launch choice. With no setting, native policy is retained.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
238
|
+
Autonomous or unattended execution is not permission to synthesize `yolo: true`.
|
|
239
|
+
Explicit user CLI/UI input or a user-selected configuration is the opt-in; explicit
|
|
240
|
+
`false` remains false.
|
|
241
|
+
|
|
242
|
+
Only for an explicitly resolved true setting does OATS add Codex `--yolo` plus
|
|
243
|
+
launch-local project trust, or Claude `--dangerously-skip-permissions`. `--no-yolo` removes the
|
|
244
|
+
OATS-added bypass flags while native settings stay in force. Instance metadata
|
|
245
|
+
records the resolved choice; this policy does not rewrite frozen recipes, live
|
|
246
|
+
configuration or already-running sessions.
|
|
247
|
+
|
|
248
|
+
Claude Code and Codex use their ordinary native context, skills, settings, plugins,
|
|
249
|
+
profile and authentication. OATS still builds the complete ordinary instance home:
|
|
250
|
+
resolved skills, capabilities and resources, canonical AGENTS plus its CLAUDE alias,
|
|
251
|
+
task, metadata and normal work placement. Resolution, approvals and lifecycle hooks
|
|
252
|
+
are not skipped; normal native launch is not an empty/no-capability mode. Only outside
|
|
253
|
+
native context/skill coexistence is relaxed: OATS does not impose an OATS-only ambient
|
|
254
|
+
view or route these runtimes through the Pi SDK. Pi's selected strict SDK profile is unchanged. OATS
|
|
255
|
+
composition integrity/provenance, source/helper authority, record attribution and
|
|
256
|
+
guards, and admission/retry obligations remain separate and required; normal native
|
|
257
|
+
context alone is not a Claude/Codex qualification failure.
|
|
245
258
|
|
|
246
259
|
Desktop remote terminal requests contain only the server id and instance name.
|
|
247
260
|
The selected installed CLI resolves the saved route and performs remote
|
package/docs/first-team.md
CHANGED
|
@@ -212,4 +212,4 @@ oats recall "a phrase from your completed task"
|
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
Capture respects privacy exclusions. Native turns are content-addressed; signed
|
|
215
|
-
aweb messages retain their source signatures. See [the turn record](
|
|
215
|
+
aweb messages retain their source signatures. See [where the turn record fits](2026-09-03-architecture-proposal.md#where-the-turn-record-fits).
|