@unbrained/pm-cli 2026.10.10 → 2026.10.11

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 (79) hide show
  1. package/.claude-plugin/marketplace.json +1 -36
  2. package/CHANGELOG.md +13 -4
  3. package/dist/cli-bundle/bundle-manifest.json +1 -382
  4. package/dist/cli-bundle/sdk-governance.js +1 -1
  5. package/dist/cli-bundle/sdk.js +9 -9
  6. package/dist/sdk/governance/artifact-ledgers.d.ts +59 -0
  7. package/dist/sdk/governance/artifact-ledgers.js +2 -0
  8. package/dist/sdk/governance.d.ts +1 -0
  9. package/dist/sdk/governance.js +1 -1
  10. package/dist/sdk/public-surface.json +1 -1
  11. package/docs/RELEASE_LEDGER_RECONCILIATION.md +148 -0
  12. package/docs/RELEASE_RELIABILITY.md +4 -0
  13. package/docs/RELEASING.md +34 -5
  14. package/docs/agent-task-token-baseline.json +1 -292
  15. package/docs/agent-task-transcripts.json +1 -478
  16. package/docs/ecosystem-review-2026-09-28.json +1 -2866
  17. package/docs/examples/policy-restricted-extension/manifest.json +1 -22
  18. package/docs/examples/policy-restricted-extension/package.json +1 -8
  19. package/docs/examples/sdk-agent-environment/package.json +1 -8
  20. package/docs/examples/sdk-app-embedding/package.json +1 -9
  21. package/docs/examples/sdk-contract-consumer/package.json +1 -11
  22. package/docs/examples/sdk-custom-tool/package.json +1 -13
  23. package/docs/examples/starter-extension/manifest.json +1 -33
  24. package/docs/examples/starter-extension/package.json +1 -10
  25. package/docs/performance/corpus-shape-comparison.json +1 -108
  26. package/docs/performance/latest-scale-report.json +1 -418
  27. package/docs/performance/scale-100k-report.json +1 -418
  28. package/docs/schemas/extension-manifest.schema.json +1 -165
  29. package/marketplace.json +1 -36
  30. package/package.json +1 -1
  31. package/packages/pm-beads/extensions/beads/manifest.json +1 -28
  32. package/packages/pm-beads/extensions/beads/package.json +1 -3
  33. package/packages/pm-beads/package.json +1 -50
  34. package/packages/pm-calendar/extensions/calendar/manifest.json +1 -22
  35. package/packages/pm-calendar/extensions/calendar/package.json +1 -3
  36. package/packages/pm-calendar/package.json +1 -51
  37. package/packages/pm-command-kit/extensions/command-kit/manifest.json +1 -22
  38. package/packages/pm-command-kit/extensions/command-kit/package.json +1 -3
  39. package/packages/pm-command-kit/package.json +1 -53
  40. package/packages/pm-digital-twin/extensions/digital-twin/manifest.json +1 -19
  41. package/packages/pm-digital-twin/extensions/digital-twin/package.json +1 -3
  42. package/packages/pm-digital-twin/package.json +1 -58
  43. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +1 -19
  44. package/packages/pm-governance-audit/extensions/governance-audit/package.json +1 -3
  45. package/packages/pm-governance-audit/package.json +1 -55
  46. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +1 -22
  47. package/packages/pm-guide-shell/extensions/guide-shell/package.json +1 -3
  48. package/packages/pm-guide-shell/package.json +1 -52
  49. package/packages/pm-kanban/extensions/kanban/manifest.json +1 -19
  50. package/packages/pm-kanban/extensions/kanban/package.json +1 -3
  51. package/packages/pm-kanban/package.json +1 -57
  52. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +1 -19
  53. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +1 -3
  54. package/packages/pm-lifecycle-hooks/package.json +1 -52
  55. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +1 -29
  56. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/package.json +1 -3
  57. package/packages/pm-linked-test-adapters/package.json +1 -53
  58. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +1 -29
  59. package/packages/pm-search-advanced/extensions/search-advanced/package.json +1 -3
  60. package/packages/pm-search-advanced/package.json +1 -54
  61. package/packages/pm-templates/extensions/templates/manifest.json +1 -22
  62. package/packages/pm-templates/extensions/templates/package.json +1 -3
  63. package/packages/pm-templates/package.json +1 -50
  64. package/packages/pm-todos/extensions/todos/manifest.json +1 -29
  65. package/packages/pm-todos/extensions/todos/package.json +1 -3
  66. package/packages/pm-todos/package.json +1 -51
  67. package/packages/pm-vcs/extensions/vcs/manifest.json +1 -19
  68. package/packages/pm-vcs/extensions/vcs/package.json +1 -3
  69. package/packages/pm-vcs/package.json +1 -55
  70. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -25
  71. package/plugins/pm-claude/.mcp.json +1 -8
  72. package/plugins/pm-claude/hooks/hooks.json +1 -17
  73. package/plugins/pm-claude/package.json +1 -9
  74. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -45
  75. package/plugins/pm-codex/.mcp.json +1 -11
  76. package/plugins/pm-codex/mcp.json +1 -11
  77. package/plugins/pm-codex/package.json +1 -9
  78. package/plugins/pm-codex/plugin.json +1 -45
  79. package/runtime-dependencies.json +1 -512
@@ -0,0 +1,59 @@
1
+ /** @module sdk/governance/artifact-ledgers
2
+ * Reconciles complete artifact identity inventories without concealing historical discrepancies.
3
+ */
4
+ /** One authoritative inventory; callers must establish completeness before evaluation. */
5
+ export interface ArtifactLedgerSnapshot {
6
+ /** Unique ledger name, such as declared, tagged or delivered. */
7
+ name: string;
8
+ /** Exact artifact identities; duplicates indicate an invalid inventory. */
9
+ identities: readonly string[];
10
+ /** Explicit completeness acknowledgement; partial evidence is refused. */
11
+ complete: boolean;
12
+ }
13
+ /** A reviewed historical exception scoped to one exact missing-ledger signature. */
14
+ export interface ArtifactLedgerException {
15
+ /** Exact artifact identity whose discrepancy is retained. */
16
+ identity: string;
17
+ /** Exact ledgers lacking this identity; a new omission invalidates settlement. */
18
+ missing_from: readonly string[];
19
+ /** Recorded rationale for retaining this historical discrepancy. */
20
+ reason: string;
21
+ /** Caller-owned decision, item or immutable evidence reference. */
22
+ evidence: string;
23
+ }
24
+ /** One discrepancy, including its observed membership and explicit disposition. */
25
+ export interface ArtifactLedgerFinding {
26
+ /** Artifact identity missing from at least one complete ledger. */
27
+ identity: string;
28
+ /** Sorted ledgers containing the artifact. */
29
+ present_in: string[];
30
+ /** Sorted ledgers missing the artifact. */
31
+ missing_from: string[];
32
+ /** Exact historical disposition; null denotes unsettled drift. */
33
+ disposition: {
34
+ reason: string;
35
+ evidence: string;
36
+ } | null;
37
+ }
38
+ /** Deterministic full-history result suitable for any project's artifact governance. */
39
+ export interface ArtifactLedgerReport {
40
+ /** Versioned receipt schema. */
41
+ schema: "pm-artifact-ledgers/1";
42
+ /** True only when every finding is settled and no exception has become stale. */
43
+ ok: boolean;
44
+ /** Complete per-ledger population counts, including empty individual ledgers. */
45
+ counts: Record<string, number>;
46
+ /** Every discrepancy remains visible, including accepted historical exceptions. */
47
+ findings: ArtifactLedgerFinding[];
48
+ /** Exceptions whose artifact or exact missing signature no longer matches. */
49
+ stale_exceptions: string[];
50
+ }
51
+ /**
52
+ * Compare caller-defined complete inventories by exact artifact identity.
53
+ * Preserve all discrepancies and apply a historical exception only when its
54
+ * missing-ledger signature still matches. Reject incomplete/vacuous populations;
55
+ * input order, a recovery or a stale exception cannot hide newly introduced drift.
56
+ * Validate JavaScript collection and record shapes before property access, so
57
+ * malformed inventories and exceptions retain field-specific TypeError diagnostics.
58
+ */
59
+ export declare function reconcileArtifactLedgers(snapshots: readonly ArtifactLedgerSnapshot[], exceptions?: readonly ArtifactLedgerException[]): ArtifactLedgerReport;
@@ -0,0 +1,2 @@
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="415e07d5-008a-5a96-ad7d-eb630aa08f57")}catch{}})();function validIdentity(value){return typeof value=="string"&&value.length>0&&value.trim()===value}function inventory(snapshots){if(!Array.isArray(snapshots)||snapshots.length<2)throw new TypeError("Expected at least two artifact ledgers.");const ledgers=new Map;for(const snapshot of snapshots){if(snapshot===null||typeof snapshot!="object"||!validIdentity(snapshot.name)||ledgers.has(snapshot.name)||snapshot.complete!==!0)throw new TypeError("Expected unique complete artifact ledgers.");if(!Array.isArray(snapshot.identities))throw new TypeError("Invalid or duplicate artifact identity.");const identities=new Set(snapshot.identities);if(identities.size!==snapshot.identities.length||snapshot.identities.some(id=>!validIdentity(id)))throw new TypeError("Invalid or duplicate artifact identity.");ledgers.set(snapshot.name,identities)}if([...ledgers.values()].every(identities=>identities.size===0))throw new TypeError("Empty inventories cannot establish artifact reconciliation.");return ledgers}function settlements(exceptions,names){if(!Array.isArray(exceptions))throw new TypeError("Expected unique evidence-backed artifact exceptions.");const accepted=new Map;for(const exception of exceptions){if(exception===null||typeof exception!="object"||!validIdentity(exception.identity)||accepted.has(exception.identity)||!validIdentity(exception.reason)||!validIdentity(exception.evidence))throw new TypeError("Expected unique evidence-backed artifact exceptions.");const missing=exception.missing_from;if(!Array.isArray(missing)||missing.length===0||missing.length>=names.length||new Set(missing).size!==missing.length||missing.some(name=>!names.includes(name)))throw new TypeError("Invalid artifact exception ledger signature.");accepted.set(exception.identity,exception)}return accepted}function reconcileArtifactLedgers(snapshots,exceptions=[]){const ledgers=inventory(snapshots),names=[...ledgers.keys()].sort(),accepted=settlements(exceptions,names),identities=[...new Set([...ledgers.values()].flatMap(set=>[...set]))].sort(),findings=[],matched=new Set;for(const identity of identities){const missing=names.filter(name=>!ledgers.get(name).has(identity));if(missing.length===0)continue;const exception=accepted.get(identity),settled=exception!==void 0&&JSON.stringify([...exception.missing_from].sort())===JSON.stringify(missing);settled&&matched.add(identity),findings.push({identity,present_in:names.filter(name=>ledgers.get(name).has(identity)),missing_from:missing,disposition:settled?{reason:exception.reason,evidence:exception.evidence}:null})}const stale=[...accepted.keys()].filter(identity=>!matched.has(identity)).sort();return{schema:"pm-artifact-ledgers/1",ok:findings.every(finding=>finding.disposition!==null)&&stale.length===0,counts:Object.fromEntries(names.map(name=>[name,ledgers.get(name).size])),findings,stale_exceptions:stale}}export{reconcileArtifactLedgers};
2
+ //# sourceMappingURL=artifact-ledgers.js.map
@@ -28,6 +28,7 @@ export * from "./author-attribution.js";
28
28
  export * from "./mutation-guard.js";
29
29
  export * from "./governance/provenance-health.js";
30
30
  export * from "./governance/reliability.js";
31
+ export * from "./governance/artifact-ledgers.js";
31
32
  export * from "./similarity.js";
32
33
  export * from "./history/maintenance.js";
33
34
  export * from "./history/attestation.js";
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c0218aaf-791c-57b1-8f9a-13816cb0c01f")}catch{}})();export*from"./governance/gc.js";export*from"./governance/health.js";export*from"./governance/extension-host-version.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-mutation-error.js";export*from"./governance/assurance-presets.js";export*from"./governance/assurance-runtime.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/defect-recurrence-coverage.js";import{runReindex}from"./governance/reindex.js";export*from"./governance/stale-work.js";export*from"./governance/storage-integrity.js";export*from"./governance/status-role-diagnostics.js";export*from"./governance/workspace-position.js";export*from"./governance/workflow-policy.js";import{runUpgrade}from"./governance/upgrade.js";export*from"./governance/validate.js";export*from"./governance/closure-timestamps.js";export*from"./governance/linked-file-report.js";export*from"./author-attribution.js";export*from"./mutation-guard.js";export*from"./governance/provenance-health.js";export*from"./governance/reliability.js";export*from"./similarity.js";export*from"./history/maintenance.js";export*from"./history/attestation.js";export*from"./history/attestation-command.js";export*from"../core/history/digest.js";export{runReindex,runUpgrade};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fca4e9bb-3a30-512e-9929-565ab6c11c54")}catch{}})();export*from"./governance/gc.js";export*from"./governance/health.js";export*from"./governance/extension-host-version.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-mutation-error.js";export*from"./governance/assurance-presets.js";export*from"./governance/assurance-runtime.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/defect-recurrence-coverage.js";import{runReindex}from"./governance/reindex.js";export*from"./governance/stale-work.js";export*from"./governance/storage-integrity.js";export*from"./governance/status-role-diagnostics.js";export*from"./governance/workspace-position.js";export*from"./governance/workflow-policy.js";import{runUpgrade}from"./governance/upgrade.js";export*from"./governance/validate.js";export*from"./governance/closure-timestamps.js";export*from"./governance/linked-file-report.js";export*from"./author-attribution.js";export*from"./mutation-guard.js";export*from"./governance/provenance-health.js";export*from"./governance/reliability.js";export*from"./governance/artifact-ledgers.js";export*from"./similarity.js";export*from"./history/maintenance.js";export*from"./history/attestation.js";export*from"./history/attestation-command.js";export*from"../core/history/digest.js";export{runReindex,runUpgrade};
2
2
  //# sourceMappingURL=governance.js.map