@unbrained/pm-cli 2026.8.16 → 2026.8.18
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/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +4 -3
- package/CHANGELOG.md +65 -6
- package/README.md +16 -16
- package/dist/cli/error-guidance.js +7 -4
- package/dist/cli/public.d.ts +2 -0
- package/dist/cli/public.js +21 -0
- package/dist/cli/register-list-query.js +132 -51
- package/dist/cli/register-mutation.js +4 -4
- package/dist/cli-bundle/bundle-manifest.json +148 -148
- package/dist/cli-bundle/chunks/chunk-5UZZAJKR.js +3 -0
- package/dist/cli-bundle/chunks/chunk-ALDJGKAK.js +2 -0
- package/dist/cli-bundle/chunks/chunk-BSK2IN3C.js +8 -0
- package/dist/cli-bundle/chunks/chunk-DY4DMUMC.js +197 -0
- package/dist/cli-bundle/chunks/{chunk-73UGEBRS.js → chunk-GNFAFIJI.js} +10 -10
- package/dist/cli-bundle/chunks/chunk-L5Q2CLPE.js +35 -0
- package/dist/cli-bundle/chunks/{chunk-RIS565OA.js → chunk-PVRUN5ZS.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-RZQTVMRQ.js +2 -0
- package/dist/cli-bundle/chunks/chunk-SARFF5H5.js +3 -0
- package/dist/cli-bundle/chunks/chunk-UYCLQVL2.js +13 -0
- package/dist/cli-bundle/chunks/{chunk-URW4QRMI.js → chunk-YRGOLZA7.js} +59 -55
- package/dist/cli-bundle/chunks/register-list-query-I23LALEE.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-6YGU3GPH.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-KGDNRMCL.js → register-operations-4HTFC6J7.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-NVXBOD5I.js → register-setup-PPPEF3SN.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-2PN4TJXH.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-C7JUBRFP.js → chunk-3TKWMNKF.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-5AF3ZBNB.js +155 -0
- package/dist/cli-bundle/focused-chunks/chunk-C5IW2NDA.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-CODV5LUT.js → chunk-EUEGXZ2A.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-4JPEBFFC.js → chunk-EX6MKP2X.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-SSNDYZTM.js → chunk-K43KKAFS.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-6ROKKT4X.js → chunk-M62NO7EI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-T46KLOIB.js → chunk-ODOVCP45.js} +47 -47
- package/dist/cli-bundle/focused-chunks/chunk-RNDNMARJ.js +16 -0
- package/dist/cli-bundle/focused-chunks/chunk-TN4AE665.js +26 -0
- package/dist/cli-bundle/focused-chunks/chunk-TVV2DONO.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-UI6AJ5TD.js +4 -0
- package/dist/cli-bundle/focused-chunks/chunk-V5XTGLK7.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-WGHQVU6P.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XYNBXTDQ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-Z56ECT7I.js +2 -0
- package/dist/cli-bundle/main.js +7 -7
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +31 -31
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +32 -32
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +4 -2
- package/dist/core/config/nested-settings.js +8 -2
- package/dist/core/extensions/exporter-output-contract.d.ts +12 -0
- package/dist/core/extensions/exporter-output-contract.js +67 -0
- package/dist/core/extensions/extension-types.d.ts +36 -1
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/loader.js +43 -48
- package/dist/core/extensions/manifest-schema.d.ts +20 -0
- package/dist/core/extensions/manifest-schema.js +52 -0
- package/dist/core/history/event-index.d.ts +5 -0
- package/dist/core/history/event-index.js +133 -27
- package/dist/core/history/replay.js +32 -14
- package/dist/core/schema/fields-file.d.ts +1 -1
- package/dist/core/schema/fields-file.js +2 -2
- package/dist/core/schema/runtime-field-values.js +115 -9
- package/dist/core/schema/runtime-schema.d.ts +3 -1
- package/dist/core/schema/runtime-schema.js +124 -3
- package/dist/core/sentry/helpers.js +3 -3
- package/dist/core/shared/constants.js +5 -2
- package/dist/core/shared/errors.d.ts +10 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/shared/time.d.ts +2 -0
- package/dist/core/shared/time.js +27 -2
- package/dist/core/store/settings-validator.d.ts +4 -0
- package/dist/core/store/settings-validator.js +3 -2
- package/dist/core/store/settings.js +8 -2
- package/dist/mcp/tool-definitions.js +12 -7
- package/dist/sdk/agent/refusal-reachability.d.ts +46 -6
- package/dist/sdk/agent/refusal-reachability.js +350 -8
- package/dist/sdk/authoring.d.ts +1 -1
- package/dist/sdk/authoring.js +2 -2
- package/dist/sdk/cli-bootstrap.d.ts +2 -2
- package/dist/sdk/cli-bootstrap.js +4 -4
- package/dist/sdk/cli-contracts/command-aliases.d.ts +34 -2
- package/dist/sdk/cli-contracts/command-aliases.js +64 -13
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +4 -0
- package/dist/sdk/cli-contracts/enum-contracts.js +9 -2
- package/dist/sdk/cli-contracts/flag-contracts.js +11 -7
- package/dist/sdk/cli-contracts/grammar-contracts.d.ts +70 -0
- package/dist/sdk/cli-contracts/grammar-contracts.js +345 -0
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +19 -2
- package/dist/sdk/cli-contracts/runtime-contracts.js +61 -14
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +10 -4
- package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
- package/dist/sdk/cli-contracts/tool-schema.js +20 -11
- package/dist/sdk/cli-contracts.d.ts +2 -2
- package/dist/sdk/cli-contracts.js +4 -4
- package/dist/sdk/completion.js +13 -15
- package/dist/sdk/compose.d.ts +9 -5
- package/dist/sdk/compose.js +33 -3
- package/dist/sdk/context-intent-contracts.d.ts +8 -4
- package/dist/sdk/context-intent-contracts.js +76 -31
- package/dist/sdk/contracts.d.ts +1 -0
- package/dist/sdk/contracts.js +3 -2
- package/dist/sdk/core.d.ts +1 -1
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/dependency-flag-validation.d.ts +9 -2
- package/dist/sdk/dependency-flag-validation.js +101 -35
- package/dist/sdk/environment/host-environment-errors.js +25 -7
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +78 -14
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +62 -14
- package/dist/sdk/governance/assurance-action.d.ts +3 -7
- package/dist/sdk/governance/assurance-action.js +97 -2
- package/dist/sdk/governance/boundary-fixtures.d.ts +86 -0
- package/dist/sdk/governance/boundary-fixtures.js +201 -0
- package/dist/sdk/governance/defect-recurrence-signals.d.ts +10 -0
- package/dist/sdk/governance/defect-recurrence-signals.js +25 -0
- package/dist/sdk/governance/defect-recurrence.d.ts +242 -0
- package/dist/sdk/governance/defect-recurrence.js +523 -0
- package/dist/sdk/governance.d.ts +2 -0
- package/dist/sdk/governance.js +4 -2
- package/dist/sdk/graph/governance.js +3 -2
- package/dist/sdk/guide-topics.js +193 -4
- package/dist/sdk/index.d.ts +7 -3
- package/dist/sdk/index.js +8 -5
- package/dist/sdk/init-agent-guidance.js +3 -3
- package/dist/sdk/lifecycle/create.js +4 -2
- package/dist/sdk/lifecycle/update-many.js +15 -2
- package/dist/sdk/lifecycle/update.js +5 -2
- package/dist/sdk/linked-artifacts.js +63 -14
- package/dist/sdk/mutation-events.d.ts +18 -2
- package/dist/sdk/mutation-events.js +59 -16
- package/dist/sdk/output.d.ts +44 -0
- package/dist/sdk/output.js +28 -2
- package/dist/sdk/query/complete-list.d.ts +94 -0
- package/dist/sdk/query/complete-list.js +173 -0
- package/dist/sdk/query/get.d.ts +2 -0
- package/dist/sdk/query/get.js +32 -7
- package/dist/sdk/query/list.js +5 -2
- package/dist/sdk/query.d.ts +1 -0
- package/dist/sdk/query.js +3 -2
- package/dist/sdk/read-output-contracts.d.ts +2 -2
- package/dist/sdk/read-output-contracts.js +36 -9
- package/dist/sdk/relationship-analytics.js +90 -14
- package/dist/sdk/relationship-kinds/contract.d.ts +4 -0
- package/dist/sdk/relationship-kinds/contract.js +3 -2
- package/dist/sdk/relationships.d.ts +1 -1
- package/dist/sdk/relationships.js +11 -2
- package/dist/sdk/runtime-extended-actions.js +10 -2
- package/dist/sdk/runtime.d.ts +8 -2
- package/dist/sdk/runtime.js +11 -8
- package/dist/sdk/schema.d.ts +1 -0
- package/dist/sdk/schema.js +2 -2
- package/dist/sdk/test/execution.d.ts +6 -2
- package/dist/sdk/test/execution.js +39 -13
- package/dist/types.d.ts +34 -2
- package/dist/types.js +4 -2
- package/docs/AGENT_GUIDE.md +25 -9
- package/docs/CLI_GRAMMAR.md +106 -0
- package/docs/COMMANDS.md +23 -23
- package/docs/CONFIGURATION.md +58 -1
- package/docs/CONTEXT_INTEGRITY_CONTRACTS.md +58 -0
- package/docs/DEFECT_RECURRENCE.md +134 -0
- package/docs/DEPENDENCY_KIND_CONTRACT.md +12 -2
- package/docs/ONBOARDING.md +4 -4
- package/docs/QUICKSTART.md +1 -1
- package/docs/README.md +4 -0
- package/docs/RELATIONSHIP_GRAPH.md +16 -2
- package/docs/RELEASING.md +30 -6
- package/docs/SDK.md +74 -7
- package/docs/SDK_ARTIFACT_OUTPUT.md +72 -0
- package/docs/SDK_CONTEXT_COORDINATION.md +46 -12
- package/docs/SDK_RUNTIME_BOUNDARIES.md +9 -1
- package/docs/TESTING.md +18 -1
- package/docs/TRUSTWORTHY_CONTEXT_EVIDENCE.md +1 -1
- package/docs/agent-task-token-baseline.json +5 -5
- package/marketplace.json +2 -2
- package/package.json +8 -5
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/skills/pm-audit/SKILL.md +26 -0
- package/plugins/pm-claude/skills/pm-developer/SKILL.md +26 -0
- package/plugins/pm-claude/skills/pm-planner/SKILL.md +26 -0
- package/plugins/pm-claude/skills/pm-release/SKILL.md +26 -0
- package/plugins/pm-claude/skills/pm-workflow/SKILL.md +26 -0
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/skills/pm-auditor/SKILL.md +26 -0
- package/plugins/pm-codex/skills/pm-native/SKILL.md +26 -0
- package/plugins/pm-codex/skills/pm-release/SKILL.md +26 -0
- package/sdk/public-surface.json +1243 -54
- package/dist/cli-bundle/chunks/chunk-47OQEOQB.js +0 -2
- package/dist/cli-bundle/chunks/chunk-HCIYWD6M.js +0 -35
- package/dist/cli-bundle/chunks/chunk-I2LUWWR5.js +0 -3
- package/dist/cli-bundle/chunks/chunk-IC5W2T34.js +0 -2
- package/dist/cli-bundle/chunks/chunk-OAC5NIV4.js +0 -3
- package/dist/cli-bundle/chunks/chunk-PANOOBIS.js +0 -13
- package/dist/cli-bundle/chunks/chunk-TK6N7HGM.js +0 -8
- package/dist/cli-bundle/chunks/chunk-TOFG2URD.js +0 -197
- package/dist/cli-bundle/chunks/register-list-query-EYCXHZAG.js +0 -10
- package/dist/cli-bundle/chunks/register-mutation-7YVIG54J.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-5NMFSX26.js +0 -155
- package/dist/cli-bundle/focused-chunks/chunk-725JSCMP.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-DQ6SMTBF.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HAACPSUW.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-J4UFYHOD.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-JX5Z344Q.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-L4RDYBIQ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-NJ5RLEFD.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-QYZERYR5.js +0 -4
- package/dist/cli-bundle/focused-chunks/chunk-TZATVC4G.js +0 -16
- package/dist/cli-bundle/focused-chunks/chunk-WY3WRPVN.js +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Generated partition 1 of the exhaustive error-code catalog. */
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="29cde680-7551-51d1-9c5e-dd9d062d2397")}catch(e){}}();
|
|
4
4
|
export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
5
5
|
{
|
|
6
6
|
code: "acceptance_criteria_mutation_conflict",
|
|
@@ -38,6 +38,18 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
38
38
|
canonical_code: "acceptance_criteria_semicolon_forbidden",
|
|
39
39
|
aliases: [],
|
|
40
40
|
},
|
|
41
|
+
{
|
|
42
|
+
code: "alias_target_missing",
|
|
43
|
+
meaning: "Alias target missing condition.",
|
|
44
|
+
stability: "provisional",
|
|
45
|
+
exit_code: 1,
|
|
46
|
+
class: "generic_failure",
|
|
47
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
48
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
49
|
+
emitting_commands: ["*"],
|
|
50
|
+
canonical_code: "alias_target_missing",
|
|
51
|
+
aliases: [],
|
|
52
|
+
},
|
|
41
53
|
{
|
|
42
54
|
code: "already_claimed_by",
|
|
43
55
|
meaning: "Already claimed by condition.",
|
|
@@ -50,18 +62,6 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
50
62
|
canonical_code: "already_claimed_by",
|
|
51
63
|
aliases: [],
|
|
52
64
|
},
|
|
53
|
-
{
|
|
54
|
-
code: "ambiguous_list_all",
|
|
55
|
-
meaning: "Ambiguous list all condition.",
|
|
56
|
-
stability: "stable",
|
|
57
|
-
exit_code: 2,
|
|
58
|
-
class: "usage",
|
|
59
|
-
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
60
|
-
sources: ["cli/register-list-query.ts"],
|
|
61
|
-
emitting_commands: ["*"],
|
|
62
|
-
canonical_code: "ambiguous_list_all",
|
|
63
|
-
aliases: [],
|
|
64
|
-
},
|
|
65
65
|
{
|
|
66
66
|
code: "ambiguous_option_combination",
|
|
67
67
|
meaning: "Ambiguous option combination condition.",
|
|
@@ -470,6 +470,18 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
470
470
|
canonical_code: "dependency_target_not_found",
|
|
471
471
|
aliases: [],
|
|
472
472
|
},
|
|
473
|
+
{
|
|
474
|
+
code: "dependency_temporal_order_invalid",
|
|
475
|
+
meaning: "Dependency temporal order invalid condition.",
|
|
476
|
+
stability: "provisional",
|
|
477
|
+
exit_code: 2,
|
|
478
|
+
class: "usage",
|
|
479
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
480
|
+
sources: ["sdk/dependency-flag-validation.ts"],
|
|
481
|
+
emitting_commands: ["*"],
|
|
482
|
+
canonical_code: "dependency_temporal_order_invalid",
|
|
483
|
+
aliases: [],
|
|
484
|
+
},
|
|
473
485
|
{
|
|
474
486
|
code: "duplicate_command",
|
|
475
487
|
meaning: "Duplicate command condition.",
|
|
@@ -482,6 +494,18 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
482
494
|
canonical_code: "duplicate_command",
|
|
483
495
|
aliases: [],
|
|
484
496
|
},
|
|
497
|
+
{
|
|
498
|
+
code: "duplicate_destination",
|
|
499
|
+
meaning: "Duplicate destination condition.",
|
|
500
|
+
stability: "provisional",
|
|
501
|
+
exit_code: 1,
|
|
502
|
+
class: "generic_failure",
|
|
503
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
504
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
505
|
+
emitting_commands: ["*"],
|
|
506
|
+
canonical_code: "duplicate_destination",
|
|
507
|
+
aliases: [],
|
|
508
|
+
},
|
|
485
509
|
{
|
|
486
510
|
code: "duplicate_edge",
|
|
487
511
|
meaning: "Duplicate edge condition.",
|
|
@@ -1256,6 +1280,22 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
1256
1280
|
canonical_code: "invalid_event_cursor",
|
|
1257
1281
|
aliases: [],
|
|
1258
1282
|
},
|
|
1283
|
+
{
|
|
1284
|
+
code: "invalid_event_cursor_mode",
|
|
1285
|
+
meaning: "Invalid event cursor mode condition.",
|
|
1286
|
+
stability: "provisional",
|
|
1287
|
+
exit_code: 2,
|
|
1288
|
+
class: "usage",
|
|
1289
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
1290
|
+
sources: [
|
|
1291
|
+
"cli/register-list-query.ts",
|
|
1292
|
+
"sdk/mutation-events.ts",
|
|
1293
|
+
"sdk/runtime-extended-actions.ts",
|
|
1294
|
+
],
|
|
1295
|
+
emitting_commands: ["*"],
|
|
1296
|
+
canonical_code: "invalid_event_cursor_mode",
|
|
1297
|
+
aliases: [],
|
|
1298
|
+
},
|
|
1259
1299
|
{
|
|
1260
1300
|
code: "invalid_event_follow_interval",
|
|
1261
1301
|
meaning: "Invalid event follow interval condition.",
|
|
@@ -1628,6 +1668,18 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
1628
1668
|
canonical_code: "manifest_capabilities_absent",
|
|
1629
1669
|
aliases: [],
|
|
1630
1670
|
},
|
|
1671
|
+
{
|
|
1672
|
+
code: "manifest_unknown_key",
|
|
1673
|
+
meaning: "Manifest unknown key condition.",
|
|
1674
|
+
stability: "provisional",
|
|
1675
|
+
exit_code: 2,
|
|
1676
|
+
class: "usage",
|
|
1677
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
1678
|
+
sources: ["sdk/compose.ts"],
|
|
1679
|
+
emitting_commands: ["*"],
|
|
1680
|
+
canonical_code: "manifest_unknown_key",
|
|
1681
|
+
aliases: [],
|
|
1682
|
+
},
|
|
1631
1683
|
{
|
|
1632
1684
|
code: "merge_conflict_markers_detected",
|
|
1633
1685
|
meaning: "Merge conflict markers detected condition.",
|
|
@@ -1640,6 +1692,18 @@ export const PM_ERROR_CODE_CATALOG_PART_1 = [
|
|
|
1640
1692
|
canonical_code: "merge_conflict_markers_detected",
|
|
1641
1693
|
aliases: ["history_merge_conflict_markers_detected"],
|
|
1642
1694
|
},
|
|
1695
|
+
{
|
|
1696
|
+
code: "merge_decisions_unreviewed",
|
|
1697
|
+
meaning: "Merge decisions unreviewed condition.",
|
|
1698
|
+
stability: "provisional",
|
|
1699
|
+
exit_code: 1,
|
|
1700
|
+
class: "generic_failure",
|
|
1701
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
1702
|
+
sources: ["core/diagnostics/remediation.ts"],
|
|
1703
|
+
emitting_commands: ["*"],
|
|
1704
|
+
canonical_code: "merge_decisions_unreviewed",
|
|
1705
|
+
aliases: [],
|
|
1706
|
+
},
|
|
1643
1707
|
];
|
|
1644
1708
|
//# sourceMappingURL=generated-error-code-catalog-part-1.js.map
|
|
1645
|
-
//# debugId=
|
|
1709
|
+
//# debugId=29cde680-7551-51d1-9c5e-dd9d062d2397
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
/** Generated partition 2 of the exhaustive error-code catalog. */
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1b16c4f8-d399-52fa-b2b6-bc677bdf676f")}catch(e){}}();
|
|
4
4
|
export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
5
|
-
{
|
|
6
|
-
code: "merge_decisions_unreviewed",
|
|
7
|
-
meaning: "Merge decisions unreviewed condition.",
|
|
8
|
-
stability: "provisional",
|
|
9
|
-
exit_code: 1,
|
|
10
|
-
class: "generic_failure",
|
|
11
|
-
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
12
|
-
sources: ["core/diagnostics/remediation.ts"],
|
|
13
|
-
emitting_commands: ["*"],
|
|
14
|
-
canonical_code: "merge_decisions_unreviewed",
|
|
15
|
-
aliases: [],
|
|
16
|
-
},
|
|
17
5
|
{
|
|
18
6
|
code: "merge_git_config_unwritable",
|
|
19
7
|
meaning: "Merge git config unwritable condition.",
|
|
@@ -50,6 +38,18 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
50
38
|
canonical_code: "merge_root_not_found",
|
|
51
39
|
aliases: [],
|
|
52
40
|
},
|
|
41
|
+
{
|
|
42
|
+
code: "missing_destination",
|
|
43
|
+
meaning: "Missing destination condition.",
|
|
44
|
+
stability: "provisional",
|
|
45
|
+
exit_code: 1,
|
|
46
|
+
class: "generic_failure",
|
|
47
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
48
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
49
|
+
emitting_commands: ["*"],
|
|
50
|
+
canonical_code: "missing_destination",
|
|
51
|
+
aliases: [],
|
|
52
|
+
},
|
|
53
53
|
{
|
|
54
54
|
code: "missing_directory",
|
|
55
55
|
meaning: "Missing directory condition.",
|
|
@@ -219,6 +219,18 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
219
219
|
canonical_code: "no_update_fields",
|
|
220
220
|
aliases: [],
|
|
221
221
|
},
|
|
222
|
+
{
|
|
223
|
+
code: "no_version_bounds_declared",
|
|
224
|
+
meaning: "No version bounds declared condition.",
|
|
225
|
+
stability: "provisional",
|
|
226
|
+
exit_code: 1,
|
|
227
|
+
class: "generic_failure",
|
|
228
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
229
|
+
sources: ["sdk/compose.ts"],
|
|
230
|
+
emitting_commands: ["*"],
|
|
231
|
+
canonical_code: "no_version_bounds_declared",
|
|
232
|
+
aliases: [],
|
|
233
|
+
},
|
|
222
234
|
{
|
|
223
235
|
code: "npm_package_not_found",
|
|
224
236
|
meaning: "Npm package not found condition.",
|
|
@@ -495,6 +507,18 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
495
507
|
canonical_code: "settings_read_merge_failed",
|
|
496
508
|
aliases: [],
|
|
497
509
|
},
|
|
510
|
+
{
|
|
511
|
+
code: "stale_destination",
|
|
512
|
+
meaning: "Stale destination condition.",
|
|
513
|
+
stability: "provisional",
|
|
514
|
+
exit_code: 1,
|
|
515
|
+
class: "generic_failure",
|
|
516
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
517
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
518
|
+
emitting_commands: ["*"],
|
|
519
|
+
canonical_code: "stale_destination",
|
|
520
|
+
aliases: [],
|
|
521
|
+
},
|
|
498
522
|
{
|
|
499
523
|
code: "status_duplicate",
|
|
500
524
|
meaning: "Status duplicate condition.",
|
|
@@ -910,6 +934,18 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
910
934
|
canonical_code: "unknown_subcommand",
|
|
911
935
|
aliases: [],
|
|
912
936
|
},
|
|
937
|
+
{
|
|
938
|
+
code: "unknown_noun",
|
|
939
|
+
meaning: "Unknown noun condition.",
|
|
940
|
+
stability: "provisional",
|
|
941
|
+
exit_code: 2,
|
|
942
|
+
class: "usage",
|
|
943
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
944
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
945
|
+
emitting_commands: ["*"],
|
|
946
|
+
canonical_code: "unknown_noun",
|
|
947
|
+
aliases: [],
|
|
948
|
+
},
|
|
913
949
|
{
|
|
914
950
|
code: "unknown_option",
|
|
915
951
|
meaning: "Unknown option condition.",
|
|
@@ -1471,6 +1507,18 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
1471
1507
|
canonical_code: "vectorization_stale_items_remaining",
|
|
1472
1508
|
aliases: [],
|
|
1473
1509
|
},
|
|
1510
|
+
{
|
|
1511
|
+
code: "visible_surface_ceiling_exceeded",
|
|
1512
|
+
meaning: "Visible surface ceiling exceeded condition.",
|
|
1513
|
+
stability: "provisional",
|
|
1514
|
+
exit_code: 1,
|
|
1515
|
+
class: "generic_failure",
|
|
1516
|
+
recovery: "Inspect the structured error guidance and retry the suggested command.",
|
|
1517
|
+
sources: ["sdk/cli-contracts/grammar-contracts.ts"],
|
|
1518
|
+
emitting_commands: ["*"],
|
|
1519
|
+
canonical_code: "visible_surface_ceiling_exceeded",
|
|
1520
|
+
aliases: [],
|
|
1521
|
+
},
|
|
1474
1522
|
{
|
|
1475
1523
|
code: "workflow_duplicate_type",
|
|
1476
1524
|
meaning: "Workflow duplicate type condition.",
|
|
@@ -1665,4 +1713,4 @@ export const PM_ERROR_CODE_CATALOG_PART_2 = [
|
|
|
1665
1713
|
},
|
|
1666
1714
|
];
|
|
1667
1715
|
//# sourceMappingURL=generated-error-code-catalog-part-2.js.map
|
|
1668
|
-
//# debugId=
|
|
1716
|
+
//# debugId=1b16c4f8-d399-52fa-b2b6-bc677bdf676f
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module sdk/assurance-action
|
|
3
|
-
*
|
|
4
|
-
* Normalizes the assurance action vocabulary once for CLI, SDK, and MCP hosts.
|
|
5
|
-
*/
|
|
6
1
|
import type { GlobalOptions } from "../../core/shared/command-types.js";
|
|
7
2
|
import { type AssuranceBundleMutationReceipt, type AssuranceDeclaration, type AssuranceGateVerdict, type AssuranceMutationReceipt } from "./assurance.js";
|
|
8
3
|
import { type AssuranceDerivedProposal, type AssurancePreset, type AssurancePresetId } from "./assurance-presets.js";
|
|
9
4
|
import { type CreateAssuranceWorkspaceContextOptions } from "./assurance-runtime.js";
|
|
5
|
+
import { type DefectChangeRiskReport } from "./defect-recurrence.js";
|
|
10
6
|
/** Assurance registry and evaluation verbs shared by every transport. */
|
|
11
|
-
export declare const ASSURANCE_ACTIONS: readonly ["list", "show", "put", "remove", "run", "verdicts", "presets", "apply", "derive", "promote"];
|
|
7
|
+
export declare const ASSURANCE_ACTIONS: readonly ["list", "show", "put", "remove", "run", "verdicts", "presets", "apply", "derive", "promote", "risk"];
|
|
12
8
|
/** Assurance declaration kinds shared by every transport. */
|
|
13
9
|
export declare const ASSURANCE_DECLARATION_KINDS: readonly ["measurement", "assertion", "gate"];
|
|
14
10
|
/** Assurance action verb. */
|
|
@@ -56,7 +52,7 @@ export interface AssuranceActionRuntimeOptions {
|
|
|
56
52
|
workspace?: Omit<CreateAssuranceWorkspaceContextOptions, "tree_id" | "trigger">;
|
|
57
53
|
}
|
|
58
54
|
/** Result union returned by transport-neutral assurance execution. */
|
|
59
|
-
export type AssuranceActionResult = AssuranceDeclaration | AssuranceMutationReceipt | AssuranceGateVerdict | AssuranceBundleMutationReceipt | AssurancePreset | {
|
|
55
|
+
export type AssuranceActionResult = AssuranceDeclaration | AssuranceMutationReceipt | AssuranceGateVerdict | AssuranceBundleMutationReceipt | AssurancePreset | DefectChangeRiskReport | {
|
|
60
56
|
items: AssuranceDerivedProposal[];
|
|
61
57
|
count: number;
|
|
62
58
|
applied?: AssuranceBundleMutationReceipt;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sdk/assurance-action
|
|
3
|
+
*
|
|
4
|
+
* Normalizes the assurance action vocabulary once for CLI, SDK, and MCP hosts.
|
|
5
|
+
*/
|
|
1
6
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
7
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="57c12241-812d-5db6-9a07-ca256152b130")}catch(e){}}();
|
|
8
|
+
import { createHash } from "node:crypto";
|
|
3
9
|
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
4
10
|
import { PmCliError } from "../../core/shared/errors.js";
|
|
11
|
+
import { stableStringify } from "../../core/shared/serialization.js";
|
|
5
12
|
import { ASSURANCE_GATE_TRIGGERS, evaluateAssuranceGate, getAssuranceDeclaration, listAssuranceDeclarations, listAssuranceVerdicts, putAssuranceDeclaration, recordAssuranceVerdict, removeAssuranceDeclaration, } from "./assurance.js";
|
|
6
13
|
import { ASSURANCE_PRESET_IDS, acceptAssuranceProposals, applyAssurancePreset, createAssurancePreset, deriveAssuranceProposals, promoteAssuranceAssertion, } from "./assurance-presets.js";
|
|
7
14
|
import { MAX_ASSURANCE_VERDICT_LIMIT } from "./assurance-limits.js";
|
|
@@ -9,6 +16,9 @@ import { normalizeAssuranceEvaluation, normalizeAssuranceMutation, } from "./ass
|
|
|
9
16
|
import { createAssuranceWorkspaceContext, } from "./assurance-runtime.js";
|
|
10
17
|
import { resolvePmRoot } from "../runtime-primitives.js";
|
|
11
18
|
import { parseRuntimeInteger, readRuntimeString } from "../runtime-input.js";
|
|
19
|
+
import { analyzeDefectChangeRisk, buildDefectRecurrenceIndex, parseDefectChangeRiskRequest, } from "./defect-recurrence.js";
|
|
20
|
+
import { defectRecurrenceItemSignals } from "./defect-recurrence-signals.js";
|
|
21
|
+
let riskIndexCache;
|
|
12
22
|
/** Assurance registry and evaluation verbs shared by every transport. */
|
|
13
23
|
export const ASSURANCE_ACTIONS = [
|
|
14
24
|
"list",
|
|
@@ -21,6 +31,7 @@ export const ASSURANCE_ACTIONS = [
|
|
|
21
31
|
"apply",
|
|
22
32
|
"derive",
|
|
23
33
|
"promote",
|
|
34
|
+
"risk",
|
|
24
35
|
];
|
|
25
36
|
/** Assurance declaration kinds shared by every transport. */
|
|
26
37
|
export const ASSURANCE_DECLARATION_KINDS = [
|
|
@@ -205,6 +216,87 @@ async function runGateAction(input, pmRoot, runtime) {
|
|
|
205
216
|
}
|
|
206
217
|
return verdict;
|
|
207
218
|
}
|
|
219
|
+
/** Normalize a request-validation failure into the shared usage-error contract. */
|
|
220
|
+
function throwRiskUsageError(error) {
|
|
221
|
+
if (error instanceof PmCliError)
|
|
222
|
+
throw error;
|
|
223
|
+
throw new PmCliError(error instanceof Error
|
|
224
|
+
? error.message
|
|
225
|
+
: "assurance risk request is invalid", EXIT_CODE.USAGE);
|
|
226
|
+
}
|
|
227
|
+
/** Parse JSON or object risk definitions without wrapping workspace failures. */
|
|
228
|
+
function parseRiskActionRequest(input) {
|
|
229
|
+
if (input.limit !== undefined) {
|
|
230
|
+
throw new PmCliError("assurance risk does not accept --limit; set limit inside the risk definition", EXIT_CODE.USAGE);
|
|
231
|
+
}
|
|
232
|
+
let definition = input.definition;
|
|
233
|
+
if (typeof definition === "string") {
|
|
234
|
+
try {
|
|
235
|
+
definition = JSON.parse(definition);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
throw new PmCliError("assurance risk definition must be valid JSON", EXIT_CODE.USAGE, { reason: error instanceof Error ? error.message : "invalid_json" });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
try {
|
|
242
|
+
return parseDefectChangeRiskRequest(definition);
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
return throwRiskUsageError(error);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Derive the exact sparse replacement and deletion set for a cached index. */
|
|
249
|
+
function changedRiskItemIds(cached, current) {
|
|
250
|
+
const changed = new Set();
|
|
251
|
+
for (const [itemId, itemFingerprint] of current) {
|
|
252
|
+
if (cached.item_fingerprints.get(itemId) !== itemFingerprint)
|
|
253
|
+
changed.add(itemId);
|
|
254
|
+
}
|
|
255
|
+
for (const itemId of cached.item_fingerprints.keys()) {
|
|
256
|
+
if (!current.has(itemId))
|
|
257
|
+
changed.add(itemId);
|
|
258
|
+
}
|
|
259
|
+
return changed;
|
|
260
|
+
}
|
|
261
|
+
/** Build and retain a safely invalidated bounded process-local recurrence index. */
|
|
262
|
+
function buildCachedRiskIndex(pmRoot, request, items) {
|
|
263
|
+
const policySerialized = stableStringify(request.policy);
|
|
264
|
+
const cached = riskIndexCache?.pm_root === pmRoot ? riskIndexCache : undefined;
|
|
265
|
+
const itemFingerprints = new Map(items.map((item) => [
|
|
266
|
+
item.id,
|
|
267
|
+
createHash("sha256")
|
|
268
|
+
.update(stableStringify(defectRecurrenceItemSignals(item)))
|
|
269
|
+
.digest("hex"),
|
|
270
|
+
]));
|
|
271
|
+
const reusable = cached?.policy_serialized === policySerialized ? cached : undefined;
|
|
272
|
+
const changed = reusable
|
|
273
|
+
? changedRiskItemIds(reusable, itemFingerprints)
|
|
274
|
+
: new Set();
|
|
275
|
+
const index = buildDefectRecurrenceIndex(request.policy, reusable ? items.filter((item) => changed.has(item.id)) : items, reusable
|
|
276
|
+
? { previous_index: reusable.index, changed_item_ids: [...changed] }
|
|
277
|
+
: {});
|
|
278
|
+
riskIndexCache = {
|
|
279
|
+
pm_root: pmRoot,
|
|
280
|
+
policy_serialized: policySerialized,
|
|
281
|
+
item_fingerprints: itemFingerprints,
|
|
282
|
+
index,
|
|
283
|
+
};
|
|
284
|
+
return index;
|
|
285
|
+
}
|
|
286
|
+
/** Evaluate one serialized change-risk request against authoritative PM metadata. */
|
|
287
|
+
async function runRiskAction(input, pmRoot) {
|
|
288
|
+
const request = parseRiskActionRequest(input);
|
|
289
|
+
const context = await createAssuranceWorkspaceContext(pmRoot, {
|
|
290
|
+
include_history: false,
|
|
291
|
+
resolve_tree: false,
|
|
292
|
+
});
|
|
293
|
+
try {
|
|
294
|
+
return analyzeDefectChangeRisk(buildCachedRiskIndex(pmRoot, request, context.items), request.change, { cursor: request.cursor, limit: request.limit });
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
return throwRiskUsageError(error);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
208
300
|
/** Execute one assurance request through the public assurance SDK primitives. */
|
|
209
301
|
export async function runAssuranceAction(input, global = {}, runtime = {}) {
|
|
210
302
|
const action = parseAction(input.action);
|
|
@@ -221,6 +313,9 @@ export async function runAssuranceAction(input, global = {}, runtime = {}) {
|
|
|
221
313
|
if (action === "run") {
|
|
222
314
|
return runGateAction(input, pmRoot, runtime);
|
|
223
315
|
}
|
|
316
|
+
if (action === "risk") {
|
|
317
|
+
return runRiskAction(input, pmRoot);
|
|
318
|
+
}
|
|
224
319
|
const kind = parseKind(input.kind);
|
|
225
320
|
if (action === "list")
|
|
226
321
|
return listAssuranceDeclarations(pmRoot, kind);
|
|
@@ -282,4 +377,4 @@ export function runAssuranceDispatch(args, options, global) {
|
|
|
282
377
|
}, global);
|
|
283
378
|
}
|
|
284
379
|
//# sourceMappingURL=assurance-action.js.map
|
|
285
|
-
//# debugId=
|
|
380
|
+
//# debugId=57c12241-812d-5db6-9a07-ca256152b130
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/** Evidence source accepted for a captured boundary sample. */
|
|
2
|
+
export declare const BOUNDARY_FIXTURE_CAPTURE_SOURCES: readonly ["captured_redacted", "captured_verbatim"];
|
|
3
|
+
/** Captured boundary evidence source. */
|
|
4
|
+
export type BoundaryFixtureCaptureSource = (typeof BOUNDARY_FIXTURE_CAPTURE_SOURCES)[number];
|
|
5
|
+
/** Inventory record backed by a committed captured sample. */
|
|
6
|
+
export interface CapturedBoundaryRecord {
|
|
7
|
+
/** Stable external-boundary identifier. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Production component that emits or obtains the value. */
|
|
10
|
+
producer: string;
|
|
11
|
+
/** Production component that parses or consumes the value. */
|
|
12
|
+
consumer: string;
|
|
13
|
+
/** Concise serialized-format description. */
|
|
14
|
+
format: string;
|
|
15
|
+
/** Relative path to a committed JSON fixture. */
|
|
16
|
+
fixture_path: string;
|
|
17
|
+
}
|
|
18
|
+
/** Inventory record explicitly waived until a bounded expiry. */
|
|
19
|
+
export interface WaivedBoundaryRecord {
|
|
20
|
+
/** Stable external-boundary identifier. */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Production component that emits or obtains the value. */
|
|
23
|
+
producer: string;
|
|
24
|
+
/** Production component that parses or consumes the value. */
|
|
25
|
+
consumer: string;
|
|
26
|
+
/** Concise serialized-format description. */
|
|
27
|
+
format: string;
|
|
28
|
+
/** Concrete reason a safe captured fixture is not available. */
|
|
29
|
+
waiver_reason: string;
|
|
30
|
+
/** Accountable PM item or team. */
|
|
31
|
+
waiver_owner: string;
|
|
32
|
+
/** ISO timestamp after which the waiver fails closed. */
|
|
33
|
+
waiver_expires_at: string;
|
|
34
|
+
}
|
|
35
|
+
/** One externally generated or consumed boundary inventory entry. */
|
|
36
|
+
export type BoundaryInventoryRecord = CapturedBoundaryRecord | WaivedBoundaryRecord;
|
|
37
|
+
/** Versioned project boundary inventory. */
|
|
38
|
+
export interface BoundaryFixtureRegistry {
|
|
39
|
+
/** Serialized registry format. */
|
|
40
|
+
version: 1;
|
|
41
|
+
/** Human-readable statement of what source surfaces were inventoried. */
|
|
42
|
+
inventory_scope: string;
|
|
43
|
+
/** Captured or explicitly waived boundary records. */
|
|
44
|
+
boundaries: BoundaryInventoryRecord[];
|
|
45
|
+
}
|
|
46
|
+
/** Required shape of a committed captured boundary sample. */
|
|
47
|
+
export interface BoundaryFixtureSample {
|
|
48
|
+
/** Serialized fixture format. */
|
|
49
|
+
version: 1;
|
|
50
|
+
/** Inventory boundary id proved by this sample. */
|
|
51
|
+
boundary_id: string;
|
|
52
|
+
/** Captured evidence classification; self-generated is intentionally absent. */
|
|
53
|
+
capture_source: BoundaryFixtureCaptureSource;
|
|
54
|
+
/** Where and how the original value was observed. */
|
|
55
|
+
capture_provenance: string;
|
|
56
|
+
/** Redactions applied before committing the sample. */
|
|
57
|
+
redactions: string[];
|
|
58
|
+
/** Redacted external input. */
|
|
59
|
+
input: unknown;
|
|
60
|
+
/** Redacted observed boundary value. */
|
|
61
|
+
observed: unknown;
|
|
62
|
+
}
|
|
63
|
+
/** Stable boundary-fixture governance finding. */
|
|
64
|
+
export interface BoundaryFixtureFinding {
|
|
65
|
+
/** Boundary id, or registry for registry-wide defects. */
|
|
66
|
+
boundary_id: string;
|
|
67
|
+
/** Machine-readable failure kind. */
|
|
68
|
+
kind: "invalid_registry" | "duplicate_boundary" | "invalid_boundary" | "missing_fixture" | "invalid_fixture" | "fixture_boundary_mismatch" | "unsafe_fixture" | "invalid_waiver" | "expired_waiver";
|
|
69
|
+
/** Actionable explanation. */
|
|
70
|
+
detail: string;
|
|
71
|
+
}
|
|
72
|
+
/** Complete captured-boundary governance report. */
|
|
73
|
+
export interface BoundaryFixtureReport {
|
|
74
|
+
/** Whether every inventoried boundary has safe current evidence. */
|
|
75
|
+
ok: boolean;
|
|
76
|
+
/** Total inventoried boundaries. */
|
|
77
|
+
boundary_count: number;
|
|
78
|
+
/** Boundaries backed by committed captured samples. */
|
|
79
|
+
captured_count: number;
|
|
80
|
+
/** Boundaries carrying live explicit waivers. */
|
|
81
|
+
waived_count: number;
|
|
82
|
+
/** Stable sorted failures. */
|
|
83
|
+
findings: BoundaryFixtureFinding[];
|
|
84
|
+
}
|
|
85
|
+
/** Validate an untrusted boundary registry and its already-loaded JSON samples. */
|
|
86
|
+
export declare function evaluateBoundaryFixtures(registry: BoundaryFixtureRegistry, fixtures: Readonly<Record<string, unknown>>, now?: Date): BoundaryFixtureReport;
|