@awebai/oats 0.29.4 → 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 +194 -50
- 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 +8 -4
- package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
- package/capabilities/oats-okf/lib/inspection.mjs +26 -7
- package/capabilities/oats-okf/lib/sources.mjs +16 -2
- package/capabilities/oats-okf/lib/worker.mjs +5 -16
- 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 +2 -2
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
- package/capabilities/oats-okf-maintenance/oats.json +2 -2
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +1 -1
- 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 +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 +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.30.0.md +205 -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 +132 -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/resolve.mjs +29 -87
- 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 +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
package/docs/layers.md
CHANGED
|
@@ -1,116 +1,61 @@
|
|
|
1
1
|
# The OATS contracts
|
|
2
2
|
|
|
3
|
-
OATS supplies common contracts; capabilities supply
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## How the pieces fit
|
|
3
|
+
OATS supplies common contracts; capabilities supply behaviour. The kernel
|
|
4
|
+
discovers souls and capabilities, resolves what each soul gets, copies it into
|
|
5
|
+
an instance home and runs the lifecycle; it implements no knowledge, messaging
|
|
6
|
+
or task model of its own.
|
|
8
7
|
|
|
9
8
|
```text
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
├── messaging capability
|
|
19
|
-
├── tasks capability
|
|
20
|
-
└── any additional capabilities
|
|
9
|
+
workspace (oats-workspace.yaml) members, packages, shared teams, defaults, stores
|
|
10
|
+
└── soul (soul.yaml) role, work mode, capabilities, slot choices
|
|
11
|
+
└── resolution exact commits and digests, recorded at spawn
|
|
12
|
+
└── instance home soul + copied capabilities + its own work view
|
|
13
|
+
├── knowledge capability
|
|
14
|
+
├── messaging capability
|
|
15
|
+
├── tasks capability
|
|
16
|
+
└── any additional capabilities
|
|
21
17
|
```
|
|
22
18
|
|
|
23
|
-
The
|
|
24
|
-
|
|
25
|
-
## Soul format
|
|
26
|
-
|
|
27
|
-
Portable `soul.yaml` uses `schemaVersion: 1`, a name, optional role/runtime/work preferences and explicit requirements/defaults. Canonical `AGENTS.md`, its `CLAUDE.md` alias and the declared resources provide the operating curriculum. See the [schema](soul.schema.json).
|
|
28
|
-
|
|
29
|
-
A soul can require a concrete implementation **and its source**, or require a provider by presence with supported defaults/operator choice. Naming OKF or a tracker does not make a soul malformed: it makes a particular source policy explicit. A source that genuinely promises interchangeable implementations must use compatible requirements and test that claim.
|
|
30
|
-
|
|
31
|
-
Concrete capability selections carry `source`; software must not be inferred from an ambient installation or the publisher's unshared config. Imports retain source identity and revision rather than creating local forks. Source updates do not silently rewrite an existing instance's retained curriculum.
|
|
32
|
-
|
|
33
|
-
Classic `kind`/`type`/`repo` declarations and config-targeted agent types are a compatibility model, not mandatory fields or a third policy tier in portable resolution. See [souls and instances](souls-and-instances.md) and [classic configuration](configuration.md).
|
|
34
|
-
|
|
35
|
-
## Workspace, repository and adoption contracts
|
|
36
|
-
|
|
37
|
-
- `oats-workspace.yaml` (v2) declares members, the pinned `packages:`, team labels, defaults per slot and per team, stores, the messaging payload and pinned `external:` souls.
|
|
38
|
-
- `oats-membership.yaml` is a repository's half of the handshake: the workspace backlink plus an optional default team label. Everything under `souls/` and `capabilities/` is discoverable by convention (`private: true` opts out); there are no export lists.
|
|
39
|
-
- Membership requires compatible observations on both sides; folder adjacency or a copied declaration is not admission.
|
|
40
|
-
- External source import does not adopt the publisher's workspace. A framework repository may host its own development workspace without imposing it on consumers.
|
|
41
|
-
- Operator choices and workspace defaults must respect source requirements. Git read access is not write permission, a trust declaration or messaging enrollment.
|
|
42
|
-
|
|
43
|
-
The [workspace guide](workspaces.md) explains these boundaries and the [declaration contract](design/2026-09-15-portable-declarations.md) defines their versioned forms.
|
|
44
|
-
|
|
45
|
-
## Capability manifest and lifecycle events
|
|
46
|
-
|
|
47
|
-
A capability's `oats.json` declares its identity, an optional `layer` field (which names the core capability it is, if any), resources, host/runtime prerequisites, commands, operations and supported lifecycle contributions. A distribution package's `oats-package.json` exports one or more capabilities; a package is not itself an active capability or workspace.
|
|
48
|
-
|
|
49
|
-
The current [manifest schema](capability-manifest.schema.json) includes the published binding interface. A manifest shape alone does not certify its implementation:
|
|
50
|
-
|
|
51
|
-
- A core capability declares normalize/bind/check binding phases; readiness runs its `check` (the kernel relays its answer without implementing its domain model).
|
|
52
|
-
- Commands/hooks execute only from a declared source (a member, or a package the workspace declares, at its locked commit and integrity).
|
|
53
|
-
- `helperInjection` and hook `inputs` are accepted and ignored since 0.26 (they served the removed captured path).
|
|
54
|
-
- Required setup/capture outcomes cannot be silently omitted to make a launch or cleanup appear successful.
|
|
55
|
-
|
|
56
|
-
Use [capability details](capabilities.md) and the [provider wire](design/2026-09-16-provider-binding-wire.md).
|
|
19
|
+
The forms are in [workspaces.md](workspaces.md) and the schemas beside it;
|
|
20
|
+
capability manifests, hooks and readiness in [capabilities.md](capabilities.md).
|
|
57
21
|
|
|
58
22
|
## The three core capabilities
|
|
59
23
|
|
|
60
|
-
Knowledge, messaging and tasks are
|
|
24
|
+
Knowledge, messaging and tasks are **slots**: a soul has at most one
|
|
25
|
+
capability in each, and `none` empties a slot. Any number of other
|
|
26
|
+
capabilities compose beside them. A slot provider declares `layer:` in its
|
|
27
|
+
manifest and may answer the kernel's [readiness check](capabilities.md#readiness-check-bindingcheck).
|
|
61
28
|
|
|
62
29
|
### The knowledge contract
|
|
63
30
|
|
|
64
|
-
The kernel supplies selection,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Alternatives may choose different placement or learning procedures. A supported co-located profile is not implied merely because the architecture allows one. See [knowledge theory](knowledge-theory.md), [version-scoped operations](knowledge.md) and [provider-neutral boundary](design/2026-09-16-knowledge-capability-contract.md).
|
|
71
|
-
|
|
72
|
-
### The tasks contract
|
|
73
|
-
|
|
74
|
-
The tasks core capability owns work assignment, claims, status, blockers, outcomes and handoff procedures. OATS supplies the selected capability/runtime boundary, not one mandatory tracker workflow. Jira and Linear are available tasks capabilities; none is mandatory when source requirements permit `none`.
|
|
75
|
-
|
|
76
|
-
Messaging is conversation, not automatically task state. Accepted knowledge may explain a decision or important situation without duplicating the tracker.
|
|
31
|
+
The kernel supplies selection, the copied modules, the lifecycle hooks and
|
|
32
|
+
their environment. The knowledge capability owns everything else: where
|
|
33
|
+
knowledge lives, who reads and owns what, how evidence is captured and judged,
|
|
34
|
+
and how accepted knowledge is delivered. The official provider is `oats.okf`
|
|
35
|
+
([knowledge.md](knowledge.md), [knowledge theory](knowledge-theory.md)); the
|
|
36
|
+
boundary is the [knowledge and messaging capability contract](design/2026-09-16-knowledge-capability-contract.md).
|
|
77
37
|
|
|
78
38
|
### The communication contract
|
|
79
39
|
|
|
80
|
-
The
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Roster membership is not a live process or a responsive session. Retirement may leave provider-side records or incomplete cleanup; inspect the actual outcome rather than promising aliases disappear.
|
|
87
|
-
|
|
88
|
-
## Runtime and work-target contracts
|
|
89
|
-
|
|
90
|
-
The selected runtime owns its normal model/authentication/profile mechanisms. OATS supplies complete composed resources, task, work selection and retained execution authority; it does not copy or repair credentials or enable permission bypass merely because a session is unattended.
|
|
40
|
+
The slot is named **`messaging`**. The capability owns identity, addressing,
|
|
41
|
+
team membership, transport and wake delivery. The kernel supplies each soul's
|
|
42
|
+
teams in the hook environment ([capabilities.md](capabilities.md#teams-in-the-provider-environment))
|
|
43
|
+
and never joins a team itself. A team in a workspace file is a declaration,
|
|
44
|
+
not proof that an agent is enrolled. The official provider is `oats.aweb`.
|
|
91
45
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
The work target is independent of source publication and knowledge placement. Preserve the selected work-mode discipline and ownership. Unsupported required lifecycle, wake, plugin or recovery behavior must remain explicit, not be replaced with an easier hidden profile. See [execution targets](execution-targets.md) and the [release notes](release-notes/v0.24.0.md).
|
|
95
|
-
|
|
96
|
-
## Kernel briefings versus operational capabilities
|
|
97
|
-
|
|
98
|
-
The kernel owns only what describes the layout it creates: the `instance-boundary` briefing (home versus `work/`), the selected work-mode briefing and config-declared injections. Knowing how to *operate* OATS (status, spawn, retire, soul discovery) and how to *configure* it (workspaces, packages, the lock) is capability content — the official capabilities `oats.core` (a workspace default via `defaults.capabilities`, removable per soul with `off`) and `oats.setup` (held by an onboarding expert), both provided by the `oats.framework` package; see [souls and instances](souls-and-instances.md#oats-operational-knowledge-is-a-capability).
|
|
99
|
-
|
|
100
|
-
## Capture and knowledge are separate
|
|
101
|
-
|
|
102
|
-
The native turn record is an evidence substrate, not accepted knowledge or a compulsory fourth core capability. A capability decides which evidence it consumes and how it judges it. Source attribution, before-read custody and incomplete-outcome handling remain necessary wherever those guarantees are promised.
|
|
103
|
-
|
|
104
|
-
A successful capture is not a completed judgment; completed judgment is not accepted Git knowledge. Source loss or retirement must not erase pending obligations or make an uncertain record complete. See [the record package](../packages/record/README.md) and the relevant versioned lifecycle contracts.
|
|
105
|
-
|
|
106
|
-
## Replaceability without invented readiness
|
|
46
|
+
### The tasks contract
|
|
107
47
|
|
|
108
|
-
|
|
48
|
+
The tasks capability owns assignment, claims, status, blockers and handoff.
|
|
49
|
+
`oats.jira` and `oats.linear` are the official providers. Messaging is
|
|
50
|
+
conversation, not task state.
|
|
109
51
|
|
|
110
|
-
|
|
111
|
-
- Schema validation is not native authority, provider readiness or learning.
|
|
112
|
-
- A working old configuration does not prove compatibility with a new profile.
|
|
113
|
-
- Workspace membership does not select every capability a member exports.
|
|
114
|
-
- Published primitives and documentation do not constitute a completed deployment.
|
|
52
|
+
## What the kernel does not own
|
|
115
53
|
|
|
116
|
-
|
|
54
|
+
- **The harness.** pi, Claude Code and Codex start normally, with their own
|
|
55
|
+
authentication, models and permissions ([execution-targets.md](execution-targets.md)).
|
|
56
|
+
- **Operating knowledge.** How to operate and configure OATS is capability
|
|
57
|
+
content: `oats.core` and `oats.setup` from the `oats.framework` package
|
|
58
|
+
([souls-and-instances.md](souls-and-instances.md#oats-operational-knowledge-is-a-capability)).
|
|
59
|
+
The kernel writes only the home-versus-work and work-mode briefings.
|
|
60
|
+
- **Proof of readiness.** A valid manifest or a declared team is not a working
|
|
61
|
+
provider; `oats readiness` asks the provider.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"type": "string",
|
|
19
19
|
"minLength": 1,
|
|
20
20
|
"pattern": "^(?:git@[^@\\s]+|[^@\\s]+)$",
|
|
21
|
-
"description": "Repo ref to realize in the STANDALONE view
|
|
21
|
+
"description": "Repo ref to realize in the STANDALONE view: its own souls and from: here capabilities plus oats.core, no workspace lookup. Use when the repo's workspace cannot be read; `workspace:` still names the repo you point the kernel at."
|
|
22
22
|
},
|
|
23
23
|
"clones": {
|
|
24
24
|
"type": "object",
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
},
|
|
38
38
|
"launch-configs": {
|
|
39
39
|
"type": "object",
|
|
40
|
-
"description": "Named ways to start a harness on this host, independent of any soul (
|
|
40
|
+
"description": "Named ways to start a harness on this host, independent of any soul (a spawn-time host choice). Selected by name at spawn or session start/restart; explicit flags override its fields. Written by `oats launch-config set|remove`.",
|
|
41
41
|
"propertyNames": { "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$" },
|
|
42
42
|
"additionalProperties": {
|
|
43
43
|
"type": "object",
|
|
44
44
|
"additionalProperties": false,
|
|
45
45
|
"anyOf": [{ "required": ["harness"] }, { "required": ["runtime"] }],
|
|
46
46
|
"properties": {
|
|
47
|
-
"harness": { "type": "string", "enum": ["pi", "claude", "codex"], "description": "The harness this configuration starts
|
|
48
|
-
"runtime": { "type": "string", "enum": ["pi", "claude", "codex"], "deprecated": true, "description": "The
|
|
47
|
+
"harness": { "type": "string", "enum": ["pi", "claude", "codex"], "description": "The harness this configuration starts; it decides the kernel's own baseline arguments (skills, instructions, task) and how model/yolo are expressed." },
|
|
48
|
+
"runtime": { "type": "string", "enum": ["pi", "claude", "codex"], "deprecated": true, "description": "The old name of `harness`, still read (a deprecation warning); both, disagreeing, are refused. `oats launch-config set` writes `harness`." },
|
|
49
49
|
"executable": { "type": "string", "minLength": 1, "description": "The program to run instead of the harness's default binary: a bare name is looked up on PATH on the execution host; a path containing a slash is resolved against the deployment directory (where this oats-local.yaml lives) when relative. Checked to exist and be executable before any start; never executed just to probe it." },
|
|
50
50
|
"args": { "type": "array", "items": { "type": "string" }, "description": "Extra arguments, each passed literally (no shell interpretation): native configuration files or profiles go here as ordinary arguments." },
|
|
51
51
|
"env": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"additionalProperties": false,
|
|
70
70
|
"required": ["name"],
|
|
71
71
|
"properties": {
|
|
72
|
-
"name": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$", "description": "This machine's name
|
|
72
|
+
"name": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$", "description": "This machine's name. A workspace trigger or schedule runs on the host whose name is its `runsOn` (and only when this host's gh account is its `owner`). A machine fact, never in Git." }
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"triggers": {
|
|
@@ -94,6 +94,19 @@
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
|
+
"automations": {
|
|
98
|
+
"type": "object",
|
|
99
|
+
"additionalProperties": false,
|
|
100
|
+
"properties": {
|
|
101
|
+
"trust": {
|
|
102
|
+
"description": "The workspace triggers and schedules this host agrees to run, by qualified id <member>/<id>, or \"*\" for every one the workspace places on this host (0.30). A workspace automation runs only when its runsOn is host.name, its owner is this host's gh account AND trust admits it; absent or empty, none runs. A host fact: the committed workspace file refuses it. Local triggers and schedules need no trust.",
|
|
103
|
+
"oneOf": [
|
|
104
|
+
{ "const": "*" },
|
|
105
|
+
{ "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*/[a-z0-9-]{1,40}$" } }
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
97
110
|
"souls": {
|
|
98
111
|
"type": "object",
|
|
99
112
|
"additionalProperties": false,
|
|
@@ -103,8 +116,48 @@
|
|
|
103
116
|
"type": "array",
|
|
104
117
|
"uniqueItems": true,
|
|
105
118
|
"items": { "type": "string", "pattern": "^(?:[a-z0-9][a-z0-9._-]*/)?[a-z0-9]+(?:-[a-z0-9]+)*$" }
|
|
119
|
+
},
|
|
120
|
+
"teams": {
|
|
121
|
+
"description": "Which teams each soul belongs to on this deployment (`oats soul teams` writes it): \"*\" applies to every soul; a soul's own entry (its bare name, or <package>/<soul> for a package soul) adds to it. Every soul is also in its default. Eligible, never auto-joined: an instance joins its default at spawn and the others on request.",
|
|
122
|
+
"type": "object",
|
|
123
|
+
"propertyNames": { "type": "string", "pattern": "^(?:\\*|(?:[a-z0-9][a-z0-9._-]*/)?[a-z0-9]+(?:-[a-z0-9]+)*)$" },
|
|
124
|
+
"additionalProperties": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/label" } }
|
|
125
|
+
},
|
|
126
|
+
"launch": {
|
|
127
|
+
"description": "Launch preferences on this machine (0.30; feature launch-preference), overriding the soul's own launch: \"*\" applies to every soul; a soul's own entry (its bare name, or <package>/<soul>) wins over it. A value is a launch configuration's name (in launch-configs of this file) or an inline { harness, model? }. Explicit spawn flags win over both. A changed preference affects no existing home until --reselect-launch or a respawn.",
|
|
128
|
+
"type": "object",
|
|
129
|
+
"propertyNames": { "type": "string", "pattern": "^(?:\\*|(?:[a-z0-9][a-z0-9._-]*/)?[a-z0-9]+(?:-[a-z0-9]+)*)$" },
|
|
130
|
+
"additionalProperties": { "oneOf": [ { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$" }, { "$ref": "#/$defs/launchPreference" } ] }
|
|
131
|
+
},
|
|
132
|
+
"default": {
|
|
133
|
+
"description": "A per-soul override of defaultTeam (`oats soul teams <soul> --default <label>`); it must be one of that soul's teams here (E_TEAM_NOT_ELIGIBLE).",
|
|
134
|
+
"type": "object",
|
|
135
|
+
"propertyNames": { "type": "string", "pattern": "^(?:[a-z0-9][a-z0-9._-]*/)?[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
136
|
+
"additionalProperties": { "$ref": "#/$defs/label" }
|
|
106
137
|
}
|
|
107
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"teams": {
|
|
141
|
+
"description": "LOCAL teams (`oats teams add` writes it): <label>: { team, description? }, the messaging provider's team id for a team only this deployment uses. Shared teams are committed in oats-workspace.yaml teams:; a label in both is team-label-collision (the shared one wins).",
|
|
142
|
+
"type": "object",
|
|
143
|
+
"propertyNames": { "$ref": "#/$defs/label" },
|
|
144
|
+
"additionalProperties": {
|
|
145
|
+
"type": "object",
|
|
146
|
+
"required": ["team"],
|
|
147
|
+
"additionalProperties": false,
|
|
148
|
+
"properties": {
|
|
149
|
+
"team": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@/+-]{0,255}$", "description": "The messaging provider's team id (for oats.aweb, <team>:<namespace>). The kernel's safety rule: never '-'-led, no whitespace or control characters, at most 256 characters; the provider validates its own shape." },
|
|
150
|
+
"description": { "type": "string" }
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"defaultTeam": {
|
|
155
|
+
"$ref": "#/$defs/label",
|
|
156
|
+
"description": "The team every instance of this deployment lives in (its primary identity), unless souls.default overrides it for a soul: a label of teams here or in oats-workspace.yaml (`oats teams default` writes it; the first `oats teams add` sets it)."
|
|
108
157
|
}
|
|
158
|
+
},
|
|
159
|
+
"$defs": {
|
|
160
|
+
"launchPreference": { "type": "object", "additionalProperties": false, "required": ["harness"], "properties": { "harness": { "enum": ["pi", "claude", "codex"], "description": "The harness the role should run on." }, "model": { "type": "string", "minLength": 1, "pattern": "^[^\\s-][^\\s]*$", "description": "A model id for that harness; absent: the harness's own model." } } },
|
|
161
|
+
"label": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" }
|
|
109
162
|
}
|
|
110
163
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://oats.dev/schemas/membership-v2.json",
|
|
4
4
|
"title": "Repository membership backlink v2 (oats-membership.yaml)",
|
|
5
|
-
"description": "The repo's half of the reciprocal handshake: it names the workspace it belongs to
|
|
5
|
+
"description": "The repo's half of the reciprocal handshake: it names the workspace it belongs to. Nothing else. A backlink is consent, not admission — the workspace must list the repo too.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["schemaVersion", "workspace"],
|
|
8
8
|
"additionalProperties": false,
|
|
@@ -13,13 +13,6 @@
|
|
|
13
13
|
"minLength": 1,
|
|
14
14
|
"pattern": "^(?:git@[^@\\s]+|[^@\\s]+)$",
|
|
15
15
|
"description": "Repo ref of the workspace host, without revision."
|
|
16
|
-
},
|
|
17
|
-
"team": {
|
|
18
|
-
"anyOf": [
|
|
19
|
-
{ "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" },
|
|
20
|
-
{ "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" } }
|
|
21
|
-
],
|
|
22
|
-
"description": "Default team label, or a non-empty list of distinct labels (the first is the primary), for souls in this repo that carry no `team:` of their own. A capability without its own `team:` is listed under the primary."
|
|
23
16
|
}
|
|
24
17
|
}
|
|
25
18
|
}
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"uniqueItems": true
|
|
55
55
|
},
|
|
56
56
|
"souls": {
|
|
57
|
-
"description": "Package souls
|
|
57
|
+
"description": "Package souls: package-relative soul directories, each an ordinary soul (soul.yaml + AGENTS.md, optional skills/). A soul's name is its directory's. They are versioned and locked with the package (oats-lock.json records each soul's name, path and digest), listed with their package origin, and spawned by the qualified name <package>/<soul> (or the bare name when unique). `from: here` in a package soul is its own package at the locked commit.",
|
|
58
58
|
"type": "array",
|
|
59
59
|
"items": {
|
|
60
60
|
"type": "string",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"uniqueItems": true
|
|
68
68
|
},
|
|
69
69
|
"triggers": {
|
|
70
|
-
"description": "Trigger templates
|
|
70
|
+
"description": "Trigger templates: `oats trigger add --from <package>:<id> [--set <name>=<value>]…` instantiates one from the locked package. Each file is { parameters: { <name>: { path, required?, default?, description? } }, definition: { …a trigger definition… } }; see docs/schedules.md#triggers.",
|
|
71
71
|
"type": "array",
|
|
72
72
|
"items": {
|
|
73
73
|
"type": "object",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
"configTemplates": {
|
|
96
|
-
"description": "
|
|
96
|
+
"description": "Tolerated and ignored: named classic config templates, accepted so published packages still validate; the workspace model reads nothing from them.",
|
|
97
97
|
"type": "object",
|
|
98
98
|
"propertyNames": {
|
|
99
99
|
"pattern": "^[a-z0-9][a-z0-9._-]*$"
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
}
|
|
126
126
|
},
|
|
127
127
|
"configs": {
|
|
128
|
-
"description": "
|
|
128
|
+
"description": "Tolerated and ignored: the old spelling of `configTemplates`.",
|
|
129
129
|
"type": "object",
|
|
130
130
|
"propertyNames": {
|
|
131
131
|
"pattern": "^[a-z0-9][a-z0-9._-]*$"
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
}
|
|
156
156
|
},
|
|
157
157
|
"dependencies": {
|
|
158
|
-
"description": "
|
|
158
|
+
"description": "Tolerated and ignored: package source specifications from the classic line. The workspace model resolves only the workspace's `packages:`; a package's dependencies are not followed.",
|
|
159
159
|
"type": "array",
|
|
160
160
|
"items": {
|
|
161
161
|
"type": "string",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"type": "object",
|
|
26
26
|
"propertyNames": { "$ref": "#/$defs/label" },
|
|
27
27
|
"additionalProperties": { "$ref": "#/$defs/team" },
|
|
28
|
-
"description": "
|
|
28
|
+
"description": "SHARED teams: <label>: { description?, team? }. `team` is the messaging provider's team id, the same for everyone; without it the team is declared but not yet created (readiness team-unmapped). Local teams, the default and which teams each soul belongs to live in the deployment's oats-local.yaml (`oats teams`, `oats soul teams`). A label never gates, restricts or partitions anything."
|
|
29
29
|
},
|
|
30
30
|
"defaults": { "$ref": "#/$defs/defaults" },
|
|
31
31
|
"stores": {
|
|
@@ -36,14 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"messaging": {
|
|
38
38
|
"type": "object",
|
|
39
|
-
"description": "Opaque provider payload consumed by the messaging core capability.
|
|
40
|
-
"properties": {
|
|
41
|
-
"byTeam": {
|
|
42
|
-
"type": "object",
|
|
43
|
-
"propertyNames": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
44
|
-
"additionalProperties": { "type": "object" }
|
|
45
|
-
}
|
|
46
|
-
}
|
|
39
|
+
"description": "Opaque provider payload consumed by the messaging core capability. A team's provider id is teams.<label>.team."
|
|
47
40
|
},
|
|
48
41
|
"external": {
|
|
49
42
|
"type": "array",
|
|
@@ -113,7 +106,10 @@
|
|
|
113
106
|
"team": {
|
|
114
107
|
"type": "object",
|
|
115
108
|
"additionalProperties": false,
|
|
116
|
-
"properties": {
|
|
109
|
+
"properties": {
|
|
110
|
+
"description": { "type": "string" },
|
|
111
|
+
"team": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@/+-]{0,255}$", "description": "The messaging provider's team id (for oats.aweb, <team>:<namespace>). Absent: declared, not yet created. The kernel's safety rule: never '-'-led, no whitespace or control characters, at most 256 characters; the provider validates its own shape." }
|
|
112
|
+
}
|
|
117
113
|
},
|
|
118
114
|
"defaults": {
|
|
119
115
|
"type": "object",
|
|
@@ -122,16 +118,7 @@
|
|
|
122
118
|
"capabilities": { "$ref": "#/$defs/capabilityMap" },
|
|
123
119
|
"knowledge": { "$ref": "#/$defs/slotDefault" },
|
|
124
120
|
"messaging": { "$ref": "#/$defs/slotDefault" },
|
|
125
|
-
"tasks": { "$ref": "#/$defs/slotDefault" }
|
|
126
|
-
"byTeam": {
|
|
127
|
-
"type": "object",
|
|
128
|
-
"propertyNames": { "$ref": "#/$defs/label" },
|
|
129
|
-
"additionalProperties": {
|
|
130
|
-
"type": "object",
|
|
131
|
-
"additionalProperties": false,
|
|
132
|
-
"properties": { "capabilities": { "$ref": "#/$defs/capabilityMap" } }
|
|
133
|
-
}
|
|
134
|
-
}
|
|
121
|
+
"tasks": { "$ref": "#/$defs/slotDefault" }
|
|
135
122
|
}
|
|
136
123
|
},
|
|
137
124
|
"external": {
|
|
@@ -145,8 +132,7 @@
|
|
|
145
132
|
"minLength": 1,
|
|
146
133
|
"pattern": "^(?![A-Za-z]:)(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$",
|
|
147
134
|
"description": "Repository-relative directory holding the soul's soul.yaml."
|
|
148
|
-
}
|
|
149
|
-
"team": { "$ref": "#/$defs/label" }
|
|
135
|
+
}
|
|
150
136
|
}
|
|
151
137
|
}
|
|
152
138
|
}
|
package/docs/official-catalog.md
CHANGED
|
@@ -5,19 +5,33 @@ list in [awebai/oats](https://github.com/awebai/oats), not a separate registry
|
|
|
5
5
|
service. **A package listed there is official.** A name, logo, repository owner
|
|
6
6
|
or workspace membership alone does not make a package official.
|
|
7
7
|
|
|
8
|
+
## The packages
|
|
9
|
+
|
|
10
|
+
| package | release | capabilities | package souls |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| `oats.framework` | `oats-framework/v1.4.0` (this repository) | `oats.core`, `oats.setup`, `oats.knowledge-theory` | `knowledge-theory-expert` |
|
|
13
|
+
| `oats.okf` | `v4.0.4` | `oats.okf` (knowledge), `oats.okf-harvest`, `oats.okf-maintenance` | `knowledge-harvester`, `knowledge-maintainer` |
|
|
14
|
+
| `oats.aweb` | `v1.17.1` | `oats.aweb` (messaging) | |
|
|
15
|
+
| `oats.engineering` | `v1.1.0` | `oats.engineering-expert`, `oats.developer`, `oats.code-review` | `code-reviewer` |
|
|
16
|
+
| `oats.authoring` | `v1.0.3` | `oats.authoring` | |
|
|
17
|
+
| `oats.jira` | `v1.0.1` | `oats.jira` (tasks) | |
|
|
18
|
+
| `oats.linear` | `v1.0.1` | `oats.linear` (tasks) | |
|
|
19
|
+
|
|
20
|
+
Each package lives in its own `awebai/oats-*` repository except
|
|
21
|
+
`oats.framework`, whose payload root is `oats-package/` here. A capability id
|
|
22
|
+
names the package that supplies it through the catalog's aliases, so
|
|
23
|
+
`oats.developer: { from: package }` selects `oats.engineering`. This catalog ships with
|
|
24
|
+
the CLI: an older installed CLI keeps its own copy, and a change here rewrites
|
|
25
|
+
no lock and adds nothing to an existing workspace.
|
|
26
|
+
|
|
8
27
|
## Find and use packages
|
|
9
28
|
|
|
10
|
-
- Browse the catalog for the kernel/source version you use. Each package entry
|
|
11
|
-
identifies its repository, release ref and payload root; capability aliases
|
|
12
|
-
can point to the package that supplies them.
|
|
13
29
|
- A workspace pins an official package by **bare version** in its
|
|
14
|
-
`packages:` map (`oats.okf:
|
|
30
|
+
`packages:` map (`oats.okf: v4.0.4`); `oats sync` resolves it through the
|
|
15
31
|
catalog to an exact commit, fetches it, verifies its integrity and locks it.
|
|
16
|
-
A package outside the catalog is written `git:<repo>@<ref>`.
|
|
17
|
-
|
|
32
|
+
A package outside the catalog is written `git:<repo>@<ref>`. Pinning does
|
|
33
|
+
not join a team or adopt the publisher's workspace. See
|
|
18
34
|
[packages](packages.md).
|
|
19
|
-
- The Desktop catalog view/search is **planned for the parity phase**, not
|
|
20
|
-
shipped by this policy. There is no catalog CLI verb.
|
|
21
35
|
- **Discoverable ≠ declared.** A catalog listing grants nothing; a
|
|
22
36
|
`packages:` pin is the workspace's decision to trust that package at that
|
|
23
37
|
version, and the lock pins it to an exact commit and integrity. Nothing is
|
|
@@ -63,27 +77,10 @@ or workspace membership alone does not make a package official.
|
|
|
63
77
|
Contact and license evidence may live in the package/repository documentation;
|
|
64
78
|
this policy does not invent new catalog or manifest fields.
|
|
65
79
|
|
|
66
|
-
## Listed first set
|
|
67
|
-
|
|
68
|
-
- Listed capabilities: `oats.okf`, `oats.okf-harvest`, `oats.okf-maintenance`,
|
|
69
|
-
`oats.aweb`, `oats.authoring`, `oats.jira`, `oats.linear`, `oats.dev`,
|
|
70
|
-
`oats.knowledge-theory`, `oats.core` and `oats.setup`. `oats.okf-harvest` and
|
|
71
|
-
`oats.okf-maintenance` select the `oats.okf` package (4.0.1).
|
|
72
|
-
- **`oats.framework` 1.3.2** is listed at tag `oats-framework/v1.3.2` in
|
|
73
|
-
`awebai/oats`, payload root `oats-package`. The `oats.core`, `oats.setup` and
|
|
74
|
-
`oats.knowledge-theory` aliases select that distribution; package identity is
|
|
75
|
-
distinct from capability identity. Core supplies operation/soul guidance;
|
|
76
|
-
setup supplies OATS Soul Setup, configuration and package guidance. The
|
|
77
|
-
package also ships the `knowledge-theory-expert` package soul.
|
|
78
|
-
|
|
79
|
-
These entries are in the current repository catalog. An older installed CLI keeps
|
|
80
|
-
its bundled catalog; publication here does not update that installation or rewrite
|
|
81
|
-
locks or tags. No package is silently added to an existing workspace.
|
|
82
|
-
|
|
83
80
|
## Updates, deprecation and removal
|
|
84
81
|
|
|
85
82
|
Use the same catalog PR and maintainer-review path to update, deprecate or remove
|
|
86
83
|
an entry. State the reason, affected releases and supported replacement or hold,
|
|
87
|
-
and assess existing locks
|
|
88
|
-
release history. A list change is not permission to rewrite a deployment's
|
|
89
|
-
change what a workspace declares
|
|
84
|
+
and assess existing locks before changing discovery. Preserve immutable
|
|
85
|
+
release history. A list change is not permission to rewrite a deployment's
|
|
86
|
+
lock or change what a workspace declares.
|