@awebai/oats 0.29.3 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/bin/oats.mjs +203 -54
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +538 -204
- package/capabilities/oats-aweb/injects/aweb.md +1 -1
- package/capabilities/oats-aweb/lib/binding-wire.mjs +31 -22
- package/capabilities/oats-aweb/oats.json +5 -12
- package/capabilities/oats-aweb/skills/VENDORED.md +4 -4
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +1 -1
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +83 -13
- package/capabilities/oats-code-review/injects/reviewer.md +26 -0
- package/capabilities/oats-code-review/oats.json +16 -0
- package/capabilities/oats-code-review/skills/adversarial-review/SKILL.md +66 -0
- package/capabilities/oats-code-review/skills/review-dev-docs/SKILL.md +30 -0
- package/capabilities/oats-code-review/skills/security-review/SKILL.md +56 -0
- package/capabilities/oats-code-review/skills/simplification-review/SKILL.md +34 -0
- package/capabilities/oats-developer/injects/developer.md +38 -0
- package/capabilities/oats-developer/oats.json +17 -0
- package/capabilities/oats-developer/skills/execution-strategy/SKILL.md +43 -0
- package/capabilities/oats-developer/skills/maintain-dev-docs/SKILL.md +47 -0
- package/capabilities/oats-developer/skills/run-the-review-loop/SKILL.md +65 -0
- package/capabilities/oats-developer/skills/understand-the-spec/SKILL.md +37 -0
- package/capabilities/oats-developer/skills/worktrees/SKILL.md +36 -0
- package/capabilities/oats-engineering-expert/injects/expert.md +37 -0
- package/capabilities/oats-engineering-expert/oats.json +17 -0
- package/capabilities/oats-engineering-expert/skills/coordinate-developers/SKILL.md +37 -0
- package/capabilities/oats-engineering-expert/skills/coordinate-experts/SKILL.md +52 -0
- package/capabilities/oats-engineering-expert/skills/land-your-prs/SKILL.md +50 -0
- package/capabilities/oats-engineering-expert/skills/plan-and-spec/SKILL.md +53 -0
- package/capabilities/oats-engineering-expert/skills/verify-developer-work/SKILL.md +49 -0
- package/capabilities/oats-okf/bin/oats-okf.mjs +16 -9
- package/capabilities/oats-okf/lib/binding-wire.mjs +47 -15
- package/capabilities/oats-okf/lib/config.mjs +2 -1
- package/capabilities/oats-okf/lib/consult.mjs +26 -4
- package/capabilities/oats-okf/lib/harvest-switch.mjs +16 -3
- package/capabilities/oats-okf/lib/inspection.mjs +26 -7
- package/capabilities/oats-okf/lib/io.mjs +9 -1
- package/capabilities/oats-okf/lib/sources.mjs +34 -3
- package/capabilities/oats-okf/lib/stores.mjs +8 -6
- package/capabilities/oats-okf/lib/worker.mjs +7 -17
- package/capabilities/oats-okf/oats.json +6 -3
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +2 -2
- package/capabilities/oats-okf-harvest/oats.json +3 -3
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +6 -6
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +37 -16
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +1 -1
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +6 -1
- package/capabilities/oats-okf-maintenance/oats.json +2 -2
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +17 -2
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +11 -23
- package/capabilities/oats-workspace-experts/injects/oats-experts.md +26 -0
- package/capabilities/oats-workspace-experts/oats.json +9 -0
- package/docs/capabilities.md +160 -171
- package/docs/capability-manifest.schema.json +7 -10
- package/docs/configuration.md +213 -64
- package/docs/design/2026-09-16-knowledge-capability-contract.md +36 -50
- package/docs/design/2026-09-23-workspace-module-contracts.md +377 -544
- package/docs/design/2026-09-26-okf-knowledge-operations.md +132 -357
- package/docs/design/2026-09-27-team-model-v2.md +116 -0
- package/docs/design/2026-09-28-automations-trust.md +38 -0
- package/docs/design/2026-09-28-soul-launch-preference.md +63 -0
- package/docs/design/HISTORY.md +65 -0
- package/docs/design/README.md +23 -54
- package/docs/desktop-cli-api.md +1787 -1777
- package/docs/desktop.md +30 -91
- package/docs/execution-targets.md +146 -292
- package/docs/first-team.md +31 -17
- package/docs/implementation.md +76 -288
- package/docs/integrations.md +118 -320
- package/docs/knowledge-capability-authoring.md +25 -52
- package/docs/knowledge-reference/acceptance.md +3 -3
- package/docs/knowledge-reference/adoption.md +1 -1
- package/docs/knowledge-reference/harvester.md +2 -2
- package/docs/knowledge-reference/package-craft.md +3 -3
- package/docs/knowledge-reference/provider-mapping.md +3 -6
- package/docs/knowledge-reference/reader-capture.md +3 -3
- package/docs/knowledge-theory.md +62 -166
- package/docs/knowledge.md +225 -404
- package/docs/layers.md +42 -97
- package/docs/oats-local.schema.json +58 -5
- package/docs/oats-membership.schema.json +1 -8
- package/docs/oats-package.schema.json +5 -5
- package/docs/oats-workspace.schema.json +8 -22
- package/docs/official-catalog.md +25 -28
- package/docs/packages.md +45 -63
- package/docs/plans/0.30-close-out.md +61 -0
- package/docs/release-lane.md +77 -0
- package/docs/release-notes/oats-framework-v1.1.3.md +10 -8
- package/docs/release-notes/v0.19.0.md +48 -147
- package/docs/release-notes/v0.19.1.md +2 -3
- package/docs/release-notes/v0.19.3.md +2 -15
- package/docs/release-notes/v0.20.0.md +0 -15
- package/docs/release-notes/v0.22.0.md +71 -138
- package/docs/release-notes/v0.22.1.md +42 -90
- package/docs/release-notes/v0.22.10.md +1 -1
- package/docs/release-notes/v0.22.11.md +1 -47
- package/docs/release-notes/v0.22.12.md +4 -13
- package/docs/release-notes/v0.22.13.md +1 -42
- package/docs/release-notes/v0.22.14.md +3 -11
- package/docs/release-notes/v0.22.15.md +1 -46
- package/docs/release-notes/v0.22.16.md +6 -8
- package/docs/release-notes/v0.22.18.md +1 -99
- package/docs/release-notes/v0.22.19.md +3 -14
- package/docs/release-notes/v0.22.2.md +6 -15
- package/docs/release-notes/v0.22.3.md +0 -1
- package/docs/release-notes/v0.22.4.md +1 -14
- package/docs/release-notes/v0.22.5.md +2 -12
- package/docs/release-notes/v0.22.6.md +0 -3
- package/docs/release-notes/v0.23.0.md +9 -25
- package/docs/release-notes/v0.23.1.md +9 -25
- package/docs/release-notes/v0.23.2.md +2 -4
- package/docs/release-notes/v0.24.0.md +56 -97
- package/docs/release-notes/v0.24.1.md +7 -11
- package/docs/release-notes/v0.24.10.md +34 -45
- package/docs/release-notes/v0.24.11.md +12 -20
- package/docs/release-notes/v0.24.12.md +35 -48
- package/docs/release-notes/v0.24.13.md +34 -41
- package/docs/release-notes/v0.24.2.md +9 -13
- package/docs/release-notes/v0.24.3.md +7 -11
- package/docs/release-notes/v0.24.4.md +6 -6
- package/docs/release-notes/v0.24.5.md +6 -10
- package/docs/release-notes/v0.24.6.md +2 -5
- package/docs/release-notes/v0.24.7.md +46 -75
- package/docs/release-notes/v0.24.8.md +58 -96
- package/docs/release-notes/v0.24.9.md +38 -54
- package/docs/release-notes/v0.25.0.md +59 -76
- package/docs/release-notes/v0.25.1.md +57 -81
- package/docs/release-notes/v0.25.2.md +51 -70
- package/docs/release-notes/v0.25.3.md +11 -13
- package/docs/release-notes/v0.25.4.md +9 -13
- package/docs/release-notes/v0.25.5.md +3 -5
- package/docs/release-notes/v0.25.6.md +20 -29
- package/docs/release-notes/v0.25.7.md +5 -7
- package/docs/release-notes/v0.25.8.md +26 -39
- package/docs/release-notes/v0.26.0.md +175 -646
- package/docs/release-notes/v0.27.0.md +4 -5
- package/docs/release-notes/v0.27.1.md +4 -6
- package/docs/release-notes/v0.27.2.md +1 -1
- package/docs/release-notes/v0.28.0.md +57 -124
- package/docs/release-notes/v0.29.0.md +89 -208
- package/docs/release-notes/v0.29.1.md +1 -1
- package/docs/release-notes/v0.29.2.md +3 -4
- package/docs/release-notes/v0.29.4.md +90 -0
- package/docs/release-notes/v0.30.0.md +205 -0
- package/docs/schedules.md +280 -349
- package/docs/servers.md +99 -117
- package/docs/soul.schema.json +2 -9
- package/docs/souls-and-instances.md +145 -158
- package/docs/workspaces.md +132 -215
- package/lib/automations.mjs +28 -6
- package/lib/core.mjs +226 -74
- package/lib/instance-events.mjs +1 -1
- package/lib/instance-inspect.mjs +109 -34
- package/lib/instance-lifecycle.mjs +14 -1
- package/lib/instance-resolution.mjs +26 -27
- package/lib/launch-preference.mjs +87 -0
- package/lib/materialize.mjs +3 -3
- package/lib/packages.mjs +2 -5
- package/lib/resolve.mjs +29 -87
- package/lib/schedule.mjs +32 -18
- package/lib/teams-verbs.mjs +195 -0
- package/lib/teams.mjs +190 -0
- package/lib/triggers.mjs +53 -17
- package/lib/workspace.mjs +54 -147
- package/package-catalog.json +9 -15
- package/package.json +1 -1
- package/skills/oats-getting-started/SKILL.md +25 -13
- package/capabilities/oats-review/injects/review.md +0 -69
- package/capabilities/oats-review/oats.json +0 -10
- package/capabilities/oats-review/skills/code-review/SKILL.md +0 -44
- package/capabilities/oats-review/skills/security-review/SKILL.md +0 -59
- package/docs/conventions.md +0 -90
- package/docs/design/2026-09-07-architecture-reassessment.md +0 -131
- package/docs/design/2026-09-07-desktop-souls-capabilities.md +0 -50
- package/docs/design/2026-09-07-mobile-agent-management-proposal.md +0 -228
- package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +0 -558
- package/docs/design/2026-09-13-knowledge-and-memory-direction.md +0 -744
- package/docs/design/2026-09-13-knowledge-implementation.md +0 -127
- package/docs/design/2026-09-13-knowledge-location-contract.md +0 -340
- package/docs/design/2026-09-14-artifact-retention-contract.md +0 -190
- package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +0 -708
- package/docs/design/2026-09-14-portable-souls-contract-amendments.md +0 -85
- package/docs/design/2026-09-14-portable-souls-explainer.md +0 -750
- package/docs/design/2026-09-15-captured-dispatch.md +0 -127
- package/docs/design/2026-09-15-captured-resolution-records.md +0 -143
- package/docs/design/2026-09-15-package-preparation.md +0 -100
- package/docs/design/2026-09-15-portable-data-contract.md +0 -121
- package/docs/design/2026-09-15-portable-declarations.md +0 -189
- package/docs/design/2026-09-15-portable-souls-handoff.md +0 -150
- package/docs/design/2026-09-15-portable-souls-implementation.md +0 -417
- package/docs/design/2026-09-15-selection-lock-and-approval.md +0 -122
- package/docs/design/2026-09-15-source-observation.md +0 -119
- package/docs/design/2026-09-16-captured-admission.md +0 -77
- package/docs/design/2026-09-16-captured-helper-dispatch.md +0 -105
- package/docs/design/2026-09-16-captured-launch-inputs.md +0 -42
- package/docs/design/2026-09-16-command-profile-preparation.md +0 -86
- package/docs/design/2026-09-16-fresh-install-first-rollout.md +0 -47
- package/docs/design/2026-09-16-fresh-operator-walkthrough.md +0 -282
- package/docs/design/2026-09-16-messaging-capability-contract.md +0 -59
- package/docs/design/2026-09-16-portable-migration-evidence.md +0 -158
- package/docs/design/2026-09-16-portable-onboarding.md +0 -179
- package/docs/design/2026-09-16-prepare-request-transport.md +0 -26
- package/docs/design/2026-09-16-provider-binding-codecs.md +0 -98
- package/docs/design/2026-09-16-provider-binding-wire.md +0 -274
- package/docs/design/2026-09-17-capability-helper-input-contract.md +0 -95
- package/docs/design/2026-09-17-captured-backend-parity.md +0 -53
- package/docs/design/2026-09-17-captured-native-start.md +0 -58
- package/docs/design/2026-09-17-portable-boundary-hookup.md +0 -19
- package/docs/design/2026-09-17-portable-boundary-resources.md +0 -52
- package/docs/design/2026-09-17-public-captured-start.md +0 -108
- package/docs/design/2026-09-17-public-prepare-request.md +0 -90
- package/docs/design/2026-09-18-captured-pi-host.md +0 -205
- package/docs/design/2026-09-18-first-cut-release-checklist.md +0 -131
- package/docs/design/2026-09-18-herdr-protocol-compatibility.md +0 -60
- package/docs/design/2026-09-20-redesign-program-board.md +0 -142
- package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +0 -289
- package/docs/design/2026-09-20-workspace-onboarding-public.md +0 -207
- package/docs/design/2026-09-22-desktop-parity-seams.md +0 -58
- package/docs/design/2026-09-23-simplified-workspace-model.md +0 -711
- package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +0 -65
- package/docs/design/2026-09-24-desktop-phase-f-boundary.md +0 -242
- package/docs/design/2026-09-24-phase-d-plan.md +0 -305
- package/docs/design/2026-09-25-teams-contract.md +0 -258
- package/docs/design/2026-09-26-desktop-design-brief-architecture.md +0 -241
- package/docs/design/desktop-ux-plan.md +0 -362
- package/docs/design/launch-configurations.md +0 -168
- package/docs/design/okf-mirror-provenance.md +0 -105
- package/docs/design/operations-contract.md +0 -141
- package/docs/oats-member.schema.json +0 -38
- package/skills/integration-authoring/SKILL.md +0 -84
- package/skills/oats-support/SKILL.md +0 -79
- package/skills/skill-craft/SKILL.md +0 -109
- package/skills/soul-craft/SKILL.md +0 -116
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
# Repository observation and source custody
|
|
2
|
-
|
|
3
|
-
`lib/repository-observation.mjs` implements real repository observations for the
|
|
4
|
-
forthcoming preparation transaction. It does not yet constitute workspace admission,
|
|
5
|
-
complete preparation, approval or runtime dispatch.
|
|
6
|
-
|
|
7
|
-
## One transaction, one observed snapshot
|
|
8
|
-
|
|
9
|
-
`createRepositoryTransaction` requires an explicit scratch directory and opaque
|
|
10
|
-
access-context key. Credentials remain in the host's native Git/gh facilities;
|
|
11
|
-
they are not extracted into source records. Caches are transaction-local, never
|
|
12
|
-
shared across authorization contexts. Original repository/index/object environment
|
|
13
|
-
is scrubbed without copying credential stores.
|
|
14
|
-
|
|
15
|
-
`observe(source, {revision, origin, expectedIdentity})` validates through the shared
|
|
16
|
-
source codec and records exact repository identity, selector and commit. GitHub
|
|
17
|
-
identity is obtained with the native gh API; other supported Git hosts use canonical
|
|
18
|
-
remote identity. An existing canonical identity is preserved explicitly rather than
|
|
19
|
-
silently upgraded. Unavailable identity, changed IDs and redirected/renamed GitHub
|
|
20
|
-
locators refuse, not silently fall back. No repository can assert its own hosting ID
|
|
21
|
-
in an authored descriptor.
|
|
22
|
-
|
|
23
|
-
Omitted revision means the hosting default branch or Git's actual symbolic remote
|
|
24
|
-
HEAD, never a guessed main. Requests and failed observations are memoized. The
|
|
25
|
-
resolved default branch and an explicit request for that same selector share one
|
|
26
|
-
snapshot; qualified provider identity also unifies transport aliases. Each returned
|
|
27
|
-
observation preserves the requested locator and origin. Changing an upstream ref
|
|
28
|
-
mid-transaction cannot advance an already observed identity/selector pair.
|
|
29
|
-
|
|
30
|
-
## No source checkout or source execution
|
|
31
|
-
|
|
32
|
-
The adapter uses an owned bare repository and fetches one shallow selected snapshot,
|
|
33
|
-
requesting blob filtering. It never checks out source files, runs source hooks,
|
|
34
|
-
loads source scripts, initializes submodules or applies checkout/smudge filters.
|
|
35
|
-
Git hooks are directed to an empty owned directory, external transports and automatic
|
|
36
|
-
HTTP redirects are disabled, and interactive Git prompts are disabled. Host credential
|
|
37
|
-
helpers/SSH remain the explicitly selected host execution boundary.
|
|
38
|
-
|
|
39
|
-
`readFile` reads only issued transaction handles and exact Git objects, with a 1 MiB
|
|
40
|
-
metadata-file bound. Optional absence is explicit. Descriptor symlinks/non-files are
|
|
41
|
-
not treated as alternate declarations. Return values include raw bytes and the exact
|
|
42
|
-
source document/revision/byte witness for the common parser.
|
|
43
|
-
|
|
44
|
-
`materialize` uses the shared `source-projection.mjs` writer (also used for explicit
|
|
45
|
-
local package snapshots) to write a selected repository-root-relative projection into a NEW tree,
|
|
46
|
-
never merging with an existing destination. It preserves literal links and Git owner-
|
|
47
|
-
execute state, refuses Git administrative paths, unsupported submodules/object kinds,
|
|
48
|
-
missing required roots and escaping/broken links. Parent directories are created and
|
|
49
|
-
checked component-by-component without recursive mkdir through source links. Case or
|
|
50
|
-
normalization aliases cannot turn an earlier source symlink into a later write parent;
|
|
51
|
-
existing directory spellings must belong to this projection. Final names must round-trip
|
|
52
|
-
exactly. Windows device/alternate-stream/trailing-dot aliases refuse before writing.
|
|
53
|
-
A filesystem unable to retain owner-execute state refuses rather than certifying lost
|
|
54
|
-
mode information. The caller retains
|
|
55
|
-
and verifies this projection before closing the scratch transaction. A failed projection
|
|
56
|
-
is reported by staging path; it is not a complete captured resolution.
|
|
57
|
-
|
|
58
|
-
## Budgets and limits
|
|
59
|
-
|
|
60
|
-
Defaults bound snapshot count (32), request aliases (128), inspected entries (10,000),
|
|
61
|
-
selected blob bytes (256 MiB), descriptor bytes (1 MiB), command output and command
|
|
62
|
-
duration (Git 60 seconds, GitHub metadata 30 seconds). Blob data is cached by exact
|
|
63
|
-
object within the transaction. These are application read/materialization limits,
|
|
64
|
-
NOT a network-pack or disk-quota guarantee: a Git server can decline blob filtering.
|
|
65
|
-
Git/host resource limits still apply to transport acquisition. No persistent source
|
|
66
|
-
cache, background refresh, organization-wide scan or hostile-host isolation is claimed.
|
|
67
|
-
|
|
68
|
-
`close` removes only the transaction's owned scratch directory, checks ownership and
|
|
69
|
-
invalidates its handles. Materialized projections outside it remain intact. There is
|
|
70
|
-
no force cleanup of another owner, live home or unrelated process.
|
|
71
|
-
|
|
72
|
-
## Evidence and remaining integration
|
|
73
|
-
|
|
74
|
-
Native-Git tests cover observed non-main default and same-selector caching after
|
|
75
|
-
upstream changes, alias identity/counterfeit-handle refusal, exact materialized bytes/
|
|
76
|
-
links/execute mode without filters, byte budgets and escaping links. Local fixture
|
|
77
|
-
transport mappings preserve production portable-identity rules. A separate read-only
|
|
78
|
-
native GitHub probe resolved this framework repository's stable ID/default branch using
|
|
79
|
-
existing credentials; it is not messaging/provider privacy qualification.
|
|
80
|
-
|
|
81
|
-
Review found a real pre-refusal write escape using valid case-aliasing Git tree entries
|
|
82
|
-
on a case-insensitive filesystem. A raw-tree regression reproduced the outside write
|
|
83
|
-
in an owned temporary fixture before the correction; it now proves rejection without
|
|
84
|
-
that write. The final containment check is defense-in-depth, never the first boundary
|
|
85
|
-
protecting materialization side effects.
|
|
86
|
-
|
|
87
|
-
## Reciprocal discovery and imports
|
|
88
|
-
|
|
89
|
-
`lib/workspace-discovery.mjs` now connects the native transaction to the shared
|
|
90
|
-
workspace/member/soul parsers. `identify` resolves hosting identity without cloning
|
|
91
|
-
unrelated allowlist repositories. Discovery views are frozen and transaction-issued;
|
|
92
|
-
a serialized or mutated client object cannot substitute for a read workspace.
|
|
93
|
-
|
|
94
|
-
`readWorkspace` reads the exact oats-workspace.yaml. `checkMember` qualifies the
|
|
95
|
-
candidate and matches the workspace allowlist by repository identity, using the
|
|
96
|
-
workspace-declared member revision (or observed hosting default), not the caller's
|
|
97
|
-
work-tree branch. The observed member's oats.yaml must point back to that workspace.
|
|
98
|
-
The backlink's workspace observation must match the selected workspace commit;
|
|
99
|
-
mismatches remain stale rather than silently admitted. Missing/wrong backlinks,
|
|
100
|
-
unlisted forks and inaccessible observations remain distinct blocked results.
|
|
101
|
-
Eligibility records both descriptor witnesses and revisions, not live enrollment.
|
|
102
|
-
|
|
103
|
-
`importSoul` instead reads the selected source's advertised export and exact soul
|
|
104
|
-
metadata without following its publisher-workspace backlink. It returns qualified
|
|
105
|
-
identity, alias/reference, explicit definition, minimum required source roots and
|
|
106
|
-
adopter-owned policy inputs for the same planner. No adopter-maintained soul copy is
|
|
107
|
-
created. Optional extra selected roots are finalized during preparation. Required
|
|
108
|
-
repo: package roots remain source-repository-relative.
|
|
109
|
-
|
|
110
|
-
The shared Origin enum now names workspace-admission, member-backlink and source-export
|
|
111
|
-
facts explicitly. These are provenance labels, NOT new policy precedence tiers or
|
|
112
|
-
approval authority. The generated schema consumes the runtime enum. Three focused
|
|
113
|
-
discovery tests cover reciprocity/forks/revisions/immutable views and public import
|
|
114
|
-
independence; a native Git smoke exercises the complete observation/discovery/import/
|
|
115
|
-
projection path. The no-filter test also has an executable positive control.
|
|
116
|
-
|
|
117
|
-
Source-aware package preparation, retained record publication and public consumer/
|
|
118
|
-
migration integration still follow. They must use these observations and shared
|
|
119
|
-
codecs, not a second Git/source resolver or mutable checkout.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Captured incarnation and admitted actions
|
|
2
|
-
|
|
3
|
-
This is generic lifecycle custody, not a provider identity database or an enrollment guarantee. It extends the unreleased [shared invocation wire](2026-09-16-provider-binding-wire.md). Existing provider pins must be updated and tested explicitly.
|
|
4
|
-
|
|
5
|
-
## Identities and storage
|
|
6
|
-
|
|
7
|
-
A fresh directory scaffold mints `instance.json.incarnationId` with `randomUUID()` once, before any provider hook. The value is independent of composition, path, name, account and OS user. Metadata also records `captured.custody:{home:{dev,ino},work:{dev,ino}}`. Neither restart nor retry remints these fields.
|
|
8
|
-
|
|
9
|
-
The existing `.agents/portable/instance-references.json` becomes schema v2. Its rows retain the existing home/instance/agent/kind/status/executionBinding/responsibleHuman plus:
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
incarnationId: UUIDv4
|
|
13
|
-
custody: {home:{dev,ino},work:{dev,ino}}
|
|
14
|
-
intents: [{executionId,capability,action,inputIntegrity,state,attempt,receipt,replayable}]
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Rows remain home-indexed, with unique incarnation IDs. A recreated home cannot replace an indexed incarnation's obligations. Old homes and v1 indexes without witnesses refuse `migration-required`; there is no silent backfill, deletion or automatic historical conversion. Release/reprovisioning of an occupied index location is not implemented here.
|
|
18
|
-
|
|
19
|
-
Index limits are 4 MiB, depth 32, 40000 entries, at most 128 retained intent rows per incarnation. Receipts use the shared 128 KiB/depth-24/8192-entry bound. Limits refuse rather than prune receipts. All index transitions use the existing portable-state write guard. Identity metadata and index publication are synchronized before returning authorization to execute. Failed publication/synchronization or guard cleanup retains custody; an uncertain index publication does not trigger scaffold deletion.
|
|
20
|
-
|
|
21
|
-
## Activation publication custody
|
|
22
|
-
|
|
23
|
-
Activation retains its original indexed home/work witnesses across hooks and settlement. Both success and failure metadata publication use the same guard before temporary-file creation, rename and cleanup; a replacement home/work is never adopted or written through. The hook runner propagates observed receipt/intent facts when its final custody assertion fails.
|
|
24
|
-
|
|
25
|
-
On publication/custody failure, the independently owned deployment index is matched against the original authority and exact intent attempts WITHOUT resolving the replacement home. Publication and failure reporting also require the activation-owned `spawn-hooks-running` state; a newer state refuses before receipt/status mutation and is preserved, with a reporting diagnostic returned to the caller. It retains observed provider receipts, holds admitted/running work as unconfirmed, and records a bounded `custodyFailure` diagnostic and cleanup-required lifecycle. If independent reporting is itself blocked, the existing caller error envelope carries the observed facts and reporting failure. It never bypasses a held write guard. The post-hook authoritative classification read uses this same failure path. An unreadable index never implies terminal readiness or permits home metadata publication; if independent reporting also fails, exact observed meta/intent facts still accompany the caller error. This is preservation/reporting, not automatic replacement-home recovery or retry qualification.
|
|
26
|
-
|
|
27
|
-
## Admission and retries
|
|
28
|
-
|
|
29
|
-
The public core API is:
|
|
30
|
-
|
|
31
|
-
```js
|
|
32
|
-
admitCapturedAction({deployment, resolution, home, action,
|
|
33
|
-
input: {/* explicit NONSECRET request data, not environment/credentials */},
|
|
34
|
-
retryExecutionId // omitted for a distinct new logical request
|
|
35
|
-
})
|
|
36
|
-
// -> {intent:{schemaVersion:1,executionId,incarnationId,attempt},
|
|
37
|
-
// receipt, replayed:false}
|
|
38
|
-
// or completed replay: {..., replayed:true, replayable:boolean}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Static retained record/action/approval/executable and owned metadata checks run before admission, without a provider phase. `inputIntegrity` commits canonical request data in the existing JSON digest domain. CLI operations commit their exact declared argument flags/values, not runtime environment. Secrets belong in provider credential references, not operation arguments.
|
|
42
|
-
|
|
43
|
-
New requests mint independent opaque execution IDs, even for identical actions and inputs. One unsettled intent blocks replacement requests. `beginCapturedIntent({deployment,home,intent,action})` changes `admitted` to `running` once, immediately before the child can have effects. `settleCapturedIntent({... ,state,receipt,replayable})` records `completed`, `unconfirmed`, or pre-execution `blocked` outcomes. State, incarnation, action and attempt must match.
|
|
44
|
-
|
|
45
|
-
An explicit retry names the saved execution ID and exact original action/input. `blocked` and `unconfirmed` retry keep the logical ID and observed receipt, incrementing the attempt. This authorizes a provider to reconcile, not blindly repeat native mutation. `running` and abandoned `admitted` states refuse concurrent retry: process-crash reconciliation remains a held boundary, not guessed liveness. Completed retry returns stored outcome without provider code; non-replayable runtime/environment contributions refuse rather than re-execute a completed hook.
|
|
46
|
-
|
|
47
|
-
The latest indexed receipt for the selected capability takes precedence over the compatibility `capabilityMeta` mirror. The mirror seeds only the first action. An admitted retry uses its own intent receipt; it never falls back to another request or erases partial effects when metadata mirroring fails.
|
|
48
|
-
|
|
49
|
-
## Shared invocation
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
instance: null | {home,work,name,agent,incarnationId}
|
|
53
|
-
intent: null | {schemaVersion:1,executionId,incarnationId,attempt}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
These are required fields in the unreleased v1 projection. Existing exact subject, context, human, messaging choice, capability/action, execution binding and optional caller receipt equality checks remain. Instance identity is derived from current owned metadata and the matching index, not accepted from a caller's target description. An intent must match that incarnation, capability, action and active indexed attempt. Public broker checks rederive the same projection; check stdin and execution snapshots do not have different authority rules.
|
|
57
|
-
|
|
58
|
-
Read-only scope checks can have no instance/intent. A null intent grants no mutation authority. Provider-specific account reuse, reconciliation, privacy qualification and grants remain provider responsibilities.
|
|
59
|
-
|
|
60
|
-
## Integrated execution paths
|
|
61
|
-
|
|
62
|
-
- Fresh scaffold registers incarnation custody before hooks. Activation statically preflights every hook, then admits, checks readiness and executes each hook in retained order. Readiness sees the intent but cannot have effects. Required failure retains home, hook intent references and observed provider metadata.
|
|
63
|
-
- `activateCapturedScaffold({...,retryIntents:{[capability]:executionId}})` treats explicit presence as retry, including `{}` after a failure before admission. It derives the entire expected map from indexed spawn intents, checks saved metadata references against it, and preserves those references across later preflight failures. Empty retry cannot remint over existing obligations. Completed hooks are not repeated. Unsupported contribution refresh refuses.
|
|
64
|
-
- Optional hook functionality can fail without a required-hook error. Any blocked/unconfirmed intent nevertheless keeps activation at `spawned-cleanup-required`, with public `hooksPending:true`, `cleanupRequired:true`, and the exact retry map. The same explicit retry API accepts this nonterminal state. A terminal `spawned-launch-pending` state requires settled custody; optional failure before admission can remain advisory when it creates no obligation.
|
|
65
|
-
- Home `kind:action` operations admit before readiness/execution. `--retry-intent EXECUTION_ID` explicitly retries/replays; output and error details carry the intent reference. Error details include the confirmed index settlement `{state,receipt}` and an explicit `unconfirmed` boolean, independently of provider message wording. Nonzero/contradictory/malformed/timeout/cleanup and non-timeout runner-error outcomes retain their unconfirmed classification and any actually observed envelope. Pre-execution readiness failure stays `blocked`, not an executed unknown outcome. A saved successful envelope is replayed without readiness or effects.
|
|
66
|
-
- Non-admitted views omit a caller receipt assertion and let the same owned metadata/index builder derive it. They neither promote a stale `capabilityMeta` mirror over the index nor weaken rejection of explicitly supplied contradictory receipts. Readiness and execution receive the identical current projection without admitting a new action.
|
|
67
|
-
- Scope mutation operations refuse `admission-required`; no scope incarnation is invented. `kind:view` inspection stays nonmutating. Raw capability commands without admitted instance context grant no setup authority; identity-dependent providers must continue refusing such mutation.
|
|
68
|
-
|
|
69
|
-
## Existing provider-run completion after source-home deletion
|
|
70
|
-
|
|
71
|
-
Raw captured completion commands (for example a qualified provider's `complete` or non-rejudging delivery `retry`) use the SOURCE deployment/resolution through the existing namespace command route. That route supplies `instance:null`, `intent:null` and no instance-derived `priorReceipt`; it does not recreate or impersonate the deleted source incarnation. There is currently no alternative kernel-admitted existing-run completion projection for a deleted home.
|
|
72
|
-
|
|
73
|
-
The kernel verifies the retained selection, approved command and provider readiness. The provider must independently validate the already-retained source/run/observed-receipt custody and authorize only that existing continuation under its qualified contract. Null intent itself grants nothing: it cannot authorize fresh setup/enrollment/lifecycle, new execution/rejudgment or new source registration. Missing/mismatched existing-run authority refuses rather than synthesizing an instance, intent or legacy fallback. Provider completion keeps the source binding, never the helper binding; live-home operation admission is not a workaround for the deleted source.
|
|
74
|
-
|
|
75
|
-
This describes current transport/authority separation, not an additional provider action registry, new execution permission or a provider qualification test.
|
|
76
|
-
|
|
77
|
-
Actual managed-runtime launch, start/restart/wake/retire recovery, scheduler execution-ID propagation, and helper launch are not qualified by these tests. Next steps are explicit retained launch inputs, exact runtime-root retention, then native backend/history/work-custody integration with preflight-before-stop. No `--no-launch` result can stand in for successful helper execution.
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Retained helper selection — supported subset
|
|
2
|
-
|
|
3
|
-
A capability's independent work must retain TWO selections: the source provider's
|
|
4
|
-
saved `ExecutionBinding`, and the dedicated helper execution binding. A resolution
|
|
5
|
-
ID describes immutable composition, not an instance or admitted request identity.
|
|
6
|
-
This API resolves exact helper authority; it does not qualify runtime launch.
|
|
7
|
-
|
|
8
|
-
## Core and CLI
|
|
9
|
-
|
|
10
|
-
```text
|
|
11
|
-
resolveCapturedHelper({executionBinding, helper, name?})
|
|
12
|
-
capturedNativeSessionAvailability() // static callable contract, not readiness
|
|
13
|
-
|
|
14
|
-
oats inspect --deployment ABS --resolution SOURCE_ID --json
|
|
15
|
-
oats inspect --deployment ABS --resolution SOURCE_ID --helper EXACT_MAP_KEY --json
|
|
16
|
-
oats inspect --deployment ABS --resolution SOURCE_ID --helper EXACT_MAP_KEY --composition --json
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
`executionBinding` is the SOURCE's saved binding, not a worker's ambient selector.
|
|
20
|
-
`helper` is an exact own key in that source record's `helpers` map. Source inspection
|
|
21
|
-
lists those keys/references. If supplied, `name` must match the retained helper name.
|
|
22
|
-
The sole static loader verifies both source and dedicated helper records, including
|
|
23
|
-
its exact provider artifact, exported definition, curriculum and retained resources.
|
|
24
|
-
No live soul/capability/config/lock lookup or name-based substitution occurs.
|
|
25
|
-
|
|
26
|
-
The core result is:
|
|
27
|
-
|
|
28
|
-
```text
|
|
29
|
-
{schemaVersion:1,
|
|
30
|
-
sourceExecutionBinding, executionBinding,
|
|
31
|
-
helper:{key,name,subject}, context, responsibleHuman, workMode,
|
|
32
|
-
launch:{schemaVersion:1,
|
|
33
|
-
api:{contract:'oats.captured-session',version:2,available:true,backends:['tmux','herdr']},
|
|
34
|
-
readiness:{status:'not-checked'}}}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
`sourceExecutionBinding` remains the selection for provider completion/retry calls;
|
|
38
|
-
`executionBinding` selects the helper. `launch` advertises the versioned callable
|
|
39
|
-
API only; public inspect also returns that descriptor as `result.nativeSession`
|
|
40
|
-
for persistent/helper selections. `readiness.status:'not-checked'` is literal:
|
|
41
|
-
inspection probes no native backend/provider, creates no home or intent, and
|
|
42
|
-
cannot certify the requested instance/host. API availability remains true even
|
|
43
|
-
when the retained record has no launch recipe or lacks approval. Consumers must
|
|
44
|
-
understand the exact contract/version and obey actual start refusals/receipts.
|
|
45
|
-
Static verification is not approval, mutable provider readiness, incarnation
|
|
46
|
-
admission or launch. Missing keys/records/resources
|
|
47
|
-
refuse even when a healthy newer selection exists. The initial supported subset
|
|
48
|
-
requires matching captured source/helper contexts and human choices; distinct
|
|
49
|
-
helper contexts/owners require explicit helper-request policy and currently refuse.
|
|
50
|
-
They are never silently overwritten. Runtime differences likewise require real
|
|
51
|
-
retained launch inputs rather than flags that select ambient runtime software.
|
|
52
|
-
|
|
53
|
-
## Scaffold is not launch
|
|
54
|
-
|
|
55
|
-
After resolving the helper, the existing public captured spawn can exercise only
|
|
56
|
-
its explicit directory/no-launch subset:
|
|
57
|
-
|
|
58
|
-
```text
|
|
59
|
-
oats spawn HELPER_NAME --deployment ABS --resolution HELPER_ID --home NEW_ABS_HOME --no-launch --json
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
That route consumes the DEDICATED helper record and exact approvals/hooks, not a
|
|
63
|
-
legacy name-only scaffold. It does not satisfy a request for a running worker.
|
|
64
|
-
A separate public captured start now follows this scaffold/hooks stage:
|
|
65
|
-
|
|
66
|
-
```text
|
|
67
|
-
oats session start --deployment SOURCE_DEPLOYMENT --resolution SOURCE_ID --helper EXACT_MAP_KEY --home OWNED_HELPER_HOME --request ABS_NATIVE_REQUEST_JSON --json
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
It revalidates the exact source edge, checks that the owned home belongs to that
|
|
71
|
-
dedicated helper, and calls the existing captured native session transaction.
|
|
72
|
-
See the [public native request contract](2026-09-17-public-captured-start.md).
|
|
73
|
-
Both existing tmux and Herdr adapters now use the same tagged public request and
|
|
74
|
-
native custody path; see [backend parity](2026-09-17-captured-backend-parity.md).
|
|
75
|
-
The unreleased blanket `launch.status:unsupported` projection is replaced by the
|
|
76
|
-
versioned availability/not-checked descriptor above. An old or unknown descriptor
|
|
77
|
-
is unqualified ingress, not permission to guess support or silently ignore a
|
|
78
|
-
contradictory readiness signal. Providers must qualify this API at an exact
|
|
79
|
-
compatible version before replacing their unsupported-helper guard. `launch:null` is never filled from current config;
|
|
80
|
-
unsupported runtime prerequisites still refuse. Helper-authored policy holds and
|
|
81
|
-
the existing recursion guards remain intact.
|
|
82
|
-
|
|
83
|
-
## Completion belongs to the source selection
|
|
84
|
-
|
|
85
|
-
The capability saves a completion command using its source descriptor's explicit
|
|
86
|
-
selection (provider arguments are owned by that capability):
|
|
87
|
-
|
|
88
|
-
```text
|
|
89
|
-
oats NAMESPACE COMPLETE_COMMAND --deployment SOURCE_DEPLOYMENT --resolution SOURCE_ID -- PROVIDER_ARGS
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Do not use `--soul`, inherited worker selectors, or the helper execution binding
|
|
93
|
-
for this command. Explicit selector pairs replace inherited selectors as a unit.
|
|
94
|
-
Private invocation files are transient; freeze required data in existing provider
|
|
95
|
-
source/run custody before returning. This contract imposes no harvester name,
|
|
96
|
-
prompt, store layout, evidence-selection algorithm or publication mechanism.
|
|
97
|
-
|
|
98
|
-
## Evidence and limits
|
|
99
|
-
|
|
100
|
-
Focused A/B fixtures prepare distinct dedicated helper records, remove original
|
|
101
|
-
source/config/lock state, and inspect A and B independently through core/public CLI.
|
|
102
|
-
Missing/prototype keys, wrong expected names and missing A records refuse; no home,
|
|
103
|
-
job, provider setup or model process is created by inspection. This is retained
|
|
104
|
-
selection evidence—not real source-independent worker launch, completion judgment,
|
|
105
|
-
publication acceptance or provider/privacy qualification.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Explicit retained launch inputs
|
|
2
|
-
|
|
3
|
-
This is the preparation half of actual captured launch, following [durable admission](2026-09-16-captured-admission.md). A non-null recipe is not a running instance and does not lift the retained-helper launch refusal.
|
|
4
|
-
|
|
5
|
-
Public `prepareCapturedComposition` accepts optional `launch` and `helperLaunches`:
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
{
|
|
9
|
-
deployment, source,
|
|
10
|
-
launch: {
|
|
11
|
-
runtime: "claude",
|
|
12
|
-
executable: {capability: "example.runtime", command: "native"},
|
|
13
|
-
args: [],
|
|
14
|
-
env: {NATIVE_PROFILE: {fromEnv: "EXPLICIT_PROFILE"}},
|
|
15
|
-
model: "explicit-native-model-id",
|
|
16
|
-
yolo: false
|
|
17
|
-
},
|
|
18
|
-
helperLaunches: {
|
|
19
|
-
"example.provider:worker": {/* independent complete request of the same shape */}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
All six request fields are required when a request is present. Model is literal nonempty text, not an alias resolved against current configuration. There is no runtime/model/yolo defaulting, package discovery, PATH lookup or enrollment during this compilation. Environment values follow the existing launch-config validator; additionally all captured OATS/instance aliases are reserved. Credentials must remain references, not literal values or arguments.
|
|
25
|
-
|
|
26
|
-
The original executable subset was a command already exported by an exact selected capability. The [native start candidate](2026-09-17-captured-native-start.md) additionally accepts an explicit normalized absolute external host-tool path, without inventing a mandatory runtime capability or pretending to pin every host binary. No new package resolver is introduced, and a host-tool path is explicit host authority, not a retained OATS artifact. A selected capability can export a native runtime entrypoint; executable validity, required dependency roots and runtime-specific loading still need qualification before actual start. This is not a general native-runtime installer or a replacement for runtime package acquisition.
|
|
27
|
-
|
|
28
|
-
Compilation reuses existing command resources and the existing LaunchRecipe codec. The stored recipe uses `executable:"captured-resource"`, `executableResource` referencing the exact file, and `entrypoint:{capability,command}`. It carries explicit args/env/model/yolo plus pending hook contributions and the TASK.md prompt convention. A future start must resolve the resource from the verified record and match the declared entrypoint, never pass the sentinel to a shell or look for an ambient executable. A resource pointer must match its selected capability and canonical command resource key.
|
|
29
|
-
|
|
30
|
-
Helpers use only their exact own helper-map request; they never inherit the primary instance's launch selection. An omitted request stays `launch:null`. Unknown helper keys refuse. All primary/helper requests compile before any helper record publication, preventing a partially usable graph when another request is unsupported.
|
|
31
|
-
|
|
32
|
-
When selected manifest requirements apply to the requested runtime, compilation currently refuses `needs-configuration`: those required runtime package roots must first be retained and loaded by a qualified adapter. It never falls back to globally installed plugins/packages. Unsupported work modes still refuse at materialization/start. Existing helper-authored policy refusals are unchanged.
|
|
33
|
-
|
|
34
|
-
## Next execution boundary
|
|
35
|
-
|
|
36
|
-
Actual native start must consume these inputs under the same durable incarnation and admitted intent as other actions. The implementation sequence is:
|
|
37
|
-
|
|
38
|
-
1. Verify declared entrypoint, exact approval, executable permissions, runtime dependencies and environment references; validate supported native arguments. No provider/backend observation or stop before these checks.
|
|
39
|
-
2. Reuse existing native-history, independent session receipt and pending-start primitives. A captured home must bypass legacy `planLaunch`/current config entirely, including starts reached through the older public home API.
|
|
40
|
-
3. Admit the entrypoint action before backend effects; bind explicit backend placement and task input to the request. Use the admitted execution ID in pending/start evidence instead of generating an unrelated logical request ID. Retain unknown targets and receipts on failed acknowledgment or metadata writes.
|
|
41
|
-
4. Test actual inert native entrypoint execution for fresh primary/helper homes, source/config deletion, retries and preflight-before-stop. Only then expose real captured start/restart/helper launch; no `--no-launch` proxy.
|
|
42
|
-
5. Add exact managed runtime roots/loader support. Pi-specific changes require complete installed documentation reads before implementation; legacy ambient Pi extension behavior is not silently reused or changed by this generic request compiler.
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Command/curriculum preparation
|
|
2
|
-
|
|
3
|
-
`prepareCapturedComposition(input)` now connects native by-reference import,
|
|
4
|
-
workspace/adoption choices, package preparation, manifest defaults and retained
|
|
5
|
-
resources into real records. Provider-owned binding preparation and captured command
|
|
6
|
-
readiness now use the [retained codec broker](2026-09-16-provider-binding-codecs.md).
|
|
7
|
-
This is NOT yet full launch/runtime/lifecycle/migration completion.
|
|
8
|
-
|
|
9
|
-
Public CLI (new command/curriculum preparation, no launch):
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
oats prepare --dir /deployment --source git:github.com/example/souls --revision v1 --export agents/expert --alias expert --json
|
|
13
|
-
oats prepare --dir /deployment --workspace git:github.com/example/workspace --alias expert --json
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Use `--workspace-revision` to select a workspace revision explicitly; otherwise the
|
|
17
|
-
hosting default is observed, never guessed. `--work` overrides the source's work hint.
|
|
18
|
-
A new-work request needs its own explicit absolute `--dir`; an inherited command
|
|
19
|
-
selector does not supply or change that intent. Unsupported/mixed flags refuse.
|
|
20
|
-
Incomplete preparation returns a failing envelope with prospective software details;
|
|
21
|
-
a complete but unapproved record reports `approval-required`, not executable readiness.
|
|
22
|
-
|
|
23
|
-
Input names an explicit deployment and four-field source reference
|
|
24
|
-
`{source,soul,revision,alias}`. A workspace request permits selecting an advertised
|
|
25
|
-
alias instead. Optional member context requires reciprocal eligibility. Workspace
|
|
26
|
-
adoption entries apply by qualified source identity across aliases; an alias cannot
|
|
27
|
-
hide another entry's contradictory defaults. No publisher workspace is adopted.
|
|
28
|
-
|
|
29
|
-
The wrapper reads one lock-v3 snapshot before creating scratch/fetching. Legacy
|
|
30
|
-
state requires migration. A native repository transaction freezes observations;
|
|
31
|
-
same-repo package roots and dependencies share that source commit. Packages use
|
|
32
|
-
the existing walker/materializer/validators. Only selected capabilities enter the
|
|
33
|
-
main record; per-root projections of the resolved package graph populate lock v3.
|
|
34
|
-
They are graph projections, not another dependency resolver.
|
|
35
|
-
|
|
36
|
-
Source retention includes the entire soul subtree, declared resources and needed
|
|
37
|
-
same-repository package roots. Kernel instructions/skills are copied from explicitly
|
|
38
|
-
named trusted resources, never by sweeping a checkout, credentials or node_modules.
|
|
39
|
-
The record includes ordered instructions, discovered skill entries, inventoried
|
|
40
|
-
command/hook files, and dedicated helper records. Duplicate skill names or a helper's
|
|
41
|
-
own unresolved software, provider, team or resource policy refuse rather than silently
|
|
42
|
-
inheriting incompatible parent choices/bindings. All helper definitions are preflighted
|
|
43
|
-
before any helper record is published; accepted helpers are then committed before the
|
|
44
|
-
main record.
|
|
45
|
-
|
|
46
|
-
Missing provider binding interface/approval or unresolved fields return
|
|
47
|
-
`needs-configuration` with no main resolution, while exact prospective package sets
|
|
48
|
-
remain available for explicit artifact-set approval. Approved providers normalize
|
|
49
|
-
fields into the same choice resolver, then render complete nonsecret bindings.
|
|
50
|
-
Mutable host/provider readiness is checked separately at each captured action;
|
|
51
|
-
a static binding is not certification. Provider code does not run merely because it was downloaded.
|
|
52
|
-
No guessed nonsecret payload, owner, enrollment or privacy guarantee is generated.
|
|
53
|
-
Valid retained orphan objects/records may survive later refusal or selection CAS loss;
|
|
54
|
-
shared immutable stores are never rolled back wholesale.
|
|
55
|
-
|
|
56
|
-
Result fields include `status`, `resolution`, `executionBinding`, exact observed
|
|
57
|
-
source revision, per-root software selections and problems. Programmatic standalone
|
|
58
|
-
preparation may carry an explicit `standaloneContextKey` that is either non-empty
|
|
59
|
-
opaque text or explicit null; it is stored literally in the existing standalone
|
|
60
|
-
context. It conflicts with workspace context and is never derived from source/work
|
|
61
|
-
paths or the OS user. Null does not qualify messaging. Complete results expose
|
|
62
|
-
`responsibleHuman`: null means messaging is actually disabled; incomplete preparation
|
|
63
|
-
does not manufacture that claim. Approval-required is separate from complete capture.
|
|
64
|
-
No spawn/setup/launch/scheduler side effect occurs during preparation.
|
|
65
|
-
|
|
66
|
-
The home/worker binding extension agreed with the scheduler consumer is:
|
|
67
|
-
|
|
68
|
-
```text
|
|
69
|
-
executionBinding = {
|
|
70
|
-
schemaVersion: 1,
|
|
71
|
-
deployment: <absolute local scope>,
|
|
72
|
-
resolution: {schemaVersion: 1, id: <sha256-id>}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
It will be stored in instance metadata by captured lifecycle adoption. Existing homes
|
|
77
|
-
without it are legacy/evidence cases, not an excuse to infer current configuration.
|
|
78
|
-
Scheduler fields `definitionVersion`, `recurrencePolicy` and `execution` are coordinated
|
|
79
|
-
with that lane. A distinct execution ID identifies each admitted attempt; immutable
|
|
80
|
-
capsule content identity must not collapse two otherwise identical work intents.
|
|
81
|
-
|
|
82
|
-
Current records deliberately have no launch recipe or managed runtime-package claim.
|
|
83
|
-
Full helper-policy planning, work-target setup, captured lifecycle adoption and
|
|
84
|
-
explicit historical migration remain the next integration work. Native
|
|
85
|
-
source-deletion tests prove preparation, curriculum/helper reads, explicit prospective
|
|
86
|
-
approval and retained command execution—not those unfinished paths.
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Decision
|
|
3
|
-
status: accepted
|
|
4
|
-
title: Fresh-install-first Portable Souls rollout
|
|
5
|
-
description: Prioritize fresh provisioning over automatic historical migration while preserving target architecture and user custody.
|
|
6
|
-
timestamp: 2026-09-16
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Fresh-install-first Portable Souls rollout
|
|
10
|
-
|
|
11
|
-
The rollout can use fresh framework installations in controlled early deployments.
|
|
12
|
-
General in-place migration and historical reconstruction are therefore **not on the
|
|
13
|
-
current release-critical path**. This amends delivery sequencing in the
|
|
14
|
-
[implementation handoff](2026-09-15-portable-souls-handoff.md), not the underlying
|
|
15
|
-
[retention/evidence contract](2026-09-14-artifact-retention-contract.md).
|
|
16
|
-
|
|
17
|
-
## Priorities
|
|
18
|
-
|
|
19
|
-
1. Complete fresh source/workspace discovery and explicit deployment preparation.
|
|
20
|
-
2. Complete new-instance captured work placement, managed runtime/launch, lifecycle
|
|
21
|
-
and independent-work consumers, using one resolver and retained authority.
|
|
22
|
-
3. Qualify real provider behavior, including private-first messaging, then release
|
|
23
|
-
and deliberately provision the new deployment.
|
|
24
|
-
4. Deliver Desktop functional/UI parity after infrastructure deployment.
|
|
25
|
-
|
|
26
|
-
Park additional historical conversion, reconstructed-record publication and
|
|
27
|
-
migration-facing CLI development. Keep already delivered bounded partial/unknown
|
|
28
|
-
evidence and refusal safeguards; do not delete them or call deferred work complete.
|
|
29
|
-
Fresh setup should reuse existing discovery/preparation mechanisms, not introduce
|
|
30
|
-
another config engine, registry or broad installer subsystem.
|
|
31
|
-
|
|
32
|
-
## Unchanged architecture and custody
|
|
33
|
-
|
|
34
|
-
Source-complete souls, by-reference imports, two authorities/one resolver,
|
|
35
|
-
immutable captured execution, exact approval, provider-neutral external knowledge
|
|
36
|
-
and no new hosted control plane remain required. A clean install does not waive
|
|
37
|
-
source-deletion/A-versus-B execution acceptance or actual provider/privacy checks.
|
|
38
|
-
|
|
39
|
-
Fresh OATS state does not require deleting an existing project repository. It is
|
|
40
|
-
not permission to wipe knowledge, native transcripts, unfinished work, identities
|
|
41
|
-
or credentials. Use explicit fresh state/deployment locations; preserve old data
|
|
42
|
-
and running sessions until replacement is qualified. Cleanup/retirement remains
|
|
43
|
-
explicit and custody-preserving.
|
|
44
|
-
|
|
45
|
-
If historical migration is revisited later, missing evidence stays partial/unknown;
|
|
46
|
-
old trust or current files cannot be used to invent historical authority. This is
|
|
47
|
-
a scoped deferral, not a second permanent resolution engine or a weakened contract.
|