@awebai/oats 0.29.4 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/bin/oats.mjs +194 -50
- package/docs/capabilities.md +160 -171
- package/docs/capability-manifest.schema.json +6 -11
- 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 +97 -117
- 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 +77 -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 +83 -0
- package/docs/release-lane.md +82 -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.30.0.md +205 -0
- package/docs/release-notes/v0.30.1.md +123 -0
- package/docs/schedules.md +280 -363
- 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 +137 -215
- package/lib/automations.mjs +21 -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 +1 -1
- package/lib/resolve.mjs +30 -88
- package/lib/schedule.mjs +1 -1
- package/lib/teams-verbs.mjs +195 -0
- package/lib/teams.mjs +190 -0
- package/lib/triggers.mjs +2 -2
- package/lib/workspace.mjs +54 -147
- package/package-catalog.json +10 -16
- package/package.json +1 -3
- package/skills/oats-getting-started/SKILL.md +25 -13
- package/capabilities/oats-authoring/LICENSE +0 -21
- package/capabilities/oats-authoring/oats-package.json +0 -11
- package/capabilities/oats-authoring/oats.json +0 -12
- package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
- package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
- package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
- package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
- package/capabilities/oats-aweb/injects/aweb.md +0 -47
- package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
- package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
- package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
- package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
- package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
- package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
- package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
- package/capabilities/oats-aweb/oats.json +0 -208
- package/capabilities/oats-aweb/skills/LICENSE +0 -21
- package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
- package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
- package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
- package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
- package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
- package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
- package/capabilities/oats-jira/injects/jira.md +0 -10
- package/capabilities/oats-jira/oats.json +0 -22
- package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
- package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
- package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
- package/capabilities/oats-linear/injects/linear.md +0 -8
- package/capabilities/oats-linear/oats.json +0 -24
- package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
- package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
- package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
- package/capabilities/oats-okf/injects/okf.md +0 -42
- package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
- package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
- package/capabilities/oats-okf/lib/config.mjs +0 -124
- package/capabilities/oats-okf/lib/consult.mjs +0 -518
- package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
- package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
- package/capabilities/oats-okf/lib/inspection.mjs +0 -119
- package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
- package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-okf/lib/io.mjs +0 -118
- package/capabilities/oats-okf/lib/migration.mjs +0 -137
- package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
- package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
- package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
- package/capabilities/oats-okf/lib/sources.mjs +0 -424
- package/capabilities/oats-okf/lib/stores.mjs +0 -473
- package/capabilities/oats-okf/lib/worker.mjs +0 -497
- package/capabilities/oats-okf/oats.json +0 -148
- package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
- package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
- package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
- package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
- package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
- package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
- package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
- package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
- package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
- package/capabilities/oats-okf-harvest/oats.json +0 -26
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
- package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
- package/capabilities/oats-okf-maintenance/oats.json +0 -21
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
- package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
- 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,67 +1,51 @@
|
|
|
1
1
|
# OATS v0.24.9 — readiness pins, side-effect-free spawn preview (API 2), process-group safety, Desktop Readiness view
|
|
2
2
|
|
|
3
|
-
Kernel/Pi/Desktop **0.24.9**.
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Kernel/Pi/Desktop **0.24.9**. Consumers gate on `oats version --json`
|
|
4
|
+
`features[]` names and API integers, never on the version. Shapes are in the
|
|
5
|
+
[Desktop CLI API](../desktop-cli-api.md).
|
|
6
6
|
|
|
7
7
|
## Kernel
|
|
8
8
|
|
|
9
9
|
- **Spawn preview API 2** (feature `spawn-preview-2`, `spawnPreviewApi: 2`).
|
|
10
|
-
API 1
|
|
11
|
-
an
|
|
12
|
-
|
|
13
|
-
the
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
SIGINT/SIGTERM/SIGHUP, `GIT_CONFIG_GLOBAL=/dev/null`, https/ssh only, a closed
|
|
35
|
-
`signature.failure.code` — never stderr.
|
|
36
|
-
- **Process-group safety (high).** Bounded-custody code killed a child's
|
|
37
|
-
process group on timeout with `process.kill(-child.pid)`; a **failed** spawn
|
|
38
|
-
(binary missing → `ENOENT`) reports `pid: 0`, and `kill(-0)` signals the
|
|
39
|
-
caller's own process group — `oats readiness --verify-signatures` without
|
|
40
|
-
`git` would have SIGKILLed the operator's shell/tmux/Desktop backend. One
|
|
41
|
-
guarded helper now refuses non-positive PIDs at every kill site.
|
|
42
|
-
- **OKF 2.1.3** mirrored and pinned in the official catalog: per-cause `check`
|
|
43
|
-
reasons, a named remedy when a soul has no `okf.json` (was a raw ENOENT from
|
|
44
|
-
the required spawn hook), retired drained sources switch their `okf-<id>` job
|
|
45
|
-
off.
|
|
10
|
+
An API 1 preview could write (an event on the parent, a started Herdr
|
|
11
|
+
backend, an imported soul) and nothing bound a later spawn to it. An API 2
|
|
12
|
+
preview touches nothing, success or refusal. `spawn --agents-root <abs>`
|
|
13
|
+
binds the exact root. The preview returns a `decision {instance, home,
|
|
14
|
+
branch, base, revision}`, and `spawn --expect-decision <rev>` refuses
|
|
15
|
+
`E_DECISION_STALE` with the fresh decision on any drift, creating nothing.
|
|
16
|
+
Native probes share one bounded preflight budget. **Gate on API 2.**
|
|
17
|
+
- **Readiness**: `configured` reflects effective activation (a declared but
|
|
18
|
+
disabled capability fails and says so); data-only capabilities report trust
|
|
19
|
+
`not-applicable`; items are typed, and `summary.byCapability[]` regroups them
|
|
20
|
+
with `ownReady` and `ready`; `subject.selector` echoes the arguments; an
|
|
21
|
+
unreadable member document is `unknown`; `readiness --home <captured>`
|
|
22
|
+
refuses `E_UNSUPPORTED_MODE`. Signature verification (feature
|
|
23
|
+
`readiness-verify`) is bounded, ignores global Git config, allows https and
|
|
24
|
+
ssh only, and reports a closed `signature.failure.code`.
|
|
25
|
+
- **Process-group safety.** A timed-out child's process group was killed with
|
|
26
|
+
`process.kill(-child.pid)`; when the spawn itself failed (for example, a
|
|
27
|
+
missing binary) the pid was 0 and the signal hit the caller's own process
|
|
28
|
+
group, so `oats readiness --verify-signatures` without `git` could kill the
|
|
29
|
+
operator's shell, tmux or Desktop backend. Every kill site now refuses
|
|
30
|
+
non-positive pids.
|
|
31
|
+
- **OKF 2.1.3** is mirrored and pinned in the official catalog: per-cause
|
|
32
|
+
`check` reasons, a named remedy when a soul has no `okf.json`, and retired
|
|
33
|
+
drained sources switch their `okf-<id>` job off.
|
|
46
34
|
|
|
47
35
|
## Desktop
|
|
48
36
|
|
|
49
|
-
- **Readiness**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
branch and resolved base — *Suggest* asks the kernel for its default
|
|
60
|
-
candidate; preview-only choices block legacy submission rather than being
|
|
61
|
-
dropped. Apply companion, attach-knowledge, auto-PR and branch enumeration are
|
|
62
|
-
named follow-ups, not parity-done.
|
|
37
|
+
- **Readiness** view: a Workspace header entry and first-run invitation
|
|
38
|
+
showing the readiness quartet with items and remedies (display only). Verify
|
|
39
|
+
signatures and Enrol are shown unavailable with the reason. The Capabilities
|
|
40
|
+
view shows effective readiness per scope.
|
|
41
|
+
- **Route classification** is decided once from the normalized pathname, so
|
|
42
|
+
dot-segment, percent-encoded, backslash, tab and CRLF aliases cannot skip a
|
|
43
|
+
route's guard.
|
|
44
|
+
- **Spawn modal** uses the preview (API 2) for the instance name, home,
|
|
45
|
+
worktree, branch and resolved base; *Suggest* asks the kernel for its default.
|
|
46
|
+
Preview-only choices block legacy submission instead of being dropped.
|
|
63
47
|
|
|
64
48
|
## Upgrade
|
|
65
49
|
|
|
66
50
|
`npm i -g @awebai/oats@0.24.9`, then `oats doctor`. Desktops on an older CLI
|
|
67
|
-
show the new controls as unavailable
|
|
51
|
+
show the new controls as unavailable.
|
|
@@ -1,99 +1,82 @@
|
|
|
1
1
|
# OATS v0.25.0 — the workspace model (breaking)
|
|
2
2
|
|
|
3
|
-
Kernel/Pi **0.25.0**.
|
|
4
|
-
|
|
5
|
-
`features[]` names and API integers — never on the version.
|
|
3
|
+
Kernel/Pi **0.25.0**. Consumers gate on `oats version --json` `features[]`
|
|
4
|
+
names and API integers, never on the version.
|
|
6
5
|
|
|
7
|
-
**This is
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
**This is a new deployment model, not a patch to the old one.** 0.24.x keeps
|
|
7
|
+
spawning 0.24.x deployments; there is no converter, and a 0.24 deployment is
|
|
8
|
+
rebuilt on the new model. Design:
|
|
9
|
+
[simplified workspace model](https://github.com/awebai/oats/blob/7838d3ca70772f63854b198601fbc45437c2e999/docs/design/2026-09-23-simplified-workspace-model.md);
|
|
10
|
+
module contracts:
|
|
11
|
+
[workspace module contracts](../design/2026-09-23-workspace-module-contracts.md).
|
|
12
12
|
|
|
13
13
|
## The one idea
|
|
14
14
|
|
|
15
15
|
An organisation has **one workspace**: a Git repo hosting `oats-workspace.yaml`
|
|
16
16
|
that lists its **member repositories**, pins its **packages**, names its
|
|
17
17
|
**teams** and declares **defaults**. Every member carries an
|
|
18
|
-
`oats-membership.yaml` back-link
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
(`capabilities/<name>/oats.json`)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
the harness starts normally. Nothing is installed anywhere.
|
|
18
|
+
`oats-membership.yaml` back-link, confirmed over the Git remotes in the
|
|
19
|
+
operator's own access context: **membership is the trust**. A member exports
|
|
20
|
+
**souls** (`souls/<name>/soul.yaml`) and **capabilities**
|
|
21
|
+
(`capabilities/<name>/oats.json`); a soul says where each capability comes
|
|
22
|
+
from (`from: <member repo> | here | package`). Packages are consumed only
|
|
23
|
+
through `packages:` + `oats-lock.json` v3, with per-version executable
|
|
24
|
+
approval. A spawn resolves the soul and materializes every capability whole
|
|
25
|
+
into the instance (`<home>/.oats/modules/<cap>/`, skills under
|
|
26
|
+
`<home>/.agents/skills/<cap>/`). Nothing is installed anywhere.
|
|
28
27
|
|
|
29
28
|
## Kernel — `workspace-v2` (`workspaceApi: 2`), `instance-modules`, `spawn-provider-payload`
|
|
30
29
|
|
|
31
|
-
- **Declarations** (`docs/*.schema.json`,
|
|
32
|
-
`oats-workspace.yaml`
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
- **`instance.json`** carries `modules{}` (name → from/commit/digest),
|
|
52
|
-
`providers{}`, `workspace{ key, commit, resolution, standalone, soul }`,
|
|
53
|
-
`capabilities[]`.
|
|
54
|
-
- **`oats status`** shows drift per instance (`member moved since …`,
|
|
55
|
-
`capability no longer present`); `--json` `instances[].modules[]`.
|
|
56
|
-
- **`oats onboard [<dir>] --workspace <ref>`** — writes `oats-local.yaml`,
|
|
57
|
-
runs the sync path, prints the taught layout and the **hosting rule** for
|
|
58
|
-
mixed public/private organisations (`onboardApi: 2`). Creates no soul,
|
|
30
|
+
- **Declarations** (`docs/*.schema.json`, `schemaVersion: 2`):
|
|
31
|
+
`oats-workspace.yaml`, `oats-membership.yaml`, `soul.yaml` v2 and
|
|
32
|
+
`oats-local.yaml`, the only per-machine file (`workspace:` or `standalone:`
|
|
33
|
+
ref, `clones`, `settings.<cap>`, `souls.disabled`). See
|
|
34
|
+
[workspaces.md](../workspaces.md#the-files).
|
|
35
|
+
- **`oats sync`** discovers members, confirms membership, resolves packages
|
|
36
|
+
and writes `oats-lock.json` v3; unapproved executables exit `2` non-TTY or
|
|
37
|
+
prompt on a TTY. New: `oats package add|remove`, `oats workspace status`,
|
|
38
|
+
`oats capabilities`, `oats souls`.
|
|
39
|
+
- **`oats spawn`** resolves over the remotes, fetches the soul from its member
|
|
40
|
+
repo, materializes and launches. `--preview` reports `modules[]`, `team`,
|
|
41
|
+
`resolution`, `workspace` and `soulFetched`; the decision binds the
|
|
42
|
+
resolution revision (`E_DECISION_STALE` if a member moved). `--provider <cap>
|
|
43
|
+
k=v` records a per-spawn provider payload, the third payload home after the
|
|
44
|
+
soul and `oats-local.yaml` `settings`.
|
|
45
|
+
- **`instance.json`** carries `modules{}`, `providers{}`, `workspace{}` and
|
|
46
|
+
`capabilities[]`; **`oats status`** shows per-instance drift.
|
|
47
|
+
- **`oats onboard [<dir>] --workspace <ref>`** writes `oats-local.yaml`, runs
|
|
48
|
+
the sync path and prints the layout and the hosting rule for mixed
|
|
49
|
+
public/private organisations (`onboardApi: 2`). It creates no soul and
|
|
59
50
|
spawns nothing.
|
|
60
|
-
- **Standalone case
|
|
61
|
-
failure only
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
(merged by the kernel, stripped before the provider). A store names a
|
|
66
|
-
repository; the root inside it is the provider's binding key.
|
|
51
|
+
- **Standalone case:** a member whose workspace cannot be read (access
|
|
52
|
+
failure only) still offers its souls with `from: here` capabilities plus
|
|
53
|
+
`oats.core` from the official catalog, marked `standalone: true`.
|
|
54
|
+
- **Teams** are labels; per-team provider payload is
|
|
55
|
+
`messaging.byTeam.<label>`. A store names a repository.
|
|
67
56
|
- **Scheduled spawns** on a workspace deployment materialize exactly like
|
|
68
|
-
`oats spawn
|
|
69
|
-
- **Security
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
`
|
|
73
|
-
|
|
74
|
-
executables gated on per-version approval, atomic staging with full
|
|
75
|
-
rollback (no half homes).
|
|
57
|
+
`oats spawn`.
|
|
58
|
+
- **Security:** remote tree names are checked (no traversal), a tag naming a
|
|
59
|
+
blob is refused as a commit, symlinks in fetched trees are refused except
|
|
60
|
+
the soul's `CLAUDE.md → AGENTS.md` alias, `__proto__` / `constructor` /
|
|
61
|
+
`prototype` are refused in every payload layer, `byTeam` is reserved outside
|
|
62
|
+
`workspace.messaging`, and staging is atomic with full rollback.
|
|
76
63
|
|
|
77
64
|
## Removed
|
|
78
65
|
|
|
79
|
-
`oats init`, `use`, `install`, `trust`, `list`, `remove`, `migrate`,
|
|
80
|
-
`update`, `config
|
|
81
|
-
replacement. `oats-config.yaml` is no longer read as configuration (a
|
|
82
|
-
one is harmless)
|
|
83
|
-
per-soul `source: git:…` lines, `stores.inherit`,
|
|
84
|
-
|
|
66
|
+
`oats init`, `use`, `install`, `trust`, `list`, `remove`, `migrate`,
|
|
67
|
+
`catalog`, `update`, `config` and `inject` answer `E_UNKNOWN_COMMAND` naming
|
|
68
|
+
the replacement. `oats-config.yaml` is no longer read as configuration (a
|
|
69
|
+
leftover one is harmless). Also gone: the `installed/` tier, `oats.yaml`,
|
|
70
|
+
`lockfileVersion` 2, per-soul `source: git:…` lines, `stores.inherit`,
|
|
71
|
+
`imports`, and the `catalog` feature name. `docs/configuration.md` now
|
|
85
72
|
describes `oats-local.yaml` only.
|
|
86
73
|
|
|
87
74
|
## Desktop
|
|
88
75
|
|
|
89
|
-
The Desktop server's `oats catalog` reader
|
|
90
|
-
removed)
|
|
91
|
-
DTOs in a later release (Phase F). Everything else in the Desktop is unchanged.
|
|
76
|
+
The Desktop server's `oats catalog` reader surfaces `E_USAGE` (the verb is
|
|
77
|
+
removed). Everything else in the Desktop is unchanged.
|
|
92
78
|
|
|
93
|
-
## Known
|
|
79
|
+
## Known limitations
|
|
94
80
|
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
modules (residue table in `docs/design/2026-09-23-workspace-v2-implementation-plan.md`).
|
|
98
|
-
- The OATS framework repositories themselves convert to the model (six expert
|
|
99
|
-
souls, `oats.core`/`oats.setup` rewritten for the new architecture) in 0.26.
|
|
81
|
+
- A deployment without `oats-local.yaml` still spawns through the classic
|
|
82
|
+
(pre-workspace) compose path.
|
|
@@ -1,94 +1,70 @@
|
|
|
1
1
|
# OATS v0.25.1 — workspace-model fix round
|
|
2
2
|
|
|
3
|
-
Kernel/Pi **0.25.1**.
|
|
4
|
-
|
|
5
|
-
`features[]` names and API integers — never on the version.
|
|
3
|
+
Kernel/Pi **0.25.1**. Consumers gate on `oats version --json` `features[]`
|
|
4
|
+
names and API integers, never on the version.
|
|
6
5
|
|
|
7
6
|
**No API change.** `workspaceApi: 2`, every other API integer and the
|
|
8
|
-
`features[]` list are
|
|
9
|
-
|
|
10
|
-
the 0.25.0 workspace model; the normative record is the "0.25.1 fix round"
|
|
11
|
-
section of `docs/design/2026-09-23-workspace-module-contracts.md` and the
|
|
12
|
-
matching clarifications in
|
|
13
|
-
`agents/oats-expert/soul/knowledge/decisions/workspace-model-v2.md`.
|
|
7
|
+
`features[]` list are those of [0.25.0](v0.25.0.md). Every item below is a
|
|
8
|
+
correctness, security or documentation fix to the 0.25.0 workspace model.
|
|
14
9
|
|
|
15
10
|
## Kernel
|
|
16
11
|
|
|
17
|
-
- **
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- **
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- **B3 — operator-level capability commands from the deployment.**
|
|
40
|
-
`oats <ns> <cmd> … --soul <name>` outside a home resolves exactly as a spawn
|
|
41
|
-
of that soul, fetches the module into `<deployment>/.oats/modules/<cap>@<commit12>/`
|
|
42
|
-
and dispatches there with the soul's merged payload (`oats okf init` before
|
|
43
|
-
any instance exists). `--soul` absent → `E_BAD_ARGS`; unknown namespace →
|
|
12
|
+
- **A running instance's soul no longer changes under it.** Souls are fetched
|
|
13
|
+
into an immutable per-commit cache `agents/<name>/souls/<commit12>/`;
|
|
14
|
+
`agents/<name>/soul` is an atomically swapped pointer to the current commit,
|
|
15
|
+
and each home links its own commit's directory. A 0.25.0 layout is migrated
|
|
16
|
+
in place on first use.
|
|
17
|
+
- **SSH remotes are fetched over SSH.** The fetch URL honours the ref as
|
|
18
|
+
written (`git@…` / `ssh://` → SSH, `https://` → HTTPS, bare `git:` → HTTPS
|
|
19
|
+
unless `remoteOptions.transport: ssh`). A private repo is no longer probed
|
|
20
|
+
over HTTPS and silently degraded to the standalone view, and the standalone
|
|
21
|
+
fallback reports the host failure that triggered it.
|
|
22
|
+
- **Package approval is re-verified at spawn.** The executables digest is
|
|
23
|
+
recomputed at the locked commit; a mismatch is `E_PACKAGE_UNAPPROVED {
|
|
24
|
+
reason: "digest-mismatch" }`.
|
|
25
|
+
- **Annotated tags are peeled**: results, locks and `instance.json` record
|
|
26
|
+
the commit, never a tag object.
|
|
27
|
+
- **`work: workspace` spawns on a v2 deployment**, with `./work` as the
|
|
28
|
+
deployment directory.
|
|
29
|
+
- **Operator-level capability commands from the deployment.** `oats <ns>
|
|
30
|
+
<cmd> … --soul <name>` outside a home resolves as a spawn of that soul,
|
|
31
|
+
fetches the module into `<deployment>/.oats/modules/<cap>@<commit12>/` and
|
|
32
|
+
dispatches there (for example `oats okf init` before any instance exists).
|
|
33
|
+
Without `--soul` it is `E_BAD_ARGS`; an unknown namespace is
|
|
44
34
|
`E_UNKNOWN_COMMAND`.
|
|
45
|
-
- **
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
- **
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- **L6 — revision splits declarations from payload.** `revision =
|
|
58
|
-
hash(declRevision, payloadRevision)`; decision binding unchanged; preview can
|
|
59
|
-
report `changed since: declarations | payload | both`.
|
|
35
|
+
- **Slot `none` empties the slot**, dropping any capability the workspace
|
|
36
|
+
defaults contributed for that layer; only a capability the soul itself
|
|
37
|
+
declares beside `none` is `E_SLOT_CONFLICT`.
|
|
38
|
+
- **Absolute-path refusal applies only to ref and path fields**; team
|
|
39
|
+
descriptions and the messaging payload may contain `/`-rooted text.
|
|
40
|
+
- **One unsafe deep entry no longer blanks a member's souls.**
|
|
41
|
+
- **Listing failures are classified**: a `maxBuffer` overflow is not reported
|
|
42
|
+
as `timeout`, and an unclassified listing failure is a discovery problem row
|
|
43
|
+
(`E_REMOTE_UNREADABLE { reason: "unknown" }`) instead of an abort.
|
|
44
|
+
- **The revision splits declarations from payload**: `revision =
|
|
45
|
+
hash(declRevision, payloadRevision)`, and a preview can report `changed
|
|
46
|
+
since: declarations | payload | both`.
|
|
60
47
|
|
|
61
48
|
## Documentation
|
|
62
49
|
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
module homes; `session-recompose` stays advertised for classic homes
|
|
75
|
-
(`desktop-cli-api.md`).
|
|
76
|
-
- **L8 — v1 no longer presented as live** in `schedules.md`, `conventions.md`,
|
|
77
|
-
`implementation.md`, `execution-targets.md`, `desktop.md`,
|
|
78
|
-
`desktop-succession.md`, `integrations.md`, `migration-from-oas.md`
|
|
79
|
-
(a 0.24.x procedure), `desktop-cli-api.md` (readiness producers are the 0.24
|
|
80
|
-
tier), `knowledge-migration.md` (`state-dir` is required; four settings) and
|
|
81
|
-
`knowledge.md` (operator-level `oats okf … --soul <x>` from the deployment).
|
|
50
|
+
- The [rebuild guide](https://github.com/awebai/oats/blob/bdd7e55e1b798a97b8b5486001d7c17e522792a7/docs/rebuild-to-v2.md) covers moving `agents/<name>/soul` to `souls/<name>`, OKF
|
|
51
|
+
2 owner re-registration (a fresh `state-dir`), and an `oats-local.yaml`
|
|
52
|
+
example with `settings.oats.aweb.delivery` and `settings.oats.okf`;
|
|
53
|
+
unlabelled souls receive the messaging base payload only.
|
|
54
|
+
- Every `pi` launch a 0.25 kernel performs starts the harness normally,
|
|
55
|
+
classic 0.24 homes included. `oats session recompose` is
|
|
56
|
+
`E_UNSUPPORTED_MODE` for module homes; `session-recompose` stays advertised
|
|
57
|
+
for classic homes.
|
|
58
|
+
- The reference docs no longer present the 0.24 model as live, and
|
|
59
|
+
[knowledge.md](../knowledge.md) documents operator-level `oats okf … --soul
|
|
60
|
+
<x>` from the deployment.
|
|
82
61
|
|
|
83
|
-
## Known
|
|
62
|
+
## Known limitations
|
|
84
63
|
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
`oats-config.yaml` chain
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
-
|
|
92
|
-
on the owner identity is an OKF 2.1.4 item, as is a per-soul harvest opt-out.
|
|
93
|
-
- `oats-local.yaml` `transport:` (M2's per-machine SSH default) needs a schema
|
|
94
|
-
addition before it can be written.
|
|
64
|
+
- A deployment without `oats-local.yaml` still spawns through the classic
|
|
65
|
+
compose path, which reads `yolo` and `launch-configs` from an
|
|
66
|
+
`oats-config.yaml` chain above a deployment.
|
|
67
|
+
- Readiness (`readinessApi: 1`) is still produced by the 0.24 tier.
|
|
68
|
+
- OKF 2.1.3 pins a soul's owner per soul path, so per commit; a per-soul
|
|
69
|
+
harvest opt-out is not available.
|
|
70
|
+
- `oats-local.yaml` has no `transport:` key.
|
|
@@ -1,80 +1,61 @@
|
|
|
1
1
|
# OATS v0.25.2 — operator-rebuild round
|
|
2
2
|
|
|
3
|
-
Kernel/Pi **0.25.2**.
|
|
4
|
-
|
|
5
|
-
`features[]` names and API integers — never on the version.
|
|
3
|
+
Kernel/Pi **0.25.2**. Consumers gate on `oats version --json` `features[]`
|
|
4
|
+
names and API integers, never on the version.
|
|
6
5
|
|
|
7
6
|
**No API change.** `workspaceApi: 2`, every other API integer and the
|
|
8
|
-
`features[]` list are
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
literally — the guide is a contract the kernel honours. Normative record:
|
|
14
|
-
"0.25.2 operator-rebuild round" in
|
|
15
|
-
`docs/design/2026-09-23-workspace-module-contracts.md` and the matching
|
|
16
|
-
clarifications in
|
|
17
|
-
`agents/oats-expert/soul/knowledge/decisions/workspace-model-v2.md`.
|
|
7
|
+
`features[]` list are those of [0.25.1](v0.25.1.md). The surface additions
|
|
8
|
+
are additive: `oats spawn --preview` gains `providers` and `settings`, `oats
|
|
9
|
+
status --json` gains `instances[].soul`, and `oats sync` gains `--approve`.
|
|
10
|
+
Every item comes from an operator's first rebuild of a real two-team
|
|
11
|
+
deployment on 0.25.0, following the [rebuild guide](https://github.com/awebai/oats/blob/bdd7e55e1b798a97b8b5486001d7c17e522792a7/docs/rebuild-to-v2.md) literally.
|
|
18
12
|
|
|
19
13
|
## Kernel
|
|
20
14
|
|
|
21
|
-
- **
|
|
22
|
-
checkout` soul: `--repo`, then `oats-local.yaml` `clones
|
|
23
|
-
|
|
24
|
-
`
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
- **
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
member; an explicit `standalone:` header is named as such in the next steps.
|
|
15
|
+
- **Member clones are found as the guide says.** For a `work: worktree |
|
|
16
|
+
checkout` soul: `--repo`, then `oats-local.yaml` `clones:`, then
|
|
17
|
+
`<deployment>/<member name>` (a member named `agents` → `agents-repo`). None
|
|
18
|
+
is `E_CLONE_MISSING` naming the three remedies; a directory whose remotes
|
|
19
|
+
name another repo is `E_CLONE_MISMATCH`.
|
|
20
|
+
- **`oats sync` creates `<deployment>/agents/` when absent.**
|
|
21
|
+
- **One "You run on OATS" block.** With `oats.core` resolved as a module, the
|
|
22
|
+
kernel's own block is suppressed.
|
|
23
|
+
- **`oats status` shows soul-source drift**: `soul: <name> from <member> @
|
|
24
|
+
<c7> [member moved since …]`; `--json` `instances[].soul { repoKey, commit,
|
|
25
|
+
current, status }`.
|
|
26
|
+
- **`spawn --preview` shows the payload**: `providers` (the `--provider` map
|
|
27
|
+
as given) and `settings.<cap>` (the merged payload each provider receives).
|
|
28
|
+
- **Non-interactive approval.** `oats sync --approve <id>@<version>`
|
|
29
|
+
(repeatable) approves exactly that locked entry; the digest is always
|
|
30
|
+
computed. An id or version not in the resolution is `E_BAD_ARGS`. Ctrl+D at
|
|
31
|
+
the interactive prompt is a decline (exit `2`).
|
|
32
|
+
- **`oats onboard` lists the host** among the clones to make; an explicit
|
|
33
|
+
`standalone:` header is named as such in the next steps.
|
|
41
34
|
|
|
42
35
|
## Documentation
|
|
43
36
|
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
- **
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
`
|
|
68
|
-
|
|
69
|
-
§8b describes.
|
|
70
|
-
- **oats.okf follow-up:** a soul-payload grammar (`owns`/`reads` on
|
|
71
|
-
`soul.yaml`), declared in the binding when it lands; owner pin re-based on
|
|
72
|
-
identity rather than path, and per-soul harvest opt-out (2.1.4 items, unchanged).
|
|
73
|
-
|
|
74
|
-
## Known follow-ups (unchanged from 0.25.1)
|
|
75
|
-
|
|
76
|
-
- The classic (no `oats-local.yaml`) spawn path still runs the pre-v2 compose.
|
|
77
|
-
- The readiness quartet (`readinessApi: 1`) is still produced by the 0.24 tier
|
|
78
|
-
observers.
|
|
79
|
-
- `oats-local.yaml` `transport:` needs a schema addition before it can be
|
|
80
|
-
written.
|
|
37
|
+
- A coordination soul's (`work: workspace`) `./work` is the deployment
|
|
38
|
+
directory.
|
|
39
|
+
- **Where the team `.aw` lives.** oats.aweb 1.11.2 finds `.aw` in the home,
|
|
40
|
+
the home's git repo, the soul's work repo or the deployment directory, never
|
|
41
|
+
the 0.24 team root: place it in the member clone (gitignored) or the
|
|
42
|
+
deployment directory. **`messaging.byTeam` is a no-op for oats.aweb
|
|
43
|
+
1.11.2**, which does not read `team` from its payload; per-repo `.aw`
|
|
44
|
+
placement is the working alternative.
|
|
45
|
+
- **OKF 2.1.3 reads `okf.json`, not a soul payload.** A soul's knowledge
|
|
46
|
+
declaration is `souls/<name>/okf.json` (`version`, `owner`, `owns`,
|
|
47
|
+
`reads`); the `knowledge:` payload carries only the binding's settings
|
|
48
|
+
(`bindings-file`, `state-dir`, `harvest-runtime`, `harvest-model`).
|
|
49
|
+
- [configuration.md](../configuration.md), [workspaces.md](../workspaces.md)
|
|
50
|
+
and [souls-and-instances.md](../souls-and-instances.md) describe the clone
|
|
51
|
+
order, the new status and preview fields, and the per-commit soul cache.
|
|
52
|
+
|
|
53
|
+
## Known limitations
|
|
54
|
+
|
|
55
|
+
- oats.aweb 1.11.2 does not read `team` from the spawn payload and does not
|
|
56
|
+
treat the deployment directory as an aweb root.
|
|
57
|
+
- OKF 2.1.3 has no soul-payload grammar (`owns` / `reads` on `soul.yaml`),
|
|
58
|
+
pins owners by path, and has no per-soul harvest opt-out.
|
|
59
|
+
- A deployment without `oats-local.yaml` still spawns through the classic
|
|
60
|
+
compose path; readiness (`readinessApi: 1`) is still produced by the 0.24
|
|
61
|
+
tier; `oats-local.yaml` has no `transport:` key.
|