@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,708 +0,0 @@
1
- ---
2
- type: Decision
3
- status: accepted-for-implementation
4
- title: Portable souls and Git-backed organizational workspaces
5
- description: Accepted Portable Souls architecture, reconciled with all lead amendments and the landed storage contract; syntax and provider qualification remain review gates.
6
- timestamp: 2026-09-15
7
- ---
8
-
9
- # Portable souls and Git-backed organizational workspaces
10
-
11
- ## 1. Status and purpose
12
-
13
- **Accepted for infrastructure implementation, 2026-09-15.** Direct human
14
- implementation/deployment authorization supersedes the earlier discussion-only
15
- status, not the constraints. This document coherently incorporates the full
16
- [lead amendment](2026-09-14-portable-souls-contract-amendments.md). Its substantive
17
- text is retained verbatim there so acceptance depends on no private conversation
18
- or ignored instance file. The [handoff's 15 decisions](2026-09-15-portable-souls-handoff.md#2-the-decisions-binding)
19
- and the landed [retention contract](2026-09-14-artifact-retention-contract.md)
20
- are binding. The [delivery plan and acceptance ledger](2026-09-15-portable-souls-implementation.md)
21
- map each clause to verification.
22
-
23
- Architecture acceptance is not final parser/schema approval, provider privacy
24
- qualification, or a claim of shipped behavior. All YAML shapes are illustrative
25
- and require parser review; accepted spelling and semantics are explicit below.
26
- At baseline `428cd9af615652c4a93d754c1106674abd18545b`, only the storage
27
- retention prerequisite is landed for Portable Souls. Desktop feature work is
28
- **later**. The held capture patch `54b07ee` is excluded. This documentation pass
29
- performs no live installation, activation, credential operation, scheduling,
30
- model/GUI launch or session control.
31
-
32
- The objective is an organization with many repositories, teams and expert souls,
33
- where people can discover and prepare the appropriate experts without cloning the
34
- whole organization or operating an additional OATS registry service.
35
-
36
- > The soul declares what it needs and where it comes from.
37
- > The workspace declares admission, defaults, knowledge stores, team references
38
- > and catalogs.
39
- > The local deployment resolves, installs, binds credentials and keeps state.
40
-
41
- ## 2. The problem this solves
42
-
43
- Today, a committed soul can depend on capabilities selected through an uncommitted
44
- parent workspace configuration. Cloning the soul's repository may not reveal where
45
- those essential capabilities come from. A capability ID alone is insufficient
46
- provenance. Absolute machine paths in soul definitions create another portability
47
- failure.
48
-
49
- Local directory-based discovery also assumes that people have similar checkouts
50
- under the same parent folder. It cannot discover a repository that is not present
51
- on the machine, and directory adjacency is not organizational admission.
52
-
53
- We want portable requirements, remote organizational discovery and explicit local
54
- setup instead of undocumented dependencies on the original operator's filesystem.
55
-
56
- ## 3. The model: related concepts, separate responsibilities
57
-
58
- | Concept | Responsibility |
59
- |---|---|
60
- | Soul | Durable expert definition: role, procedural curriculum and capability requirements. Not a running process. |
61
- | Instance | One incarnation of a soul, with its own home, task, effective composition and runtime identity. |
62
- | Capability | Reusable runtime surface: skills, instructions, commands/hooks, helper agents and requirements. It may implement a fundamental layer. |
63
- | Package | Acquisition/update unit exporting one or more capabilities, with contained payload and dependency declarations. |
64
- | Source repository | Versioned home of soul definitions, packages or other project material. |
65
- | Work target | Repository or directory an instance operates on; not necessarily the soul's source repository. |
66
- | Workspace definition | Git-hosted organizational authority for admitted repositories, defaults, discovery sources and team references. |
67
- | Local deployment | One operator's installed realization: local root, repository mappings, artifacts, locks, bindings, trust and state. |
68
- | Team | A selected provider's communication/coordination membership boundary. |
69
-
70
- One organizational workspace may have many teams and many local deployments.
71
- One instance may belong to several teams. Source location, installation location,
72
- work target and team membership must not be inferred from one another.
73
-
74
- ### Knowledge declarations and the provider-neutral envelope
75
-
76
- All durable knowledge remains external to souls. A soul records knowledge
77
- requirements using source-complete store locators or explicitly inherited bindings.
78
- The workspace advertises stores and a default provider; the deployment resolves
79
- locations and credentials. A resolved instance reads and harvests without fetching
80
- the workspace definition again. Installing a soul does not transplant an upstream
81
- owner registry.
82
-
83
- The kernel captures effective non-secret provider configuration and binding
84
- provenance with separate credential references. This envelope is provider-neutral:
85
- a replacement knowledge capability exposes its own required configuration and
86
- readiness through the capability contract, without being forced into OKF storage,
87
- node ownership or internal authoring policy.
88
-
89
- For the default provider (OKF), the conceptual declaration is:
90
- - `reads`: entries with a store and node, not globally ambiguous short names.
91
- - `owns`: entries with a node and optional destination. A missing destination
92
- inherits an **explicitly selected write binding**; if none is configured, report
93
- `needs configuration`. Every resolved node address includes its store.
94
- - Fixed source requirements and rebindable store defaults must be distinguishable.
95
-
96
- There is no one-store-per-soul invariant or newly imposed single-write-store limit.
97
- Each resolved node has one explicit steward, each promoted concept an explicit
98
- destination. Steward, proposing harvester and accepting maintainer are three
99
- roles: multiple instances/deployments can propose without acquiring conflicting
100
- ownership. Git knowledge delivery is a PR, public or private; a PR is not accepted
101
- until merged. Reading public knowledge never authorizes publication of adopter
102
- captures or notes. No new disclosure engine or per-agent ACL is implied.
103
-
104
- ## 4. Source-complete soul requirements
105
-
106
- A soul declares its essential capabilities with enough information to acquire
107
- them independently of a private upstream configuration.
108
-
109
- Illustrative soul declaration as **pseudoconfiguration**, not current runnable
110
- configuration (nesting requires parser/schema review):
111
-
112
- ```text
113
- name: market-research-expert
114
- requires:
115
- capabilities:
116
- example.market-research:
117
- source: git:github.com/example/marketing-capabilities@main#packages/research
118
- messaging: any
119
- defaults:
120
- tasks:
121
- capability: example.tasks
122
- source: git:github.com/example/task-capabilities@main#packages/tasks
123
- ```
124
-
125
- This identifies a capability, its source repository, a revision policy and the
126
- selected package root. The package must actually export that capability ID.
127
- The branch is a moving selector, not the installed artifact's identity.
128
-
129
- Organization catalogs can offer convenient names during authoring. The resulting
130
- portable requirement must retain resolvable provenance rather than depending only
131
- on a catalog nickname available on one machine.
132
-
133
- Supported sources can include:
134
- - A package in an organization-wide capability repository.
135
- - A package in a team-specific repository.
136
- - A third-party package outside the organization.
137
- - A package contained in the soul's own repository.
138
- - An explicitly local development package.
139
-
140
- Use `repo:packages/self-serve-dev` for a package at the **root of the soul's
141
- source repository at its retained snapshot**. Nested `agents/<name>/` directories,
142
- installation paths, caller cwd and work targets never change this base. `repo:`
143
- paths must remain contained in that snapshot, including after symlink resolution.
144
- Never use an ambiguous `./` source spelling in a portable soul declaration.
145
- Explicit `path:` references are honestly nonportable development inputs. The
146
- accepted `repo:` spelling is not yet a finalized parser/schema; containment and
147
- source normalization must be reviewed together.
148
-
149
- "Anywhere" means any supported transport delivering a valid package contract,
150
- not arbitrary executable download instructions. A downloaded repository does not
151
- become trusted merely because its files now have a local path.
152
-
153
- Keep three states distinct:
154
- 1. Available in a catalog.
155
- 2. Selected or required by a soul.
156
- 3. Configured and authorized for use by an instance.
157
-
158
- Catalog availability does not activate every capability. Install only the effective
159
- requirements and their dependency closure, not the entire organization's catalog.
160
-
161
- ### Portability is not possession of credentials
162
-
163
- A soul can carry the software needed to use a task service or knowledge store. It
164
- cannot carry another operator's credentials, team enrollment or machine paths.
165
- Those are deployment inputs. Missing required inputs produce an explicit
166
- `needs configuration` result, not a falsely successful launch.
167
-
168
- `requires` are constraints **every** successful composition satisfies; `defaults`
169
- are fallback values among permitted choices, rebindable by an operator or import
170
- entry. A generic `messaging: any` requirement can be satisfied by an adopter's
171
- provider, but supplies no software, credentials or private team by itself. An
172
- intrinsic implementation/source requirement cannot be erased by a default or
173
- operator override. Conflicting requirements fail with both origins reported.
174
- This is constraints plus fallback values, not competing configuration hierarchies.
175
-
176
- ### Importing an external soul by reference
177
-
178
- An external import has four conceptual fields (syntax remains for parser review):
179
-
180
- ```yaml
181
- imports:
182
- - source: git:github.com/example/public-experts
183
- soul: agents/research-expert
184
- revision: main
185
- alias: research
186
- adoption:
187
- teams: { experts: research-team }
188
- knowledge-destination: adopter-store
189
- tasks: example.tasks
190
- ```
191
-
192
- The fields are canonical source repository, exported soul path, revision selector
193
- and adopter-local alias. Adoption values above must resolve to explicit,
194
- source-complete bindings; short labels alone do not satisfy a requirement.
195
- Preparation retains the exact resolved source revision and **all source resources
196
- the soul needs**. Upstream soul identity (repository plus exported path), exact
197
- revision and local alias are distinct: changing an alias creates no new upstream
198
- soul; advancing a selector does not itself create a new running instance identity.
199
- Source moves need explicit provenance handling, never filename matching.
200
-
201
- Imports are **by reference, never by copy** into an adopter-maintained definition.
202
- The workspace may advertise an import without admitting its source repository or
203
- requiring the publisher's backlink. Standalone prepare accepts the same reference;
204
- private sources still require existing Git access. Persistent souls remain
205
- persistent souls, not ephemeral capability helpers.
206
-
207
- Import-entry adoption defaults are workspace-side, keyed to the **qualified
208
- upstream identity/reference**, not its short alias. They can bind extension points,
209
- map team aliases, choose default knowledge destinations and rebind providers, but
210
- cannot replace hard requirements. A team map advertises a destination, not
211
- enrollment. Explicit spawn choices may override adoption defaults within the same
212
- bounds. No copy, fork or second policy hierarchy is needed.
213
-
214
- ## 5. Workspace membership through reciprocal Git declarations
215
-
216
- A member repository's OATS config references the workspace repository by Git
217
- remote. The workspace definition explicitly admits that member repository.
218
-
219
- ```text
220
- member repository --declares membership in--> workspace repository
221
- member repository <--admitted by------------- workspace repository
222
- ```
223
-
224
- Neither declaration alone is enough. For an authenticated operator U:
225
-
226
- ```text
227
- eligible(U, repository, workspace) =
228
- U can read workspace
229
- AND U can read repository
230
- AND workspace admits repository
231
- AND repository identifies workspace
232
- ```
233
-
234
- This separates organizational admission from filesystem placement. It prevents a
235
- fork with an inherited backlink from automatically joining the original workspace.
236
- It also prevents an arbitrary sibling directory from becoming an organizational
237
- member merely because it is nearby.
238
-
239
- Use qualified repository/soul identities, not folder names or globally unique
240
- short soul names. Canonicalize equivalent Git remote spellings and retain provider
241
- repository identity where available. Renames, transfers and redirects must not
242
- silently select a different authority. Observe declarations at recorded revisions.
243
-
244
- Start with one workspace association per member repository. Multiple teams do not
245
- require multiple workspace associations. More elaborate federation or multi-workspace
246
- membership is a separate requirement, not implicit recursive config inheritance.
247
-
248
- ### Membership is different from consuming external sources
249
-
250
- Using a public capability does not make its repository an organization member.
251
- Similarly, a reusable public soul repository cannot backlink to every customer's
252
- workspace.
253
-
254
- An organization consumes a reviewed external soul through the by-reference import
255
- in section 4, never by copying it into a member repository. That does not admit
256
- the publisher. Local-only souls remain locally discoverable unless explicitly
257
- published through an appropriate mechanism.
258
-
259
- Reciprocal admission applies equally to project, experts, capabilities and
260
- knowledge repositories; source consumption of a package, soul or public knowledge
261
- store is never membership.
262
-
263
- ## 6. How discovery works without cloning everything
264
-
265
- The workspace definition contains:
266
- - Admitted member repositories.
267
- - Default fundamental-layer selections and non-secret organizational settings.
268
- - Knowledge stores and a default knowledge provider for discoverability.
269
- - Named team references, including the private-per-human choice.
270
- - Optional capability catalogs, package-index sources and external soul imports.
271
-
272
- Member repositories publish small declarative export indexes naming their exported
273
- souls and packages, descriptions and contained source paths. Exact field names and
274
- manifest placement remain to be agreed. Package manifests remain authoritative for
275
- the actual payload; catalogs only advertise sources.
276
-
277
- From any associated repository, a client can:
278
- 1. Read its workspace reference.
279
- 2. Fetch the workspace definition using the operator's existing GitHub access.
280
- 3. Validate admission and relevant reciprocal backlinks.
281
- 4. Read accessible repositories' small export indexes.
282
- 5. Present qualified souls and capabilities without downloading all source trees.
283
- 6. Fetch the selected soul/package and prepare work targets only when needed.
284
-
285
- Do not base this on recursive scans of every repository file, global code search,
286
- or executing repository scripts during discovery. Descriptors are data, not agent
287
- instructions. Validate schema, containment and resource limits before using them.
288
-
289
- At scale, cache per observed revision and authorization context, refresh changed
290
- indexes incrementally, and respect pagination, bounded concurrency and rate limits.
291
- Show inaccessible, unavailable or stale sources honestly. GitHub may intentionally
292
- not distinguish a hidden private repository from a nonexistent one.
293
-
294
- Start with client-side aggregation. A generated aggregate index is optional later;
295
- it must not broaden access to private descriptions merely to save requests.
296
- No metadata refresh silently updates already installed or running instances.
297
-
298
- ## 7. Access control: use GitHub, without overstating its guarantees
299
-
300
- GitHub supplies authentication and repository-content authorization. Workspace
301
- membership supplies organizational admission. Neither needs a second OATS user or
302
- repository-permission database.
303
-
304
- Read access permits discovery of accessible definitions. It does not grant write
305
- access to source repositories, approval to execute arbitrary hooks, membership in
306
- a messaging team, or access to cloud services. Those remain their respective
307
- systems' authority.
308
-
309
- Important limits:
310
- - A readable workspace allowlist can reveal private repository names/URLs even if
311
- the reader cannot open those repositories.
312
- - A broadly readable aggregate index must not copy protected soul descriptions.
313
- - Cached metadata must not be shared indiscriminately between authorization contexts.
314
- - Revoking access cannot erase files someone already cloned or information learned.
315
- - Offline cached information is last-known state, not proof of current membership.
316
-
317
- Use native GitHub repository permissions, reviews and branch protection rather
318
- than inventing an organization-wide OATS ACL engine. Choose metadata visibility
319
- intentionally and revalidate remote operations. Do not promise stronger secrecy
320
- or revocation than the underlying platform can provide.
321
-
322
- ## 8. Decentralized operation without another hosted control plane
323
-
324
- Authority and authorship are distributed across ordinary Git repositories:
325
- - Soul maintainers own their definitions.
326
- - Capability maintainers own their packages.
327
- - Workspace maintainers own organizational admission and defaults.
328
- - Operators own local deployments and their credentials.
329
-
330
- The organization needs no OATS-operated registry server, custom package registry,
331
- central discovery database, or always-running discovery daemon. Existing Git hosting
332
- and optional hosted CI can store, review and validate these declarations. A workspace
333
- repository is a logical coordination point, not a new service to operate.
334
-
335
- GitHub is the first discovery/access adapter. The model uses Git source references
336
- and should not require every package or future deployment to be GitHub-hosted.
337
-
338
- This is not a claim that the whole agent system is literally server-free. Instances
339
- still execute on machines; model APIs and selected messaging/task providers may be
340
- hosted services. Unattended work needs an available execution host. The benefit is
341
- that organizational discovery and package distribution add no new hosted OATS
342
- infrastructure requirement.
343
-
344
- Git discovery finds definitions. Live presence, contact routes and remote execution
345
- authority remain with messaging/execution providers. Do not put heartbeats or
346
- continuously changing instance state into Git.
347
-
348
- ## 9. Flexible placement, strong conventions
349
-
350
- An organization may choose:
351
-
352
- ```text
353
- workspace-definition repository
354
- admits engineering, marketing and project repositories
355
- advertises capability catalog sources
356
- defines default layers and team references
357
-
358
- engineering-capabilities repository
359
- several independently maintained package roots
360
-
361
- marketing-capabilities repository
362
- research, publishing and campaign packages
363
-
364
- marketing-souls repository
365
- market-research-expert and content-strategy-expert
366
-
367
- individual project repository
368
- its own experts and project-local capability packages
369
- ```
370
-
371
- Souls live in project repositories **first**, conventionally `agents/<name>/`, as
372
- many as the project needs. A separate experts repository is for expertise spanning
373
- repositories, not a compulsory central soul store. Name souls for expertise, not
374
- job titles. This is an example topology, not a required hierarchy. One repository
375
- may contain many packages; unrelated sources remain valid under the same contract.
376
- Do not distribute every organizational capability as one inseparable package unless
377
- that really is the intended update unit.
378
-
379
- OATS should provide conventional locations, templates, manifests, validators and
380
- onboarding skills. The current Git package-root default is `oats-package/`; explicit
381
- package paths remain supported. Keep canonical AGENTS.md with its CLAUDE.md alias,
382
- complete skill/reference closure, and contained package resources.
383
-
384
- Conventions make common cases easy. Explicit validated references make other
385
- arrangements possible. An onboarding expert should understand the details so users
386
- can ask for outcomes rather than learn the directory conventions themselves.
387
-
388
- ## 10. What installation does, and where it happens
389
-
390
- Reuse the existing OATS package engine. A capability installation materializes its
391
- manifest, skills/reference/script closure, injections, declared commands/hooks,
392
- helper agents and supported locked runtime dependencies. External host requirements
393
- are checked separately. Acquisition is not activation or executable approval.
394
-
395
- Select an explicit local deployment scope:
396
- 1. An already selected local workspace deployment, when present.
397
- 2. Otherwise the standalone repository/soul scope.
398
- 3. With no repository, an isolated deployment under user application data.
399
-
400
- A remote workspace locator is not a local path. Following it must not clone every
401
- member repo, create arbitrary parent directories or install machine-wide tools.
402
- Do not mix capability storage with an application's ordinary Node node_modules.
403
- A machine-wide download cache is optional optimization, not activation or authority.
404
-
405
- The baseline installer still replaces one flat `installed/<id>` artifact per
406
- capability per scope. The landed retention primitive additionally supports:
407
-
408
- ```text
409
- <deployment>/.agents/capabilities/artifacts/<capability-id>/sha256-<full digest>/
410
- ```
411
-
412
- It verifies bytes and provenance, publishes immutable A/B trees side by side,
413
- and neither selects nor approves them. The [retention contract](2026-09-14-artifact-retention-contract.md)
414
- owns its typed refusals and containment rules. Missing artifacts differ from
415
- invalid shape/store or integrity drift; damaged retained entries are never
416
- silently repaired. Publication uses same-filesystem staging/rename; it is not a
417
- hostile-host or power-loss guarantee.
418
-
419
- The accepted integration stores soul source artifacts **separately** under the
420
- explicit deployment, keyed by qualified source identity plus digest, with the same
421
- typed refusal/no-repair semantics. Retain the full required source closure, not
422
- just `soul.yaml` or a link to an author's checkout. Exact new wire versions and
423
- paths need schema review.
424
-
425
- A versioned **captured resolution**, stored outside instance homes, is the authority
426
- for each instance and independent execution. The deployment lock records **current
427
- choices for new preparation**, not an ambient authority for earlier work. Capture
428
- source identity/revision/alias; one artifact per capability ID and verification
429
- provenance; helpers, commands/hooks and managed runtime resources; non-secret
430
- configuration and per-choice provenance retaining hard constraints; provider-owned
431
- bindings with separate credential references; responsible human/private context
432
- key and wider-team choices. These last fields record choices, not fixed live
433
- membership or permission to read past conversations.
434
-
435
- Preparation resolves once per transaction, validates/fetches/materializes the
436
- closure, publishes every required artifact, then commits a complete resolution
437
- **before launch**. A failed preparation may leave valid unreferenced artifacts,
438
- but never a selectable partial resolution. Report installed / trusted / configured /
439
- enrolled separately and `needs configuration` for missing inputs. Neither
440
- acquisition nor artifact presence grants trust, activation or membership.
441
-
442
- Before core consumers import retention, extract tree-copy/digest/publication
443
- mechanics into a narrow **leaf** module; no dependency back into `core.mjs`, no
444
- policy or lifecycle logic. Then follow the retention contract's five consumer
445
- migration steps: explicit schema/store migration; acquisition/preparation wiring;
446
- new instance and queued-work capture; evidence-based old-record migration;
447
- removal of mutable-store lookups and reference-aware diagnostics/removal. This is
448
- one coordinated migration, not a permanent parallel resolver/store model.
449
-
450
- Existing records report `reconstructed`, `partial` or `unknown`, with evidence and
451
- unresolved inputs. Partial/unknown cannot pass as complete in CLI or later Desktop
452
- readiness. Verify old artifacts before retaining; never refetch a moving source
453
- and claim to recover an overwritten revision. Preserve running sessions and let
454
- owners choose restart boundaries.
455
-
456
- At that consumer-migration boundary, introduce a **versioned digest** covering file
457
- bytes, symlink targets and each regular file's executable flag normalized from
458
- owner execute, `(mode & 0o100) !== 0`, identically for Git and `path:` sources. Old
459
- digests remain explicitly verifiable and are never reinterpreted as mode-aware.
460
- Group/other execute and other mode bits stay outside identity. Do not rewrite
461
- modes during retention or infer entrypoints from free-form command strings. The
462
- landed primitive still uses the old bytes/symlink digest; the format bump is not
463
- claimed implemented.
464
-
465
- Provider state and accepted knowledge remain outside replaceable software artifacts.
466
- Remote persistent-soul acquisition preserves persistent-soul semantics; package
467
- transport does not make it an ephemeral helper. A standalone repository or a
468
- non-Git user-data deployment uses the same APIs, with no fake workspace required.
469
-
470
- ## 11. Versions and explicit freshness
471
-
472
- People should not have to select numbered versions routinely. Machines still need
473
- exact revisions to reproduce behavior and retire or recover instances safely.
474
- Current package manifests require numeric versions; this proposal does not silently
475
- remove that schema field or compatibility checks.
476
-
477
- A soul can track a defined branch/release channel or explicitly pin a revision.
478
- Resolve the policy once during preparation into an immutable full composition:
479
- source soul revision, workspace/default inputs, capability dependency closure,
480
- artifact identities and relevant non-secret binding provenance. Keep secrets out
481
- of shared locks and Git metadata.
482
-
483
- Observe a source/ref consistently within one resolution transaction. Do not advance
484
- it halfway through assembling an instance.
485
-
486
- Accepted v1 freshness:
487
- - Refresh the chosen channel on **explicit prepare or update**, once per transaction.
488
- - Show an available-unapproved revision beside the last-approved usable revision;
489
- never call the latter "latest". No discovery daemon or unattended trust service.
490
- - New instances may use a newly approved compatible resolution after that refresh.
491
- - Declarative skill changes are behavior-bearing and get a bounded visible change
492
- notice, but do not gain an executable-approval gate.
493
- - Existing instances and durable jobs keep their captured artifacts.
494
- - Explicit upgrades create a new validated composition, with state-migration checks.
495
- - Offline use is visibly last-known/approved, not claimed to be latest.
496
- - A failed required update is visible, not a falsely successful refresh.
497
-
498
- Different instances can select different revisions in the same workspace:
499
-
500
- ```text
501
- artifact A <- existing marketing instance
502
- artifact B <- new marketing instance and another compatible instance
503
- ```
504
-
505
- Identical artifacts are shared; distinct artifacts coexist. Exactly one artifact
506
- per capability ID is selected inside an individual instance. If one dependency
507
- closure requires conflicting artifacts for the same capability/command identity,
508
- report both requirement paths and fail until reconciled. Do not load both under
509
- one namespace or arbitrarily choose the newest. No general semver solver initially.
510
-
511
- Retain artifacts referenced by live instances, rollback or pending independent jobs,
512
- including retirement/recovery code needed after source deletion. Garbage collection
513
- must be reference-aware; conservative retention is preferable initially.
514
-
515
- Downloading during explicit preparation is not automatic trust. **Executable means
516
- commands, hooks or environment (`env`)**; any changed executable artifact requires
517
- fresh approval at its exact integrity/revision. Publisher continuity or `latest`
518
- grants nothing. V1 has **no unattended approval**; any future bounded policy needs
519
- a separate product decision, not an implementation shortcut. Unchanged artifacts
520
- need not be replaced merely because unrelated repository content changed.
521
-
522
- All lifecycle dispatch, restart, retirement, recovery and independent queued work
523
- use the captured resolution, never a newly read ambient lock/config. Retain source
524
- trees and resolutions as well as capability artifacts while referenced, including
525
- workers whose source has been deleted. Recurring schedules must state whether they
526
- capture composition or explicitly prepare on a later tick; capture is the proposed
527
- default pending policy review. Already queued executions never silently advance.
528
- No scheduler is activated by this design work.
529
-
530
- Immutability covers **OATS-managed software composition only**: not knowledge
531
- contents, credentials, live team memberships, the work repository, external services
532
- or host tools. Authorized credential rotation and membership changes do not upgrade
533
- software.
534
-
535
- Software rollback does not reverse external writes or database/knowledge schema
536
- migrations. Concurrent revisions sharing external state need provider compatibility.
537
- A security incident may require explicitly stopping or migrating an instance, not
538
- quietly overwriting the artifact underneath it.
539
-
540
- > Sources may move. Installed artifacts do not. Instances retain exact compositions.
541
-
542
- ## 12. Defaults, teams and identities
543
-
544
- ### Two authorities, one resolver
545
-
546
- Policy consists of workspace defaults and soul declarations. The workspace fills
547
- choices the soul leaves open; soul `requires` constrain all choices and `defaults`
548
- are fallbacks. Explicit operator choice (import-entry adoption defaults or spawn
549
- choice) may rebind defaults and bindings, never erase requirements. Import adoption
550
- is workspace-side configuration, not a third tier. Conflicts report both origins.
551
- There is **no repository capability-default tier and no agent-types/family entity**.
552
-
553
- Repository briefing (`agents-md-injection`) and worktree setup remain **work-target
554
- behavior**, selected from the repository actually worked on, not an imported soul's
555
- source repository. Applicable executable trust still applies. Directory work targets
556
- remain valid with no invented Git repository or organizational membership.
557
-
558
- An instance selects exactly one workspace context. Its imported soul's original
559
- organization contributes no second policy authority. Without a workspace, use
560
- explicit standalone bindings for unresolved requirements; `messaging: any` supplies
561
- neither a provider nor credentials nor a private team. Report missing bindings,
562
- not an unnamed implicit product default.
563
-
564
- ### Private-first choices, not a qualified privacy guarantee
565
-
566
- For messaging-enabled instances, the private team is keyed by a **provider-resolvable
567
- human identity plus qualified workspace identity**, reused across that person's
568
- machines. OS usernames, checkout paths and agent aliases are insufficient. Child
569
- and scheduled instances inherit their responsible human. Messaging-disabled workers
570
- need no team. Standalone deployments require an explicit context key instead of a
571
- nonexistent workspace identity.
572
-
573
- Wider teams the soul lists are opt-in **per instance**. An explicit wider set
574
- replaces wider defaults but retains the private floor. Team-alias mappings only
575
- advertise destinations; provider prerequisites and actual enrollment remain separate.
576
- A global instance identity holds multiple provider membership credentials and
577
- survives joining/leaving teams. Process, session and local deployment-record IDs
578
- are not global instance identities; team-qualified aliases are addresses, not
579
- replacement identity keys. Distinct incarnations of one soul are not automatically
580
- the same standing identity.
581
-
582
- **Catalog visibility, live-instance visibility, contact permission and conversation-
583
- history access are four separate grants.** Joining a wider team must not expose
584
- earlier private conversations or other private instances. These are intended
585
- boundaries, **not product privacy guarantees until a named messaging owner qualifies
586
- the provider behavior**. Ordinary members and administrators controlling a host or
587
- service are distinct access contexts; do not claim protection from administrators
588
- merely because team membership is private. Until qualification, capture private
589
- keys/contexts and wider-team references as choices only; do not certify enrollment
590
- or privacy on their presence.
591
-
592
- ### One default provider per slot is a v1 simplification
593
-
594
- Fundamental slots are knowledge, messaging and tasks. **Zero or one default
595
- provider per slot** is the v1 product simplification, not a universal capability
596
- limitation. Simultaneous Jira + GitHub is an explicit unsolved design test: can one
597
- default task interface coexist with another service integration, or does the task
598
- contract need named bindings? Do not call it solved or build a generalized
599
- multi-provider solver before that review.
600
-
601
- ## 13. User experience and implementation boundary
602
-
603
- A user should be able to say: "Prepare the marketing experts for this organization."
604
- The onboarding expert discovers accessible definitions, proposes the appropriate
605
- souls, fetches only needed sources, installs capabilities, resolves missing bindings,
606
- joins authorized teams and verifies a useful first task and its consumed output.
607
-
608
- The user should not need to understand package paths or artifact hashes. The result
609
- must nevertheless be inspectable through ordinary files, CLI and GUI diagnostics,
610
- without the setup expert or its original conversation remaining alive.
611
-
612
- Available before Portable Souls (OATS 0.23.1 machinery, preserved at the baseline):
613
- - Git/local package sources, selected package roots and dependency closure handling.
614
- - Capability materialization, exact locks, integrity checks and executable trust.
615
- - Scoped configuration, instance composition and lifecycle/provider boundaries.
616
-
617
- Landed at `428cd9af`: capability artifact retention only, with the binding contract.
618
- The installer, lock and runtime consumers are not migrated by that foundation.
619
-
620
- Accepted infrastructure additions/changes, NOT claimed implemented here:
621
- - Source-complete intrinsic capability requirements in portable soul declarations.
622
- - Git-hosted logical workspace association and reciprocal remote membership.
623
- - Remote exported-soul/package discovery and persistent-source preparation.
624
- - Multiple immutable revisions per deployment and per-instance resolution references.
625
- - The associated lock migration, default-resolution and update-policy integration.
626
- - Private-team choices and honest CLI readiness; actual messaging privacy requires
627
- provider qualification. Desktop feature/UX implementation comes later.
628
-
629
- Preserve working machinery. Do not replace the scheduler, create another IAM system,
630
- or introduce general federation/version-solving just to implement this proposal.
631
-
632
- ## 14. Delivery and acceptance
633
-
634
- Follow the dependency-ordered [implementation plan](2026-09-15-portable-souls-implementation.md),
635
- not the historical order of discussions. First reconcile these docs and extract
636
- the acyclic storage helpers; then versioned resolution/source retention and schema;
637
- then declarations, reciprocal discovery/import and preparation; then coordinated
638
- consumer/digest migration and CLI diagnostics. Messaging behavior is gated by a
639
- named owner and qualification. Desktop feature work is later.
640
-
641
- Acceptance must demonstrate (not just scaffold):
642
- - A fresh operator prepares without the author's private workspace config.
643
- - Two layouts discover the same accessible definitions, including uncloned repos,
644
- without installing discovery sources or running their scripts.
645
- - Forked/unadmitted repos stay out for every member kind; source consumption is
646
- not admission. Inaccessible/stale indexes neither leak protected descriptions
647
- nor imply readiness.
648
- - `repo:` resolves at the retained repository root, including nested souls;
649
- escaping/broken symlinks fail and `path:` is visibly nonportable.
650
- - Constraints beat defaults, source conflicts report both paths, and missing
651
- bindings/approval fail before unsafe execution. `env` alone needs approval.
652
- - Store-qualified nodes are unambiguous across stores; promotion has one explicit
653
- destination and steward. Other providers use their own configuration/readiness
654
- model. Public reads never silently become publication.
655
- - Multiple artifacts coexist, each instance selects one per ID, and the complete
656
- captured managed composition survives source/home deletion without ambient
657
- substitution. Historical migration evidence is honestly graded.
658
- - Explicit refresh shows last-approved and available-unapproved separately;
659
- failures/offline views never claim latest, and declarative changes remain visible.
660
-
661
- Three mandatory falsification scenarios from the accepted amendment:
662
- 1. **Portable adoption:** import the same public soul unchanged into an organization
663
- and a standalone no-Git work target. Read public knowledge, bind an explicit
664
- adopter write destination, and prepare without publisher workspace access.
665
- Verify canonical source identity and exact retained revision; no copy or false
666
- membership. Missing bindings report incomplete readiness.
667
- 2. **Private-first qualification:** two humans, two hosts each, one workspace.
668
- Reuse each private team across hosts; a child or scheduled instance inherits
669
- its human. Widen/narrow one representative without changing global identity or
670
- silently changing knowledge bindings. Verify catalog/live discovery, inbound
671
- contact and historical access separately, including other private instances
672
- and administrator limitations. Requires a named messaging owner; not yet passed.
673
- 3. **A/B dispatch:** old instance and independent queued job retain A while a new
674
- instance prepares approved B. Remove original source and prove A still executes
675
- its managed lifecycle/recovery resources; the current lock must not substitute
676
- B. Storage-only A/B execution is not this end-to-end proof.
677
-
678
- Useful outputs, accepted knowledge and fresh-reader visibility are separate from
679
- process launch or a delivered PR. Operational/live gates need their own evidence;
680
- this documentation update supplies none.
681
-
682
- ## 15. Remaining review gates, not reopened decisions
683
-
684
- - Parser/schema syntax for `repo:`, requires/defaults, store-qualified reads/owns,
685
- imports/adoption and exports; wire versions for lock/resolution/digest and the
686
- migration detail. Semantics are accepted; illustrative YAML is not a parser API.
687
- - Canonical remote handling across renames/transfers and qualified identity format;
688
- source moves require explicit provenance, not silent identity substitution.
689
- - Named messaging owner and qualification of private-team identity, discovery,
690
- contact/history boundaries and enrollment UX. No privacy claim before this gate.
691
- - Simultaneous Jira + GitHub test; no speculative multi-provider solver.
692
- - Recurring-schedule capture versus explicit reprepare policy wording; already
693
- queued work always retains its resolution. Unattended approval is not in v1.
694
-
695
- Resolve ambiguity with the human/contract reviewers before inventing semantics.
696
- Human authorization now permits infrastructure implementation under these bounds;
697
- it does not authorize integrating the held capture patch or bringing Desktop
698
- feature work forward.
699
-
700
- ## Current implementation references
701
-
702
- These provide baseline context, not proof that this proposal is implemented:
703
- - Package engine (`package-engine-contract.md`, removed in 0.26)
704
- - Package runtime API (`package-runtime-api.md`, removed in 0.26)
705
- - [Configuration](../configuration.md)
706
- - [Souls and instances](../souls-and-instances.md)
707
- - [Multi-team/deployment proposal](2026-09-08-expert-assisted-deployment-proposal.md)
708
- - [Execution targets](../execution-targets.md)