owlrunkit 0.18.3 → 0.18.4
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 +42 -0
- package/README.md +125 -52
- package/docs/architecture/OWLCODA_RUNKIT_0184_EXTERNAL_DELIVERY_INTAKE_PRODUCT_DECISION_20260812.md +209 -0
- package/docs/architecture/OWLCODA_RUNKIT_USAGE_MODE_SELECTION_PRODUCT_DECISION_20260811.md +8 -7
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +109 -77
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/distribution-manifest-v1.json +5 -0
- package/packages/attest/src/quick-receipt-contract.mjs +3 -3
- package/packages/attest/src/quick.mjs +5 -0
- package/packages/attest/src/workspace-snapshot.mjs +10 -1
- package/registry-release-policy-v1.json +5 -5
- package/sbom.spdx.json +5 -5
- package/scripts/runkit-contract/assurance-router.mjs +25 -6
- package/scripts/runkit-contract/core-contract.mjs +9 -1
- package/scripts/runkit-contract/onboarding-doctor.mjs +1 -1
- package/scripts/runkit-contract/profile-onboarding.mjs +263 -15
- package/scripts/runkit-contract/project-cli-resolver.mjs +6 -0
- package/scripts/runkit-contract/project-external-delivery.mjs +707 -0
- package/scripts/runkit-contract/quick-verify.mjs +1 -1
- package/scripts/runkit-contract/runkit-bootstrap.mjs +6 -1
- package/scripts/runkit-contract/runkit-cli.mjs +278 -140
- package/scripts/runkit-contract/schemas/assurance-route-v2.schema.json +26 -0
- package/scripts/runkit-contract/schemas/profile-detection-v3.schema.json +170 -0
- package/scripts/runkit-contract/schemas/team-project-event-v3.schema.json +146 -0
- package/scripts/runkit-contract/schemas/team-project-status-v2.schema.json +85 -0
- package/scripts/runkit-contract/schemas/usage-mode-recommendation-v2.schema.json +136 -0
- package/scripts/runkit-contract/team-project.mjs +477 -15
- package/scripts/runkit-contract/usage-mode.mjs +28 -7
|
@@ -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.
|
|
11
|
-
Core `0.18.
|
|
12
|
-
`sha256:
|
|
13
|
-
The published `owlrunkit@0.18.
|
|
10
|
+
Bundled release: standalone `owlrunkit@0.18.4`, bundling Contract `0.2` and
|
|
11
|
+
Core `0.18.4` with manifest
|
|
12
|
+
`sha256:372d4c247e4b40b0fd2f3fe0f5bf928548095bfb7e2e92e9ac66790e2717f77d`.
|
|
13
|
+
The published `owlrunkit@0.18.3` 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`.
|
|
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
|
|
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.
|
|
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
|
-
|
|
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,9 +190,9 @@ 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 init --workspace "$PROJECT_ROOT"
|
|
194
|
+
npx --no-install owlrunkit inspect --json --workspace "$PROJECT_ROOT"
|
|
195
|
+
npx --no-install owlrunkit status --workspace "$PROJECT_ROOT"
|
|
169
196
|
```
|
|
170
197
|
|
|
171
198
|
Initialization may write only `.owlcoda/runkit/`. It must not modify business source.
|
|
@@ -204,40 +231,41 @@ repair surfaces. OwlRunKit uses its own version lifecycle: the standalone
|
|
|
204
231
|
For one low-risk exact command, use the Core v0.13 Quick path:
|
|
205
232
|
|
|
206
233
|
```bash
|
|
207
|
-
owlrunkit quick-verify \
|
|
234
|
+
npx --no-install owlrunkit quick-verify \
|
|
208
235
|
--workspace "$PROJECT_ROOT" -- "$ABSOLUTE_EXECUTABLE" "arg-one"
|
|
209
236
|
|
|
210
|
-
owlrunkit quick-verify \
|
|
237
|
+
npx --no-install owlrunkit quick-verify \
|
|
211
238
|
--workspace "$PROJECT_ROOT" --stdin-file "$SCRIPT_FILE" --attest \
|
|
212
239
|
-- ssh test-host /bin/sh
|
|
213
240
|
|
|
214
|
-
owlrunkit quick-attest \
|
|
241
|
+
npx --no-install owlrunkit quick-attest \
|
|
215
242
|
--workspace "$PROJECT_ROOT" --receipt "$QUICK_RECEIPT"
|
|
216
243
|
|
|
217
|
-
owlrunkit quick-metrics \
|
|
218
|
-
--workspace "$PROJECT_ROOT"
|
|
244
|
+
npx --no-install owlrunkit quick-metrics \
|
|
245
|
+
--workspace "$PROJECT_ROOT"
|
|
219
246
|
|
|
220
|
-
owlrunkit quick-metrics \
|
|
221
|
-
--workspace "$PROJECT_ROOT" --
|
|
247
|
+
npx --no-install owlrunkit quick-metrics \
|
|
248
|
+
--workspace "$PROJECT_ROOT" --verbose
|
|
222
249
|
```
|
|
223
250
|
|
|
224
251
|
`--stdin-file` copies and SHA-256-binds at most 1 MiB of regular non-symlink
|
|
225
252
|
input before supplying the stored bytes as exact stdin. `--attest` returns the
|
|
226
253
|
separate attestation object in the same high-level invocation. Quick receipts
|
|
227
254
|
remain `captured_verification`, not Formal acceptance. Metrics are aggregate by
|
|
228
|
-
default; `--verbose` adds receipt paths.
|
|
229
|
-
no telemetry or network request
|
|
255
|
+
default; `--verbose` adds receipt paths. Metrics are always local-only and
|
|
256
|
+
perform no telemetry or network request; the former `--local` flag remains an
|
|
257
|
+
accepted compatibility no-op.
|
|
230
258
|
|
|
231
259
|
Core v0.13 also adds deterministic repair and exact-byte offline transport:
|
|
232
260
|
|
|
233
261
|
```bash
|
|
234
|
-
owlrunkit repair \
|
|
262
|
+
npx --no-install owlrunkit repair \
|
|
235
263
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID"
|
|
236
264
|
|
|
237
|
-
owlrunkit offline-export \
|
|
265
|
+
npx --no-install owlrunkit offline-export \
|
|
238
266
|
--workspace "$PROJECT_ROOT" --receipt "$RECEIPT" --output "$BUNDLE"
|
|
239
267
|
|
|
240
|
-
owlrunkit offline-import \
|
|
268
|
+
npx --no-install owlrunkit offline-import \
|
|
241
269
|
--workspace "$PROJECT_ROOT" --bundle "$BUNDLE" --store "$OFFLINE_STORE"
|
|
242
270
|
```
|
|
243
271
|
|
|
@@ -272,7 +300,7 @@ loaded into the current session and grants no update authority.
|
|
|
272
300
|
The install manifest binds every Skill, Core, contract and attest file.
|
|
273
301
|
Unknown installed drift fails closed instead of being overwritten. A changed
|
|
274
302
|
process-wide Skill requires a registered complete fleet. Register each coverage
|
|
275
|
-
root once with `owlrunkit fleet register-root --fleet-root <absolute-root>`.
|
|
303
|
+
root once with `npx --no-install owlrunkit fleet register-root --fleet-root <absolute-root>`.
|
|
276
304
|
Inspect and correct a broad or stale registry through the official
|
|
277
305
|
`fleet inspect-registry` and evidence-bound `fleet replace-registry` workflow;
|
|
278
306
|
never hand-edit the registry. Replacement is dry-runnable and append-only
|
|
@@ -330,11 +358,11 @@ made inactive 0.13/0.14 ConfigV2 upgrades and exact rollback safe. Historical
|
|
|
330
358
|
projects, profiles, executions, packets, receipts and closeouts remain readable.
|
|
331
359
|
|
|
332
360
|
```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
|
|
361
|
+
npx --no-install owlrunkit doctor --workspace "$PROJECT_ROOT"
|
|
362
|
+
npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
|
|
363
|
+
npx --no-install owlrunkit profiles validate --workspace "$PROJECT_ROOT"
|
|
364
|
+
npx --no-install owlrunkit profiles impact --workspace "$PROJECT_ROOT" --changed path/to/file
|
|
365
|
+
npx --no-install owlrunkit adopt --workspace "$PROJECT_ROOT" --exact owlrunkit@0.15.1
|
|
338
366
|
```
|
|
339
367
|
|
|
340
368
|
Exact adoption requires the official npm registry `shasum`, `integrity` and
|
|
@@ -353,15 +381,15 @@ authority.
|
|
|
353
381
|
Core 0.16 makes the safe path the ordinary path without weakening its gates:
|
|
354
382
|
|
|
355
383
|
```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" \
|
|
384
|
+
npx --no-install owlrunkit fleet register-root --fleet-root /absolute/declared-projects
|
|
385
|
+
npx --no-install owlrunkit fleet discover
|
|
386
|
+
npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --dry-run
|
|
387
|
+
npx --no-install owlrunkit profiles detect --workspace "$PROJECT_ROOT" --apply
|
|
388
|
+
npx --no-install owlrunkit profiles reconcile --workspace "$PROJECT_ROOT" --dry-run
|
|
389
|
+
npx --no-install owlrunkit mode recommend --workspace "$PROJECT_ROOT"
|
|
390
|
+
npx --no-install owlrunkit assurance route --workspace "$PROJECT_ROOT" \
|
|
363
391
|
--request "$ASSURANCE_REQUEST_JSON"
|
|
364
|
-
owlrunkit status --workspace "$PROJECT_ROOT"
|
|
392
|
+
npx --no-install owlrunkit status --workspace "$PROJECT_ROOT"
|
|
365
393
|
```
|
|
366
394
|
|
|
367
395
|
Fleet discovery is complete only within all registered coverage roots, an
|
|
@@ -372,14 +400,18 @@ adopts only unambiguous high-confidence, project-local regular-file launchers;
|
|
|
372
400
|
`profiles reconcile` previews or atomically updates an existing profile set
|
|
373
401
|
with a rollback receipt. Low-confidence candidates remain untouched. Lock-bound npm and exact
|
|
374
402
|
project-installed pnpm, Yarn, and Bun launchers are supported; PATH-only
|
|
375
|
-
package managers remain review-required.
|
|
403
|
+
package managers remain review-required. A V2 dry-run reports
|
|
404
|
+
`profiles_insufficient` when real Git-visible source paths remain uncovered or
|
|
405
|
+
there is no actionable primary. Use its `minimalSuggestedProfile` and copyable
|
|
406
|
+
`repairCommands`; do not invent absent conventional directories as blockers.
|
|
407
|
+
`assurance route`
|
|
376
408
|
deterministically selects No RunKit, Quick Verification or Formal Delivery
|
|
377
409
|
from explicit risk facts and fails closed to Formal when required facts are
|
|
378
410
|
missing.
|
|
379
411
|
|
|
380
412
|
## Choose continuity and assurance independently
|
|
381
413
|
|
|
382
|
-
Start with `owlrunkit mode recommend --workspace "$PROJECT_ROOT"`. The five
|
|
414
|
+
Start with `npx --no-install owlrunkit mode recommend --workspace "$PROJECT_ROOT"`. The five
|
|
383
415
|
user-facing modes are presets over two independent dimensions:
|
|
384
416
|
|
|
385
417
|
- continuity: `none | project_driver`
|
|
@@ -419,17 +451,17 @@ incremental checks, then finish once:
|
|
|
419
451
|
```bash
|
|
420
452
|
NODE_BIN="$(node -p 'process.execPath')"
|
|
421
453
|
|
|
422
|
-
owlrunkit formal start \
|
|
454
|
+
npx --no-install owlrunkit formal start \
|
|
423
455
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID" --goal "$GOAL_JSON" \
|
|
424
456
|
--work-item "$WORK_ITEM_ID" \
|
|
425
457
|
--owned-path "src/exact-file.ts" --owned-path "tests/feature/**"
|
|
426
458
|
|
|
427
|
-
owlrunkit formal check \
|
|
459
|
+
npx --no-install owlrunkit formal check \
|
|
428
460
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
|
|
429
461
|
--from-lease "$WORK_ITEM_ID" --check-id "$CHECK_ID" \
|
|
430
462
|
--cwd "." -- "$NODE_BIN" --check "src/exact-file.ts"
|
|
431
463
|
|
|
432
|
-
owlrunkit formal finish \
|
|
464
|
+
npx --no-install owlrunkit formal finish \
|
|
433
465
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID" --decision accepted
|
|
434
466
|
```
|
|
435
467
|
|
|
@@ -446,7 +478,7 @@ Formal accepted evidence admits the built-in Node syntax check and real project
|
|
|
446
478
|
commands executed through a Verification Envelope:
|
|
447
479
|
|
|
448
480
|
```bash
|
|
449
|
-
owlrunkit formal check \
|
|
481
|
+
npx --no-install owlrunkit formal check \
|
|
450
482
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
|
|
451
483
|
--work-item "$WORK_ITEM_ID" --check-id "$CHECK_ID" \
|
|
452
484
|
--envelope "$VERIFICATION_ENVELOPE_JSON"
|
|
@@ -467,12 +499,12 @@ Freeze, verify and materialize an immutable candidate without requiring a Git
|
|
|
467
499
|
commit:
|
|
468
500
|
|
|
469
501
|
```bash
|
|
470
|
-
owlrunkit candidate freeze --workspace "$PROJECT_ROOT" \
|
|
502
|
+
npx --no-install owlrunkit candidate freeze --workspace "$PROJECT_ROOT" \
|
|
471
503
|
--run-id "$RUN_ID" --from-lease "$WORK_ITEM_ID" \
|
|
472
504
|
--candidate-id "$CANDIDATE_ID"
|
|
473
|
-
owlrunkit candidate verify --workspace "$PROJECT_ROOT" \
|
|
505
|
+
npx --no-install owlrunkit candidate verify --workspace "$PROJECT_ROOT" \
|
|
474
506
|
--candidate "$SOURCE_CANDIDATE"
|
|
475
|
-
owlrunkit candidate materialize --workspace "$PROJECT_ROOT" \
|
|
507
|
+
npx --no-install owlrunkit candidate materialize --workspace "$PROJECT_ROOT" \
|
|
476
508
|
--candidate "$SOURCE_CANDIDATE" \
|
|
477
509
|
--target-workspace "$CLEAN_WORKSPACE"
|
|
478
510
|
```
|
|
@@ -490,10 +522,10 @@ authority.
|
|
|
490
522
|
Use a frozen SourceCandidateV2 and the registered fleet boundary:
|
|
491
523
|
|
|
492
524
|
```bash
|
|
493
|
-
owlrunkit core-successor plan --workspace "$PROJECT_ROOT" \
|
|
525
|
+
npx --no-install owlrunkit core-successor plan --workspace "$PROJECT_ROOT" \
|
|
494
526
|
--plan-id "$PLAN_ID" --run-id "$RUN_ID" \
|
|
495
527
|
--from-lease "$WORK_ITEM_ID" --candidate-id "$CANDIDATE_ID"
|
|
496
|
-
owlrunkit core-successor apply --workspace "$PROJECT_ROOT" \
|
|
528
|
+
npx --no-install owlrunkit core-successor apply --workspace "$PROJECT_ROOT" \
|
|
497
529
|
--plan "$SUCCESSOR_PLAN" --owner-authority "$OWNER_AUTHORITY" \
|
|
498
530
|
--receipt-id "$RECEIPT_ID"
|
|
499
531
|
```
|
|
@@ -510,11 +542,11 @@ execute. No execution result is silently inherited.
|
|
|
510
542
|
Separate build acceptance from permission to mutate a machine:
|
|
511
543
|
|
|
512
544
|
```bash
|
|
513
|
-
owlrunkit deployment prepare --workspace "$PROJECT_ROOT" \
|
|
545
|
+
npx --no-install owlrunkit deployment prepare --workspace "$PROJECT_ROOT" \
|
|
514
546
|
--run-id "$PREPARE_RUN_ID" --artifact "$ARTIFACT" \
|
|
515
547
|
--owner-decision "$OWNER_DECISION" \
|
|
516
548
|
--media-type application/gzip --output "$PREPARE_RECEIPT"
|
|
517
|
-
owlrunkit deployment execute --workspace "$PROJECT_ROOT" \
|
|
549
|
+
npx --no-install owlrunkit deployment execute --workspace "$PROJECT_ROOT" \
|
|
518
550
|
--prepare "$PREPARE_RECEIPT" \
|
|
519
551
|
--owner-decision "$OWNER_DECISION" \
|
|
520
552
|
--owner-authority "$OWNER_AUTHORITY" \
|
|
@@ -567,7 +599,7 @@ and protocol contract, not an out-of-the-box privileged VM deployment.
|
|
|
567
599
|
Acquire one bounded writer lease with repeated explicit paths:
|
|
568
600
|
|
|
569
601
|
```bash
|
|
570
|
-
owlrunkit lease acquire \
|
|
602
|
+
npx --no-install owlrunkit lease acquire \
|
|
571
603
|
--workspace "$PROJECT_ROOT" \
|
|
572
604
|
--run-id "$RUN_ID" \
|
|
573
605
|
--work-item "$WORK_ITEM_ID" \
|
|
@@ -578,10 +610,10 @@ owlrunkit lease acquire \
|
|
|
578
610
|
Inspect or release it through the Core instead of editing lease JSON:
|
|
579
611
|
|
|
580
612
|
```bash
|
|
581
|
-
owlrunkit lease inspect \
|
|
613
|
+
npx --no-install owlrunkit lease inspect \
|
|
582
614
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID"
|
|
583
615
|
|
|
584
|
-
owlrunkit lease release \
|
|
616
|
+
npx --no-install owlrunkit lease release \
|
|
585
617
|
--workspace "$PROJECT_ROOT" --run-id "$RUN_ID" \
|
|
586
618
|
--work-item "$WORK_ITEM_ID"
|
|
587
619
|
```
|
|
@@ -589,7 +621,7 @@ owlrunkit lease release \
|
|
|
589
621
|
After implementation, derive the bounded DeliveryPacket from the active lease:
|
|
590
622
|
|
|
591
623
|
```bash
|
|
592
|
-
owlrunkit delivery create \
|
|
624
|
+
npx --no-install owlrunkit delivery create \
|
|
593
625
|
--workspace "$PROJECT_ROOT" \
|
|
594
626
|
--run-id "$RUN_ID" \
|
|
595
627
|
--from-lease "$WORK_ITEM_ID" \
|
|
@@ -625,7 +657,7 @@ If any path is uncovered, use the declared full profile. Do not interpret an emp
|
|
|
625
657
|
Before reusing evidence, prepare `OwlCodaRunKitCoverageAdoptRequestV1` and run:
|
|
626
658
|
|
|
627
659
|
```bash
|
|
628
|
-
owlrunkit coverage-adopt \
|
|
660
|
+
npx --no-install owlrunkit coverage-adopt \
|
|
629
661
|
--workspace "$PROJECT_ROOT" \
|
|
630
662
|
--run-id "$RUN_ID" \
|
|
631
663
|
--request "$COVERAGE_ADOPT_REQUEST_JSON"
|
|
@@ -645,7 +677,7 @@ After inspecting the source execution, prepare `OwlCodaRunKitResumeRequestV1`
|
|
|
645
677
|
and run:
|
|
646
678
|
|
|
647
679
|
```bash
|
|
648
|
-
owlrunkit resume \
|
|
680
|
+
npx --no-install owlrunkit resume \
|
|
649
681
|
--workspace "$PROJECT_ROOT" \
|
|
650
682
|
--run-id "$SOURCE_RUN_ID" \
|
|
651
683
|
--request "$RESUME_REQUEST_JSON"
|
|
@@ -675,7 +707,7 @@ After freezing a DeliveryPacket, prepare
|
|
|
675
707
|
SHA-256, then run:
|
|
676
708
|
|
|
677
709
|
```bash
|
|
678
|
-
owlrunkit verify-plan \
|
|
710
|
+
npx --no-install owlrunkit verify-plan \
|
|
679
711
|
--workspace "$PROJECT_ROOT" \
|
|
680
712
|
--run-id "$RUN_ID" \
|
|
681
713
|
--request "$VERIFY_PLAN_REQUEST_JSON"
|
|
@@ -706,7 +738,7 @@ For a model workload, first bind the remaining work to a hashed
|
|
|
706
738
|
`OwlCodaRunKitResourcePreflightRequestV1` and run:
|
|
707
739
|
|
|
708
740
|
```bash
|
|
709
|
-
owlrunkit resource-preflight \
|
|
741
|
+
npx --no-install owlrunkit resource-preflight \
|
|
710
742
|
--workspace "$PROJECT_ROOT" \
|
|
711
743
|
--run-id "$RUN_ID" \
|
|
712
744
|
--request "$RESOURCE_PREFLIGHT_REQUEST_JSON"
|
|
@@ -751,7 +783,7 @@ labels are not acceptance evidence.
|
|
|
751
783
|
Prepare `OwlCodaRunKitSnapshotRequestV1`, then run:
|
|
752
784
|
|
|
753
785
|
```bash
|
|
754
|
-
owlrunkit snapshot \
|
|
786
|
+
npx --no-install owlrunkit snapshot \
|
|
755
787
|
--workspace "$PROJECT_ROOT" \
|
|
756
788
|
--run-id "$RUN_ID" \
|
|
757
789
|
--request "$SNAPSHOT_REQUEST_JSON"
|
|
@@ -773,7 +805,7 @@ and after the command.
|
|
|
773
805
|
Prepare `OwlCodaRunKitVisualSmokeRequestV1`, then run:
|
|
774
806
|
|
|
775
807
|
```bash
|
|
776
|
-
owlrunkit visual-smoke \
|
|
808
|
+
npx --no-install owlrunkit visual-smoke \
|
|
777
809
|
--workspace "$PROJECT_ROOT" \
|
|
778
810
|
--run-id "$RUN_ID" \
|
|
779
811
|
--request "$VISUAL_SMOKE_REQUEST_JSON"
|
|
@@ -793,7 +825,7 @@ After every required snapshot passed and the DeliveryPacket is still fresh,
|
|
|
793
825
|
prepare `OwlCodaRunKitFinalizeRequestV1` and run:
|
|
794
826
|
|
|
795
827
|
```bash
|
|
796
|
-
owlrunkit finalize \
|
|
828
|
+
npx --no-install owlrunkit finalize \
|
|
797
829
|
--workspace "$PROJECT_ROOT" \
|
|
798
830
|
--run-id "$RUN_ID" \
|
|
799
831
|
--request "$FINALIZE_REQUEST_JSON"
|
|
@@ -810,7 +842,7 @@ this command is available.
|
|
|
810
842
|
Close only after consuming the current stage receipt and making an explicit controller decision:
|
|
811
843
|
|
|
812
844
|
```bash
|
|
813
|
-
owlrunkit closeout \
|
|
845
|
+
npx --no-install owlrunkit closeout \
|
|
814
846
|
--workspace "$PROJECT_ROOT" \
|
|
815
847
|
--run-id "$RUN_ID" \
|
|
816
848
|
--decision accepted \
|
|
@@ -831,7 +863,7 @@ After an accepted closeout, capture fresh project-root snapshots and start from
|
|
|
831
863
|
`sourceCandidatePath` or legacy `deliveryPacketPath`, then run:
|
|
832
864
|
|
|
833
865
|
```bash
|
|
834
|
-
owlrunkit ready-for-commit \
|
|
866
|
+
npx --no-install owlrunkit ready-for-commit \
|
|
835
867
|
--workspace "$PROJECT_ROOT" \
|
|
836
868
|
--run-id "$RUN_ID" \
|
|
837
869
|
--request "$READY_REQUEST_JSON"
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"schemaVersion": "OwlCodaRunKitConfigV2",
|
|
3
3
|
"core": {
|
|
4
4
|
"contractVersion": "0.2",
|
|
5
|
-
"coreVersion": "0.18.
|
|
6
|
-
"coreManifestSha256": "sha256:
|
|
7
|
-
"coreSourceRef": "artifact:sha256:
|
|
5
|
+
"coreVersion": "0.18.4",
|
|
6
|
+
"coreManifestSha256": "sha256:372d4c247e4b40b0fd2f3fe0f5bf928548095bfb7e2e92e9ac66790e2717f77d",
|
|
7
|
+
"coreSourceRef": "artifact:sha256:372d4c247e4b40b0fd2f3fe0f5bf928548095bfb7e2e92e9ac66790e2717f77d"
|
|
8
8
|
},
|
|
9
9
|
"authorizationPolicy": "external_explicit_authority_required"
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "owlrunkit",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.4",
|
|
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>",
|
|
@@ -37,6 +37,11 @@
|
|
|
37
37
|
"sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
|
|
38
38
|
},
|
|
39
39
|
"supportedProducerCoreIdentities": [
|
|
40
|
+
{
|
|
41
|
+
"contractVersion": "0.2",
|
|
42
|
+
"coreVersion": "0.18.4",
|
|
43
|
+
"coreManifestSha256": "sha256:372d4c247e4b40b0fd2f3fe0f5bf928548095bfb7e2e92e9ac66790e2717f77d"
|
|
44
|
+
},
|
|
40
45
|
{
|
|
41
46
|
"contractVersion": "0.2",
|
|
42
47
|
"coreVersion": "0.18.3",
|
|
@@ -54,7 +54,7 @@ function validCoreIdentity(value) {
|
|
|
54
54
|
&& isSha256Ref(value.coreManifestSha256);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
function
|
|
57
|
+
export function validWorkspaceSnapshotShape(value) {
|
|
58
58
|
if (!hasExactKeys(value, SNAPSHOT_REQUIRED_KEYS)) return false;
|
|
59
59
|
if (
|
|
60
60
|
value.schemaVersion !== "OwlCodaWorkspaceSnapshotV1"
|
|
@@ -122,8 +122,8 @@ export function validQuickReceiptShape(receipt) {
|
|
|
122
122
|
|| receipt.assurance !== "captured_verification"
|
|
123
123
|
|| receipt.authorizationGranted !== false
|
|
124
124
|
|| !validCoreIdentity(receipt.coreIdentity)
|
|
125
|
-
|| !
|
|
126
|
-
|| !
|
|
125
|
+
|| !validWorkspaceSnapshotShape(receipt.workspaceBefore)
|
|
126
|
+
|| !validWorkspaceSnapshotShape(receipt.workspaceAfter)
|
|
127
127
|
|| !hasExactKeys(receipt.exactCommand, ["executable", "argv", "cwd"])
|
|
128
128
|
|| typeof receipt.exactCommand.executable !== "string"
|
|
129
129
|
|| receipt.exactCommand.executable.length === 0
|
|
@@ -18,6 +18,11 @@ import { captureWorkspaceSnapshot } from "./workspace-snapshot.mjs";
|
|
|
18
18
|
export { validQuickReceiptShape } from "./quick-receipt-contract.mjs";
|
|
19
19
|
|
|
20
20
|
export const SUPPORTED_QUICK_CORE_IDENTITIES = Object.freeze([
|
|
21
|
+
{
|
|
22
|
+
contractVersion: "0.2",
|
|
23
|
+
coreVersion: "0.18.4",
|
|
24
|
+
coreManifestSha256: "sha256:372d4c247e4b40b0fd2f3fe0f5bf928548095bfb7e2e92e9ac66790e2717f77d",
|
|
25
|
+
},
|
|
21
26
|
{
|
|
22
27
|
contractVersion: "0.2",
|
|
23
28
|
coreVersion: "0.18.3",
|
|
@@ -76,7 +76,16 @@ function parseStatus(root) {
|
|
|
76
76
|
if (!field) continue;
|
|
77
77
|
const status = field.slice(0, 2);
|
|
78
78
|
const currentPath = normalizePath(field.slice(3));
|
|
79
|
-
|
|
79
|
+
let priorPath = null;
|
|
80
|
+
if (status.includes("R") || status.includes("C")) {
|
|
81
|
+
const prior = fields[index + 1];
|
|
82
|
+
if (!prior) throw new Error("Git status rename entry is incomplete.");
|
|
83
|
+
priorPath = normalizePath(prior);
|
|
84
|
+
index += 1;
|
|
85
|
+
}
|
|
86
|
+
if (status.includes("R") && priorPath && !isControlPath(priorPath)) {
|
|
87
|
+
entries.set(priorPath, { path: priorPath, state: "deleted", sha256: null });
|
|
88
|
+
}
|
|
80
89
|
if (!currentPath || isControlPath(currentPath)) continue;
|
|
81
90
|
let state = "modified";
|
|
82
91
|
if (status === "??") state = "untracked";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": "OwlCodaRunKitRegistryReleasePolicyV1",
|
|
3
3
|
"status": "release_candidate_unpublished",
|
|
4
4
|
"packageName": "owlrunkit",
|
|
5
|
-
"candidateVersion": "0.18.
|
|
5
|
+
"candidateVersion": "0.18.4",
|
|
6
6
|
"registry": "https://registry.npmjs.org",
|
|
7
7
|
"registryRequiredBeforeAdoption": true,
|
|
8
8
|
"exactVersionRequired": true,
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
],
|
|
24
24
|
"currentPublishedRelease": {
|
|
25
25
|
"packageName": "owlrunkit",
|
|
26
|
-
"version": "0.18.
|
|
27
|
-
"shasum": "
|
|
28
|
-
"integrity": "sha512-
|
|
29
|
-
"tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.18.
|
|
26
|
+
"version": "0.18.3",
|
|
27
|
+
"shasum": "f8ba5ab3d426aea21bbdd8f459fd3dd5e89ff08a",
|
|
28
|
+
"integrity": "sha512-zcsWY8sSKW1uJpa28VDqBx9coEMYnADKix9sr0rPz+kyoV6K/NDHHRMPx+24oFDKH9zVFaNyVyq5OAgoaMm8/Q==",
|
|
29
|
+
"tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.18.3.tgz"
|
|
30
30
|
},
|
|
31
31
|
"registryRelease": null,
|
|
32
32
|
"registryEvidenceMustBeExternal": true,
|
package/sbom.spdx.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"spdxVersion": "SPDX-2.3",
|
|
3
3
|
"dataLicense": "CC0-1.0",
|
|
4
4
|
"SPDXID": "SPDXRef-DOCUMENT",
|
|
5
|
-
"name": "owlrunkit-0.18.
|
|
6
|
-
"documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.18.
|
|
5
|
+
"name": "owlrunkit-0.18.4",
|
|
6
|
+
"documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.18.4",
|
|
7
7
|
"creationInfo": {
|
|
8
8
|
"created": "2026-07-29T00:00:00Z",
|
|
9
9
|
"creators": [
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
{
|
|
15
15
|
"name": "owlrunkit",
|
|
16
16
|
"SPDXID": "SPDXRef-Package-OwlRunKit",
|
|
17
|
-
"versionInfo": "0.18.
|
|
18
|
-
"downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.18.
|
|
17
|
+
"versionInfo": "0.18.4",
|
|
18
|
+
"downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.18.4.tgz",
|
|
19
19
|
"filesAnalyzed": false,
|
|
20
20
|
"licenseConcluded": "GPL-3.0-or-later",
|
|
21
21
|
"licenseDeclared": "GPL-3.0-or-later",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
{
|
|
25
25
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
26
26
|
"referenceType": "purl",
|
|
27
|
-
"referenceLocator": "pkg:npm/owlrunkit@0.18.
|
|
27
|
+
"referenceLocator": "pkg:npm/owlrunkit@0.18.4"
|
|
28
28
|
}
|
|
29
29
|
]
|
|
30
30
|
}
|