@awebai/oats 0.29.3 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/bin/oats.mjs +203 -54
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +538 -204
- package/capabilities/oats-aweb/injects/aweb.md +1 -1
- package/capabilities/oats-aweb/lib/binding-wire.mjs +31 -22
- package/capabilities/oats-aweb/oats.json +5 -12
- package/capabilities/oats-aweb/skills/VENDORED.md +4 -4
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +1 -1
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +83 -13
- package/capabilities/oats-code-review/injects/reviewer.md +26 -0
- package/capabilities/oats-code-review/oats.json +16 -0
- package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +66 -0
- package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +30 -0
- package/capabilities/oats-code-review/skills/security-review/SKILL.md +56 -0
- package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +34 -0
- package/capabilities/oats-developer/injects/developer.md +38 -0
- package/capabilities/oats-developer/oats.json +17 -0
- package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +43 -0
- package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +47 -0
- package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +65 -0
- package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +37 -0
- package/capabilities/oats-developer/skills/worktrees/SKILL.md +36 -0
- package/capabilities/oats-engineering-expert/injects/expert.md +37 -0
- package/capabilities/oats-engineering-expert/oats.json +17 -0
- package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +37 -0
- package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +52 -0
- package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +50 -0
- package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +53 -0
- package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +49 -0
- package/capabilities/oats-okf/bin/oats-okf.mjs +16 -9
- package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
- package/capabilities/oats-okf/lib/config.mjs +2 -1
- package/capabilities/oats-okf/lib/consult.mjs +26 -4
- package/capabilities/oats-okf/lib/harvest-switch.mjs +16 -3
- package/capabilities/oats-okf/lib/inspection.mjs +26 -7
- package/capabilities/oats-okf/lib/io.mjs +9 -1
- package/capabilities/oats-okf/lib/sources.mjs +34 -3
- package/capabilities/oats-okf/lib/stores.mjs +8 -6
- package/capabilities/oats-okf/lib/worker.mjs +7 -17
- package/capabilities/oats-okf/oats.json +6 -3
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +2 -2
- package/capabilities/oats-okf-harvest/oats.json +3 -3
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +6 -6
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +37 -16
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +6 -1
- package/capabilities/oats-okf-maintenance/oats.json +2 -2
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +17 -2
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +11 -23
- package/capabilities/oats-workspace-experts/injects/oats-experts.md +26 -0
- package/capabilities/oats-workspace-experts/oats.json +9 -0
- package/docs/capabilities.md +160 -171
- package/docs/capability-manifest.schema.json +7 -10
- package/docs/configuration.md +213 -64
- package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
- package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
- package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
- package/docs/design/2026-09-27-team-model-v2.md +116 -0
- package/docs/design/2026-09-28-automations-trust.md +38 -0
- package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
- package/docs/design/HISTORY.md +65 -0
- package/docs/design/README.md +23 -54
- package/docs/desktop-cli-api.md +1787 -1777
- package/docs/desktop.md +30 -91
- package/docs/execution-targets.md +146 -292
- package/docs/first-team.md +31 -17
- package/docs/implementation.md +76 -288
- package/docs/integrations.md +118 -320
- package/docs/knowledge-capability-authoring.md +25 -52
- package/docs/knowledge-reference/acceptance.md +3 -3
- package/docs/knowledge-reference/adoption.md +1 -1
- package/docs/knowledge-reference/harvester.md +2 -2
- package/docs/knowledge-reference/package-craft.md +3 -3
- package/docs/knowledge-reference/provider-mapping.md +3 -6
- package/docs/knowledge-reference/reader-capture.md +3 -3
- package/docs/knowledge-theory.md +62 -166
- package/docs/knowledge.md +225 -404
- package/docs/layers.md +42 -97
- package/docs/oats-local.schema.json +58 -5
- package/docs/oats-membership.schema.json +1 -8
- package/docs/oats-package.schema.json +5 -5
- package/docs/oats-workspace.schema.json +8 -22
- package/docs/official-catalog.md +25 -28
- package/docs/packages.md +45 -63
- package/docs/plans/0.30-close-out.md +61 -0
- package/docs/release-lane.md +77 -0
- package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
- package/docs/release-notes/v0.19.0.md +48 -147
- package/docs/release-notes/v0.19.1.md +2 -3
- package/docs/release-notes/v0.19.3.md +2 -15
- package/docs/release-notes/v0.20.0.md +0 -15
- package/docs/release-notes/v0.22.0.md +71 -138
- package/docs/release-notes/v0.22.1.md +42 -90
- package/docs/release-notes/v0.22.10.md +1 -1
- package/docs/release-notes/v0.22.11.md +1 -47
- package/docs/release-notes/v0.22.12.md +4 -13
- package/docs/release-notes/v0.22.13.md +1 -42
- package/docs/release-notes/v0.22.14.md +3 -11
- package/docs/release-notes/v0.22.15.md +1 -46
- package/docs/release-notes/v0.22.16.md +6 -8
- package/docs/release-notes/v0.22.18.md +1 -99
- package/docs/release-notes/v0.22.19.md +3 -14
- package/docs/release-notes/v0.22.2.md +6 -15
- package/docs/release-notes/v0.22.3.md +0 -1
- package/docs/release-notes/v0.22.4.md +1 -14
- package/docs/release-notes/v0.22.5.md +2 -12
- package/docs/release-notes/v0.22.6.md +0 -3
- package/docs/release-notes/v0.23.0.md +9 -25
- package/docs/release-notes/v0.23.1.md +9 -25
- package/docs/release-notes/v0.23.2.md +2 -4
- package/docs/release-notes/v0.24.0.md +56 -97
- package/docs/release-notes/v0.24.1.md +7 -11
- package/docs/release-notes/v0.24.10.md +34 -45
- package/docs/release-notes/v0.24.11.md +12 -20
- package/docs/release-notes/v0.24.12.md +35 -48
- package/docs/release-notes/v0.24.13.md +34 -41
- package/docs/release-notes/v0.24.2.md +9 -13
- package/docs/release-notes/v0.24.3.md +7 -11
- package/docs/release-notes/v0.24.4.md +6 -6
- package/docs/release-notes/v0.24.5.md +6 -10
- package/docs/release-notes/v0.24.6.md +2 -5
- package/docs/release-notes/v0.24.7.md +46 -75
- package/docs/release-notes/v0.24.8.md +58 -96
- package/docs/release-notes/v0.24.9.md +38 -54
- package/docs/release-notes/v0.25.0.md +59 -76
- package/docs/release-notes/v0.25.1.md +57 -81
- package/docs/release-notes/v0.25.2.md +51 -70
- package/docs/release-notes/v0.25.3.md +11 -13
- package/docs/release-notes/v0.25.4.md +9 -13
- package/docs/release-notes/v0.25.5.md +3 -5
- package/docs/release-notes/v0.25.6.md +20 -29
- package/docs/release-notes/v0.25.7.md +5 -7
- package/docs/release-notes/v0.25.8.md +26 -39
- package/docs/release-notes/v0.26.0.md +175 -646
- package/docs/release-notes/v0.27.0.md +4 -5
- package/docs/release-notes/v0.27.1.md +4 -6
- package/docs/release-notes/v0.27.2.md +1 -1
- package/docs/release-notes/v0.28.0.md +57 -124
- package/docs/release-notes/v0.29.0.md +89 -208
- package/docs/release-notes/v0.29.1.md +1 -1
- package/docs/release-notes/v0.29.2.md +3 -4
- package/docs/release-notes/v0.29.4.md +90 -0
- package/docs/release-notes/v0.30.0.md +205 -0
- package/docs/schedules.md +280 -349
- package/docs/servers.md +99 -117
- package/docs/soul.schema.json +2 -9
- package/docs/souls-and-instances.md +145 -158
- package/docs/workspaces.md +132 -215
- package/lib/automations.mjs +28 -6
- package/lib/core.mjs +226 -74
- package/lib/instance-events.mjs +1 -1
- package/lib/instance-inspect.mjs +109 -34
- package/lib/instance-lifecycle.mjs +14 -1
- package/lib/instance-resolution.mjs +26 -27
- package/lib/launch-preference.mjs +87 -0
- package/lib/materialize.mjs +3 -3
- package/lib/packages.mjs +2 -5
- package/lib/resolve.mjs +29 -87
- package/lib/schedule.mjs +32 -18
- package/lib/teams-verbs.mjs +195 -0
- package/lib/teams.mjs +190 -0
- package/lib/triggers.mjs +53 -17
- package/lib/workspace.mjs +54 -147
- package/package-catalog.json +9 -15
- package/package.json +1 -1
- package/skills/oats-getting-started/SKILL.md +25 -13
- package/capabilities/oats-review/injects/review.md +0 -69
- package/capabilities/oats-review/oats.json +0 -10
- package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
- package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
- package/docs/conventions.md +0 -90
- package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
- package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
- package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
- package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
- package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
- package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
- package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
- package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
- package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
- package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
- package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
- package/docs/design/2026-09-15-captured-dispatch.md +0 -127
- package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
- package/docs/design/2026-09-15-package-preparation.md +0 -100
- package/docs/design/2026-09-15-portable-data-contract.md +0 -121
- package/docs/design/2026-09-15-portable-declarations.md +0 -189
- package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
- package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
- package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
- package/docs/design/2026-09-15-source-observation.md +0 -119
- package/docs/design/2026-09-16-captured-admission.md +0 -77
- package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
- package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
- package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
- package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
- package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
- package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
- package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
- package/docs/design/2026-09-16-portable-onboarding.md +0 -179
- package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
- package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
- package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
- package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
- package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
- package/docs/design/2026-09-17-captured-native-start.md +0 -58
- package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
- package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
- package/docs/design/2026-09-17-public-captured-start.md +0 -108
- package/docs/design/2026-09-17-public-prepare-request.md +0 -90
- package/docs/design/2026-09-18-captured-pi-host.md +0 -205
- package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
- package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
- package/docs/design/2026-09-20-redesign-program-board.md +0 -142
- package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
- package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
- package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
- package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
- package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
- package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
- package/docs/design/2026-09-24-phase-d-plan.md +0 -305
- package/docs/design/2026-09-25-teams-contract.md +0 -258
- package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
- package/docs/design/desktop-ux-plan.md +0 -362
- package/docs/design/launch-configurations.md +0 -168
- package/docs/design/okf-mirror-provenance.md +0 -105
- package/docs/design/operations-contract.md +0 -141
- package/docs/oats-member.schema.json +0 -38
- package/skills/integration-authoring/SKILL.md +0 -84
- package/skills/oats-support/SKILL.md +0 -79
- package/skills/skill-craft/SKILL.md +0 -109
- package/skills/soul-craft/SKILL.md +0 -116
|
@@ -1,289 +0,0 @@
|
|
|
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
|
-
> **2026-09-23 — direction change, read first.** Phases 1–3 delivered as written (workspace on Git, five souls + central knowledge, all contract-bearing Desktop parity slices, releases 0.24.7–0.24.13). Reviewing the result, the human judged the *declaration model* itself too heavy and, in one sitting, accepted a simplified **workspace model v2**: one workspace per org; reciprocal membership as the only gate and as the trust decision; a soul says `from:` (member repo | `here` | `package`) — a location, never a version; packages are the only versioned thing; **nothing is installed** — every capability is copied whole into the instance at spawn; discovery over Git remotes; teams as labels; harnesses start normally. Record: `agents/oats-expert/soul/knowledge/decisions/workspace-model-v2.md`; worked example: [2026-09-23-simplified-workspace-model.md](2026-09-23-simplified-workspace-model.md). **Consequences for this plan:** P1.3's `oats.yaml` export indexes and P1.4's `oats-config.yaml` activation are superseded (→ `oats-membership.yaml`, derived activation); D1/D4 stand (`oats.core` becomes `from: package` by default; the catalog stays as discovery); D2's "explicit `oats.core` on every soul" is met by the workspace default; D3 gains the `the operator's deployment directory` convention and clone-then-spawn. **No migration** — clean v2, the framework's own repos are the first workspace. A Phase 4 implementation plan is proposed to the human before any `lib/`/`bin/` change; the Desktop parity pipeline is paused meanwhile except for the in-flight 10B-0 security fix.
|
|
8
|
-
|
|
9
|
-
## Goal and order
|
|
10
|
-
|
|
11
|
-
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.
|
|
12
|
-
2. Centralise the curated knowledge and adopt the five expertise souls on that foundation.
|
|
13
|
-
3. Complete Desktop design/feature parity against the resulting supported flows.
|
|
14
|
-
|
|
15
|
-
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.
|
|
16
|
-
|
|
17
|
-
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.
|
|
18
|
-
|
|
19
|
-
## Target arrangement
|
|
20
|
-
|
|
21
|
-
Approved repository responsibilities following the framework-hosted workspace choice. The two-phase order is unchanged:
|
|
22
|
-
|
|
23
|
-
| Repository | Role in the new setup |
|
|
24
|
-
|---|---|
|
|
25
|
-
| `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`) |
|
|
26
|
-
| `oats-dev` | Reusable OATS development capabilities, including selected review skills/behavior; no longer responsible for defining the new workspace through a package template |
|
|
27
|
-
| `oats-okf` | Reference knowledge capability and its complete reading/capture/judgment/delivery behavior |
|
|
28
|
-
| `oats-aweb` | Messaging capability and its provider-owned identity/team/wake behavior |
|
|
29
|
-
| `oats-authoring` | Reusable authoring support |
|
|
30
|
-
| `oats-jira`, `oats-linear` | Optional task capabilities; workspace membership does not activate them |
|
|
31
|
-
| `oats-knowledge` | Curated accepted expertise, not executable soul definitions, working transcripts or a copy of framework documentation |
|
|
32
|
-
|
|
33
|
-
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.
|
|
34
|
-
|
|
35
|
-
`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.
|
|
36
|
-
|
|
37
|
-
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.
|
|
38
|
-
|
|
39
|
-
## Verified starting point
|
|
40
|
-
|
|
41
|
-
- 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.
|
|
42
|
-
- 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.
|
|
43
|
-
- The default development package still supplies a legacy config template and `oats.review`; these are capability/template exports, not a Git workspace definition.
|
|
44
|
-
- 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.
|
|
45
|
-
- 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.
|
|
46
|
-
- 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.
|
|
47
|
-
|
|
48
|
-
# Phase 1 — adopt the workspace and Portable Souls architecture
|
|
49
|
-
|
|
50
|
-
## P1.1 — freeze the repository, source and runtime map
|
|
51
|
-
|
|
52
|
-
**Owner:** integration lead, with kernel/provider/deployment owners.
|
|
53
|
-
|
|
54
|
-
Produce one bounded implementation checklist from the actual current code and chosen package revisions:
|
|
55
|
-
|
|
56
|
-
- Exact workspace repository and intended member repositories; external consumption is not membership.
|
|
57
|
-
- 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.
|
|
58
|
-
- Compatible package/source revisions, required capabilities and operator-selectable bindings.
|
|
59
|
-
- 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.
|
|
60
|
-
- 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.
|
|
61
|
-
|
|
62
|
-
**Deliverable:** an exact repository/change/owner matrix and a small gap list, not another open-ended architecture investigation.
|
|
63
|
-
|
|
64
|
-
## P1.2 — author the real workspace
|
|
65
|
-
|
|
66
|
-
**Owner:** workspace/deployment owner, reviewed by the integration lead.
|
|
67
|
-
|
|
68
|
-
Add `oats-workspace.yaml` to the confirmed workspace home `oats` using the shipped schema, alongside that repository's separate `oats.yaml` export index:
|
|
69
|
-
|
|
70
|
-
- Intended members, selected source imports with real reviewed revisions and aliases.
|
|
71
|
-
- Shared defaults bounded by soul requirements, not a new repository-level policy hierarchy.
|
|
72
|
-
- Provider-owned knowledge declarations and team aliases only where meaningful and safe to publish.
|
|
73
|
-
- Explicit discovery/catalog references if needed, not an OATS-hosted registry.
|
|
74
|
-
|
|
75
|
-
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.
|
|
76
|
-
|
|
77
|
-
**Deliverable:** validated, reviewable workspace definition and a short explanation of shared versus operator-local choices.
|
|
78
|
-
|
|
79
|
-
## P1.3 — publish repository indexes and reciprocal admission
|
|
80
|
-
|
|
81
|
-
**Owner:** each repository/package owner, coordinated by the integration lead.
|
|
82
|
-
|
|
83
|
-
For every intended member:
|
|
84
|
-
|
|
85
|
-
- Add `oats.yaml` with the correct workspace backlink and actual exports.
|
|
86
|
-
- Advertise package roots containing real `oats-package.json` files, not arbitrary npm roots.
|
|
87
|
-
- Advertise only source-complete souls with explicit definition paths; imported souls remain references, not adopter-owned copies.
|
|
88
|
-
- 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.
|
|
89
|
-
- Preserve package identities, compatible version floors, immutable releases and old locked revisions.
|
|
90
|
-
|
|
91
|
-
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.
|
|
92
|
-
|
|
93
|
-
**Deliverable:** discovery can qualify intended membership and enumerate real exports across repositories without requiring every source checkout to be present locally.
|
|
94
|
-
|
|
95
|
-
## P1.4 — make the declared setup operational
|
|
96
|
-
|
|
97
|
-
**Owner:** kernel/lifecycle owner and the owners of the selected capabilities.
|
|
98
|
-
|
|
99
|
-
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.
|
|
100
|
-
|
|
101
|
-
Close only demonstrated gaps needed by the chosen workspace/profile:
|
|
102
|
-
|
|
103
|
-
- Public inspection/preparation, explicit artifact approval, retained resolution, scaffold and native start through supported CLI/API paths.
|
|
104
|
-
- Complete source/skill/capability closure; independent source, deployment and work-target identities.
|
|
105
|
-
- Actual provider bindings, required hooks and their truthful readiness. A parsed team/store declaration is not enrollment or a working provider.
|
|
106
|
-
- 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.
|
|
107
|
-
- Version-correct operational skills and guidance, including known stale claims that public request/context/launch inputs are unavailable.
|
|
108
|
-
- Any minimal Desktop compatibility needed to observe/refuse operations truthfully; full redesign parity is later.
|
|
109
|
-
|
|
110
|
-
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.
|
|
111
|
-
|
|
112
|
-
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.
|
|
113
|
-
|
|
114
|
-
**Deliverable:** one reproducible operator path from the shared Git definition to a genuinely usable, retained portable instance under the chosen profile.
|
|
115
|
-
|
|
116
|
-
## P1.5 — adopt fresh local deployments without disturbing existing work
|
|
117
|
-
|
|
118
|
-
**Owner:** each local operator; coordinated readiness/evidence review by the integration lead.
|
|
119
|
-
|
|
120
|
-
- Use a fresh explicit deployment location where existing managed state conflicts. Preserve old configs, locks, knowledge, identities, sessions, worktrees and pending jobs.
|
|
121
|
-
- Map local repositories/work targets deliberately; operators need not have identical directory layouts.
|
|
122
|
-
- Review exact software and restore/acquire through supported tooling. Keep native auth and deliberately chosen model/delivery behavior local.
|
|
123
|
-
- Verify source discovery, reciprocal admission, imported identity, retained composition and actual start/continuation on the approved test host.
|
|
124
|
-
- 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.
|
|
125
|
-
- Exercise relevant source-unavailability/update safeguards using owned test fixtures, never by deleting working source repositories or modifying retained artifacts.
|
|
126
|
-
|
|
127
|
-
### Phase1 exit gate
|
|
128
|
-
|
|
129
|
-
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.
|
|
130
|
-
|
|
131
|
-
**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.
|
|
132
|
-
|
|
133
|
-
# Distribution — official capabilities and the official marketplace
|
|
134
|
-
|
|
135
|
-
**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.
|
|
136
|
-
|
|
137
|
-
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.
|
|
138
|
-
|
|
139
|
-
## D1 — package `oats.core` and `oats.setup` from the oats repository
|
|
140
|
-
|
|
141
|
-
**Owner:** capability/provider owner (packaging), reviewed by the integration lead.
|
|
142
|
-
|
|
143
|
-
- `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.
|
|
144
|
-
- `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.
|
|
145
|
-
- 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.
|
|
146
|
-
- The `instance-boundary` injection, work-mode briefings and config-declared injections **stay kernel-owned** — they describe the layout the kernel itself creates.
|
|
147
|
-
|
|
148
|
-
**Deliverable:** two installable capabilities with manifests and focused inventory tests; the kernel unchanged except for registering nothing new.
|
|
149
|
-
|
|
150
|
-
## D2 — explicit default `oats.core` on every soul; kernel skills de-ambiented
|
|
151
|
-
|
|
152
|
-
**Owner:** kernel/lifecycle owner.
|
|
153
|
-
|
|
154
|
-
- 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.
|
|
155
|
-
- 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.
|
|
156
|
-
- 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.
|
|
157
|
-
- Existing checked-in souls in this repository are updated to declare `oats.core` explicitly as part of the same change.
|
|
158
|
-
|
|
159
|
-
**Deliverable:** soul definitions are honest about OATS operational knowledge; no hidden kernel dependency.
|
|
160
|
-
|
|
161
|
-
## D3 — onboarding creates and instantiates `oats-setup-expert`
|
|
162
|
-
|
|
163
|
-
**Owner:** kernel/lifecycle owner, with the workspace/source owner for the soul edition.
|
|
164
|
-
|
|
165
|
-
- 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.
|
|
166
|
-
- 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.
|
|
167
|
-
- 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.
|
|
168
|
-
- The soul edition itself is source-complete and exported from the oats repository like the other framework souls.
|
|
169
|
-
|
|
170
|
-
**Deliverable:** one reproducible path from "empty workspace" to a running `oats-setup-expert` that can configure the rest.
|
|
171
|
-
|
|
172
|
-
## D4 — the official marketplace is the reviewed list in the oats repository
|
|
173
|
-
|
|
174
|
-
**Owner:** workspace/source owner (list and docs); Desktop owner for the view in the parity phase.
|
|
175
|
-
|
|
176
|
-
- `package-catalog.json` in `awebai/oats` (read today by `officialPackageCatalog()`) **is** the official marketplace. Listing = official. Do not build a second registry.
|
|
177
|
-
- 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).
|
|
178
|
-
- 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).
|
|
179
|
-
- 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.
|
|
180
|
-
|
|
181
|
-
**Deliverable:** documented official-list policy and seeded list; Desktop view tracked under phase3 parity.
|
|
182
|
-
|
|
183
|
-
### Distribution exit gate
|
|
184
|
-
|
|
185
|
-
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`.
|
|
186
|
-
|
|
187
|
-
# Phase 2 — centralise knowledge and adopt the five expert souls
|
|
188
|
-
|
|
189
|
-
## P2.1 — align the reference knowledge profile
|
|
190
|
-
|
|
191
|
-
**Owner:** OKF owner, with kernel review only for demonstrated generic-boundary gaps.
|
|
192
|
-
|
|
193
|
-
Apply the accepted knowledge model to actual runtime instructions, skills, bindings and behavior:
|
|
194
|
-
|
|
195
|
-
- Centralised per-soul homes with stable identity and explicit cross-reads.
|
|
196
|
-
- Capability-owned organisation, placement, reading, capture, judgment and delivery—not a kernel-owned mandatory knowledge pipeline.
|
|
197
|
-
- Distinct accepted knowledge, local evidence/working state and immutable execution artifacts.
|
|
198
|
-
- Supported reading/refresh/capture for both short- and long-running instances; no automatic active-context synchronisation or silent curriculum replacement.
|
|
199
|
-
- Independent promotion, reference doctrine and PR-only Git delivery, distinguishing proposal, accepted merge and reader visibility.
|
|
200
|
-
|
|
201
|
-
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.
|
|
202
|
-
|
|
203
|
-
## P2.2 — curate and publish the shared knowledge base
|
|
204
|
-
|
|
205
|
-
**Owner:** knowledge steward, with human publication/visibility decision.
|
|
206
|
-
|
|
207
|
-
- Confirm public/private visibility and access before publishing corpus or exposing private locators in the workspace.
|
|
208
|
-
- 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.
|
|
209
|
-
- 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.
|
|
210
|
-
- Give each accepted concept one canonical home, valid cross-links and appropriate provenance/freshness.
|
|
211
|
-
- Separate administrative repository/bootstrap scaffolding from corpus acceptance. Deliver the corpus through reviewed changes; ongoing runtime Git learning remains PR-only.
|
|
212
|
-
|
|
213
|
-
**Deliverable:** a small, current, reviewed knowledge base with an explicit owner/read mapping, not merely a passing validator over relocated text.
|
|
214
|
-
|
|
215
|
-
## P2.3 — publish and adopt the five expertise souls
|
|
216
|
-
|
|
217
|
-
**Owner:** soul/source maintainer, reviewed by the integration lead and knowledge steward.
|
|
218
|
-
|
|
219
|
-
The five permanent expertise roles are:
|
|
220
|
-
|
|
221
|
-
1. `oats-expert` — overall direction and cross-cutting architectural judgment.
|
|
222
|
-
2. `oats-kernel-expert` — kernel/capability contract rationale and technical expertise.
|
|
223
|
-
3. `oats-desktop-expert` — Desktop/product/interaction expertise.
|
|
224
|
-
4. `market-research-expert` — sourced research and positioning evidence.
|
|
225
|
-
5. `oats-assistant` — user-facing adoption and onboarding help.
|
|
226
|
-
|
|
227
|
-
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.
|
|
228
|
-
|
|
229
|
-
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.
|
|
230
|
-
|
|
231
|
-
**Deliverable:** five indexed reusable sources, imported by the workspace at real compatible revisions, with the intended expertise/reading boundaries—not renamed engineer charters.
|
|
232
|
-
|
|
233
|
-
## P2.4 — demonstrate learning, then switch writers/readers
|
|
234
|
-
|
|
235
|
-
**Owner:** integration lead and OKF owner, with local operators.
|
|
236
|
-
|
|
237
|
-
Use a small real end-to-end path:
|
|
238
|
-
|
|
239
|
-
1. An expert obtains its accepted foundation and relevant cross-role context.
|
|
240
|
-
2. A working instance captures a useful new finding.
|
|
241
|
-
3. An independent worker judges it and delivers a Git PR.
|
|
242
|
-
4. Authorised review/merge accepts it.
|
|
243
|
-
5. A different/fresh instance obtains that accepted learning through the supported reader/refresh path.
|
|
244
|
-
|
|
245
|
-
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.
|
|
246
|
-
|
|
247
|
-
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.
|
|
248
|
-
|
|
249
|
-
### Phase2 exit gate
|
|
250
|
-
|
|
251
|
-
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.
|
|
252
|
-
|
|
253
|
-
# Execution and review discipline
|
|
254
|
-
|
|
255
|
-
The initial implementation lanes are deliberately disjoint:
|
|
256
|
-
|
|
257
|
-
| Lane | Owns | Does not own |
|
|
258
|
-
|---|---|---|
|
|
259
|
-
| 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 |
|
|
260
|
-
| 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 |
|
|
261
|
-
| 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 |
|
|
262
|
-
| 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 |
|
|
263
|
-
|
|
264
|
-
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.
|
|
265
|
-
|
|
266
|
-
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.
|
|
267
|
-
|
|
268
|
-
- 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.
|
|
269
|
-
- 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.
|
|
270
|
-
- Local operator approval remains necessary for installation, executable trust, identity/team changes, deployment cutover and disclosure. Lead coordination is not authority over unrelated deployments.
|
|
271
|
-
- 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.
|
|
272
|
-
- 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.
|
|
273
|
-
- Publish updated versions only where code/payload changes require them; never move existing tags. Record delivery and actual adoption separately.
|
|
274
|
-
|
|
275
|
-
# Decisions to settle at the appropriate boundary
|
|
276
|
-
|
|
277
|
-
- 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.
|
|
278
|
-
- Confirm knowledge visibility and public-safe content before phase2 publication; this need not block the phase1 contract inventory.
|
|
279
|
-
- Agree the exact pilot/provider/runtime profile and its supported lifecycle. No hidden fallback to an easier profile.
|
|
280
|
-
- Review any newly identified generic contract or bootstrap authority change explicitly. Existing accepted constraints do not need repeated approval.
|
|
281
|
-
|
|
282
|
-
# References
|
|
283
|
-
|
|
284
|
-
- [Portable source/workspace declarations](2026-09-15-portable-declarations.md)
|
|
285
|
-
- [Workspace schema](../oats-workspace.schema.json) and [repository index schema](../oats-member.schema.json)
|
|
286
|
-
- [Fresh onboarding boundary](2026-09-16-portable-onboarding.md) — read historical pending statements with the actual current public routes and release scope
|
|
287
|
-
- [Released0.24 scope](../release-notes/v0.24.0.md)
|
|
288
|
-
- [Canonical knowledge theory](../knowledge-theory.md)
|
|
289
|
-
- [Generic knowledge/capability boundary](2026-09-16-knowledge-capability-contract.md)
|
|
@@ -1,207 +0,0 @@
|
|
|
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
|
-
# Optional explicit request export (new private file; never overwrite):
|
|
13
|
-
oats inspect --request /absolute/inspection.json --emit-prepare-request /absolute/preparation.json --json
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
This mode accepts one request file, optional `--emit-prepare-request`, and `--json`.
|
|
17
|
-
The 0.24.4 follow-up also accepts the complete preparation request's `operator`,
|
|
18
|
-
`launch`, `helperLaunches`, `mode`, and `allowLocalPaths` fields. Inspection ignores
|
|
19
|
-
their semantics: it does not validate provider payloads, select a runtime/model,
|
|
20
|
-
execute a codec, or authorize local acquisition. `ignored: [...]` lists only the
|
|
21
|
-
present field NAMES in a stable order; values stay out of the metadata view and
|
|
22
|
-
`omitted.*` remains true. Preparation still validates those fields normally.
|
|
23
|
-
Unknown fields remain errors. Explicit captured selectors
|
|
24
|
-
or current-context flags conflict before file reads; inherited captured environment
|
|
25
|
-
is not new-work input. Other existing inspect modes are unchanged. The shared
|
|
26
|
-
bounded strict JSON request reader feeds the existing inspection validator intact:
|
|
27
|
-
unknown fields are not dropped, and no missing context comes from current config.
|
|
28
|
-
|
|
29
|
-
The public core export `inspectPortableOnboarding(input, {repositoryOptions}?)`
|
|
30
|
-
owns one transient repository transaction and its guarded cleanup. Its input is
|
|
31
|
-
the existing facade contract:
|
|
32
|
-
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"deployment": "/operator/deployments/example",
|
|
36
|
-
"workTarget": "/operator/projects/example",
|
|
37
|
-
"source": "advertised-alias",
|
|
38
|
-
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/source"},
|
|
39
|
-
"workspace": {
|
|
40
|
-
"source": "git:https://example.org/team/framework.git",
|
|
41
|
-
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/workspace"}
|
|
42
|
-
},
|
|
43
|
-
"member": {
|
|
44
|
-
"source": "git:https://example.org/team/framework.git",
|
|
45
|
-
"origin": {"kind":"operator","document":{"kind":"operator","id":"setup"},"pointer":"/member"}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
These paths/references are placeholders. Workspace and member may identify the
|
|
51
|
-
SAME repository. They still require explicit workspace admission, a member
|
|
52
|
-
backlink and matching observed commits. Omitted repository revisions observe the
|
|
53
|
-
hosting default branch; they do not guess `main` or create circular future pins.
|
|
54
|
-
|
|
55
|
-
Independent adoption replaces workspace/member with an explicit source reference
|
|
56
|
-
`{source, soul, revision, alias}` and explicit `standaloneContextKey` (opaque string
|
|
57
|
-
or null). It does not follow the source publisher's workspace backlink or inherit
|
|
58
|
-
its development defaults/teams. A member check is optional; without one, import
|
|
59
|
-
reports `not-requested` membership, never enrollment.
|
|
60
|
-
|
|
61
|
-
## Metadata is not authority or provider readiness
|
|
62
|
-
|
|
63
|
-
Normal JSON envelope `result` retains schemaVersion1 and the existing statuses:
|
|
64
|
-
`ready-for-preparation`, `needs-configuration`, `separate-deployment-required`.
|
|
65
|
-
`ok:true` means the observation succeeded, including a truthful hold. Separate
|
|
66
|
-
fields expose source identity/revision/export metadata, deployment/work paths,
|
|
67
|
-
workspace identity/import locators, reciprocal observations, declared teams and
|
|
68
|
-
non-effect claims. Inspection executes no provider, hook, approval or native
|
|
69
|
-
backend and writes no deployment state; repository scratch is transient.
|
|
70
|
-
|
|
71
|
-
The public projection deliberately does NOT expose `source.reference` as a
|
|
72
|
-
reusable mutation input. Opaque adoption values and provider declaration payloads
|
|
73
|
-
have not been classified by their owner and are omitted. Import summaries expose
|
|
74
|
-
`adoptionPresent`; knowledge export summaries expose contract/version and
|
|
75
|
-
`payloadOmitted`. Top-level `omitted:{providerPayloads:true,adoptionValues:true}`
|
|
76
|
-
states that this is a metadata view, not a lossless request or a safe-payload claim.
|
|
77
|
-
It is not an issued `buildFreshPreparationRequest` witness, even in the same
|
|
78
|
-
process. The opt-in `--emit-prepare-request` route calls that existing builder
|
|
79
|
-
on the real in-process inspection before dropping the private witness. It writes
|
|
80
|
-
only `.preparation` to a new mode-0600 file at an explicit normalized absolute
|
|
81
|
-
path with an existing real parent; existing files/symlinks are refused, never
|
|
82
|
-
overwritten. JSON output names `prepareRequestFile` and records the explicit
|
|
83
|
-
request-file write in `effects`; it does not echo the request contents. The
|
|
84
|
-
export can carry unclassified adoption declarations and must remain private;
|
|
85
|
-
requests must contain nonsecret values or credential references, never secrets.
|
|
86
|
-
A held inspection cannot emit a fresh preparation request. Core callers can
|
|
87
|
-
explicitly request this data via `{includePrepareRequest:true}`; the default
|
|
88
|
-
metadata projection and its omissions are unchanged.
|
|
89
|
-
|
|
90
|
-
The explicit export preserves authored prepare-only fields privately through the
|
|
91
|
-
existing builder, without interpreting them; it must not silently drop operator
|
|
92
|
-
bindings or launch/helper choices. They remain unvalidated until preparation.
|
|
93
|
-
This does not expose their values in normal metadata or turn ignored values into
|
|
94
|
-
inspection authority.
|
|
95
|
-
|
|
96
|
-
The file is reusable new-work input, NOT a stored resolution, approval, admission,
|
|
97
|
-
or serialized ready-inspection permission. Preparation performs fresh validation
|
|
98
|
-
and observations, including re-resolving any mutable source selectors. Provider
|
|
99
|
-
configuration still requires explicit operator choices; conversion invents none.
|
|
100
|
-
|
|
101
|
-
Existing managed deployment state is preserved and reported, not repaired or
|
|
102
|
-
migrated. An absent selected path requires explicit operator provisioning and
|
|
103
|
-
reinspection. Prepare refuses it with typed `needs-configuration` and provisioning
|
|
104
|
-
guidance before fetching or writing managed state, not a raw ENOENT. Inspection's
|
|
105
|
-
`ready` means the path is eligible for fresh setup, not already provisioned.
|
|
106
|
-
The serialized inspection does not lock the filesystem or authorize
|
|
107
|
-
later mutation; preparation retains its own existing validation/custody rules.
|
|
108
|
-
The inspected work target does not become source identity or an implied placement
|
|
109
|
-
choice. Supported captured directory scaffolds own their separate H/work.
|
|
110
|
-
|
|
111
|
-
## Existing preparation and retained execution
|
|
112
|
-
|
|
113
|
-
`oats prepare --request` accepts deployment/source/origin, optional `workTarget`,
|
|
114
|
-
workspace/member OR standalone context, operator policy/bindings,
|
|
115
|
-
mode/local-input authorization, launch and helperLaunches. The original minimal
|
|
116
|
-
inspection request (without inspection-only `catalogIndexes`) is also accepted;
|
|
117
|
-
use the converter rather than stripping fields from a metadata/result wrapper.
|
|
118
|
-
Explicit `workTarget` is validated with the same physical existing-directory
|
|
119
|
-
validator as inspection and returned as work-context metadata. It takes precedence
|
|
120
|
-
over any caller assumption about cwd: no cwd/config fallback selects its value.
|
|
121
|
-
Omitting it preserves prior preparation behavior without inventing a placement.
|
|
122
|
-
It does not change source identity, `operator.localBase`, work mode, or captured
|
|
123
|
-
H/work placement. Do not pass an inspection result/catalog wrapper or private
|
|
124
|
-
scratch `directory` to preparation. Exact executable approval is separate. A required provider whose binding
|
|
125
|
-
code is unapproved may return `needs-configuration` with an `approval-required`
|
|
126
|
-
problem and exact artifact-set/capability requests, before any record exists:
|
|
127
|
-
|
|
128
|
-
```sh
|
|
129
|
-
oats trust <capability> --deployment <D> --artifact-set <returned-id> --json
|
|
130
|
-
oats prepare --request /absolute/preparation.json --json
|
|
131
|
-
oats inspect --deployment <D> --resolution <R> --composition --json
|
|
132
|
-
oats spawn <subject> --deployment <D> --resolution <R> --home <new-H> --no-launch --json
|
|
133
|
-
oats session start --deployment <D> --resolution <R> --home <H> --request /absolute/native.json --json
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Each `selections[]` row carries an `artifactSet` id and an `approvalRequired[]`
|
|
137
|
-
array of **capability ids**. Pair them: pass the capability to `trust` and that
|
|
138
|
-
row's artifact-set id to `--artifact-set`. These are not interchangeable ids.
|
|
139
|
-
`trust <capability> --dir <D>` against a v3 deployment now refuses with typed
|
|
140
|
-
`needs-configuration` and exact available-set commands; it never picks or approves
|
|
141
|
-
a set automatically. Classic v1/v2 trust remains the classic route.
|
|
142
|
-
|
|
143
|
-
Provider preparation problems carry `slot` and `capability`, plus original
|
|
144
|
-
provenance where available. A no-interface provider is identified with kernel-known
|
|
145
|
-
manifest/version facts. Other supported slots still normalize, resolve through
|
|
146
|
-
the same choice engine, and bind if their own choices are resolved; any required
|
|
147
|
-
slot problem still prevents publication. Provider free text is not passed through.
|
|
148
|
-
The 0.24.4 follow-up preserves only exact fixed reasons declared by the selected
|
|
149
|
-
manifest (or its reviewed kernel compatibility list when absent); see the
|
|
150
|
-
[binding wire](2026-09-16-provider-binding-wire.md). Human CLI output also shows a
|
|
151
|
-
problem's existing choice key, without inventing new key/provider semantics.
|
|
152
|
-
Different opaque inputs need not produce different public errors if both fail the
|
|
153
|
-
same provider prerequisite. In particular, missing OKF host runtime settings can
|
|
154
|
-
hold both syntactically valid Git locators; preparation does not test whether a
|
|
155
|
-
remote repository exists. Required readiness checks remain later, with the provider.
|
|
156
|
-
|
|
157
|
-
### Operator input
|
|
158
|
-
|
|
159
|
-
When present, `operator` requires both `policy` (object; `{}` is valid) and
|
|
160
|
-
`document` (`{ "kind": "operator", "id": "setup-attempt" }`). Its ONLY optional
|
|
161
|
-
fields are `localBase`, `allowLocalPaths`, `sourceContext`, and `bindings`:
|
|
162
|
-
|
|
163
|
-
- `policy`: explicit provider/additive selections with their selected sources and
|
|
164
|
-
settings, using the existing policy grammar. It cannot erase soul requirements.
|
|
165
|
-
- `localBase`: explicit absolute base for relative local policy sources. Work
|
|
166
|
-
context/cwd is not a substitute.
|
|
167
|
-
- `allowLocalPaths`: explicit boolean authorization for those local policy sources.
|
|
168
|
-
Top-level local acquisition authorization remains a separate input.
|
|
169
|
-
- `sourceContext`: existing qualified repository anchor for `repo:` policy sources;
|
|
170
|
-
not a new repository inferred from workTarget.
|
|
171
|
-
- `bindings`: provider-owned map. Kernel preserves it and its document pointers;
|
|
172
|
-
it does not interpret store names, Git destinations, credentials or private teams.
|
|
173
|
-
|
|
174
|
-
Selecting an inherited store does not replace required provider runtime settings.
|
|
175
|
-
Use the selected provider's instructions for those settings; kernel must not guess
|
|
176
|
-
host-owned durable paths or copy native authentication.
|
|
177
|
-
|
|
178
|
-
Repreparation after explicit approval is ordinary continuation in the selected,
|
|
179
|
-
now-managed deployment; do not delete its state to make fresh preflight pass.
|
|
180
|
-
Required hooks still run under their admitted custody with `--no-launch`; a parsed
|
|
181
|
-
binding or team declaration is not proof of an enrolled/ready native provider.
|
|
182
|
-
Native request version1 supplies backend/task/optional stopGraceMs, not a new
|
|
183
|
-
model or current launch selection. Complete OATS home resources remain composed.
|
|
184
|
-
Native auth stays native and permission bypass requires explicit user opt-in.
|
|
185
|
-
|
|
186
|
-
## Limits and focused evidence
|
|
187
|
-
|
|
188
|
-
`test/workspace-onboarding-public.test.mjs` uses current public CLI/core, actual
|
|
189
|
-
Git and a bounded local SSH upload-pack fixture, contract-shaped inert provider
|
|
190
|
-
codecs/hooks, and inert native/backend executables. It covers self-membership,
|
|
191
|
-
reciprocal stale observations, independent adoption, non-effect/opaque-output
|
|
192
|
-
boundaries, exact approval, full retained resources, source deletion/current
|
|
193
|
-
config poison, required-provider failure BEFORE native admission/backend effects,
|
|
194
|
-
and original-incarnation native dispatch plus receipt-based stopped observation.
|
|
195
|
-
No production provider/SDK/model/server or host installation is exercised.
|
|
196
|
-
|
|
197
|
-
Captured input/wake and public captured retirement remain explicit unsupported
|
|
198
|
-
boundaries; a stopped terminal observation is not permission to deliver a captured
|
|
199
|
-
message or retire through legacy fallback. Session-delivered messaging must retain
|
|
200
|
-
its required wake contract; a start-only fixture does not qualify that profile.
|
|
201
|
-
Non-directory placement is not supplied by inspecting a Git work target. These
|
|
202
|
-
limits go to their owners as precise seams, not silent requirement removal.
|
|
203
|
-
|
|
204
|
-
The user requested removal of `oats-portable-setup` and no new skills in this
|
|
205
|
-
increment. Fresh kernel composition no longer selects that skill; existing
|
|
206
|
-
retained snapshots are unchanged. This document and CLI help describe the public
|
|
207
|
-
adapter, not a replacement skill or a claim of completed workspace deployment.
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Desktop parity — slice plan and kernel/provider seams (S8)
|
|
2
|
-
|
|
3
|
-
Status: **proposal accepted for direction** by the lead on 2026-09-22; contracts K1–K8 and P1 are *proposed identifiers*, not shipped CLI grammar. Five policy decisions are routed to the human (below) before their slices start. Author of the plan: the Desktop engineer (`oats-desktop-engineer-1`); this document is the lead's record of it. Scope authority: the human's 2026-09-22 direction — the redesign to the letter, only frames 05 Knowledge and 06 Tasks excluded.
|
|
4
|
-
|
|
5
|
-
## Slices (each a PR from main; lead reviews and merges)
|
|
6
|
-
|
|
7
|
-
| Slice | Delivers | Needs |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| 1a | Compact guides; engine-owned ⌘F / ⌘N; rebind-aware hints | — (PR45) |
|
|
10
|
-
| 1b | Shell 01a/01b: right panel Instance · Git & GitHub · Soul tabs, collapse rail, two editor groups, focus mode; panel state survives repaint | existing tabs/terminal lifecycle |
|
|
11
|
-
| 2a | Worktree branch/ahead/behind/path; changes list; bounded unified diff | **K1** |
|
|
12
|
-
| 2b | PR card: title/#/state/commits/closes; per-job checks bound to head OID; unresolved review threads; Open PR; Send threads | **P1**, **K2** |
|
|
13
|
-
| 2c | Remove / Stop confirmations with worktree/branch/open-PR/child/dirty facts and receipts | **K3** |
|
|
14
|
-
| 3 | 03 Souls + Sources: imported editions + local souls, requirements, provenance, editability | **K4** |
|
|
15
|
-
| 4 | 04 Capabilities: official catalog (`oats catalog --json`, 0.24.6+) + deployment inventory/readiness/used-by; Add capability = exact command | landed catalog + list/inspect + **K5** |
|
|
16
|
-
| 5 | 09 First-run readiness quartet; View policy; Skip/Enrol | **K5** + enrollment decision |
|
|
17
|
-
| 6a | 02 Spawn modal **design parity on existing seams** (human pulled forward 2026-09-22): two-column layout, soul chooser, provider/model dropdowns, launch config restored, opening instruction, readiness from known facts (`unknown` where not), ⌘↵ guards; not-yet-backed fields rendered disabled with "available after <seam>" | existing spawn/launch-config seams |
|
|
18
|
-
| 6b | 02 Spawn fields live: soul chooser, provider/model, launch config (restored), work-area naming/worktree/base+branch, opening instruction, attach knowledge, child spawns, auto-PR, readiness, ⌘↵ | **K6** (+ knowledge-node JSON from the knowledge provider; 05 excluded but attach stays) |
|
|
19
|
-
| 7a | 07 Active overview: counts, relations, activity/waiting-on-you, actions, pan/zoom | **K7** |
|
|
20
|
-
| 7b | 08 Schedules: table/toggles/new/edit, next/last, recent runs, transcript handoff, captured-policy preservation | **K8** |
|
|
21
|
-
| 8 | 10 Components: dropdowns, workspace join/manage, Open in split, Detach to window, Open worktree in editor, actions, toasts, collapsed rail | existing seams + Desktop IPC review for detach/editor |
|
|
22
|
-
|
|
23
|
-
## Shared JSON rules (accepted)
|
|
24
|
-
|
|
25
|
-
Envelope `{schemaVersion:1, ok, result|error}` unchanged. Requests address a server-admitted exact target (`{home, server}` / exact source+revision+soul), never a renderer cwd. Results echo target + `contract`, `version`, `observedAt`, opaque `revision`, typed `problems[]`, explicit completeness/truncation. `null` = not known; empty = observed empty only when complete. Per-section availability `available | not-applicable | unavailable | denied | unsupported | error`. No stack traces, auth stderr, tokens or token-bearing URLs in renderer data. Remote paths are provenance, never local authority. Read-only calls never install, trust, enroll, spawn, fetch into the operator's worktree, switch branches or repair config.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
> **Ownership amendment (2026-09-22, human):** contract-dependent slices are not waits — the team implements the contracts. Kernel seams may be assigned to the Desktop engineer under lead review (the `lib/`/`bin/` lane rule is lifted per assigned seam). Current split (revised 17:10Z): **K1, P1 Decision, K3, K5 → lead** — the engineer's composed instructions forbid kernel edits and a mail cannot recompose them (role change = soul edit + recomposition; spawns blocked by the deployment's pi-profile pin). Engineer: slice 3 now (K4 merged), then 2a after K1. Kernel PRs: full root `npm test` + DTO in `docs/desktop-cli-api.md` in the same PR.
|
|
29
|
-
|
|
30
|
-
## Seams
|
|
31
|
-
|
|
32
|
-
- **K1 `oats.instance-git` / `oats.instance-diff`** (kernel): typed per-instance Git state — worktree, head, upstream/merge-base comparison (missing upstream ≠ 0/0), NUL-delimited changes with rename paths and per-file counts; bounded unified diff by opaque file id + observation revision (stale selection refuses, never a different file). Replaces the Desktop-only `instance.git` aggregate whose fallback zeros can masquerade as clean.
|
|
33
|
-
- **P1 `oats.instance-github`** (provider, not kernel): PR summary/checks/reviews through an additive Git/review **capability** with its own credential policy (native custody; Desktop never runs `gh`, reads tokens or opens credential forms). Needs a kernel dispatch contract for additive-capability structured views (today `operation run` accepts only knowledge/messaging/tasks). "No PR" ≠ unavailable ≠ unauthenticated ≠ rate-limited. Checks bind to exact head OID. Review markdown is untrusted text.
|
|
34
|
-
- **K2 review-thread delivery**: explicit, confirmed send of selected threads to the exact home's session input with receipt (`delivered | refused | unknown`); delivered ≠ consumed. Typed producer events for commit / branch-renamed / PR-updated / review-request; **no prose parsing** to infer actions.
|
|
35
|
-
- **K3 lifecycle plan/apply**: read-only plan (runtime activity, children, worktree dirt, branch + open PRs, retention per artefact, per-option allowed/default/reason, warnings, blockers) → apply with plan revision + idempotency key, revalidated under the lifecycle lock; per-target `completed | retained | partial | unknown`. Today there is **no standalone stop**, and retire removes owned worktrees; the design's default Remove retains worktree/branch/PR.
|
|
36
|
-
- **K4 souls/sources enumeration** (✅ MERGED PR52 as additive `inspect --json` `soulsApi:1`, not a new command — see docs/desktop-cli-api.md): qualified list of imported editions + authored local souls with identity/source/revision/requirements/declarations/editability; readiness separate from launchability and adoption; no renderer YAML.
|
|
37
|
-
- **K5 readiness quartet** (✅ MERGED PR63 — `oats readiness`): `installed | trusted | configured | enrolled`, each `pass | fail | unknown | not-applicable` with items (subject, requiredness, reason, producer, evidence, remedy); trust separates artifact approval from `signature {verified|unsigned|unknown|invalid, signer}`; policy view returns **enforced** child-spawn/worktree permissions with origins; native config items report labels/scope state, never secrets; unknown ≠ granted.
|
|
38
|
-
- **K6 spawn preview/apply** (✅ MERGED PR63 — `oats spawn --preview`, `--base`, `--model @native-default`) (add, 2026-09-22 from 6a review: an explicit `model: {kind: "native-default"}` request field — today an omitted model inherits the configured/soul model and there is no force-native override; 6a renders that control disabled until K6): kernel returns suggestions, canonical worktree/home/branch/base OID, resolved knowledge refs, enforced child policy, auto-PR policy, readiness, typed field problems; apply revalidates and captures; no Desktop-derived paths or branches.
|
|
39
|
-
- **K7 activity feed** (✅ MERGED PR64 — `oats instance events`): bounded typed events per instance with provenance; "waiting on you" only from a producer that reports it.
|
|
40
|
-
- **K8 schedule run history** + captured-policy-preserving edit contract; transcript access via the owning CLI/provider.
|
|
41
|
-
|
|
42
|
-
## Decisions — DECIDED 2026-09-22 (lead, delegated by the human)
|
|
43
|
-
|
|
44
|
-
Recorded in `agents/oats-expert/soul/knowledge/decisions/desktop-parity-lifecycle-and-policy-decisions.md`: (1) Remove retains worktree/branch/PR by default and re-homes the worktree to the deployment `worktrees/` root before the home is removed; (2) `stop` is a first-class recursive lifecycle route retaining everything for restart; (3) Enrol = workspace member admission with a two-document receipt; "signed by" renders only on a verified Git signature with a named signer; policy rows render enforced policy only; (4) child-spawn permission is enforced by the spawn route (attributed refusal); (5) auto-PR is provider-owned, default off, first pushed commit, draft, human undrafts. Gemini illustrative. The original questions follow for the record.
|
|
45
|
-
|
|
46
|
-
### Original questions
|
|
47
|
-
|
|
48
|
-
1. **Remove semantics** (K3, slice 2c): the design's default Remove deletes the instance but *retains* worktree, branch and remote PR; today retirement removes owned worktrees and there is no standalone Stop. Decide: adopt the design's retention default (needs a kernel placement/custody rule for a worktree that outlives its home) or keep current semantics and label the UI accordingly.
|
|
49
|
-
2. **Recursive Stop** (K3): Stop as a first-class lifecycle action (retain home/worktree for restart) including children — new kernel route.
|
|
50
|
-
3. **Enrollment** (K5, slice 5): what "Enrol workspace" *is* (workspace admission? team/machine registration?), its authority and receipt; `oats onboard` is bootstrap, not enrollment. Also what counts as **signature evidence** for "Trusted · signed by …" (catalog URL/hash is not a signer).
|
|
51
|
-
4. **Enforced child-spawn permission** (K6): "Allow child spawns" must be enforced by admitted spawn routes, not advisory — new kernel policy surface.
|
|
52
|
-
5. **Automatic PR** (K6 / P1): trigger (proposed: first non-empty *pushed* commit), draft status, publication consent; provider-owned; default off; never commits/pushes local data on its own.
|
|
53
|
-
|
|
54
|
-
Also to confirm: prototype "Gemini" runtime is illustrative (not an OATS runtime) unless the human wants kernel work.
|
|
55
|
-
|
|
56
|
-
## Ownership
|
|
57
|
-
|
|
58
|
-
Lead: K1, K4, K5 (readiness/policy shape), K6 preview/apply plumbing, K7/K8 projections, dispatch contract for additive-capability views — proposed as Decisions where they change contracts, implemented in small PRs otherwise. P1: **forge connections are ADE/workstation integrations, not capabilities** — **Decision ACCEPTED** (`agents/oats-expert/soul/knowledge/decisions/p1-forge-connection-is-an-ade-integration.md`). Desktop *Connections* surface (GitHub card: status / Connect = `gh auth login --web` in an owned pane / Disconnect), PR card read by the Desktop server via fixed-argv `gh pr view … --json` at the existing guarded boundary, typed states (available / no-pull-request / not-connected / cli-not-installed / unsupported-forge / no-remote / unavailable), remote workspaces refuse; OATS never holds a token. No kernel dispatch contract. Kernel: K1 gains `remote {name,url,host,path}` (lead). Slice **2b** = Connections + PR card (engineer; lead security gate before wiring). Auto-PR: ADE-owned, off, per spawn, after K6. Desktop engineer: all slices, Desktop IPC review items (detach, open-in-editor).
|