@riddledc/riddle-proof 0.8.59 → 0.8.61

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 (116) hide show
  1. package/dist/adapters/codex-exec-agent.d.cts +1 -0
  2. package/dist/adapters/codex-exec-agent.d.ts +1 -0
  3. package/dist/adapters/codex-exec-agent.js +3 -2
  4. package/dist/adapters/codex.d.cts +1 -0
  5. package/dist/adapters/codex.d.ts +1 -0
  6. package/dist/adapters/codex.js +3 -2
  7. package/dist/adapters/local-agent.d.cts +1 -0
  8. package/dist/adapters/local-agent.d.ts +1 -0
  9. package/dist/adapters/local-agent.js +3 -2
  10. package/dist/adapters/openclaw.d.cts +1 -0
  11. package/dist/adapters/openclaw.d.ts +1 -0
  12. package/dist/adapters/openclaw.js +6 -5
  13. package/dist/advanced/engine-harness.cjs +299 -43
  14. package/dist/advanced/engine-harness.d.cts +1 -0
  15. package/dist/advanced/engine-harness.d.ts +1 -0
  16. package/dist/advanced/engine-harness.js +6 -5
  17. package/dist/advanced/index.cjs +299 -43
  18. package/dist/advanced/index.d.cts +1 -0
  19. package/dist/advanced/index.d.ts +1 -0
  20. package/dist/advanced/index.js +7 -6
  21. package/dist/advanced/runner.cjs +202 -4
  22. package/dist/advanced/runner.d.cts +1 -0
  23. package/dist/advanced/runner.d.ts +1 -0
  24. package/dist/advanced/runner.js +6 -5
  25. package/dist/checkpoint.d.cts +1 -0
  26. package/dist/checkpoint.d.ts +1 -0
  27. package/dist/checkpoint.js +3 -2
  28. package/dist/{chunk-TTB3ZAVX.js → chunk-3FK5HZHK.js} +2 -2
  29. package/dist/{chunk-MOTQNIZX.js → chunk-FX2CB4MG.js} +1 -1
  30. package/dist/{chunk-GHBNDHG7.js → chunk-HD46EEUV.js} +50 -4
  31. package/dist/{chunk-2PKBTYOA.js → chunk-K6VYKOIM.js} +9 -4
  32. package/dist/{chunk-XSNMMAPJ.js → chunk-NQ5HPAZD.js} +4 -4
  33. package/dist/{chunk-KNPCWWF3.js → chunk-NXEAFQYZ.js} +16 -10
  34. package/dist/{chunk-CUBYSWZT.js → chunk-QGMSN34W.js} +51 -4
  35. package/dist/{chunk-RS4HJLJQ.js → chunk-QPKY767W.js} +1 -1
  36. package/dist/{chunk-UZIX7M7D.js → chunk-UEY5SJG5.js} +13 -9
  37. package/dist/{chunk-KG64Y5MC.js → chunk-WKIIJX3O.js} +12 -0
  38. package/dist/{chunk-JLOZTVXU.js → chunk-XKNJ5OE4.js} +2 -2
  39. package/dist/cli/index.js +9 -9
  40. package/dist/cli.cjs +512 -405
  41. package/dist/cli.js +9 -9
  42. package/dist/codex-exec-agent.d.cts +1 -0
  43. package/dist/codex-exec-agent.d.ts +1 -0
  44. package/dist/codex-exec-agent.js +3 -2
  45. package/dist/diagnostics.d.cts +1 -0
  46. package/dist/diagnostics.d.ts +1 -0
  47. package/dist/engine-harness.cjs +299 -43
  48. package/dist/engine-harness.d.cts +1 -0
  49. package/dist/engine-harness.d.ts +1 -0
  50. package/dist/engine-harness.js +6 -5
  51. package/dist/index.cjs +287 -170
  52. package/dist/index.d.cts +2 -2
  53. package/dist/index.d.ts +2 -2
  54. package/dist/index.js +21 -11
  55. package/dist/local-agent.d.cts +1 -0
  56. package/dist/local-agent.d.ts +1 -0
  57. package/dist/local-agent.js +3 -2
  58. package/dist/openclaw.d.cts +1 -0
  59. package/dist/openclaw.d.ts +1 -0
  60. package/dist/openclaw.js +6 -5
  61. package/dist/pr-comment.cjs +15 -3
  62. package/dist/pr-comment.js +2 -2
  63. package/dist/profile/index.d.cts +1 -0
  64. package/dist/profile/index.d.ts +1 -0
  65. package/dist/profile.d.cts +1 -0
  66. package/dist/profile.d.ts +1 -0
  67. package/dist/proof-session.d.cts +1 -0
  68. package/dist/proof-session.d.ts +1 -0
  69. package/dist/public-state.cjs +15 -0
  70. package/dist/public-state.d.cts +4 -1
  71. package/dist/public-state.d.ts +4 -1
  72. package/dist/public-state.js +7 -1
  73. package/dist/result.cjs +211 -4
  74. package/dist/result.d.cts +12 -1
  75. package/dist/result.d.ts +12 -1
  76. package/dist/result.js +6 -1
  77. package/dist/run-card.cjs +198 -40
  78. package/dist/run-card.d.cts +1 -0
  79. package/dist/run-card.d.ts +1 -0
  80. package/dist/run-card.js +4 -3
  81. package/dist/runner.cjs +202 -4
  82. package/dist/runner.d.cts +1 -0
  83. package/dist/runner.d.ts +1 -0
  84. package/dist/runner.js +6 -5
  85. package/dist/spec/checkpoint.d.cts +1 -0
  86. package/dist/spec/checkpoint.d.ts +1 -0
  87. package/dist/spec/checkpoint.js +3 -2
  88. package/dist/spec/index.cjs +235 -167
  89. package/dist/spec/index.d.cts +2 -2
  90. package/dist/spec/index.d.ts +2 -2
  91. package/dist/spec/index.js +17 -7
  92. package/dist/spec/public-state.cjs +15 -0
  93. package/dist/spec/public-state.d.cts +1 -1
  94. package/dist/spec/public-state.d.ts +1 -1
  95. package/dist/spec/public-state.js +7 -1
  96. package/dist/spec/result.cjs +209 -4
  97. package/dist/spec/result.d.cts +2 -1
  98. package/dist/spec/result.d.ts +2 -1
  99. package/dist/spec/result.js +6 -1
  100. package/dist/spec/run-card.cjs +198 -40
  101. package/dist/spec/run-card.d.cts +1 -0
  102. package/dist/spec/run-card.d.ts +1 -0
  103. package/dist/spec/run-card.js +4 -3
  104. package/dist/spec/state.cjs +207 -45
  105. package/dist/spec/state.d.cts +1 -0
  106. package/dist/spec/state.d.ts +1 -0
  107. package/dist/spec/state.js +5 -4
  108. package/dist/spec/types.d.cts +1 -0
  109. package/dist/spec/types.d.ts +1 -0
  110. package/dist/state.cjs +207 -45
  111. package/dist/state.d.cts +1 -0
  112. package/dist/state.d.ts +1 -0
  113. package/dist/state.js +5 -4
  114. package/dist/types.d.cts +14 -0
  115. package/dist/types.d.ts +14 -0
  116. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig, CodexJsonRequest, CodexJsonResult, CodexJsonRunner, createCodexExecAgentAdapter, createCodexExecJsonRunner, runCodexExecAgentDoctor } from '../codex-exec-agent.cjs';
2
2
  import '../engine-harness-LBfqbFSe.cjs';
3
3
  import '../types.cjs';
4
+ import '../public-state.cjs';
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig, CodexJsonRequest, CodexJsonResult, CodexJsonRunner, createCodexExecAgentAdapter, createCodexExecJsonRunner, runCodexExecAgentDoctor } from '../codex-exec-agent.js';
2
2
  import '../engine-harness-CMACHP6A.js';
3
3
  import '../types.js';
4
+ import '../public-state.js';
@@ -3,8 +3,9 @@ import {
3
3
  createCodexExecAgentAdapter,
4
4
  createCodexExecJsonRunner,
5
5
  runCodexExecAgentDoctor
6
- } from "../chunk-RS4HJLJQ.js";
7
- import "../chunk-CUBYSWZT.js";
6
+ } from "../chunk-QPKY767W.js";
7
+ import "../chunk-QGMSN34W.js";
8
+ import "../chunk-WKIIJX3O.js";
8
9
  import "../chunk-MLKGABMK.js";
9
10
  export {
10
11
  createCodexExecAgentAdapter,
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig, CodexJsonRequest, CodexJsonResult, CodexJsonRunner, createCodexExecAgentAdapter, createCodexExecJsonRunner, runCodexExecAgentDoctor } from '../codex-exec-agent.cjs';
2
2
  import '../engine-harness-LBfqbFSe.cjs';
3
3
  import '../types.cjs';
4
+ import '../public-state.cjs';
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig, CodexJsonRequest, CodexJsonResult, CodexJsonRunner, createCodexExecAgentAdapter, createCodexExecJsonRunner, runCodexExecAgentDoctor } from '../codex-exec-agent.js';
2
2
  import '../engine-harness-CMACHP6A.js';
3
3
  import '../types.js';
4
+ import '../public-state.js';
@@ -3,8 +3,9 @@ import {
3
3
  createCodexExecAgentAdapter,
4
4
  createCodexExecJsonRunner,
5
5
  runCodexExecAgentDoctor
6
- } from "../chunk-RS4HJLJQ.js";
7
- import "../chunk-CUBYSWZT.js";
6
+ } from "../chunk-QPKY767W.js";
7
+ import "../chunk-QGMSN34W.js";
8
+ import "../chunk-WKIIJX3O.js";
8
9
  import "../chunk-MLKGABMK.js";
9
10
  export {
10
11
  createCodexExecAgentAdapter,
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig as LocalAgentConfig, CodexJsonRequest as LocalAgentJsonRequest, CodexJsonResult as LocalAgentJsonResult, CodexJsonRunner as LocalAgentJsonRunner, createCodexExecAgentAdapter as createLocalAgentAdapter, createCodexExecJsonRunner as createLocalAgentJsonRunner, runCodexExecAgentDoctor as runLocalAgentDoctor } from '../codex-exec-agent.cjs';
2
2
  import '../engine-harness-LBfqbFSe.cjs';
3
3
  import '../types.cjs';
4
+ import '../public-state.cjs';
@@ -1,3 +1,4 @@
1
1
  export { CodexExecAgentConfig as LocalAgentConfig, CodexJsonRequest as LocalAgentJsonRequest, CodexJsonResult as LocalAgentJsonResult, CodexJsonRunner as LocalAgentJsonRunner, createCodexExecAgentAdapter as createLocalAgentAdapter, createCodexExecJsonRunner as createLocalAgentJsonRunner, runCodexExecAgentDoctor as runLocalAgentDoctor } from '../codex-exec-agent.js';
2
2
  import '../engine-harness-CMACHP6A.js';
3
3
  import '../types.js';
4
+ import '../public-state.js';
@@ -3,8 +3,9 @@ import {
3
3
  createCodexExecAgentAdapter,
4
4
  createCodexExecJsonRunner,
5
5
  runCodexExecAgentDoctor
6
- } from "../chunk-RS4HJLJQ.js";
7
- import "../chunk-CUBYSWZT.js";
6
+ } from "../chunk-QPKY767W.js";
7
+ import "../chunk-QGMSN34W.js";
8
+ import "../chunk-WKIIJX3O.js";
8
9
  import "../chunk-MLKGABMK.js";
9
10
  export {
10
11
  createCodexExecAgentAdapter as createLocalAgentAdapter,
@@ -1,2 +1,3 @@
1
1
  export { OpenClawProofedChangeParams, openClawIntegrationContext, parseOpenClawAssertions, parseOpenClawJsonObjectOrArray, toRiddleProofRunParams } from '../openclaw.cjs';
2
2
  import '../types.cjs';
3
+ import '../public-state.cjs';
@@ -1,2 +1,3 @@
1
1
  export { OpenClawProofedChangeParams, openClawIntegrationContext, parseOpenClawAssertions, parseOpenClawJsonObjectOrArray, toRiddleProofRunParams } from '../openclaw.js';
2
2
  import '../types.js';
3
+ import '../public-state.js';
@@ -3,11 +3,12 @@ import {
3
3
  parseOpenClawAssertions,
4
4
  parseOpenClawJsonObjectOrArray,
5
5
  toRiddleProofRunParams
6
- } from "../chunk-TTB3ZAVX.js";
7
- import "../chunk-UZIX7M7D.js";
8
- import "../chunk-KNPCWWF3.js";
9
- import "../chunk-MOTQNIZX.js";
10
- import "../chunk-CUBYSWZT.js";
6
+ } from "../chunk-3FK5HZHK.js";
7
+ import "../chunk-UEY5SJG5.js";
8
+ import "../chunk-NXEAFQYZ.js";
9
+ import "../chunk-FX2CB4MG.js";
10
+ import "../chunk-QGMSN34W.js";
11
+ import "../chunk-WKIIJX3O.js";
11
12
  import "../chunk-MLKGABMK.js";
12
13
  export {
13
14
  openClawIntegrationContext,
@@ -1609,7 +1609,7 @@ function normalizeStageRequest(state, requestedAdvanceStage) {
1609
1609
  if (!state?.recon_results || ["needs_agent_decision", "needs_supervisor_judgment"].includes(state?.recon_status || "")) return "recon";
1610
1610
  return null;
1611
1611
  }
1612
- function stringValue(value) {
1612
+ function stringValue2(value) {
1613
1613
  return typeof value === "string" && value.trim() ? value.trim() : "";
1614
1614
  }
1615
1615
  function commandResult(command, args, cwd, timeout = 6e4) {
@@ -1632,7 +1632,7 @@ function repoDirForSync(state) {
1632
1632
  state?.repo_dir,
1633
1633
  state?.after_worktree,
1634
1634
  state?.before_worktree
1635
- ].map(stringValue).filter(Boolean);
1635
+ ].map(stringValue2).filter(Boolean);
1636
1636
  return candidates.find((candidate) => (0, import_node_fs2.existsSync)(import_node_path2.default.join(candidate, ".git"))) || "";
1637
1637
  }
1638
1638
  function parseWorktreeList(output) {
@@ -1752,32 +1752,32 @@ function baseCheckoutReport(repoDir, baseBranch, updateRequested, updateAllowed)
1752
1752
  return report;
1753
1753
  }
1754
1754
  function normalizeGhPrStatus(value) {
1755
- const status = stringValue(value).toLowerCase();
1755
+ const status = stringValue2(value).toLowerCase();
1756
1756
  if (status === "merged") return "merged";
1757
1757
  if (status === "open") return "open";
1758
1758
  if (status === "closed") return "closed";
1759
1759
  return status || "unknown";
1760
1760
  }
1761
1761
  function prRefFromState(state) {
1762
- return stringValue(state?.pr_number) || stringValue(state?.pr_url);
1762
+ return stringValue2(state?.pr_number) || stringValue2(state?.pr_url);
1763
1763
  }
1764
1764
  function prNumberFromUrl(url) {
1765
1765
  const match = url.match(/\/pull\/(\d+)(?:$|[?#])/);
1766
1766
  return match?.[1] || "";
1767
1767
  }
1768
1768
  function normalizePrState(raw, state, checkedAt = (/* @__PURE__ */ new Date()).toISOString()) {
1769
- const mergeCommit = typeof raw?.mergeCommit === "object" && raw.mergeCommit ? stringValue(raw.mergeCommit.oid) : stringValue(raw?.mergeCommit);
1770
- const url = stringValue(raw?.url) || stringValue(state?.pr_url);
1769
+ const mergeCommit = typeof raw?.mergeCommit === "object" && raw.mergeCommit ? stringValue2(raw.mergeCommit.oid) : stringValue2(raw?.mergeCommit);
1770
+ const url = stringValue2(raw?.url) || stringValue2(state?.pr_url);
1771
1771
  return {
1772
1772
  status: normalizeGhPrStatus(raw?.state),
1773
1773
  pr_url: url || null,
1774
1774
  pr_number: String(raw?.number || state?.pr_number || prNumberFromUrl(url) || ""),
1775
- repo: stringValue(state?.repo) || null,
1776
- head_branch: stringValue(raw?.headRefName) || stringValue(state?.target_branch) || stringValue(state?.branch) || null,
1777
- base_branch: stringValue(raw?.baseRefName) || stringValue(state?.base_branch) || "main",
1775
+ repo: stringValue2(state?.repo) || null,
1776
+ head_branch: stringValue2(raw?.headRefName) || stringValue2(state?.target_branch) || stringValue2(state?.branch) || null,
1777
+ base_branch: stringValue2(raw?.baseRefName) || stringValue2(state?.base_branch) || "main",
1778
1778
  merge_commit: mergeCommit || null,
1779
- merged_at: stringValue(raw?.mergedAt) || null,
1780
- closed_at: stringValue(raw?.closedAt) || null,
1779
+ merged_at: stringValue2(raw?.mergedAt) || null,
1780
+ closed_at: stringValue2(raw?.closedAt) || null,
1781
1781
  checked_at: checkedAt,
1782
1782
  source: "gh"
1783
1783
  };
@@ -1794,7 +1794,7 @@ function cleanupMergedProofRun(state, repoDir, params, prState) {
1794
1794
  branch_delete_errors: [],
1795
1795
  pruned: false
1796
1796
  };
1797
- const baseBranch = stringValue(prState.base_branch) || stringValue(state?.base_branch) || "main";
1797
+ const baseBranch = stringValue2(prState.base_branch) || stringValue2(state?.base_branch) || "main";
1798
1798
  let fetchedBase = params.fetch_base === false;
1799
1799
  if (params.fetch_base !== false && baseBranch) {
1800
1800
  const fetch = commandResult("git", ["fetch", "origin", baseBranch], repoDir, 12e4);
@@ -1812,7 +1812,7 @@ function cleanupMergedProofRun(state, repoDir, params, prState) {
1812
1812
  }
1813
1813
  const removed = [];
1814
1814
  const removeErrors = [];
1815
- for (const candidate of [state?.before_worktree, state?.after_worktree].map(stringValue).filter(Boolean)) {
1815
+ for (const candidate of [state?.before_worktree, state?.after_worktree].map(stringValue2).filter(Boolean)) {
1816
1816
  if (!(0, import_node_fs2.existsSync)(candidate) || import_node_path2.default.resolve(candidate) === import_node_path2.default.resolve(repoDir)) continue;
1817
1817
  const remove = commandResult("git", ["worktree", "remove", "--force", candidate], repoDir, 12e4);
1818
1818
  if (remove.ok) {
@@ -1823,7 +1823,7 @@ function cleanupMergedProofRun(state, repoDir, params, prState) {
1823
1823
  }
1824
1824
  cleanup.worktrees_removed = removed;
1825
1825
  cleanup.worktree_remove_errors = removeErrors;
1826
- const afterBranch = stringValue(state?.after_worktree_branch);
1826
+ const afterBranch = stringValue2(state?.after_worktree_branch);
1827
1827
  if (afterBranch.startsWith("riddle-proof/")) {
1828
1828
  const deleted = commandResult("git", ["branch", "-D", afterBranch], repoDir, 6e4);
1829
1829
  if (deleted.ok) {
@@ -1859,7 +1859,7 @@ function syncPrLifecycle(statePath, params) {
1859
1859
  const prState2 = {
1860
1860
  status: missingPr ? "orphaned" : "unavailable",
1861
1861
  pr_url: state.pr_url || null,
1862
- pr_number: String(state.pr_number || prNumberFromUrl(stringValue(state.pr_url)) || ""),
1862
+ pr_number: String(state.pr_number || prNumberFromUrl(stringValue2(state.pr_url)) || ""),
1863
1863
  repo: state.repo || null,
1864
1864
  head_branch: state.target_branch || state.branch || null,
1865
1865
  base_branch: state.base_branch || "main",
@@ -1888,7 +1888,7 @@ function syncPrLifecycle(statePath, params) {
1888
1888
  const prState2 = {
1889
1889
  status: "unavailable",
1890
1890
  pr_url: state.pr_url || null,
1891
- pr_number: String(state.pr_number || prNumberFromUrl(stringValue(state.pr_url)) || ""),
1891
+ pr_number: String(state.pr_number || prNumberFromUrl(stringValue2(state.pr_url)) || ""),
1892
1892
  repo: state.repo || null,
1893
1893
  head_branch: state.target_branch || state.branch || null,
1894
1894
  base_branch: state.base_branch || "main",
@@ -2669,8 +2669,8 @@ ${implementRes.stdout || ""}
2669
2669
  ${implementRes.stderr || ""}`;
2670
2670
  if (implementError.includes("No implementation detected")) {
2671
2671
  const implementationState = readState(config.statePath) || {};
2672
- const implementationSummary = stringValue(implementationState?.implementation_summary) || null;
2673
- const implementationDetectionSummary = stringValue(implementationState?.implementation_detection_summary) || null;
2672
+ const implementationSummary = stringValue2(implementationState?.implementation_summary) || null;
2673
+ const implementationDetectionSummary = stringValue2(implementationState?.implementation_detection_summary) || null;
2674
2674
  const implementationDetection = implementationState?.implementation_detection && typeof implementationState.implementation_detection === "object" && !Array.isArray(implementationState.implementation_detection) ? implementationState.implementation_detection : null;
2675
2675
  recordAttempt("implement", "checkpoint", "Implementation checkpoint found no material code changes yet.", {
2676
2676
  checkpoint: "implement_changes_missing",
@@ -2788,14 +2788,14 @@ ${implementRes.stderr || ""}`;
2788
2788
  const captureQuality = verifyDecisionRequest2?.capture_quality || {};
2789
2789
  const conclusiveVerifyBlockers2 = proofAssessmentHardBlockersForState({
2790
2790
  ...failedVerifyState,
2791
- structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest2?.structured_interaction_capture_failure_summary) || stringValue(failedVerifyState?.structured_interaction_capture_failure_summary) || void 0,
2792
- structured_interaction_failure_summary: stringValue(verifyDecisionRequest2?.structured_interaction_failure_summary) || stringValue(failedVerifyState?.structured_interaction_failure_summary) || void 0
2791
+ structured_interaction_capture_failure_summary: stringValue2(verifyDecisionRequest2?.structured_interaction_capture_failure_summary) || stringValue2(failedVerifyState?.structured_interaction_capture_failure_summary) || void 0,
2792
+ structured_interaction_failure_summary: stringValue2(verifyDecisionRequest2?.structured_interaction_failure_summary) || stringValue2(failedVerifyState?.structured_interaction_failure_summary) || void 0
2793
2793
  });
2794
- const structuredInteractionFailureSummary2 = stringValue(verifyDecisionRequest2?.structured_interaction_capture_failure_summary) || stringValue(verifyDecisionRequest2?.structured_interaction_failure_summary) || stringValue(failedVerifyState?.structured_interaction_capture_failure_summary) || stringValue(failedVerifyState?.structured_interaction_failure_summary) || stringValue(conclusiveVerifyBlockers2[0]);
2794
+ const structuredInteractionFailureSummary2 = stringValue2(verifyDecisionRequest2?.structured_interaction_capture_failure_summary) || stringValue2(verifyDecisionRequest2?.structured_interaction_failure_summary) || stringValue2(failedVerifyState?.structured_interaction_capture_failure_summary) || stringValue2(failedVerifyState?.structured_interaction_failure_summary) || stringValue2(conclusiveVerifyBlockers2[0]);
2795
2795
  const captureTerminalBlocker = failedVerifyStatus === "capture_error" || conclusiveVerifyBlockers2.length > 0 || Boolean(structuredInteractionFailureSummary2) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
2796
- const terminalCaptureQualitySummary = captureQuality?.terminal_blocker === true || captureQuality?.blocking === true ? stringValue(captureQuality?.summary) : "";
2796
+ const terminalCaptureQualitySummary = captureQuality?.terminal_blocker === true || captureQuality?.blocking === true ? stringValue2(captureQuality?.summary) : "";
2797
2797
  const checkpointName = captureTerminalBlocker ? "verify_capture_blocked" : "verify_capture_retry";
2798
- const summary = terminalCaptureQualitySummary || structuredInteractionFailureSummary2 || stringValue(verifyDecisionRequest2?.summary) || stringValue(failedVerifyState?.verify_summary) || stringValue(failedVerifyState?.proof_summary) || stringValue(verifyRes.error) || "Verify capture failed before the evidence could be judged.";
2798
+ const summary = terminalCaptureQualitySummary || structuredInteractionFailureSummary2 || stringValue2(verifyDecisionRequest2?.summary) || stringValue2(failedVerifyState?.verify_summary) || stringValue2(failedVerifyState?.proof_summary) || stringValue2(verifyRes.error) || "Verify capture failed before the evidence could be judged.";
2799
2799
  const failedVerifyDetails = {
2800
2800
  executed,
2801
2801
  verifyStatus: failedVerifyStatus,
@@ -2873,10 +2873,10 @@ ${implementRes.stderr || ""}`;
2873
2873
  };
2874
2874
  const conclusiveVerifyBlockers = proofAssessmentHardBlockersForState({
2875
2875
  ...state,
2876
- structured_interaction_capture_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue(state?.structured_interaction_capture_failure_summary) || void 0,
2877
- structured_interaction_failure_summary: stringValue(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue(state?.structured_interaction_failure_summary) || void 0
2876
+ structured_interaction_capture_failure_summary: stringValue2(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue2(state?.structured_interaction_capture_failure_summary) || void 0,
2877
+ structured_interaction_failure_summary: stringValue2(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue2(state?.structured_interaction_failure_summary) || void 0
2878
2878
  });
2879
- 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]);
2879
+ const structuredInteractionFailureSummary = stringValue2(verifyDecisionRequest?.structured_interaction_capture_failure_summary) || stringValue2(verifyDecisionRequest?.structured_interaction_failure_summary) || stringValue2(state?.structured_interaction_capture_failure_summary) || stringValue2(state?.structured_interaction_failure_summary) || stringValue2(conclusiveVerifyBlockers[0]);
2880
2880
  if (verifyStatus !== "evidence_captured") {
2881
2881
  const captureQuality = verifyDecisionRequest?.capture_quality || {};
2882
2882
  const captureTerminalBlocker = conclusiveVerifyBlockers.length > 0 || Boolean(structuredInteractionFailureSummary) || captureQuality?.terminal_blocker === true || captureQuality?.blocking === true;
@@ -2888,9 +2888,9 @@ ${implementRes.stderr || ""}`;
2888
2888
  });
2889
2889
  state = readState(config.statePath);
2890
2890
  }
2891
- const terminalCaptureQualitySummary = captureQuality?.terminal_blocker === true || captureQuality?.blocking === true ? stringValue(captureQuality?.summary) : "";
2891
+ const terminalCaptureQualitySummary = captureQuality?.terminal_blocker === true || captureQuality?.blocking === true ? stringValue2(captureQuality?.summary) : "";
2892
2892
  const checkpointName = captureTerminalBlocker ? "verify_capture_blocked" : "verify_capture_retry";
2893
- const summary = terminalCaptureQualitySummary || structuredInteractionFailureSummary || stringValue(proofAssessment.summary) || "Verify ran, but the proof packet still needs internal capture-plan work before it should ship.";
2893
+ const summary = terminalCaptureQualitySummary || structuredInteractionFailureSummary || stringValue2(proofAssessment.summary) || "Verify ran, but the proof packet still needs internal capture-plan work before it should ship.";
2894
2894
  recordAttempt("verify", "checkpoint", summary, {
2895
2895
  autoApproved: verifyRes.autoApproved || false,
2896
2896
  checkpoint: checkpointName,
@@ -3419,6 +3419,167 @@ var import_node_fs3 = require("fs");
3419
3419
  var import_node_path3 = __toESM(require("path"), 1);
3420
3420
  var import_node_crypto3 = __toESM(require("crypto"), 1);
3421
3421
 
3422
+ // src/public-state.ts
3423
+ function riddleProofPublicStateAllowsClaim(summary, claim) {
3424
+ return !summary?.prohibited_claims.includes(claim);
3425
+ }
3426
+ function riddleProofPublicStateAllowsMergeRecommendation(summary) {
3427
+ return riddleProofPublicStateAllowsClaim(summary, "merge_ready") && riddleProofPublicStateAllowsClaim(summary, "sync_allowed");
3428
+ }
3429
+ function riddleProofPublicStateMergeRecommendation(summary, recommendation) {
3430
+ return recommendation && riddleProofPublicStateAllowsMergeRecommendation(summary) ? recommendation : void 0;
3431
+ }
3432
+ function asRecord(value) {
3433
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
3434
+ }
3435
+ function stringValue(value) {
3436
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
3437
+ }
3438
+ function booleanValue(value) {
3439
+ return typeof value === "boolean" ? value : void 0;
3440
+ }
3441
+ function numberValue(value) {
3442
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
3443
+ }
3444
+ function firstStringValue(...values) {
3445
+ for (const value of values) {
3446
+ const text = stringValue(value);
3447
+ if (text) return text;
3448
+ }
3449
+ return void 0;
3450
+ }
3451
+ function firstBooleanValue(...values) {
3452
+ for (const value of values) {
3453
+ const bool = booleanValue(value);
3454
+ if (typeof bool === "boolean") return bool;
3455
+ }
3456
+ return void 0;
3457
+ }
3458
+ function firstRecordValue(...values) {
3459
+ for (const value of values) {
3460
+ const record = asRecord(value);
3461
+ if (Object.keys(record).length) return record;
3462
+ }
3463
+ return void 0;
3464
+ }
3465
+ function countValue(value) {
3466
+ const number = numberValue(value);
3467
+ return typeof number === "number" && number > 0 ? Math.trunc(number) : 0;
3468
+ }
3469
+ function checkpointSummaryFrom(...values) {
3470
+ const record = firstRecordValue(...values);
3471
+ if (!record) return void 0;
3472
+ const accepted = countValue(record.response_count);
3473
+ const rejected = countValue(record.rejected_response_count);
3474
+ const ignored = countValue(record.ignored_response_count);
3475
+ const duplicate = countValue(record.duplicate_response_count);
3476
+ const summary = {
3477
+ pending: booleanValue(record.pending),
3478
+ accepted_response_count: accepted,
3479
+ rejected_response_count: rejected,
3480
+ ignored_response_count: ignored,
3481
+ duplicate_response_count: duplicate,
3482
+ latest_decision: stringValue(record.latest_decision),
3483
+ audit_disclosure_required: rejected > 0 || ignored > 0 || duplicate > 0
3484
+ };
3485
+ return Object.values(summary).some((value) => typeof value !== "undefined") ? summary : void 0;
3486
+ }
3487
+ function uniqueStrings(values) {
3488
+ return [...new Set(values.filter(Boolean))];
3489
+ }
3490
+ function summarizeRiddleProofPublicState(input) {
3491
+ const record = asRecord(input);
3492
+ const runCard = asRecord(record.run_card);
3493
+ const stopCondition = asRecord(runCard.stop_condition);
3494
+ const raw = asRecord(record.raw);
3495
+ const request = asRecord(record.request);
3496
+ const requestMetadata = asRecord(record.request_metadata);
3497
+ const prState = asRecord(record.pr_state);
3498
+ const handoff = asRecord(record.pr_handoff_policy);
3499
+ const handoffState = stringValue(handoff.state);
3500
+ const status = firstStringValue(record.status, stopCondition.status);
3501
+ const ok = booleanValue(record.ok) ?? null;
3502
+ const shipMode = firstStringValue(request.ship_mode, requestMetadata.ship_mode, record.ship_mode, handoff.ship_mode);
3503
+ const explicitShippingDisabled = firstBooleanValue(
3504
+ record.shipping_disabled,
3505
+ stopCondition.shipping_disabled,
3506
+ raw.shipping_disabled,
3507
+ handoff.shipping_disabled
3508
+ );
3509
+ const shippingDisabled = explicitShippingDisabled === true || shipMode === "none" || handoffState === "proof_complete_ship_disabled";
3510
+ const explicitShipAuthorized = firstBooleanValue(
3511
+ record.ship_authorized,
3512
+ stopCondition.ship_authorized,
3513
+ raw.ship_authorized
3514
+ );
3515
+ const authorizationEvidence = Boolean(
3516
+ status === "shipped" || record.marked_ready === true || stringValue(prState.status) === "merged" || record.merge_commit || record.merged_at
3517
+ );
3518
+ const shipAuthorizedBeforeHold = explicitShipAuthorized ?? authorizationEvidence;
3519
+ const explicitShipHeld = firstBooleanValue(record.ship_held, stopCondition.ship_held, raw.ship_held);
3520
+ const inferredHeld = status === "ready_to_ship" && shippingDisabled && !shipAuthorizedBeforeHold;
3521
+ const shipHeld = explicitShipHeld === true || inferredHeld;
3522
+ const shipAuthorized = shipHeld ? false : shipAuthorizedBeforeHold === true;
3523
+ const proofComplete = Boolean(
3524
+ status === "ready_to_ship" || status === "shipped" || status === "completed" || status === "passed" || ok === true || handoff.proof_complete === true
3525
+ );
3526
+ const checkpointSummary = checkpointSummaryFrom(
3527
+ record.checkpoint_summary,
3528
+ stopCondition.checkpoint_summary,
3529
+ asRecord(record.details).checkpoint_summary,
3530
+ asRecord(raw.details).checkpoint_summary
3531
+ );
3532
+ const blockedOrWaiting = status === "blocked" || status === "failed" || status === "awaiting_checkpoint" || handoffState === "proof_blocked" || handoffState === "proof_review_required" || handoffState === "proof_failed" || handoffState === "proof_checkpoint_required";
3533
+ const proofPassed = Boolean(proofComplete && !blockedOrWaiting);
3534
+ const explicitMergeReady = firstBooleanValue(record.merge_ready, stopCondition.merge_ready, raw.merge_ready, handoff.merge_ready);
3535
+ const normalPrAllowed = firstBooleanValue(record.normal_pr_allowed, raw.normal_pr_allowed, handoff.normal_pr_allowed);
3536
+ const baseHandoffAllowed = !blockedOrWaiting && !shipHeld && !shippingDisabled;
3537
+ const mergeReady = baseHandoffAllowed && normalPrAllowed !== false && (explicitMergeReady ?? shipAuthorized);
3538
+ const syncAllowed = mergeReady;
3539
+ let policyState = "unknown";
3540
+ if (status === "awaiting_checkpoint" || handoffState === "proof_checkpoint_required") policyState = "awaiting_checkpoint";
3541
+ else if (status === "failed" || handoffState === "proof_failed") policyState = "proof_failed";
3542
+ else if (status === "blocked" || handoffState === "proof_blocked" || handoffState === "proof_review_required") policyState = "proof_blocked";
3543
+ else if (handoffState === "proof_complete_ship_disabled") policyState = "proof_complete_ship_disabled";
3544
+ else if (proofComplete && shipHeld && !shipAuthorized) policyState = "proof_passed_ship_held";
3545
+ else if (proofComplete && shippingDisabled && !shipAuthorized) policyState = "proof_complete_ship_disabled";
3546
+ else if (shipAuthorized) policyState = "ship_authorized";
3547
+ else if (proofPassed) policyState = "proof_passed";
3548
+ else if (status === "running") policyState = "proof_in_progress";
3549
+ const requiredDisclosures = [];
3550
+ if (shipHeld) requiredDisclosures.push("ship_held");
3551
+ if (shippingDisabled) requiredDisclosures.push("shipping_disabled");
3552
+ if (checkpointSummary?.audit_disclosure_required) requiredDisclosures.push("checkpoint_audit_counters");
3553
+ if (status === "awaiting_checkpoint" || handoffState === "proof_checkpoint_required") requiredDisclosures.push("checkpoint_required");
3554
+ const prohibitedClaims = [];
3555
+ if (!shipAuthorized || shipHeld || shippingDisabled) prohibitedClaims.push("ship_authorized", "shipped");
3556
+ if (!mergeReady) prohibitedClaims.push("merge_ready");
3557
+ if (!syncAllowed) prohibitedClaims.push("sync_allowed");
3558
+ if (blockedOrWaiting) {
3559
+ prohibitedClaims.push("proof_passed", "ready_to_ship");
3560
+ }
3561
+ if (checkpointSummary?.audit_disclosure_required) {
3562
+ prohibitedClaims.push("all_checkpoint_responses_accepted");
3563
+ }
3564
+ const resultLabel = policyState === "awaiting_checkpoint" ? "checkpoint required" : policyState === "proof_blocked" ? "blocked" : policyState === "proof_failed" ? "failed" : policyState === "proof_complete_ship_disabled" ? "proof complete; shipping disabled" : policyState === "proof_passed_ship_held" ? "proof passed; ship held" : policyState === "ship_authorized" ? status === "shipped" ? "shipped" : "ship authorized" : policyState === "proof_passed" ? "passed" : policyState === "proof_in_progress" ? "running" : status || "recorded";
3565
+ return {
3566
+ status,
3567
+ ok,
3568
+ policy_state: policyState,
3569
+ result_label: resultLabel,
3570
+ proof_complete: proofComplete,
3571
+ proof_passed: proofPassed,
3572
+ ship_held: shipHeld,
3573
+ shipping_disabled: shippingDisabled,
3574
+ ship_authorized: shipAuthorized,
3575
+ merge_ready: mergeReady,
3576
+ sync_allowed: syncAllowed,
3577
+ checkpoint_summary: checkpointSummary,
3578
+ required_disclosures: uniqueStrings(requiredDisclosures),
3579
+ prohibited_claims: uniqueStrings(prohibitedClaims)
3580
+ };
3581
+ }
3582
+
3422
3583
  // src/result.ts
3423
3584
  function isTerminalStatus(status) {
3424
3585
  return status === "blocked" || status === "failed" || status === "ready_to_ship" || status === "shipped" || status === "completed";
@@ -3593,6 +3754,37 @@ function applyTerminalMetadata(state, metadata) {
3593
3754
  if (typeof metadata.finalized === "boolean") state.finalized = metadata.finalized;
3594
3755
  return state;
3595
3756
  }
3757
+ function publicStateForRunState(input) {
3758
+ const state = input.state;
3759
+ const status = input.status || state.status;
3760
+ const raw = recordValue(input.raw) || {};
3761
+ const extendedState = state;
3762
+ const terminalOk = isTerminalStatus(status) ? state.ok : void 0;
3763
+ return summarizeRiddleProofPublicState(compactRecord({
3764
+ status,
3765
+ ok: terminalOk,
3766
+ request: state.request,
3767
+ pr_state: state.pr_state,
3768
+ marked_ready: state.marked_ready,
3769
+ ship_held: state.ship_held,
3770
+ shipping_disabled: state.shipping_disabled,
3771
+ ship_authorized: state.ship_authorized,
3772
+ ship_mode: state.request?.ship_mode,
3773
+ merge_commit: state.merge_commit,
3774
+ merged_at: state.merged_at,
3775
+ checkpoint_summary: state.checkpoint_summary,
3776
+ pr_handoff_policy: recordValue(extendedState.pr_handoff_policy),
3777
+ merge_ready: extendedState.merge_ready,
3778
+ normal_pr_allowed: extendedState.normal_pr_allowed,
3779
+ raw: Object.keys(raw).length ? raw : void 0
3780
+ }));
3781
+ }
3782
+ function publicMergeRecommendationForRunState(input) {
3783
+ return riddleProofPublicStateMergeRecommendation(
3784
+ publicStateForRunState(input),
3785
+ input.state.merge_recommendation
3786
+ );
3787
+ }
3596
3788
  function shipControlStateFor(input) {
3597
3789
  const state = input.state;
3598
3790
  const status = input.status || state.status;
@@ -3641,6 +3833,11 @@ function createRunResult(input) {
3641
3833
  state.ok = ok;
3642
3834
  if (isProtectedFinalStatus(status)) state.finalized = true;
3643
3835
  applyShipControlState(state, { status, raw: input.raw });
3836
+ const publicState = publicStateForRunState({ state, status, raw: input.raw });
3837
+ const publicMergeRecommendation = riddleProofPublicStateMergeRecommendation(
3838
+ publicState,
3839
+ state.merge_recommendation
3840
+ );
3644
3841
  return compactRecord({
3645
3842
  ok,
3646
3843
  status,
@@ -3658,9 +3855,12 @@ function createRunResult(input) {
3658
3855
  pr_state: state.pr_state,
3659
3856
  marked_ready: state.marked_ready,
3660
3857
  left_draft: state.left_draft,
3661
- ship_held: state.ship_held,
3662
- shipping_disabled: state.shipping_disabled,
3663
- ship_authorized: state.ship_authorized,
3858
+ result_label: publicState.result_label,
3859
+ ship_held: publicState.ship_held,
3860
+ shipping_disabled: publicState.shipping_disabled,
3861
+ ship_authorized: publicState.ship_authorized,
3862
+ merge_ready: publicState.merge_ready,
3863
+ sync_allowed: publicState.sync_allowed,
3664
3864
  ci_status: state.ci_status,
3665
3865
  ship_commit: state.ship_commit,
3666
3866
  ship_remote_head: state.ship_remote_head,
@@ -3674,7 +3874,8 @@ function createRunResult(input) {
3674
3874
  cleanup_report: state.cleanup_report,
3675
3875
  notification: state.notification,
3676
3876
  proof_decision: state.proof_decision,
3677
- merge_recommendation: state.merge_recommendation,
3877
+ merge_recommendation: publicMergeRecommendation,
3878
+ public_state: publicState,
3678
3879
  finalized: state.finalized,
3679
3880
  blocker: state.blocker,
3680
3881
  checkpoint_packet: state.checkpoint_packet,
@@ -4554,7 +4755,8 @@ function createRiddleProofRunCard(state, input = {}) {
4554
4755
  const visualDelta = visualDeltaFrom({ fullRiddleState: fullState, runState: state });
4555
4756
  const artifacts = artifactsFrom({ fullRiddleState: fullState, runState: state });
4556
4757
  const viewportMatrix = viewportMatrixFrom({ fullRiddleState: fullState, runState: state });
4557
- const shipControl = shipControlStateFor({ state });
4758
+ const publicState = publicStateForRunState({ state, status: state.status });
4759
+ const publicMergeRecommendation = publicMergeRecommendationForRunState({ state, status: state.status });
4558
4760
  return {
4559
4761
  version: RIDDLE_PROOF_RUN_CARD_VERSION,
4560
4762
  run_id: state.run_id || "unknown",
@@ -4608,14 +4810,18 @@ function createRiddleProofRunCard(state, input = {}) {
4608
4810
  stop_condition: compactRecord({
4609
4811
  status: state.status,
4610
4812
  terminal: isTerminalStatus(state.status),
4611
- ship_held: shipControl.ship_held,
4612
- shipping_disabled: shipControl.shipping_disabled,
4613
- ship_authorized: shipControl.ship_authorized,
4813
+ result_label: publicState.result_label,
4814
+ ship_held: publicState.ship_held,
4815
+ shipping_disabled: publicState.shipping_disabled,
4816
+ ship_authorized: publicState.ship_authorized,
4817
+ merge_ready: publicState.merge_ready,
4818
+ sync_allowed: publicState.sync_allowed,
4614
4819
  blocker_code: state.blocker?.code || null,
4615
4820
  blocker_message: state.blocker?.message || null,
4616
4821
  proof_decision: state.proof_decision,
4617
- merge_recommendation: state.merge_recommendation,
4618
- monitor_should_continue: !isTerminalStatus(state.status)
4822
+ merge_recommendation: publicMergeRecommendation,
4823
+ monitor_should_continue: !isTerminalStatus(state.status),
4824
+ public_state: publicState
4619
4825
  }),
4620
4826
  updated_at: state.updated_at
4621
4827
  };
@@ -4771,8 +4977,8 @@ function appendStageHeartbeat(state, input) {
4771
4977
  function createRunStatusSnapshot(state, at = timestamp2()) {
4772
4978
  const latestEvent = state.events[state.events.length - 1];
4773
4979
  const runId = state.run_id || "unknown";
4774
- const shipControl = shipControlStateFor({ state });
4775
- const existingRunCardCurrent = state.run_card?.status === state.status && state.run_card.stop_condition?.status === state.status && state.run_card.stop_condition?.terminal === isTerminalStatus(state.status) && state.run_card.stop_condition?.monitor_should_continue === !isTerminalStatus(state.status) && state.run_card.stop_condition?.ship_held === shipControl.ship_held && state.run_card.stop_condition?.shipping_disabled === shipControl.shipping_disabled && state.run_card.stop_condition?.ship_authorized === shipControl.ship_authorized;
4980
+ const publicState = publicStateForRunState({ state, status: state.status });
4981
+ const existingRunCardCurrent = state.run_card?.status === state.status && state.run_card.stop_condition?.status === state.status && state.run_card.stop_condition?.terminal === isTerminalStatus(state.status) && state.run_card.stop_condition?.monitor_should_continue === !isTerminalStatus(state.status) && state.run_card.stop_condition?.ship_held === publicState.ship_held && state.run_card.stop_condition?.shipping_disabled === publicState.shipping_disabled && state.run_card.stop_condition?.ship_authorized === publicState.ship_authorized && state.run_card.stop_condition?.merge_ready === publicState.merge_ready && state.run_card.stop_condition?.sync_allowed === publicState.sync_allowed && state.run_card.stop_condition?.result_label === publicState.result_label;
4776
4982
  const runCard = existingRunCardCurrent ? state.run_card : createRiddleProofRunCard(state, { at });
4777
4983
  return compactRecord({
4778
4984
  run_id: runId,
@@ -4786,9 +4992,13 @@ function createRunStatusSnapshot(state, at = timestamp2()) {
4786
4992
  pr_url: state.pr_url ?? null,
4787
4993
  pr_branch: state.pr_branch ?? null,
4788
4994
  pr_state: state.pr_state,
4789
- ship_held: shipControl.ship_held,
4790
- shipping_disabled: shipControl.shipping_disabled,
4791
- ship_authorized: shipControl.ship_authorized,
4995
+ result_label: publicState.result_label,
4996
+ ship_held: publicState.ship_held,
4997
+ shipping_disabled: publicState.shipping_disabled,
4998
+ ship_authorized: publicState.ship_authorized,
4999
+ merge_ready: publicState.merge_ready,
5000
+ sync_allowed: publicState.sync_allowed,
5001
+ public_state: publicState,
4792
5002
  ci_status: state.ci_status,
4793
5003
  ship_commit: state.ship_commit,
4794
5004
  ship_remote_head: state.ship_remote_head,
@@ -5158,6 +5368,13 @@ function proofAssessmentHardBlockers(state, payload) {
5158
5368
  }
5159
5369
  return blockers;
5160
5370
  }
5371
+ function proofGateStateForCheckpointResponse(state) {
5372
+ const fullState = readJson(state.request.engine_state_path) || {};
5373
+ return compactRecord({
5374
+ ...fullState,
5375
+ verification_mode: nonEmptyString(fullState.verification_mode) || state.request.verification_mode
5376
+ });
5377
+ }
5161
5378
  function proofAssessmentContinuation(result, payload) {
5162
5379
  const proof_assessment_json = jsonParam(payload);
5163
5380
  return { ...baseContinuation(result), proof_assessment_json };
@@ -5704,6 +5921,45 @@ function checkpointResponseContinuation(state, value) {
5704
5921
  blocker: sourceBlocker
5705
5922
  });
5706
5923
  }
5924
+ const proofGateState = proofGateStateForCheckpointResponse(state);
5925
+ const hardBlockers = proofAssessmentHardBlockers(proofGateState, assessment);
5926
+ if (proofAssessmentRequestsShip(assessment) && hardBlockers.length) {
5927
+ return checkpointResponseRejectedBlocker(state, {
5928
+ packet,
5929
+ response,
5930
+ blocker: {
5931
+ code: "checkpoint_response_proof_hard_blocker",
5932
+ checkpoint: packet.checkpoint,
5933
+ message: "Riddle Proof cannot mark ready_to_ship while the proof bundle contains a hard blocker: " + hardBlockers[0],
5934
+ details: compactRecord({
5935
+ stage: packet.stage,
5936
+ hard_blockers: hardBlockers,
5937
+ proofAssessment: assessment,
5938
+ response
5939
+ })
5940
+ }
5941
+ });
5942
+ }
5943
+ const visualBlocker = proofAssessmentVisualBlocker(proofGateState, assessment);
5944
+ if (visualBlocker) {
5945
+ const recoveryAssessment = visualDeltaEvidenceRecoveryAssessment(proofGateState, assessment, visualBlocker);
5946
+ appendCheckpointResponse(state, response, { summary: visualBlocker });
5947
+ recordEvent(state, {
5948
+ kind: "checkpoint.response.evidence_recovery_required",
5949
+ checkpoint: packet.checkpoint,
5950
+ stage: "verify",
5951
+ summary: visualBlocker,
5952
+ details: compactRecord({
5953
+ evidence_collection_incomplete: true,
5954
+ recovery_stage: "verify",
5955
+ evidence_issue_code: recoveryAssessment.evidence_issue_code || null,
5956
+ visual_delta: recoveryAssessment.visual_delta || null,
5957
+ proof_assessment: recoveryAssessment,
5958
+ checkpoint_response_source: response.source || null
5959
+ })
5960
+ });
5961
+ return { next: { ...base, proof_assessment_json: jsonParam(recoveryAssessment) } };
5962
+ }
5707
5963
  appendCheckpointResponse(state, response);
5708
5964
  if (state.request.ship_mode !== "ship" && proofAssessmentRequestsShip(assessment)) {
5709
5965
  const result = {
@@ -1,2 +1,3 @@
1
1
  export { R as RiddleProofAgentAdapter, a as RiddleProofAgentPayload, b as RiddleProofCheckpointMode, c as RiddleProofEngine, d as RiddleProofEngineHarnessConfig, e as RiddleProofEngineHarnessContext, f as RiddleProofEngineResult, g as RiddleProofShipMode, h as RiddleProofWorkflowParams, i as RunRiddleProofEngineHarnessInput, j as createDisabledRiddleProofAgentAdapter, r as readRiddleProofRunStatus, k as runRiddleProofEngineHarness } from '../engine-harness-LBfqbFSe.cjs';
2
2
  import '../types.cjs';
3
+ import '../public-state.cjs';
@@ -1,2 +1,3 @@
1
1
  export { R as RiddleProofAgentAdapter, a as RiddleProofAgentPayload, b as RiddleProofCheckpointMode, c as RiddleProofEngine, d as RiddleProofEngineHarnessConfig, e as RiddleProofEngineHarnessContext, f as RiddleProofEngineResult, g as RiddleProofShipMode, h as RiddleProofWorkflowParams, i as RunRiddleProofEngineHarnessInput, j as createDisabledRiddleProofAgentAdapter, r as readRiddleProofRunStatus, k as runRiddleProofEngineHarness } from '../engine-harness-CMACHP6A.js';
2
2
  import '../types.js';
3
+ import '../public-state.js';