@awebai/oats 0.25.9 → 0.26.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 (177) hide show
  1. package/README.md +8 -6
  2. package/bin/oats.mjs +576 -1714
  3. package/capabilities/oats-authoring/oats-package.json +2 -2
  4. package/capabilities/oats-authoring/oats.json +2 -2
  5. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +46 -25
  6. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +13 -6
  7. package/capabilities/oats-aweb/bin/oats-aweb.mjs +279 -93
  8. package/capabilities/oats-aweb/injects/aweb.md +7 -2
  9. package/capabilities/oats-aweb/lib/binding-wire.mjs +89 -13
  10. package/capabilities/oats-aweb/lib/captured-native.mjs +1 -1
  11. package/capabilities/oats-aweb/lib/grant-custody.mjs +38 -0
  12. package/capabilities/oats-aweb/oats.json +8 -4
  13. package/capabilities/oats-jira/bin/oats-jira.mjs +4 -4
  14. package/capabilities/oats-jira/oats.json +2 -2
  15. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +6 -3
  16. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +6 -4
  17. package/capabilities/oats-linear/oats.json +2 -2
  18. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +6 -0
  19. package/capabilities/oats-review/oats.json +3 -2
  20. package/docs/capabilities.md +218 -47
  21. package/docs/capability-manifest.schema.json +13 -4
  22. package/docs/configuration.md +17 -5
  23. package/docs/conventions.md +16 -26
  24. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +1 -1
  25. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +3 -3
  26. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +2 -2
  27. package/docs/design/2026-09-15-portable-souls-handoff.md +2 -2
  28. package/docs/design/2026-09-15-portable-souls-implementation.md +1 -1
  29. package/docs/design/2026-09-20-redesign-program-board.md +2 -2
  30. package/docs/design/2026-09-23-workspace-module-contracts.md +1 -1
  31. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +1 -1
  32. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +34 -1
  33. package/docs/design/2026-09-24-phase-d-plan.md +57 -0
  34. package/docs/design/2026-09-25-teams-contract.md +226 -0
  35. package/docs/design/README.md +3 -3
  36. package/docs/design/launch-configurations.md +20 -16
  37. package/docs/design/operations-contract.md +27 -10
  38. package/docs/desktop-cli-api.md +537 -261
  39. package/docs/desktop-instance-start.md +1 -1
  40. package/docs/desktop.md +7 -13
  41. package/docs/execution-targets.md +16 -18
  42. package/docs/first-team.md +14 -17
  43. package/docs/implementation.md +28 -59
  44. package/docs/integrations.md +64 -33
  45. package/docs/knowledge-capability-authoring.md +1 -1
  46. package/docs/knowledge-reference/package-craft.md +10 -8
  47. package/docs/knowledge-theory.md +1 -1
  48. package/docs/knowledge.md +10 -11
  49. package/docs/layers.md +16 -17
  50. package/docs/oats-local.schema.json +29 -1
  51. package/docs/oats-membership.schema.json +5 -3
  52. package/docs/oats-package.schema.json +2 -2
  53. package/docs/oats-workspace.schema.json +1 -1
  54. package/docs/{official-marketplace.md → official-catalog.md} +15 -16
  55. package/docs/packages.md +75 -52
  56. package/docs/release-notes/v0.22.0.md +1 -1
  57. package/docs/release-notes/v0.23.1.md +1 -1
  58. package/docs/release-notes/v0.26.0.md +670 -0
  59. package/docs/schedules.md +48 -126
  60. package/docs/soul.schema.json +11 -4
  61. package/docs/souls-and-instances.md +56 -43
  62. package/docs/workspaces.md +80 -58
  63. package/injects/instance-boundary.md +1 -1
  64. package/injects/work-attached.md +1 -1
  65. package/injects/work-workspace.md +2 -2
  66. package/lib/{portable-files.mjs → bounded-read.mjs} +6 -6
  67. package/lib/{portable-values.mjs → canonical-json.mjs} +3 -12
  68. package/lib/capability-contract.mjs +110 -0
  69. package/lib/config-data.mjs +2 -2
  70. package/lib/core.mjs +700 -4824
  71. package/lib/digest.mjs +12 -0
  72. package/lib/instance-inspect.mjs +396 -0
  73. package/lib/instance-lifecycle.mjs +3 -4
  74. package/lib/instance-resolution.mjs +212 -26
  75. package/lib/instruction-composition.mjs +0 -20
  76. package/lib/materialize.mjs +6 -4
  77. package/lib/operator-dispatch.mjs +33 -13
  78. package/lib/packages.mjs +25 -190
  79. package/lib/provider-binding.mjs +4 -2
  80. package/lib/provider-reasons.mjs +3 -68
  81. package/lib/resolve.mjs +204 -68
  82. package/lib/schedule.mjs +97 -272
  83. package/lib/servers.mjs +13 -13
  84. package/lib/{portable-shape.mjs → shape.mjs} +4 -3
  85. package/lib/tree-copy.mjs +44 -0
  86. package/lib/workspace.mjs +125 -20
  87. package/package-catalog.json +6 -6
  88. package/package.json +1 -1
  89. package/skills/integration-authoring/SKILL.md +48 -40
  90. package/skills/oats-getting-started/SKILL.md +105 -110
  91. package/skills/oats-support/SKILL.md +2 -2
  92. package/skills/soul-craft/SKILL.md +13 -6
  93. package/bin/oats-pi-sdk-host.mjs +0 -17
  94. package/docs/2026-09-03-architecture-proposal.md +0 -642
  95. package/docs/artifact-approvals.schema.json +0 -7
  96. package/docs/captured-invocation-context.schema.json +0 -7
  97. package/docs/captured-resolution.schema.json +0 -7
  98. package/docs/design/package-engine-contract.md +0 -813
  99. package/docs/design/package-runtime-api.md +0 -588
  100. package/docs/desktop-succession.md +0 -57
  101. package/docs/execution-capsule.schema.json +0 -108
  102. package/docs/first-team-demo.md +0 -92
  103. package/docs/knowledge-migration.md +0 -147
  104. package/docs/migration-from-oas.md +0 -103
  105. package/docs/oats-config.schema.json +0 -172
  106. package/docs/oats-lock-v3.schema.json +0 -7
  107. package/docs/oats-lock.schema.json +0 -175
  108. package/docs/operating-team-migration.md +0 -470
  109. package/docs/portable.schema.json +0 -2512
  110. package/docs/provider-check-input.schema.json +0 -7
  111. package/docs/rebuild-to-v2.md +0 -511
  112. package/docs/workspace-adoption.md +0 -74
  113. package/injects/framework-workspace.md +0 -7
  114. package/injects/local-soul.md +0 -19
  115. package/injects/oats-portable.md +0 -20
  116. package/injects/oats.md +0 -11
  117. package/injects/portable-instance-boundary.md +0 -39
  118. package/injects/portable-work-directory.md +0 -29
  119. package/lib/artifact-approvals.mjs +0 -120
  120. package/lib/artifact-tree.mjs +0 -141
  121. package/lib/capability-artifacts.mjs +0 -179
  122. package/lib/capability-execution.mjs +0 -15
  123. package/lib/capability-inputs.mjs +0 -39
  124. package/lib/capability-provenance.mjs +0 -231
  125. package/lib/captured-action-shape.mjs +0 -21
  126. package/lib/captured-admission-shape.mjs +0 -20
  127. package/lib/captured-binding-file.mjs +0 -36
  128. package/lib/captured-dispatch.mjs +0 -66
  129. package/lib/captured-instance-index.mjs +0 -277
  130. package/lib/captured-invocation-context.mjs +0 -130
  131. package/lib/captured-launch-request.mjs +0 -66
  132. package/lib/captured-operation-process.mjs +0 -15
  133. package/lib/captured-pi-custody.mjs +0 -29
  134. package/lib/captured-pi-host.mjs +0 -167
  135. package/lib/captured-pi-outcome.mjs +0 -172
  136. package/lib/captured-resolutions.mjs +0 -275
  137. package/lib/captured-scaffold.mjs +0 -87
  138. package/lib/captured-selector.mjs +0 -28
  139. package/lib/captured-session-backend.mjs +0 -52
  140. package/lib/captured-source-receipt-file.mjs +0 -72
  141. package/lib/helper-injection-policy.mjs +0 -104
  142. package/lib/legacy-lock-codec.mjs +0 -106
  143. package/lib/manifest-settings.mjs +0 -84
  144. package/lib/package-closure.mjs +0 -48
  145. package/lib/package-materialization.mjs +0 -83
  146. package/lib/pi-sdk-host.mjs +0 -229
  147. package/lib/portable-artifacts.mjs +0 -115
  148. package/lib/portable-choices.mjs +0 -82
  149. package/lib/portable-composition.mjs +0 -136
  150. package/lib/portable-digest.mjs +0 -105
  151. package/lib/portable-identity.mjs +0 -40
  152. package/lib/portable-lock.mjs +0 -117
  153. package/lib/portable-onboarding-request.mjs +0 -49
  154. package/lib/portable-onboarding.mjs +0 -256
  155. package/lib/portable-package-preparation.mjs +0 -188
  156. package/lib/portable-policy.mjs +0 -44
  157. package/lib/portable-soul.mjs +0 -42
  158. package/lib/portable-state.mjs +0 -80
  159. package/lib/prepare-composition.mjs +0 -170
  160. package/lib/prepared-bindings.mjs +0 -92
  161. package/lib/prepared-resources.mjs +0 -127
  162. package/lib/provider-binding-broker.mjs +0 -65
  163. package/lib/provider-binding-wire.mjs +0 -116
  164. package/lib/readiness.mjs +0 -225
  165. package/lib/repository-observation.mjs +0 -226
  166. package/lib/resolution-shape.mjs +0 -393
  167. package/lib/schedule-capsule.mjs +0 -206
  168. package/lib/soul-constraints.mjs +0 -40
  169. package/lib/source-projection.mjs +0 -84
  170. package/lib/source-spec.mjs +0 -189
  171. package/lib/workspace-definition.mjs +0 -126
  172. package/lib/workspace-discovery.mjs +0 -146
  173. package/skills/oats/SKILL.md +0 -162
  174. package/skills/oats-config/SKILL.md +0 -164
  175. package/skills/oats-packages/SKILL.md +0 -184
  176. package/skills/oats-portable/SKILL.md +0 -115
  177. package/skills/oats-portable-artifacts/SKILL.md +0 -63
@@ -1,175 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://oats.dev/schemas/oats-lock.schema.json",
4
- "title": "OATS lockfile (oats-lock.json)",
5
- "description": "Scope-local lockfile. lockfileVersion 2 records BOTH levels of the capability-materialization model: `packages` locks the transport unit (exact source + commit + selected root + payload integrity + package-identity dependencies) and `capabilities` locks the installed entity (the materialized artifact under .agents/capabilities/installed/<id>/, its provider package, its dedicated manifest path inside that package, its artifact integrity, and its executable trust). Both maps are REQUIRED. lockfileVersion 1 (per-capability marketplace locks) remains readable and usable and converts only through explicit migration. The earlier transitional package-root spelling of lockfileVersion 2 — package rows carrying `capabilities`/`trustedCapabilities`/`depsIntegrity`, and/or no top-level capability map — is UNSUPPORTED: it is rejected as an invalid lock, never converted and never partially interpreted. A lock never advances silently on restore.",
6
- "type": "object",
7
- "required": [
8
- "lockfileVersion"
9
- ],
10
- "oneOf": [
11
- {
12
- "title": "lockfileVersion 2 — package provenance + materialized capability identity",
13
- "type": "object",
14
- "required": [
15
- "lockfileVersion",
16
- "packages",
17
- "capabilities"
18
- ],
19
- "properties": {
20
- "lockfileVersion": {
21
- "const": 2
22
- },
23
- "packages": {
24
- "description": "Map of package identity → exact provenance of the transport unit for the full dependency closure at this scope. A package row proves WHERE the bytes came from; it does not describe an installed directory, because there is no persistent package store. Which capabilities a package supplies is read off the `capabilities` map's `package` back-reference, so the two levels can never disagree — a package row carrying a capability list, a trust list, or a dependency-closure digest is the unsupported transitional shape.",
25
- "type": "object",
26
- "propertyNames": {
27
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
28
- },
29
- "additionalProperties": {
30
- "type": "object",
31
- "required": [
32
- "source",
33
- "path",
34
- "version",
35
- "commit",
36
- "integrity",
37
- "dependencies"
38
- ],
39
- "properties": {
40
- "source": {
41
- "description": "Normalized acquisition source, in EXACTLY the writer's grammar: git:<url>@<ref>, path:<absolute-dir>, catalog:<id> for an originally bare catalog request, or catalog:<id>@<selector> for an originally explicit selector (the resolved commit is separate; official catalog identity grants no executable trust). It never carries a \"#<path>\" fragment — the selected package root is the entry's own \"path\" field. Parsed strictly: a payload that merely starts with a known scheme but is not valid for that kind (catalog:../evil, path:relative/dir) is an invalid lock, because update and the locked-template reader re-derive a source spec from this string and would reclassify it.",
42
- "type": "string",
43
- "pattern": "^(catalog:[a-z0-9][a-z0-9._-]*(@[^#]+)?|path:/[^#]*|git:(https?://|file://|git@|ssh://|git://)[^#]+)$"
44
- },
45
- "path": {
46
- "description": "Canonical, repository-relative path of the SELECTED package root inside the source (the directory carrying oats-package.json). \".\" is the canonical spelling of the source root; git/catalog sources default to \"oats-package\" when the source contract selects nothing; path: sources are exact directories and always record \".\". Never normalized or repaired on read — a non-canonical spelling is an invalid lock. Only `oats update` may change it.",
47
- "type": "string",
48
- "pattern": "^(\\.|(?!~)(?![A-Za-z]:[/\\\\])(?!\\.\\.?(/|$))[^/\\\\]+(/(?!\\.\\.?(/|$))[^/\\\\]+)*)$",
49
- "minLength": 1
50
- },
51
- "version": {
52
- "description": "Version from the locked oats-package.json.",
53
- "type": "string",
54
- "minLength": 1
55
- },
56
- "commit": {
57
- "description": "Exact git commit the package was acquired at (40-hex). For path: sources this is the string \"local\".",
58
- "type": "string",
59
- "pattern": "^([0-9a-f]{40}|local)$"
60
- },
61
- "integrity": {
62
- "description": "sha256 tree hash of the validated package PAYLOAD (the selected package root as fetched, before capability projection). It proves the exact distribution bytes and is what bare restore re-verifies before reprojecting. Materialized node_modules are excluded here — a capability's runtime closure is part of its own materialized artifact integrity.",
63
- "type": "string",
64
- "pattern": "^sha256-[0-9a-f]{64}$"
65
- },
66
- "dependencies": {
67
- "description": "Package identities of direct dependencies, each a key of this lock's packages map. ALWAYS recorded — an empty array when the package has none, so a reader never has to distinguish absent from empty. Package-identity references only, never source strings.",
68
- "type": "array",
69
- "items": {
70
- "type": "string",
71
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
72
- },
73
- "uniqueItems": true
74
- }
75
- },
76
- "additionalProperties": false
77
- }
78
- },
79
- "capabilities": {
80
- "description": "Map of capability ID → the materialized installed entity at .agents/capabilities/installed/<id>/. REQUIRED (empty object when the scope locks nothing). Every entry names the package that supplied it; that package MUST be a key of this lock's `packages` map.",
81
- "type": "object",
82
- "propertyNames": {
83
- "minLength": 1
84
- },
85
- "additionalProperties": {
86
- "type": "object",
87
- "required": [
88
- "version",
89
- "package",
90
- "path",
91
- "integrity",
92
- "trusted"
93
- ],
94
- "properties": {
95
- "version": {
96
- "description": "Version from the capability's own oats.json (independent of the provider package's version).",
97
- "type": "string",
98
- "minLength": 1
99
- },
100
- "package": {
101
- "description": "Identity of the provider package; must be a key of this lock's `packages` map.",
102
- "type": "string",
103
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
104
- },
105
- "path": {
106
- "description": "Canonical, package-relative path of the capability's DEDICATED root inside the provider package — the directory carrying its oats.json. Records exactly what was projected, so a package that moves a capability root is visible as a change. \".\" occurs only for an already-published legacy package whose capability root is the package root; newly authored packages use dedicated roots such as \"capabilities/<slug>\".",
107
- "type": "string",
108
- "pattern": "^(\\.|(?!~)(?![A-Za-z]:[/\\\\])(?!\\.\\.?(/|$))[^/\\\\]+(/(?!\\.\\.?(/|$))[^/\\\\]+)*)$",
109
- "minLength": 1
110
- },
111
- "integrity": {
112
- "description": "sha256 tree hash of the MATERIALIZED capability artifact — every byte under .agents/capabilities/installed/<id>/, including its generated .oats-installation.json provenance file and its materialized runtime closure (node_modules). This is the only thing executable trust binds to.",
113
- "type": "string",
114
- "pattern": "^sha256-[0-9a-f]{64}$"
115
- },
116
- "trusted": {
117
- "description": "Whether this capability's executable surface (commands, hooks, and launch-environment authority) is approved at exactly this artifact integrity. Reset to false whenever the artifact integrity changes. Official catalog identity never grants it; there is no package-level approval.",
118
- "type": "boolean"
119
- }
120
- },
121
- "additionalProperties": false
122
- }
123
- }
124
- },
125
- "additionalProperties": false
126
- },
127
- {
128
- "title": "lockfileVersion 1 — legacy per-capability marketplace locks (readable and usable; converts only through explicit migration)",
129
- "type": "object",
130
- "required": [
131
- "lockfileVersion",
132
- "capabilities"
133
- ],
134
- "properties": {
135
- "lockfileVersion": {
136
- "const": 1
137
- },
138
- "capabilities": {
139
- "type": "object",
140
- "additionalProperties": {
141
- "type": "object",
142
- "required": [
143
- "source",
144
- "version",
145
- "integrity"
146
- ],
147
- "properties": {
148
- "source": {
149
- "description": "marketplace:<id>@<version>, git:<url>, or path:<dir>.",
150
- "type": "string",
151
- "minLength": 1
152
- },
153
- "version": {
154
- "type": "string",
155
- "minLength": 1
156
- },
157
- "commit": {
158
- "type": "string"
159
- },
160
- "integrity": {
161
- "type": "string",
162
- "pattern": "^sha256-[0-9a-f]{64}$"
163
- },
164
- "trustedExecutables": {
165
- "type": "boolean"
166
- }
167
- },
168
- "additionalProperties": true
169
- }
170
- }
171
- },
172
- "additionalProperties": false
173
- }
174
- ]
175
- }
@@ -1,470 +0,0 @@
1
- # Full operating-team migration
2
-
3
- Operating record, updated 2026-09-06. Juan asked lead to discuss the migration with
4
- Merlin and plan for all teams on this machine to be managed by OATS, with
5
- harvesting fully working. This expands the earlier release/configuration
6
- rollout. It does not describe an already completed migration.
7
-
8
- The cjr runbook is owned by Merlin at
9
- `~/cjr/agents/docs/2026-09-05-oats-migration.md`. This document records the
10
- shared framework work and the wider rollout.
11
-
12
- Fresh identities are authorized for continuing seats as well as specialists and
13
- reviewers. Preserve the accepted retained-identity choice where it is useful.
14
- Merlin retains
15
- both `cjr.aweb.ai/merlin` and his existing durable DID. Aweb clarified that
16
- re-minting the same address changes identity and breaks continuity; the supported
17
- path is an explicit transfer of his existing authority with one live process.
18
- Other teams' retained identities follow the same requirement where applicable.
19
-
20
- An isolated check against installed 0.22.1 confirmed that an explicit
21
- existing spawn destination is refused without changing its instructions or
22
- uncommitted notes. Purpose-based naming chooses an unused suffix. The old
23
- cjr respawn-clobber report therefore is not reproduced by this journey;
24
- identity adoption and concurrent handover still need their own tests.
25
-
26
- ## Completion means operating teams
27
-
28
- Every continuing seat must have a supported OATS launch, composition,
29
- status, handover and retirement path. Its outstanding work, knowledge and
30
- required skills must survive a change of runtime session; identity/address
31
- continuity follows the explicit policy for that seat.
32
- Every remembering role must have a tested learning path. Preserve each role's
33
- explicit policy: Cjr reviewers exclude accumulated memory; Themis uses
34
- reviewed learning. Config discovery alone establishes none of this.
35
-
36
- The installed CLI baseline is published OATS 0.22.7 on this Mac and `aweb-agents`,
37
- including native Pi/Claude/Codex, tmux/Herdr, shared `yolo`, remote Desktop
38
- roster/actions, retained-authority binding and corrected deferred retirement.
39
- The installed Mac Desktop 0.22.7 passed published ZIP checksum and strict deep
40
- codesign. Its controlled single-instance check passed and the app was closed
41
- afterwards, with all owned processes verified gone. The previous 0.22.6 app
42
- is preserved for rollback; earlier renderer/PTY checks remain version-specific.
43
- Official oats.okf 1.5.1 is published after independent
44
- review, adding harvest-runtime selection and detection of unadvanced record
45
- plans. Each deployment selects an authenticated harness; without an explicit
46
- harvest-model, that harness uses its own configured default. Some prepared
47
- teams still use the compatible 1.5.0 package; preserve the exact versions of
48
- each earlier qualification. Follow-up 1.5.2 is now published with truthful
49
- failure exits, harmless help and repeat-harvest branch reuse. BeadHub's actual
50
- deployment has been updated and re-trusted at 1.5.2; its previous lock was 1.5.0.
51
-
52
- BeadHub, Minerva and Merlin now have managed standing executions with retained
53
- identities. BeadHub and Minerva passed separate mail/chat checks; Merlin verified
54
- his identity and preserved claims, then received and replied to Minerva's real
55
- mail through the host wake path. Frontend also has a managed execution with
56
- separate mail/chat proof and reviewed knowledge promotion. This is not completion
57
- of all teams: TSM is held, Docflow still has a running backfill, and normal
58
- coordinator learning remains queued. The final lead handover is accepted.
59
- See the current status below;
60
- older evidence records keep the version and outcome of each earlier check.
61
-
62
- ## Current status and operating limits (2026-09-06)
63
-
64
- Juan requires completion without exhausting the machine again. **Do not disturb
65
- TSM until its deployment is finished.** No TSM runtime, configuration, identity,
66
- or handover operation is authorized during that boundary. Wait for Zeus's
67
- explicit deployment-complete report; earlier cutover sequencing below is
68
- superseded by this condition.
69
-
70
- The first broad rollout produced overlapping record-capture processes: each
71
- could index the large local store, with individual processes exceeding 2 GB
72
- RSS. The capture watcher was about 1.7 GB. The experimental mind follow service
73
- also consumed substantial CPU/memory and launched model runs. These are observed
74
- contributors, not a complete accounting of the reported GUI memory incident;
75
- no OATS Desktop process remained when lead took the incident snapshot.
76
-
77
- Lead stopped the capture watcher and residual capture passes, disabled their
78
- exact Claude hooks, and stopped the experimental mind follow service. Settings,
79
- service definitions, raw records and learning state are preserved. Continue
80
- with one bounded operation at a time, checking memory between
81
- launches; declining swap alone does not prove sustained stability. Published
82
- 0.22.6 prevents overlapping capture passes with a conservative lock that never
83
- steals an existing owner; interrupted owners require explicit recovery. Its
84
- measured full pass still exceeded a 2 GiB RSS budget during indexing and was
85
- stopped by the monitor. The follow-up streams journal entries instead of loading
86
- whole arrays. The independently reviewed candidate completed the real index of
87
- 1.74 million turns in 41.6 seconds, at 809.5 MiB peak RSS with normal memory
88
- pressure, under a 256 MiB Node old-space budget. That fix is now published and
89
- installed in 0.22.7. The replacement launchd job runs one background pass every
90
- 15 minutes, without per-tool hooks or a permanent watcher. Its first real pass
91
- completed in 101 seconds at 746 MiB peak RSS, with index completion and zero
92
- aw-log projection failures. The reviewed operator wrapper stops its own child
93
- on a 2 GiB RSS limit, two elevated memory-pressure samples, or a five-minute
94
- deadline. It records each run atomically in
95
- `~/.local/state/oats/capture/status.json`, retaining the previous success time
96
- through failures. Idle between passes is normal. Interrupted capture locks
97
- still need explicit owner-checked recovery; the wrapper reports the remedy.
98
- Experimental mind follow remains paused.
99
-
100
- | Scope | Verified state | Next boundary |
101
- | --- | --- | --- |
102
- | Host services | Published aw 1.36.1 installed; normal launchd wake service on Mac and enabled user service on `aweb-agents`; private broker stopped | Investigate repeated reconnect hints and reported read timing without assuming the broker acknowledged mail |
103
- | BeadHub | `beadhub-seat`, retained DID/address and claims; native Codex; independent mail/chat; trusted OKF 1.5.2 and aweb 1.10.3; repeat harvest promoted all four notes and retired cleanly | PR #2 at `a111a222` independently reviewed and merged; canonical deployment checkout fast-forwarded with untracked data preserved, so the live soul sees the six-concept bundle |
104
- | Cjr | `accountant-minerva` and `coordinator-merlin` live on retained identities; old holders stopped first; claims preserved; real delivery and reviewed learning recorded | Log `5bfeefd1` and corrected librarian knowledge `6c91f986` landed with user edits preserved; librarian retired with alias reusable; Merlin's own harvest and health-reader follow-up remain queued |
105
- | Aweb | Retained `coordinator-aweb` and fresh `frontend-oats` both passed independent mail/chat; frontend knowledge `d649d729` reviewed and landed | Old holders stopped with their channel children before replacement; metadata repair and encryption-key findings tracked separately, with repeated wake-hint diagnosis in progress |
106
- | TSM | Prepared souls and owner checkpoints; Themis setup failed before the current hold | **No migration work until Zeus reports deployment finished**; re-inventory with its owner afterwards |
107
- | Docflow | Legacy seat and actual mail backfill remain running | Finish backfill and register checks; owner restores mail-ingest afterwards; accountant-sync remains unloaded under its separate export fence |
108
- | Oats/lead | Retained `oats-coordinator-coordinator` passed independent mail wake; fresh team-local `lead-operating-lead` passed separate idle-to-wake mail fetch/reply after verified predecessor stop; root packages trusted at OKF 1.5.2 and aweb 1.10.3 | BeadHub accepted the lead and transferred the still-open rollout epic; Oats's provider capacity, historical lead claim reconciliation, coordinator learning and preserved recovery lessons remain follow-ups; cross-team updates use retained global relays |
109
- | Remote qualification | Published host service delivered native Claude mail/chat through Herdr; corrected knowledge independently reviewed; source retired with `aliasReusable: true` | Earlier separate fresh-reader cycle passed; latest corrected wake-specific retrieval is still pending |
110
-
111
- Published aw 1.36.1 is tagged at `bfdb20886080e4ffe1f02b266f6116d12bd100fd`.
112
- All 46 release targets have passing results for that source: targets 1–41 in
113
- one run, followed by an explicitly accepted continuation of 42–46 after a Go
114
- download failure. This was not one atomic run. Evidence is archived under
115
- `~/awebai/bookshelf/records/2026-09-05-aw-1.36.1-split-gate/`.
116
- Production same-alias join/delete/rejoin passed, and official oats.aweb 1.10.2
117
- reports the released alias result truthfully. Retained standing-seat retirement
118
- must still preserve authority.
119
-
120
- Desktop has six validated team roots saved as workspace suggestions,
121
- not six running GUI instances. It starts with one workspace and can add others.
122
- It is currently closed; visual QA and sustained multi-workspace memory behavior
123
- are not claimed. Version 0.22.6 added a single-instance guard and 0.22.7 runs the
124
- packaged backend as Node. An installed 0.22.7 check served the Oats workspace API;
125
- a second launch exited successfully while the primary remained, with both
126
- owned process groups peaking at 589 MiB and normal memory pressure. All test
127
- processes were stopped and verified absent. The full release gate and all three
128
- Desktop builds passed on hosted runners; publication succeeded, and the bot's
129
- version-bump PR permission failure was resolved through reviewed manual PR #8.
130
- Native remote Pi authentication and remote Codex remain
131
- unqualified; the accepted remote harness is Claude.
132
-
133
- ## Scope inventory
134
-
135
- Reconfirm the live inventory with each owner at handover; process presence
136
- and old directories are evidence to investigate, not the authoritative list
137
- of continuing seats.
138
-
139
- | Scope | Starting point | Required disposition |
140
- | --- | --- | --- |
141
- | `~/awebai/oats` | Live Claude coordinator and Codex lead; managed review workers also running | Oats owns coordinator handover; lead owns lead handover; follow the explicit fresh or retained identity choice |
142
- | `~/cjr` | Preparation `5afb3e8b`; developer pilot landed on master `062e2c75`; legacy Merlin and Minerva live | Merlin owns safe handovers; preserve his DID/address; automatic harvest completion and successor use are proven; prepare standing seats |
143
- | `~/awebai/aweb` | Live Claude coordinator and frontend in legacy homes | Oats owns coordinator handover; lead coordinates frontend with aweb after its current work; handover task responsibility and cover child repositories |
144
- | `~/tsm` | Five live seats: Zeus, Prometeo, Argos, Themis on Claude; Hermes on Codex. All five souls integrated, official capabilities installed and trusted, owner checkpoints prepared | Paused by Juan until deployment complete; owner rechecks all seats afterwards; preserve schedules and production authority |
145
- | `~/prj/beadhub-all` | Live Codex session, despite stale offline roster | Beadhub accepted preparation and is at a safe boundary; retain its global identity, native Codex and separate canonical code roots under `~/awebai/beadhub`; billing remains separately gated |
146
- | `~/prj/docflow` | Live Claude seat identified itself as local `juan.aweb.ai/alice` on `docflow:juan.aweb.ai` | Owner Juan; finish running mail backfill and register checks before transfer; retain identity, memory and Minerva route; accountant-sync remains deliberately unloaded |
147
- | `ai.aweb` on `aweb-agents` | Aweb confirms Athena intentionally inactive; remote legacy home retained | Aweb and oats own archival inspection; do not resurrect as a continuing seat |
148
- | `~/awebai/demo-aweb/bob` | Live Pi demo | Aweb owns safe stop and archival disposition; it is not an operating-team migration |
149
- | `~/.turn-record` | Guarded periodic capture enabled and measured; per-tool hooks and experimental mind follow remain disabled | Preserve records; monitor the run artifact; no blind watcher restart |
150
-
151
- The starting inventory above was checked on 2026-09-05 using harness process
152
- working directories and exact custom tmux sockets, without interrupting them.
153
- TSM uses its aweb tmux socket, BeadHub the awebai socket, and Docflow the
154
- main socket. Lead delivered explicitly attributed coordination messages to
155
- those identified harnesses and read their replies; no coordination command
156
- was run as another seat. Old aweb presence timestamps
157
- are insufficient to decide whether a harness is alive. A migration plan or
158
- new soul directory does not establish that the corresponding seat moved.
159
-
160
- Grace's missing old local path and the offline retirement, docs, bertha,
161
- cowork, federation, membership-review, aazb-reviewer, id-bugs, billing and
162
- claweb entries are archival investigations, not launch requests. Preserve
163
- homes until their work and authority have a recorded disposition. Do not
164
- bulk-delete aliases based on roster age; certificate cleanup belongs to the
165
- aweb lifecycle fix and its verified recovery procedure.
166
-
167
- ## Shared prerequisites and owners
168
-
169
- Oats coordinates framework/package work and the machine-wide inventory.
170
- Lead independently reviews the design and concrete journey evidence. Merlin
171
- owns cjr's repository changes, task selection and eventual handovers. Other
172
- teams' owners control their work and handover sequence; oats records those
173
- owners before scheduling each migration. Oats accepted ownership of
174
- `aweb-abep` (service self-retirement), followed by `aweb-abfz` (record-fed
175
- learning). Deferred retirement shipped in 0.22.2; record-fed learning shipped
176
- in oats.okf 1.5.0. Their presence does not replace the end-to-end acceptance
177
- checks below. Lead owns
178
- the full-machine plan and runtime/wake qualification, including the Codex
179
- support requirement. The aweb coordinator owns identity continuity and route
180
- semantics, with oats coordinating the rehearsal and package changes.
181
-
182
- ### Recreate or retain identities according to the actual requirement
183
-
184
- Cjr's default is a new OATS-minted identity and an explicit handover of
185
- outstanding work, knowledge, contacts and task responsibility. Old identities
186
- are retired only after that handover is accepted. Pilot identities remain
187
- uniquely named so no existing address has to be removed for the experiment.
188
-
189
- Merlin retains his identity; other continuing seats follow their accepted
190
- policy. Oats implemented explicit source-authority binding in oats.aweb 1.10.0,
191
- reviewed and shipped with OATS 0.22.3. Published oats.aweb 1.10.1 additionally
192
- requires an installed ambient Claude channel to be at least 1.7.9 for session
193
- delivery, matching the existing Pi extension floor of 0.3.10. A disposable rehearsal verified
194
- stable identity/address, existing conversations, heartbeat, exclusive holder
195
- refusal, rollback and authority-preserving retirement. Aweb supplied this
196
- supported handover:
197
-
198
- 1. Rehearse using a disposable self-custodial global identity and a second-team
199
- contact, checking DID, address, conversations and write attribution.
200
- 2. Stop the old process. Copy authority only: signing.key, identity.yaml,
201
- teams.yaml, team certificates, encryption.yaml and encryption keys. Keep
202
- private files owner-only; exclude workspace.yaml and caches.
203
- 3. In the new home run `aw workspace connect --service <url> --team <team>` to
204
- rebind the existing identity. Do not mint or join as a new identity.
205
- 4. Verify the same DID/address, host/path binding, heartbeat, message routes and
206
- task writes. Preserve the old home for rollback until acceptance, then remove
207
- its old credential copy. Never have two processes using the identity.
208
-
209
- Do not delete Merlin's global workspace as part of handover: aweb reports that
210
- this is unsupported and can release claims. Retiring a managed execution with
211
- retained authority must release the execution without destroying the identity.
212
- Never put credentials in Git or manufacture instance.json for adoption.
213
-
214
- ### Make harvest finish without an operator
215
-
216
- The deferred external retirement mechanism shipped in 0.22.2. Completion
217
- still requires an actual harvester to finish, report and clean up without
218
- operator retirement, with visible recoverable failure. The detached worker
219
- stops the runtime before releasing capabilities; status remains read-only.
220
-
221
- Cjr archived its local harvester override and uses official oats.okf 1.5.0.
222
- Its authenticated Pi model is `openai-codex/gpt-5.5`. The remote qualification
223
- host's equivalent provider login fails refresh with `invalid_refresh_token`;
224
- both failed Pi tests were retired normally. No rotating login tokens were copied.
225
- Official oats.okf 1.5.1 now selects the already authenticated native Claude
226
- runtime on that host. A real note-fed harvest promoted an operational lesson,
227
- self-retired, and a fresh successor retrieved and used the lesson. This proves
228
- that alternative harness path; it does not claim the Pi login was repaired.
229
-
230
- ### Finish temporary identity retirement
231
-
232
- The aweb owner must resolve the remote lifecycle defect tracked under
233
- `aweb-aaum.6`; oats coordinates package integration. The leaked release identities are a reproduction; reconcile the exact
234
- owner-side list before naming or deleting them. Alias-release fixes are in
235
- aweb source; production same-alias join/delete/rejoin acceptance passed on published aw 1.36.1. Independently verify coordination cleanup,
236
- claims and certificate state. Admin cleanup is a recovery procedure, not
237
- proof of automatic retirement. This gates temporary-worker completion;
238
- adopted standing executions instead must preserve their durable identity.
239
-
240
- ### Recover standing executions after reboot
241
-
242
- Tmux and Herdr keep agents alive when a viewer disconnects; a machine reboot
243
- ends those executions. Replaying `instance.json.command` manually does not
244
- refresh OATS's independent session receipt and is not a supported recovery.
245
- The first planned recovery reuses the tested retained-authority handover:
246
- preserve the stopped home, knowledge and identity, then create its replacement
247
- with a new receipt and one active holder. The retained-binding rehearsal
248
- passed, but the installed standing-seat recovery journey remains to qualify. A terminal-only
249
- restart operation may follow; it must refresh the receipt without rerunning
250
- resource-provisioning hooks. No automatic supervisor is required for the first
251
- supported manual recovery.
252
-
253
- ### Include noncoding learning and all actual runtimes
254
-
255
- `aweb-abfz` tracks record-fed learning; oats.okf 1.5.0 ships its record path. Its bounded acceptance is
256
- a standing session that wrote no notes and made no code commit producing a
257
- reviewed knowledge proposal with provenance to exact recorded turns, then a
258
- successor reading that knowledge. Notes-based harvest must continue working.
259
- Oats owns this after service self-retirement: select the source instance's
260
- own recorded turns through a record helper, feed them to existing OKF
261
- judgment, and deliver proposals through the same review path. Verify exact
262
- source provenance, correct soul destination and safe repeat processing.
263
- Storing transcripts or running the mind daemon alone does not satisfy this
264
- gate.
265
-
266
- The inventory includes Codex sessions. Native Codex launch/status/stop shipped
267
- in 0.22.2 alongside Pi and Claude; preserve each seat's selected runtime.
268
- The shared `yolo` default is enabled on this machine and maps to the runtime's
269
- permission flag. Aweb owns the per-host `aw wake` service; OATS supplies
270
- session inspection/input and capability registration, while Desktop is a
271
- client. Installing the broker service and proving mail/chat delivery after
272
- GUI closure is required before channel-free standing-seat adoption. Manual
273
- polling and successful terminal submission are not consumption evidence. Establish any actual machine-policy change
274
- needed before making it. Include daemon health and restart/recovery behavior
275
- in the operating instructions.
276
-
277
- ## Rollout sequence
278
-
279
- 1. **Prepare without disturbing sessions.** Record each seat's identity,
280
- home, work path/branch, outstanding tasks/messages, notes, skills and
281
- launch mechanism. Review/commit the isolated config changes. Give every
282
- knowledge store a disposition, preserving source material; migrate needed
283
- context into indexed soul knowledge and team rules. Materialize required
284
- skills explicitly instead of depending on a user's Claude skill links.
285
- 2. **Rehearse required identity transitions on test identities.** Prove
286
- temporary retirement and Merlin-style retained-authority handover, including
287
- cross-team routing. If another team requires retained-key adoption, test
288
- its write binding, exclusivity, failure recovery and retained-identity
289
- retirement separately. Do not use the active Codex lead or a standing
290
- coordinator as the initial experiment.
291
- 3. **Run cjr's useful worker pilot.** Merlin selected extending
292
- `kb/tools/kb-jobs-check.py` to cover the machine's launchd jobs. Limit the
293
- task to health reporting; do not enable/disable jobs. Use a fresh named
294
- developer in a worktree and a fresh code reviewer. Verify required skills,
295
- aw communication, a reviewed task commit, a real harvested promotion on
296
- the correct branch, and a second developer reading the promoted lesson
297
- through the soul's index. Verify harvester and worker retirement. A
298
- workaround-assisted run is recorded as partial, not automatic completion.
299
- 4. **Transfer cjr seats at agreed safe boundaries.** Prove the never-run
300
- roles with new managed workers. Then hand Hermione's and Dumbledore's work
301
- to fresh identities, followed by Minerva's work; Merlin goes last using the
302
- verified address-continuity procedure. Checkpoint work/mail/notes and
303
- explicitly transfer responsibilities. Avoid duplicate owners of the same
304
- task. Preserve old homes until successor acceptance; retire old identities
305
- through the supported remote path. Every remembering role gets the learning
306
- check; reviewers get the exclusion check.
307
- 5. **Repeat across the inventory.** Prepare other scopes in parallel with
308
- framework work; apply the proven handover with each team owner. Oats/aweb,
309
- tsm, beadhub and docflow all need explicit outcomes. Offline homes receive
310
- an explicit disposition. Retire old launch scripts only after no continuing
311
- seat depends on them.
312
- 6. **Qualify continuous operation.** Prove record-fed promotion for noncoding
313
- sessions, successor knowledge use, wake-up and recovery, and working health
314
- checks. Document one supported operator path to start, inspect, hand over,
315
- harvest and retire each role. Close the full migration only then.
316
-
317
- ## Evidence and progress
318
-
319
- Keep separate milestones per team: config ready; skills/knowledge ready;
320
- new workers qualified; standing seats transferred; learning qualified;
321
- retirement/recovery verified. Record exact published versions and relevant
322
- commits. Preserve failed-step evidence and outstanding limitations; do not
323
- substitute a green `doctor`, a roster row or a successful hook report for
324
- the corresponding live check. Keep credentials and private case data out of
325
- the shared rollout record.
326
-
327
- ## Earlier operating evidence (2026-09-05)
328
-
329
- - Cjr's pilot landed five useful task commits and eleven promoted concepts
330
- from four harvests, with independent code and knowledge reviews. Ordinary
331
- retirement using candidate `b73918f` exited successfully in four seconds:
332
- changed home bytes preserved, no redundant repository clone, worktree/home
333
- removed, merged branch retained and temporary aweb alias retired. The
334
- prior large-index failure led to the batch restore and home-only fixes.
335
- Redundant failed repository copies were removed only after every file and
336
- object was proven recoverable elsewhere; all home snapshots remain.
337
- - TSM's owner plan is `~/tsm/history/2026-09-06-tsm-oats-handover-plan.md`.
338
- Preserve the five seats' worktrees, skills and knowledge; re-arm Zeus's
339
- session-local schedules. Production credentials remain solely with the
340
- authorized production operator. Zeus remains last. Juan's current direction
341
- authorizes completing the migration while he is away; the earlier
342
- presence-only pause does not override it. Actual job and production boundaries
343
- remain. Themis's ten-commit packet landed at `46cf2083`; its installed
344
- oats.aweb 1.10.1 and oats.okf 1.5.0 passed the actual doctor. All five souls
345
- are now integrated through Prometeo's `103e534c`, with owner-approved private
346
- startup briefs and checkpoints. Those checkpoints must be refreshed at the
347
- actual stop; Zeus's deployment and scheduled-job boundaries remain binding.
348
- - BeadHub configuration/soul commit `3ee13a8` in `awebai/beadhub-saas`
349
- (`~/awebai/beadhub/beadhub-saas`) was independently ACKed by lead and
350
- landed on `main`. Its tracked deployment template is materialized at the canonical
351
- parent workspace, with trusted official capabilities and a clean actual
352
- doctor result. The soul retains SaaS Git provenance and uses workspace mode
353
- as a coordinator across the three canonical repositories. Its legacy holder
354
- remains live; authenticated harvest-model configuration is installed and
355
- verified. The published broker service precedes activation. Stripe and
356
- production gates remain separate.
357
- - Docflow supplied its own identity and handover through its terminal. Its
358
- backfill and register verification define the safe boundary. Preserve its
359
- Claude memory and existing credentials in place; verify filesystem/TCC
360
- access and the Minerva conversation before accepting the successor. Stop
361
- the old harness before activating retained authority in the successor.
362
- - Local-scope aweb identities on different teams cannot contact one another
363
- directly. Contacts require a globally resolvable target; the failed
364
- lead/Zeus and lead/Docflow exchanges expose that intentional boundary.
365
- Preparation proceeded through identified terminal coordination. Establish
366
- the cross-team coordinator identity/contact policy explicitly before
367
- relying on those routes; do not silently replace retained identities.
368
- - Real remote Claude launch, terminal input and detach survival passed.
369
- Remote Desktop projection and exact-home lifecycle shipped in 0.22.3; the
370
- installed remote CLI serves the real registered roster. Native Claude
371
- harvesting subsequently completed with official oats.okf 1.5.1, as recorded
372
- below. No standing remote seat is declared migrated.
373
- - The aweb broker candidate `30469e22` ran as a private launchd service against
374
- published OATS 0.22.3. Real Claude and Codex sessions in tmux and Pi
375
- in Herdr, with Claude channel 1.7.9 and Pi extension 0.3.10, fetched mail and replied with exact qualification tokens,
376
- with all GUI viewers closed. Pi also answered a sender-waiting chat. Mail
377
- sent while the broker was stopped was recovered after restart. After the
378
- Codex harness stopped, its registration became inactive and a subsequent
379
- message remained unread. Pause also survived a daemon restart, keeping mail
380
- unread until resume, after which the agent replied. The candidate does not
381
- fetch or acknowledge mail.
382
- Published aw installation and standing-seat acceptance are still separate.
383
- - Qualification found that tmux output loses tab separators in a minimal
384
- launchd environment without a UTF-8 locale. Independently reviewed kernel
385
- fixes `a0b0e14` and `0260ea9` shipped in 0.22.4, adding UTF-8 mode to
386
- lifecycle/input and viewer calls. The host service also specifies
387
- `LC_ALL=en_US.UTF-8`. Existing Claude plugin 1.7.8 also consumed mail before
388
- the broker wake; updating to 1.7.9 eliminated that competing delivery path.
389
- The deployed oats.aweb 1.10.1 floor now rejects the incompatible version.
390
-
391
- - Cjr's second and third worker cycles completed on published kernel 0.22.3
392
- and oats.okf 1.4.1 (note-fed). The
393
- second promoted three reviewed concepts; the third read them before working,
394
- produced the normal host-service health reader (`3dfe3acf`) and completed
395
- its own reviewed harvest. Both harvesters self-retired without operator
396
- completion. Each worker's ordinary retirement took four seconds and removed
397
- its temporary alias. A post-merge fixture mismatch was corrected forward in
398
- `e8a87c71`, with 47 tests green on a clean export. The reader's real service
399
- check awaits installation of `ai.aweb.wake`.
400
- - A record-only harvest of the fresh Claude wake-test session completed with
401
- official oats.okf 1.5.0. It read its 27-turn source window, found no durable
402
- lesson to promote, advanced the completed watermark and self-retired. The
403
- first attempt exposed an unnecessary SQLite index write during pure journal
404
- reads; reviewed fix `f100320` shipped in 0.22.4. The shared capture service
405
- and its large index were preserved. Completion is proven; this run does not
406
- claim a knowledge promotion.
407
- - Docflow's two-commit preparation at `4458097` is independently ACKed: native
408
- Claude, retained authority, session delivery and 18 valid curated OKF concepts.
409
- Its role and package preparation is integrated. The running backfill
410
- and FY2025 register checks still determine its activation boundary.
411
- - The tracked aweb coordinator soul at `0a3a9a91` is independently ACKed; the
412
- frontend soul at `b3985edb` is owner-reviewed and landed. They preserve the
413
- coordinator's workspace and the frontend's managed primary SaaS worktree plus
414
- explicitly assigned secondary OSS tree. Lead and Oats coordinator souls are
415
- also reviewed and landed. Concrete deployment configuration and final
416
- checkpoints precede each launch.
417
- - OATS 0.22.4 is published at tag `0260ea9`, with npm packages and six Desktop
418
- installers. CI retried once after a disappearing Git maintenance lock in a
419
- fixture; kernel and Desktop gates then passed. A manual reviewed version-bump
420
- PR completed the bot's permission-blocked post-publication step. Published
421
- npm JavaScript bytes match the tag. OATS 0.22.5 subsequently shipped the
422
- package-selector CLI and oats.okf 1.5.1 pin; its manual version-bump PR #5
423
- completed at `91ef541`. Aweb 1.36.1 remains unpublished: candidate `bfdb2088`
424
- passed targets 1–41, then a Go dependency download failed in target 42.
425
- Its coordinator explicitly accepted completing targets 42–46 on that same
426
- candidate and environment, preserving both logs and recording the loss of
427
- single-run atomicity. The remainder is running; the private broker is not
428
- being represented as the permanent published service.
429
-
430
- - Cjr's retained declaration/runbook packet is independently ACKed through
431
- `6dc6efc8` (three commits); its source authority remains in place and operator
432
- stop-before-start applies to rollback as well as cutover. Its two soul startup
433
- corrections also landed after independent review at `bd981b3a`. Official
434
- oats.aweb 1.10.1 and oats.okf 1.5.0 are now installed and trusted for both
435
- standing souls. These newer pins do not relabel the earlier worker proofs.
436
- - TSM's Argos packet is integrated at `f20c54bb` after both independent and
437
- owner ACKs; actual doctor resolves the two retained reviewer seats. BeadHub
438
- and Themis supplied final private startup briefings and idle checkpoints.
439
- Hermes and Prometeo were explicitly woken to read unseen followups; their
440
- legacy channels had not delivered those requests reliably. Both subsequently
441
- approved their souls and final handover checkpoints.
442
- - A locked-selector update gap found during actual team setup was corrected
443
- at `d95018e` (two independently reviewed commits) and shipped in 0.22.5.
444
- It supports `oats update <package> --to <ref>` or a positional catalog
445
- spec. A hermetic CLI test exercises the version transition, trust reset and
446
- invalid arguments, including refusal to enter the kernel self-updater when
447
- a package is missing. The installed remote 0.22.5 CLI accepted the selector
448
- and preserved the already-correct 1.5.1 lock and its trust.
449
-
450
- - Herdr 0.8.2 is installed on both hosts. Published OATS 0.22.4 launched a
451
- real remote Claude session through the saved server route; a separate
452
- session-input request elicited an actual reply. The source and its successor
453
- then completed native Claude harvesting and knowledge use with official OKF
454
- 1.5.1. The harvester consumed its source note, promoted one PATH-resolution
455
- lesson, passed strict validation, and self-retired. A fresh instance read the
456
- indexed lesson before checking every resolved tool path and comparing runtime
457
- and login shells. Both source instances were retired normally with their
458
- changed home files preserved. This is local-soul promotion and retrieval,
459
- not a repository PR cycle or remote broker-wake acceptance.
460
- - The remote host now has shared `yolo: true`, updated Pi installations,
461
- Claude channel 1.7.9, and the published OATS 0.22.5 capture hooks and enabled
462
- user service. Its existing record-owner name was preserved and the initial
463
- capture/index pass completed. The Mac capture service was left in place.
464
- - Coordinator scope is explicit: Oats and Aweb retain their global identities
465
- through the rehearsed authority-transfer path. Fresh local lead/frontend
466
- identities relay cross-team requests through a verified global coordinator;
467
- an alias containing a domain does not itself establish global reach. The
468
- final briefs preserve conversations or hand off unresolved threads according
469
- to that identity choice, require an actual old-process stop, and distinguish
470
- startup context from a separate incoming-message wake check.