@awebai/oats 0.22.17 → 0.23.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 +7 -2
- package/bin/oats.mjs +365 -31
- package/docs/configuration.md +65 -0
- package/docs/design/2026-09-07-mobile-agent-management-proposal.md +228 -0
- package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +558 -0
- package/docs/design/2026-09-13-knowledge-and-memory-direction.md +744 -0
- package/docs/design/2026-09-13-knowledge-implementation.md +127 -0
- package/docs/design/2026-09-13-knowledge-location-contract.md +340 -0
- package/docs/design/launch-configurations.md +164 -0
- package/docs/design/package-runtime-api.md +177 -3
- package/docs/desktop-cli-api.md +68 -2
- package/docs/desktop-instance-start.md +39 -3
- package/docs/execution-targets.md +16 -0
- package/docs/knowledge-capability-authoring.md +98 -0
- package/docs/knowledge-reference/acceptance.md +108 -0
- package/docs/knowledge-reference/adoption.md +61 -0
- package/docs/knowledge-reference/harvester.md +107 -0
- package/docs/knowledge-reference/model.md +84 -0
- package/docs/knowledge-reference/package-craft.md +126 -0
- package/docs/knowledge-reference/provider-mapping.md +77 -0
- package/docs/knowledge-reference/reader-capture.md +87 -0
- package/docs/knowledge-theory.md +20 -6
- package/docs/layers.md +8 -7
- package/docs/oats-config.schema.json +33 -2
- package/docs/release-notes/v0.22.18.md +101 -0
- package/docs/release-notes/v0.22.19.md +115 -0
- package/docs/release-notes/v0.23.0.md +93 -0
- package/docs/souls-and-instances.md +18 -1
- package/injects/work-directory.md +18 -0
- package/lib/core.mjs +1109 -187
- package/lib/schedule.mjs +12 -2
- package/lib/servers.mjs +89 -4
- package/package.json +2 -2
- package/packages/record/README.md +19 -0
- package/packages/record/bin/capture.mjs +144 -53
- package/packages/record/bin/recall.mjs +17 -11
- package/packages/record/bin/record-native-start.mjs +11 -0
- package/packages/record/lib/capture-cc.mjs +82 -27
- package/packages/record/lib/capture-lock.mjs +81 -5
- package/packages/record/lib/formats.mjs +108 -21
- package/packages/record/lib/native-history.mjs +87 -0
- package/packages/record/lib/session-roots.mjs +90 -0
- package/packages/record/lib/session-snapshot.mjs +61 -0
- package/packages/record/lib/sessions-for-home.mjs +88 -56
- package/skills/oats/SKILL.md +3 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# OATS v0.22.18
|
|
2
|
+
|
|
3
|
+
Choose how an agent runs without replacing its home. Desktop offers
|
|
4
|
+
**Start…** for stopped instances and **Restart with…** for running
|
|
5
|
+
instances, with harness, model, permissions and named launch
|
|
6
|
+
configurations. The kernel records what each home was started with and
|
|
7
|
+
starts it again the same way.
|
|
8
|
+
|
|
9
|
+
## Named launch configurations
|
|
10
|
+
|
|
11
|
+
Define a reusable configuration in a scope's `oats-config.yaml`, or use
|
|
12
|
+
**Manage launch configurations** in Desktop. A configuration chooses `pi`,
|
|
13
|
+
`claude` or `codex`, an optional executable or wrapper, literal arguments,
|
|
14
|
+
environment values or references, a default model and the shared `yolo`
|
|
15
|
+
setting.
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
launch-configs:
|
|
19
|
+
codex-personal:
|
|
20
|
+
runtime: codex
|
|
21
|
+
args: ["--profile", "personal"]
|
|
22
|
+
yolo: true
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Arguments are passed literally; native configuration files and account
|
|
26
|
+
settings stay under the harness's control. For environment credentials use
|
|
27
|
+
a reference such as `API_KEY: {fromEnv: PERSONAL_KEY}`: the execution host
|
|
28
|
+
resolves it each time the agent starts. The recorded recipe, receipts,
|
|
29
|
+
previews, roster answers and spawn answers do not expose the value (the
|
|
30
|
+
launch itself and its transport necessarily use it). A configuration cannot name the kernel's own launch
|
|
31
|
+
environment or override environment a capability owns.
|
|
32
|
+
|
|
33
|
+
An existing instance keeps its recorded launch configuration even if the
|
|
34
|
+
scope's definition changes or disappears. Select a named configuration
|
|
35
|
+
explicitly to apply its current definition. Changing only the model or
|
|
36
|
+
permissions keeps the rest of the recorded invocation; choosing a harness
|
|
37
|
+
without a configuration starts that harness's defaults, with no model
|
|
38
|
+
carried across harnesses.
|
|
39
|
+
|
|
40
|
+
`oats launch-config list | set | remove | preview` author and inspect
|
|
41
|
+
configurations; `oats spawn --launch-config` starts a new instance under
|
|
42
|
+
one; a soul may name a default (`launch-config:` in soul.yaml,
|
|
43
|
+
`oats soul set --launch-config`).
|
|
44
|
+
|
|
45
|
+
## Restart in place
|
|
46
|
+
|
|
47
|
+
`oats session start` with a selection validates the requested launch
|
|
48
|
+
(recipe, executable, references, capability preparation, runtime packages)
|
|
49
|
+
and starts a stopped instance; it never stops a running harness. Only
|
|
50
|
+
`oats session restart` does: it runs the same checks first, then sends
|
|
51
|
+
SIGTERM to the harness under the pane's launcher and waits a bounded time
|
|
52
|
+
for it to end; it does not escalate to a forced kill and refuses to launch
|
|
53
|
+
a second harness if it cannot confirm the first has stopped, reporting what
|
|
54
|
+
was signalled and observed. The instance keeps its home, identity, work and
|
|
55
|
+
notes; OATS does not transfer a native conversation between harnesses.
|
|
56
|
+
Save work before restarting.
|
|
57
|
+
|
|
58
|
+
Capabilities take part through what was captured for the home: a capability
|
|
59
|
+
may declare a `launch` hook to prepare another harness (under the settings
|
|
60
|
+
captured at spawn, with the scope's current manifest and trust); a
|
|
61
|
+
capability that contributed harness-specific arguments and cannot prepare
|
|
62
|
+
the new one refuses the switch. Homes that predate launch recipes are
|
|
63
|
+
converted narrowly from their recorded command when a selection asks for
|
|
64
|
+
it; unrecognized arguments are refused by name.
|
|
65
|
+
|
|
66
|
+
One limitation, stated rather than hidden: a runtime-package requirement is
|
|
67
|
+
verified with the package manager's controlled list command under the
|
|
68
|
+
launch's environment and executable, which cannot carry a configuration's
|
|
69
|
+
arguments. When such a requirement applies and the configuration passes
|
|
70
|
+
arguments, the launch is not reported verified (`E_LAUNCH_PROBE_UNSUPPORTED`):
|
|
71
|
+
put native configuration a required package must see in a wrapper
|
|
72
|
+
executable or the environment.
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
oats launch-config list --dir /path/to/team
|
|
76
|
+
oats launch-config preview --home /path/to/instance --runtime codex --json
|
|
77
|
+
oats session restart --home /path/to/instance --launch-config codex-personal
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Local tmux and Herdr sessions use the same lifecycle operations. Registered
|
|
81
|
+
servers support configuration management and start/restart choices through
|
|
82
|
+
their installed OATS CLI (probe tokens `launch-config`, `session-restart`);
|
|
83
|
+
existing remote homes keep their saved route, and an older kernel is
|
|
84
|
+
refused after the compatibility probe, before any mutation or stop.
|
|
85
|
+
|
|
86
|
+
## Desktop fixes
|
|
87
|
+
|
|
88
|
+
Tabs from other workspaces stay hidden. Instance action menus are positioned
|
|
89
|
+
correctly when opened and remain stable through roster refreshes. Failed
|
|
90
|
+
launch preflight checks are shown in the invocation preview, and an accepted
|
|
91
|
+
launch is not presented as a running agent until the terminal is observed.
|
|
92
|
+
|
|
93
|
+
## Also in this release
|
|
94
|
+
|
|
95
|
+
- Capture lock (source only; the installed capture service is unchanged):
|
|
96
|
+
nonce-checked ownership, cleanup of a failed initialization that respects
|
|
97
|
+
a replacement, release outcomes reported as observed, and the privacy
|
|
98
|
+
loader's exit no longer leaves a lock behind.
|
|
99
|
+
- A design proposal for managing agents from an iPhone over Tailscale
|
|
100
|
+
(docs/design/2026-09-07-mobile-agent-management-proposal.md); no
|
|
101
|
+
implementation ships.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# OATS v0.22.19
|
|
2
|
+
|
|
3
|
+
Version 0.22.18 was tagged but never published: its hosted gate failed on
|
|
4
|
+
four tests that pass on macOS and fail on Linux (two launch tests calling
|
|
5
|
+
the kernel directly resolved the real harness binary on the test process
|
|
6
|
+
PATH, one launch test spawned zsh, which the runner does not install, and
|
|
7
|
+
one capture-lock test where Linux reused the inode of an unlinked
|
|
8
|
+
directory). The tag stays fixed and unpublished. This release carries the
|
|
9
|
+
same content with the corrections below.
|
|
10
|
+
|
|
11
|
+
Choose how an agent runs without replacing its home. Desktop offers
|
|
12
|
+
**Start…** for stopped instances and **Restart with…** for running
|
|
13
|
+
instances, with harness, model, permissions and named launch
|
|
14
|
+
configurations. The kernel records what each home was started with and
|
|
15
|
+
starts it again the same way.
|
|
16
|
+
|
|
17
|
+
## Named launch configurations
|
|
18
|
+
|
|
19
|
+
Define a reusable configuration in a scope's `oats-config.yaml`, or use
|
|
20
|
+
**Manage launch configurations** in Desktop. A configuration chooses `pi`,
|
|
21
|
+
`claude` or `codex`, an optional executable or wrapper, literal arguments,
|
|
22
|
+
environment values or references, a default model and the shared `yolo`
|
|
23
|
+
setting.
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
launch-configs:
|
|
27
|
+
codex-personal:
|
|
28
|
+
runtime: codex
|
|
29
|
+
args: ["--profile", "personal"]
|
|
30
|
+
yolo: true
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Arguments are passed literally; native configuration files and account
|
|
34
|
+
settings stay under the harness's control. For environment credentials use
|
|
35
|
+
a reference such as `API_KEY: {fromEnv: PERSONAL_KEY}`: the execution host
|
|
36
|
+
resolves it each time the agent starts. The recorded recipe, receipts,
|
|
37
|
+
previews, roster answers and spawn answers do not expose the value (the
|
|
38
|
+
launch itself and its transport necessarily use it). A configuration cannot name the kernel's own launch
|
|
39
|
+
environment or override environment a capability owns.
|
|
40
|
+
|
|
41
|
+
An existing instance keeps its recorded launch configuration even if the
|
|
42
|
+
scope's definition changes or disappears. Select a named configuration
|
|
43
|
+
explicitly to apply its current definition. Changing only the model or
|
|
44
|
+
permissions keeps the rest of the recorded invocation; choosing a harness
|
|
45
|
+
without a configuration starts that harness's defaults, with no model
|
|
46
|
+
carried across harnesses.
|
|
47
|
+
|
|
48
|
+
`oats launch-config list | set | remove | preview` author and inspect
|
|
49
|
+
configurations; `oats spawn --launch-config` starts a new instance under
|
|
50
|
+
one; a soul may name a default (`launch-config:` in soul.yaml,
|
|
51
|
+
`oats soul set --launch-config`).
|
|
52
|
+
|
|
53
|
+
## Restart in place
|
|
54
|
+
|
|
55
|
+
`oats session start` with a selection validates the requested launch
|
|
56
|
+
(recipe, executable, references, capability preparation, runtime packages)
|
|
57
|
+
and starts a stopped instance; it never stops a running harness. Only
|
|
58
|
+
`oats session restart` does: it runs the same checks first, then sends
|
|
59
|
+
SIGTERM to the harness under the pane's launcher and waits a bounded time
|
|
60
|
+
for it to end; it does not escalate to a forced kill and refuses to launch
|
|
61
|
+
a second harness if it cannot confirm the first has stopped, reporting what
|
|
62
|
+
was signalled and observed. The instance keeps its home, identity, work and
|
|
63
|
+
notes; OATS does not transfer a native conversation between harnesses.
|
|
64
|
+
Save work before restarting.
|
|
65
|
+
|
|
66
|
+
Capabilities take part through what was captured for the home: a capability
|
|
67
|
+
may declare a `launch` hook to prepare another harness (under the settings
|
|
68
|
+
captured at spawn, with the scope's current manifest and trust); a
|
|
69
|
+
capability that contributed harness-specific arguments and cannot prepare
|
|
70
|
+
the new one refuses the switch. Homes that predate launch recipes are
|
|
71
|
+
converted narrowly from their recorded command when a selection asks for
|
|
72
|
+
it; unrecognized arguments are refused by name.
|
|
73
|
+
|
|
74
|
+
One limitation, stated rather than hidden: a runtime-package requirement is
|
|
75
|
+
verified with the package manager's controlled list command under the
|
|
76
|
+
launch's environment and executable, which cannot carry a configuration's
|
|
77
|
+
arguments. When such a requirement applies and the configuration passes
|
|
78
|
+
arguments, the launch is not reported verified (`E_LAUNCH_PROBE_UNSUPPORTED`):
|
|
79
|
+
put native configuration a required package must see in a wrapper
|
|
80
|
+
executable or the environment.
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
oats launch-config list --dir /path/to/team
|
|
84
|
+
oats launch-config preview --home /path/to/instance --runtime codex --json
|
|
85
|
+
oats session restart --home /path/to/instance --launch-config codex-personal
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Local tmux and Herdr sessions use the same lifecycle operations. Registered
|
|
89
|
+
servers support configuration management and start/restart choices through
|
|
90
|
+
their installed OATS CLI (probe tokens `launch-config`, `session-restart`);
|
|
91
|
+
existing remote homes keep their saved route, and an older kernel is
|
|
92
|
+
refused after the compatibility probe, before any mutation or stop.
|
|
93
|
+
|
|
94
|
+
## Desktop fixes
|
|
95
|
+
|
|
96
|
+
Tabs from other workspaces stay hidden. Instance action menus are positioned
|
|
97
|
+
correctly when opened and remain stable through roster refreshes. Failed
|
|
98
|
+
launch preflight checks are shown in the invocation preview, and an accepted
|
|
99
|
+
launch is not presented as a running agent until the terminal is observed.
|
|
100
|
+
|
|
101
|
+
## Also in this release
|
|
102
|
+
|
|
103
|
+
- Capture lock (source only; the installed capture service is unchanged):
|
|
104
|
+
nonce-checked ownership, cleanup of a failed initialization that respects
|
|
105
|
+
a replacement, release outcomes reported as observed, and the privacy
|
|
106
|
+
loader's exit no longer leaves a lock behind. The initializing directory
|
|
107
|
+
is held open until its owner record is written or its cleanup finishes,
|
|
108
|
+
preventing its inode from being reused during cleanup; a replacement
|
|
109
|
+
directory is left alone.
|
|
110
|
+
- Test fixtures: the launch tests resolve their fake harness binaries on the
|
|
111
|
+
test process PATH and exercise only the shells the host installs; no
|
|
112
|
+
kernel change.
|
|
113
|
+
- A design proposal for managing agents from an iPhone over Tailscale
|
|
114
|
+
(docs/design/2026-09-07-mobile-agent-management-proposal.md); no
|
|
115
|
+
implementation ships.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# OATS v0.23.0
|
|
2
|
+
|
|
3
|
+
This is the prerequisite kernel release for capability-owned external knowledge
|
|
4
|
+
and independent harvesting. It adds generic directory work and more reliable
|
|
5
|
+
record capture; it does **not** migrate existing knowledge or select a new
|
|
6
|
+
knowledge integration. The bundled `oats.okf` and official catalog pin remain
|
|
7
|
+
**1.6.1**. OKF 2.0 is a separate, subsequent capability release; no new catalog
|
|
8
|
+
pin or bundled v2 runtime is included here.
|
|
9
|
+
|
|
10
|
+
## Independent directory work
|
|
11
|
+
|
|
12
|
+
`work: directory` creates an instance-owned ordinary `work/` directory. It does
|
|
13
|
+
not require a Git repository, branch, worktree, or fabricated commit. Existing
|
|
14
|
+
Git work modes retain their semantics. A capability can use directory workers
|
|
15
|
+
for non-Git knowledge custody without making its storage model a kernel policy.
|
|
16
|
+
|
|
17
|
+
Directory lifecycle checks reject a replaced, missing or symlinked work root
|
|
18
|
+
before launch, and preserve retryable cleanup obligations when compensation
|
|
19
|
+
cannot finish. Hooks receive the running kernel's CLI path. Generic scheduled
|
|
20
|
+
commands no longer inherit another instance's source identity.
|
|
21
|
+
|
|
22
|
+
## Evidence capture and recall
|
|
23
|
+
|
|
24
|
+
Record capture distinguishes completed work from skipped, held, incomplete and
|
|
25
|
+
failed attempts. Capture verifies attributed native transcript identity,
|
|
26
|
+
honors native storage roots and recorded launch environments, and includes
|
|
27
|
+
supported nested Claude subagent transcripts. Uncertain discovery, unreadable
|
|
28
|
+
or replaced sources, incomplete tails and lock failures are not certified as
|
|
29
|
+
complete evidence. Large piped recall responses drain stdout before exiting.
|
|
30
|
+
Managed starts now preserve independent, execution-time native record-location
|
|
31
|
+
history, so a later observer's environment cannot silently redirect capture.
|
|
32
|
+
History survives retirement and is not a knowledge bundle. Older or standalone
|
|
33
|
+
sessions without that authority fail closed on `capture --home`; an operator
|
|
34
|
+
can explicitly use `oats capture --current-roots --home <home>` to inventory the
|
|
35
|
+
currently configured roots, but that does not certify all historical locations.
|
|
36
|
+
|
|
37
|
+
These are evidence-preservation guarantees, not a claim that a model has learned
|
|
38
|
+
from the captured records.
|
|
39
|
+
|
|
40
|
+
## Optional knowledge-theory authoring resources
|
|
41
|
+
|
|
42
|
+
`oats.knowledge-theory` 1.0.0 is an optional **Git-distributed OATS package**
|
|
43
|
+
in this repository's self-contained `oats-package/` subtree. It exports
|
|
44
|
+
`knowledge-theory-expert` and the `knowledge-capability-authoring` skill with
|
|
45
|
+
the complete local reference curriculum. The kernel npm tarball ships public
|
|
46
|
+
docs and the CLI, but **excludes** this optional payload entirely. npm omits
|
|
47
|
+
symlinks; a partial copy without the canonical source alias is not a supported
|
|
48
|
+
package. Acquisition does not synthesize aliases or relax integrity semantics.
|
|
49
|
+
|
|
50
|
+
After this immutable tag is published, acquire through the normal Git package
|
|
51
|
+
route and explicitly opt in for an author soul:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
oats install git:github.com/awebai/oats@v0.23.0 --dir /path/to/scope
|
|
55
|
+
oats use oats.knowledge-theory --soul <author-soul> --dir /path/to/scope
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The default Git package root is `oats-package/`; acquisition locks the resolved
|
|
59
|
+
commit and alone activates nothing. An official catalog pin can follow only
|
|
60
|
+
after the immutable tag exists. No unpublished theory catalog pin is shipped
|
|
61
|
+
in this prerequisite release.
|
|
62
|
+
|
|
63
|
+
The package has no knowledge-layer binding, mandatory injection, runtime hook,
|
|
64
|
+
command or dependency on OKF. Authors may adopt, adapt or replace the reference
|
|
65
|
+
model. Each selected knowledge capability owns its runtime, reader/capture,
|
|
66
|
+
judgment and delivery instructions. The first external-knowledge design covers
|
|
67
|
+
Git PR delivery and non-Git directory custody; no framework ACL layer is added.
|
|
68
|
+
|
|
69
|
+
Canonical references are published under
|
|
70
|
+
[the authoring guide](../knowledge-capability-authoring.md) and
|
|
71
|
+
[the reference model](../knowledge-reference/model.md), with byte-identical
|
|
72
|
+
copies in the Git-packaged skill. Installed instances read those local copies,
|
|
73
|
+
not a source checkout or mutable network documentation. Git transport preserves
|
|
74
|
+
the tracked source `CLAUDE.md -> AGENTS.md`; generated instances receive their
|
|
75
|
+
own canonical alias through the unchanged normal composition path.
|
|
76
|
+
|
|
77
|
+
## Packaging and compatibility
|
|
78
|
+
|
|
79
|
+
Kernel, Pi adapter and Desktop versions are aligned at 0.23.0, including both
|
|
80
|
+
lockfiles. Desktop still uses CLI API v1; its accepted kernel band is widened
|
|
81
|
+
to `>=0.22.0 <0.24.0`, retaining support for released 0.22.x kernels.
|
|
82
|
+
|
|
83
|
+
Local, CI and runnerless release checks share the recursive JavaScript
|
|
84
|
+
inventory, including capability libraries, record and optional package scripts.
|
|
85
|
+
Validation checks the optional theory manifests and canonical curriculum parity.
|
|
86
|
+
Pack checks require public docs and reject any optional package bytes in the
|
|
87
|
+
npm kernel. The installed kernel acquires an exact, self-contained Git fixture
|
|
88
|
+
through direct and catalog routes, checks its tracked source alias, then removes
|
|
89
|
+
the fixture checkout. Probes verify local reference closure, alternative-theory
|
|
90
|
+
isolation, discovery, scaffold and retirement in Git and directory scopes without
|
|
91
|
+
launching models. Publication
|
|
92
|
+
remains gated on the exact tag's build/test/smoke results and Desktop artifacts;
|
|
93
|
+
already-versioned candidates remain safe with `--allow-same-version`.
|
|
@@ -25,9 +25,10 @@ A soul is durable and committed. It is the part you review, improve, and keep.
|
|
|
25
25
|
| `kind` | `persistent` for committed agents, `local` for full local souls under `local-agents/` (legacy `tmp` reads as `local`). |
|
|
26
26
|
| `description` | Short role description. |
|
|
27
27
|
| `repo` | Target repo, absolute or relative to the agents root's parent. |
|
|
28
|
-
| `work` | `worktree` or `
|
|
28
|
+
| `work` | `worktree`, `checkout`, `attached`, `workspace`, or `directory`. |
|
|
29
29
|
| `runtime` | `pi` or `claude` — the harness new instances launch on; a spawn can override with `--runtime`. For `claude`, the binary is `claude` unless a local-only `oats-claude-config` file (closest one walking up from the repo; one line naming the binary, e.g. `claude-personal`) selects another — a personal machine preference for account selection, never committed. With the aweb messaging integration active, claude sessions get the `aweb-channel` plugin wired at spawn for real-time push events. |
|
|
30
30
|
| `model` | Optional default model — a `provider/id[:thinking]` pattern or a comma-separated preference list (`github-copilot/x:high, anthropic/x:high`); at spawn the first entry whose provider/model is available wins (pi models probed via `pi --list-models`). For the `claude` runtime the value is translated to what the claude CLI accepts: `anthropic/<id>[:thinking]` becomes the bare `<id>`, aliases and bare `claude-*` ids pass through, other providers' entries are dropped, and nothing usable falls back to claude's own default. A spawn can override it. |
|
|
31
|
+
| `launch-config` | Optional default launch configuration for new instances (a name declared under `launch-configs:` in the scope's config; see docs/design/launch-configurations.md). `oats spawn --launch-config <name|none>` overrides it; `oats soul set --launch-config <name>` / `--no-launch-config` edit it. |
|
|
31
32
|
|
|
32
33
|
A soul is model-agnostic as an artifact. Its files are plain operating docs,
|
|
33
34
|
skills, and knowledge. `model` is only the default choice for new instances,
|
|
@@ -255,6 +256,22 @@ only what the briefing names, keep commits small and attributable. Retiring
|
|
|
255
256
|
an attached instance never removes the shared tree. The packaged
|
|
256
257
|
`work-attached` instruction source carries this discipline into each generated instance AGENTS.md.
|
|
257
258
|
|
|
259
|
+
### `directory` — independent execution
|
|
260
|
+
|
|
261
|
+
`work/` is a new instance-owned directory, not a Git repo or a link to a source.
|
|
262
|
+
Use it explicitly for capability workers that need private execution space
|
|
263
|
+
without Git. `repo` (or `--repo`) supplies configuration context only and may be
|
|
264
|
+
an ordinary directory; without it, the deployment scope is used. An
|
|
265
|
+
`oats-config.yaml` below laptop scope supports package-only deployments before
|
|
266
|
+
any local souls exist. No implicit fallback changes the other modes.
|
|
267
|
+
|
|
268
|
+
`--work-dir` and `--branch` are rejected. Canonical instructions, skill
|
|
269
|
+
composition, provider trust and runtime preflight still apply. No worktree setup
|
|
270
|
+
runs. Retirement preserves nonempty work in verified recovery storage beside the
|
|
271
|
+
home (`workRecovery.path/work`) before deleting it, including files created by
|
|
272
|
+
hooks; directory work has no disposable-root exemptions. The work-root cannot be
|
|
273
|
+
exchanged for a symlink. Recovery does not replace the worker's delivery protocol.
|
|
274
|
+
|
|
258
275
|
### `workspace` — cross-repo coordinator
|
|
259
276
|
|
|
260
277
|
`work/` is a symlink to the **whole workspace** (the team scope declared by
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## Work mode: directory
|
|
2
|
+
|
|
3
|
+
Your `./work` is an **instance-owned execution directory**. It is not a Git
|
|
4
|
+
worktree, a checkout, or a link to the source instance or deployment context.
|
|
5
|
+
The context recorded as `repo` supplies configuration; it grants no permission
|
|
6
|
+
to edit that directory.
|
|
7
|
+
|
|
8
|
+
- Do task work inside `./work`. No Git repository or branch is created for you;
|
|
9
|
+
do not initialize a fake repository to satisfy a workflow. Git might discover
|
|
10
|
+
a containing repository; that does not authorize work in the containing tree.
|
|
11
|
+
- Access external inputs and destinations only as explicitly authorized by the
|
|
12
|
+
task and active capabilities. This mode does not impose a storage provider or
|
|
13
|
+
a publication protocol.
|
|
14
|
+
- Keep canonical instructions in the instance's `AGENTS.md`; `CLAUDE.md` is its
|
|
15
|
+
compatibility symlink. Run OATS lifecycle/capability commands from home.
|
|
16
|
+
- Retirement removes the execution directory only after nonempty work has a
|
|
17
|
+
verified copy in the reported recovery storage beside the home. Recovery is
|
|
18
|
+
not publication: deliver your results through the task's own protocol first.
|