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.
Files changed (51) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +94 -8
  3. package/docs/architecture/OWLCODA_RUNKIT_0201_RELEASE_TRUTH_AND_PROFILE_NORMALIZATION_PATCH_DECISION_20260813.md +95 -0
  4. package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md +249 -0
  6. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +114 -12
  7. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  8. package/package.json +1 -1
  9. package/packages/attest/README.md +7 -1
  10. package/packages/attest/consumer-surface-v3.json +275 -0
  11. package/packages/attest/distribution-manifest-v1.json +19 -0
  12. package/packages/attest/schemas/canonical-candidate-identity-v1.schema.json +112 -0
  13. package/packages/attest/schemas/foreign-workspace-filesystem-identity-v1.schema.json +32 -0
  14. package/packages/attest/schemas/quick-verification-receipt-v4.schema.json +226 -0
  15. package/packages/attest/src/candidate-identity.mjs +454 -0
  16. package/packages/attest/src/index.mjs +11 -0
  17. package/packages/attest/src/quick-receipt-contract.mjs +126 -5
  18. package/packages/attest/src/quick.mjs +48 -8
  19. package/{registry-release-policy-v1.json → registry-release-policy-v2.json} +8 -9
  20. package/sbom.spdx.json +4 -4
  21. package/scripts/runkit-contract/core-contract.mjs +21 -1
  22. package/scripts/runkit-contract/fleet-skill-plan.mjs +223 -0
  23. package/scripts/runkit-contract/formal-workflow.mjs +3 -1
  24. package/scripts/runkit-contract/inspect-presentation.mjs +56 -0
  25. package/scripts/runkit-contract/install-codex-skill.mjs +1 -0
  26. package/scripts/runkit-contract/onboarding-bootstrap.mjs +15 -0
  27. package/scripts/runkit-contract/onboarding-doctor.mjs +201 -7
  28. package/scripts/runkit-contract/profile-onboarding.mjs +6 -0
  29. package/scripts/runkit-contract/project-cli-resolver.mjs +12 -1
  30. package/scripts/runkit-contract/quick-metrics.mjs +9 -5
  31. package/scripts/runkit-contract/quick-verify.mjs +108 -24
  32. package/scripts/runkit-contract/registry-adoption-gate.mjs +12 -3
  33. package/scripts/runkit-contract/registry-adoption.mjs +10 -5
  34. package/scripts/runkit-contract/runkit-cli.mjs +367 -20
  35. package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
  36. package/scripts/runkit-contract/schemas/delivery-lifecycle-v1.schema.json +91 -0
  37. package/scripts/runkit-contract/schemas/external-gate-v1.schema.json +68 -0
  38. package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +140 -0
  39. package/scripts/runkit-contract/schemas/inspect-compact-v1.schema.json +93 -0
  40. package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
  41. package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
  42. package/scripts/runkit-contract/schemas/team-delivery-status-v2.schema.json +219 -0
  43. package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
  44. package/scripts/runkit-contract/schemas/team-project-event-v6.schema.json +82 -0
  45. package/scripts/runkit-contract/schemas/team-project-event-v7.schema.json +80 -0
  46. package/scripts/runkit-contract/schemas/team-project-status-v4.schema.json +208 -0
  47. package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
  48. package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
  49. package/scripts/runkit-contract/sync-release-identity.mjs +87 -0
  50. package/scripts/runkit-contract/team-delivery.mjs +1031 -0
  51. 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.19.2` is an unpublished release candidate. Until registry
84
- publication is independently verified, the current installable release is
85
- `owlrunkit@0.19.1`; a locally packed 0.19.2 tarball is for candidate testing
86
- only and is not adoption provenance.
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.19.1
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.19.1 --dry-run
141
+ --exact owlrunkit@0.21.0 --dry-run
106
142
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
107
- --exact owlrunkit@0.19.1 --apply
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.
@@ -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.