owlrunkit 0.18.3 → 0.19.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 (59) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +223 -52
  3. package/docs/architecture/OWLCODA_RUNKIT_0184_EXTERNAL_DELIVERY_INTAKE_PRODUCT_DECISION_20260812.md +209 -0
  4. package/docs/architecture/OWLCODA_RUNKIT_0190_CONSOLIDATED_DAILY_USE_PRODUCT_DECISION_20260812.md +97 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_USAGE_MODE_SELECTION_PRODUCT_DECISION_20260811.md +8 -7
  6. package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_2.md +57 -0
  7. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +133 -77
  8. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  9. package/integrations/codex/skills/owlcoda-runkit/references/contract-v0.2.md +57 -0
  10. package/package.json +1 -1
  11. package/packages/attest/README.md +9 -5
  12. package/packages/attest/consumer-surface-v2.json +263 -0
  13. package/packages/attest/distribution-manifest-v1.json +14 -1
  14. package/packages/attest/schemas/quick-verification-receipt-v3.schema.json +244 -0
  15. package/packages/attest/schemas/workspace-snapshot-v2.schema.json +114 -0
  16. package/packages/attest/src/dependency-environment.mjs +128 -0
  17. package/packages/attest/src/index.mjs +1 -0
  18. package/packages/attest/src/quick-receipt-contract.mjs +205 -12
  19. package/packages/attest/src/quick.mjs +45 -4
  20. package/packages/attest/src/workspace-snapshot.mjs +143 -7
  21. package/registry-release-policy-v1.json +5 -5
  22. package/sbom.spdx.json +5 -5
  23. package/scripts/runkit-contract/assurance-router.mjs +25 -6
  24. package/scripts/runkit-contract/core-contract.mjs +29 -1
  25. package/scripts/runkit-contract/efficiency-metrics.mjs +559 -0
  26. package/scripts/runkit-contract/evidence-store.mjs +130 -0
  27. package/scripts/runkit-contract/onboarding-bootstrap.mjs +685 -0
  28. package/scripts/runkit-contract/onboarding-doctor.mjs +3 -2
  29. package/scripts/runkit-contract/outcome-presentation.mjs +171 -0
  30. package/scripts/runkit-contract/profile-onboarding.mjs +285 -17
  31. package/scripts/runkit-contract/project-cli-resolver.mjs +29 -5
  32. package/scripts/runkit-contract/project-external-delivery.mjs +707 -0
  33. package/scripts/runkit-contract/quick-evidence-reuse.mjs +590 -0
  34. package/scripts/runkit-contract/quick-isolation.mjs +314 -0
  35. package/scripts/runkit-contract/quick-metrics.mjs +51 -3
  36. package/scripts/runkit-contract/quick-receipt.mjs +31 -1
  37. package/scripts/runkit-contract/quick-verify.mjs +217 -26
  38. package/scripts/runkit-contract/quick-workspace-snapshot.mjs +1 -0
  39. package/scripts/runkit-contract/runkit-bootstrap.mjs +7 -1
  40. package/scripts/runkit-contract/runkit-cli.mjs +602 -152
  41. package/scripts/runkit-contract/runtime-transition.mjs +478 -0
  42. package/scripts/runkit-contract/schemas/assurance-route-v2.schema.json +26 -0
  43. package/scripts/runkit-contract/schemas/efficiency-event-v1.schema.json +56 -0
  44. package/scripts/runkit-contract/schemas/efficiency-metrics-v1.schema.json +220 -0
  45. package/scripts/runkit-contract/schemas/external-runtime-report-v1.schema.json +125 -0
  46. package/scripts/runkit-contract/schemas/onboarding-bootstrap-plan-v1.schema.json +168 -0
  47. package/scripts/runkit-contract/schemas/onboarding-bootstrap-receipt-v1.schema.json +130 -0
  48. package/scripts/runkit-contract/schemas/outcome-summary-v1.schema.json +83 -0
  49. package/scripts/runkit-contract/schemas/profile-detection-v3.schema.json +170 -0
  50. package/scripts/runkit-contract/schemas/quick-evidence-reuse-plan-v1.schema.json +59 -0
  51. package/scripts/runkit-contract/schemas/quick-evidence-reuse-receipt-v1.schema.json +79 -0
  52. package/scripts/runkit-contract/schemas/runtime-transition-receipt-v1.schema.json +185 -0
  53. package/scripts/runkit-contract/schemas/team-project-event-v3.schema.json +146 -0
  54. package/scripts/runkit-contract/schemas/team-project-event-v4.schema.json +142 -0
  55. package/scripts/runkit-contract/schemas/team-project-status-v2.schema.json +85 -0
  56. package/scripts/runkit-contract/schemas/usage-mode-recommendation-v2.schema.json +136 -0
  57. package/scripts/runkit-contract/team-project.mjs +1172 -22
  58. package/scripts/runkit-contract/usage-mode.mjs +28 -7
  59. package/scripts/runkit-contract/verification-envelope.mjs +15 -18
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: owlcoda-runkit
3
- description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use when Codex needs to coordinate a large multi-Agent project, show per-Agent progress, manage dependencies or decisions, atomically return failed work for evidence-linked rework, record intentionally deferred verification without repeating covered tests, hand work to another Agent, recover a blank-session next action, initialize or inspect `.owlcoda/runkit/`, plan bounded work with engine pins and leases, capture exact verification evidence, close an execution, produce a ready-for-commit receipt, or perform a read-only foreign-project shadow without widening Git or release authority.
3
+ description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use when Codex needs to coordinate a large multi-Agent project, show per-Agent progress, manage dependencies or decisions, atomically return failed work for evidence-linked rework, import an external DeliveryPacket from a frozen target worktree, record intentionally deferred verification without repeating covered tests, hand work to another Agent, recover a blank-session next action, initialize or inspect `.owlcoda/runkit/`, plan bounded work with engine pins and leases, capture exact verification evidence, close an execution, produce a ready-for-commit receipt, or perform a read-only foreign-project shadow without widening Git or release authority.
4
4
  ---
5
5
 
6
6
  # OwlCoda RunKit
7
7
 
8
8
  Use the bundled deterministic Core to coordinate work through project artifacts rather than chat memory. Require Node.js 20 or later.
9
9
 
10
- Bundled release: standalone `owlrunkit@0.18.3`, bundling Contract `0.2` and
11
- Core `0.18.3` with manifest
12
- `sha256:cc7a923649592084150828f24f0d90f280af92514bafdbc4999f4015b3175d5c`.
13
- The published `owlrunkit@0.18.2` package is the trusted prior for rollback;
10
+ Bundled release: standalone `owlrunkit@0.19.0`, bundling Contract `0.2` and
11
+ Core `0.19.0` with manifest
12
+ `sha256:803fb7de76a6ccffd1ec5e0164eeff15a580209fa6dfbef9e561345ab616b403`.
13
+ The published `owlrunkit@0.18.4` package is the trusted prior for rollback;
14
14
  verify exact official npm registry provenance before adoption. The immutable
15
15
  rollback baseline for the prior release is `owlrunkit@0.16.1` with SHA-1
16
16
  `1bc119d24879bdd8959af16b364af55ca9d61ea9` and canonical npm tarball URL
@@ -26,7 +26,9 @@ the user to operate the CLI when the request and authority are already clear.
26
26
 
27
27
  The normal mainline is `init`, `assign`, `checkpoint`, `handoff`,
28
28
  `reject-and-return`, `decision`, `verification`, `integrate`, `status`, and
29
- `takeover`. After a project
29
+ `takeover`. External source lanes use `target-snapshot` and `import-delivery`
30
+ without installing RunKit or writing control artifacts into the frozen target.
31
+ After a project
30
32
  derives completed, `successor` is the bounded lifecycle step. `init` accepts one project definition
31
33
  JSON; subsequent actions use direct typed flags. Normal users do not author
32
34
  request, event, receipt, or hash JSON. The legacy `--request <event.json>` form
@@ -45,7 +47,13 @@ remains available for existing automation and compatibility.
45
47
  reject-and-return` event. Preserve the failed checkpoint, bind the review
46
48
  evidence, create the rework assignment, and never rewrite failure as active.
47
49
  - "Continue/take over": build `project takeover` for the current Agent and use
48
- its bounded next action and evidence refs.
50
+ its bounded next action and evidence refs. Report stale handoffs as obsolete,
51
+ and use the projected current external candidate plus its predecessor delta
52
+ instead of reconstructing source identity from chat.
53
+ - "Import Luna/Cursor delivery": capture the target entry before source work
54
+ when possible, then verify and import its exact DeliveryPacket. Without the
55
+ entry snapshot, report `candidate_only`; never claim an entry-to-candidate
56
+ overlay proof that was not captured.
49
57
  - "Start the next project": only after status derives `overall=completed`,
50
58
  invoke `project successor` with a different V1 definition and explicit
51
59
  transition ID. Preserve the content-addressed archive and journal; never
@@ -70,39 +78,53 @@ Completion requires evidence. If an assignment binds an execution, derive its
70
78
  state from the closeout and lease rather than trusting the Agent's claim.
71
79
 
72
80
  ```bash
73
- owlrunkit project init --workspace "$PROJECT_ROOT" --definition "$PROJECT_JSON"
74
- owlrunkit project assign --workspace "$PROJECT_ROOT" --assignment-id "$ASSIGNMENT_ID" \
81
+ npx --no-install owlrunkit project init --workspace "$PROJECT_ROOT" --definition "$PROJECT_JSON"
82
+ npx --no-install owlrunkit project assign --workspace "$PROJECT_ROOT" --assignment-id "$ASSIGNMENT_ID" \
75
83
  --at "$OCCURRED_AT" --work-item "$WORK_ITEM_ID" --agent "$AGENT_ID"
76
- owlrunkit project checkpoint --workspace "$PROJECT_ROOT" --checkpoint-id "$CHECKPOINT_ID" \
84
+ npx --no-install owlrunkit project checkpoint --workspace "$PROJECT_ROOT" --checkpoint-id "$CHECKPOINT_ID" \
77
85
  --at "$OCCURRED_AT" --assignment-id "$ASSIGNMENT_ID" --work-item "$WORK_ITEM_ID" \
78
86
  --state active --summary "$SUMMARY" --next "$NEXT_ACTION"
79
- owlrunkit project handoff --workspace "$PROJECT_ROOT" --handoff-id "$HANDOFF_ID" \
87
+ npx --no-install owlrunkit project handoff --workspace "$PROJECT_ROOT" --handoff-id "$HANDOFF_ID" \
80
88
  --at "$OCCURRED_AT" --assignment-id "$ASSIGNMENT_ID" --work-item "$WORK_ITEM_ID" \
81
89
  --from-agent "$AGENT_ID" --to-agent "$SUCCESSOR_AGENT_ID" \
82
90
  --summary "$SUMMARY" --next "$NEXT_ACTION" --evidence "$EVIDENCE_REF"
83
- owlrunkit project reject-and-return --workspace "$PROJECT_ROOT" \
91
+ npx --no-install owlrunkit project reject-and-return --workspace "$PROJECT_ROOT" \
84
92
  --rework-id "$REWORK_ID" --at "$OCCURRED_AT" --work-item "$WORK_ITEM_ID" \
85
93
  --reviewer-agent "$REVIEWER_AGENT_ID" --to-agent "$AGENT_ID" \
86
94
  --reason "$REJECTION_REASON" --next "$NEXT_ACTION" --evidence "$EVIDENCE_REF"
87
- owlrunkit project decision --workspace "$PROJECT_ROOT" --resolve \
95
+ npx --no-install owlrunkit project decision --workspace "$PROJECT_ROOT" --resolve \
88
96
  --decision-id "$DECISION_ID" --at "$OCCURRED_AT" --resolution "$RESOLUTION" \
89
97
  --rationale "$RATIONALE" --evidence "$EVIDENCE_REF"
90
- owlrunkit project verification --workspace "$PROJECT_ROOT" --defer \
98
+ npx --no-install owlrunkit project verification --workspace "$PROJECT_ROOT" --defer \
91
99
  --verification-id "$VERIFICATION_ID" --at "$OCCURRED_AT" \
92
100
  --work-item "$WORK_ITEM_ID" --owner-agent "$AGENT_ID" \
93
101
  --check "$CHECK_ID" --reason "$REASON" --due-gate "$GATE_ID"
94
- owlrunkit project verification --workspace "$PROJECT_ROOT" --close \
102
+ npx --no-install owlrunkit project verification --workspace "$PROJECT_ROOT" --close \
95
103
  --verification-id "$VERIFICATION_ID" --at "$OCCURRED_AT" \
96
104
  --disposition verified --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
97
- owlrunkit project integrate --workspace "$PROJECT_ROOT" --gate "$GATE_ID" \
105
+ npx --no-install owlrunkit project integrate --workspace "$PROJECT_ROOT" --gate "$GATE_ID" \
98
106
  --at "$OCCURRED_AT" --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
99
- owlrunkit project status --workspace "$PROJECT_ROOT" --json
100
- owlrunkit project takeover --workspace "$PROJECT_ROOT" --agent "$AGENT_ID" --json
101
- owlrunkit project successor --workspace "$PROJECT_ROOT" \
107
+ npx --no-install owlrunkit project status --workspace "$PROJECT_ROOT" --json
108
+ npx --no-install owlrunkit project takeover --workspace "$PROJECT_ROOT" --agent "$AGENT_ID" --json
109
+ npx --no-install owlrunkit project successor --workspace "$PROJECT_ROOT" \
102
110
  --transition-id "$TRANSITION_ID" --at "$OCCURRED_AT" \
103
111
  --definition "$NEXT_PROJECT_JSON" --reason "$SUCCESSOR_REASON" --json
112
+ npx --no-install owlrunkit project target-snapshot --workspace "$PROJECT_ROOT" \
113
+ --snapshot-id "$ENTRY_SNAPSHOT_ID" --at "$OCCURRED_AT" \
114
+ --work-item "$WORK_ITEM_ID" --target-workspace "$TARGET_WORKTREE" --apply
115
+ npx --no-install owlrunkit project import-delivery --workspace "$PROJECT_ROOT" \
116
+ --delivery-id "$DELIVERY_ID" --at "$OCCURRED_AT" \
117
+ --assignment-id "$ASSIGNMENT_ID" --work-item "$WORK_ITEM_ID" \
118
+ --producer "$AGENT_ID" --target-workspace "$TARGET_WORKTREE" \
119
+ --packet "$DELIVERY_PACKET" --entry-snapshot "$ENTRY_SNAPSHOT_ID" --apply
104
120
  ```
105
121
 
122
+ Controller and target must be disjoint real directories, and the target must
123
+ be its exact Git worktree root. Import rechecks packet bytes and stable target
124
+ identity, including both sides of renames. Do not use legacy raw project event
125
+ requests to represent an external delivery; Event V3 is admitted only through
126
+ `project import-delivery`.
127
+
106
128
  `project successor` accepts only a derived-completed active project and a
107
129
  different fresh V1 identity. It archives the exact prior bytes, never borrows
108
130
  old events, and resumes only an identical durable transition. Treat symlinks,
@@ -149,11 +171,16 @@ Git, release, deployment, or production action.
149
171
  4. Never include `.owlcoda/runkit/**` in delivery changed files, profile rules or lease owned paths.
150
172
  5. Read [references/contract-v0.2.md](references/contract-v0.2.md) for new executions and accepted closeouts. Read [references/contract-v0.1.md](references/contract-v0.1.md) only when interpreting historical v0.1 artifacts.
151
173
 
152
- Use the `owlrunkit` command for normal work. Its bootstrap resolves the
174
+ Use `npx --no-install owlrunkit` for every command after the exact project
175
+ dependency is installed. A bare `owlrunkit` may resolve an older global binary
176
+ that cannot trust a newer project Core, so do not use it for project status,
177
+ verification, or Project Driver actions. The package bootstrap resolves the
153
178
  project's exact locally bound OwlRunKit CLI before interpreting project control
154
- state. The currently installed package handles bootstrap-only operations such
179
+ state. A current package may still be used for bootstrap-only operations such
155
180
  as initialization, exact adoption and Core-successor migration. Do not bypass
156
- that resolver with a global CLI or a copied Skill Core. Project-local
181
+ the project-local entry with a global CLI or a copied/shared Skill Core. If a
182
+ process-level Skill declares an older release, use this installed package Skill
183
+ and report the activation drift; do not silently apply the old rules. Project-local
157
184
  delegation requires the canonical official npm tarball URL and SHA-512 SRI,
158
185
  an installed Core identity trusted by the current bootstrap, and the same Core
159
186
  identity in project Config; any mismatch fails closed.
@@ -163,11 +190,23 @@ below has no CLI entry.
163
190
  ## Initialize and inspect
164
191
 
165
192
  ```bash
166
- owlrunkit init --workspace "$PROJECT_ROOT"
167
- owlrunkit inspect --json --workspace "$PROJECT_ROOT"
168
- owlrunkit status --workspace "$PROJECT_ROOT"
193
+ npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
194
+ --exact owlrunkit@0.19.0 --dry-run
195
+ npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
196
+ --exact owlrunkit@0.19.0 --apply
197
+ npx --no-install owlrunkit init --workspace "$PROJECT_ROOT"
198
+ npx --no-install owlrunkit inspect --json --workspace "$PROJECT_ROOT"
199
+ npx --no-install owlrunkit status --workspace "$PROJECT_ROOT"
169
200
  ```
170
201
 
202
+ Prefer `bootstrap` for a new standalone-package consumer or an eligible idle
203
+ project upgrade. Its dry-run is zero-write; apply rechecks the exact local
204
+ package and official registry binding under a project-owned lock, then performs
205
+ Core initialization, profile reconcile/validation, adoption and doctor
206
+ readback. A later-step failure restores the governed preimage and leaves a
207
+ failure receipt. Shared Skill inspection is diagnostic only; bootstrap never
208
+ silently changes a user or fleet Skill.
209
+
171
210
  Initialization may write only `.owlcoda/runkit/`. It must not modify business source.
172
211
  It atomically upgrades a known ConfigV1 project or refreshes an older v0.2
173
212
  Core patch identity and writes a local migration receipt with
@@ -204,40 +243,53 @@ repair surfaces. OwlRunKit uses its own version lifecycle: the standalone
204
243
  For one low-risk exact command, use the Core v0.13 Quick path:
205
244
 
206
245
  ```bash
207
- owlrunkit quick-verify \
246
+ npx --no-install owlrunkit quick-verify \
208
247
  --workspace "$PROJECT_ROOT" -- "$ABSOLUTE_EXECUTABLE" "arg-one"
209
248
 
210
- owlrunkit quick-verify \
249
+ npx --no-install owlrunkit quick-verify \
211
250
  --workspace "$PROJECT_ROOT" --stdin-file "$SCRIPT_FILE" --attest \
212
251
  -- ssh test-host /bin/sh
213
252
 
214
- owlrunkit quick-attest \
253
+ npx --no-install owlrunkit quick-attest \
215
254
  --workspace "$PROJECT_ROOT" --receipt "$QUICK_RECEIPT"
216
255
 
217
- owlrunkit quick-metrics \
218
- --workspace "$PROJECT_ROOT" --local
256
+ npx --no-install owlrunkit quick-metrics \
257
+ --workspace "$PROJECT_ROOT"
258
+
259
+ npx --no-install owlrunkit quick-metrics \
260
+ --workspace "$PROJECT_ROOT" --verbose
219
261
 
220
- owlrunkit quick-metrics \
221
- --workspace "$PROJECT_ROOT" --local --verbose
262
+ npx --no-install owlrunkit efficiency status \
263
+ --workspace "$PROJECT_ROOT"
222
264
  ```
223
265
 
224
266
  `--stdin-file` copies and SHA-256-binds at most 1 MiB of regular non-symlink
225
267
  input before supplying the stored bytes as exact stdin. `--attest` returns the
226
268
  separate attestation object in the same high-level invocation. Quick receipts
227
269
  remain `captured_verification`, not Formal acceptance. Metrics are aggregate by
228
- default; `--verbose` adds receipt paths. Both forms are local-only and perform
229
- no telemetry or network request.
270
+ default; `--verbose` adds receipt paths. Metrics are always local-only and
271
+ perform no telemetry or network request; the former `--local` flag remains an
272
+ accepted compatibility no-op.
273
+
274
+ Quick's default human result leads with pass/fail and explicitly separates
275
+ candidate identity, workspace attestation, verification, product/UX,
276
+ deployment/runtime, and production/business evidence. A lower layer never
277
+ promotes a higher layer. Use `efficiency record` only for an observed workflow
278
+ start, confirmed false block, manual intervention, or named acceptable result;
279
+ use `efficiency status` to inspect local repeated commands, handoff wait, and
280
+ time-to-result. These metrics are project-local, perform no telemetry, exclude
281
+ receipt count as a value signal, and grant no additional authority.
230
282
 
231
283
  Core v0.13 also adds deterministic repair and exact-byte offline transport:
232
284
 
233
285
  ```bash
234
- owlrunkit repair \
286
+ npx --no-install owlrunkit repair \
235
287
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID"
236
288
 
237
- owlrunkit offline-export \
289
+ npx --no-install owlrunkit offline-export \
238
290
  --workspace "$PROJECT_ROOT" --receipt "$RECEIPT" --output "$BUNDLE"
239
291
 
240
- owlrunkit offline-import \
292
+ npx --no-install owlrunkit offline-import \
241
293
  --workspace "$PROJECT_ROOT" --bundle "$BUNDLE" --store "$OFFLINE_STORE"
242
294
  ```
243
295
 
@@ -272,7 +324,7 @@ loaded into the current session and grants no update authority.
272
324
  The install manifest binds every Skill, Core, contract and attest file.
273
325
  Unknown installed drift fails closed instead of being overwritten. A changed
274
326
  process-wide Skill requires a registered complete fleet. Register each coverage
275
- root once with `owlrunkit fleet register-root --fleet-root <absolute-root>`.
327
+ root once with `npx --no-install owlrunkit fleet register-root --fleet-root <absolute-root>`.
276
328
  Inspect and correct a broad or stale registry through the official
277
329
  `fleet inspect-registry` and evidence-bound `fleet replace-registry` workflow;
278
330
  never hand-edit the registry. Replacement is dry-runnable and append-only
@@ -330,11 +382,11 @@ made inactive 0.13/0.14 ConfigV2 upgrades and exact rollback safe. Historical
330
382
  projects, profiles, executions, packets, receipts and closeouts remain readable.
331
383
 
332
384
  ```bash
333
- owlrunkit doctor --workspace "$PROJECT_ROOT"
334
- owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
335
- owlrunkit profiles validate --workspace "$PROJECT_ROOT"
336
- owlrunkit profiles impact --workspace "$PROJECT_ROOT" --changed path/to/file
337
- owlrunkit adopt --workspace "$PROJECT_ROOT" --exact owlrunkit@0.15.1
385
+ npx --no-install owlrunkit doctor --workspace "$PROJECT_ROOT"
386
+ npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
387
+ npx --no-install owlrunkit profiles validate --workspace "$PROJECT_ROOT"
388
+ npx --no-install owlrunkit profiles impact --workspace "$PROJECT_ROOT" --changed path/to/file
389
+ npx --no-install owlrunkit adopt --workspace "$PROJECT_ROOT" --exact owlrunkit@0.15.1
338
390
  ```
339
391
 
340
392
  Exact adoption requires the official npm registry `shasum`, `integrity` and
@@ -353,15 +405,15 @@ authority.
353
405
  Core 0.16 makes the safe path the ordinary path without weakening its gates:
354
406
 
355
407
  ```bash
356
- owlrunkit fleet register-root --fleet-root /absolute/declared-projects
357
- owlrunkit fleet discover
358
- owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
359
- owlrunkit profiles detect --workspace "$PROJECT_ROOT" --apply
360
- owlrunkit profiles reconcile --workspace "$PROJECT_ROOT" --dry-run
361
- owlrunkit mode recommend --workspace "$PROJECT_ROOT"
362
- owlrunkit assurance route --workspace "$PROJECT_ROOT" \
408
+ npx --no-install owlrunkit fleet register-root --fleet-root /absolute/declared-projects
409
+ npx --no-install owlrunkit fleet discover
410
+ npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
411
+ npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --apply
412
+ npx --no-install owlrunkit profiles reconcile --workspace "$PROJECT_ROOT" --dry-run
413
+ npx --no-install owlrunkit mode recommend --workspace "$PROJECT_ROOT"
414
+ npx --no-install owlrunkit assurance route --workspace "$PROJECT_ROOT" \
363
415
  --request "$ASSURANCE_REQUEST_JSON"
364
- owlrunkit status --workspace "$PROJECT_ROOT"
416
+ npx --no-install owlrunkit status --workspace "$PROJECT_ROOT"
365
417
  ```
366
418
 
367
419
  Fleet discovery is complete only within all registered coverage roots, an
@@ -372,14 +424,18 @@ adopts only unambiguous high-confidence, project-local regular-file launchers;
372
424
  `profiles reconcile` previews or atomically updates an existing profile set
373
425
  with a rollback receipt. Low-confidence candidates remain untouched. Lock-bound npm and exact
374
426
  project-installed pnpm, Yarn, and Bun launchers are supported; PATH-only
375
- package managers remain review-required. `assurance route`
427
+ package managers remain review-required. A V2 dry-run reports
428
+ `profiles_insufficient` when real Git-visible source paths remain uncovered or
429
+ there is no actionable primary. Use its `minimalSuggestedProfile` and copyable
430
+ `repairCommands`; do not invent absent conventional directories as blockers.
431
+ `assurance route`
376
432
  deterministically selects No RunKit, Quick Verification or Formal Delivery
377
433
  from explicit risk facts and fails closed to Formal when required facts are
378
434
  missing.
379
435
 
380
436
  ## Choose continuity and assurance independently
381
437
 
382
- Start with `owlrunkit mode recommend --workspace "$PROJECT_ROOT"`. The five
438
+ Start with `npx --no-install owlrunkit mode recommend --workspace "$PROJECT_ROOT"`. The five
383
439
  user-facing modes are presets over two independent dimensions:
384
440
 
385
441
  - continuity: `none | project_driver`
@@ -419,17 +475,17 @@ incremental checks, then finish once:
419
475
  ```bash
420
476
  NODE_BIN="$(node -p 'process.execPath')"
421
477
 
422
- owlrunkit formal start \
478
+ npx --no-install owlrunkit formal start \
423
479
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID" --goal "$GOAL_JSON" \
424
480
  --work-item "$WORK_ITEM_ID" \
425
481
  --owned-path "src/exact-file.ts" --owned-path "tests/feature/**"
426
482
 
427
- owlrunkit formal check \
483
+ npx --no-install owlrunkit formal check \
428
484
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
429
485
  --from-lease "$WORK_ITEM_ID" --check-id "$CHECK_ID" \
430
486
  --cwd "." -- "$NODE_BIN" --check "src/exact-file.ts"
431
487
 
432
- owlrunkit formal finish \
488
+ npx --no-install owlrunkit formal finish \
433
489
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID" --decision accepted
434
490
  ```
435
491
 
@@ -446,7 +502,7 @@ Formal accepted evidence admits the built-in Node syntax check and real project
446
502
  commands executed through a Verification Envelope:
447
503
 
448
504
  ```bash
449
- owlrunkit formal check \
505
+ npx --no-install owlrunkit formal check \
450
506
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
451
507
  --work-item "$WORK_ITEM_ID" --check-id "$CHECK_ID" \
452
508
  --envelope "$VERIFICATION_ENVELOPE_JSON"
@@ -467,12 +523,12 @@ Freeze, verify and materialize an immutable candidate without requiring a Git
467
523
  commit:
468
524
 
469
525
  ```bash
470
- owlrunkit candidate freeze --workspace "$PROJECT_ROOT" \
526
+ npx --no-install owlrunkit candidate freeze --workspace "$PROJECT_ROOT" \
471
527
  --run-id "$RUN_ID" --from-lease "$WORK_ITEM_ID" \
472
528
  --candidate-id "$CANDIDATE_ID"
473
- owlrunkit candidate verify --workspace "$PROJECT_ROOT" \
529
+ npx --no-install owlrunkit candidate verify --workspace "$PROJECT_ROOT" \
474
530
  --candidate "$SOURCE_CANDIDATE"
475
- owlrunkit candidate materialize --workspace "$PROJECT_ROOT" \
531
+ npx --no-install owlrunkit candidate materialize --workspace "$PROJECT_ROOT" \
476
532
  --candidate "$SOURCE_CANDIDATE" \
477
533
  --target-workspace "$CLEAN_WORKSPACE"
478
534
  ```
@@ -490,10 +546,10 @@ authority.
490
546
  Use a frozen SourceCandidateV2 and the registered fleet boundary:
491
547
 
492
548
  ```bash
493
- owlrunkit core-successor plan --workspace "$PROJECT_ROOT" \
549
+ npx --no-install owlrunkit core-successor plan --workspace "$PROJECT_ROOT" \
494
550
  --plan-id "$PLAN_ID" --run-id "$RUN_ID" \
495
551
  --from-lease "$WORK_ITEM_ID" --candidate-id "$CANDIDATE_ID"
496
- owlrunkit core-successor apply --workspace "$PROJECT_ROOT" \
552
+ npx --no-install owlrunkit core-successor apply --workspace "$PROJECT_ROOT" \
497
553
  --plan "$SUCCESSOR_PLAN" --owner-authority "$OWNER_AUTHORITY" \
498
554
  --receipt-id "$RECEIPT_ID"
499
555
  ```
@@ -510,11 +566,11 @@ execute. No execution result is silently inherited.
510
566
  Separate build acceptance from permission to mutate a machine:
511
567
 
512
568
  ```bash
513
- owlrunkit deployment prepare --workspace "$PROJECT_ROOT" \
569
+ npx --no-install owlrunkit deployment prepare --workspace "$PROJECT_ROOT" \
514
570
  --run-id "$PREPARE_RUN_ID" --artifact "$ARTIFACT" \
515
571
  --owner-decision "$OWNER_DECISION" \
516
572
  --media-type application/gzip --output "$PREPARE_RECEIPT"
517
- owlrunkit deployment execute --workspace "$PROJECT_ROOT" \
573
+ npx --no-install owlrunkit deployment execute --workspace "$PROJECT_ROOT" \
518
574
  --prepare "$PREPARE_RECEIPT" \
519
575
  --owner-decision "$OWNER_DECISION" \
520
576
  --owner-authority "$OWNER_AUTHORITY" \
@@ -567,7 +623,7 @@ and protocol contract, not an out-of-the-box privileged VM deployment.
567
623
  Acquire one bounded writer lease with repeated explicit paths:
568
624
 
569
625
  ```bash
570
- owlrunkit lease acquire \
626
+ npx --no-install owlrunkit lease acquire \
571
627
  --workspace "$PROJECT_ROOT" \
572
628
  --run-id "$RUN_ID" \
573
629
  --work-item "$WORK_ITEM_ID" \
@@ -578,10 +634,10 @@ owlrunkit lease acquire \
578
634
  Inspect or release it through the Core instead of editing lease JSON:
579
635
 
580
636
  ```bash
581
- owlrunkit lease inspect \
637
+ npx --no-install owlrunkit lease inspect \
582
638
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID"
583
639
 
584
- owlrunkit lease release \
640
+ npx --no-install owlrunkit lease release \
585
641
  --workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
586
642
  --work-item "$WORK_ITEM_ID"
587
643
  ```
@@ -589,7 +645,7 @@ owlrunkit lease release \
589
645
  After implementation, derive the bounded DeliveryPacket from the active lease:
590
646
 
591
647
  ```bash
592
- owlrunkit delivery create \
648
+ npx --no-install owlrunkit delivery create \
593
649
  --workspace "$PROJECT_ROOT" \
594
650
  --run-id "$RUN_ID" \
595
651
  --from-lease "$WORK_ITEM_ID" \
@@ -625,7 +681,7 @@ If any path is uncovered, use the declared full profile. Do not interpret an emp
625
681
  Before reusing evidence, prepare `OwlCodaRunKitCoverageAdoptRequestV1` and run:
626
682
 
627
683
  ```bash
628
- owlrunkit coverage-adopt \
684
+ npx --no-install owlrunkit coverage-adopt \
629
685
  --workspace "$PROJECT_ROOT" \
630
686
  --run-id "$RUN_ID" \
631
687
  --request "$COVERAGE_ADOPT_REQUEST_JSON"
@@ -645,7 +701,7 @@ After inspecting the source execution, prepare `OwlCodaRunKitResumeRequestV1`
645
701
  and run:
646
702
 
647
703
  ```bash
648
- owlrunkit resume \
704
+ npx --no-install owlrunkit resume \
649
705
  --workspace "$PROJECT_ROOT" \
650
706
  --run-id "$SOURCE_RUN_ID" \
651
707
  --request "$RESUME_REQUEST_JSON"
@@ -675,7 +731,7 @@ After freezing a DeliveryPacket, prepare
675
731
  SHA-256, then run:
676
732
 
677
733
  ```bash
678
- owlrunkit verify-plan \
734
+ npx --no-install owlrunkit verify-plan \
679
735
  --workspace "$PROJECT_ROOT" \
680
736
  --run-id "$RUN_ID" \
681
737
  --request "$VERIFY_PLAN_REQUEST_JSON"
@@ -706,7 +762,7 @@ For a model workload, first bind the remaining work to a hashed
706
762
  `OwlCodaRunKitResourcePreflightRequestV1` and run:
707
763
 
708
764
  ```bash
709
- owlrunkit resource-preflight \
765
+ npx --no-install owlrunkit resource-preflight \
710
766
  --workspace "$PROJECT_ROOT" \
711
767
  --run-id "$RUN_ID" \
712
768
  --request "$RESOURCE_PREFLIGHT_REQUEST_JSON"
@@ -751,7 +807,7 @@ labels are not acceptance evidence.
751
807
  Prepare `OwlCodaRunKitSnapshotRequestV1`, then run:
752
808
 
753
809
  ```bash
754
- owlrunkit snapshot \
810
+ npx --no-install owlrunkit snapshot \
755
811
  --workspace "$PROJECT_ROOT" \
756
812
  --run-id "$RUN_ID" \
757
813
  --request "$SNAPSHOT_REQUEST_JSON"
@@ -773,7 +829,7 @@ and after the command.
773
829
  Prepare `OwlCodaRunKitVisualSmokeRequestV1`, then run:
774
830
 
775
831
  ```bash
776
- owlrunkit visual-smoke \
832
+ npx --no-install owlrunkit visual-smoke \
777
833
  --workspace "$PROJECT_ROOT" \
778
834
  --run-id "$RUN_ID" \
779
835
  --request "$VISUAL_SMOKE_REQUEST_JSON"
@@ -793,7 +849,7 @@ After every required snapshot passed and the DeliveryPacket is still fresh,
793
849
  prepare `OwlCodaRunKitFinalizeRequestV1` and run:
794
850
 
795
851
  ```bash
796
- owlrunkit finalize \
852
+ npx --no-install owlrunkit finalize \
797
853
  --workspace "$PROJECT_ROOT" \
798
854
  --run-id "$RUN_ID" \
799
855
  --request "$FINALIZE_REQUEST_JSON"
@@ -810,7 +866,7 @@ this command is available.
810
866
  Close only after consuming the current stage receipt and making an explicit controller decision:
811
867
 
812
868
  ```bash
813
- owlrunkit closeout \
869
+ npx --no-install owlrunkit closeout \
814
870
  --workspace "$PROJECT_ROOT" \
815
871
  --run-id "$RUN_ID" \
816
872
  --decision accepted \
@@ -831,7 +887,7 @@ After an accepted closeout, capture fresh project-root snapshots and start from
831
887
  `sourceCandidatePath` or legacy `deliveryPacketPath`, then run:
832
888
 
833
889
  ```bash
834
- owlrunkit ready-for-commit \
890
+ npx --no-install owlrunkit ready-for-commit \
835
891
  --workspace "$PROJECT_ROOT" \
836
892
  --run-id "$RUN_ID" \
837
893
  --request "$READY_REQUEST_JSON"
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": "OwlCodaRunKitConfigV2",
3
3
  "core": {
4
4
  "contractVersion": "0.2",
5
- "coreVersion": "0.18.3",
6
- "coreManifestSha256": "sha256:cc7a923649592084150828f24f0d90f280af92514bafdbc4999f4015b3175d5c",
7
- "coreSourceRef": "artifact:sha256:cc7a923649592084150828f24f0d90f280af92514bafdbc4999f4015b3175d5c"
5
+ "coreVersion": "0.19.0",
6
+ "coreManifestSha256": "sha256:803fb7de76a6ccffd1ec5e0164eeff15a580209fa6dfbef9e561345ab616b403",
7
+ "coreSourceRef": "artifact:sha256:803fb7de76a6ccffd1ec5e0164eeff15a580209fa6dfbef9e561345ab616b403"
8
8
  },
9
9
  "authorizationPolicy": "external_explicit_authority_required"
10
10
  }
@@ -478,6 +478,44 @@ bytes as exact stdin, and binds their workspace-relative path, byte size, and
478
478
  SHA-256. V1 remains the no-stdin receipt and stays readable. Neither schema
479
479
  binds undeclared ignored outputs or grants any authority.
480
480
 
481
+ Core `0.19.0` adds `OwlCodaQuickVerificationReceiptV3` for explicit isolation,
482
+ dependency-environment binding, and ignored-path binding. `--isolate` runs a
483
+ Git-visible candidate copy in a disposable consumer and records consumer source
484
+ versus discarded ignored-artifact deltas. `--dependency-root` binds an existing
485
+ dependency environment without installing it. `--bind-ignored` is the only
486
+ operation that emits `OwlCodaWorkspaceSnapshotV2` and claims those selected
487
+ ignored bytes. Workspace source, selected ignored paths, dependency metadata,
488
+ and consumer source mutations are distinct fail-closed facts. Disposable
489
+ ignored artifacts do not mutate or become evidence for the source checkout.
490
+
491
+ Core `0.19.0` also adds `OwlCodaQuickEvidenceReusePlanV1` and
492
+ `OwlCodaQuickEvidenceReuseReceiptV1`. A reuse plan verifies one earlier strict,
493
+ passed, source-unchanged Quick receipt from the same workspace, derives the
494
+ current candidate delta from Git objects plus both snapshots, and refuses any
495
+ path outside literal caller allowances before command execution. Byte-identical
496
+ dirty content later committed to Git remains unchanged evidence. Apply runs one
497
+ exact delta gate through Quick and records both receipt hashes; it grants no
498
+ authority and does not satisfy Formal or higher acceptance layers.
499
+
500
+ Quick output and Verification Envelope stdout/stderr evidence use a project-
501
+ global create-only SHA-256 object store. Existing Quick receipt-local material
502
+ paths remain valid; no historical tree is rewritten or deleted. Object reuse is
503
+ storage/provenance behavior, never additional assurance.
504
+
505
+ Core `0.19.0` can additionally bind external transition truth without changing
506
+ Quick Receipt V1/V2/V3. `quick-verify --capture-runtime` gives the exact child
507
+ an initially absent receipt-local `OWLRUNKIT_RUNTIME_REPORT` path. A strict
508
+ `OwlCodaRunKitExternalRuntimeReportV1` there is projected into a separately
509
+ hashed `OwlCodaRunKitRuntimeTransitionReceiptV1` that binds the Quick receipt
510
+ bytes, report bytes, derived workspace mutation, command-reported external
511
+ mutation, ordered stages, rollback outcome, final external state, and recovery
512
+ artifact `capturedBefore` / `restoresTo` semantics. A failed stage followed by
513
+ a successful rollback remains a failed transition with useful evidence; it is
514
+ not promoted to Quick, Formal, deployment, or business acceptance. Missing or
515
+ inconsistent runtime truth fails closed while preserving the base Quick
516
+ receipt. `quick-runtime-verify` rechecks stored bytes and projection integrity;
517
+ it does not independently re-observe the external runtime or grant authority.
518
+
481
519
  Deterministic `repair` persists a reviewable plan before replay, reuses only
482
520
  fresh receipt-bound coverage, replays pending exact argv, and appends
483
521
  replacement lineage. Failed and orphaned attempts remain inspectable. Repair
@@ -539,6 +577,25 @@ stale Packet, invalid evidence or engine drift must still follow the Core's
539
577
  foreign-project authority. Signing, keys, external anchors and GitHub Actions
540
578
  remain deferred.
541
579
 
580
+ ## Core v0.19 atomic onboarding
581
+
582
+ Core `0.19.0` keeps Contract `0.2` and all existing authority boundaries. The
583
+ versioned `OwlCodaRunKitOnboardingBootstrapPlanV1` dry-run binds the exact
584
+ project-local package and official registry release, checks upgrade safety,
585
+ previews profile reconciliation, reports shared Skill drift, and performs zero
586
+ writes. `bootstrap --apply` rechecks that plan under a project-owned lock, then
587
+ runs Core initialization, profile reconcile/validation, exact adoption and
588
+ doctor readback as one high-level transaction.
589
+
590
+ The transaction governs RunKit config, profiles, their migration/apply
591
+ receipts, and adoption evidence. A failure after mutation restores their exact
592
+ preimage before writing an append-only
593
+ `OwlCodaRunKitOnboardingBootstrapReceiptV1`. A concurrent bootstrap, active or
594
+ invalid project lifecycle, ambiguous project tool, exact-package mismatch, or
595
+ registry mismatch fails closed. The command does not modify package files,
596
+ source, Git, deployments, production, business state, or shared Skills, and it
597
+ never grants those authorities.
598
+
542
599
  ## Deferred work
543
600
 
544
601
  Contract v0.2 still does not add a built-in browser or Electron driver, Plugin,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owlrunkit",
3
- "version": "0.18.3",
3
+ "version": "0.19.0",
4
4
  "description": "Project Driver for cross-Agent project continuity and progression; execution, evidence, verification, and recovery are the underlying trust substrate.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "yeemio <owlclaw@163.com>",
@@ -1,15 +1,18 @@
1
1
  # `@owlcoda/attest`
2
2
 
3
3
  `@owlcoda/attest` is OwlCoda RunKit's unsigned, read-only verification plane.
4
- It verifies Quick Receipt V1 and V2 artifacts, Formal public verification
4
+ It verifies Quick Receipt V1, V2, and V3 artifacts, Formal public verification
5
5
  bundles, and local `OwlCodaAttestationRefV1` references without importing the
6
6
  private mutation Core. V2 adds one hash-bound stdin material while preserving
7
- the same unsigned, authorization-free assurance boundary.
7
+ the same unsigned, authorization-free assurance boundary. V3 adds a disposable
8
+ consumer record, optional dependency-environment binding, and explicit ignored
9
+ workspace bindings while leaving V1/V2 unchanged.
8
10
 
9
11
  The package is an unsigned V1 distribution candidate. It is intentionally
10
12
  marked private until naming clearance and release authorization exist.
11
- `consumer-surface-v1.json` freezes the complete command, schema, reference,
12
- issue-code, compatibility, privacy, metrics, and unsupported-claim covenant.
13
+ `consumer-surface-v1.json` remains the byte-compatible predecessor contract.
14
+ `consumer-surface-v2.json` adds Receipt V3, Snapshot V2, isolated Quick, and
15
+ explicit ignored-path issue codes without reinterpreting V1.
13
16
 
14
17
  ## CLI
15
18
 
@@ -58,7 +61,8 @@ in the repository documentation under
58
61
  receipts but does not require N-1 to trust an unknown future Core identity.
59
62
 
60
63
  The packed candidate includes its GPL-3.0-or-later license, a package-level
61
- SPDX 2.3 SBOM, and the frozen Consumer Surface V1 manifest. Local metrics never
64
+ SPDX 2.3 SBOM, the frozen Consumer Surface V1 manifest, and the additive V2
65
+ surface. Local metrics never
62
66
  send telemetry and are not a performance target. They describe local receipt
63
67
  state; separate consumption must be evidenced by a caller-owned attestation
64
68
  result.