@planu/cli 5.3.3 → 5.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/engine/autopilot/action-registry.js +20 -2
  3. package/dist/engine/constitution/sdd-rules-registry.js +8 -4
  4. package/dist/engine/drift/violation-resolver.js +30 -8
  5. package/dist/engine/evidence-gates/evidence-skeletons.js +9 -4
  6. package/dist/engine/execution/validate-job-executor.js +25 -10
  7. package/dist/engine/handoff-packager.js +10 -3
  8. package/dist/engine/implementation-contract/common.d.ts +13 -1
  9. package/dist/engine/implementation-contract/common.js +19 -3
  10. package/dist/engine/implementation-contract/evaluator.js +116 -35
  11. package/dist/engine/implementation-contract/renderer.js +62 -31
  12. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
  13. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +4 -4
  14. package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
  15. package/dist/engine/planu-core.darwin-x64.node.sbom.json +4 -4
  16. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
  17. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +4 -4
  18. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
  19. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +4 -4
  20. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
  21. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +4 -4
  22. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
  23. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +4 -4
  24. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
  25. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +4 -4
  26. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
  27. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +4 -4
  28. package/dist/engine/reconcile/apply-changes.d.ts +0 -12
  29. package/dist/engine/reconcile/apply-changes.js +11 -33
  30. package/dist/engine/reconcile/verify-write.js +2 -3
  31. package/dist/engine/rules-reconciler.js +21 -2
  32. package/dist/engine/spec-format/acceptance-criteria.js +7 -1
  33. package/dist/engine/spec-format/unified-spec-builder.js +32 -8
  34. package/dist/engine/spec-generator/fallback-generator.js +5 -3
  35. package/dist/engine/spec-quality/generic-output-gate.d.ts +7 -1
  36. package/dist/engine/spec-quality/generic-output-gate.js +199 -8
  37. package/dist/engine/spec-quality-scorer.js +9 -5
  38. package/dist/engine/universal-rules/catalog.js +6 -0
  39. package/dist/engine/universal-rules/rules/agent-teams.js +0 -2
  40. package/dist/engine/universal-rules/rules/planu-approval-gates.js +0 -1
  41. package/dist/engine/universal-rules/rules/planu-bdd-criteria.js +0 -1
  42. package/dist/engine/universal-rules/rules/planu-clean-code-no-comments.d.ts +3 -0
  43. package/dist/engine/universal-rules/rules/planu-clean-code-no-comments.js +30 -0
  44. package/dist/engine/universal-rules/rules/planu-debate-review.d.ts +3 -0
  45. package/dist/engine/universal-rules/rules/planu-debate-review.js +38 -0
  46. package/dist/engine/universal-rules/rules/planu-dogfood-bugs.js +0 -2
  47. package/dist/engine/universal-rules/rules/planu-english-specs.js +0 -1
  48. package/dist/engine/universal-rules/rules/planu-minimal-change.js +0 -2
  49. package/dist/engine/universal-rules/rules/planu-modes.js +0 -2
  50. package/dist/engine/universal-rules/rules/planu-release-policy.js +0 -1
  51. package/dist/engine/universal-rules/rules/planu-revert-proof-tests.d.ts +3 -0
  52. package/dist/engine/universal-rules/rules/planu-revert-proof-tests.js +34 -0
  53. package/dist/engine/universal-rules/rules/planu-sdd-model-routing.js +0 -1
  54. package/dist/engine/universal-rules/rules/planu-workflow.js +0 -2
  55. package/dist/engine/validator/validation-report-writer.js +1 -1
  56. package/dist/engine/workers/handlers/auto-drift.js +22 -8
  57. package/dist/tools/create-spec.js +5 -0
  58. package/dist/tools/reconcile-spec.d.ts +1 -1
  59. package/dist/tools/reconcile-spec.js +303 -178
  60. package/dist/tools/update-status/dod-gates.js +3 -3
  61. package/dist/tools/update-status/evidence-gate.js +10 -17
  62. package/dist/tools/update-status/transition-guard.js +26 -14
  63. package/dist/types/reconcile.d.ts +5 -17
  64. package/dist/types/reconcile.js +1 -7
  65. package/dist/types/spec-quality.d.ts +6 -1
  66. package/package.json +9 -9
  67. package/planu-native.json +1 -1
  68. package/planu-plugin.json +1 -1
@@ -3,6 +3,9 @@ export function buildImplementationContractSection(input) {
3
3
  const criteria = input.criteria;
4
4
  const testFiles = input.files.test.map((file) => file.path);
5
5
  const verificationCommands = input.verificationCommands;
6
+ const verificationRows = renderVerificationRows(criteria, testFiles, verificationCommands);
7
+ const failureModes = renderFailureModes(criteria);
8
+ const nonGoals = renderNonGoals(input.outOfScope);
6
9
  const lines = [
7
10
  `## ${IMPLEMENTATION_CONTRACT_SECTION}`,
8
11
  '### User Outcome',
@@ -10,21 +13,16 @@ export function buildImplementationContractSection(input) {
10
13
  criteria[0]?.text ??
11
14
  'Needs decision: define the exact observable outcome this spec must deliver.',
12
15
  '',
13
- '### Behavior Contract',
14
- ...renderBehaviorContract(criteria),
15
- '',
16
16
  '### File-Level Work Plan',
17
17
  ...renderFilePlan(input.files, criteria.length > 0),
18
18
  '',
19
19
  '### Acceptance-To-Verification Map',
20
- ...criteria.map((criterion, index) => renderVerificationRow(criterion.text, index + 1, testFiles, verificationCommands)),
21
- '',
22
- '### Edge Cases And Failure Modes',
23
- ...renderFailureModes(criteria),
24
- '',
25
- '### Non-Goals And Forbidden Approaches',
26
- ...renderNonGoals(input.outOfScope),
20
+ ...verificationRows,
27
21
  '',
22
+ // SPEC-1406 (DEFECT 5): a subsection with no grounded content is omitted rather than
23
+ // filled with a restated-criterion placeholder — prefer omission over filler.
24
+ ...(failureModes.length > 0 ? ['### Edge Cases And Failure Modes', ...failureModes, ''] : []),
25
+ ...(nonGoals.length > 0 ? ['### Non-Goals And Forbidden Approaches', ...nonGoals, ''] : []),
28
26
  '### Verification Commands',
29
27
  ...(verificationCommands.length > 0
30
28
  ? verificationCommands.map((command) => `- \`${command}\``)
@@ -71,31 +69,64 @@ function renderFilePlan(files, hasGroundedBehavior) {
71
69
  ? ['- No file ownership was grounded for this behavior.']
72
70
  : ['- Needs decision: identify expected source and test files.'];
73
71
  }
74
- function renderBehaviorContract(criteria) {
75
- return criteria.length > 0
76
- ? criteria.map((criterion, index) => `- Expected behavior AC${String(index + 1)}: ${criterion.text}`)
77
- : ['- Needs decision: define at least one evidence-grounded acceptance criterion.'];
72
+ /**
73
+ * SPEC-1406 (DEFECT 1, round 2): renders the Acceptance-To-Verification Map body.
74
+ * There is no per-criterion test mapping anywhere in the pipeline (LeanCriterion is
75
+ * `{text, done}`, `files.test` is a flat list) positional `testFiles[index]` is only
76
+ * trustworthy when there are at least as many test files as criteria. When there are
77
+ * not enough test files to map one per criterion, emit ONE shared row naming every
78
+ * criterion's coverage instead of dropping rows (which used to make criteria 2..N
79
+ * invisible to the evaluator and promote them to false blockers).
80
+ */
81
+ function renderVerificationRows(criteria, testFiles, commands) {
82
+ if (criteria.length === 0) {
83
+ return ['- Needs decision: provide at least one acceptance criterion to verify.'];
84
+ }
85
+ if (testFiles.length >= criteria.length) {
86
+ const rows = [];
87
+ criteria.forEach((criterion, index) => {
88
+ const test = testFiles[index];
89
+ if (test !== undefined) {
90
+ rows.push(renderPerCriterionRow(criterion.text, index + 1, test, commands));
91
+ }
92
+ });
93
+ return rows;
94
+ }
95
+ if (testFiles.length === 0) {
96
+ return ['- No repository-supported verification evidence was grounded for these criteria.'];
97
+ }
98
+ return renderSharedVerificationRow(testFiles, commands);
99
+ }
100
+ function renderPerCriterionRow(criterion, index, test, commands) {
101
+ const command = commands[index - 1] ?? commands[0];
102
+ return command
103
+ ? `- AC${String(index)}: ${criterion} -> unit test \`${test}\` plus \`${command}\`.`
104
+ : `- AC${String(index)}: ${criterion} -> unit test \`${test}\`.`;
78
105
  }
79
- function renderVerificationRow(criterion, index, testFiles, commands) {
80
- const test = testFiles[0];
81
- if (test) {
82
- const command = commands[0];
83
- return command
84
- ? `- AC${String(index)}: ${criterion} -> unit test \`${test}\` plus \`${command}\`.`
85
- : `- AC${String(index)}: ${criterion} -> unit test \`${test}\`.`;
106
+ /**
107
+ * Emitted once when there are fewer declared test files than criteria — never repeat
108
+ * `commands[0]` per criterion (SPEC-1406 round 2 finding: N byte-identical rows).
109
+ */
110
+ function renderSharedVerificationRow(testFiles, commands) {
111
+ const fileList = testFiles.map((file) => `\`${file}\``).join(', ');
112
+ const lines = [`- All criteria are verified by: ${fileList}`];
113
+ const command = commands[0];
114
+ if (command) {
115
+ lines.push(`- Shared verification command: \`${command}\`.`);
86
116
  }
87
- return `- AC${String(index)}: ${criterion} -> verify the exact observable result declared by this criterion.`;
117
+ return lines;
88
118
  }
89
119
  function renderNonGoals(outOfScope) {
90
- return outOfScope.length > 0
91
- ? outOfScope.map((item) => `- ${item}`)
92
- : ['- No explicit non-goals were supplied.'];
120
+ return outOfScope.map((item) => `- ${item}`);
93
121
  }
94
- function renderFailureModes(criteria) {
95
- return criteria.length > 0
96
- ? criteria.map((criterion, index) => `- AC${String(index + 1)} failure: reject partial behavior that violates "${criterion.text}" and preserve the last valid observable state.`)
97
- : [
98
- '- Needs decision: identify criterion-specific failure modes from user input or project evidence.',
99
- ];
122
+ /**
123
+ * SPEC-1406 (DEFECT 5): there is no per-criterion failure-mode input — the previous
124
+ * implementation synthesized a constant restatement of the criterion text instead
125
+ * ("AC1 failure: reject partial behavior that violates \"<criterion>\"..."), which carries
126
+ * no information beyond the Acceptance-To-Verification Map. Prefer omission over filler:
127
+ * this subsection has nothing grounded to add, so it is always empty here.
128
+ */
129
+ function renderFailureModes(_criteria) {
130
+ return [];
100
131
  }
101
132
  //# sourceMappingURL=renderer.js.map
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-aarch64-apple-darwin",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-aarch64-apple-darwin",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -17,15 +17,15 @@
17
17
  "platform": "darwin",
18
18
  "arch": "arm64",
19
19
  "libc": null,
20
- "artifactSha256": "936cf103c37c5622595eba08d503131657a4718d37b84d9355fe3dd8b63f313a",
20
+ "artifactSha256": "27b347bd91597ca547e26cf2eb25f4e7d7d7ec83ed405511bf8b80a52075b6a5",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-arm64.node.sbom.json",
24
- "sha256": "a3350e8b345415b6b7881cd0ed7b1fa09a86e21530f790e08f93e74c0bfc4384"
24
+ "sha256": "cdacedfbf96f09a8815ea3b5b293d4d688d0a1216d5ac8e309c3031703144b76"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
28
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
29
29
  "sourceTreeDirty": false,
30
30
  "sourceDateEpoch": 1,
31
31
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -34,6 +34,6 @@
34
34
  "signature": {
35
35
  "algorithm": "Ed25519",
36
36
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
37
- "value": "bk6W0MZRvTB3XJtJPw0Oe9Brcs8vOa0ZyWNyx81gBZHTp1qRjQjyT+bWVWjMRl9ULBE8+Iu5Sd02wR0ZGZ3MCQ=="
37
+ "value": "V5w31e1ARajB+tq5/Zuqn/I6AS9upApk4U+3MQudZRJNXMsp+LynzSTuHb8Eg9G6AiXJxt88ZRtqJbAo2b0DAg=="
38
38
  }
39
39
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "936cf103c37c5622595eba08d503131657a4718d37b84d9355fe3dd8b63f313a"
14
+ "content": "27b347bd91597ca547e26cf2eb25f4e7d7d7ec83ed405511bf8b80a52075b6a5"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-x86_64-apple-darwin",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-x86_64-apple-darwin",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -17,15 +17,15 @@
17
17
  "platform": "darwin",
18
18
  "arch": "x64",
19
19
  "libc": null,
20
- "artifactSha256": "a00b4de15350f55e6b2dfbff7d172fe9c731f857b517ca903a3ef2faab5c9b2a",
20
+ "artifactSha256": "7993a3dc2ff7947eb227812e88b329e870fd0e8b7b3ad152796bef8d77387745",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-x64.node.sbom.json",
24
- "sha256": "7e25d45c059cf37c0f32d13526d9857d8b33e20e1326428d2ce6f6bf2684029b"
24
+ "sha256": "cc3be430ad14a4bb6f233e60c7fccb055079b3f3aa0208c6e6f8eca9ee47e7a3"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
28
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
29
29
  "sourceTreeDirty": false,
30
30
  "sourceDateEpoch": 1,
31
31
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -34,6 +34,6 @@
34
34
  "signature": {
35
35
  "algorithm": "Ed25519",
36
36
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
37
- "value": "JFfOtvnI+70+fijN8e5fJF4XqkwdZyAR8tOUxm+gdnM1okUI0EFUtqnb2nzPFzG4RnFZGSYgnoYJQpfd5zmnDw=="
37
+ "value": "lL4RDYXTj5JyMi4aPH4Dq9r7u45cD/onxAOOGeQJglIrLryYfLTgvUw0bCxLIExD4LghbskIpbMO5RoxilsTCA=="
38
38
  }
39
39
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "a00b4de15350f55e6b2dfbff7d172fe9c731f857b517ca903a3ef2faab5c9b2a"
14
+ "content": "7993a3dc2ff7947eb227812e88b329e870fd0e8b7b3ad152796bef8d77387745"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-aarch64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-aarch64-unknown-linux-gnu",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "arm64",
18
18
  "libc": "glibc",
19
- "artifactSha256": "83c55f2f9e0f2bc32bca52de4d5ed248b09217d1893d2e05ce7880394e25a884",
19
+ "artifactSha256": "58667d7bf48d685e0a68845bf986ab76d7669909994649fed71b76b5e19c0fd9",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-gnu.node.sbom.json",
23
- "sha256": "39ddcdd6a6c9fae71bbb1f6f1716a1352ee37bf81196b24eef318d4abb0b4b1d"
23
+ "sha256": "e167309ef0c22da6bbb804b6e59c64a2777aba539a718cd9225f2a5ffe16253f"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "P1xQ4p3pp++gck7GGKW/Ue9/MdpedjnqGeuyl/76jzqFN5VmtA+L/5jlHvBc+qDPGkNT6wiXY8R3J5CHkjk5Cg=="
36
+ "value": "jPABgCINF4cuTxCuWa2h5suwGdPzU0lXP7oL45TvpMv8A1YP/Q5Lt4w/DIqRYYjlWzsqk228wu0O5f5V+S+kDw=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "83c55f2f9e0f2bc32bca52de4d5ed248b09217d1893d2e05ce7880394e25a884"
14
+ "content": "58667d7bf48d685e0a68845bf986ab76d7669909994649fed71b76b5e19c0fd9"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-aarch64-unknown-linux-musl",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-aarch64-unknown-linux-musl",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "arm64",
18
18
  "libc": "musl",
19
- "artifactSha256": "6f31cf91ea1ae1bde34191ab4a7b7c2d6a58dcdb7206f18dcefcc1dfb42b349b",
19
+ "artifactSha256": "948e76211c8b7a4770c9f79e172184baf13fa7208a06cc149b6cd168ef5c1cf6",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-musl.node.sbom.json",
23
- "sha256": "c90938e79cf8fb28eb448b50b683c624c65ddfd34ee50515b3b999465d55cc83"
23
+ "sha256": "fe1febc4c73090f46d5513ac83d98fa5fcc69b50b82aea2a9eb9bfc9943d9f58"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "uvmtUXDibJr1Kf/Y1D1IiFea7pMuBcx2UWIonJHde2OweiQqQ1++KkoPMLGAIxfsSTncVTdXpU7nGiGpIm3jAQ=="
36
+ "value": "W8DaJ4zBO7CgzNQ8Ygt3Fsq76sLt2AZgzRzfZLN2cxvOEsTK/aS+KgM/JpSfKbuv45c7wBgM5jUvLSPIh/qTAw=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "6f31cf91ea1ae1bde34191ab4a7b7c2d6a58dcdb7206f18dcefcc1dfb42b349b"
14
+ "content": "948e76211c8b7a4770c9f79e172184baf13fa7208a06cc149b6cd168ef5c1cf6"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-x86_64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-x86_64-unknown-linux-gnu",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "x64",
18
18
  "libc": "glibc",
19
- "artifactSha256": "125329171f49f6a9d37b2503c64e74238c1b4ad4f22a56177a58e64f5297ea8c",
19
+ "artifactSha256": "c1df1defdec7ecf99a65391798bb1452a0677193fc49778ebb621adf8f984da7",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-gnu.node.sbom.json",
23
- "sha256": "edb71690879e6a06c47b15db5d2ecd5c45d0d96f574dfb025e4ede5201925ca8"
23
+ "sha256": "1fa7db3a02d7cd799a500eb378a41dacde4eb5f694916b49ad651658c24f3a9d"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "8E8ysYR9C83WqDmoU9pE+Qz8skx8fRTDRQY58Cz3CWkvU0Ul5FqTVqsMmOCGMtbQnKloSTpqejDr4wfieZcOBw=="
36
+ "value": "vtEQHO2zRWFl2vbnBxSjwxwT+VTgwuPDVxcYAoQaIBFNt3JSOeh/NwXfEmn43xQ66vvRW1wsu5mj5nIvz7B5DQ=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "125329171f49f6a9d37b2503c64e74238c1b4ad4f22a56177a58e64f5297ea8c"
14
+ "content": "c1df1defdec7ecf99a65391798bb1452a0677193fc49778ebb621adf8f984da7"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-x86_64-unknown-linux-musl",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-x86_64-unknown-linux-musl",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "x64",
18
18
  "libc": "musl",
19
- "artifactSha256": "0e4804010d87a4089e8fd59af5d0b61ba6a572ff20f9f55b1caa904af861f030",
19
+ "artifactSha256": "0116080409d8d34a70bcd11545d83ef0055475bac5338e1390eb2694296f64e1",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-musl.node.sbom.json",
23
- "sha256": "b90757ad531f433d3152e0e90a090afe261e5463f88accb49abd5b19f909a326"
23
+ "sha256": "26de786cbe886f27871dba4af38506dbbefd7823503a3af1ec91e506b10efd41"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "cff322qqiXm/iOOexje+zv117NOLslTpYswuxD7tgzZ86aQL30/W+bGQ2W6Qe2VVhhoG60WDXpMbwiyQndvFBg=="
36
+ "value": "UVlIbDnlrHlchfrOyYRZu/Rj8qQQkbiaPKNf8ei7B1+rXkHdryVRUiC06/UP3aaydkDVXhdkLOQmvLw1JbnyDA=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "0e4804010d87a4089e8fd59af5d0b61ba6a572ff20f9f55b1caa904af861f030"
14
+ "content": "0116080409d8d34a70bcd11545d83ef0055475bac5338e1390eb2694296f64e1"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-aarch64-pc-windows-msvc",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-aarch64-pc-windows-msvc",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "win32",
17
17
  "arch": "arm64",
18
18
  "libc": null,
19
- "artifactSha256": "5f4ce40b9f76cfaa1fdc25ba8ce765cc3fd7fc0b38bbe10ce8a5b3ba5b0dcc1a",
19
+ "artifactSha256": "69f0804044cbbf83b24eba6c91ba56052d502fdf605cb87de1e372606a1ff030",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.win32-arm64-msvc.node.sbom.json",
23
- "sha256": "f054e6818584024d2f3acb36f2ebfa044546d72d203ecf06b758bfb4c2a8dcfc"
23
+ "sha256": "69209ba0e316391778bbe7204080e36bb793efc060e77a9007b9d954081545d7"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "i9Ts/DMWmNUhyq+YNId6aNr4Y+5GGr8CPIe0fXqtBLcXoqGlxgxq83PMgvnFX0fG0pa8MI+Fv7fbamFQ4/SWBg=="
36
+ "value": "CBuCyMiMXamGF99MF2n+dvmeHDR3NBXjUAgiutEjRmTakq+qdh6fPiGXQKli5kRhd5O4nfNWobIsaWJ+vSCdBA=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.3",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.5",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.3",
10
+ "version": "5.3.5",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "5f4ce40b9f76cfaa1fdc25ba8ce765cc3fd7fc0b38bbe10ce8a5b3ba5b0dcc1a"
14
+ "content": "69f0804044cbbf83b24eba6c91ba56052d502fdf605cb87de1e372606a1ff030"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.3",
1109
+ "ref": "pkg:cargo/planu-core@5.3.5",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.3",
4
- "engineVersion": "5.3.3",
5
- "buildId": "1-5.3.3-x86_64-pc-windows-msvc",
3
+ "cliVersion": "5.3.5",
4
+ "engineVersion": "5.3.5",
5
+ "buildId": "1-5.3.5-x86_64-pc-windows-msvc",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "win32",
17
17
  "arch": "x64",
18
18
  "libc": null,
19
- "artifactSha256": "5da0cd500b980f5a7295886298ea9176905bc38190fee2a7eae3359ec59513e9",
19
+ "artifactSha256": "266c514673274fe29f5d625cf33524e203371741f320e6933c0231824506e433",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.win32-x64-msvc.node.sbom.json",
23
- "sha256": "a8f35671f2c924ba92ed04e0a9513262c9005451c04423c11e13a9d8371164bc"
23
+ "sha256": "ba40d6627f3bacbc78c068a377d420a1d6cfebe1e75e7e90b4b94c726f7b71ea"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "30eda7a2ba11647e835b0079c526bed77f189c8e",
27
+ "sourceCommit": "1ebfd1609a251513993d8635170963f6dab1420e",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "yN+zsORULiFYmazE/LZm1vp2+Nd3NpEqE/1IKcjW3OHz/Nqk9jN1Hj1CR78aDGcJHiMSMobSiBdCviN9dvM4CA=="
36
+ "value": "zQa9uJfhQpDFLD3/iWUJQGPjUjlqm66DKR9VX+2kbc7dGmYODAxXYLxxJKnFKnpjyaToedkLmurajIE4zMODAA=="
37
37
  }
38
38
  }