owlrunkit 0.22.1 → 0.23.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,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.23.0
4
+
5
+ - Adds Project Status V5 with a separate completion-continuity projection.
6
+ Completed ledgers now distinguish an exact source-baseline match, missing
7
+ baseline evidence, an unverifiable modeled target, and later unmodeled
8
+ workspace drift instead of inventing more project work from absent release
9
+ authority.
10
+ - Reuses the latest matching verified external-delivery target snapshot as the
11
+ source baseline and reports a bounded committed, dirty-overlay, dependency,
12
+ and submodule delta when the current source workspace changes.
13
+ - Adds read-only `project successor scaffold --from-workspace <git-root>
14
+ --dry-run`. It groups changed paths against historical WorkItem ownership,
15
+ reports unmatched and overlapping scopes, and leaves project identity,
16
+ objective, owners, titles, and acceptance unset for human confirmation.
17
+ - Keeps Project Status V1-V4 callable, preserves Compact V2 and Hook Recovery
18
+ V1 shapes, and advances only the current CLI status surface to V5. Explicit
19
+ external Gates and delivery-lifecycle facts retain their meanings.
20
+ - Keeps status and scaffold deterministic and zero-write. No surface creates a
21
+ successor project, dispatches an Agent, changes assurance, or grants Git,
22
+ release, deployment, production, business, automation, or money authority.
23
+
3
24
  ## 0.22.1
4
25
 
5
26
  - Makes process-wide Codex Skill activation require every discovered project
package/README.md CHANGED
@@ -111,6 +111,14 @@ the project matches its current chat goal. It does not infer chat intent, emit
111
111
  full execution or event history, change project state, dispatch an Agent, or
112
112
  raise assurance.
113
113
 
114
+ RunKit 0.23 closes the continuity gap after a Project Driver ledger completes.
115
+ Project Status V5 distinguishes an exactly terminal source workspace from a
116
+ missing source baseline, an unavailable modeled target, and later unmodeled
117
+ workspace drift. A read-only `project successor scaffold` can project the
118
+ bounded delta and mechanically possible lanes for human review; it never
119
+ creates a project, infers the next objective, dispatches an Agent, or grants
120
+ authority.
121
+
114
122
  The 0.18 Project Driver is a bounded surface for new projects and controlled
115
123
  dogfood. Its product name does not claim to be a general long-running,
116
124
  multi-phase, or enterprise control plane. Version 0.18 adds one bounded
@@ -124,7 +132,7 @@ separate authority boundaries.
124
132
 
125
133
  ## Install
126
134
 
127
- This package is the lifecycle-stable, registry-gated `owlrunkit@0.22.1`
135
+ This package is the lifecycle-stable, registry-gated `owlrunkit@0.23.0`
128
136
  artifact. Registry adoption remains fail-closed until its exact official npm
129
137
  version, shasum, integrity, and tarball URL are independently verified. Local
130
138
  tarballs remain candidate-test inputs and are never adoption provenance. Until
@@ -132,7 +140,7 @@ that registry evidence exists, use the package only for isolated candidate
132
140
  verification; do not treat the command below as available release truth.
133
141
 
134
142
  ```bash
135
- npm install --save-exact owlrunkit@0.22.1
143
+ npm install --save-exact owlrunkit@0.23.0
136
144
  ```
137
145
 
138
146
  Use `npx --no-install owlrunkit` for project commands. The package bootstrap
@@ -148,9 +156,9 @@ the project Config must independently bind the same Core.
148
156
  ```bash
149
157
  npx --no-install owlrunkit --version
150
158
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
151
- --exact owlrunkit@0.22.1 --dry-run
159
+ --exact owlrunkit@0.23.0 --dry-run
152
160
  npx --no-install owlrunkit bootstrap --workspace /absolute/path/to/project \
153
- --exact owlrunkit@0.22.1 --apply
161
+ --exact owlrunkit@0.23.0 --apply
154
162
  npx --no-install owlrunkit init --workspace /absolute/path/to/project
155
163
  npx --no-install owlrunkit doctor --workspace /absolute/path/to/project
156
164
  npx --no-install owlrunkit inspect --workspace /absolute/path/to/project --json --compact
@@ -299,6 +307,8 @@ npx --no-install owlrunkit project integrate --workspace . --gate integration-re
299
307
  --evidence evidence/integration.txt
300
308
  npx --no-install owlrunkit project status --workspace .
301
309
  npx --no-install owlrunkit project takeover --workspace . --agent agent-successor
310
+ npx --no-install owlrunkit project successor scaffold --workspace . \
311
+ --from-workspace /absolute/source/worktree --dry-run
302
312
  npx --no-install owlrunkit project successor --workspace . --transition-id project-next-001 \
303
313
  --at 2026-08-09T00:16:00.000Z --definition ./next-project-definition.json \
304
314
  --reason 'Archive the completed project and begin the next bounded project'
@@ -404,6 +414,23 @@ successor; `project status` and `project takeover` remain active-truth
404
414
  projections and do not perform a broad historical archive scan. The receipt
405
415
  always keeps Git, release, publish, deploy, and adoption authority false.
406
416
 
417
+ Project Status V5 separately inspects source continuity after the WorkItem
418
+ ledger completes. It reuses the latest matching verified external-delivery
419
+ snapshot as the source baseline. A matching workspace is terminal against that
420
+ baseline; no baseline is reported as missing rather than guessed; an
421
+ unavailable or non-canonical target is unverifiable; and a changed target is
422
+ reported as unmodeled workspace drift. Explicit external Gates and delivery
423
+ lifecycle records keep their own meanings. Git, release, deployment,
424
+ production, product, and business authority remain external even when source
425
+ continuity is terminal.
426
+
427
+ `project successor scaffold --from-workspace <git-root> --dry-run` is a
428
+ zero-write review surface for a completed project. It reports the bounded
429
+ baseline-to-current delta, paths that match historical WorkItem ownership,
430
+ unmatched paths, and overlapping historical scopes. Its project ID, objective,
431
+ titles, owners, and acceptance remain deliberately unset for human review. It
432
+ has no apply form and never invokes `project successor`.
433
+
407
434
  `project status` reports every Agent's active, waiting, completed, and failed
408
435
  work; unresolved dependencies and decisions; the ready queue; critical work;
409
436
  and integration gates. It does not accept a guessed completion percentage.
@@ -412,11 +439,12 @@ WorkItem. An assignment may bind an exact RunKit execution and lease; in that
412
439
  case, the WorkItem cannot complete until the execution has a trusted accepted
413
440
  closeout and its lease is released.
414
441
 
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`.
442
+ Status/Takeover V3 retain their published completion projection. Status V4
443
+ adds explicit delivery stages, and current Status V5 adds source-continuity
444
+ truth. `overall=completed` still means only that the WorkItem ledger is
445
+ complete. Missing release authority stays visible through the all-false
446
+ authority boundary; it is not fabricated as project work or used to hide a
447
+ missing baseline or later source drift.
420
448
 
421
449
  `project takeover` adds the current candidate, its exact added/changed/removed
422
450
  path delta from the previous imported delivery, and handoffs that are stale
@@ -7,14 +7,14 @@ 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.23.0`, bundling Contract
11
+ `0.2` and Core `0.23.0` with manifest
12
+ `sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4`.
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.23.0` is independently verified. The published
15
+ rollback baseline for this artifact is `owlrunkit@0.22.1`, with SHA-1
16
+ `675b417134825e876e6e2b7c2e8d2aea4045e59f` and canonical npm tarball URL
17
+ `https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.22.1.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.
@@ -166,9 +166,14 @@ remains available for existing automation and compatibility.
166
166
  entry snapshot, report `candidate_only`; never claim an entry-to-candidate
167
167
  overlay proof that was not captured.
168
168
  - "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.
169
+ first inspect Status V5 completion continuity. If the source workspace has
170
+ unmodeled drift, use read-only `project successor scaffold --from-workspace
171
+ <git-root> --dry-run` to review the bounded delta and mechanical historical
172
+ lanes. A human must still choose the new objective, WorkItems, owners, and
173
+ acceptance before invoking `project successor` with a different V1
174
+ definition and explicit transition ID. Preserve the content-addressed
175
+ archive and journal; never use handoff, takeover, install, or publication as
176
+ successor authority.
172
177
  - "Capture this as data": append a data candidate only. Never call it a dataset
173
178
  member without a separate admission decision.
174
179
  - "Do not run that check yet": append one deferred verification with stable
@@ -230,6 +235,8 @@ npx --no-install owlrunkit project integrate --workspace "$PROJECT_ROOT" --gate
230
235
  --at "$OCCURRED_AT" --summary "$SUMMARY" --evidence "$EVIDENCE_REF"
231
236
  npx --no-install owlrunkit project status --workspace "$PROJECT_ROOT" --json
232
237
  npx --no-install owlrunkit project takeover --workspace "$PROJECT_ROOT" --agent "$AGENT_ID" --json
238
+ npx --no-install owlrunkit project successor scaffold --workspace "$PROJECT_ROOT" \
239
+ --from-workspace "$TARGET_WORKTREE" --dry-run --json
233
240
  npx --no-install owlrunkit project successor --workspace "$PROJECT_ROOT" \
234
241
  --transition-id "$TRANSITION_ID" --at "$OCCURRED_AT" \
235
242
  --definition "$NEXT_PROJECT_JSON" --reason "$SUCCESSOR_REASON" --json
@@ -260,6 +267,21 @@ journal. Do not infer a historical archive scan from `status` or `takeover`;
260
267
  those remain active-truth projections. The receipt never grants Git, release,
261
268
  publication, deployment, package-adoption, or writer authority.
262
269
 
270
+ Current `project status` emits Project Status V5. For a completed WorkItem
271
+ ledger, `completionContinuity` distinguishes an exactly matching imported
272
+ source-delivery baseline, a missing baseline, an unverifiable modeled target,
273
+ and later unmodeled workspace drift. A matching source baseline means only that
274
+ no unmodeled source continuation was observed; it does not imply integration,
275
+ release, deployment, product acceptance, or business completion.
276
+
277
+ `project successor scaffold` is strictly read-only and requires `--dry-run`.
278
+ It may use historical `ownedPaths` to group changed paths mechanically, but it
279
+ must leave project identity, objective, titles, owners, and acceptance unset
280
+ for human confirmation. Never treat its lane suggestions as a successor
281
+ decision or invoke the mutating successor automatically. It writes no project
282
+ truth, execution, lease, receipt, archive, or Git state and keeps every
283
+ authority field false.
284
+
263
285
  ## Batch verification around a small explainable closure
264
286
 
265
287
  Use a verification micro-batch when two or three related changes share one
@@ -315,9 +337,9 @@ below has no CLI entry.
315
337
 
316
338
  ```bash
317
339
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
318
- --exact owlrunkit@0.22.1 --dry-run
340
+ --exact owlrunkit@0.23.0 --dry-run
319
341
  npx --no-install owlrunkit bootstrap --workspace "$PROJECT_ROOT" \
320
- --exact owlrunkit@0.22.1 --apply
342
+ --exact owlrunkit@0.23.0 --apply
321
343
  npx --no-install owlrunkit init --workspace "$PROJECT_ROOT"
322
344
  npx --no-install owlrunkit inspect --json --workspace "$PROJECT_ROOT"
323
345
  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.23.0",
6
+ "coreManifestSha256": "sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4",
7
+ "coreSourceRef": "artifact:sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4"
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.23.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>",
@@ -42,6 +42,11 @@
42
42
  "sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
43
43
  },
44
44
  "supportedProducerCoreIdentities": [
45
+ {
46
+ "contractVersion": "0.2",
47
+ "coreVersion": "0.23.0",
48
+ "coreManifestSha256": "sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4"
49
+ },
45
50
  {
46
51
  "contractVersion": "0.2",
47
52
  "coreVersion": "0.22.1",
@@ -23,6 +23,11 @@ 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.23.0",
29
+ coreManifestSha256: "sha256:cf9c1c5985cd0e960640f13fba66f92f0135449b6bc5036bc68ee9021053b9e4",
30
+ },
26
31
  {
27
32
  contractVersion: "0.2",
28
33
  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.23.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.22.1",
27
+ "shasum": "675b417134825e876e6e2b7c2e8d2aea4045e59f",
28
+ "integrity": "sha512-Vp+o6u00Di18fuPFcbEzdBpRd79e8P4yZq77RF2wuJG5ITjUGf/pAzOb5sOOVzj8P/MXcnhKcnRQKT70kUyZuA==",
29
+ "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.22.1.tgz"
30
30
  },
31
31
  "registryEvidenceMustBeExternal": true,
32
32
  "registryEvidenceSchemaVersion": "OwlCodaRunKitRegistryReleaseEvidenceV1",
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.22.1",
6
- "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.22.1",
5
+ "name": "owlrunkit-0.23.0",
6
+ "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.23.0",
7
7
  "creationInfo": {
8
8
  "created": "2026-07-29T00:00:00Z",
9
9
  "creators": [
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "name": "owlrunkit",
16
16
  "SPDXID": "SPDXRef-Package-OwlRunKit",
17
- "versionInfo": "0.22.1",
17
+ "versionInfo": "0.23.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.23.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.23.0";
18
18
  export const RUNTIME_ROOT = ".owlcoda/runkit";
19
19
 
20
20
  const CORE_FILES = [
@@ -50,6 +50,7 @@ const CORE_FILES = [
50
50
  "project-cli-resolver.mjs",
51
51
  "project-control-parser.mjs",
52
52
  "project-control-state.mjs",
53
+ "project-completion-continuity.mjs",
53
54
  "project-external-delivery.mjs",
54
55
  "provenance-common.mjs",
55
56
  "quick-attest.mjs",
@@ -134,6 +135,7 @@ const CORE_FILES = [
134
135
  "schemas/profile-reconcile-receipt-v1.schema.json",
135
136
  "schemas/project-config.schema.json",
136
137
  "schemas/project-config-v2.schema.json",
138
+ "schemas/project-completion-continuity-v1.schema.json",
137
139
  "schemas/profiles.schema.json",
138
140
  "schemas/remote-deployment-manifest-v1.schema.json",
139
141
  "schemas/remote-deployment-result-v1.schema.json",
@@ -178,6 +180,8 @@ const CORE_FILES = [
178
180
  "schemas/team-project-status-v2.schema.json",
179
181
  "schemas/team-project-status-v3.schema.json",
180
182
  "schemas/team-project-status-v4.schema.json",
183
+ "schemas/team-project-status-v5.schema.json",
184
+ "schemas/successor-scaffold-v1.schema.json",
181
185
  "schemas/external-gate-v1.schema.json",
182
186
  "schemas/delivery-lifecycle-v1.schema.json",
183
187
  "schemas/usage-mode-recommendation-v1.schema.json",
@@ -1394,7 +1394,7 @@ export function resumeCompletedFormalFinishV1({
1394
1394
  };
1395
1395
  }
1396
1396
  if (
1397
- new Set(["0.19.2", "0.20.0", "0.20.1", "0.21.0", "0.21.1", "0.22.0", "0.22.1"]).has(
1397
+ new Set(["0.19.2", "0.20.0", "0.20.1", "0.21.0", "0.21.1", "0.22.0", "0.22.1", "0.23.0"]).has(
1398
1398
  closeout.artifact.core?.coreVersion,
1399
1399
  )
1400
1400
  && (
@@ -23,10 +23,14 @@ const SELF_NORMALIZED_QUICK_CORE_VERSIONS = new Set([
23
23
  "0.21.1",
24
24
  "0.22.0",
25
25
  "0.22.1",
26
+ "0.23.0",
26
27
  ]);
27
28
  const EXACT_VERSION = /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z.-]+)?$/;
28
29
  const SHA256_REF = /^sha256:[a-f0-9]{64}$/;
29
30
  const TRUSTED_PRIOR_CORE_IDENTITIES = new Map([
31
+ ["0.22.1", new Set([
32
+ "sha256:41447517f78b74a070802bd67c8b066a833eedde72e2606e3127fa1258c289a4",
33
+ ])],
30
34
  ["0.22.0", new Set([
31
35
  "sha256:e79d2123d88ada0e2e31f62fabee83b1d661ca02e93a383691a502f721ae1e7e",
32
36
  ])],