@riddledc/riddle-proof 0.8.21 → 0.8.23

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 (36) hide show
  1. package/dist/advanced/engine-harness.cjs +12 -7
  2. package/dist/advanced/engine-harness.js +1 -1
  3. package/dist/advanced/index.cjs +12 -7
  4. package/dist/advanced/index.d.cts +2 -2
  5. package/dist/advanced/index.d.ts +2 -2
  6. package/dist/advanced/index.js +2 -2
  7. package/dist/advanced/proof-run-core.d.cts +1 -1
  8. package/dist/advanced/proof-run-core.d.ts +1 -1
  9. package/dist/advanced/proof-run-engine.cjs +12 -7
  10. package/dist/advanced/proof-run-engine.d.cts +2 -2
  11. package/dist/advanced/proof-run-engine.d.ts +2 -2
  12. package/dist/advanced/proof-run-engine.js +1 -1
  13. package/dist/{chunk-X4T3LNP2.js → chunk-KS3N5APP.js} +13 -7
  14. package/dist/{chunk-DAF4EX6A.js → chunk-UTQJHWCQ.js} +1 -1
  15. package/dist/cli/index.js +2 -2
  16. package/dist/cli.cjs +12 -7
  17. package/dist/cli.js +2 -2
  18. package/dist/engine-harness.cjs +12 -7
  19. package/dist/engine-harness.js +1 -1
  20. package/dist/index.cjs +12 -7
  21. package/dist/index.js +1 -1
  22. package/dist/{proof-run-core-C8FDUhle.d.ts → proof-run-core-CrpYH-qH.d.cts} +1 -1
  23. package/dist/{proof-run-core-C8FDUhle.d.cts → proof-run-core-CrpYH-qH.d.ts} +1 -1
  24. package/dist/proof-run-core.d.cts +1 -1
  25. package/dist/proof-run-core.d.ts +1 -1
  26. package/dist/{proof-run-engine-D80hVFMf.d.cts → proof-run-engine-C6vYAZd8.d.cts} +4 -4
  27. package/dist/{proof-run-engine-By7oLsF-.d.ts → proof-run-engine-h9C1lC0w.d.ts} +4 -4
  28. package/dist/proof-run-engine.cjs +12 -7
  29. package/dist/proof-run-engine.d.cts +2 -2
  30. package/dist/proof-run-engine.d.ts +2 -2
  31. package/dist/proof-run-engine.js +1 -1
  32. package/package.json +1 -1
  33. package/runtime/lib/verify.py +35 -0
  34. package/runtime/tests/recon_verify_smoke.py +101 -0
  35. package/runtime/tests/trust_boundary_regression.py +6 -0
  36. /package/dist/{chunk-FQA3XMZM.js → chunk-2DW2LBUD.js} +0 -0
@@ -2623,10 +2623,15 @@ ${implementRes.stderr || ""}`;
2623
2623
  verifyContinueWithStage,
2624
2624
  convergenceSignals
2625
2625
  };
2626
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2626
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2627
+ ...state,
2628
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2629
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2630
+ });
2631
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2627
2632
  if (verifyStatus !== "evidence_captured") {
2628
2633
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2629
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2634
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2630
2635
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2631
2636
  updateState(config.statePath, (currentState) => {
2632
2637
  currentState.author_status = "needs_authoring";
@@ -2640,7 +2645,7 @@ ${implementRes.stderr || ""}`;
2640
2645
  recordAttempt("verify", "checkpoint", summary, {
2641
2646
  autoApproved: verifyRes.autoApproved || false,
2642
2647
  checkpoint: checkpointName,
2643
- details: verifyDetails
2648
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2644
2649
  });
2645
2650
  return checkpoint(
2646
2651
  "verify",
@@ -2653,7 +2658,7 @@ ${implementRes.stderr || ""}`;
2653
2658
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2654
2659
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2655
2660
  blocking: captureTerminalBlocker,
2656
- details: verifyDetails,
2661
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2657
2662
  verifyStatus,
2658
2663
  verifySummary,
2659
2664
  afterCdn: state?.after_cdn || null,
@@ -2664,12 +2669,12 @@ ${implementRes.stderr || ""}`;
2664
2669
  }
2665
2670
  );
2666
2671
  }
2667
- if (structuredInteractionFailureSummary) {
2672
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2668
2673
  const summary = structuredInteractionFailureSummary;
2669
2674
  recordAttempt("verify", "checkpoint", summary, {
2670
2675
  autoApproved: verifyRes.autoApproved || false,
2671
2676
  checkpoint: "verify_capture_blocked",
2672
- details: verifyDetails
2677
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2673
2678
  });
2674
2679
  return checkpoint(
2675
2680
  "verify",
@@ -2682,7 +2687,7 @@ ${implementRes.stderr || ""}`;
2682
2687
  recommendedAdvanceStage: null,
2683
2688
  continueWithStage: null,
2684
2689
  blocking: true,
2685
- details: verifyDetails,
2690
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2686
2691
  verifyStatus,
2687
2692
  verifySummary,
2688
2693
  afterCdn: state?.after_cdn || null,
@@ -2,7 +2,7 @@ import {
2
2
  createDisabledRiddleProofAgentAdapter,
3
3
  readRiddleProofRunStatus,
4
4
  runRiddleProofEngineHarness
5
- } from "../chunk-FQA3XMZM.js";
5
+ } from "../chunk-2DW2LBUD.js";
6
6
  import "../chunk-YZUVEJ5B.js";
7
7
  import "../chunk-FMOYUYH2.js";
8
8
  import "../chunk-FU73I4V3.js";
@@ -2654,10 +2654,15 @@ ${implementRes.stderr || ""}`;
2654
2654
  verifyContinueWithStage,
2655
2655
  convergenceSignals
2656
2656
  };
2657
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2657
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2658
+ ...state,
2659
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2660
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2661
+ });
2662
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2658
2663
  if (verifyStatus !== "evidence_captured") {
2659
2664
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2660
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2665
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2661
2666
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2662
2667
  updateState(config.statePath, (currentState) => {
2663
2668
  currentState.author_status = "needs_authoring";
@@ -2671,7 +2676,7 @@ ${implementRes.stderr || ""}`;
2671
2676
  recordAttempt("verify", "checkpoint", summary, {
2672
2677
  autoApproved: verifyRes.autoApproved || false,
2673
2678
  checkpoint: checkpointName,
2674
- details: verifyDetails
2679
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2675
2680
  });
2676
2681
  return checkpoint(
2677
2682
  "verify",
@@ -2684,7 +2689,7 @@ ${implementRes.stderr || ""}`;
2684
2689
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2685
2690
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2686
2691
  blocking: captureTerminalBlocker,
2687
- details: verifyDetails,
2692
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2688
2693
  verifyStatus,
2689
2694
  verifySummary,
2690
2695
  afterCdn: state?.after_cdn || null,
@@ -2695,12 +2700,12 @@ ${implementRes.stderr || ""}`;
2695
2700
  }
2696
2701
  );
2697
2702
  }
2698
- if (structuredInteractionFailureSummary) {
2703
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2699
2704
  const summary = structuredInteractionFailureSummary;
2700
2705
  recordAttempt("verify", "checkpoint", summary, {
2701
2706
  autoApproved: verifyRes.autoApproved || false,
2702
2707
  checkpoint: "verify_capture_blocked",
2703
- details: verifyDetails
2708
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2704
2709
  });
2705
2710
  return checkpoint(
2706
2711
  "verify",
@@ -2713,7 +2718,7 @@ ${implementRes.stderr || ""}`;
2713
2718
  recommendedAdvanceStage: null,
2714
2719
  continueWithStage: null,
2715
2720
  blocking: true,
2716
- details: verifyDetails,
2721
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2717
2722
  verifyStatus,
2718
2723
  verifySummary,
2719
2724
  afterCdn: state?.after_cdn || null,
@@ -1,5 +1,5 @@
1
1
  export { b as runner } from '../runner-4LJ5z0D-.cjs';
2
2
  export { l as engineHarness } from '../engine-harness-LBfqbFSe.cjs';
3
- export { p as proofRunCore } from '../proof-run-core-C8FDUhle.cjs';
4
- export { p as proofRunEngine } from '../proof-run-engine-D80hVFMf.cjs';
3
+ export { p as proofRunCore } from '../proof-run-core-CrpYH-qH.cjs';
4
+ export { p as proofRunEngine } from '../proof-run-engine-C6vYAZd8.cjs';
5
5
  import '../types.cjs';
@@ -1,5 +1,5 @@
1
1
  export { b as runner } from '../runner-BdQpOkZD.js';
2
2
  export { l as engineHarness } from '../engine-harness-CMACHP6A.js';
3
- export { p as proofRunCore } from '../proof-run-core-C8FDUhle.js';
4
- export { p as proofRunEngine } from '../proof-run-engine-By7oLsF-.js';
3
+ export { p as proofRunCore } from '../proof-run-core-CrpYH-qH.js';
4
+ export { p as proofRunEngine } from '../proof-run-engine-h9C1lC0w.js';
5
5
  import '../types.js';
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  proof_run_engine_exports
3
- } from "../chunk-X4T3LNP2.js";
3
+ } from "../chunk-KS3N5APP.js";
4
4
  import {
5
5
  runner_exports
6
6
  } from "../chunk-P2RN2NYR.js";
7
7
  import {
8
8
  engine_harness_exports
9
- } from "../chunk-FQA3XMZM.js";
9
+ } from "../chunk-2DW2LBUD.js";
10
10
  import "../chunk-YZUVEJ5B.js";
11
11
  import "../chunk-FMOYUYH2.js";
12
12
  import {
@@ -1 +1 @@
1
- export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from '../proof-run-core-C8FDUhle.cjs';
1
+ export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from '../proof-run-core-CrpYH-qH.cjs';
@@ -1 +1 @@
1
- export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from '../proof-run-core-C8FDUhle.js';
1
+ export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from '../proof-run-core-CrpYH-qH.js';
@@ -2623,10 +2623,15 @@ ${implementRes.stderr || ""}`;
2623
2623
  verifyContinueWithStage,
2624
2624
  convergenceSignals
2625
2625
  };
2626
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2626
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2627
+ ...state,
2628
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2629
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2630
+ });
2631
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2627
2632
  if (verifyStatus !== "evidence_captured") {
2628
2633
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2629
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2634
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2630
2635
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2631
2636
  updateState(config.statePath, (currentState) => {
2632
2637
  currentState.author_status = "needs_authoring";
@@ -2640,7 +2645,7 @@ ${implementRes.stderr || ""}`;
2640
2645
  recordAttempt("verify", "checkpoint", summary, {
2641
2646
  autoApproved: verifyRes.autoApproved || false,
2642
2647
  checkpoint: checkpointName,
2643
- details: verifyDetails
2648
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2644
2649
  });
2645
2650
  return checkpoint(
2646
2651
  "verify",
@@ -2653,7 +2658,7 @@ ${implementRes.stderr || ""}`;
2653
2658
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2654
2659
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2655
2660
  blocking: captureTerminalBlocker,
2656
- details: verifyDetails,
2661
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2657
2662
  verifyStatus,
2658
2663
  verifySummary,
2659
2664
  afterCdn: state?.after_cdn || null,
@@ -2664,12 +2669,12 @@ ${implementRes.stderr || ""}`;
2664
2669
  }
2665
2670
  );
2666
2671
  }
2667
- if (structuredInteractionFailureSummary) {
2672
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2668
2673
  const summary = structuredInteractionFailureSummary;
2669
2674
  recordAttempt("verify", "checkpoint", summary, {
2670
2675
  autoApproved: verifyRes.autoApproved || false,
2671
2676
  checkpoint: "verify_capture_blocked",
2672
- details: verifyDetails
2677
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2673
2678
  });
2674
2679
  return checkpoint(
2675
2680
  "verify",
@@ -2682,7 +2687,7 @@ ${implementRes.stderr || ""}`;
2682
2687
  recommendedAdvanceStage: null,
2683
2688
  continueWithStage: null,
2684
2689
  blocking: true,
2685
- details: verifyDetails,
2690
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2686
2691
  verifyStatus,
2687
2692
  verifySummary,
2688
2693
  afterCdn: state?.after_cdn || null,
@@ -1,2 +1,2 @@
1
- export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from '../proof-run-engine-D80hVFMf.cjs';
2
- import '../proof-run-core-C8FDUhle.cjs';
1
+ export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from '../proof-run-engine-C6vYAZd8.cjs';
2
+ import '../proof-run-core-CrpYH-qH.cjs';
@@ -1,2 +1,2 @@
1
- export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from '../proof-run-engine-By7oLsF-.js';
2
- import '../proof-run-core-C8FDUhle.js';
1
+ export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from '../proof-run-engine-h9C1lC0w.js';
2
+ import '../proof-run-core-CrpYH-qH.js';
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createRiddleProofEngine,
3
3
  executeWorkflow
4
- } from "../chunk-X4T3LNP2.js";
4
+ } from "../chunk-KS3N5APP.js";
5
5
  import "../chunk-FU73I4V3.js";
6
6
  import "../chunk-MLKGABMK.js";
7
7
  export {
@@ -7,6 +7,7 @@ import {
7
7
  invalidateVerifyEvidence,
8
8
  mergeStateFromParams,
9
9
  noImplementationModeFor,
10
+ proofAssessmentHardBlockersForState,
10
11
  readState,
11
12
  recordStageAttempt,
12
13
  resolveConfig,
@@ -1511,10 +1512,15 @@ ${implementRes.stderr || ""}`;
1511
1512
  verifyContinueWithStage,
1512
1513
  convergenceSignals
1513
1514
  };
1514
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
1515
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
1516
+ ...state,
1517
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
1518
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
1519
+ });
1520
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
1515
1521
  if (verifyStatus !== "evidence_captured") {
1516
1522
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
1517
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
1523
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
1518
1524
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
1519
1525
  updateState(config.statePath, (currentState) => {
1520
1526
  currentState.author_status = "needs_authoring";
@@ -1528,7 +1534,7 @@ ${implementRes.stderr || ""}`;
1528
1534
  recordAttempt("verify", "checkpoint", summary, {
1529
1535
  autoApproved: verifyRes.autoApproved || false,
1530
1536
  checkpoint: checkpointName,
1531
- details: verifyDetails
1537
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
1532
1538
  });
1533
1539
  return checkpoint(
1534
1540
  "verify",
@@ -1541,7 +1547,7 @@ ${implementRes.stderr || ""}`;
1541
1547
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
1542
1548
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
1543
1549
  blocking: captureTerminalBlocker,
1544
- details: verifyDetails,
1550
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
1545
1551
  verifyStatus,
1546
1552
  verifySummary,
1547
1553
  afterCdn: state?.after_cdn || null,
@@ -1552,12 +1558,12 @@ ${implementRes.stderr || ""}`;
1552
1558
  }
1553
1559
  );
1554
1560
  }
1555
- if (structuredInteractionFailureSummary) {
1561
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
1556
1562
  const summary = structuredInteractionFailureSummary;
1557
1563
  recordAttempt("verify", "checkpoint", summary, {
1558
1564
  autoApproved: verifyRes.autoApproved || false,
1559
1565
  checkpoint: "verify_capture_blocked",
1560
- details: verifyDetails
1566
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
1561
1567
  });
1562
1568
  return checkpoint(
1563
1569
  "verify",
@@ -1570,7 +1576,7 @@ ${implementRes.stderr || ""}`;
1570
1576
  recommendedAdvanceStage: null,
1571
1577
  continueWithStage: null,
1572
1578
  blocking: true,
1573
- details: verifyDetails,
1579
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
1574
1580
  verifyStatus,
1575
1581
  verifySummary,
1576
1582
  afterCdn: state?.after_cdn || null,
@@ -22,7 +22,7 @@ import {
22
22
  createDisabledRiddleProofAgentAdapter,
23
23
  readRiddleProofRunStatus,
24
24
  runRiddleProofEngineHarness
25
- } from "./chunk-FQA3XMZM.js";
25
+ } from "./chunk-2DW2LBUD.js";
26
26
  import {
27
27
  createCheckpointResponseTemplate
28
28
  } from "./chunk-4FOHZ7JG.js";
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import "../chunk-DAF4EX6A.js";
1
+ import "../chunk-UTQJHWCQ.js";
2
2
  import "../chunk-PEWAIEER.js";
3
3
  import "../chunk-TWTEUS7R.js";
4
- import "../chunk-FQA3XMZM.js";
4
+ import "../chunk-2DW2LBUD.js";
5
5
  import "../chunk-YZUVEJ5B.js";
6
6
  import "../chunk-FMOYUYH2.js";
7
7
  import "../chunk-FU73I4V3.js";
package/dist/cli.cjs CHANGED
@@ -2623,10 +2623,15 @@ ${implementRes.stderr || ""}`;
2623
2623
  verifyContinueWithStage,
2624
2624
  convergenceSignals
2625
2625
  };
2626
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2626
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2627
+ ...state,
2628
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2629
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2630
+ });
2631
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2627
2632
  if (verifyStatus !== "evidence_captured") {
2628
2633
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2629
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2634
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2630
2635
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2631
2636
  updateState(config.statePath, (currentState) => {
2632
2637
  currentState.author_status = "needs_authoring";
@@ -2640,7 +2645,7 @@ ${implementRes.stderr || ""}`;
2640
2645
  recordAttempt("verify", "checkpoint", summary, {
2641
2646
  autoApproved: verifyRes.autoApproved || false,
2642
2647
  checkpoint: checkpointName,
2643
- details: verifyDetails
2648
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2644
2649
  });
2645
2650
  return checkpoint(
2646
2651
  "verify",
@@ -2653,7 +2658,7 @@ ${implementRes.stderr || ""}`;
2653
2658
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2654
2659
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2655
2660
  blocking: captureTerminalBlocker,
2656
- details: verifyDetails,
2661
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2657
2662
  verifyStatus,
2658
2663
  verifySummary,
2659
2664
  afterCdn: state?.after_cdn || null,
@@ -2664,12 +2669,12 @@ ${implementRes.stderr || ""}`;
2664
2669
  }
2665
2670
  );
2666
2671
  }
2667
- if (structuredInteractionFailureSummary) {
2672
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2668
2673
  const summary = structuredInteractionFailureSummary;
2669
2674
  recordAttempt("verify", "checkpoint", summary, {
2670
2675
  autoApproved: verifyRes.autoApproved || false,
2671
2676
  checkpoint: "verify_capture_blocked",
2672
- details: verifyDetails
2677
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2673
2678
  });
2674
2679
  return checkpoint(
2675
2680
  "verify",
@@ -2682,7 +2687,7 @@ ${implementRes.stderr || ""}`;
2682
2687
  recommendedAdvanceStage: null,
2683
2688
  continueWithStage: null,
2684
2689
  blocking: true,
2685
- details: verifyDetails,
2690
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2686
2691
  verifyStatus,
2687
2692
  verifySummary,
2688
2693
  afterCdn: state?.after_cdn || null,
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import "./chunk-DAF4EX6A.js";
2
+ import "./chunk-UTQJHWCQ.js";
3
3
  import "./chunk-PEWAIEER.js";
4
4
  import "./chunk-TWTEUS7R.js";
5
- import "./chunk-FQA3XMZM.js";
5
+ import "./chunk-2DW2LBUD.js";
6
6
  import "./chunk-YZUVEJ5B.js";
7
7
  import "./chunk-FMOYUYH2.js";
8
8
  import "./chunk-FU73I4V3.js";
@@ -2623,10 +2623,15 @@ ${implementRes.stderr || ""}`;
2623
2623
  verifyContinueWithStage,
2624
2624
  convergenceSignals
2625
2625
  };
2626
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2626
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2627
+ ...state,
2628
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2629
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2630
+ });
2631
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2627
2632
  if (verifyStatus !== "evidence_captured") {
2628
2633
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2629
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2634
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2630
2635
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2631
2636
  updateState(config.statePath, (currentState) => {
2632
2637
  currentState.author_status = "needs_authoring";
@@ -2640,7 +2645,7 @@ ${implementRes.stderr || ""}`;
2640
2645
  recordAttempt("verify", "checkpoint", summary, {
2641
2646
  autoApproved: verifyRes.autoApproved || false,
2642
2647
  checkpoint: checkpointName,
2643
- details: verifyDetails
2648
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2644
2649
  });
2645
2650
  return checkpoint(
2646
2651
  "verify",
@@ -2653,7 +2658,7 @@ ${implementRes.stderr || ""}`;
2653
2658
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2654
2659
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2655
2660
  blocking: captureTerminalBlocker,
2656
- details: verifyDetails,
2661
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2657
2662
  verifyStatus,
2658
2663
  verifySummary,
2659
2664
  afterCdn: state?.after_cdn || null,
@@ -2664,12 +2669,12 @@ ${implementRes.stderr || ""}`;
2664
2669
  }
2665
2670
  );
2666
2671
  }
2667
- if (structuredInteractionFailureSummary) {
2672
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2668
2673
  const summary = structuredInteractionFailureSummary;
2669
2674
  recordAttempt("verify", "checkpoint", summary, {
2670
2675
  autoApproved: verifyRes.autoApproved || false,
2671
2676
  checkpoint: "verify_capture_blocked",
2672
- details: verifyDetails
2677
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2673
2678
  });
2674
2679
  return checkpoint(
2675
2680
  "verify",
@@ -2682,7 +2687,7 @@ ${implementRes.stderr || ""}`;
2682
2687
  recommendedAdvanceStage: null,
2683
2688
  continueWithStage: null,
2684
2689
  blocking: true,
2685
- details: verifyDetails,
2690
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2686
2691
  verifyStatus,
2687
2692
  verifySummary,
2688
2693
  afterCdn: state?.after_cdn || null,
@@ -2,7 +2,7 @@ import {
2
2
  createDisabledRiddleProofAgentAdapter,
3
3
  readRiddleProofRunStatus,
4
4
  runRiddleProofEngineHarness
5
- } from "./chunk-FQA3XMZM.js";
5
+ } from "./chunk-2DW2LBUD.js";
6
6
  import "./chunk-YZUVEJ5B.js";
7
7
  import "./chunk-FMOYUYH2.js";
8
8
  import "./chunk-FU73I4V3.js";
package/dist/index.cjs CHANGED
@@ -2623,10 +2623,15 @@ ${implementRes.stderr || ""}`;
2623
2623
  verifyContinueWithStage,
2624
2624
  convergenceSignals
2625
2625
  };
2626
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2626
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2627
+ ...state,
2628
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2629
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2630
+ });
2631
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2627
2632
  if (verifyStatus !== "evidence_captured") {
2628
2633
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2629
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2634
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2630
2635
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2631
2636
  updateState(config.statePath, (currentState) => {
2632
2637
  currentState.author_status = "needs_authoring";
@@ -2640,7 +2645,7 @@ ${implementRes.stderr || ""}`;
2640
2645
  recordAttempt("verify", "checkpoint", summary, {
2641
2646
  autoApproved: verifyRes.autoApproved || false,
2642
2647
  checkpoint: checkpointName,
2643
- details: verifyDetails
2648
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2644
2649
  });
2645
2650
  return checkpoint(
2646
2651
  "verify",
@@ -2653,7 +2658,7 @@ ${implementRes.stderr || ""}`;
2653
2658
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2654
2659
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2655
2660
  blocking: captureTerminalBlocker,
2656
- details: verifyDetails,
2661
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2657
2662
  verifyStatus,
2658
2663
  verifySummary,
2659
2664
  afterCdn: state?.after_cdn || null,
@@ -2664,12 +2669,12 @@ ${implementRes.stderr || ""}`;
2664
2669
  }
2665
2670
  );
2666
2671
  }
2667
- if (structuredInteractionFailureSummary) {
2672
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2668
2673
  const summary = structuredInteractionFailureSummary;
2669
2674
  recordAttempt("verify", "checkpoint", summary, {
2670
2675
  autoApproved: verifyRes.autoApproved || false,
2671
2676
  checkpoint: "verify_capture_blocked",
2672
- details: verifyDetails
2677
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2673
2678
  });
2674
2679
  return checkpoint(
2675
2680
  "verify",
@@ -2682,7 +2687,7 @@ ${implementRes.stderr || ""}`;
2682
2687
  recommendedAdvanceStage: null,
2683
2688
  continueWithStage: null,
2684
2689
  blocking: true,
2685
- details: verifyDetails,
2690
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2686
2691
  verifyStatus,
2687
2692
  verifySummary,
2688
2693
  afterCdn: state?.after_cdn || null,
package/dist/index.js CHANGED
@@ -95,7 +95,7 @@ import {
95
95
  createDisabledRiddleProofAgentAdapter,
96
96
  readRiddleProofRunStatus,
97
97
  runRiddleProofEngineHarness
98
- } from "./chunk-FQA3XMZM.js";
98
+ } from "./chunk-2DW2LBUD.js";
99
99
  import {
100
100
  RIDDLE_PROOF_RUN_STATE_VERSION,
101
101
  appendRunEvent,
@@ -121,7 +121,7 @@ declare function buildSetupArgs(params: WorkflowParams, config: ReturnType<typeo
121
121
  target_image_hash: string;
122
122
  viewport_matrix_json: string;
123
123
  deterministic_setup_json: string;
124
- reference: "before" | "prod" | "both";
124
+ reference: "prod" | "before" | "both";
125
125
  base_branch: string;
126
126
  before_ref: string;
127
127
  allow_static_preview_fallback: string;
@@ -121,7 +121,7 @@ declare function buildSetupArgs(params: WorkflowParams, config: ReturnType<typeo
121
121
  target_image_hash: string;
122
122
  viewport_matrix_json: string;
123
123
  deterministic_setup_json: string;
124
- reference: "before" | "prod" | "both";
124
+ reference: "prod" | "before" | "both";
125
125
  base_branch: string;
126
126
  before_ref: string;
127
127
  allow_static_preview_fallback: string;
@@ -1 +1 @@
1
- export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from './proof-run-core-C8FDUhle.cjs';
1
+ export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from './proof-run-core-CrpYH-qH.cjs';
@@ -1 +1 @@
1
- export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from './proof-run-core-C8FDUhle.js';
1
+ export { B as BUNDLED_RIDDLE_PROOF_DIR, C as CHECKPOINT_CONTRACT_VERSION, b as CheckpointInputContract, P as PluginConfig, R as RIDDLE_PROOF_DIR_CANDIDATES, S as ShipGateValidation, c as WORKFLOW_STAGE_ORDER, d as WorkflowAction, W as WorkflowParams, a as WorkflowStage, e as buildCheckpointContract, f as buildSetupArgs, g as checkpointContinueStage, h as clearStageDecisionRequest, i as ensureAction, j as ensureStageLoopState, k as invalidateVerifyEvidence, m as mergeStateFromParams, n as noImplementationModeFor, l as previewModeFromWorkflowMode, o as proofAssessmentHardBlockersForState, q as readState, s as recordStageAttempt, t as requiredBaselineLabelsForState, r as resolveConfig, u as resolveRiddleProofDir, v as setStageDecisionRequest, w as summarizeState, x as validateShipGate, y as visualDeltaForState, z as visualDeltaRequiredForState, A as visualDeltaShipGateReason, D as workflowFile, E as writeState } from './proof-run-core-CrpYH-qH.js';
@@ -1,4 +1,4 @@
1
- import { W as WorkflowParams, r as resolveConfig, P as PluginConfig, a as WorkflowStage } from './proof-run-core-C8FDUhle.cjs';
1
+ import { W as WorkflowParams, r as resolveConfig, P as PluginConfig, a as WorkflowStage } from './proof-run-core-CrpYH-qH.cjs';
2
2
 
3
3
  declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, resolvedConfig?: ReturnType<typeof resolveConfig>): Promise<{
4
4
  ok: boolean;
@@ -292,7 +292,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
292
292
  blocking?: boolean;
293
293
  details?: Record<string, unknown>;
294
294
  ok: boolean;
295
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup" | "run";
295
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
296
296
  state_path: string;
297
297
  stage: any;
298
298
  summary: string;
@@ -382,7 +382,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
382
382
  continueWithStage?: WorkflowStage | null;
383
383
  blocking?: boolean;
384
384
  details?: Record<string, unknown>;
385
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup" | "run";
385
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
386
386
  state_path: string;
387
387
  stage: any;
388
388
  checkpoint: string;
@@ -659,7 +659,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
659
659
  error?: undefined;
660
660
  } | {
661
661
  ok: boolean;
662
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup";
662
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship";
663
663
  state_path: string;
664
664
  stage: any;
665
665
  summary: string;
@@ -1,4 +1,4 @@
1
- import { W as WorkflowParams, r as resolveConfig, P as PluginConfig, a as WorkflowStage } from './proof-run-core-C8FDUhle.js';
1
+ import { W as WorkflowParams, r as resolveConfig, P as PluginConfig, a as WorkflowStage } from './proof-run-core-CrpYH-qH.js';
2
2
 
3
3
  declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, resolvedConfig?: ReturnType<typeof resolveConfig>): Promise<{
4
4
  ok: boolean;
@@ -292,7 +292,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
292
292
  blocking?: boolean;
293
293
  details?: Record<string, unknown>;
294
294
  ok: boolean;
295
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup" | "run";
295
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
296
296
  state_path: string;
297
297
  stage: any;
298
298
  summary: string;
@@ -382,7 +382,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
382
382
  continueWithStage?: WorkflowStage | null;
383
383
  blocking?: boolean;
384
384
  details?: Record<string, unknown>;
385
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup" | "run";
385
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
386
386
  state_path: string;
387
387
  stage: any;
388
388
  checkpoint: string;
@@ -659,7 +659,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
659
659
  error?: undefined;
660
660
  } | {
661
661
  ok: boolean;
662
- action: "author" | "recon" | "ship" | "implement" | "verify" | "setup";
662
+ action: "setup" | "recon" | "author" | "implement" | "verify" | "ship";
663
663
  state_path: string;
664
664
  stage: any;
665
665
  summary: string;
@@ -2621,10 +2621,15 @@ ${implementRes.stderr || ""}`;
2621
2621
  verifyContinueWithStage,
2622
2622
  convergenceSignals
2623
2623
  };
2624
- const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary);
2624
+ const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2625
+ ...state,
2626
+ structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2627
+ structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2628
+ });
2629
+ const structuredInteractionFailureSummary = stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers[0]);
2625
2630
  if (verifyStatus !== "evidence_captured") {
2626
2631
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2627
- const captureTerminalBlocker = Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2632
+ const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2628
2633
  if (!captureTerminalBlocker && (verifyContinueWithStage || verifyRecommendedStage || "author") === "author") {
2629
2634
  updateState(config.statePath, (currentState) => {
2630
2635
  currentState.author_status = "needs_authoring";
@@ -2638,7 +2643,7 @@ ${implementRes.stderr || ""}`;
2638
2643
  recordAttempt("verify", "checkpoint", summary, {
2639
2644
  autoApproved: verifyRes.autoApproved || false,
2640
2645
  checkpoint: checkpointName,
2641
- details: verifyDetails
2646
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2642
2647
  });
2643
2648
  return checkpoint(
2644
2649
  "verify",
@@ -2651,7 +2656,7 @@ ${implementRes.stderr || ""}`;
2651
2656
  recommendedAdvanceStage: captureTerminalBlocker ? null : verifyRecommendedStage || "author",
2652
2657
  continueWithStage: captureTerminalBlocker ? null : verifyContinueWithStage || "author",
2653
2658
  blocking: captureTerminalBlocker,
2654
- details: verifyDetails,
2659
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2655
2660
  verifyStatus,
2656
2661
  verifySummary,
2657
2662
  afterCdn: state?.after_cdn || null,
@@ -2662,12 +2667,12 @@ ${implementRes.stderr || ""}`;
2662
2667
  }
2663
2668
  );
2664
2669
  }
2665
- if (structuredInteractionFailureSummary) {
2670
+ if (conclusiveVerifyBlockers.length > 0 || structuredInteractionFailureSummary) {
2666
2671
  const summary = structuredInteractionFailureSummary;
2667
2672
  recordAttempt("verify", "checkpoint", summary, {
2668
2673
  autoApproved: verifyRes.autoApproved || false,
2669
2674
  checkpoint: "verify_capture_blocked",
2670
- details: verifyDetails
2675
+ details: { ...verifyDetails, conclusiveVerifyBlockers }
2671
2676
  });
2672
2677
  return checkpoint(
2673
2678
  "verify",
@@ -2680,7 +2685,7 @@ ${implementRes.stderr || ""}`;
2680
2685
  recommendedAdvanceStage: null,
2681
2686
  continueWithStage: null,
2682
2687
  blocking: true,
2683
- details: verifyDetails,
2688
+ details: { ...verifyDetails, conclusiveVerifyBlockers },
2684
2689
  verifyStatus,
2685
2690
  verifySummary,
2686
2691
  afterCdn: state?.after_cdn || null,
@@ -1,2 +1,2 @@
1
- import './proof-run-core-C8FDUhle.cjs';
2
- export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from './proof-run-engine-D80hVFMf.cjs';
1
+ import './proof-run-core-CrpYH-qH.cjs';
2
+ export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from './proof-run-engine-C6vYAZd8.cjs';
@@ -1,2 +1,2 @@
1
- import './proof-run-core-C8FDUhle.js';
2
- export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from './proof-run-engine-By7oLsF-.js';
1
+ import './proof-run-core-CrpYH-qH.js';
2
+ export { R as RiddleProofEngine, c as createRiddleProofEngine, e as executeWorkflow } from './proof-run-engine-h9C1lC0w.js';
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createRiddleProofEngine,
3
3
  executeWorkflow
4
- } from "./chunk-X4T3LNP2.js";
4
+ } from "./chunk-KS3N5APP.js";
5
5
  import "./chunk-FU73I4V3.js";
6
6
  import "./chunk-MLKGABMK.js";
7
7
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddledc/riddle-proof",
3
- "version": "0.8.21",
3
+ "version": "0.8.23",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",
@@ -2723,6 +2723,29 @@ def failed_interaction_evidence_summary(proof_evidence):
2723
2723
  return summary
2724
2724
 
2725
2725
 
2726
+ def interaction_failed_evidence_after_script_error_summary(proof_evidence, capture_error):
2727
+ capture_error = str(capture_error or '').strip()
2728
+ if not capture_error:
2729
+ return ''
2730
+ failures = []
2731
+ for record in proof_evidence_records(proof_evidence):
2732
+ failures.extend(collect_interaction_failed_assertions(record))
2733
+ deduped = []
2734
+ seen = set()
2735
+ for failure in failures:
2736
+ failure = str(failure or '').strip()
2737
+ if not failure or failure in seen:
2738
+ continue
2739
+ seen.add(failure)
2740
+ deduped.append(failure)
2741
+ if not deduped:
2742
+ return ''
2743
+ summary = 'Interaction capture emitted failed structured proof evidence before the capture script completed.'
2744
+ summary += ' Failed checks: ' + ', '.join(deduped[:8]) + '.'
2745
+ summary += ' Capture script error: ' + capture_error[:300]
2746
+ return summary
2747
+
2748
+
2726
2749
  def interaction_capture_failure_evidence_summary(proof_evidence):
2727
2750
  for record in proof_evidence_records_deep(proof_evidence):
2728
2751
  if not isinstance(record, dict):
@@ -4073,8 +4096,20 @@ structured_interaction_failure_summary = ''
4073
4096
  structured_interaction_capture_failure_summary = ''
4074
4097
  proof_evidence = evidence_bundle.get('proof_evidence')
4075
4098
  if verification_mode in INTERACTION_MODES and proof_evidence is not None:
4099
+ capture_error_messages = []
4100
+ if isinstance(after_observation.get('details'), dict):
4101
+ capture_error_messages = [
4102
+ str(item).strip()
4103
+ for item in (after_observation.get('details') or {}).get('capture_error_messages') or []
4104
+ if str(item).strip()
4105
+ ]
4076
4106
  structured_interaction_failure_summary = failed_interaction_evidence_summary(proof_evidence)
4077
4107
  structured_interaction_capture_failure_summary = interaction_capture_failure_evidence_summary(proof_evidence)
4108
+ if capture_error_messages and not structured_interaction_capture_failure_summary:
4109
+ structured_interaction_capture_failure_summary = interaction_failed_evidence_after_script_error_summary(
4110
+ proof_evidence,
4111
+ capture_error_messages[0],
4112
+ )
4078
4113
  if structured_interaction_failure_summary:
4079
4114
  summary_lines.append('Structured interaction evidence gate: ' + structured_interaction_failure_summary)
4080
4115
  if structured_interaction_capture_failure_summary:
@@ -718,6 +718,47 @@ class FakeRiddle:
718
718
  'proof.json': {'script_error': message},
719
719
  },
720
720
  }
721
+ if 'interactionThrownAfterFailedEvidence' in script:
722
+ message = 'Error: intentional-riddle-proof-0823-thrown-error-after-failed-evidence'
723
+ page_state = {
724
+ 'bodyTextLength': 180,
725
+ 'visibleTextSample': 'Riddle Proof homepage hero Start Free',
726
+ 'interactiveElements': 4,
727
+ 'visibleInteractiveElements': 4,
728
+ 'pathname': '/',
729
+ 'search': '',
730
+ 'hash': '',
731
+ 'title': 'Riddle',
732
+ 'buttons': ['Start Free'],
733
+ 'headings': ['Riddle Proof'],
734
+ 'links': [],
735
+ 'canvasCount': 0,
736
+ 'largeVisibleElements': [{'tag': 'h1', 'text': 'Riddle Proof'}],
737
+ }
738
+ proof_evidence = {
739
+ 'version': 'riddle-proof.interaction.v1',
740
+ 'evidence_summary': 'Structured interaction evidence was emitted before the diagnostic script threw.',
741
+ 'checks': {
742
+ 'passed': False,
743
+ 'success': False,
744
+ 'proofReady': False,
745
+ },
746
+ 'capture_error': message,
747
+ }
748
+ return {
749
+ 'ok': True,
750
+ 'screenshots': [{'url': 'https://cdn.example.com/thrown-error-failed-evidence.png'}],
751
+ 'outputs': [{'name': 'after-thrown-error.png', 'url': 'https://cdn.example.com/thrown-error-failed-evidence.png'}],
752
+ 'result': {'pageState': page_state, 'proofEvidence': proof_evidence},
753
+ 'console': [
754
+ 'RIDDLE_PROOF_STATE:' + json.dumps(page_state),
755
+ 'RIDDLE_PROOF_EVIDENCE:' + json.dumps(proof_evidence),
756
+ 'Uncaught exception: ' + message,
757
+ ],
758
+ '_artifact_json': {
759
+ 'proof.json': {'script_error': message},
760
+ },
761
+ }
721
762
  if 'interactionThrownError' in script:
722
763
  message = 'Error: intentional-riddle-proof-0811-thrown-error'
723
764
  page_state = {
@@ -3449,6 +3490,65 @@ def run_verify_interaction_thrown_error_terminal_blocker():
3449
3490
  shutil.rmtree(tempdir, ignore_errors=True)
3450
3491
 
3451
3492
 
3493
+ def run_verify_interaction_thrown_error_after_failed_evidence_terminal_blocker():
3494
+ tempdir = Path(tempfile.mkdtemp(prefix='riddle-proof-interaction-thrown-after-evidence-'))
3495
+ state_path = tempdir / 'state.json'
3496
+ try:
3497
+ state = base_state(tempdir, reference='before')
3498
+ state.update({
3499
+ 'recon_status': 'ready_for_proof_plan',
3500
+ 'author_status': 'ready',
3501
+ 'proof_plan_status': 'ready',
3502
+ 'implementation_status': 'changes_detected',
3503
+ 'verification_mode': 'interaction',
3504
+ 'server_path': '/',
3505
+ 'before_cdn': 'https://cdn.example.com/before-home.png',
3506
+ 'proof_plan': 'Run a diagnostic interaction script that emits failed proof evidence and then intentionally throws.',
3507
+ 'capture_script': "interactionThrownAfterFailedEvidence();",
3508
+ 'recon_results': {
3509
+ 'baselines': {'before': {'path': '/', 'url': 'https://cdn.example.com/before-home.png'}},
3510
+ },
3511
+ })
3512
+ write_state(state_path, state)
3513
+ os.environ['RIDDLE_PROOF_STATE_FILE'] = str(state_path)
3514
+
3515
+ fake = FakeRiddle()
3516
+ load_util_with_fake(fake)
3517
+ load_module('verify_interaction_thrown_error_after_failed_evidence_terminal_blocker', VERIFY_PATH)
3518
+ after_verify = json.loads(state_path.read_text())
3519
+
3520
+ assert after_verify['verify_status'] == 'capture_incomplete'
3521
+ assert after_verify['merge_recommendation'] == 'do-not-merge'
3522
+ assert after_verify['proof_assessment_request'] == {}
3523
+ capture_quality = after_verify['verify_decision_request']['capture_quality']
3524
+ assert capture_quality['decision'] == 'failed_interaction_capture'
3525
+ assert capture_quality['recommended_stage'] is None
3526
+ assert capture_quality['continue_with_stage'] is None
3527
+ assert capture_quality['blocking'] is True
3528
+ assert capture_quality['terminal_blocker'] is True
3529
+ capture_quality_text = json.dumps(capture_quality, sort_keys=True)
3530
+ assert 'intentional-riddle-proof-0823-thrown-error-after-failed-evidence' in capture_quality_text
3531
+ assert 'proofReady' in capture_quality_text
3532
+ assert after_verify['structured_interaction_capture_failure_summary']
3533
+ evidence = after_verify['evidence_bundle']['proof_evidence']
3534
+ if isinstance(evidence, list):
3535
+ evidence = next(
3536
+ record for record in evidence_records(evidence)
3537
+ if isinstance(record.get('checks'), dict) and record['checks'].get('proofReady') is False
3538
+ )
3539
+ assert evidence['checks']['passed'] is False
3540
+ assert evidence['checks']['success'] is False
3541
+ assert evidence['checks']['proofReady'] is False
3542
+ assert 'Structured interaction capture blocker' in after_verify['proof_summary']
3543
+ return {
3544
+ 'ok': True,
3545
+ 'decision': capture_quality['decision'],
3546
+ 'blocking': capture_quality['blocking'],
3547
+ }
3548
+ finally:
3549
+ shutil.rmtree(tempdir, ignore_errors=True)
3550
+
3551
+
3452
3552
  def run_verify_capture_retry_surfaces_script_timeout():
3453
3553
  tempdir = Path(tempfile.mkdtemp(prefix='riddle-proof-capture-timeout-'))
3454
3554
  state_path = tempdir / 'state.json'
@@ -3878,6 +3978,7 @@ if __name__ == '__main__':
3878
3978
  'verify_interaction_query_hash_pass_uses_proof_evidence_route': run_verify_interaction_query_hash_pass_uses_proof_evidence_route(),
3879
3979
  'verify_interaction_explicit_expected_url_blocks_dropped_terminal_route': run_verify_interaction_explicit_expected_url_blocks_dropped_terminal_route(),
3880
3980
  'verify_interaction_thrown_error_terminal_blocker': run_verify_interaction_thrown_error_terminal_blocker(),
3981
+ 'verify_interaction_thrown_error_after_failed_evidence_terminal_blocker': run_verify_interaction_thrown_error_after_failed_evidence_terminal_blocker(),
3881
3982
  'verify_capture_retry_surfaces_script_timeout': run_verify_capture_retry_surfaces_script_timeout(),
3882
3983
  'missing_baseline_guard': run_verify_missing_baseline(),
3883
3984
  'ship_supervisor_gate': run_ship_missing_supervisor_gate(),
@@ -97,6 +97,12 @@ CASES = [
97
97
  'function': 'run_verify_interaction_thrown_error_terminal_blocker',
98
98
  'expected_terminal': 'specific_blocker',
99
99
  },
100
+ {
101
+ 'name': 'interaction-thrown-error-after-failed-evidence-specific-blocker',
102
+ 'covers': ['thrown errors', 'proof-evidence-present', 'invalid browser evidence'],
103
+ 'function': 'run_verify_interaction_thrown_error_after_failed_evidence_terminal_blocker',
104
+ 'expected_terminal': 'specific_blocker',
105
+ },
100
106
  {
101
107
  'name': 'structured-proof-without-screenshot-pass',
102
108
  'covers': ['proof-evidence-present'],
File without changes