@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.
Files changed (224) hide show
  1. package/README.md +12 -6
  2. package/bin/oats.mjs +194 -50
  3. package/capabilities/oats-aweb/bin/oats-aweb.mjs +538 -204
  4. package/capabilities/oats-aweb/injects/aweb.md +1 -1
  5. package/capabilities/oats-aweb/lib/binding-wire.mjs +31 -22
  6. package/capabilities/oats-aweb/oats.json +5 -12
  7. package/capabilities/oats-aweb/skills/VENDORED.md +4 -4
  8. package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +1 -1
  9. package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +83 -13
  10. package/capabilities/oats-code-review/injects/reviewer.md +26 -0
  11. package/capabilities/oats-code-review/oats.json +16 -0
  12. package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +66 -0
  13. package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +30 -0
  14. package/capabilities/oats-code-review/skills/security-review/SKILL.md +56 -0
  15. package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +34 -0
  16. package/capabilities/oats-developer/injects/developer.md +38 -0
  17. package/capabilities/oats-developer/oats.json +17 -0
  18. package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +43 -0
  19. package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +47 -0
  20. package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +65 -0
  21. package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +37 -0
  22. package/capabilities/oats-developer/skills/worktrees/SKILL.md +36 -0
  23. package/capabilities/oats-engineering-expert/injects/expert.md +37 -0
  24. package/capabilities/oats-engineering-expert/oats.json +17 -0
  25. package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +37 -0
  26. package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +52 -0
  27. package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +50 -0
  28. package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +53 -0
  29. package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +49 -0
  30. package/capabilities/oats-okf/bin/oats-okf.mjs +8 -4
  31. package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
  32. package/capabilities/oats-okf/lib/inspection.mjs +26 -7
  33. package/capabilities/oats-okf/lib/sources.mjs +16 -2
  34. package/capabilities/oats-okf/lib/worker.mjs +5 -16
  35. package/capabilities/oats-okf/oats.json +6 -3
  36. package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +2 -2
  37. package/capabilities/oats-okf-harvest/oats.json +3 -3
  38. package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +6 -6
  39. package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +2 -2
  40. package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
  41. package/capabilities/oats-okf-maintenance/oats.json +2 -2
  42. package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +1 -1
  43. package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +11 -23
  44. package/capabilities/oats-workspace-experts/injects/oats-experts.md +26 -0
  45. package/capabilities/oats-workspace-experts/oats.json +9 -0
  46. package/docs/capabilities.md +160 -171
  47. package/docs/capability-manifest.schema.json +6 -11
  48. package/docs/configuration.md +213 -64
  49. package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
  50. package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
  51. package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
  52. package/docs/design/2026-09-27-team-model-v2.md +97 -117
  53. package/docs/design/2026-09-28-automations-trust.md +38 -0
  54. package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
  55. package/docs/design/HISTORY.md +65 -0
  56. package/docs/design/README.md +23 -54
  57. package/docs/desktop-cli-api.md +1787 -1777
  58. package/docs/desktop.md +30 -91
  59. package/docs/execution-targets.md +146 -292
  60. package/docs/first-team.md +31 -17
  61. package/docs/implementation.md +76 -288
  62. package/docs/integrations.md +118 -320
  63. package/docs/knowledge-capability-authoring.md +25 -52
  64. package/docs/knowledge-reference/acceptance.md +3 -3
  65. package/docs/knowledge-reference/adoption.md +1 -1
  66. package/docs/knowledge-reference/harvester.md +2 -2
  67. package/docs/knowledge-reference/package-craft.md +3 -3
  68. package/docs/knowledge-reference/provider-mapping.md +3 -6
  69. package/docs/knowledge-reference/reader-capture.md +3 -3
  70. package/docs/knowledge-theory.md +62 -166
  71. package/docs/knowledge.md +225 -404
  72. package/docs/layers.md +42 -97
  73. package/docs/oats-local.schema.json +58 -5
  74. package/docs/oats-membership.schema.json +1 -8
  75. package/docs/oats-package.schema.json +5 -5
  76. package/docs/oats-workspace.schema.json +8 -22
  77. package/docs/official-catalog.md +25 -28
  78. package/docs/packages.md +45 -63
  79. package/docs/plans/0.30-close-out.md +61 -0
  80. package/docs/release-lane.md +77 -0
  81. package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
  82. package/docs/release-notes/v0.19.0.md +48 -147
  83. package/docs/release-notes/v0.19.1.md +2 -3
  84. package/docs/release-notes/v0.19.3.md +2 -15
  85. package/docs/release-notes/v0.20.0.md +0 -15
  86. package/docs/release-notes/v0.22.0.md +71 -138
  87. package/docs/release-notes/v0.22.1.md +42 -90
  88. package/docs/release-notes/v0.22.10.md +1 -1
  89. package/docs/release-notes/v0.22.11.md +1 -47
  90. package/docs/release-notes/v0.22.12.md +4 -13
  91. package/docs/release-notes/v0.22.13.md +1 -42
  92. package/docs/release-notes/v0.22.14.md +3 -11
  93. package/docs/release-notes/v0.22.15.md +1 -46
  94. package/docs/release-notes/v0.22.16.md +6 -8
  95. package/docs/release-notes/v0.22.18.md +1 -99
  96. package/docs/release-notes/v0.22.19.md +3 -14
  97. package/docs/release-notes/v0.22.2.md +6 -15
  98. package/docs/release-notes/v0.22.3.md +0 -1
  99. package/docs/release-notes/v0.22.4.md +1 -14
  100. package/docs/release-notes/v0.22.5.md +2 -12
  101. package/docs/release-notes/v0.22.6.md +0 -3
  102. package/docs/release-notes/v0.23.0.md +9 -25
  103. package/docs/release-notes/v0.23.1.md +9 -25
  104. package/docs/release-notes/v0.23.2.md +2 -4
  105. package/docs/release-notes/v0.24.0.md +56 -97
  106. package/docs/release-notes/v0.24.1.md +7 -11
  107. package/docs/release-notes/v0.24.10.md +34 -45
  108. package/docs/release-notes/v0.24.11.md +12 -20
  109. package/docs/release-notes/v0.24.12.md +35 -48
  110. package/docs/release-notes/v0.24.13.md +34 -41
  111. package/docs/release-notes/v0.24.2.md +9 -13
  112. package/docs/release-notes/v0.24.3.md +7 -11
  113. package/docs/release-notes/v0.24.4.md +6 -6
  114. package/docs/release-notes/v0.24.5.md +6 -10
  115. package/docs/release-notes/v0.24.6.md +2 -5
  116. package/docs/release-notes/v0.24.7.md +46 -75
  117. package/docs/release-notes/v0.24.8.md +58 -96
  118. package/docs/release-notes/v0.24.9.md +38 -54
  119. package/docs/release-notes/v0.25.0.md +59 -76
  120. package/docs/release-notes/v0.25.1.md +57 -81
  121. package/docs/release-notes/v0.25.2.md +51 -70
  122. package/docs/release-notes/v0.25.3.md +11 -13
  123. package/docs/release-notes/v0.25.4.md +9 -13
  124. package/docs/release-notes/v0.25.5.md +3 -5
  125. package/docs/release-notes/v0.25.6.md +20 -29
  126. package/docs/release-notes/v0.25.7.md +5 -7
  127. package/docs/release-notes/v0.25.8.md +26 -39
  128. package/docs/release-notes/v0.26.0.md +175 -646
  129. package/docs/release-notes/v0.27.0.md +4 -5
  130. package/docs/release-notes/v0.27.1.md +4 -6
  131. package/docs/release-notes/v0.27.2.md +1 -1
  132. package/docs/release-notes/v0.28.0.md +57 -124
  133. package/docs/release-notes/v0.29.0.md +89 -208
  134. package/docs/release-notes/v0.29.1.md +1 -1
  135. package/docs/release-notes/v0.29.2.md +3 -4
  136. package/docs/release-notes/v0.30.0.md +205 -0
  137. package/docs/schedules.md +280 -363
  138. package/docs/servers.md +99 -117
  139. package/docs/soul.schema.json +2 -9
  140. package/docs/souls-and-instances.md +145 -158
  141. package/docs/workspaces.md +132 -215
  142. package/lib/automations.mjs +21 -6
  143. package/lib/core.mjs +226 -74
  144. package/lib/instance-events.mjs +1 -1
  145. package/lib/instance-inspect.mjs +109 -34
  146. package/lib/instance-lifecycle.mjs +14 -1
  147. package/lib/instance-resolution.mjs +26 -27
  148. package/lib/launch-preference.mjs +87 -0
  149. package/lib/materialize.mjs +3 -3
  150. package/lib/resolve.mjs +29 -87
  151. package/lib/schedule.mjs +1 -1
  152. package/lib/teams-verbs.mjs +195 -0
  153. package/lib/teams.mjs +190 -0
  154. package/lib/triggers.mjs +2 -2
  155. package/lib/workspace.mjs +54 -147
  156. package/package-catalog.json +9 -15
  157. package/package.json +1 -1
  158. package/skills/oats-getting-started/SKILL.md +25 -13
  159. package/capabilities/oats-review/injects/review.md +0 -69
  160. package/capabilities/oats-review/oats.json +0 -10
  161. package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
  162. package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
  163. package/docs/conventions.md +0 -90
  164. package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
  165. package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
  166. package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
  167. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
  168. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
  169. package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
  170. package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
  171. package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
  172. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
  173. package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
  174. package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
  175. package/docs/design/2026-09-15-captured-dispatch.md +0 -127
  176. package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
  177. package/docs/design/2026-09-15-package-preparation.md +0 -100
  178. package/docs/design/2026-09-15-portable-data-contract.md +0 -121
  179. package/docs/design/2026-09-15-portable-declarations.md +0 -189
  180. package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
  181. package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
  182. package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
  183. package/docs/design/2026-09-15-source-observation.md +0 -119
  184. package/docs/design/2026-09-16-captured-admission.md +0 -77
  185. package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
  186. package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
  187. package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
  188. package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
  189. package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
  190. package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
  191. package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
  192. package/docs/design/2026-09-16-portable-onboarding.md +0 -179
  193. package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
  194. package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
  195. package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
  196. package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
  197. package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
  198. package/docs/design/2026-09-17-captured-native-start.md +0 -58
  199. package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
  200. package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
  201. package/docs/design/2026-09-17-public-captured-start.md +0 -108
  202. package/docs/design/2026-09-17-public-prepare-request.md +0 -90
  203. package/docs/design/2026-09-18-captured-pi-host.md +0 -205
  204. package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
  205. package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
  206. package/docs/design/2026-09-20-redesign-program-board.md +0 -142
  207. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
  208. package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
  209. package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
  210. package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
  211. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
  212. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
  213. package/docs/design/2026-09-24-phase-d-plan.md +0 -305
  214. package/docs/design/2026-09-25-teams-contract.md +0 -258
  215. package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
  216. package/docs/design/desktop-ux-plan.md +0 -362
  217. package/docs/design/launch-configurations.md +0 -168
  218. package/docs/design/okf-mirror-provenance.md +0 -105
  219. package/docs/design/operations-contract.md +0 -141
  220. package/docs/oats-member.schema.json +0 -38
  221. package/skills/integration-authoring/SKILL.md +0 -84
  222. package/skills/oats-support/SKILL.md +0 -79
  223. package/skills/skill-craft/SKILL.md +0 -109
  224. package/skills/soul-craft/SKILL.md +0 -116
@@ -1,189 +0,0 @@
1
- # Portable declaration codecs — implementation contract
2
-
3
- The new parser modules implement the accepted two-authority architecture's data
4
- boundary. They do **not** yet change legacy CLI composition, acquire packages or
5
- select a workspace. Captured-record primitives exist separately; complete
6
- preparation and public consumer migration remain integration work.
7
-
8
- ## One safe syntax reader
9
-
10
- `lib/config-data.mjs` reads new portable YAML and JSON with byte/depth/entry limits,
11
- raw-byte integrity and JSON-pointer origins. It uses the exact locked `yaml` 2.9.1
12
- runtime dependency instead of extending a hand-written partial YAML parser; the
13
- shared strict JSON reader handles JSON input. New kernel manifests/locks include
14
- that dependency. No dependency install scripts are used.
15
-
16
- The automatic syntax choice treats a flow-root `{`/`[` as JSON. Callers reading
17
- explicit YAML may select `format: yaml`; ordinary block YAML supports inline maps,
18
- sequences of maps, quotes and block scalars. No line or nested mapping is silently
19
- dropped. YAML anchors, aliases, explicit tags, merge syntax, duplicate/coercive keys,
20
- non-finite numbers and multiple documents refuse. Quoted metacharacters remain data.
21
- Lexer/CST processing is budgeted before AST composition; duplicate decoded keys
22
- are checked with a linear own-key lookup rather than a quadratic composer scan.
23
- Decoded maps have null prototypes. Origins refer to the original document and
24
- pointer; optional spans are character offsets, not byte offsets.
25
-
26
- ## Soul v1
27
-
28
- Canonical authored fields are in [soul.schema.json](../soul.schema.json); runtime
29
- source semantics are centralized in `lib/source-spec.mjs`. The schema describes
30
- shape and does not certify acquisition, containment, credentials or enrollment.
31
-
32
- ```text
33
- schemaVersion: 1
34
- name: research-expert
35
- requires:
36
- capabilities:
37
- example.research:
38
- source: git:github.com/example/tools@main#packages/research
39
- messaging: any
40
- defaults:
41
- tasks:
42
- capability: example.tasks
43
- source: repo:packages/tasks
44
- knowledge:
45
- contract: alternate.documents
46
- version: 1
47
- payload:
48
- collection: research
49
- teams: [experts]
50
- resources: [references]
51
- work: directory
52
- ```
53
-
54
- `requires.capabilities` are intrinsic hard selections. Fundamental requirements are
55
- `any` or a source-complete provider selection. Defaults supply source-complete
56
- fallbacks or explicit `none`; optional additive defaults may disable a nonrequired
57
- entry with `false`. Contradictions and workspace/operator choices belong to the
58
- single resolver, not a second precedence implementation in the parser.
59
-
60
- A provider selection has `capability`, `source`, optional non-secret `settings`.
61
- An additive map entry obtains its ID from the key and has `source` plus optional
62
- settings. The parser returns the unchanged declaration, normalized source entries
63
- keyed by their original pointers, document origins and byte integrity. It does not
64
- invent omitted defaults or providers.
65
-
66
- Knowledge declarations use an opaque `{ contract, version, payload }` envelope.
67
- Provider-owned validation supplies node/store or alternative semantics; this parser
68
- must not require OKF fields. Parsing an arbitrary payload does not certify that its
69
- contents are non-secret or that required external resources are configured.
70
-
71
- Teams are offered aliases, not enrollment or wider-team consent. Extra resources
72
- are canonical source-repository-relative paths; source projection later verifies
73
- containment and complete retention. Work/runtime/model/yolo, `launch-config` and
74
- `backend` are typed execution hints, not an inferred work repository or a policy
75
- tier. Launch-config keeps the current 1–64-character name grammar; backend remains
76
- tmux or herdr. This codec does not look up a named configuration, check host tools
77
- or launch a backend.
78
-
79
- The versioned format rejects `agent-types`, `type`, authored internal annotations,
80
- and the old machine-local `repo` field rather than silently dropping them. Legacy
81
- flat declarations remain migration inputs until the coordinated cutover. A local
82
- capability path requires explicit local adoption authorization and an absolute
83
- local base when relative; remote declarations cannot silently use the caller's cwd.
84
-
85
- ## Workspace, repository exports and external imports
86
-
87
- `lib/workspace-definition.mjs` validates `oats-workspace.yaml`, repository `oats.yaml`
88
- and the identical standalone/workspace external-soul reference. The schemas are
89
- [oats-workspace.schema.json](../oats-workspace.schema.json) and
90
- [oats-member.schema.json](../oats-member.schema.json); they reuse the soul schema's
91
- selection/provider-envelope definitions. Runtime checks additionally enforce source
92
- and path semantics, definition containment and duplicate aliases/repositories.
93
- Both authorities share `portable-policy.mjs` selection-shape validation; neither
94
- parser implements precedence or acquisition.
95
-
96
- Workspace fields are schemaVersion, name, members, defaults, knowledge, teams,
97
- catalogs and imports. Only schemaVersion/name are required; omitted lists admit
98
- or activate nothing. Repository references have source and optional revision;
99
- the parser leaves an omitted revision unresolved, not guessed as main. Discovery
100
- must observe the intended hosting default branch and retain the exact observation.
101
- Catalog references may additionally name an explicit contained index path.
102
-
103
- An external import requires source, soul (exported path), revision and alias.
104
- Its optional adoption object contains teamAliases, providers and bindings. Provider
105
- choices use the same source-complete default-selection shape; the single resolver
106
- later checks hard requirements. A team alias mapping is not wider-team consent.
107
- The parser returns normalized references without creating an adopter-owned soul
108
- or pretending the source repository is a member.
109
-
110
- Workspace teams map aliases to provider/id pairs, with the reserved private entry
111
- accepting only per-human. Knowledge stores and exported stores use provider-owned
112
- contract/version/payload declarations; there is no imposed OKF node schema here.
113
- No parser result claims enrollment, private-team identity or privacy qualification.
114
-
115
- Repository exports contain souls, packages and knowledge lists. A soul export gives
116
- an identity path plus an explicit definition path inside it, accommodating direct
117
- and nested soul layouts without guessing. Package exports give their contained
118
- package root. A public source index may omit workspace; that is not organizational
119
- admission. Duplicate import aliases/member locators report both origin pointers.
120
- Qualified hosting identity and reciprocal admission are the next discovery layer.
121
- `lib/portable-identity.mjs` validates their value shapes: host/provider/repository ID
122
- or an explicitly canonical remote; a soul adds its exported path; a workspace names
123
- its oats-workspace.yaml. Alias, revision and local checkout placement are not parts
124
- of a Git soul identity. Local-only souls have explicit canonical path identities.
125
- These validators do not turn authored IDs into observed hosting authority or grant
126
- membership; the discovery adapter must establish the actual facts.
127
-
128
- ## One choice engine
129
-
130
- `lib/portable-choices.mjs` resolves field-level inputs through one algorithm. A
131
- requirement is either equality with a concrete value or required presence. Policy
132
- candidate kinds are workspace-default, soul-default, import-adoption and operator;
133
- manifest-default is the lower intrinsic field fallback, captured from exact manifest
134
- bytes rather than a third policy authority. This is
135
- constraints plus bounded fallbacks, not a repository policy tier or a general
136
- expression/version solver.
137
-
138
- A concrete requirement seeds selection; an incompatible ordinary fallback is
139
- recorded as overridden, not a false conflict. Incompatible adoption/operator choices
140
- or conflicting hard/equal-authority inputs report both origins. Abstract presence
141
- with no concrete binding reports needs-configuration. Results include selectedBy,
142
- constraints and considered origins; they are choice plans, not installed/trusted/
143
- enrolled readiness or captured-resolution authority.
144
-
145
- Choice keys are JSON-pointer-shaped field names. Field codecs normalize disabled or
146
- unbound selections to null; the generic engine does not guess from strings such as
147
- none. False, zero and empty arrays can be legitimate data bindings. The source-aware
148
- preparer must supply validated typed selections and retain the authored provenance.
149
- No I/O or provider-specific payload interpretation belongs in this engine.
150
-
151
- ## Source-aware software plan
152
-
153
- `lib/portable-composition.mjs:planSoftwareChoices` now compiles validated soul and
154
- workspace parser results, qualified import adoptions, explicit operator policy and
155
- provider-supplied hard fields into that SAME engine. `soul-constraints.mjs` supplies
156
- the hard facts used by both planning and captured-record verification. It does not
157
- implement another precedence algorithm.
158
-
159
- Selections and settings retain their original document/pointer. The plan exposes
160
- selected capability sources, zero/one providers per fundamental slot and per-setting
161
- choice references. Nested settings retain their owning selection and source: the
162
- same resolver first determines source eligibility, then resolves eligible settings
163
- with the same stable inputs. Compatible-source fallbacks still fill open fields;
164
- rejected-source settings are separate `excludedSettings` diagnostics with their
165
- origins, never active configuration. No source is fetched or observed twice.
166
- Two selected fields cannot assign different sources to one capability
167
- ID. A required provider with no selection remains needs-configuration; no repository
168
- capability-default tier or implicit provider is introduced.
169
-
170
- A repo: choice carries its declaring source locator and exact Git revision or explicit
171
- local context alongside the relative path; retained local bytes have separate witnesses. The same path in workspace and soul repositories is not
172
- the same package. Operator repo: inputs need an explicit source context, never cwd.
173
- The shared source codec validates normalized choice fields against their source/path
174
- rather than allowing a contradictory URL or extra annotation. Local-path selection
175
- still requires explicit authorization and is never executable trust.
176
-
177
- Discovery must supply qualified adoption identities; aliases do not select the
178
- upstream soul. Matching canonical-remote identities must agree with the import source.
179
- Contradictory adoption fields for the same identity report both origins. Binding
180
- values and team-alias maps are retained as data, not provider execution or enrollment.
181
-
182
- This is a private SOFTWARE plan, not public readiness or a completed captured
183
- composition. Provider declarations/stores stay opaque. Their non-secret classification,
184
- concrete binding resolution and fixed-field constraints must join the same pipeline
185
- before a public preview or complete capture; do not dump unclassified provider input.
186
- No fetch, package materialization, trust write, membership claim or native dispatch
187
- occurs here. Five focused planner tests cover anchors/hard seeds, precedence/missing
188
- providers, qualified adoption conflicts, settings ownership and cross-field source
189
- collisions.
@@ -1,150 +0,0 @@
1
- ---
2
- type: Playbook
3
- status: accepted-for-implementation
4
- title: Portable Souls infrastructure implementation handoff
5
- description: Portable binding contracts, fifteen decisions, storage-only baseline and dependency-ordered delivery gates; Desktop features later.
6
- timestamp: 2026-09-15
7
- ---
8
-
9
- # Portable Souls infrastructure implementation handoff
10
-
11
- **Direct human authorization now permits infrastructure implementation/deployment.**
12
- It supersedes the previous “not implementation authorized” status, not any of the
13
- 15 decisions or the landed retention contract. This documentation-only lane makes
14
- no operational changes: no commits/pushes, branch switches, live installation or
15
- activation, credential work, schedulers, models/GUI/session control. The held
16
- capture patch `54b07ee` must never be integrated. **Desktop feature work is later.**
17
-
18
- **Rollout amendment (2026-09-16):** [fresh installation is the current delivery path](2026-09-16-fresh-install-first-rollout.md).
19
- General historical conversion/reconstruction and more migration CLI work are deferred,
20
- not release-critical. The architecture and evidence/custody rules below still apply;
21
- existing knowledge, work, histories and identities are not implicitly disposable.
22
-
23
- ## 1. Portable contract reading order and baseline
24
-
25
- All required design text now lives at repository-relative paths; no private
26
- instance review file or original conversation is an acceptance dependency.
27
-
28
- | Order | Document | Authority / state |
29
- |---|---|---|
30
- | 1 | [Explainer](2026-09-14-portable-souls-explainer.md) | Reconciled illustrations; all LFX examples hypothetical, not deployment facts. |
31
- | 2 | [Proposal](2026-09-14-portable-souls-and-git-workspaces.md) | Accepted design; full substantive amendment integrated coherently. |
32
- | 3 | [Verbatim substantive amendment](2026-09-14-portable-souls-contract-amendments.md) | Public universal design appendix; transport metadata omitted, technical text preserved. |
33
- | 4 | [Retention contract](2026-09-14-artifact-retention-contract.md) | Landed and binding: store semantics, captured resolution and consumer migration. |
34
- | 5 | [Implementation checklist/ledger](2026-09-15-portable-souls-implementation.md) | Clause-by-clause mapping, dependency order, evidence and pending gates. |
35
- | 6 | [Knowledge direction](2026-09-13-knowledge-and-memory-direction.md) and [current knowledge runtime](../knowledge.md) | Doctrine/context; the older brief's §4.9 automatic skill-delivery account is superseded by OKF v2 (no automatic soul-skill edits). Its older location/type mechanisms are not a second Portable Souls authority. |
36
- | 7 | Package engine (`package-engine-contract.md`, removed in 0.26) and runtime API (`package-runtime-api.md`, removed in 0.26) | Existing acquisition/trust/runtime invariants; explicit Portable Souls migration changes store/resolution semantics, not silently these contracts. |
37
- | 8 | Retention source `lib/capability-artifacts.mjs` and its tests (removed in 0.26 with the captured path) | Storage prerequisite; not complete instance/job dispatch. |
38
-
39
- Implementation baseline: `428cd9af615652c4a93d754c1106674abd18545b` on the isolated
40
- `feat/portable-souls-infrastructure` worktree. There is no instruction to merge,
41
- rebase or switch branches. Primary checkout and older roster/knowledge drafts are
42
- outside this delivery lane. This handoff describes baseline evidence, not a claim
43
- that concurrent worktree edits are landed or deployed.
44
-
45
- ## 2. The decisions (binding)
46
-
47
- 1. **Three responsibilities.** The soul declares what it needs and where it comes from; the workspace definition declares admission, defaults, knowledge stores, team references and catalogs; the local deployment resolves, installs, binds credentials and keeps state. Source location, install location, work target and team membership are four separate facts; none is inferred from another.
48
- 2. **Source-complete soul declarations.** Every intrinsic capability carries a source (`git:<repo>@<selector>#<package-path>`); same-repository packages use `repo:<path from repository root>` at the soul's retained snapshot; `path:` is reserved for honestly nonportable local inputs. Never `./`.
49
- 3. **`requires` vs `defaults` in a soul.** Requirements are constraints every composition satisfies; defaults are fallbacks an operator or import entry may rebind. Conflicting requirements fail with both origins reported.
50
- 4. **Precedence: two levels, no repository tier, no agent-types.** Workspace defaults, then the soul's declarations; explicit operator choice (import-entry adoption defaults or spawn-time choice) is bounded: it may rebind defaults and bindings, never erase a hard requirement. Two authorities, one resolver. Repository briefing (`agents-md-injection`) and worktree setup stay as work-target behaviour, selected from the repository actually worked on.
51
- 5. **Reciprocal membership for every member kind.** A repository is a member when the workspace admits it and it names the workspace, at recorded revisions with qualified identities. Applies equally to project, experts, capabilities and knowledge repositories. Consuming a source (package, public soul, public store) is never membership. Forks with a copied backlink are not members.
52
- 6. **External-soul import by reference, never by copy.** Fields: canonical source repository, exported soul path, revision selector, adopter-local alias. Exact revision and needed source files retained; upstream identity, revision and alias are distinct. Workspace may advertise the import without admitting the source repository; standalone prepare accepts the same reference. Adoption defaults on the entry (team-alias map, knowledge destination, provider rebindings) are workspace-side, keyed to the qualified upstream identity, bounded as in 4.
53
- 7. **Souls live in project repositories first**, under `agents/<name>/`, as many per repository as wanted; an experts repository is for subjects spanning repositories. Souls are named for expertise, not job titles.
54
- 8. **Knowledge.** Declared at both levels: the workspace lists stores and the default provider (discoverability); the soul carries store-qualified `reads` and `owns` with optional destinations so it can read and harvest without the workspace repository. One explicit steward per node; explicit destination per promoted concept; no "one store per soul" invariant. Public PRs are fine: steward, proposing harvester and accepting maintainer are three roles. Open-source souls may consume open-source stores; reading a public store never publishes adopter notes. The kernel's knowledge contract is provider-neutral; owns/reads and harvester promotion describe the default provider (OKF).
55
- 9. **Teams: private first, wider by choice.** Each human's instances in a workspace auto-join a private team keyed by a provider-resolvable human identity plus qualified workspace identity, reused across that person's machines; children and scheduled instances inherit the owner; messaging-disabled workers create no team. Wider teams the soul lists are opt-in per instance; an explicit wider set replaces wider defaults but keeps the private floor. Catalog visibility, live-instance visibility, contact and conversation-history access are four separate grants; contact is not history. **No privacy guarantee is claimed until a named messaging owner qualifies provider behaviour.**
56
- 10. **One default provider per fundamental slot** is a v1 product simplification, labelled as such; simultaneous Jira + GitHub stays an explicit design test.
57
- 11. **Immutability.** Humans pick a channel or a pin; preparation resolves once per transaction into a captured resolution (soul snapshot, capability closure, helpers, commands/hooks, non-secret config and binding provenance); instances and queued work dispatch from that record, never from the ambient lock; several artifacts per capability coexist; one artifact per capability id per instance; conflicts fail with both paths. Pinned = OATS-managed composition only; not knowledge contents, credentials, memberships, work repo, external services, host tools.
58
- 12. **Trust.** Executable = commands, hooks or environment; a changed executable artifact needs fresh approval per revision; declarative skill changes are visible in the update notice but not gated. Freshness v1: refresh on explicit prepare/update, show available-unapproved beside last-approved (never "latest"), no daemon, no unattended approval.
59
- 13. **Digest.** At the migration boundary, a versioned digest over file bytes, symlink targets and each regular file's executable flag normalised from the owner-execute bit, same for Git and `path:` sources; old digests stay verifiable and are never reinterpreted.
60
- 14. **Migration.** One-time explicit store/lock migration; existing instances recorded as `reconstructed`, `partial` or `unknown` with evidence; partial/unknown never passes for complete in CLI or Desktop readiness; never claim recovery of an artifact the flat store overwrote; running sessions preserved.
61
- 15. **No new infrastructure.** No registry, discovery daemon or OATS user database; Git hosting, the messaging provider and existing machines are the substrate.
62
-
63
- ## 3. What is built at the baseline
64
-
65
- `lib/capability-artifacts.mjs` retains/verifies exact capability trees side by side,
66
- without activation, approval or selection. Absence (`artifact-not-found`) is
67
- distinct from invalid artifact/store shape or integrity drift; damaged retained
68
- state is never silently repaired. The contract also covers invalid references and
69
- containment refusals. Source copying preserves file permissions, but the **baseline
70
- digest does not cover mode bits**; the mode-aware version is migration work.
71
-
72
- The installer still overwrites `installed/<id>`, `prepareLaunchHooks` reloads
73
- manifests by ID, and scheduled operations resolve at run time. Storage A/B tests
74
- are not proof that an old instance or queued job dispatches A while new work uses
75
- B. The [ledger](2026-09-15-portable-souls-implementation.md) separates these gates.
76
-
77
- ## 4. Dependency-ordered work
78
-
79
- 1. Reconcile proposal/explainer/handoff with the complete amendment and record the
80
- fifteen-clause checklist. This documentation lane owns only `docs/design/`.
81
- 2. Extract shared tree-copy/digest/publication mechanics into a narrow acyclic
82
- leaf before core imports retention; no policy or lifecycle logic in the leaf.
83
- 3. Define reviewed versioned captured-resolution and lock schemas; retain soul
84
- source separately by qualified identity/digest, with typed refusals. Source
85
- identity, exact revision and adopter alias are distinct. Store records outside
86
- homes, retain per-choice provenance/constraints and provider-neutral bindings.
87
- 4. Review/implement soul declarations: source-complete `git:`/`repo:`/`path:`,
88
- requires/defaults, store-qualified knowledge payload, teams. Validate containment.
89
- 5. Review/implement workspace/member descriptors (`oats-workspace.yaml`, `oats.yaml`
90
- are illustrative spellings): qualified reciprocal admission for every member
91
- kind, defaults/stores/team references/catalogs/imports; bounded data-only indexes.
92
- 6. Integrate four-field by-reference imports and workspace-side adoption defaults;
93
- identical standalone preparation, no copied soul or publisher backlink.
94
- 7. Preparation resolves once; publishes all artifacts; commits a complete resolution
95
- before launch; reports installed/trusted/configured/enrolled separately.
96
- 8. Complete the retention contract's five-step consumer migration: acquisition,
97
- launch/restart/retirement/recovery and independent queued work use captured
98
- records; evidence-grade old records; remove ambient lookups; version the digest.
99
- 9. CLI diagnostics expose choices, provenance, explicit freshness and incomplete
100
- migration honestly. Provider-neutral payloads do not compel OKF node semantics.
101
- 10. Private-team enrollment/privacy requires a **named messaging owner** and provider
102
- qualification. Until then record choices only, not guarantees. The simultaneous
103
- Jira + GitHub case stays a review test, not a new solver requirement.
104
- 11. Later Desktop features consume the same preparation/readiness APIs; do not bring
105
- GUI work, live model/session controls or scheduling into this infrastructure lane.
106
-
107
- The [implementation plan](2026-09-15-portable-souls-implementation.md) supplies
108
- prerequisites, owners by responsibility, tests and an acceptance ledger. Dependency
109
- order is not permission to make undecided schema/product choices silently.
110
-
111
- ## 5. Acceptance that must be demonstrated
112
-
113
- The complete explainer/proposal checks apply; these three scenarios are mandatory:
114
-
115
- 1. Import the **same unchanged public soul** into an organization and a standalone
116
- no-Git work target. Read public knowledge; bind an explicit adopter write
117
- destination; prepare without publisher workspace access. Verify upstream identity,
118
- exact retained revision and alias independently. Missing bindings stay incomplete.
119
- 2. Two humans on two hosts **each**, one workspace: reuse each private team across
120
- hosts; a child or scheduled instance inherits its human; widen/narrow one
121
- representative without changing global identity or knowledge bindings. Separately
122
- qualify catalog/live visibility, contact and history. No current privacy guarantee.
123
- 3. Existing instance and independent queued job stay on A; a new instance prepares
124
- approved B; remove original source and prove A still executes lifecycle/recovery
125
- resources without ambient substitution. Storage-only execution is insufficient.
126
-
127
- Useful output and accepted knowledge are distinct from scaffold/launch/PR activity.
128
- Live evidence and provider qualification are separate from this documentation pass.
129
-
130
- ## 6. Safety and unresolved review gates
131
-
132
- - Keep the capture patch held; preserve running sessions and existing deployment
133
- inputs; never claim recovery of overwritten historical artifacts.
134
- - Readiness must distinguish `reconstructed`, `partial`, `unknown`; partial/unknown
135
- cannot pass as complete. Software pins do not freeze knowledge, credentials,
136
- membership, work repositories, services or host tools.
137
- - Parser/schema syntax for `repo:`, imports/adoption, reads/owns, requires/defaults,
138
- workspace exports, wire versions and store/lock migration details remain review
139
- work. Illustrative field names are not another parser or approved CLI flags.
140
- - Canonical remote handling across renames/transfers requires explicit provenance.
141
- - Private context identity requires provider-resolvable human plus qualified
142
- workspace, or an explicit standalone context key. Messaging-disabled workers
143
- create no team. Do not name a provider privacy guarantee without qualification.
144
- - Zero or one default provider per slot is the v1 simplification; simultaneous
145
- Jira + GitHub is not yet solved. Unattended approval is not part of v1.
146
- - Recurring schedules must declare capture versus explicit future reprepare policy;
147
- capture remains proposed. Already queued work never silently advances.
148
-
149
- Human authorization closes the old implementation-approval hold only; contract
150
- constraints, parser review and provider qualification remain in force.