@planu/cli 5.3.25 → 5.3.27

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 (62) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/dist/config/legacy-artifacts.json +26 -0
  4. package/dist/config/official-sdd-tools.d.ts +1 -1
  5. package/dist/config/official-sdd-tools.js +1 -0
  6. package/dist/config/registries/hosts/codex.json +2 -1
  7. package/dist/engine/handoff-artifacts/io.js +1 -0
  8. package/dist/engine/handoff-artifacts/schemas.d.ts +46 -0
  9. package/dist/engine/handoff-artifacts/schemas.js +15 -0
  10. package/dist/engine/lifecycle-reconciliation.js +6 -5
  11. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
  12. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +4 -4
  13. package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
  14. package/dist/engine/planu-core.darwin-x64.node.sbom.json +4 -4
  15. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
  16. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +4 -4
  17. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
  18. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +4 -4
  19. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
  20. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +4 -4
  21. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
  22. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +4 -4
  23. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
  24. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +4 -4
  25. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
  26. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +4 -4
  27. package/dist/engine/scope-boundaries/contradiction-checker.js +9 -3
  28. package/dist/engine/spec-format/read-technical-section.js +3 -2
  29. package/dist/engine/spec-format/unified-spec-builder.js +27 -0
  30. package/dist/engine/spec-migrator/index.d.ts +0 -1
  31. package/dist/engine/spec-migrator/index.js +0 -1
  32. package/dist/engine/spec-migrator/legacy-classifier.d.ts +4 -0
  33. package/dist/engine/spec-migrator/legacy-classifier.js +70 -0
  34. package/dist/engine/spec-migrator/planu-canonical-policy.js +14 -9
  35. package/dist/engine/spec-migrator/strict-planu-cleanup.d.ts +4 -2
  36. package/dist/engine/spec-migrator/strict-planu-cleanup.js +64 -53
  37. package/dist/engine/validator/validation-report-writer.d.ts +1 -0
  38. package/dist/engine/validator/validation-report-writer.js +3 -2
  39. package/dist/tools/heal-spec-docs.js +15 -12
  40. package/dist/tools/init-project/git-setup.js +44 -40
  41. package/dist/tools/init-project/handler.js +2 -1
  42. package/dist/tools/init-project/migration-runner.d.ts +2 -1
  43. package/dist/tools/init-project/migration-runner.js +18 -5
  44. package/dist/tools/init-project/result-builder.js +9 -0
  45. package/dist/tools/list-specs.js +39 -0
  46. package/dist/tools/migrate-legacy-spec.d.ts +10 -0
  47. package/dist/tools/migrate-legacy-spec.js +133 -0
  48. package/dist/tools/register-spec-tools/analysis-tools.js +2 -0
  49. package/dist/tools/schemas/output-schemas.d.ts +28 -0
  50. package/dist/tools/schemas/output-schemas.js +13 -0
  51. package/dist/tools/update-status/dod-gates.d.ts +1 -0
  52. package/dist/tools/update-status/dod-gates.js +123 -4
  53. package/dist/types/handoff-artifacts.d.ts +17 -1
  54. package/dist/types/project/planu-config.d.ts +3 -0
  55. package/dist/types/spec/core.d.ts +0 -7
  56. package/dist/types/spec-format.d.ts +17 -0
  57. package/dist/types/transition-log.d.ts +1 -1
  58. package/package.json +9 -9
  59. package/planu-native.json +1 -1
  60. package/planu-plugin.json +3 -2
  61. package/dist/engine/spec-migrator/unified-migration.d.ts +0 -18
  62. package/dist/engine/spec-migrator/unified-migration.js +0 -105
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## [5.3.27] - 2026-08-19
2
+
3
+ ### Bug Fixes
4
+ - fix(spec-1575): require clause to assert forbidden action for outOfScope contradiction
5
+ - fix(spec-1539): require real independent implementation-review before done
6
+
7
+ ### Chores
8
+ - chore(spec-1539-1575): close done ceremonies, reconcile specs, file SPEC-1576
9
+
10
+
11
+ ## [5.3.26] - 2026-08-19
12
+
13
+ ### Bug Fixes
14
+ - fix(spec-1569-1572): host-LLM legacy migration, gitignore allowlist, scope+section guards
15
+
16
+ ### Chores
17
+ - chore(spec-1569-1572): mark legacy-migration and guard specs done
18
+
19
+
1
20
  ## [5.3.25] - 2026-08-18
2
21
 
3
22
  ### Bug Fixes
package/README.md CHANGED
@@ -21,7 +21,7 @@ Planu is a Spec Driven Development stack for AI coding agents: an MCP server and
21
21
  - **Local change detection** — observes project changes without requiring a hosted configuration service.
22
22
  - **Unified Spec Format** — Requirements and technical details in a single, context-efficient `spec.md`.
23
23
  - **Atomic Integrity** — Indestructible writes and **Freeze-on-done** immutability (P0).
24
- - **29 official MCP tools** for the public SDD surface, with advanced workflows kept in skills, CLI commands, and internal pipelines.
24
+ - **30 official MCP tools** for the public SDD surface, with advanced workflows kept in skills, CLI commands, and internal pipelines.
25
25
  - **Multi-agent compatible** — Optimized for Claude Code, Cursor, Windsurf, and Gemini CLI.
26
26
 
27
27
  ---
@@ -0,0 +1,26 @@
1
+ [
2
+ {
3
+ "id": "technical-md",
4
+ "pattern": "technical.md",
5
+ "classification": "content-bearing",
6
+ "targetSection": "Technical"
7
+ },
8
+ { "id": "plan-md", "pattern": "plan.md", "classification": "content-bearing", "targetSection": "Technical" },
9
+ { "id": "plan-md-upper", "pattern": "PLAN.md", "classification": "content-bearing", "targetSection": "Technical" },
10
+ {
11
+ "id": "ficha-tecnica-md",
12
+ "pattern": "FICHA-TECNICA.md",
13
+ "classification": "content-bearing",
14
+ "targetSection": "Technical"
15
+ },
16
+ { "id": "progress-md", "pattern": "progress.md", "classification": "content-bearing", "targetSection": "Progress" },
17
+ {
18
+ "id": "progress-md-upper",
19
+ "pattern": "PROGRESS.md",
20
+ "classification": "content-bearing",
21
+ "targetSection": "Progress"
22
+ },
23
+ { "id": "hu-md", "pattern": "HU.md", "classification": "content-bearing", "targetSection": "Problem" },
24
+ { "id": "child-plans-dir", "pattern": "child-plans", "classification": "transient" },
25
+ { "id": "behavior-evidence-json", "pattern": "behavior-evidence.json", "classification": "transient" }
26
+ ]
@@ -1,4 +1,4 @@
1
1
  /** Single editable authority for the official local SDD tool surface. */
2
- export declare const OFFICIAL_SDD_TOOL_NAMES: readonly ['planu_status', 'session_checkpoint', 'facilitate', 'init_project', 'clarify_requirements', 'create_spec', 'list_specs', 'challenge_spec', 'check_readiness', 'update_status', 'update_status_batch', 'package_handoff', 'validate', 'get_job', 'watch_job', 'cancel_job', 'restart_job', 'reconcile_spec', 'create_rule', 'create_skill', 'skill_search', 'configure_code_graph', 'code_graph_status', 'submit_feedback', 'triage_feedback', 'resolve_feedback', 'sync_feedback', 'feedback_status', 'bump_spec_version'];
2
+ export declare const OFFICIAL_SDD_TOOL_NAMES: readonly ['planu_status', 'session_checkpoint', 'facilitate', 'init_project', 'clarify_requirements', 'create_spec', 'list_specs', 'challenge_spec', 'check_readiness', 'update_status', 'update_status_batch', 'package_handoff', 'validate', 'get_job', 'watch_job', 'cancel_job', 'restart_job', 'reconcile_spec', 'create_rule', 'create_skill', 'skill_search', 'configure_code_graph', 'code_graph_status', 'submit_feedback', 'triage_feedback', 'resolve_feedback', 'sync_feedback', 'feedback_status', 'bump_spec_version', 'migrate_legacy_spec'];
3
3
  export declare function readCanonicalToolNames(): string[];
4
4
  //# sourceMappingURL=official-sdd-tools.d.ts.map
@@ -29,6 +29,7 @@ export const OFFICIAL_SDD_TOOL_NAMES = [
29
29
  'sync_feedback',
30
30
  'feedback_status',
31
31
  'bump_spec_version',
32
+ 'migrate_legacy_spec',
32
33
  ];
33
34
  export function readCanonicalToolNames() {
34
35
  return [...OFFICIAL_SDD_TOOL_NAMES];
@@ -31,7 +31,8 @@
31
31
  "resolve_feedback",
32
32
  "sync_feedback",
33
33
  "feedback_status",
34
- "bump_spec_version"
34
+ "bump_spec_version",
35
+ "migrate_legacy_spec"
35
36
  ],
36
37
  "unsupportedTools": ["challenge_spec", "red_team"],
37
38
  "restrictedTools": {
@@ -32,6 +32,7 @@ function eventTypeForKind(kind) {
32
32
  review_feedback: 'handoff.review_feedback',
33
33
  'implementation-report': 'handoff.implementation-report',
34
34
  'validation-report': 'handoff.validation-report',
35
+ implementation_review: 'handoff.implementation_review',
35
36
  };
36
37
  return map[kind];
37
38
  }
@@ -53,6 +53,29 @@ export declare const ReviewFeedbackV1Schema: z.ZodObject<{
53
53
  body: z.ZodString;
54
54
  reviewedAt: z.ZodISODateTime;
55
55
  }, z.core.$strip>;
56
+ export declare const ImplementationReviewV1Schema: z.ZodObject<{
57
+ schema_version: z.ZodString;
58
+ specId: z.ZodString;
59
+ verdict: z.ZodEnum<{
60
+ approved: "approved";
61
+ "changes-requested": "changes-requested";
62
+ }>;
63
+ reviewer: z.ZodObject<{
64
+ kind: z.ZodEnum<{
65
+ human: "human";
66
+ "implementation-review-agent": "implementation-review-agent";
67
+ }>;
68
+ agent: z.ZodString;
69
+ verdict: z.ZodEnum<{
70
+ approved: "approved";
71
+ "changes-requested": "changes-requested";
72
+ }>;
73
+ }, z.core.$strip>;
74
+ blockers: z.ZodArray<z.ZodString>;
75
+ suggestions: z.ZodArray<z.ZodString>;
76
+ body: z.ZodString;
77
+ reviewedAt: z.ZodISODateTime;
78
+ }, z.core.$strip>;
56
79
  export declare const ImplementationReportV1Schema: z.ZodObject<{
57
80
  schema_version: z.ZodString;
58
81
  specId: z.ZodString;
@@ -314,6 +337,29 @@ export declare const ARTIFACT_SCHEMAS: {
314
337
  score: z.ZodOptional<z.ZodNumber>;
315
338
  completedAt: z.ZodISODateTime;
316
339
  }, z.core.$strip>;
340
+ readonly implementation_review: z.ZodObject<{
341
+ schema_version: z.ZodString;
342
+ specId: z.ZodString;
343
+ verdict: z.ZodEnum<{
344
+ approved: "approved";
345
+ "changes-requested": "changes-requested";
346
+ }>;
347
+ reviewer: z.ZodObject<{
348
+ kind: z.ZodEnum<{
349
+ human: "human";
350
+ "implementation-review-agent": "implementation-review-agent";
351
+ }>;
352
+ agent: z.ZodString;
353
+ verdict: z.ZodEnum<{
354
+ approved: "approved";
355
+ "changes-requested": "changes-requested";
356
+ }>;
357
+ }, z.core.$strip>;
358
+ blockers: z.ZodArray<z.ZodString>;
359
+ suggestions: z.ZodArray<z.ZodString>;
360
+ body: z.ZodString;
361
+ reviewedAt: z.ZodISODateTime;
362
+ }, z.core.$strip>;
317
363
  };
318
364
  /**
319
365
  * Validate a payload against the schema for the given artifact kind.
@@ -39,6 +39,20 @@ export const ReviewFeedbackV1Schema = z.object({
39
39
  body: z.string(),
40
40
  reviewedAt: z.iso.datetime(),
41
41
  });
42
+ export const ImplementationReviewV1Schema = z.object({
43
+ schema_version: SchemaVersion,
44
+ specId: z.string(),
45
+ verdict: z.enum(['approved', 'changes-requested']),
46
+ reviewer: z.object({
47
+ kind: z.enum(['implementation-review-agent', 'human']),
48
+ agent: z.string().min(1),
49
+ verdict: z.enum(['approved', 'changes-requested']),
50
+ }),
51
+ blockers: z.array(z.string()),
52
+ suggestions: z.array(z.string()),
53
+ body: z.string(),
54
+ reviewedAt: z.iso.datetime(),
55
+ });
42
56
  export const ImplementationReportV1Schema = z.object({
43
57
  schema_version: SchemaVersion,
44
58
  specId: z.string(),
@@ -163,6 +177,7 @@ export const ARTIFACT_SCHEMAS = {
163
177
  review_feedback: ReviewFeedbackV1Schema,
164
178
  'implementation-report': ImplementationReportV1Schema,
165
179
  'validation-report': ValidationReportV1Schema,
180
+ implementation_review: ImplementationReviewV1Schema,
166
181
  };
167
182
  // ---------------------------------------------------------------------------
168
183
  // Validate function
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { projectDataDir } from '../storage/base-store.js';
5
5
  import { specStore } from '../storage/index.js';
6
6
  import { ValidationReportV1Schema } from './handoff-artifacts/schemas.js';
7
+ import { AUTOMATED_VALIDATOR_AGENT } from './validator/validation-report-writer.js';
7
8
  import { rollbackTransitionSpec, transitionSpec, } from './spec-state-machine/transition-spec.js';
8
9
  import { acquireLock, releaseLock } from './safety/cross-process-lock.js';
9
10
  import { appendTransitionEvent, readTransitionLog } from '../storage/transition-log.js';
@@ -144,10 +145,10 @@ async function validateRequest(args) {
144
145
  const report = ValidationReportV1Schema.safeParse(JSON.parse(reportBytes.toString('utf8')));
145
146
  if (!report.success ||
146
147
  report.data.passed ||
147
- report.data.reviewer.kind !== 'implementation-review-agent' ||
148
- report.data.reviewer.agent !== 'planu-implementation-reviewer' ||
148
+ report.data.reviewer.kind !== 'automation' ||
149
+ report.data.reviewer.agent !== AUTOMATED_VALIDATOR_AGENT ||
149
150
  report.data.reviewer.verdict !== 'changes-requested') {
150
- return failure('validation report is not an independent changes-requested finding');
151
+ return failure('validation report is not an automated changes-requested finding');
151
152
  }
152
153
  const reviewDigest = digest(reportBytes);
153
154
  if (reviewDigest !== input.implementationReviewDigest) {
@@ -197,8 +198,8 @@ async function validateStoredBinding(args) {
197
198
  const report = ValidationReportV1Schema.safeParse(JSON.parse(reportBytes.toString('utf8')));
198
199
  if (!report.success ||
199
200
  report.data.passed ||
200
- report.data.reviewer.kind !== 'implementation-review-agent' ||
201
- report.data.reviewer.agent !== 'planu-implementation-reviewer' ||
201
+ report.data.reviewer.kind !== 'automation' ||
202
+ report.data.reviewer.agent !== AUTOMATED_VALIDATOR_AGENT ||
202
203
  report.data.reviewer.verdict !== 'changes-requested' ||
203
204
  digest(reportBytes) !== args.receipt.implementationReviewDigest) {
204
205
  return failure('implementation review no longer matches the durable receipt', 'RECONCILIATION_BINDING_CONFLICT');
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-aarch64-apple-darwin",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "f029e4a206f892b1ae565ef2acc29db91fe532fc2ec1c1965b7abf705471d192",
20
+ "artifactSha256": "3944cdece78490684988774e3080412e52305165f34bec47d3b3793e4876f16d",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-arm64.node.sbom.json",
24
- "sha256": "3e89bd16fa165d93341924d260832fd48754b9e3a5827507adc5377cdcc76026"
24
+ "sha256": "dfcb582019b086c81718b5099866e3d099fdfb26d1d768fdc4b6ccdee0e61e6d"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
28
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "C/IAeXfh4rVpzrLOYmcbO6TRbZBAXAf7UxAw/HWAPV1BY5xpH2bP9dGNcYkTu4HkWeFhLz+ePFeMzdGbDvaQDg=="
37
+ "value": "YcxPQGO0lonpNPFA4QOaIliyLhn8uSXBgEYi8ebd6RokgmoKc+XSPdga7ZMkx5N7jiPJXAX8Hs6VtTs0SP3qAA=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "f029e4a206f892b1ae565ef2acc29db91fe532fc2ec1c1965b7abf705471d192"
14
+ "content": "3944cdece78490684988774e3080412e52305165f34bec47d3b3793e4876f16d"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
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.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-x86_64-apple-darwin",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "74de1ccd509b59583491f317bacdd465244cd04e057113e8c221538b7cf6e212",
20
+ "artifactSha256": "bad5403aa1169630e7f34c73a202ee9419e845e7aedc1833f3c10ce9e316d019",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-x64.node.sbom.json",
24
- "sha256": "d9878d394147e21656556756b3c0bd6a4a4bf7384af2563cd5876b2edff6c702"
24
+ "sha256": "9bd682d7d30035b52bd89a7ca52f6a2e72997bac78162a42a548db36d95f0402"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
28
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "rnR72pEzRclpCkRqsxQmEKwC4OSaIQXLwUNq8n1IGqWSdZK3hw19Qd8upadJOjylbjUcTlDCQoNUWj3w/dY1BA=="
37
+ "value": "Ief0G5GcpRr5dx8XXAvuBSoSypSj/OaTvm5LKMjXePMorS3UbOxNUNAVTwmK50xU3wNAXAEjQBItrH3takLLBg=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "74de1ccd509b59583491f317bacdd465244cd04e057113e8c221538b7cf6e212"
14
+ "content": "bad5403aa1169630e7f34c73a202ee9419e845e7aedc1833f3c10ce9e316d019"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
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.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-aarch64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "3298a15365c6fcf78ff4f17273cefee80705f62d66297b5bf1e45e9e77941541",
19
+ "artifactSha256": "5c95d0f8cc4c1206d0540582bba0c6d8dddb46dd7777f197e55bfa86a605b18f",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-gnu.node.sbom.json",
23
- "sha256": "fe88f4bd3c03fdb6b2f5dcecab575bcdca01f2700e38bbf4b063a5c148eb9c69"
23
+ "sha256": "35767b4792c75c124fba6f443ab2829a592b783fc7e9768ae7bd7acd22d338c1"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
27
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "rFZl0EaJjzy23IhkX8bq/yKJfWYjWEkKRE4yS6IQ2xlpCT16K7iGyM1y0r4RMor8sU9K5gHyxSSYGB0MmcRsBg=="
36
+ "value": "aR4GV3GZ5PuubrvY3jLlMuTbSNarWsqsl3Z0uLyMfMBedf4RkHwgAc5H/qSRJl1qc/IR2ewNo//1VVwaW821DQ=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "3298a15365c6fcf78ff4f17273cefee80705f62d66297b5bf1e45e9e77941541"
14
+ "content": "5c95d0f8cc4c1206d0540582bba0c6d8dddb46dd7777f197e55bfa86a605b18f"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
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.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-aarch64-unknown-linux-musl",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "d6a25cf24a69de3409c46a2ae0c8f46a27e5906fb256371d3746bf56649048f4",
19
+ "artifactSha256": "403cda11d886b0e61105413cc6b52b5c75132a36c7e3bd9696ffac7ecfaa8c38",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-musl.node.sbom.json",
23
- "sha256": "0e9cf4b53eeed5bf166ff88982155d90f6b766e6ab288d91a369e844a404a383"
23
+ "sha256": "fdd8d79891f8f1d52941dc4695e3357eaf14c2839fe9029ea0eaac8bed70dea3"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
27
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "MxlAtNKM78NgLWko4gNIASnqSrnFlqL03jxXpJkJoR7bh9kD7E2SzvIZeYkPrqFweKTvyyqLQlz3RCT4325+BA=="
36
+ "value": "+JcZN2BHlWWb2q5cjOnbxJR/TlGmiDrDQJOWy+lpi2cugScY7RvNqUlaYcDKR/yyuA+NbUqRaSzC3aZT4IsKDQ=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "d6a25cf24a69de3409c46a2ae0c8f46a27e5906fb256371d3746bf56649048f4"
14
+ "content": "403cda11d886b0e61105413cc6b52b5c75132a36c7e3bd9696ffac7ecfaa8c38"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
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.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-x86_64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "1d4bf6073483ae43635ac9815f566e323f03024d6156a5d6103df55933072caa",
19
+ "artifactSha256": "5589735f4b9fd914dd2caeb85451cb43e044aabd21fbf576b7848ca5307dca97",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-gnu.node.sbom.json",
23
- "sha256": "b75911513d1837537c9913d9eaadfb6e3664709847e09e9850f05d24a9e17f96"
23
+ "sha256": "5ff8867f8dc53d4ba510e8a1ddd93737dd8ad8aa5d0bcb14a99e881637c375b7"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
27
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "WzDGhTD3hlmreR0zaduJm5RHfqPVzQIjm4Y8X8XHaW9UpVirVllhvrg9A0wrL1Uiw+wrkqeAQAYdNcDcTmQBAg=="
36
+ "value": "344JYOjoTT7KOMOf+hHJibJndPiOyB3kVhEVf/OgRvyS0itLL3j4R/EFytlfqJsKfGU18TBs0TBgGhE02MedCg=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "1d4bf6073483ae43635ac9815f566e323f03024d6156a5d6103df55933072caa"
14
+ "content": "5589735f4b9fd914dd2caeb85451cb43e044aabd21fbf576b7848ca5307dca97"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
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.25",
4
- "engineVersion": "5.3.25",
5
- "buildId": "1-5.3.25-x86_64-unknown-linux-musl",
3
+ "cliVersion": "5.3.27",
4
+ "engineVersion": "5.3.27",
5
+ "buildId": "1-5.3.27-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": "e514123ce0f9194810a7735351dc4b07fa0247012e6409bc28e88f8cad001e8d",
19
+ "artifactSha256": "714caf18004f9bacf3a9c343a13799b1d348a74b8d37e03fa6cf9a7589fc9cd7",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-musl.node.sbom.json",
23
- "sha256": "b65fef60c2d7d93b54f6754185131fdf7983be8138c6553022b5871d926326df"
23
+ "sha256": "bbb4d91ec1bb637a3e29e2b8b0d16248a33bdfb65050b932f7b3aacee5ecfbe2"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "d93395c02e0224530b5e52ffd7ec3a64ec462296",
27
+ "sourceCommit": "79788c0b8d9bfbc05294316f3546693af74482ab",
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": "17L3oFyUCuAlRbQXvbmDqLUlAn01r3qpiy/1/yIcmzsM2cncFpMICDRNV9PUmP6ohFWagoLdv2dQdW4yNjN7Bg=="
36
+ "value": "nKxw4OqHVfIUJsWGwFZo7yi5AVBpl5Fxgn1isO5nXRTFsvrQIGZ349nnmv7GBRqlOatcBhlicO3ApL629AKbBA=="
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.25",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.27",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.25",
10
+ "version": "5.3.27",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "e514123ce0f9194810a7735351dc4b07fa0247012e6409bc28e88f8cad001e8d"
14
+ "content": "714caf18004f9bacf3a9c343a13799b1d348a74b8d37e03fa6cf9a7589fc9cd7"
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.25",
1109
+ "ref": "pkg:cargo/planu-core@5.3.27",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",