owlrunkit 0.17.0 → 0.17.1

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,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.1
4
+
5
+ - Prevents a completed checkpoint with `nextAction: null` from reviving an
6
+ earlier handoff action in WorkItem and per-Agent project status.
7
+ - Prevents takeover packets for completed or failed responsibilities from
8
+ inventing a continuation action after the work has ended.
9
+ - Preserves handoff recovery guidance until a later checkpoint explicitly
10
+ supersedes it.
11
+
3
12
  ## 0.17.0
4
13
 
5
14
  - Adds an Agent-native persistent project model for milestones, workstreams,
package/README.md CHANGED
@@ -8,7 +8,7 @@ evidence, then close out once.
8
8
  ## Install
9
9
 
10
10
  ```bash
11
- npm install --save-exact owlrunkit@0.17.0
11
+ npm install --save-exact owlrunkit@0.17.1
12
12
  ```
13
13
 
14
14
  The `owlrunkit` bootstrap uses the project's exact locally bound CLI for
@@ -7,9 +7,9 @@ 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 release: standalone `owlrunkit@0.17.0`, bundling Contract `0.2` and
11
- Core `0.17.0` with manifest
12
- `sha256:0c0c52e7f6299bdd3d3ea49005c8ceef0b28831d60af25d77da65a4e4de714c9`.
10
+ Bundled release: standalone `owlrunkit@0.17.1`, bundling Contract `0.2` and
11
+ Core `0.17.1` with manifest
12
+ `sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26`.
13
13
  Publication and dist-tag state are mutable registry facts: verify the exact
14
14
  official npm registry provenance before adoption. The immutable rollback
15
15
  baseline for this release is `owlrunkit@0.16.1` with SHA-1
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": "OwlCodaRunKitConfigV2",
3
3
  "core": {
4
4
  "contractVersion": "0.2",
5
- "coreVersion": "0.17.0",
6
- "coreManifestSha256": "sha256:0c0c52e7f6299bdd3d3ea49005c8ceef0b28831d60af25d77da65a4e4de714c9",
7
- "coreSourceRef": "artifact:sha256:0c0c52e7f6299bdd3d3ea49005c8ceef0b28831d60af25d77da65a4e4de714c9"
5
+ "coreVersion": "0.17.1",
6
+ "coreManifestSha256": "sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26",
7
+ "coreSourceRef": "artifact:sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26"
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.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Project-owned execution, evidence, verification, and recovery for coding agents.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "yeemio <owlclaw@163.com>",
@@ -36,6 +36,11 @@
36
36
  "sha256": "sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986"
37
37
  },
38
38
  "supportedProducerCoreIdentities": [
39
+ {
40
+ "contractVersion": "0.2",
41
+ "coreVersion": "0.17.1",
42
+ "coreManifestSha256": "sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26"
43
+ },
39
44
  {
40
45
  "contractVersion": "0.2",
41
46
  "coreVersion": "0.17.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.17.1",
24
+ coreManifestSha256: "sha256:5376f3736dd17c07598df8b655a6bbceb3b64b44f3e6630e69f966e420d82e26",
25
+ },
21
26
  {
22
27
  contractVersion: "0.2",
23
28
  coreVersion: "0.17.0",
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": "OwlCodaRunKitRegistryReleasePolicyV1",
3
3
  "status": "release_candidate_unpublished",
4
4
  "packageName": "owlrunkit",
5
- "candidateVersion": "0.17.0",
5
+ "candidateVersion": "0.17.1",
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.16.1",
27
- "shasum": "1bc119d24879bdd8959af16b364af55ca9d61ea9",
28
- "integrity": "sha512-+DxKnADly7WIsGMiWDmo/rzG7XEsyqDtq7/1lUwqTf7aeekZJLw0qL5p7vm04YhgrTCd/rw9M0tUWihemYxyqQ==",
29
- "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.16.1.tgz"
26
+ "version": "0.17.0",
27
+ "shasum": "fa9eb5cd3ad1b168f36fdca10676a7fa8fe2f584",
28
+ "integrity": "sha512-ghUnQaCtxA81htdL3LqqMMaQpKnQ9kwW4ELLZ8mo3BTcbLkGJv/QhFa50JtLHdn6n/ti3sBsfQUgKvHVQZQjPA==",
29
+ "tarballUrl": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.0.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.17.0",
6
- "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.17.0",
5
+ "name": "owlrunkit-0.17.1",
6
+ "documentNamespace": "https://owlcoda.com/spdx/owlrunkit/0.17.1",
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.17.0",
18
- "downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.0.tgz",
17
+ "versionInfo": "0.17.1",
18
+ "downloadLocation": "https://registry.npmjs.org/owlrunkit/-/owlrunkit-0.17.1.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.17.0"
27
+ "referenceLocator": "pkg:npm/owlrunkit@0.17.1"
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.17.0";
17
+ export const CORE_VERSION = "0.17.1";
18
18
  export const RUNTIME_ROOT = ".owlcoda/runkit";
19
19
 
20
20
  const CORE_FILES = [
@@ -18,6 +18,9 @@ const OFFICIAL_CLI_ENTRYPOINT =
18
18
  const EXACT_VERSION = /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z.-]+)?$/;
19
19
  const SHA256_REF = /^sha256:[a-f0-9]{64}$/;
20
20
  const TRUSTED_PRIOR_CORE_IDENTITIES = new Map([
21
+ ["0.17.0", new Set([
22
+ "sha256:0c0c52e7f6299bdd3d3ea49005c8ceef0b28831d60af25d77da65a4e4de714c9",
23
+ ])],
21
24
  ["0.16.0", new Set([
22
25
  "sha256:320fb1d97b4459d1a14b0b67807dcf2bc6b03970492cb9fb2c6245b17912c81e",
23
26
  ])],
@@ -602,7 +602,7 @@ function projectStatus(definition, records, workspaceRoot = null) {
602
602
  decisionRefs: checkpoint?.decisionRefs ?? [],
603
603
  progress: measured,
604
604
  summary: checkpoint?.summary ?? handoff?.summary ?? null,
605
- nextAction: checkpoint?.nextAction ?? handoff?.nextAction ?? null,
605
+ nextAction: checkpoint ? checkpoint.nextAction : (handoff?.nextAction ?? null),
606
606
  lastCheckpointAt: checkpoint?.occurredAt ?? null,
607
607
  evidenceRefs: checkpoint?.evidenceRefs ?? handoff?.evidenceRefs ?? [],
608
608
  assignmentHistory: history,
@@ -978,7 +978,9 @@ export function buildTeamProjectTakeoverV1({ workspaceRoot, agentId }) {
978
978
  dependencies: current?.unresolvedDependencies ?? [],
979
979
  evidenceRefs,
980
980
  nextAction: current?.nextAction
981
- ?? (current ? `Continue ${current.workItemId}.` : status.readyQueue[0] ? `Take ${status.readyQueue[0]}.` : null),
981
+ ?? (current && !["completed", "failed"].includes(current.status)
982
+ ? `Continue ${current.workItemId}.`
983
+ : current ? null : status.readyQueue[0] ? `Take ${status.readyQueue[0]}.` : null),
982
984
  projectTruthHash: status.projectTruthHash,
983
985
  authorizationGranted: false,
984
986
  exitCode: 0,