@awebai/oats 0.29.4 → 0.30.1
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 +194 -50
- package/docs/capabilities.md +160 -171
- package/docs/capability-manifest.schema.json +6 -11
- 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 +97 -117
- 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 +77 -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 +83 -0
- package/docs/release-lane.md +82 -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.30.0.md +205 -0
- package/docs/release-notes/v0.30.1.md +123 -0
- package/docs/schedules.md +280 -363
- 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 +137 -215
- package/lib/automations.mjs +21 -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 +1 -1
- package/lib/resolve.mjs +30 -88
- package/lib/schedule.mjs +1 -1
- package/lib/teams-verbs.mjs +195 -0
- package/lib/teams.mjs +190 -0
- package/lib/triggers.mjs +2 -2
- package/lib/workspace.mjs +54 -147
- package/package-catalog.json +10 -16
- package/package.json +1 -3
- package/skills/oats-getting-started/SKILL.md +25 -13
- package/capabilities/oats-authoring/LICENSE +0 -21
- package/capabilities/oats-authoring/oats-package.json +0 -11
- package/capabilities/oats-authoring/oats.json +0 -12
- package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +0 -84
- package/capabilities/oats-authoring/skills/skill-craft/SKILL.md +0 -109
- package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +0 -116
- package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +0 -11
- package/capabilities/oats-aweb/bin/oats-aweb.mjs +0 -1338
- package/capabilities/oats-aweb/injects/aweb.md +0 -47
- package/capabilities/oats-aweb/lib/binding-wire.mjs +0 -356
- package/capabilities/oats-aweb/lib/captured-execution.mjs +0 -91
- package/capabilities/oats-aweb/lib/captured-native.mjs +0 -91
- package/capabilities/oats-aweb/lib/grant-custody.mjs +0 -38
- package/capabilities/oats-aweb/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-aweb/lib/portable-binding.mjs +0 -146
- package/capabilities/oats-aweb/lib/session-readiness.mjs +0 -56
- package/capabilities/oats-aweb/lib/wake-receive.mjs +0 -56
- package/capabilities/oats-aweb/oats.json +0 -208
- package/capabilities/oats-aweb/skills/LICENSE +0 -21
- package/capabilities/oats-aweb/skills/VENDORED.md +0 -31
- package/capabilities/oats-aweb/skills/aweb-identity/SKILL.md +0 -201
- package/capabilities/oats-aweb/skills/aweb-messaging/SKILL.md +0 -161
- package/capabilities/oats-aweb/skills/aweb-messaging/references/messaging-scenarios.md +0 -61
- package/capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md +0 -116
- package/capabilities/oats-aweb/skills/aweb-team-membership/references/team-membership-reference.md +0 -74
- package/capabilities/oats-aweb/skills/oats-aweb/SKILL.md +0 -216
- package/capabilities/oats-jira/bin/oats-jira.mjs +0 -40
- package/capabilities/oats-jira/injects/jira.md +0 -10
- package/capabilities/oats-jira/oats.json +0 -22
- package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +0 -179
- package/capabilities/oats-linear/bin/oats-linear-hook.mjs +0 -34
- package/capabilities/oats-linear/bin/oats-linear.mjs +0 -344
- package/capabilities/oats-linear/injects/linear.md +0 -8
- package/capabilities/oats-linear/oats.json +0 -24
- package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +0 -223
- package/capabilities/oats-okf/bin/oats-okf-binding.mjs +0 -14
- package/capabilities/oats-okf/bin/oats-okf.mjs +0 -209
- package/capabilities/oats-okf/injects/okf.md +0 -42
- package/capabilities/oats-okf/lib/binding-wire.mjs +0 -348
- package/capabilities/oats-okf/lib/captured-worker.mjs +0 -109
- package/capabilities/oats-okf/lib/config.mjs +0 -124
- package/capabilities/oats-okf/lib/consult.mjs +0 -518
- package/capabilities/oats-okf/lib/harvest-status.mjs +0 -88
- package/capabilities/oats-okf/lib/harvest-switch.mjs +0 -94
- package/capabilities/oats-okf/lib/inspection.mjs +0 -119
- package/capabilities/oats-okf/lib/invocation-context.mjs +0 -111
- package/capabilities/oats-okf/lib/invocation-shape.mjs +0 -135
- package/capabilities/oats-okf/lib/io.mjs +0 -118
- package/capabilities/oats-okf/lib/migration.mjs +0 -137
- package/capabilities/oats-okf/lib/okf-validate.mjs +0 -123
- package/capabilities/oats-okf/lib/portable-binding.mjs +0 -199
- package/capabilities/oats-okf/lib/source-contract.mjs +0 -46
- package/capabilities/oats-okf/lib/sources.mjs +0 -424
- package/capabilities/oats-okf/lib/stores.mjs +0 -473
- package/capabilities/oats-okf/lib/worker.mjs +0 -497
- package/capabilities/oats-okf/oats.json +0 -148
- package/capabilities/oats-okf/schemas/okf-base.schema.json +0 -46
- package/capabilities/oats-okf/schemas/okf-bindings.schema.json +0 -112
- package/capabilities/oats-okf/schemas/okf-portable-declaration.schema.json +0 -87
- package/capabilities/oats-okf/schemas/okf-portable-payload.schema.json +0 -113
- package/capabilities/oats-okf/schemas/okf-soul.schema.json +0 -37
- package/capabilities/oats-okf/skills/okf-consultation/SKILL.md +0 -144
- package/capabilities/oats-okf/skills/okf-consultation/references/consult.md +0 -86
- package/capabilities/oats-okf/skills/okf-instance-knowledge/SKILL.md +0 -104
- package/capabilities/oats-okf-harvest/bin/okf-harvest.mjs +0 -140
- package/capabilities/oats-okf-harvest/injects/harvester.md +0 -12
- package/capabilities/oats-okf-harvest/oats.json +0 -26
- package/capabilities/oats-okf-harvest/skills/knowledge-harvest/SKILL.md +0 -168
- package/capabilities/oats-okf-harvest/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-harvest/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-harvest/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/bin/okf-maintenance.mjs +0 -170
- package/capabilities/oats-okf-maintenance/injects/maintainer.md +0 -12
- package/capabilities/oats-okf-maintenance/lib/provenance.mjs +0 -50
- package/capabilities/oats-okf-maintenance/oats.json +0 -21
- package/capabilities/oats-okf-maintenance/skills/knowledge-review/SKILL.md +0 -159
- package/capabilities/oats-okf-maintenance/skills/knowledge-theory/SKILL.md +0 -192
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/SKILL.md +0 -151
- package/capabilities/oats-okf-maintenance/skills/okf-authoring/scripts/okf-validate.mjs +0 -123
- package/capabilities/oats-okf-maintenance/skills/okf-trigger-setup/SKILL.md +0 -146
- 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,558 +0,0 @@
|
|
|
1
|
-
# Expert-assisted deployment and an extensible OATS
|
|
2
|
-
|
|
3
|
-
Date: 2026-09-08
|
|
4
|
-
|
|
5
|
-
Status: proposed implementation plan; direction endorsed by Juan on September 8.
|
|
6
|
-
This document records the proposal and a takeover plan while Juan is away for
|
|
7
|
-
a couple of days. It does not claim that the proposed deployment workflow has
|
|
8
|
-
shipped. Current-state observations below are against main `daf2941`, following
|
|
9
|
-
the publication of OATS 0.22.19. The September 8 follow-up incorporates Pepe's
|
|
10
|
-
team-assignment and shared-knowledge requirements and Juan's explicit
|
|
11
|
-
correction: one instance may belong to several teams, and OATS must support
|
|
12
|
-
both local and global identities. The initial handoff understated these
|
|
13
|
-
requirements; the sections below are part of the implementation scope.
|
|
14
|
-
|
|
15
|
-
## Outcome
|
|
16
|
-
|
|
17
|
-
A user should be able to ask an OATS expert to add an agent to an existing team
|
|
18
|
-
on another machine. The expert prepares or adopts the necessary workspace,
|
|
19
|
-
configures the selected capabilities, starts the agent, and verifies that the
|
|
20
|
-
result works. The resulting configuration and procedures belong to the user
|
|
21
|
-
and remain usable by another agent, the CLI, and the GUI.
|
|
22
|
-
|
|
23
|
-
A workspace can refer to several communication teams. An instance can have
|
|
24
|
-
several memberships through one global identity. Its knowledge access and
|
|
25
|
-
promotion destinations are selected explicitly, including shared organizational
|
|
26
|
-
knowledge. A remote launch is not complete merely because a process starts in
|
|
27
|
-
the correct directory.
|
|
28
|
-
|
|
29
|
-
This makes the expert the normal conversational way to configure and extend
|
|
30
|
-
OATS. Reliable commands perform repeatable operations; skills teach the expert
|
|
31
|
-
how to choose and combine them. A working installation must remain operable
|
|
32
|
-
without the expert running or the original setup conversation being available.
|
|
33
|
-
|
|
34
|
-
The architecture principle is already in the
|
|
35
|
-
September 3 architecture proposal (removed in 0.26.0; it is in the v0.25.x tags):
|
|
36
|
-
|
|
37
|
-
> Contracts and bootstrap skills in OATS; implementations in packages.
|
|
38
|
-
|
|
39
|
-
This plan applies that principle to deployment. It continues the
|
|
40
|
-
[September 7 reassessment](2026-09-07-architecture-reassessment.md), whose
|
|
41
|
-
provider-operation gaps were subsequently addressed by the
|
|
42
|
-
[operations contract](operations-contract.md). It does not reopen those fixes
|
|
43
|
-
or require the entire September 3 proposal to be implemented first.
|
|
44
|
-
|
|
45
|
-
## Current state and the missing boundary
|
|
46
|
-
|
|
47
|
-
| Area | Implemented today | Remaining gap |
|
|
48
|
-
|---|---|---|
|
|
49
|
-
| Knowledge, messaging, tasks | Selectable packages, scoped bindings, inspection and declared provider operations | Maintain these boundaries as deployment and onboarding are added |
|
|
50
|
-
| Harness launch | Pi, Claude and Codex; named launch configurations; instance start/restart | A new harness is still a kernel implementation change, not an arbitrary installable runtime provider |
|
|
51
|
-
| Terminal execution | tmux and Herdr behind session operations | These backends do not prepare the team's repositories or capabilities |
|
|
52
|
-
| Remote execution | Route operations over SSH to OATS in a registered remote workspace | The remote workspace must already exist and be usable |
|
|
53
|
-
| Soul and work location | Filesystem souls and built-in worktree, checkout, attached and workspace modes | The proposed independent soul-store and work-target contracts are incomplete |
|
|
54
|
-
| Expert onboarding | An `oats-expert` soul and a workspace setup playbook | A complete, maintained installation workflow with repeatable remote preparation |
|
|
55
|
-
| Communication membership | OATS resolves one effective `team:`; its normal aweb spawn joins that team | Workspace team catalog and explicit per-type/per-soul membership sets, including several memberships for one instance |
|
|
56
|
-
| Identity lifecycle | Normal aweb join defaults to local; OATS also has an explicit retained-identity path used for standing global identities | A complete local/global selection, creation/adoption, multi-team binding and lifecycle experience |
|
|
57
|
-
| Shared knowledge | OKF instance state and promotion into the source soul's knowledge/skills | Configurable shared collections, scoped reads and promotion to the appropriate shared destination |
|
|
58
|
-
|
|
59
|
-
In the current spawn path, a referenced repository must already exist and be
|
|
60
|
-
a Git repository. Worktree mode creates a worktree from that repository;
|
|
61
|
-
checkout mode uses the existing checkout. Neither is an initial clone or an
|
|
62
|
-
implicit repository update. The worktree setup command runs after creation;
|
|
63
|
-
its failure currently warns and continues. Capability spawn hooks also run
|
|
64
|
-
after the repository has been resolved. None of these is a suitable substitute
|
|
65
|
-
for preparing a missing remote workspace.
|
|
66
|
-
|
|
67
|
-
The existing [expert soul](../../agents/oats-expert/soul/AGENTS.md) mixes
|
|
68
|
-
portable installation advice with maintaining this repository and reviewing
|
|
69
|
-
our development team's PRs. It also contains provider-specific knowledge
|
|
70
|
-
instructions. Split those responsibilities: users need an installation expert
|
|
71
|
-
that understands their selected capabilities, while this project's maintainer
|
|
72
|
-
keeps its own development role and operating instructions.
|
|
73
|
-
|
|
74
|
-
## Responsibilities
|
|
75
|
-
|
|
76
|
-
| Mechanism | Responsibility | Examples |
|
|
77
|
-
|---|---|---|
|
|
78
|
-
| OATS kernel | Configuration resolution, package composition, instance lifecycle, session routing and scheduling; inspectable results | Resolve an instance's captured configuration, start it on its execution host, expose its state |
|
|
79
|
-
| Deployment capability package | Repeatable preparation and diagnosis, using existing OATS operations and host tools | Inspect a workspace, adopt or clone a repository, check requirements, report readiness |
|
|
80
|
-
| Setup/repair skill | Workflow, choices, diagnosis and adaptation to the user's environment | Choose paths, understand existing repositories, select capabilities, explain and repair a failed prerequisite |
|
|
81
|
-
| Lifecycle hook | A bounded extension at a known lifecycle event | Configure an identity during spawn; perform worktree-local environment setup |
|
|
82
|
-
| Installation expert | Apply the skill, invoke operations, verify outcomes and record deployment decisions | Fulfil a request to add an agent on another host |
|
|
83
|
-
| GUI | Present the same configuration, choices, actions and observations | Show where an agent works and explain why a deployment is not ready |
|
|
84
|
-
|
|
85
|
-
Begin with an ordinary capability package containing namespaced commands,
|
|
86
|
-
skills and documentation. Existing general capabilities compose additively;
|
|
87
|
-
deployment does not need to become a fourth mandatory knowledge/messaging/tasks
|
|
88
|
-
layer. The current `operation run` contract addresses those layers: do not
|
|
89
|
-
pretend it already supplies an arbitrary deployment-provider interface. Extend
|
|
90
|
-
discovery or invocation only as required by the first real consumer.
|
|
91
|
-
|
|
92
|
-
Preparation commands should expose observed state and repeatable effects.
|
|
93
|
-
Running them again against a correctly prepared workspace should reuse that
|
|
94
|
-
workspace. A failure should identify what succeeded, what remains and how to
|
|
95
|
-
continue. A small inspect/prepare interface is sufficient initially; its exact
|
|
96
|
-
command names and schema are implementation decisions, not APIs promised here.
|
|
97
|
-
|
|
98
|
-
Extract a work-target interface when the existing Git/filesystem coupling
|
|
99
|
-
prevents the required flow. Keep Git preparation in its implementation package
|
|
100
|
-
and have the kernel consume the resulting work location and lifecycle contract.
|
|
101
|
-
Do not turn the first remote onboarding into a general infrastructure engine,
|
|
102
|
-
workflow language or registry for every hypothetical backend.
|
|
103
|
-
|
|
104
|
-
## Team, host, deployment and work target
|
|
105
|
-
|
|
106
|
-
Keep these concepts separate in configuration and the user experience:
|
|
107
|
-
|
|
108
|
-
- **Workspace:** the OATS configuration boundary containing souls, deployment
|
|
109
|
-
choices and references to one or several communication teams. This is not
|
|
110
|
-
identical to an aweb workspace, which binds an identity home and its
|
|
111
|
-
membership-specific coordination state.
|
|
112
|
-
- **Communication team:** a provider's membership and coordination boundary.
|
|
113
|
-
With aweb, membership is certified by that team's authority. One OATS
|
|
114
|
-
workspace may use several such teams; one instance may join several.
|
|
115
|
-
- **Host:** a machine reachable through the selected execution transport.
|
|
116
|
-
- **Deployment:** a workspace's installed configuration, packages and locations
|
|
117
|
-
on a particular host. One host may contain several deployments, and one
|
|
118
|
-
deployment may serve instances with different or overlapping team memberships.
|
|
119
|
-
- **Soul:** the reusable instructions and capabilities from which an instance
|
|
120
|
-
is composed; its source need not be the repository the instance works on.
|
|
121
|
-
- **Work target:** the repository, directory or other resource an instance
|
|
122
|
-
operates on. The proposed broader contract is not fully implemented today.
|
|
123
|
-
- **Instance home:** the durable local state and recorded configuration for
|
|
124
|
-
one instance on its execution host.
|
|
125
|
-
|
|
126
|
-
A server registration currently bundles an SSH host and one workspace path.
|
|
127
|
-
Retain working routes while improving how deployments are represented; a
|
|
128
|
-
second team on the same computer should not conceptually become a second
|
|
129
|
-
computer. Registering a server alone neither copies local souls nor establishes
|
|
130
|
-
remote team membership.
|
|
131
|
-
|
|
132
|
-
The current `team:` block combines an OATS discovery/configuration boundary
|
|
133
|
-
with a messaging team selection. Do not extend that shortcut into a requirement
|
|
134
|
-
that every instance in a workspace belongs to exactly one common aweb team.
|
|
135
|
-
Separate those meanings as this feature is implemented. A default team may
|
|
136
|
-
remain a convenience; it is not the complete membership list.
|
|
137
|
-
|
|
138
|
-
For example, `/srv/example-team` could be an explicitly selected remote
|
|
139
|
-
workspace. Its repository mappings and agents root determine where individual
|
|
140
|
-
homes and worktrees are created. That path is an example, not a new default or
|
|
141
|
-
a claim about an existing installation. The selected harness does not choose
|
|
142
|
-
the workspace location.
|
|
143
|
-
|
|
144
|
-
## Identity and membership: verified aweb contract
|
|
145
|
-
|
|
146
|
-
These are aweb's existing concepts, not a new OATS identity protocol:
|
|
147
|
-
|
|
148
|
-
| Property | Local identity | Global identity |
|
|
149
|
-
|---|---|---|
|
|
150
|
-
| Identifier | `did:key` | Stable `did:aw` plus current `did:key` |
|
|
151
|
-
| Team memberships | Exactly one team | May hold several team certificates |
|
|
152
|
-
| Public address | None | May hold zero, one or several addresses |
|
|
153
|
-
| Runtime duration | May survive sequential sessions | May survive sequential sessions and preserve global trust continuity |
|
|
154
|
-
| Joining another team | Does not reuse the same local identity | Reuses the existing global identity; does not mint another `did:aw` |
|
|
155
|
-
|
|
156
|
-
Use `identity_scope: local|global` when referring to aweb's current contract.
|
|
157
|
-
The older `lifetime: ephemeral|persistent` vocabulary is read-compatibility
|
|
158
|
-
input. In particular, local does not mean expires on process exit: certificates
|
|
159
|
-
have no expiry field, and deleting a directory does not itself revoke them.
|
|
160
|
-
Local also does not mean on this computer, and global does not mean hosted.
|
|
161
|
-
|
|
162
|
-
One global identity represents one principal. Its memberships and addresses
|
|
163
|
-
are different handles/authorities for that principal, not separate agents.
|
|
164
|
-
Several instances of the same soul do not automatically share an identity.
|
|
165
|
-
Ordinary independent workers need independent identities; an explicit move or
|
|
166
|
-
restart of the same standing agent preserves its identity.
|
|
167
|
-
|
|
168
|
-
Aweb already stores multiple memberships in `.aw/teams.yaml` and per-team
|
|
169
|
-
coordination bindings in `.aw/workspace.yaml`, with one `active_team` default.
|
|
170
|
-
Switching the default neither joins nor leaves any team. Supported commands can
|
|
171
|
-
select a team for one operation without changing that default. The selected
|
|
172
|
-
team determines the certificate, member name and coordination context; an
|
|
173
|
-
instance's memberships are not merged into one undifferentiated authority.
|
|
174
|
-
|
|
175
|
-
The current CLI's global invite acceptance reuses an existing self-custodial
|
|
176
|
-
global identity. It refuses to manufacture one as a side effect of `--global`.
|
|
177
|
-
Creating a global identity/address requires the relevant namespace authority;
|
|
178
|
-
team membership alone cannot provide that authority. Hosted and locally
|
|
179
|
-
controlled team setup differ, so the deployment skill must inspect the actual
|
|
180
|
-
authority and follow the supported create/join/fetch/connect path.
|
|
181
|
-
|
|
182
|
-
Global addresses enable first contact. A local identity can send to a global
|
|
183
|
-
address and receive a reply through the authenticated learned return route; it
|
|
184
|
-
does not thereby acquire a global address. Cross-team messaging alone does not
|
|
185
|
-
require joining the recipient's team. Membership is needed for that team's
|
|
186
|
-
coordination and other membership-scoped resources.
|
|
187
|
-
|
|
188
|
-
### What OATS already does, and what it does not
|
|
189
|
-
|
|
190
|
-
The current `oats.aweb` adapter's normal spawn path resolves one team, obtains
|
|
191
|
-
an invite and joins with the instance name. It does not offer a general
|
|
192
|
-
membership list or explicit new-global-identity workflow. The retained path
|
|
193
|
-
(`settings.identity.source`) preserves existing identity material, reconnects
|
|
194
|
-
one selected team and records retained custody; retirement releases the seat
|
|
195
|
-
without deleting that identity. This is useful existing support for standing
|
|
196
|
-
global agents, but it is not a complete multi-team onboarding contract.
|
|
197
|
-
|
|
198
|
-
Retaining files containing several certificates is not proof that every team's
|
|
199
|
-
coordination binding, command context and wake delivery works in the new home.
|
|
200
|
-
Qualify those behaviors explicitly. Do not generalize the retained migration
|
|
201
|
-
path's file-copy details into the permanent public identity-management API;
|
|
202
|
-
use aweb's supported identity-home and lifecycle operations where available.
|
|
203
|
-
|
|
204
|
-
Refresh the shipped instructions as part of this work. The current vendored
|
|
205
|
-
[membership skill](../../capabilities/oats-aweb/skills/aweb-team-membership/SKILL.md),
|
|
206
|
-
Hosted Path 3, still says `--address` creates a fresh global identity. The
|
|
207
|
-
verified current CLI instead requires explicit `--global` and an existing
|
|
208
|
-
self-custodial global identity. Its multi-membership explanation also needs the
|
|
209
|
-
global-only qualification. Update and publish the provider skill from its
|
|
210
|
-
owning source, then verify the materialized instructions; the stale recipe must
|
|
211
|
-
not become the installation expert's onboarding procedure.
|
|
212
|
-
|
|
213
|
-
## Proposed workspace membership behavior
|
|
214
|
-
|
|
215
|
-
Use the existing scoped capability configuration mechanism. The following are
|
|
216
|
-
semantic requirements; final YAML keys and commands still need implementation
|
|
217
|
-
review and must not be copied as a currently supported schema.
|
|
218
|
-
|
|
219
|
-
- The workspace declares named references to available messaging teams and the
|
|
220
|
-
information needed to connect to them. This is a catalog, not automatic
|
|
221
|
-
enrollment of every agent into every listed team.
|
|
222
|
-
- Workspace defaults, soul-type bindings and individual-soul overrides resolve
|
|
223
|
-
an explicit membership set and identity choice. A more specific membership
|
|
224
|
-
list replaces the inherited list; do not silently union it and retain an
|
|
225
|
-
unwanted broader membership. Show provenance before creating the instance.
|
|
226
|
-
- Support a new local identity for a single-team worker, creation of a distinct
|
|
227
|
-
global identity through an available authority, and adoption of an existing
|
|
228
|
-
global identity. A request for several memberships requires global scope;
|
|
229
|
-
report the incompatibility before mutation rather than silently changing
|
|
230
|
-
identity scope or creating one identity per team.
|
|
231
|
-
- Keep concrete identity references, team IDs and namespace/address choices in
|
|
232
|
-
deployment configuration. A portable developer soul can request suitable
|
|
233
|
-
capabilities without carrying one organization's credentials or team IDs.
|
|
234
|
-
- Resolve the membership set into the instance's recorded configuration. Start
|
|
235
|
-
and restart preserve it. Joining or leaving a team is an explicit lifecycle
|
|
236
|
-
operation; editing defaults must not silently change existing memberships.
|
|
237
|
-
- Use an explicit team selector for team-scoped operations. Generated briefings
|
|
238
|
-
describe all memberships and the default, and teach the agent how to select
|
|
239
|
-
the appropriate team. Do not concatenate conflicting teams' instructions and
|
|
240
|
-
assume the currently active team resolves the conflict.
|
|
241
|
-
|
|
242
|
-
For example, one coordinator instance can use a global identity that belongs
|
|
243
|
-
to Engineering and Release, selecting either context for the relevant work.
|
|
244
|
-
A short-lived test worker can use a local identity in Engineering only. Another
|
|
245
|
-
instance of the same developer soul can use a different identity and different
|
|
246
|
-
memberships. None of these choices depends on which host runs the harness.
|
|
247
|
-
|
|
248
|
-
The GUI should show one instance with several membership badges, its identity
|
|
249
|
-
scope, and its default team. Filtering/grouping by a team must not turn that
|
|
250
|
-
one instance into several independent agents. Preview creation/adoption and
|
|
251
|
-
membership choices together, and expose per-membership readiness and problems.
|
|
252
|
-
|
|
253
|
-
Incoming work must reach a multi-team instance without requiring the user to
|
|
254
|
-
switch its active team first. Reuse aweb's identity/event mechanisms; determine
|
|
255
|
-
the actual service/subscription coverage and share streams where supported.
|
|
256
|
-
Do not create a GUI stream or model worker per team as the default design.
|
|
257
|
-
Delivery across all configured memberships, with the GUI closed, is a required
|
|
258
|
-
qualification; this document does not claim the current broker has passed it.
|
|
259
|
-
The inspected `wakeStreamOpener` constructs its client through the selected
|
|
260
|
-
membership's certificate-backed context. That code alone does not establish
|
|
261
|
-
aggregation across every membership or service; verify the server event scope
|
|
262
|
-
and the broker's behavior together before choosing subscription coverage.
|
|
263
|
-
|
|
264
|
-
### Membership, reach and visibility are separate
|
|
265
|
-
|
|
266
|
-
Pepe's shared-engineering versus owner-only requirement has both a membership
|
|
267
|
-
choice and a communication/visibility policy. A team badge or instructions in
|
|
268
|
-
`AGENTS.md` cannot enforce that policy. Aweb currently documents inbound modes
|
|
269
|
-
`open` and `team_and_contacts`; the latter admits verified same-team senders as
|
|
270
|
-
well as contacts. It does not mean owner-only inside a shared team.
|
|
271
|
-
|
|
272
|
-
The September 3 `reach: owner|team|org|external` ladder and `contacts_only`
|
|
273
|
-
mapping are proposals, not current aweb API promises. Select distinct teams
|
|
274
|
-
where their actual semantics meet the need, or implement the required policy
|
|
275
|
-
in aweb and qualify it. Do not reinstate removed address-visibility fields or
|
|
276
|
-
introduce OATS-specific routing enforcement. Public address discoverability,
|
|
277
|
-
message admission and access to team work/knowledge each need their own
|
|
278
|
-
accurate explanation.
|
|
279
|
-
|
|
280
|
-
There is a concrete compatibility trap: the current CLI accepts the old
|
|
281
|
-
`contacts-only`/`contacts_only` spelling but normalizes it to
|
|
282
|
-
`team_and_contacts`. An accepted command is therefore not evidence of strict
|
|
283
|
-
contacts-only enforcement. Do not use that spelling to implement `reach: owner`.
|
|
284
|
-
|
|
285
|
-
### Lifecycle outcomes
|
|
286
|
-
|
|
287
|
-
Stopping a harness, restarting it, retiring an OATS home, leaving a team, and
|
|
288
|
-
archiving a global identity are different operations. Preserve identity and
|
|
289
|
-
memberships across stop/start or a harness change. For disposable local workers,
|
|
290
|
-
use aweb's supported self-retirement and report whether the certificate was
|
|
291
|
-
revoked and the member name released; do not infer it from local deletion.
|
|
292
|
-
|
|
293
|
-
For global agents, retiring the execution home must preserve recoverable
|
|
294
|
-
identity authority and must not implicitly archive the identity or revoke all
|
|
295
|
-
memberships. Define custody before home removal, especially for a global
|
|
296
|
-
identity created there rather than adopted from a retained source. Leaving one
|
|
297
|
-
team must preserve the identity and remaining memberships. Moving hosts must
|
|
298
|
-
re-establish and verify each required binding without leaving two independent
|
|
299
|
-
workers using the same identity.
|
|
300
|
-
|
|
301
|
-
If preparing several memberships fails partway through, report the memberships
|
|
302
|
-
actually established and offer a repeatable resume/cleanup path. Do not delete
|
|
303
|
-
an adopted identity or its pre-existing memberships to undo this attempt.
|
|
304
|
-
|
|
305
|
-
## Shared knowledge and promotion destinations
|
|
306
|
-
|
|
307
|
-
The current OKF implementation promotes instance notes or captured record
|
|
308
|
-
windows into the source soul's knowledge/skills. Workspace-mode harvesting
|
|
309
|
-
changes how a soul update is delivered; it does not turn the workspace into a
|
|
310
|
-
shared organizational knowledge destination. Existing shared KBs connected by
|
|
311
|
-
instructions are useful deployments, not proof of this missing capability API.
|
|
312
|
-
|
|
313
|
-
Keep three concerns explicit:
|
|
314
|
-
|
|
315
|
-
| Knowledge | Custody and purpose |
|
|
316
|
-
|---|---|
|
|
317
|
-
| Instance state | Current task, progress and pending observations in the instance's context |
|
|
318
|
-
| Reusable soul knowledge | General expertise and procedures that should travel with that soul |
|
|
319
|
-
| Deployment knowledge | Organization, team or project decisions and procedures shared with appropriate instances |
|
|
320
|
-
|
|
321
|
-
The knowledge capability should resolve an instance's readable collections and
|
|
322
|
-
permitted promotion destinations from deployment policy and soul/type bindings.
|
|
323
|
-
These are sets: an instance in several teams may need several knowledge
|
|
324
|
-
collections. Team membership does not automatically authorize every collection
|
|
325
|
-
or copying material between them. The knowledge provider owns access and
|
|
326
|
-
storage semantics; OATS resolves the configured capability and exposes its
|
|
327
|
-
effective choices and operations.
|
|
328
|
-
|
|
329
|
-
Start with a shared versioned OKF repository or existing bundle where suitable.
|
|
330
|
-
Specify its canonical location, collection references, read/update mechanism
|
|
331
|
-
on each host, and how a promoted change becomes visible to readers. "Shared"
|
|
332
|
-
requires a coherent source and an actual refresh path; a one-time copied folder
|
|
333
|
-
on each server is insufficient. A database or central knowledge service is
|
|
334
|
-
optional and belongs to the provider, not the kernel.
|
|
335
|
-
|
|
336
|
-
The harvester selects a destination under that policy. A general debugging
|
|
337
|
-
lesson may belong to the reusable soul; a private project decision belongs to
|
|
338
|
-
the project's collection. Several team memberships must not cause private
|
|
339
|
-
knowledge to be promoted to their union. Preserve source scope/provenance and
|
|
340
|
-
keep ambiguous material pending for an owner instead of broadening it by
|
|
341
|
-
default. Continue the existing promotion doctrine: durable decisions, rationale
|
|
342
|
-
and useful procedures; do not fill the KB with duplicate descriptions of code.
|
|
343
|
-
|
|
344
|
-
Make the destination explicit in the promotion result. With Git custody, use
|
|
345
|
-
the destination repository's branch/review workflow, handle conflicting updates
|
|
346
|
-
there, and confirm publication separately from starting the harvester. The
|
|
347
|
-
reader must then be able to retrieve the accepted knowledge from another home
|
|
348
|
-
or host. Inspection should expose available collections and freshness/update
|
|
349
|
-
problems through provider operations, without the GUI assuming OKF paths.
|
|
350
|
-
|
|
351
|
-
This stays inside the replaceable knowledge capability. The default OKF package
|
|
352
|
-
needs this extension; another provider may implement a different store and
|
|
353
|
-
harvester. The deployment expert configures and diagnoses it, and schedules
|
|
354
|
-
invoke its declared operations. Neither expertise nor a cron substitutes for
|
|
355
|
-
implementing the shared read/write contract.
|
|
356
|
-
|
|
357
|
-
## Evidence and boundaries for the September 8 amendment
|
|
358
|
-
|
|
359
|
-
The identity findings were checked against aweb's canonical docs and CLI
|
|
360
|
-
implementation in checkout `0a3a9a9`; the identity/team/wake files checked were
|
|
361
|
-
unchanged against its fetched `origin/main` reference `bfdb208`. These references
|
|
362
|
-
establish source behavior, not new installed multi-team acceptance:
|
|
363
|
-
|
|
364
|
-
- [Identity model](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/docs/identity.md)
|
|
365
|
-
and [identity guide](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/docs/identity-guide.md):
|
|
366
|
-
scope, memberships, addresses, certificate and lifecycle distinctions.
|
|
367
|
-
- [Work across teams](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/docs/work-across-teams.md)
|
|
368
|
-
and [aweb SOT](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/docs/aweb-sot.md):
|
|
369
|
-
membership lists, active selection and per-team coordination state.
|
|
370
|
-
- [Global/local routing](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/docs/global-local-identity-routing.md):
|
|
371
|
-
addresses, learned return routes and current inbound-policy boundaries.
|
|
372
|
-
- [CLI team implementation](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/cli/go/cmd/aw/id_team.go):
|
|
373
|
-
`ensureTeamAcceptScopeAllowed`, `resolveGlobalIdentityForTeamAccept` and
|
|
374
|
-
`acceptHostedTeamInviteWithDetails` enforce single-team local scope and
|
|
375
|
-
reuse existing global identity material.
|
|
376
|
-
- [Inbound mode normalization](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/cli/go/cmd/aw/inbound_mode.go)
|
|
377
|
-
and [wake client construction](https://github.com/awebai/aweb/blob/bfdb20886080e4ffe1f02b266f6116d12bd100fd/cli/go/cmd/aw/wake.go):
|
|
378
|
-
compatibility spellings and the selected client behind broker streams.
|
|
379
|
-
- OATS [aweb adapter](../../capabilities/oats-aweb/bin/oats-aweb.mjs),
|
|
380
|
-
[OKF adapter](../../capabilities/oats-okf/bin/oats-okf.mjs),
|
|
381
|
-
[configuration](../configuration.md) and [layers](../layers.md): current
|
|
382
|
-
single-team spawning, retained custody, soul-directed harvesting, and the
|
|
383
|
-
explicitly proposed shared knowledge scoping.
|
|
384
|
-
|
|
385
|
-
Before implementing against a deployed version, check its public CLI and
|
|
386
|
-
service capabilities. Do not treat a proposal, a source test, a saved
|
|
387
|
-
certificate, or an old migration receipt as proof that the full installed
|
|
388
|
-
multi-team/wake/shared-knowledge journey has passed.
|
|
389
|
-
|
|
390
|
-
## Git preparation and updates
|
|
391
|
-
|
|
392
|
-
The deployment package owns initial repository clone or adoption. Its saved
|
|
393
|
-
configuration identifies the repository source, local destination and selected
|
|
394
|
-
revision/update policy. Git credentials must work on the execution host;
|
|
395
|
-
successful SSH access to that host does not establish repository access.
|
|
396
|
-
|
|
397
|
-
Use an existing suitable checkout without overwriting it. For an isolated new
|
|
398
|
-
agent, prepare the selected revision and create a separate worktree according
|
|
399
|
-
to the work policy. Record the resolved revision so the result is inspectable.
|
|
400
|
-
Fetch and selecting a revision are distinct from moving an active checkout.
|
|
401
|
-
|
|
402
|
-
Starting an agent must not silently pull, reset or switch another agent's
|
|
403
|
-
working checkout. Updates to an existing agent's work remain explicit work
|
|
404
|
-
operations. A package that supports another work-target system can implement
|
|
405
|
-
the corresponding behavior without teaching the kernel that system's details.
|
|
406
|
-
|
|
407
|
-
## The expert and the extensible installation
|
|
408
|
-
|
|
409
|
-
Ship a portable setup/repair skill and make it usable by an existing agent
|
|
410
|
-
before OATS has been installed. The same knowledge should support a resident
|
|
411
|
-
installation expert once OATS works. This gives a repair path when the GUI or
|
|
412
|
-
OATS lifecycle itself is unavailable.
|
|
413
|
-
|
|
414
|
-
The expert should be available on demand and wake when asked. Schedules,
|
|
415
|
-
message delivery and running sessions must not require a continuously active
|
|
416
|
-
model supervising them. The expert can help create a recurring diagnostic job
|
|
417
|
-
when useful; an always-busy expert is not a prerequisite for a healthy system.
|
|
418
|
-
|
|
419
|
-
Keep reusable expert knowledge in its package. Hostnames, local paths, chosen
|
|
420
|
-
providers and unfinished local work belong to deployment configuration and
|
|
421
|
-
deployment-owned knowledge. Another expert instance must be able to take over
|
|
422
|
-
from those records. Avoid a second authoritative deployment database hidden in
|
|
423
|
-
the expert's memory.
|
|
424
|
-
|
|
425
|
-
This is the useful interpretation of "Emacs-ification": an inspectable,
|
|
426
|
-
programmable installation whose users can compose and share extensions, with
|
|
427
|
-
an expert that understands the available operations. The CLI, GUI and expert
|
|
428
|
-
should invoke the same mechanisms and report the same effective configuration.
|
|
429
|
-
|
|
430
|
-
The expert may implement an extension when an actual requirement demands it.
|
|
431
|
-
Package acquisition, versioning and the normal development/review process
|
|
432
|
-
still apply. Teaching an expert to invent a fresh setup script on every
|
|
433
|
-
installation would lose the repeatability that makes this approach valuable.
|
|
434
|
-
|
|
435
|
-
## Changing a deployment while agents work
|
|
436
|
-
|
|
437
|
-
Changes need clear scope and application semantics:
|
|
438
|
-
|
|
439
|
-
| Change | Intended behavior |
|
|
440
|
-
|---|---|
|
|
441
|
-
| Defaults or launch configuration for future instances | Save immediately; expose what future launches will use |
|
|
442
|
-
| Existing instance's harness or launch recipe | Use an explicit targeted restart; preserve its home and identity |
|
|
443
|
-
| Existing instance's capability bindings | Show captured bindings versus current configuration; apply through an explicit supported transition |
|
|
444
|
-
| Work location or knowledge provider | Treat as a migration with a concrete preservation plan, not a config-only substitution |
|
|
445
|
-
| Schedule | Apply through scheduling operations; distinguish a configured job from a successful run |
|
|
446
|
-
| OATS or package implementation | Test the candidate, install the intended version, retain a recovery path and affect only the necessary processes |
|
|
447
|
-
|
|
448
|
-
Some of these behaviors already have commands; others describe the desired
|
|
449
|
-
contract. In particular, selecting a new knowledge provider does not imply
|
|
450
|
-
automatic conversion of existing knowledge.
|
|
451
|
-
|
|
452
|
-
The expert may perform authorized maintenance while work continues. Routine
|
|
453
|
-
onboarding must not depend on rewriting the running kernel or restarting every
|
|
454
|
-
agent. It should also be possible to recover without the particular expert
|
|
455
|
-
session that initiated the change.
|
|
456
|
-
|
|
457
|
-
## Implementation sequence and takeover
|
|
458
|
-
|
|
459
|
-
Juan has endorsed this direction and requested this written handoff so Pepe's
|
|
460
|
-
agents can take over during his absence. Continue through the existing team
|
|
461
|
-
coordination and review process. The slices below are ordered around one usable
|
|
462
|
-
journey, with no prerequisite platform rewrite.
|
|
463
|
-
|
|
464
|
-
1. **Resolve the membership, identity and knowledge contracts.** Make the
|
|
465
|
-
workspace team catalog, instance membership set, explicit identity scope,
|
|
466
|
-
custody and shared-knowledge read/write destinations concrete. Use the
|
|
467
|
-
verified aweb primitives, with owner review of any required aweb change.
|
|
468
|
-
Done when one multi-team global instance and one single-team local instance
|
|
469
|
-
can be described without conflating workspace, identity or knowledge scope.
|
|
470
|
-
2. **Separate and refresh the expert.** Distinguish the portable installation
|
|
471
|
-
expert from the repository maintainer. Update the setup/repair skill to the
|
|
472
|
-
actual CLI and selected-capability contracts. Make the skill usable outside
|
|
473
|
-
OATS. Done when a fresh agent can understand an installation without inheriting
|
|
474
|
-
our repository maintenance instructions or relying on a prior conversation.
|
|
475
|
-
3. **Exercise one real remote deployment.** Coordinate with the existing team's
|
|
476
|
-
owner, inspect current state and prepare one additional agent on the intended
|
|
477
|
-
host. Record the exact missing operations and the chosen deployment layout.
|
|
478
|
-
Preserve existing workers. Done when the acceptance journey below succeeds.
|
|
479
|
-
4. **Package repeated preparation.** Extract the mechanical steps from that
|
|
480
|
-
journey into inspect/prepare commands with structured results and a retry
|
|
481
|
-
path. Add only the core boundary needed to consume them. Done when rerunning
|
|
482
|
-
preparation reuses the prepared deployment and an incomplete attempt can be
|
|
483
|
-
diagnosed and resumed without losing existing work.
|
|
484
|
-
5. **Expose the deployment in the GUI.** Distinguish host from workspace and
|
|
485
|
-
communication-team membership; show identity scope and knowledge collections;
|
|
486
|
-
show paths, readiness and actionable failures using the same operations as
|
|
487
|
-
the expert. Done when a user can understand where an agent will run before
|
|
488
|
-
starting it and manage the resulting instance afterward.
|
|
489
|
-
6. **Prove takeover and document the shipped path.** Have a fresh expert inspect
|
|
490
|
-
the saved setup, explain it and perform a bounded addition or repair. Publish
|
|
491
|
-
the working onboarding instructions and update this proposal with what
|
|
492
|
-
actually shipped. No access to the original conversation should be required.
|
|
493
|
-
|
|
494
|
-
Maintainers can divide package/skill work and GUI work once the operation shape
|
|
495
|
-
is concrete. Agree that small contract before building two implementations.
|
|
496
|
-
Use focused tests for new behavior and one bounded end-to-end qualification;
|
|
497
|
-
documentation-only changes do not require launching harnesses or rebuilding
|
|
498
|
-
Desktop.
|
|
499
|
-
|
|
500
|
-
## Acceptance journey
|
|
501
|
-
|
|
502
|
-
Given an existing team and an accessible host, a user asks:
|
|
503
|
-
|
|
504
|
-
> Add a developer to this team on that server, using this launch configuration.
|
|
505
|
-
|
|
506
|
-
Success means:
|
|
507
|
-
|
|
508
|
-
- The expert discovers and adopts suitable existing setup, or prepares the
|
|
509
|
-
missing pieces at explicit recorded paths.
|
|
510
|
-
- Selected capabilities are available; the instance has the intended team
|
|
511
|
-
memberships, identity scope/custody and work target.
|
|
512
|
-
- One global instance joins two teams using the same `did:aw`; each has its
|
|
513
|
-
own valid binding and context. A single-team local instance is also supported;
|
|
514
|
-
requesting a second membership for it produces an explicit scope error.
|
|
515
|
-
- Per-team operations use the selected context; switching the default neither
|
|
516
|
-
removes memberships nor prevents incoming work from the other team. The GUI
|
|
517
|
-
represents one instance with multiple memberships accurately.
|
|
518
|
-
- The chosen harness starts and can be attached to and managed from the GUI.
|
|
519
|
-
- A real message reaches the agent and a useful response returns through the
|
|
520
|
-
selected messaging/wake mechanism, including after the GUI closes.
|
|
521
|
-
- Requested scheduling and knowledge behavior are verified separately from
|
|
522
|
-
merely starting a process. For harvesting, verify useful knowledge output
|
|
523
|
-
through the selected provider, not just that a harvester ran.
|
|
524
|
-
- An agent promotes a project decision into the intended shared collection,
|
|
525
|
-
and another authorized instance on another host retrieves it. A reusable
|
|
526
|
-
soul lesson stays separately reusable; private project material is not
|
|
527
|
-
copied into another team or the portable soul by default.
|
|
528
|
-
- Restart preserves identity and memberships; leaving one global membership
|
|
529
|
-
preserves the others. Retiring a home preserves recoverable global custody;
|
|
530
|
-
local self-retirement reports the actual certificate/name-release result.
|
|
531
|
-
- Existing agents continue working without an unrequested restart, identity
|
|
532
|
-
replacement or checkout change.
|
|
533
|
-
- A fresh expert can inspect the recorded result, repeat preparation without
|
|
534
|
-
damage, and diagnose a deliberately missing prerequisite.
|
|
535
|
-
|
|
536
|
-
## Handoff boundaries and release baseline
|
|
537
|
-
|
|
538
|
-
OATS 0.22.19 is the published baseline for this assessment. It includes named
|
|
539
|
-
launch configurations and session restart alongside the earlier remote,
|
|
540
|
-
provider-operation, scheduling and Desktop work. This document introduces no
|
|
541
|
-
runtime changes, package installation, release or migration.
|
|
542
|
-
|
|
543
|
-
Implementation taking over from this proposal should inspect current main and
|
|
544
|
-
live deployment state rather than assuming that dated observations remain
|
|
545
|
-
current. Keep machine-specific paths, credentials and operational receipts out
|
|
546
|
-
of this portable public proposal; exchange them through the existing owner
|
|
547
|
-
handoffs.
|
|
548
|
-
|
|
549
|
-
Preserve Juan's operating constraints: do not disturb the TSM team until its
|
|
550
|
-
deployment owner confirms completion; do not interrupt urgent work or restart
|
|
551
|
-
existing agents to demonstrate onboarding. Keep one Desktop instance and
|
|
552
|
-
bounded test sessions. Existing capture/harvesting holds are not lifted by this
|
|
553
|
-
proposal. Coordinate any real pilot with its owner instead of enabling broad
|
|
554
|
-
recurring jobs as a side effect.
|
|
555
|
-
|
|
556
|
-
The next evidence sought is a repeatable, usable installation with a successful
|
|
557
|
-
remote teammate and a working handover. Additional abstractions should earn
|
|
558
|
-
their place by removing an observed obstacle to that outcome.
|