owlrunkit 0.19.2 → 0.21.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/CHANGELOG.md +63 -0
- package/README.md +94 -8
- package/docs/architecture/OWLCODA_RUNKIT_0201_RELEASE_TRUTH_AND_PROFILE_NORMALIZATION_PATCH_DECISION_20260813.md +95 -0
- package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
- package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md +249 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +114 -12
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/README.md +7 -1
- package/packages/attest/consumer-surface-v3.json +275 -0
- package/packages/attest/distribution-manifest-v1.json +19 -0
- package/packages/attest/schemas/canonical-candidate-identity-v1.schema.json +112 -0
- package/packages/attest/schemas/foreign-workspace-filesystem-identity-v1.schema.json +32 -0
- package/packages/attest/schemas/quick-verification-receipt-v4.schema.json +226 -0
- package/packages/attest/src/candidate-identity.mjs +454 -0
- package/packages/attest/src/index.mjs +11 -0
- package/packages/attest/src/quick-receipt-contract.mjs +126 -5
- package/packages/attest/src/quick.mjs +48 -8
- package/{registry-release-policy-v1.json → registry-release-policy-v2.json} +8 -9
- package/sbom.spdx.json +4 -4
- package/scripts/runkit-contract/core-contract.mjs +21 -1
- package/scripts/runkit-contract/fleet-skill-plan.mjs +223 -0
- package/scripts/runkit-contract/formal-workflow.mjs +3 -1
- package/scripts/runkit-contract/inspect-presentation.mjs +56 -0
- package/scripts/runkit-contract/install-codex-skill.mjs +1 -0
- package/scripts/runkit-contract/onboarding-bootstrap.mjs +15 -0
- package/scripts/runkit-contract/onboarding-doctor.mjs +201 -7
- package/scripts/runkit-contract/profile-onboarding.mjs +6 -0
- package/scripts/runkit-contract/project-cli-resolver.mjs +12 -1
- package/scripts/runkit-contract/quick-metrics.mjs +9 -5
- package/scripts/runkit-contract/quick-verify.mjs +108 -24
- package/scripts/runkit-contract/registry-adoption-gate.mjs +12 -3
- package/scripts/runkit-contract/registry-adoption.mjs +10 -5
- package/scripts/runkit-contract/runkit-cli.mjs +367 -20
- package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
- package/scripts/runkit-contract/schemas/delivery-lifecycle-v1.schema.json +91 -0
- package/scripts/runkit-contract/schemas/external-gate-v1.schema.json +68 -0
- package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +140 -0
- package/scripts/runkit-contract/schemas/inspect-compact-v1.schema.json +93 -0
- package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
- package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
- package/scripts/runkit-contract/schemas/team-delivery-status-v2.schema.json +219 -0
- package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
- package/scripts/runkit-contract/schemas/team-project-event-v6.schema.json +82 -0
- package/scripts/runkit-contract/schemas/team-project-event-v7.schema.json +80 -0
- package/scripts/runkit-contract/schemas/team-project-status-v4.schema.json +208 -0
- package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
- package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
- package/scripts/runkit-contract/sync-release-identity.mjs +87 -0
- package/scripts/runkit-contract/team-delivery.mjs +1031 -0
- package/scripts/runkit-contract/team-project.mjs +970 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.21.0
|
|
4
|
+
|
|
5
|
+
- Adds ExternalGateV1 as typed, source-hash-bound Project Driver truth. A due
|
|
6
|
+
pending, blocked, or deferred Gate becomes the dominant gap for its delivery
|
|
7
|
+
stage; superseding observations are append-only and raw capture cannot bypass
|
|
8
|
+
typed intake.
|
|
9
|
+
- Adds DeliveryLifecycleV1 and Project Status V4 so source acceptance,
|
|
10
|
+
integration, materialization, deployment, live readback, and product acceptance are distinct
|
|
11
|
+
evidence facts. Work-ledger completion never auto-promotes a later stage.
|
|
12
|
+
- Adds Team Delivery Status V2 with explicit known-but-unmodeled candidate
|
|
13
|
+
lanes while retaining one Project Driver graph and read-only, no-dispatch
|
|
14
|
+
Team coordination.
|
|
15
|
+
- Adds optional WorkItem Quick-evidence policy and
|
|
16
|
+
`project checkpoint --from-quick-receipt`; ordinary WorkItems remain
|
|
17
|
+
lightweight and no assurance mode changes automatically.
|
|
18
|
+
- Adds read-only `fleet skill-plan` for affected-project inventory, active
|
|
19
|
+
execution/lease blockers, and copyable dry-run, install, and rollback
|
|
20
|
+
commands. It grants no shared-Skill, project, Git, or release authority.
|
|
21
|
+
- Adds a canonical candidate ledger with fixed Git object width, C-locale path
|
|
22
|
+
ordering, complete path/mode/size/content bindings, and a transport-only raw
|
|
23
|
+
binary diff. Object-store growth no longer changes the candidate identity.
|
|
24
|
+
- Adds controller-owned `quick-verify --foreign-workspace` and Quick Receipt
|
|
25
|
+
V4. The target is copied into a disposable consumer; receipts remain under
|
|
26
|
+
the controller and bind target candidate, filesystem, dependency, command,
|
|
27
|
+
and before/after observed zero-write evidence without initializing RunKit in
|
|
28
|
+
the frozen target.
|
|
29
|
+
- Doctor now reports the package-bound and discovered process-wide Skill versions and
|
|
30
|
+
absolute paths, labels drift as a visible non-blocking warning, and keeps the
|
|
31
|
+
actually loaded Skill version honest as `unknown`.
|
|
32
|
+
- Replaces the temporal, candidate-only registry policy with a lifecycle-stable
|
|
33
|
+
registry-gated release artifact policy. The packed README, Skill, policy, and
|
|
34
|
+
SBOM no longer claim that the package is unpublished or that an older version
|
|
35
|
+
is still current; adoption still requires independent exact-registry evidence.
|
|
36
|
+
- Treats formatting-only profile reconciliation as an apply-time no-op. The
|
|
37
|
+
result remains explicit through `normalizationOnly: true`, but owner JSON
|
|
38
|
+
bytes stay unchanged and no migration receipt or tracked diff is created.
|
|
39
|
+
- Makes a version-mismatched bootstrap return the exact successor install and
|
|
40
|
+
dry-run commands instead of only reporting the older CLI's own exact spec.
|
|
41
|
+
- Adds `inspect --json --compact`, a bounded projection of project truth,
|
|
42
|
+
progress, dominant gap, owner, next action, warning groups, execution counts,
|
|
43
|
+
and the unchanged authority boundary without full execution history.
|
|
44
|
+
- Adds Team Delivery Status V2. Missing receipt warnings now carry severity,
|
|
45
|
+
blocking and gate semantics, an actionable recommendation, and deterministic
|
|
46
|
+
aggregation without retroactively requiring Formal evidence.
|
|
47
|
+
- Shows project CLI/Core and process-level shared Skill versions in doctor.
|
|
48
|
+
Skill drift is explicitly non-blocking and includes a fleet activation
|
|
49
|
+
blocker when an active execution or lease prevents safe refresh.
|
|
50
|
+
|
|
51
|
+
## 0.20.0
|
|
52
|
+
|
|
53
|
+
- Adds read-only `team recommend` and `team status` projections over the
|
|
54
|
+
existing Project Driver. Ordinary single-owner work remains off; real
|
|
55
|
+
multi-lane coordination, owned-path conflicts, independent verification, and
|
|
56
|
+
owner transitions are explained without persisting a second task graph.
|
|
57
|
+
- Publishes strict TeamTaskPacket V2, TeamAcceptancePacket V2, and
|
|
58
|
+
CandidateTransferPacket V1 contracts plus `team packet validate`. Project
|
|
59
|
+
bindings, exact WorkItem ownership, model-family independence, candidate
|
|
60
|
+
identity, handoff ACK, false-authority fields, and duplicate JSON keys fail
|
|
61
|
+
closed.
|
|
62
|
+
- Keeps Team Delivery orthogonal to continuity and assurance. This phase does
|
|
63
|
+
not dispatch Agents, rank providers, federate vendor CLIs, grant authority,
|
|
64
|
+
or turn multi-Agent coordination into Formal Delivery.
|
|
65
|
+
|
|
3
66
|
## 0.19.2
|
|
4
67
|
|
|
5
68
|
- Adds read-only `formal preflight` and reuses it before an envelope-backed
|
package/README.md
CHANGED
|
@@ -67,6 +67,42 @@ Independent verification requires a different assigned Agent. Append-only
|
|
|
67
67
|
scope revision can widen or narrow a WorkItem after diagnosis without rewriting
|
|
68
68
|
history, and missing Quick/Formal receipt references remain visible warnings.
|
|
69
69
|
|
|
70
|
+
RunKit 0.20 Phase 1 adds Team Delivery as a read-only coordination dimension
|
|
71
|
+
over the existing Project Driver. `team recommend` exits for ordinary
|
|
72
|
+
single-owner work, recommends Team only for real coordination facts, exposes
|
|
73
|
+
owned-path conflicts and independent-acceptance gaps, and never dispatches an
|
|
74
|
+
Agent. `team status` projects the existing project graph without storing a
|
|
75
|
+
second graph. Three strict portable contracts—TeamTaskPacket V2,
|
|
76
|
+
TeamAcceptancePacket V2, and CandidateTransferPacket V1—can be validated on a
|
|
77
|
+
machine that does not have the local `manage-agent-team` Skill. This phase
|
|
78
|
+
does not add automatic or assisted dispatch and does not change Quick or Formal
|
|
79
|
+
assurance.
|
|
80
|
+
|
|
81
|
+
RunKit 0.21.0 Phase 2 keeps Team Delivery read-only while making delivery truth
|
|
82
|
+
explicit. Typed external Gates may block the relevant stage without parsing a
|
|
83
|
+
domain product's documents. Source acceptance, integration, materialization, deployment, live
|
|
84
|
+
readback, and product acceptance are separate evidence-bound lifecycle facts.
|
|
85
|
+
Project Status V4 and Team Delivery Status V2 expose that progression and an
|
|
86
|
+
explicit inventory of known-but-unmodeled candidates. An optional WorkItem
|
|
87
|
+
policy can require a currently attested Quick receipt, and `fleet skill-plan`
|
|
88
|
+
shows affected projects, active blockers, and copyable install/rollback commands
|
|
89
|
+
without mutating the shared Skill. No command dispatches an Agent or raises
|
|
90
|
+
assurance automatically.
|
|
91
|
+
|
|
92
|
+
The same phase adds a fixed-width canonical candidate ledger and
|
|
93
|
+
controller-owned Foreign Quick. A controller running 0.21 may verify a
|
|
94
|
+
disjoint frozen Git worktree without installing RunKit, changing package/lock
|
|
95
|
+
files, or creating `.owlcoda/runkit` in that target. Doctor also exposes the
|
|
96
|
+
package-bound and discovered process-wide Skill identities; it cannot prove which
|
|
97
|
+
instructions an already-running Agent process loaded, so that field remains
|
|
98
|
+
`unknown`.
|
|
99
|
+
|
|
100
|
+
This release also folds in the upgrade-usability patch: cross-version bootstrap
|
|
101
|
+
failures return copyable install and retry commands; `inspect --json --compact`
|
|
102
|
+
omits historical payloads; Team receipt warnings are non-blocking, actionable,
|
|
103
|
+
and grouped; doctor reports project CLI/Core separately from a process-level
|
|
104
|
+
shared Skill; and formatting-only profile reconciliation is a zero-write apply.
|
|
105
|
+
|
|
70
106
|
The 0.18 Project Driver is a bounded surface for new projects and controlled
|
|
71
107
|
dogfood. Its product name does not claim to be a general long-running,
|
|
72
108
|
multi-phase, or enterprise control plane. Version 0.18 adds one bounded
|
|
@@ -80,13 +116,13 @@ separate authority boundaries.
|
|
|
80
116
|
|
|
81
117
|
## Install
|
|
82
118
|
|
|
83
|
-
`owlrunkit@0.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
119
|
+
This package is the lifecycle-stable `owlrunkit@0.21.0` release artifact.
|
|
120
|
+
Registry adoption remains fail-closed until its exact official npm version,
|
|
121
|
+
shasum, integrity, and tarball URL are independently verified. Local tarballs
|
|
122
|
+
remain candidate-test inputs and are never adoption provenance.
|
|
87
123
|
|
|
88
124
|
```bash
|
|
89
|
-
npm install --save-exact owlrunkit@0.
|
|
125
|
+
npm install --save-exact owlrunkit@0.21.0
|
|
90
126
|
```
|
|
91
127
|
|
|
92
128
|
Use `npx --no-install owlrunkit` for project commands. The package bootstrap
|
|
@@ -102,11 +138,12 @@ the project Config must independently bind the same Core.
|
|
|
102
138
|
```bash
|
|
103
139
|
npx --no-install owlrunkit --version
|
|
104
140
|
npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
|
|
105
|
-
--exact owlrunkit@0.
|
|
141
|
+
--exact owlrunkit@0.21.0 --dry-run
|
|
106
142
|
npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
|
|
107
|
-
--exact owlrunkit@0.
|
|
143
|
+
--exact owlrunkit@0.21.0 --apply
|
|
108
144
|
npx --no-install owlrunkit init --workspace /absolute/path/to/project
|
|
109
145
|
npx --no-install owlrunkit doctor --workspace /absolute/path/to/project
|
|
146
|
+
npx --no-install owlrunkit inspect --workspace /absolute/path/to/project --json --compact
|
|
110
147
|
npx --no-install owlrunkit mode recommend --workspace /absolute/path/to/project
|
|
111
148
|
npx --no-install owlrunkit mode status --workspace /absolute/path/to/project
|
|
112
149
|
```
|
|
@@ -118,11 +155,45 @@ back doctor. Dry-run is zero-write; failed apply restores the governed preimage
|
|
|
118
155
|
and keeps a failure receipt. It reports shared Skill drift but never silently
|
|
119
156
|
updates a user or fleet Skill.
|
|
120
157
|
|
|
158
|
+
When an older CLI receives a different exact successor spec, bootstrap returns
|
|
159
|
+
two bounded repair commands: install that exact project dependency, then rerun
|
|
160
|
+
the successor's project-local bootstrap dry-run. Doctor keeps shared Skill
|
|
161
|
+
drift non-blocking and reports why fleet-safe activation must wait when an
|
|
162
|
+
active execution or lease is present.
|
|
163
|
+
|
|
121
164
|
`mode recommend` is read-only and defaults to human output; add `--json` for a
|
|
122
165
|
machine contract. The five user modes are presets over `continuity`
|
|
123
166
|
(`none | project_driver`) and `assurance` (`none | quick | formal`). They never
|
|
124
167
|
grant Git, release, deployment, production, or business authority.
|
|
125
168
|
|
|
169
|
+
## Team Delivery: Recommend coordination without dispatch
|
|
170
|
+
|
|
171
|
+
Team Delivery is separate from continuity and assurance. It reads the current
|
|
172
|
+
Project Driver, recommends whether Team coordination is useful, and validates
|
|
173
|
+
self-contained packets without importing model-specific routing policy:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
npx --no-install owlrunkit team recommend --workspace .
|
|
177
|
+
npx --no-install owlrunkit team status --workspace .
|
|
178
|
+
npx --no-install owlrunkit team packet validate --workspace . \
|
|
179
|
+
--packet ./team-task-packet.json
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
No initialized project, no actionable work, and one ordinary ready WorkItem
|
|
183
|
+
remain `off`. Two disjoint actionable WorkItems may be parallel-eligible.
|
|
184
|
+
Overlapping owned paths recommend Team but block parallel writing and point to
|
|
185
|
+
append-only scope revision or serialization. Verification, handoff, rework,
|
|
186
|
+
candidate transfer, or multiple active owners keep coordination visible without
|
|
187
|
+
raising assurance. Every result keeps Agent dispatch and all external authority
|
|
188
|
+
false. Phase 1 contains no launcher, scheduler, model ranking, or vendor CLI
|
|
189
|
+
federation.
|
|
190
|
+
|
|
191
|
+
`team status` emits Team Delivery Status V2. Each
|
|
192
|
+
`no_bound_verification_receipt` entry includes `severity`, `blocking`,
|
|
193
|
+
`requiredAtGate`, and `recommendedAction`, plus an aggregated warning summary.
|
|
194
|
+
Completed historical WorkItems whose evidence policy did not require a reusable
|
|
195
|
+
receipt are not retroactively told to add Formal evidence.
|
|
196
|
+
|
|
126
197
|
## Project Driver: Coordinate a multi-Agent project
|
|
127
198
|
|
|
128
199
|
RunKit 0.18 keeps the project alive independently of any one Agent or chat.
|
|
@@ -338,7 +409,9 @@ and launchers that do not resolve to exact local files. Detection directly
|
|
|
338
409
|
supports lock-bound npm plus exact project-installed pnpm, Yarn, and Bun
|
|
339
410
|
launchers. A PATH-only package manager remains review-required. A dry-run that
|
|
340
411
|
only canonicalizes JSON formatting reports `normalizationOnly: true` instead of
|
|
341
|
-
showing unexplained hash drift with an empty update list.
|
|
412
|
+
showing unexplained hash drift with an empty update list. Applying that plan is
|
|
413
|
+
a zero-write `profiles_already_current` result: owner bytes remain unchanged and
|
|
414
|
+
no migration receipt or tracked formatting diff is created.
|
|
342
415
|
|
|
343
416
|
The dry-run is the V2 detection contract. It reports `profiles_insufficient`
|
|
344
417
|
instead of `profiles_detected` when Git-visible source paths are uncovered or
|
|
@@ -394,6 +467,9 @@ npx --no-install owlrunkit quick-verify --workspace . --stdin-file ./remote-chec
|
|
|
394
467
|
-- ssh test-host /bin/sh
|
|
395
468
|
npx --no-install owlrunkit quick-verify --workspace . --isolate \
|
|
396
469
|
--dependency-root /absolute/dependency-consumer -- npm test
|
|
470
|
+
npx --no-install owlrunkit quick-verify --workspace /absolute/controller \
|
|
471
|
+
--foreign-workspace /absolute/frozen-target \
|
|
472
|
+
--dependency-root /absolute/dependency-consumer -- npm test
|
|
397
473
|
npx --no-install owlrunkit quick-verify --workspace . \
|
|
398
474
|
--bind-ignored .generated/audit.json -- node ./verify-generated.mjs
|
|
399
475
|
npx --no-install owlrunkit quick-reuse --workspace . \
|
|
@@ -428,6 +504,16 @@ into the consumer, prepends its binary directory, and hash-binds package, lock,
|
|
|
428
504
|
installed-package, and executable metadata before and after execution. RunKit
|
|
429
505
|
does not install dependencies or contact a registry for this command.
|
|
430
506
|
|
|
507
|
+
`--foreign-workspace` emits Quick Receipt V4 and always uses a disposable
|
|
508
|
+
consumer. The exact project-local CLI, receipt store, stdout/stderr, and any
|
|
509
|
+
stdin material remain under the controller `--workspace`; the target receives
|
|
510
|
+
no RunKit initialization. The receipt records the target realpath, HEAD,
|
|
511
|
+
fixed-width status ledger, path/mode/size/content hashes, before/after governed
|
|
512
|
+
filesystem identity, command argv/cwd, and dependency environment. A permanent
|
|
513
|
+
observed target change invalidates the receipt. This is before/after evidence,
|
|
514
|
+
not an OS write sandbox or proof that no transient write was restored between
|
|
515
|
+
observations.
|
|
516
|
+
|
|
431
517
|
Repeatable literal `--bind-ignored` paths opt specific ignored workspace bytes
|
|
432
518
|
into Workspace Snapshot V2. Missing is a bound state; file or directory changes
|
|
433
519
|
invalidate Quick. Unrequested ignored paths remain explicitly outside the
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# OwlRunKit 0.20.1 Release Truth and Profile Normalization Patch Decision
|
|
2
|
+
|
|
3
|
+
Date: 2026-08-13
|
|
4
|
+
Status: `release_artifact_registry_gated`
|
|
5
|
+
|
|
6
|
+
## Decision
|
|
7
|
+
|
|
8
|
+
OwlRunKit 0.20.1 is a bounded patch over 0.20.0. It fixes six defects found by
|
|
9
|
+
installing the official 0.20.0 registry package into an isolated consumer and
|
|
10
|
+
then running bootstrap, doctor, profile validation, Team recommendation, and
|
|
11
|
+
Quick attestation.
|
|
12
|
+
|
|
13
|
+
The patch does not add Team dispatch, new assurance gates, deployment
|
|
14
|
+
authority, or any other product branch.
|
|
15
|
+
|
|
16
|
+
## Verified 0.20.0 dogfood facts
|
|
17
|
+
|
|
18
|
+
- Exact registry installation and project-local bootstrap completed.
|
|
19
|
+
- Doctor was ready, 28 profiles validated, Team recommendation remained
|
|
20
|
+
read-only, and Quick attestation returned GO.
|
|
21
|
+
- The installed 0.20.0 README, Skill, and release policy still carried stale
|
|
22
|
+
candidate-lifecycle wording and a stale 0.19.2 registry pointer.
|
|
23
|
+
- Applying profile reconciliation rewrote tracked `profiles.json` bytes for a
|
|
24
|
+
formatting-only normalization even though the update list was empty.
|
|
25
|
+
- An older bootstrap receiving the 0.20.0 exact spec reported only its own
|
|
26
|
+
0.19.1 exact spec and a generic issue code instead of the install-and-retry
|
|
27
|
+
correction.
|
|
28
|
+
- `inspect --json` retained complete execution and Project Driver history for
|
|
29
|
+
a routine blank-session status read.
|
|
30
|
+
- Five historical `no_bound_verification_receipt` warnings were non-blocking
|
|
31
|
+
but lacked severity, gate semantics, a recommended action, and aggregation.
|
|
32
|
+
- Doctor was ready while the project CLI/Core and process-level shared Skill
|
|
33
|
+
were on different versions, with no visible reason why fleet activation was
|
|
34
|
+
deferred.
|
|
35
|
+
|
|
36
|
+
## Product contract
|
|
37
|
+
|
|
38
|
+
### Lifecycle-stable release artifacts
|
|
39
|
+
|
|
40
|
+
`OwlCodaRunKitRegistryReleasePolicyV2` describes immutable artifact behavior,
|
|
41
|
+
not mutable registry time:
|
|
42
|
+
|
|
43
|
+
- `status=release_artifact_registry_gated`;
|
|
44
|
+
- `artifactVersion` is the package version;
|
|
45
|
+
- `rollbackRelease` is the exact already-published rollback baseline;
|
|
46
|
+
- adoption requires external exact-registry version, shasum, integrity, and
|
|
47
|
+
tarball evidence;
|
|
48
|
+
- the artifact does not encode mutable publication state or name a moving
|
|
49
|
+
latest release.
|
|
50
|
+
|
|
51
|
+
The V1 policy remains historical and is not reinterpreted in place.
|
|
52
|
+
|
|
53
|
+
### Formatting-only profile reconciliation
|
|
54
|
+
|
|
55
|
+
A dry-run may still report `normalizationOnly: true` and show the canonical
|
|
56
|
+
proposal. Applying that same plan is a semantic no-op:
|
|
57
|
+
|
|
58
|
+
- status is `profiles_already_current`;
|
|
59
|
+
- `writesPerformed=0`;
|
|
60
|
+
- the owner profile bytes remain unchanged;
|
|
61
|
+
- no reconcile receipt is created.
|
|
62
|
+
|
|
63
|
+
Real profile additions or command/path updates retain the existing atomic
|
|
64
|
+
write, receipt, and rollback behavior.
|
|
65
|
+
|
|
66
|
+
### Compact, actionable upgrade and recovery output
|
|
67
|
+
|
|
68
|
+
- A version-mismatched bootstrap returns the exact `npm install --save-exact`
|
|
69
|
+
command for the requested successor and the matching project-local bootstrap
|
|
70
|
+
dry-run command.
|
|
71
|
+
- `inspect --json --compact` emits `OwlCodaRunKitInspectCompactV1`: project
|
|
72
|
+
truth hash, progress, dominant gap, owner, next action, warning groups,
|
|
73
|
+
execution counts, and the false authority boundary only.
|
|
74
|
+
- Existing full inspect remains unchanged; compact cannot be combined with
|
|
75
|
+
history, a selected run, or verbose output.
|
|
76
|
+
|
|
77
|
+
### Team warning and shared Skill diagnosis
|
|
78
|
+
|
|
79
|
+
Team Delivery Status V2 enriches and groups Project Driver warnings while
|
|
80
|
+
leaving Status V1 unchanged. A missing Quick/Formal reference remains
|
|
81
|
+
non-blocking, does not prove that any receipt was attested, and does not impose
|
|
82
|
+
retroactive Formal work on a completed historical WorkItem.
|
|
83
|
+
|
|
84
|
+
Doctor reports project-local CLI, project Core, and process-level shared Skill
|
|
85
|
+
versions separately. Shared Skill drift does not change `ready`; if fleet-safe
|
|
86
|
+
activation is blocked by an active execution or lease, the blocker and the
|
|
87
|
+
wait-then-refresh action are visible.
|
|
88
|
+
|
|
89
|
+
## Authority boundary
|
|
90
|
+
|
|
91
|
+
This document and the packaged artifact grant no npm publication, project
|
|
92
|
+
adoption, Git integration, deployment, production, or business authority.
|
|
93
|
+
All authorization fields remain false. Registry adoption becomes eligible only
|
|
94
|
+
after separate external evidence binds the exact official-registry version,
|
|
95
|
+
shasum, integrity, and tarball URL.
|
package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# OwlRunKit 0.20 Team Delivery Phase 1 Product Decision
|
|
2
|
+
|
|
3
|
+
Date: 2026-08-13
|
|
4
|
+
Status: `source_candidate_implemented_and_verified / initial_read_only_dogfood_passed / owner_release_authorized / registry_publication_pending`
|
|
5
|
+
|
|
6
|
+
## Decision
|
|
7
|
+
|
|
8
|
+
OwlRunKit 0.20 Phase 1 adds a read-only Team Delivery projection and portable
|
|
9
|
+
team packet contracts on top of the existing Project Driver. It does not add a
|
|
10
|
+
second task graph, start Agents, route vendors, dispatch work, or change Quick
|
|
11
|
+
or Formal assurance.
|
|
12
|
+
|
|
13
|
+
The product sequence is fixed:
|
|
14
|
+
|
|
15
|
+
1. publish and stabilize 0.19.2;
|
|
16
|
+
2. implement 0.20 Phase 1 as read-only recommendation plus native contracts;
|
|
17
|
+
3. dogfood it in at least two real projects;
|
|
18
|
+
4. only if measured net value is positive, ask the Owner whether opt-in assisted
|
|
19
|
+
dispatch should be designed.
|
|
20
|
+
|
|
21
|
+
Steps 1 and 2 are complete through a repository source candidate. Step 3 has
|
|
22
|
+
started with read-only recommendation and status projection; transfer and
|
|
23
|
+
acceptance value have not yet been proven through a complete live lifecycle.
|
|
24
|
+
The Owner separately authorized the 0.20 publication transition after the
|
|
25
|
+
initial read-only dogfood. That authorization does not pre-authorize assisted
|
|
26
|
+
dispatch, project adoption, deployment, production, business, funds, or any
|
|
27
|
+
other permission transition.
|
|
28
|
+
|
|
29
|
+
## Current source-candidate evidence
|
|
30
|
+
|
|
31
|
+
- Focused Team Delivery and public-contract checks: 25 passed, 0 failed.
|
|
32
|
+
- Compatibility, CLI, project-local binding, and neighboring Formal checks:
|
|
33
|
+
129 passed, 0 failed.
|
|
34
|
+
- Standalone pack, isolated install, initialization, Team packet validation,
|
|
35
|
+
and Quick attestation: 6 passed, 0 failed.
|
|
36
|
+
- Complete RunKit gate: 853 tests, 841 passed, 0 failed, 12 skipped.
|
|
37
|
+
- Root build and production dependency audit passed; the production audit
|
|
38
|
+
reported 0 vulnerabilities.
|
|
39
|
+
- Core, Skill candidate, package config, public attester, and distribution
|
|
40
|
+
manifest resolve to
|
|
41
|
+
`sha256:30098aa9344c17c1ed0b5ed45ef1c590b3214b824402f584029c1ecb38ca7a70`.
|
|
42
|
+
|
|
43
|
+
These facts establish a source candidate only. They do not establish dogfood
|
|
44
|
+
value, registry publication, project adoption, runtime activation, or release
|
|
45
|
+
authority.
|
|
46
|
+
|
|
47
|
+
## Initial read-only dogfood
|
|
48
|
+
|
|
49
|
+
The candidate was run directly against current Project Driver truth without
|
|
50
|
+
installing or modifying either target project.
|
|
51
|
+
|
|
52
|
+
- OwlFootball had one actionable owned lane and one dependency-blocked future
|
|
53
|
+
lane. Recommendation: `off + project_driver`, assurance unchanged.
|
|
54
|
+
- The active Sierac MES control project had one actionable writer and several
|
|
55
|
+
dependency-blocked future lanes. Recommendation: `off + project_driver`,
|
|
56
|
+
assurance unchanged.
|
|
57
|
+
- A real Sierac MES parallel worktree had two simultaneously actionable,
|
|
58
|
+
disjoint, unassigned lanes. Recommendation: `team + project_driver_team`,
|
|
59
|
+
both lanes parallel-eligible, no path conflict, assurance unchanged.
|
|
60
|
+
- The first Team result exposed a self-referential `team status` next action.
|
|
61
|
+
The candidate was corrected so unassigned actionable lanes now point to
|
|
62
|
+
`project assign --help`; focused and complete gates were rerun afterward.
|
|
63
|
+
- For each directly tested project/worktree, the Project Driver tree
|
|
64
|
+
fingerprint and Git status fingerprint were byte-identical before and after.
|
|
65
|
+
Dispatch remained disabled and every authority field remained false.
|
|
66
|
+
|
|
67
|
+
This establishes correct initial admission and exit behavior. It does not yet
|
|
68
|
+
establish lower handoff time, candidate transfer value, independent acceptance
|
|
69
|
+
value, or eligibility for assisted dispatch.
|
|
70
|
+
|
|
71
|
+
## Verified starting facts
|
|
72
|
+
|
|
73
|
+
- `owlrunkit@0.19.2` is published and exact-registry verified.
|
|
74
|
+
- Project Driver already owns durable WorkItems, dependencies, owned paths,
|
|
75
|
+
assignments, decisions, checkpoints, handoffs, rework, integration gates,
|
|
76
|
+
source delivery, takeover, and project truth hashing.
|
|
77
|
+
- Usage Mode already keeps continuity and assurance separate.
|
|
78
|
+
- Quick and Formal already own evidence strength; multi-Agent work does not by
|
|
79
|
+
itself imply Formal.
|
|
80
|
+
- The local `manage-agent-team` Skill contains useful operating policy, but it
|
|
81
|
+
is not available on every machine and is not an acceptable product runtime
|
|
82
|
+
dependency.
|
|
83
|
+
- Real dogfood shows Team coordination is useful for multiple writers,
|
|
84
|
+
independent acceptance, candidate transfer, and cross-session ownership; it
|
|
85
|
+
is negative value for ordinary single-owner closure.
|
|
86
|
+
|
|
87
|
+
## Stable product model
|
|
88
|
+
|
|
89
|
+
Team Delivery adds one orthogonal dimension:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
continuity none | project_driver
|
|
93
|
+
coordination none | team_delivery
|
|
94
|
+
assurance none | quick | formal
|
|
95
|
+
acceptance L0 | L1 | L2 | L3
|
|
96
|
+
authority always externally granted; never inferred by RunKit
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`team_delivery` is a read-only coordination recommendation in Phase 1. It is
|
|
100
|
+
not a continuity mode, assurance level, acceptance verdict, or authority.
|
|
101
|
+
|
|
102
|
+
Project Driver remains the sole active project and task truth. Team Delivery
|
|
103
|
+
may project WorkItems into lanes, but it cannot create a parallel team/task
|
|
104
|
+
database or reinterpret project events.
|
|
105
|
+
|
|
106
|
+
## User-visible Phase 1 surface
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
npx --no-install owlrunkit team recommend --workspace "$PWD"
|
|
110
|
+
npx --no-install owlrunkit team status --workspace "$PWD"
|
|
111
|
+
npx --no-install owlrunkit team packet validate --workspace "$PWD" --packet <file>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
All commands are read-only and support `--json`. Human output is the default.
|
|
115
|
+
Every result includes the authority boundary and
|
|
116
|
+
`authorizationGranted=false`.
|
|
117
|
+
|
|
118
|
+
### `team recommend`
|
|
119
|
+
|
|
120
|
+
The recommendation is derived only from current Project Driver truth:
|
|
121
|
+
|
|
122
|
+
- no initialized project, no ready work, or one ordinary ready WorkItem:
|
|
123
|
+
`off`;
|
|
124
|
+
- two or more simultaneously actionable WorkItems with disjoint owned paths:
|
|
125
|
+
`team`;
|
|
126
|
+
- overlapping owned paths: `team`, but parallel writing is blocked and the
|
|
127
|
+
unique next action is to revise ownership or serialize the lanes;
|
|
128
|
+
- a WorkItem in independent verification: `team`;
|
|
129
|
+
- a pending handoff, rework return, or live candidate ownership transfer:
|
|
130
|
+
`team`;
|
|
131
|
+
- multiple active owners: `team`.
|
|
132
|
+
|
|
133
|
+
The result explains trigger reasons, rejected lighter handling, projected
|
|
134
|
+
overhead, path conflicts, acceptance gaps, and one next command. It never
|
|
135
|
+
chooses a model vendor or starts an Agent.
|
|
136
|
+
|
|
137
|
+
### `team status`
|
|
138
|
+
|
|
139
|
+
Status projects the current Project Driver into:
|
|
140
|
+
|
|
141
|
+
- current project identity and truth hash;
|
|
142
|
+
- incomplete lanes with current owner, dependencies, owned paths, and explicit
|
|
143
|
+
actionable state;
|
|
144
|
+
- which lanes may run concurrently;
|
|
145
|
+
- path conflicts;
|
|
146
|
+
- independent-acceptance gaps;
|
|
147
|
+
- handoff, rework, and source-delivery continuity facts;
|
|
148
|
+
- the current Team recommendation and unique coordination next action.
|
|
149
|
+
|
|
150
|
+
The next command must not loop back to `team status`. An unassigned actionable
|
|
151
|
+
lane points to assignment help, a path conflict points to immutable scope
|
|
152
|
+
revision help, an owner transition points to takeover help, and an already
|
|
153
|
+
owned Team candidate points to portable packet validation help.
|
|
154
|
+
|
|
155
|
+
It does not copy or persist a second task graph.
|
|
156
|
+
|
|
157
|
+
### `team packet validate`
|
|
158
|
+
|
|
159
|
+
The validator accepts one bounded regular non-symlink JSON file, rejects
|
|
160
|
+
duplicate keys and extra fields, validates the native packet contract, and
|
|
161
|
+
binds project-aware packets to the current `projectId`, `projectTruthHash`,
|
|
162
|
+
WorkItem, and owned paths. Validation performs no packet creation or project
|
|
163
|
+
mutation.
|
|
164
|
+
|
|
165
|
+
## Native portable contracts
|
|
166
|
+
|
|
167
|
+
Phase 1 publishes three strict Draft 2020-12 contracts and matching runtime
|
|
168
|
+
validators.
|
|
169
|
+
|
|
170
|
+
### TeamTaskPacket V2
|
|
171
|
+
|
|
172
|
+
The task packet binds one Project Driver WorkItem and Gate. It carries:
|
|
173
|
+
|
|
174
|
+
- actual launcher-declared Agent, model family, and model version;
|
|
175
|
+
- risk axes and required acceptance level;
|
|
176
|
+
- exact worktree and candidate-entry identity;
|
|
177
|
+
- allowed and prohibited paths/actions;
|
|
178
|
+
- evidence plan, verification cadence, handoff requirement, escalation budget,
|
|
179
|
+
and exact stop point;
|
|
180
|
+
- project identity and project truth hash;
|
|
181
|
+
- an explicit all-false authority boundary.
|
|
182
|
+
|
|
183
|
+
Model family is opaque declared identity. Core does not contain Sol, Luna,
|
|
184
|
+
Grok, Kimi, capacity ratios, retries, or routing preferences.
|
|
185
|
+
|
|
186
|
+
### TeamAcceptancePacket V2
|
|
187
|
+
|
|
188
|
+
The acceptance packet binds one Gate and candidate, records implementation and
|
|
189
|
+
verification identities, acceptance level, fresh adversarial families,
|
|
190
|
+
candidate identity before and after, evidence reuse, findings, verdict, and
|
|
191
|
+
remaining levels. Medium or high second-order risk cannot claim independent
|
|
192
|
+
acceptance when implementation and verification model families are equal.
|
|
193
|
+
|
|
194
|
+
`ACCEPT`, `REWORK`, and `BLOCKED` remain distinct. One packet accepts one Gate;
|
|
195
|
+
it does not grant the next external transition.
|
|
196
|
+
|
|
197
|
+
### CandidateTransferPacket V1
|
|
198
|
+
|
|
199
|
+
The transfer packet preserves a live candidate across writer ownership change:
|
|
200
|
+
|
|
201
|
+
```text
|
|
202
|
+
candidate_active
|
|
203
|
+
-> transfer_requested
|
|
204
|
+
-> packet_generated
|
|
205
|
+
-> new_owner_validation
|
|
206
|
+
-> handoff_ack
|
|
207
|
+
-> old_writer_release
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
It binds candidate identity, dirty manifest, reconstruction sources, protected
|
|
211
|
+
artifacts, previous and next owner, verification state, and handoff ACK. A
|
|
212
|
+
packet at `old_writer_release` is invalid unless the new owner has accepted the
|
|
213
|
+
handoff with evidence. The packet does not itself assign Project Driver
|
|
214
|
+
authority or release the prior writer.
|
|
215
|
+
|
|
216
|
+
## Admission and exit rules
|
|
217
|
+
|
|
218
|
+
Team Mode is recommended only when coordination changes the outcome or critical
|
|
219
|
+
path. Parallelism being possible is insufficient.
|
|
220
|
+
|
|
221
|
+
The recommendation must explicitly exit Team Mode for a single authorized
|
|
222
|
+
owner with a bounded, reversible, directly verifiable task. Production or
|
|
223
|
+
release labels alone do not force Team Mode. Long duration alone selects
|
|
224
|
+
continuity, not coordination. Multiple Agents alone do not force Formal.
|
|
225
|
+
|
|
226
|
+
Path conflict does not authorize parallel writers. It creates a visible
|
|
227
|
+
coordination blocker.
|
|
228
|
+
|
|
229
|
+
## Acceptance scenarios
|
|
230
|
+
|
|
231
|
+
1. No Project Driver definition returns `off`, zero lanes, no dispatch, and no
|
|
232
|
+
authority.
|
|
233
|
+
2. One ordinary ready WorkItem returns `off` even though Project Driver exists.
|
|
234
|
+
3. Two independent ready WorkItems with disjoint owned paths return `team` and
|
|
235
|
+
both lanes are parallel-eligible.
|
|
236
|
+
4. Two actionable WorkItems with overlapping owned paths return `team`, expose
|
|
237
|
+
the exact conflict, and mark both lanes non-parallel.
|
|
238
|
+
5. Independent verification, pending handoff/rework, candidate transfer, or
|
|
239
|
+
multiple active owners recommends `team` without changing assurance.
|
|
240
|
+
6. `team recommend`, `team status`, and packet validation write zero project,
|
|
241
|
+
source, Git, or RunKit bytes.
|
|
242
|
+
7. A valid TeamTaskPacket is bound to the current Project Driver WorkItem and
|
|
243
|
+
owned paths; stale project truth or widened scope is rejected.
|
|
244
|
+
8. Same-family verification at medium/high second-order risk cannot claim
|
|
245
|
+
independent acceptance.
|
|
246
|
+
9. Candidate transfer cannot reach `old_writer_release` before accepted
|
|
247
|
+
handoff ACK with evidence.
|
|
248
|
+
10. Packet schemas and runtime validators reject missing, extra, duplicate-key,
|
|
249
|
+
authority-looking, and malformed identity fields consistently.
|
|
250
|
+
11. Installed-package help, CLI JSON, public schemas, Core manifest, and the
|
|
251
|
+
Skill describe the same Phase 1 surface without requiring the local
|
|
252
|
+
`manage-agent-team` Skill.
|
|
253
|
+
12. No output authorizes Git, release, deployment, production, business,
|
|
254
|
+
automation, money, credentials, or Agent dispatch.
|
|
255
|
+
|
|
256
|
+
## Phase 1 non-goals
|
|
257
|
+
|
|
258
|
+
- no automatic or assisted Agent launch;
|
|
259
|
+
- no vendor CLI federation or general swarm;
|
|
260
|
+
- no model ranking, scorecard, capacity allocation, retry policy, or
|
|
261
|
+
model-specific prompt logic in Core;
|
|
262
|
+
- no second project/task graph;
|
|
263
|
+
- no packet generator that silently assigns ownership;
|
|
264
|
+
- no new Quick or Formal Gate;
|
|
265
|
+
- no replacement for COM-019 or any domain product decision;
|
|
266
|
+
- no 0.20 publication claim before a separately verified release transition.
|
|
267
|
+
|
|
268
|
+
## Dogfood Gate before assisted dispatch
|
|
269
|
+
|
|
270
|
+
At least two real projects must demonstrate all of the following:
|
|
271
|
+
|
|
272
|
+
- ordinary single-owner work reliably exits Team Mode;
|
|
273
|
+
- multiple writers and independent acceptance produce correct lanes, path
|
|
274
|
+
conflicts, and independence gaps;
|
|
275
|
+
- a machine without the local Skill can validate and continue from the npm
|
|
276
|
+
package and self-contained packets;
|
|
277
|
+
- writer transfer preserves the candidate through ACK;
|
|
278
|
+
- measured handoff time, controller intervention, or duplicate verification
|
|
279
|
+
decreases;
|
|
280
|
+
- the benefit is not merely more packets or receipts.
|
|
281
|
+
|
|
282
|
+
Only after these facts exist may the Owner decide whether to design opt-in
|
|
283
|
+
assisted dispatch. General automatic federation remains a separate product and
|
|
284
|
+
authority decision.
|
|
285
|
+
|
|
286
|
+
## What cannot be claimed now
|
|
287
|
+
|
|
288
|
+
- 0.20 has not completed transfer or independent-acceptance dogfood and has not
|
|
289
|
+
yet been committed, tagged, registry-published, adopted, or made active;
|
|
290
|
+
source-candidate verification is not registry publication proof.
|
|
291
|
+
- Team Delivery does not dispatch or supervise Agents.
|
|
292
|
+
- The local Skill is not part of the product runtime contract.
|
|
293
|
+
- Team recommendation is not acceptance or authority.
|
|
294
|
+
- Phase 1 is not the selected COM-019 Primary AI Value Loop.
|
|
295
|
+
- No business, production, deployment, or release outcome follows from this
|
|
296
|
+
product decision.
|