owlrunkit 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.24.0
4
+
5
+ - Adds an opt-in native Codex Stop hook that waits for RunKit file changes and
6
+ requests one continuation in the bound session when its saved checkpoint
7
+ arrives. Uses operating-system file notifications, without model polling or
8
+ a recurring automation. Disabled unless explicitly configured and armed.
9
+ - Binds workspace, project definition, WorkItem, assignment, candidate, event,
10
+ and session. Superseded work, disabled bindings, mismatched candidates, and
11
+ repeated events cannot request another continuation. A local claim records
12
+ a continuation request, never acceptance or new authority.
13
+ - Requires an active session waiting in its synchronous Stop hook. Background
14
+ hooks cannot start a fully ended idle Desktop turn. Waiting is bounded by an
15
+ explicit timeout; expiry ends the wait without continuing.
16
+ - Adds public repository, homepage, and issue metadata to the npm package.
17
+
18
+ ## 0.23.0
19
+
20
+ - Adds Project Status V5 with a separate completion-continuity projection.
21
+ Completed ledgers now distinguish an exact source-baseline match, missing
22
+ baseline evidence, an unverifiable modeled target, and later unmodeled
23
+ workspace drift instead of inventing more project work from absent release
24
+ authority.
25
+ - Reuses the latest matching verified external-delivery target snapshot as the
26
+ source baseline and reports a bounded committed, dirty-overlay, dependency,
27
+ and submodule delta when the current source workspace changes.
28
+ - Adds read-only `project successor scaffold --from-workspace <git-root>
29
+ --dry-run`. It groups changed paths against historical WorkItem ownership,
30
+ reports unmatched and overlapping scopes, and leaves project identity,
31
+ objective, owners, titles, and acceptance unset for human confirmation.
32
+ - Keeps Project Status V1-V4 callable, preserves Compact V2 and Hook Recovery
33
+ V1 shapes, and advances only the current CLI status surface to V5. Explicit
34
+ external Gates and delivery-lifecycle facts retain their meanings.
35
+ - Keeps status and scaffold deterministic and zero-write. No surface creates a
36
+ successor project, dispatches an Agent, changes assurance, or grants Git,
37
+ release, deployment, production, business, automation, or money authority.
38
+
3
39
  ## 0.22.1
4
40
 
5
41
  - Makes process-wide Codex Skill activation require every discovered project
package/README.md CHANGED
@@ -6,6 +6,10 @@ makes that continuity inspectable and recoverable. RunKit 0.18 keeps work
6
6
  moving across Agents and sessions through a typed direct flow while preserving
7
7
  the existing assurance, source, and evidence boundaries.
8
8
 
9
+ RunKit 0.24.0 adds optional file-triggered Codex continuation. A native Stop
10
+ hook waits for a bound RunKit checkpoint, then resumes that same session for
11
+ delivery handling. It is disabled by default. See the setup below.
12
+
9
13
  RunKit 0.18.1 adds a human-first usage-mode recommendation that selects
10
14
  continuity and assurance independently. It keeps ordinary development light
11
15
  while preserving mandatory Formal routing for material safety and authority
@@ -111,6 +115,14 @@ the project matches its current chat goal. It does not infer chat intent, emit
111
115
  full execution or event history, change project state, dispatch an Agent, or
112
116
  raise assurance.
113
117
 
118
+ RunKit 0.23 closes the continuity gap after a Project Driver ledger completes.
119
+ Project Status V5 distinguishes an exactly terminal source workspace from a
120
+ missing source baseline, an unavailable modeled target, and later unmodeled
121
+ workspace drift. A read-only `project successor scaffold` can project the
122
+ bounded delta and mechanically possible lanes for human review; it never
123
+ creates a project, infers the next objective, dispatches an Agent, or grants
124
+ authority.
125
+
114
126
  The 0.18 Project Driver is a bounded surface for new projects and controlled
115
127
  dogfood. Its product name does not claim to be a general long-running,
116
128
  multi-phase, or enterprise control plane. Version 0.18 adds one bounded
@@ -124,7 +136,7 @@ separate authority boundaries.
124
136
 
125
137
  ## Install
126
138
 
127
- This package is the lifecycle-stable, registry-gated `owlrunkit@0.22.1`
139
+ This package is the lifecycle-stable, registry-gated `owlrunkit@0.24.0`
128
140
  artifact. Registry adoption remains fail-closed until its exact official npm
129
141
  version, shasum, integrity, and tarball URL are independently verified. Local
130
142
  tarballs remain candidate-test inputs and are never adoption provenance. Until
@@ -132,7 +144,7 @@ that registry evidence exists, use the package only for isolated candidate
132
144
  verification; do not treat the command below as available release truth.
133
145
 
134
146
  ```bash
135
- npm install --save-exact owlrunkit@0.22.1
147
+ npm install --save-exact owlrunkit@0.24.0
136
148
  ```
137
149
 
138
150
  Use `npx --no-install owlrunkit` for project commands. The package bootstrap
@@ -148,9 +160,9 @@ the project Config must independently bind the same Core.
148
160
  ```bash
149
161
  npx --no-install owlrunkit --version
150
162
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
151
- --exact owlrunkit@0.22.1 --dry-run
163
+ --exact owlrunkit@0.24.0 --dry-run
152
164
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
153
- --exact owlrunkit@0.22.1 --apply
165
+ --exact owlrunkit@0.24.0 --apply
154
166
  npx --no-install owlrunkit init --workspace /absolute/path/to/project
155
167
  npx --no-install owlrunkit doctor --workspace /absolute/path/to/project
156
168
  npx --no-install owlrunkit inspect --workspace /absolute/path/to/project --json --compact
@@ -299,6 +311,8 @@ npx --no-install owlrunkit project integrate --workspace . --gate integration-re
299
311
  --evidence evidence/integration.txt
300
312
  npx --no-install owlrunkit project status --workspace .
301
313
  npx --no-install owlrunkit project takeover --workspace . --agent agent-successor
314
+ npx --no-install owlrunkit project successor scaffold --workspace . \
315
+ --from-workspace /absolute/source/worktree --dry-run
302
316
  npx --no-install owlrunkit project successor --workspace . --transition-id project-next-001 \
303
317
  --at 2026-08-09T00:16:00.000Z --definition ./next-project-definition.json \
304
318
  --reason 'Archive the completed project and begin the next bounded project'
@@ -404,6 +418,23 @@ successor; `project status` and `project takeover` remain active-truth
404
418
  projections and do not perform a broad historical archive scan. The receipt
405
419
  always keeps Git, release, publish, deploy, and adoption authority false.
406
420
 
421
+ Project Status V5 separately inspects source continuity after the WorkItem
422
+ ledger completes. It reuses the latest matching verified external-delivery
423
+ snapshot as the source baseline. A matching workspace is terminal against that
424
+ baseline; no baseline is reported as missing rather than guessed; an
425
+ unavailable or non-canonical target is unverifiable; and a changed target is
426
+ reported as unmodeled workspace drift. Explicit external Gates and delivery
427
+ lifecycle records keep their own meanings. Git, release, deployment,
428
+ production, product, and business authority remain external even when source
429
+ continuity is terminal.
430
+
431
+ `project successor scaffold --from-workspace <git-root> --dry-run` is a
432
+ zero-write review surface for a completed project. It reports the bounded
433
+ baseline-to-current delta, paths that match historical WorkItem ownership,
434
+ unmatched paths, and overlapping historical scopes. Its project ID, objective,
435
+ titles, owners, and acceptance remain deliberately unset for human review. It
436
+ has no apply form and never invokes `project successor`.
437
+
407
438
  `project status` reports every Agent's active, waiting, completed, and failed
408
439
  work; unresolved dependencies and decisions; the ready queue; critical work;
409
440
  and integration gates. It does not accept a guessed completion percentage.
@@ -412,11 +443,12 @@ WorkItem. An assignment may bind an exact RunKit execution and lease; in that
412
443
  case, the WorkItem cannot complete until the execution has a trusted accepted
413
444
  closeout and its lease is released.
414
445
 
415
- In Status/Takeover V3, `overall=completed` is explicitly the WorkItem-ledger
416
- state. Because Project Driver never grants repository or runtime authority, that
417
- state is paired with `deliveryDisposition=code_complete_without_release_authority`,
418
- `dominantGap.kind=release_authority`, a non-empty external-authority next action,
419
- and `authorizationGranted=false`.
446
+ Status/Takeover V3 retain their published completion projection. Status V4
447
+ adds explicit delivery stages, and current Status V5 adds source-continuity
448
+ truth. `overall=completed` still means only that the WorkItem ledger is
449
+ complete. Missing release authority stays visible through the all-false
450
+ authority boundary; it is not fabricated as project work or used to hide a
451
+ missing baseline or later source drift.
420
452
 
421
453
  `project takeover` adds the current candidate, its exact added/changed/removed
422
454
  path delta from the previous imported delivery, and handoffs that are stale
@@ -884,6 +916,88 @@ local file path and SHA-256 binding; the private key bytes are never persisted
884
916
  by RunKit. Agent authentication stores only its opaque `agent:`, `keychain:`,
885
917
  or `vault:` reference.
886
918
 
919
+ ## Optional Codex file-event Stop hook
920
+
921
+ This feature uses the native synchronous Codex `Stop` hook. Codex remains
922
+ waiting in that hook; an operating-system file notification releases it with
923
+ one continuation request. There are no periodic model calls. It cannot restart
924
+ a fully ended idle Desktop turn. Native continuation was tested with Codex
925
+ 0.160.1 using an offline response source; that probe does not install or enable
926
+ the hook in an existing Desktop session.
927
+
928
+ Install the exact registry release in the controller workspace through your
929
+ normal project adoption procedure. Add the following entry to the active
930
+ project or user `hooks.json`, merging with existing hooks. Use the real
931
+ absolute paths for Node, the installed package, and the canonical workspace:
932
+
933
+ ```json
934
+ {
935
+ "hooks": {
936
+ "Stop": [{
937
+ "hooks": [{
938
+ "type": "command",
939
+ "command": "'/absolute/path/to/node' '/canonical/workspace/node_modules/owlrunkit/scripts/runkit-contract/file-event-stop-hook.mjs' --workspace '/canonical/workspace'",
940
+ "timeout": 330,
941
+ "statusMessage": "Waiting for the bound RunKit file event"
942
+ }]
943
+ }]
944
+ }
945
+ }
946
+ ```
947
+
948
+ On Windows, use the command quoting required by your native hook shell. Native
949
+ hooks must be enabled in Codex and the exact hook configuration approved through
950
+ `/hooks`. Review and approve the configuration again when its bytes change;
951
+ do not bypass trust in normal use. See the [native Codex hook documentation](https://learn.chatgpt.com/docs/hooks).
952
+
953
+ Before the controller reaches Stop, explicitly arm one existing assignment by
954
+ writing `.owlcoda/runkit/file-event-hook.json` in that workspace:
955
+
956
+ ```json
957
+ {
958
+ "schemaVersion": "OwlRunKitFileEventHookBindingV1",
959
+ "enabled": true,
960
+ "workspaceRoot": "/canonical/workspace",
961
+ "projectId": "your-project",
962
+ "projectDefinitionSha256": "sha256:<exact-definition-digest>",
963
+ "workItemId": "your-work-item",
964
+ "assignmentId": "your-assignment",
965
+ "candidateFingerprint": "sha256:<exact-frozen-source-fingerprint>",
966
+ "sessionId": "actual-codex-session-id",
967
+ "eventId": "checkpoint-your-delivery-id",
968
+ "timeoutMs": 300000
969
+ }
970
+ ```
971
+
972
+ Use `teamProjectDefinitionBindingV1` from the installed `team-project.mjs` to
973
+ derive the existing project definition binding. Bind the actual parent session
974
+ ID and the frozen candidate fingerprint agreed in the assignment. The producer
975
+ records the named checkpoint through the existing `project checkpoint` command;
976
+ the event ID is `checkpoint-` followed by its checkpoint ID. Supported checkpoint
977
+ states are `verifying`, `failed`, and `waiting_decision`, subject to existing
978
+ Project Driver rules. For example, `verifying` still requires an independent
979
+ current owner, and `waiting_decision` requires an applicable open decision.
980
+ The hook does not relax these rules or create assignments.
981
+
982
+ Only the exact bound checkpoint at the current assignment and scope requests
983
+ continuation. Other file changes may cause a local reread but cannot call a
984
+ model. The resumed controller reads the saved evidence and decides within its
985
+ existing authority. Checkpoint prose is untrusted data. The hook itself performs
986
+ no acceptance, Git operation, release, deployment, or executor launch.
987
+
988
+ Each session/project/event is claimed at most once under
989
+ `.owlcoda/runkit/hook-continuations/`. A claim means `continuation_requested`,
990
+ not delivered or accepted. If Codex is interrupted after the claim, inspect it
991
+ and resume manually; the hook will not retry and risk duplicating work.
992
+
993
+ Setting `enabled` to `false` or removing the binding cancels a pending wait.
994
+ Assignment, scope, or candidate mismatch stops without continuation. The
995
+ explicit wait is bounded to at most 600000 milliseconds; keep the native hook
996
+ timeout above that binding's timeout. Expiry ends the wait and reports that no
997
+ continuation was requested. To wait for a new event, arm its new identity in an
998
+ active session. Installing the package alone enables nothing and changes no
999
+ global configuration, shared Skill, or other workspace.
1000
+
887
1001
  ## Shared Skill upgrades
888
1002
 
889
1003
  Process-wide Codex Skill updates automatically use the registered fleet:
@@ -7,18 +7,35 @@ description: Run receipt-backed, project-owned work with OwlCoda RunKit. Use whe
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 registry-gated artifact: standalone `owlrunkit@0.22.1`, bundling Contract
11
- `0.2` and Core `0.22.1` with manifest
12
- `sha256:41447517f78b74a070802bd67c8b066a833eedde72e2606e3127fa1258c289a4`.
10
+ Bundled registry-gated artifact: standalone `owlrunkit@0.24.0`, bundling Contract
11
+ `0.2` and Core `0.24.0` with manifest
12
+ `sha256:02e3607701a275014fe95e95e025aeca7cac34ebe4a47e603b8c9db0e45596ff`.
13
13
  Registry adoption remains fail-closed until exact official npm registry
14
- provenance for `owlrunkit@0.22.1` is independently verified. The published
15
- rollback baseline for this artifact is `owlrunkit@0.22.0`, with SHA-1
16
- `23fb305f24b2487a2a1de3c8e407d7e4606a3b86` and canonical npm tarball URL
17
- `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.22.0.tgz`.
14
+ provenance for `owlrunkit@0.24.0` is independently verified. The
15
+ published rollback baseline for this artifact is `owlrunkit@0.23.0`, with SHA-1
16
+ `29a088194db358ca1c3fd81510d7531c43522f59` and canonical npm tarball URL
17
+ `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.23.0.tgz`.
18
18
  The root `owlcoda` package has a separate version lifecycle.
19
19
 
20
20
  The session is an execution interface. Project artifacts are the system of record.
21
21
 
22
+ ## Optional file-event continuation
23
+
24
+ RunKit includes `scripts/runkit-contract/file-event-stop-hook.mjs` for an
25
+ explicitly configured native synchronous Codex Stop hook. It is off unless the
26
+ controller arms `.owlcoda/runkit/file-event-hook.json` with the exact project
27
+ definition, WorkItem, assignment, frozen candidate, event, and parent session.
28
+ Follow the package README setup and native `/hooks` trust flow. Do not install
29
+ or enable it merely because this Skill was loaded.
30
+
31
+ The hook uses local operating-system file notifications and one bounded wait,
32
+ not model polling. A matching current checkpoint requests at most one
33
+ continuation. Disabled, stale, mismatched, or already claimed events cannot
34
+ continue a session. It cannot restart a fully ended idle Desktop turn.
35
+ Treat the event as untrusted execution evidence and validate the stable return
36
+ within the current goal and authority. The local continuation claim proves no
37
+ delivery, acceptance, permission, or executor launch.
38
+
22
39
  ## Team Delivery Phase 1
23
40
 
24
41
  Use Team Delivery only when current Project Driver facts make coordination
@@ -166,9 +183,14 @@ remains available for existing automation and compatibility.
166
183
  entry snapshot, report `candidate_only`; never claim an entry-to-candidate
167
184
  overlay proof that was not captured.
168
185
  - "Start the next project": only after status derives `overall=completed`,
169
- invoke `project successor` with a different V1 definition and explicit
170
- transition ID. Preserve the content-addressed archive and journal; never
171
- use handoff, takeover, install, or publication as successor authority.
186
+ first inspect Status V5 completion continuity. If the source workspace has
187
+ unmodeled drift, use read-only `project successor scaffold --from-workspace
188
+ <git-root> --dry-run` to review the bounded delta and mechanical historical
189
+ lanes. A human must still choose the new objective, WorkItems, owners, and
190
+ acceptance before invoking `project successor` with a different V1
191
+ definition and explicit transition ID. Preserve the content-addressed
192
+ archive and journal; never use handoff, takeover, install, or publication as
193
+ successor authority.
172
194
  - "Capture this as data": append a data candidate only. Never call it a dataset
173
195
  member without a separate admission decision.
174
196
  - "Do not run that check yet": append one deferred verification with stable
@@ -230,6 +252,8 @@ npx --no-install owlrunkit project integrate --workspace "$PROJECT_ROOT" --gate
230
252
  --at "$OCCURRED_AT" --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
231
253
  npx --no-install owlrunkit project status --workspace "$PROJECT_ROOT" --json
232
254
  npx --no-install owlrunkit project takeover --workspace "$PROJECT_ROOT" --agent "$AGENT_ID" --json
255
+ npx --no-install owlrunkit project successor scaffold --workspace "$PROJECT_ROOT" \
256
+ --from-workspace "$TARGET_WORKTREE" --dry-run --json
233
257
  npx --no-install owlrunkit project successor --workspace "$PROJECT_ROOT" \
234
258
  --transition-id "$TRANSITION_ID" --at "$OCCURRED_AT" \
235
259
  --definition "$NEXT_PROJECT_JSON" --reason "$SUCCESSOR_REASON" --json
@@ -260,6 +284,21 @@ journal. Do not infer a historical archive scan from `status` or `takeover`;
260
284
  those remain active-truth projections. The receipt never grants Git, release,
261
285
  publication, deployment, package-adoption, or writer authority.
262
286
 
287
+ Current `project status` emits Project Status V5. For a completed WorkItem
288
+ ledger, `completionContinuity` distinguishes an exactly matching imported
289
+ source-delivery baseline, a missing baseline, an unverifiable modeled target,
290
+ and later unmodeled workspace drift. A matching source baseline means only that
291
+ no unmodeled source continuation was observed; it does not imply integration,
292
+ release, deployment, product acceptance, or business completion.
293
+
294
+ `project successor scaffold` is strictly read-only and requires `--dry-run`.
295
+ It may use historical `ownedPaths` to group changed paths mechanically, but it
296
+ must leave project identity, objective, titles, owners, and acceptance unset
297
+ for human confirmation. Never treat its lane suggestions as a successor
298
+ decision or invoke the mutating successor automatically. It writes no project
299
+ truth, execution, lease, receipt, archive, or Git state and keeps every
300
+ authority field false.
301
+
263
302
  ## Batch verification around a small explainable closure
264
303
 
265
304
  Use a verification micro-batch when two or three related changes share one
@@ -315,9 +354,9 @@ below has no CLI entry.
315
354
 
316
355
  ```bash
317
356
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
318
- --exact owlrunkit@0.22.1 --dry-run
357
+ --exact owlrunkit@0.24.0 --dry-run
319
358
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
320
- --exact owlrunkit@0.22.1 --apply
359
+ --exact owlrunkit@0.24.0 --apply
321
360
  npx --no-install owlrunkit init --workspace "$PROJECT_ROOT"
322
361
  npx --no-install owlrunkit inspect --json --workspace "$PROJECT_ROOT"
323
362
  npx --no-install owlrunkit inspect --json --compact --workspace "$PROJECT_ROOT"
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": "OwlCodaRunKitConfigV2",
3
3
  "core": {
4
4
  "contractVersion": "0.2",
5
- "coreVersion": "0.22.1",
6
- "coreManifestSha256": "sha256:41447517f78b74a070802bd67c8b066a833eedde72e2606e3127fa1258c289a4",
7
- "coreSourceRef": "artifact:sha256:41447517f78b74a070802bd67c8b066a833eedde72e2606e3127fa1258c289a4"
5
+ "coreVersion": "0.24.0",
6
+ "coreManifestSha256": "sha256:02e3607701a275014fe95e95e025aeca7cac34ebe4a47e603b8c9db0e45596ff",
7
+ "coreSourceRef": "artifact:sha256:02e3607701a275014fe95e95e025aeca7cac34ebe4a47e603b8c9db0e45596ff"
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.22.1",
3
+ "version": "0.24.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>",
@@ -20,5 +20,13 @@
20
20
  },
21
21
  "engines": {
22
22
  "node": ">=20.19.0"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/yeemio/owlrunkit.git"
27
+ },
28
+ "homepage": "https://owlcoda.com",
29
+ "bugs": {
30
+ "url": "https://github.com/yeemio/owlrunkit/issues"
23
31
  }
24
32
  }
@@ -42,6 +42,16 @@
42
42
  "sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
43
43
  },
44
44
  "supportedProducerCoreIdentities": [
45
+ {
46
+ "contractVersion": "0.2",
47
+ "coreVersion": "0.24.0",
48
+ "coreManifestSha256": "sha256:02e3607701a275014fe95e95e025aeca7cac34ebe4a47e603b8c9db0e45596ff"
49
+ },
50
+ {
51
+ "contractVersion": "0.2",
52
+ "coreVersion": "0.23.0",
53
+ "coreManifestSha256": "sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4"
54
+ },
45
55
  {
46
56
  "contractVersion": "0.2",
47
57
  "coreVersion": "0.22.1",
@@ -23,6 +23,16 @@ import {
23
23
  export { validQuickReceiptShape } from "./quick-receipt-contract.mjs";
24
24
 
25
25
  export const SUPPORTED_QUICK_CORE_IDENTITIES = Object.freeze([
26
+ {
27
+ contractVersion: "0.2",
28
+ coreVersion: "0.24.0",
29
+ coreManifestSha256: "sha256:02e3607701a275014fe95e95e025aeca7cac34ebe4a47e603b8c9db0e45596ff",
30
+ },
31
+ {
32
+ contractVersion: "0.2",
33
+ coreVersion: "0.23.0",
34
+ coreManifestSha256: "sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4",
35
+ },
26
36
  {
27
37
  contractVersion: "0.2",
28
38
  coreVersion: "0.22.1",
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": "OwlCodaRunKitRegistryReleasePolicyV2",
3
3
  "status": "release_artifact_registry_gated",
4
4
  "packageName": "owlrunkit",
5
- "artifactVersion": "0.22.1",
5
+ "artifactVersion": "0.24.0",
6
6
  "registry": "https://registry.npmjs.org",
7
7
  "registryRequiredBeforeAdoption": true,
8
8
  "exactVersionRequired": true,
@@ -23,10 +23,10 @@
23
23
  ],
24
24
  "rollbackRelease": {
25
25
  "packageName": "owlrunkit",
26
- "version": "0.22.0",
27
- "shasum": "23fb305f24b2487a2a1de3c8e407d7e4606a3b86",
28
- "integrity": "sha512-sQVFAOvOT7/qLWj5xwLkTvx2g2CGXT3JtRgQDK5Ku2okHGXN6FsgERYKv21IYOxRbEjABamhUwENTflw8ipeSQ==",
29
- "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.22.0.tgz"
26
+ "version": "0.23.0",
27
+ "shasum": "29a088194db358ca1c3fd81510d7531c43522f59",
28
+ "integrity": "sha512-aha3owTWLxx/1WzPhxpT/eyK54CnEN8Z/lzi/3CJO3365saV1aKzXRwdF+k7eQL8mjY3/FzaftUMubD6xbegsQ==",
29
+ "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.23.0.tgz"
30
30
  },
31
31
  "registryEvidenceMustBeExternal": true,
32
32
  "registryEvidenceSchemaVersion": "OwlCodaRunKitRegistryReleaseEvidenceV1",
package/sbom.spdx.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "owlrunkit-0.22.1",
6
- "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.22.1",
5
+ "name": "owlrunkit-0.24.0",
6
+ "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.24.0",
7
7
  "creationInfo": {
8
- "created": "2026-07-29T00:00:00Z",
8
+ "created": "2026-10-06T00:00:00Z",
9
9
  "creators": [
10
10
  "Organization: OwlCoda"
11
11
  ]
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "name": "owlrunkit",
16
16
  "SPDXID": "SPDXRef-Package-OwlRunKit",
17
- "versionInfo": "0.22.1",
17
+ "versionInfo": "0.24.0",
18
18
  "downloadLocation": "NOASSERTION",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "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.22.1"
27
+ "referenceLocator": "pkg:npm/owlrunkit@0.24.0"
28
28
  }
29
29
  ]
30
30
  }
@@ -14,7 +14,7 @@ import { fileURLToPath } from "node:url";
14
14
  import { parseProjectControlState } from "./project-control-parser.mjs";
15
15
 
16
16
  export const CONTRACT_VERSION = "0.2";
17
- export const CORE_VERSION = "0.22.1";
17
+ export const CORE_VERSION = "0.24.0";
18
18
  export const RUNTIME_ROOT = ".owlcoda/runkit";
19
19
 
20
20
  const CORE_FILES = [
@@ -30,6 +30,7 @@ const CORE_FILES = [
30
30
  "fleet-discovery.mjs",
31
31
  "fleet-skill-plan.mjs",
32
32
  "finalize.mjs",
33
+ "file-event-stop-hook.mjs",
33
34
  "formal-workflow.mjs",
34
35
  "formal-preflight.mjs",
35
36
  "formal-supplemental-evidence.mjs",
@@ -50,6 +51,7 @@ const CORE_FILES = [
50
51
  "project-cli-resolver.mjs",
51
52
  "project-control-parser.mjs",
52
53
  "project-control-state.mjs",
54
+ "project-completion-continuity.mjs",
53
55
  "project-external-delivery.mjs",
54
56
  "provenance-common.mjs",
55
57
  "quick-attest.mjs",
@@ -134,6 +136,7 @@ const CORE_FILES = [
134
136
  "schemas/profile-reconcile-receipt-v1.schema.json",
135
137
  "schemas/project-config.schema.json",
136
138
  "schemas/project-config-v2.schema.json",
139
+ "schemas/project-completion-continuity-v1.schema.json",
137
140
  "schemas/profiles.schema.json",
138
141
  "schemas/remote-deployment-manifest-v1.schema.json",
139
142
  "schemas/remote-deployment-result-v1.schema.json",
@@ -178,6 +181,8 @@ const CORE_FILES = [
178
181
  "schemas/team-project-status-v2.schema.json",
179
182
  "schemas/team-project-status-v3.schema.json",
180
183
  "schemas/team-project-status-v4.schema.json",
184
+ "schemas/team-project-status-v5.schema.json",
185
+ "schemas/successor-scaffold-v1.schema.json",
181
186
  "schemas/external-gate-v1.schema.json",
182
187
  "schemas/delivery-lifecycle-v1.schema.json",
183
188
  "schemas/usage-mode-recommendation-v1.schema.json",