@riddledc/riddle-proof 0.7.184 → 0.7.186

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.
@@ -489,8 +489,9 @@ function profileSetupWindowCallReceipts(results) {
489
489
  path: result.path ?? null,
490
490
  return_captured: result.return_captured ?? null,
491
491
  return_stored_to: result.return_stored_to ?? null,
492
- reason: result.reason ?? result.error ?? result.store_reason ?? null
492
+ reason: result.reason ?? result.store_reason ?? null
493
493
  };
494
+ if (result.error !== void 0) receipt.error = result.error;
494
495
  if (result.returned !== void 0) receipt.returned = result.returned;
495
496
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
496
497
  const returnSummary = profileSetupReturnSummary(result);
@@ -506,8 +507,9 @@ function profileSetupWindowEvalReceipts(results) {
506
507
  script_length: result.script_length ?? null,
507
508
  return_captured: result.return_captured ?? null,
508
509
  return_stored_to: result.return_stored_to ?? null,
509
- reason: result.reason ?? result.error ?? result.store_reason ?? null
510
+ reason: result.reason ?? result.store_reason ?? null
510
511
  };
512
+ if (result.error !== void 0) receipt.error = result.error;
511
513
  if (result.returned !== void 0) receipt.returned = result.returned;
512
514
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
513
515
  const returnSummary = profileSetupReturnSummary(result);
@@ -872,6 +874,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
872
874
  selector: result.selector ?? null,
873
875
  frame_selector: result.frame_selector ?? null,
874
876
  reason: result.reason ?? result.error ?? null,
877
+ error: result.error ?? null,
875
878
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
876
879
  })),
877
880
  optional_failed: optionalFailed.map((result) => ({
@@ -880,6 +883,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
880
883
  selector: result.selector ?? null,
881
884
  frame_selector: result.frame_selector ?? null,
882
885
  reason: result.reason ?? result.error ?? null,
886
+ error: result.error ?? null,
883
887
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
884
888
  }))
885
889
  };
@@ -4366,8 +4370,9 @@ function profileSetupWindowCallReceipts(results) {
4366
4370
  path: result.path ?? null,
4367
4371
  return_captured: result.return_captured ?? null,
4368
4372
  return_stored_to: result.return_stored_to ?? null,
4369
- reason: result.reason || result.error || result.store_reason || null,
4373
+ reason: result.reason || result.store_reason || null,
4370
4374
  };
4375
+ if (result.error !== undefined) receipt.error = result.error;
4371
4376
  if (result.returned !== undefined) receipt.returned = result.returned;
4372
4377
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
4373
4378
  const returnSummary = profileSetupReturnSummary(result);
@@ -4385,8 +4390,9 @@ function profileSetupWindowEvalReceipts(results) {
4385
4390
  script_length: result.script_length ?? null,
4386
4391
  return_captured: result.return_captured ?? null,
4387
4392
  return_stored_to: result.return_stored_to ?? null,
4388
- reason: result.reason || result.error || result.store_reason || null,
4393
+ reason: result.reason || result.store_reason || null,
4389
4394
  };
4395
+ if (result.error !== undefined) receipt.error = result.error;
4390
4396
  if (result.returned !== undefined) receipt.returned = result.returned;
4391
4397
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
4392
4398
  const returnSummary = profileSetupReturnSummary(result);
@@ -4796,6 +4802,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
4796
4802
  selector: result.selector ?? null,
4797
4803
  frame_selector: result.frame_selector ?? null,
4798
4804
  reason: result.reason || result.error || null,
4805
+ error: result.error || null,
4799
4806
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
4800
4807
  })),
4801
4808
  optional_failed: optionalFailed.map((result) => ({
@@ -4804,6 +4811,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
4804
4811
  selector: result.selector ?? null,
4805
4812
  frame_selector: result.frame_selector ?? null,
4806
4813
  reason: result.reason || result.error || null,
4814
+ error: result.error || null,
4807
4815
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
4808
4816
  })),
4809
4817
  };
package/dist/cli.cjs CHANGED
@@ -7446,8 +7446,9 @@ function profileSetupWindowCallReceipts(results) {
7446
7446
  path: result.path ?? null,
7447
7447
  return_captured: result.return_captured ?? null,
7448
7448
  return_stored_to: result.return_stored_to ?? null,
7449
- reason: result.reason ?? result.error ?? result.store_reason ?? null
7449
+ reason: result.reason ?? result.store_reason ?? null
7450
7450
  };
7451
+ if (result.error !== void 0) receipt.error = result.error;
7451
7452
  if (result.returned !== void 0) receipt.returned = result.returned;
7452
7453
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
7453
7454
  const returnSummary = profileSetupReturnSummary(result);
@@ -7463,8 +7464,9 @@ function profileSetupWindowEvalReceipts(results) {
7463
7464
  script_length: result.script_length ?? null,
7464
7465
  return_captured: result.return_captured ?? null,
7465
7466
  return_stored_to: result.return_stored_to ?? null,
7466
- reason: result.reason ?? result.error ?? result.store_reason ?? null
7467
+ reason: result.reason ?? result.store_reason ?? null
7467
7468
  };
7469
+ if (result.error !== void 0) receipt.error = result.error;
7468
7470
  if (result.returned !== void 0) receipt.returned = result.returned;
7469
7471
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
7470
7472
  const returnSummary = profileSetupReturnSummary(result);
@@ -7829,6 +7831,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
7829
7831
  selector: result.selector ?? null,
7830
7832
  frame_selector: result.frame_selector ?? null,
7831
7833
  reason: result.reason ?? result.error ?? null,
7834
+ error: result.error ?? null,
7832
7835
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
7833
7836
  })),
7834
7837
  optional_failed: optionalFailed.map((result) => ({
@@ -7837,6 +7840,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
7837
7840
  selector: result.selector ?? null,
7838
7841
  frame_selector: result.frame_selector ?? null,
7839
7842
  reason: result.reason ?? result.error ?? null,
7843
+ error: result.error ?? null,
7840
7844
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
7841
7845
  }))
7842
7846
  };
@@ -11307,8 +11311,9 @@ function profileSetupWindowCallReceipts(results) {
11307
11311
  path: result.path ?? null,
11308
11312
  return_captured: result.return_captured ?? null,
11309
11313
  return_stored_to: result.return_stored_to ?? null,
11310
- reason: result.reason || result.error || result.store_reason || null,
11314
+ reason: result.reason || result.store_reason || null,
11311
11315
  };
11316
+ if (result.error !== undefined) receipt.error = result.error;
11312
11317
  if (result.returned !== undefined) receipt.returned = result.returned;
11313
11318
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
11314
11319
  const returnSummary = profileSetupReturnSummary(result);
@@ -11326,8 +11331,9 @@ function profileSetupWindowEvalReceipts(results) {
11326
11331
  script_length: result.script_length ?? null,
11327
11332
  return_captured: result.return_captured ?? null,
11328
11333
  return_stored_to: result.return_stored_to ?? null,
11329
- reason: result.reason || result.error || result.store_reason || null,
11334
+ reason: result.reason || result.store_reason || null,
11330
11335
  };
11336
+ if (result.error !== undefined) receipt.error = result.error;
11331
11337
  if (result.returned !== undefined) receipt.returned = result.returned;
11332
11338
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
11333
11339
  const returnSummary = profileSetupReturnSummary(result);
@@ -11737,6 +11743,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
11737
11743
  selector: result.selector ?? null,
11738
11744
  frame_selector: result.frame_selector ?? null,
11739
11745
  reason: result.reason || result.error || null,
11746
+ error: result.error || null,
11740
11747
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
11741
11748
  })),
11742
11749
  optional_failed: optionalFailed.map((result) => ({
@@ -11745,6 +11752,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
11745
11752
  selector: result.selector ?? null,
11746
11753
  frame_selector: result.frame_selector ?? null,
11747
11754
  reason: result.reason || result.error || null,
11755
+ error: result.error || null,
11748
11756
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
11749
11757
  })),
11750
11758
  };
@@ -16353,6 +16361,51 @@ function profileResultHasArtifact(result) {
16353
16361
  function profileReceiptSignalStatus(hasSignal, presentReason, missingReason) {
16354
16362
  return hasSignal ? { status: "present", reason: presentReason } : { status: "missing", reason: missingReason };
16355
16363
  }
16364
+ function compactProfileReceiptReason(value, limit = 180) {
16365
+ const text = cliString(value)?.replace(/\s+/g, " ").trim();
16366
+ if (!text) return void 0;
16367
+ return text.length <= limit ? text : `${text.slice(0, Math.max(0, limit - 3)).trimEnd()}...`;
16368
+ }
16369
+ function profileFailedCleanupInventoryReason(setupViewports) {
16370
+ const receipts = setupViewports.flatMap((viewport) => [
16371
+ ...setupReceiptArray(viewport, "window_eval"),
16372
+ ...setupReceiptArray(viewport, "window_call")
16373
+ ]);
16374
+ for (const receipt of receipts) {
16375
+ if (receipt.ok !== false) continue;
16376
+ const returnStoredTo = cliString(receipt.return_stored_to) || "";
16377
+ const reason = cliString(receipt.reason) || "";
16378
+ const error = cliString(receipt.error) || "";
16379
+ const summary = cliReturnSummaryLabel(receipt.return_summary) || "";
16380
+ const haystack = `${returnStoredTo} ${reason} ${error} ${summary}`.toLowerCase();
16381
+ const isCleanupReceipt = haystack.includes("cleanup") || haystack.includes("post-cleanup") || haystack.includes("stale") || haystack.includes("statehygiene") || haystack.includes("state hygiene") || haystack.includes("remained after") || haystack.includes("still present");
16382
+ if (!isCleanupReceipt) continue;
16383
+ return compactProfileReceiptReason(error) || compactProfileReceiptReason(reason) || "cleanup inventory failed";
16384
+ }
16385
+ return void 0;
16386
+ }
16387
+ function profileHasRouteExitAffordanceReceipt(receipts) {
16388
+ const affordanceFields = [
16389
+ "navVisibleBeforeExit",
16390
+ "navVisible",
16391
+ "navigationVisible",
16392
+ "exitVisible",
16393
+ "exitControlVisible",
16394
+ "routeExitVisible",
16395
+ "homeLinkVisible"
16396
+ ];
16397
+ const routeFields = ["route", "afterRoute", "nextRoute", "browserPath", "path"];
16398
+ return receipts.some((receipt) => {
16399
+ if (affordanceFields.some((name) => setupReturnSummaryValue(receipt, [name]) !== void 0)) return true;
16400
+ const storedTo = cliString(receipt.return_stored_to) || "";
16401
+ const summary = cliReturnSummaryLabel(receipt.return_summary) || "";
16402
+ const reason = cliString(receipt.reason) || "";
16403
+ const haystack = `${storedTo} ${summary} ${reason}`.toLowerCase();
16404
+ const mentionsRouteExit = haystack.includes("routeexit") || haystack.includes("route-exit") || haystack.includes("route exit") || haystack.includes("afterrouteexit") || haystack.includes("after route exit");
16405
+ if (!mentionsRouteExit) return false;
16406
+ return routeFields.some((name) => setupReturnSummaryValue(receipt, [name]) !== void 0) || haystack.includes("route=") || haystack.includes("browserpath=");
16407
+ });
16408
+ }
16356
16409
  function profilePackReceiptStatus(result, metadata, receipt) {
16357
16410
  const text = receipt.toLowerCase();
16358
16411
  const setupSummary = profileSetupSummaryRecord(result);
@@ -16401,6 +16454,8 @@ function profilePackReceiptStatus(result, metadata, receipt) {
16401
16454
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
16402
16455
  const hasTextAbsence = profileHasPassedCheck(result, ["text_absent", "selector_text_absent"]);
16403
16456
  const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0);
16457
+ const hasRouteExitAffordanceReceipt = profileHasRouteExitAffordanceReceipt(valueReceipts);
16458
+ const failedCleanupInventoryReason = profileFailedCleanupInventoryReason(setupViewports);
16404
16459
  if (text.includes("artifact link") || text.includes("artifact path")) {
16405
16460
  return profileReceiptSignalStatus(profileResultHasArtifact(result), "artifact references listed", "no artifact references found");
16406
16461
  }
@@ -16419,6 +16474,9 @@ function profilePackReceiptStatus(result, metadata, receipt) {
16419
16474
  return profileReceiptSignalStatus(hasStateContract, "state contract metadata or receipts present", "state contract evidence missing");
16420
16475
  }
16421
16476
  if (text.includes("stale") || text.includes("absence")) {
16477
+ if (failedCleanupInventoryReason && (text.includes("cleanup") || text.includes("post-cleanup") || text.includes("stale-state") || text.includes("stale state"))) {
16478
+ return { status: "failed", reason: `cleanup inventory failed: ${failedCleanupInventoryReason}` };
16479
+ }
16422
16480
  return profileReceiptSignalStatus(hasTextAbsence, "absence check passed", "absence check missing");
16423
16481
  }
16424
16482
  if (text.includes("recovered") || text.includes("final state")) {
@@ -16435,6 +16493,13 @@ function profilePackReceiptStatus(result, metadata, receipt) {
16435
16493
  if (text.includes("invalid state")) {
16436
16494
  return profileReceiptSignalStatus(hasStateContract || hasInvalidStateReceipt, "invalid-state receipt present", "invalid-state receipt missing");
16437
16495
  }
16496
+ if (text.includes("route-exit affordance") || text.includes("route exit affordance") || text.includes("navigation before cleanup") || text.includes("exit control")) {
16497
+ return profileReceiptSignalStatus(
16498
+ hasRouteExitAffordanceReceipt || hasStateContract || clickCount > 0,
16499
+ "route-exit affordance receipt present",
16500
+ "affordance receipt missing"
16501
+ );
16502
+ }
16438
16503
  if (text.includes("retry") || text.includes("repair") || text.includes("reset") || text.includes("affordance")) {
16439
16504
  return profileReceiptSignalStatus(hasStateContract || clickCount > 0, "affordance or transition receipt present", "affordance receipt missing");
16440
16505
  }
@@ -16513,9 +16578,31 @@ function profilePackMetadataMarkdown(result) {
16513
16578
  ].filter(Boolean);
16514
16579
  if (packParts.length) lines.push(`- pack: ${packParts.join(" - ")}`);
16515
16580
  if (requiredReceipts.length) {
16581
+ const receiptStatuses = requiredReceipts.map((receipt) => ({
16582
+ receipt,
16583
+ item: profilePackReceiptStatus(result, metadata, receipt)
16584
+ }));
16585
+ const missingReceipts = receiptStatuses.filter(({ item }) => item.status === "missing").map(({ receipt }) => receipt);
16586
+ const failedReceipts = receiptStatuses.filter(({ item }) => item.status === "failed").map(({ receipt }) => receipt);
16587
+ const manualCount = receiptStatuses.filter(({ item }) => item.status === "manual").length;
16588
+ const presentCount = receiptStatuses.filter(({ item }) => item.status === "present").length;
16589
+ const completenessParts = [
16590
+ `${presentCount} present`,
16591
+ manualCount ? `${manualCount} manual` : "",
16592
+ missingReceipts.length ? `${missingReceipts.length} missing` : "",
16593
+ failedReceipts.length ? `${failedReceipts.length} failed` : ""
16594
+ ].filter(Boolean);
16595
+ lines.push(`- pack completeness: ${missingReceipts.length || failedReceipts.length ? "incomplete" : "complete"} (${completenessParts.join(", ")})`);
16596
+ if (missingReceipts.length) {
16597
+ const listed = missingReceipts.slice(0, 5).map((receipt) => markdownInlineCode(receipt, 120)).join(", ");
16598
+ lines.push(`- missing required receipts: ${listed}${missingReceipts.length > 5 ? `, ${missingReceipts.length - 5} more` : ""}`);
16599
+ }
16600
+ if (failedReceipts.length) {
16601
+ const listed = failedReceipts.slice(0, 5).map((receipt) => markdownInlineCode(receipt, 120)).join(", ");
16602
+ lines.push(`- failed required receipts: ${listed}${failedReceipts.length > 5 ? `, ${failedReceipts.length - 5} more` : ""}`);
16603
+ }
16516
16604
  lines.push(`- required receipts: ${requiredReceipts.length}`);
16517
- for (const receipt of requiredReceipts.slice(0, 20)) {
16518
- const item = profilePackReceiptStatus(result, metadata, receipt);
16605
+ for (const { receipt, item } of receiptStatuses.slice(0, 20)) {
16519
16606
  lines.push(` - ${item.status}: ${receipt} (${item.reason})`);
16520
16607
  }
16521
16608
  if (requiredReceipts.length > 20) lines.push(` - ${requiredReceipts.length - 20} additional required receipt(s) omitted.`);
package/dist/cli.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  profileStatusExitCode,
14
14
  resolveRiddleProofProfileTargetUrl,
15
15
  resolveRiddleProofProfileTimeoutSec
16
- } from "./chunk-5MBIRRA7.js";
16
+ } from "./chunk-Z42O55GB.js";
17
17
  import {
18
18
  createRiddleApiClient,
19
19
  isTerminalRiddleJobStatus,
@@ -566,6 +566,51 @@ function profileResultHasArtifact(result) {
566
566
  function profileReceiptSignalStatus(hasSignal, presentReason, missingReason) {
567
567
  return hasSignal ? { status: "present", reason: presentReason } : { status: "missing", reason: missingReason };
568
568
  }
569
+ function compactProfileReceiptReason(value, limit = 180) {
570
+ const text = cliString(value)?.replace(/\s+/g, " ").trim();
571
+ if (!text) return void 0;
572
+ return text.length <= limit ? text : `${text.slice(0, Math.max(0, limit - 3)).trimEnd()}...`;
573
+ }
574
+ function profileFailedCleanupInventoryReason(setupViewports) {
575
+ const receipts = setupViewports.flatMap((viewport) => [
576
+ ...setupReceiptArray(viewport, "window_eval"),
577
+ ...setupReceiptArray(viewport, "window_call")
578
+ ]);
579
+ for (const receipt of receipts) {
580
+ if (receipt.ok !== false) continue;
581
+ const returnStoredTo = cliString(receipt.return_stored_to) || "";
582
+ const reason = cliString(receipt.reason) || "";
583
+ const error = cliString(receipt.error) || "";
584
+ const summary = cliReturnSummaryLabel(receipt.return_summary) || "";
585
+ const haystack = `${returnStoredTo} ${reason} ${error} ${summary}`.toLowerCase();
586
+ const isCleanupReceipt = haystack.includes("cleanup") || haystack.includes("post-cleanup") || haystack.includes("stale") || haystack.includes("statehygiene") || haystack.includes("state hygiene") || haystack.includes("remained after") || haystack.includes("still present");
587
+ if (!isCleanupReceipt) continue;
588
+ return compactProfileReceiptReason(error) || compactProfileReceiptReason(reason) || "cleanup inventory failed";
589
+ }
590
+ return void 0;
591
+ }
592
+ function profileHasRouteExitAffordanceReceipt(receipts) {
593
+ const affordanceFields = [
594
+ "navVisibleBeforeExit",
595
+ "navVisible",
596
+ "navigationVisible",
597
+ "exitVisible",
598
+ "exitControlVisible",
599
+ "routeExitVisible",
600
+ "homeLinkVisible"
601
+ ];
602
+ const routeFields = ["route", "afterRoute", "nextRoute", "browserPath", "path"];
603
+ return receipts.some((receipt) => {
604
+ if (affordanceFields.some((name) => setupReturnSummaryValue(receipt, [name]) !== void 0)) return true;
605
+ const storedTo = cliString(receipt.return_stored_to) || "";
606
+ const summary = cliReturnSummaryLabel(receipt.return_summary) || "";
607
+ const reason = cliString(receipt.reason) || "";
608
+ const haystack = `${storedTo} ${summary} ${reason}`.toLowerCase();
609
+ const mentionsRouteExit = haystack.includes("routeexit") || haystack.includes("route-exit") || haystack.includes("route exit") || haystack.includes("afterrouteexit") || haystack.includes("after route exit");
610
+ if (!mentionsRouteExit) return false;
611
+ return routeFields.some((name) => setupReturnSummaryValue(receipt, [name]) !== void 0) || haystack.includes("route=") || haystack.includes("browserpath=");
612
+ });
613
+ }
569
614
  function profilePackReceiptStatus(result, metadata, receipt) {
570
615
  const text = receipt.toLowerCase();
571
616
  const setupSummary = profileSetupSummaryRecord(result);
@@ -614,6 +659,8 @@ function profilePackReceiptStatus(result, metadata, receipt) {
614
659
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
615
660
  const hasTextAbsence = profileHasPassedCheck(result, ["text_absent", "selector_text_absent"]);
616
661
  const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0);
662
+ const hasRouteExitAffordanceReceipt = profileHasRouteExitAffordanceReceipt(valueReceipts);
663
+ const failedCleanupInventoryReason = profileFailedCleanupInventoryReason(setupViewports);
617
664
  if (text.includes("artifact link") || text.includes("artifact path")) {
618
665
  return profileReceiptSignalStatus(profileResultHasArtifact(result), "artifact references listed", "no artifact references found");
619
666
  }
@@ -632,6 +679,9 @@ function profilePackReceiptStatus(result, metadata, receipt) {
632
679
  return profileReceiptSignalStatus(hasStateContract, "state contract metadata or receipts present", "state contract evidence missing");
633
680
  }
634
681
  if (text.includes("stale") || text.includes("absence")) {
682
+ if (failedCleanupInventoryReason && (text.includes("cleanup") || text.includes("post-cleanup") || text.includes("stale-state") || text.includes("stale state"))) {
683
+ return { status: "failed", reason: `cleanup inventory failed: ${failedCleanupInventoryReason}` };
684
+ }
635
685
  return profileReceiptSignalStatus(hasTextAbsence, "absence check passed", "absence check missing");
636
686
  }
637
687
  if (text.includes("recovered") || text.includes("final state")) {
@@ -648,6 +698,13 @@ function profilePackReceiptStatus(result, metadata, receipt) {
648
698
  if (text.includes("invalid state")) {
649
699
  return profileReceiptSignalStatus(hasStateContract || hasInvalidStateReceipt, "invalid-state receipt present", "invalid-state receipt missing");
650
700
  }
701
+ if (text.includes("route-exit affordance") || text.includes("route exit affordance") || text.includes("navigation before cleanup") || text.includes("exit control")) {
702
+ return profileReceiptSignalStatus(
703
+ hasRouteExitAffordanceReceipt || hasStateContract || clickCount > 0,
704
+ "route-exit affordance receipt present",
705
+ "affordance receipt missing"
706
+ );
707
+ }
651
708
  if (text.includes("retry") || text.includes("repair") || text.includes("reset") || text.includes("affordance")) {
652
709
  return profileReceiptSignalStatus(hasStateContract || clickCount > 0, "affordance or transition receipt present", "affordance receipt missing");
653
710
  }
@@ -726,9 +783,31 @@ function profilePackMetadataMarkdown(result) {
726
783
  ].filter(Boolean);
727
784
  if (packParts.length) lines.push(`- pack: ${packParts.join(" - ")}`);
728
785
  if (requiredReceipts.length) {
786
+ const receiptStatuses = requiredReceipts.map((receipt) => ({
787
+ receipt,
788
+ item: profilePackReceiptStatus(result, metadata, receipt)
789
+ }));
790
+ const missingReceipts = receiptStatuses.filter(({ item }) => item.status === "missing").map(({ receipt }) => receipt);
791
+ const failedReceipts = receiptStatuses.filter(({ item }) => item.status === "failed").map(({ receipt }) => receipt);
792
+ const manualCount = receiptStatuses.filter(({ item }) => item.status === "manual").length;
793
+ const presentCount = receiptStatuses.filter(({ item }) => item.status === "present").length;
794
+ const completenessParts = [
795
+ `${presentCount} present`,
796
+ manualCount ? `${manualCount} manual` : "",
797
+ missingReceipts.length ? `${missingReceipts.length} missing` : "",
798
+ failedReceipts.length ? `${failedReceipts.length} failed` : ""
799
+ ].filter(Boolean);
800
+ lines.push(`- pack completeness: ${missingReceipts.length || failedReceipts.length ? "incomplete" : "complete"} (${completenessParts.join(", ")})`);
801
+ if (missingReceipts.length) {
802
+ const listed = missingReceipts.slice(0, 5).map((receipt) => markdownInlineCode(receipt, 120)).join(", ");
803
+ lines.push(`- missing required receipts: ${listed}${missingReceipts.length > 5 ? `, ${missingReceipts.length - 5} more` : ""}`);
804
+ }
805
+ if (failedReceipts.length) {
806
+ const listed = failedReceipts.slice(0, 5).map((receipt) => markdownInlineCode(receipt, 120)).join(", ");
807
+ lines.push(`- failed required receipts: ${listed}${failedReceipts.length > 5 ? `, ${failedReceipts.length - 5} more` : ""}`);
808
+ }
729
809
  lines.push(`- required receipts: ${requiredReceipts.length}`);
730
- for (const receipt of requiredReceipts.slice(0, 20)) {
731
- const item = profilePackReceiptStatus(result, metadata, receipt);
810
+ for (const { receipt, item } of receiptStatuses.slice(0, 20)) {
732
811
  lines.push(` - ${item.status}: ${receipt} (${item.reason})`);
733
812
  }
734
813
  if (requiredReceipts.length > 20) lines.push(` - ${requiredReceipts.length - 20} additional required receipt(s) omitted.`);
package/dist/index.cjs CHANGED
@@ -9222,8 +9222,9 @@ function profileSetupWindowCallReceipts(results) {
9222
9222
  path: result.path ?? null,
9223
9223
  return_captured: result.return_captured ?? null,
9224
9224
  return_stored_to: result.return_stored_to ?? null,
9225
- reason: result.reason ?? result.error ?? result.store_reason ?? null
9225
+ reason: result.reason ?? result.store_reason ?? null
9226
9226
  };
9227
+ if (result.error !== void 0) receipt.error = result.error;
9227
9228
  if (result.returned !== void 0) receipt.returned = result.returned;
9228
9229
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
9229
9230
  const returnSummary = profileSetupReturnSummary(result);
@@ -9239,8 +9240,9 @@ function profileSetupWindowEvalReceipts(results) {
9239
9240
  script_length: result.script_length ?? null,
9240
9241
  return_captured: result.return_captured ?? null,
9241
9242
  return_stored_to: result.return_stored_to ?? null,
9242
- reason: result.reason ?? result.error ?? result.store_reason ?? null
9243
+ reason: result.reason ?? result.store_reason ?? null
9243
9244
  };
9245
+ if (result.error !== void 0) receipt.error = result.error;
9244
9246
  if (result.returned !== void 0) receipt.returned = result.returned;
9245
9247
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
9246
9248
  const returnSummary = profileSetupReturnSummary(result);
@@ -9605,6 +9607,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
9605
9607
  selector: result.selector ?? null,
9606
9608
  frame_selector: result.frame_selector ?? null,
9607
9609
  reason: result.reason ?? result.error ?? null,
9610
+ error: result.error ?? null,
9608
9611
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
9609
9612
  })),
9610
9613
  optional_failed: optionalFailed.map((result) => ({
@@ -9613,6 +9616,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
9613
9616
  selector: result.selector ?? null,
9614
9617
  frame_selector: result.frame_selector ?? null,
9615
9618
  reason: result.reason ?? result.error ?? null,
9619
+ error: result.error ?? null,
9616
9620
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
9617
9621
  }))
9618
9622
  };
@@ -13099,8 +13103,9 @@ function profileSetupWindowCallReceipts(results) {
13099
13103
  path: result.path ?? null,
13100
13104
  return_captured: result.return_captured ?? null,
13101
13105
  return_stored_to: result.return_stored_to ?? null,
13102
- reason: result.reason || result.error || result.store_reason || null,
13106
+ reason: result.reason || result.store_reason || null,
13103
13107
  };
13108
+ if (result.error !== undefined) receipt.error = result.error;
13104
13109
  if (result.returned !== undefined) receipt.returned = result.returned;
13105
13110
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
13106
13111
  const returnSummary = profileSetupReturnSummary(result);
@@ -13118,8 +13123,9 @@ function profileSetupWindowEvalReceipts(results) {
13118
13123
  script_length: result.script_length ?? null,
13119
13124
  return_captured: result.return_captured ?? null,
13120
13125
  return_stored_to: result.return_stored_to ?? null,
13121
- reason: result.reason || result.error || result.store_reason || null,
13126
+ reason: result.reason || result.store_reason || null,
13122
13127
  };
13128
+ if (result.error !== undefined) receipt.error = result.error;
13123
13129
  if (result.returned !== undefined) receipt.returned = result.returned;
13124
13130
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
13125
13131
  const returnSummary = profileSetupReturnSummary(result);
@@ -13529,6 +13535,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
13529
13535
  selector: result.selector ?? null,
13530
13536
  frame_selector: result.frame_selector ?? null,
13531
13537
  reason: result.reason || result.error || null,
13538
+ error: result.error || null,
13532
13539
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
13533
13540
  })),
13534
13541
  optional_failed: optionalFailed.map((result) => ({
@@ -13537,6 +13544,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
13537
13544
  selector: result.selector ?? null,
13538
13545
  frame_selector: result.frame_selector ?? null,
13539
13546
  reason: result.reason || result.error || null,
13547
+ error: result.error || null,
13540
13548
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
13541
13549
  })),
13542
13550
  };
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ import {
62
62
  resolveRiddleProofProfileTimeoutSec,
63
63
  slugifyRiddleProofProfileName,
64
64
  summarizeRiddleProofProfileResult
65
- } from "./chunk-5MBIRRA7.js";
65
+ } from "./chunk-Z42O55GB.js";
66
66
  import {
67
67
  DEFAULT_RIDDLE_API_BASE_URL,
68
68
  DEFAULT_RIDDLE_API_KEY_FILE,
package/dist/profile.cjs CHANGED
@@ -536,8 +536,9 @@ function profileSetupWindowCallReceipts(results) {
536
536
  path: result.path ?? null,
537
537
  return_captured: result.return_captured ?? null,
538
538
  return_stored_to: result.return_stored_to ?? null,
539
- reason: result.reason ?? result.error ?? result.store_reason ?? null
539
+ reason: result.reason ?? result.store_reason ?? null
540
540
  };
541
+ if (result.error !== void 0) receipt.error = result.error;
541
542
  if (result.returned !== void 0) receipt.returned = result.returned;
542
543
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
543
544
  const returnSummary = profileSetupReturnSummary(result);
@@ -553,8 +554,9 @@ function profileSetupWindowEvalReceipts(results) {
553
554
  script_length: result.script_length ?? null,
554
555
  return_captured: result.return_captured ?? null,
555
556
  return_stored_to: result.return_stored_to ?? null,
556
- reason: result.reason ?? result.error ?? result.store_reason ?? null
557
+ reason: result.reason ?? result.store_reason ?? null
557
558
  };
559
+ if (result.error !== void 0) receipt.error = result.error;
558
560
  if (result.returned !== void 0) receipt.returned = result.returned;
559
561
  if (result.expected_return !== void 0) receipt.expected_return = result.expected_return;
560
562
  const returnSummary = profileSetupReturnSummary(result);
@@ -919,6 +921,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
919
921
  selector: result.selector ?? null,
920
922
  frame_selector: result.frame_selector ?? null,
921
923
  reason: result.reason ?? result.error ?? null,
924
+ error: result.error ?? null,
922
925
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
923
926
  })),
924
927
  optional_failed: optionalFailed.map((result) => ({
@@ -927,6 +930,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
927
930
  selector: result.selector ?? null,
928
931
  frame_selector: result.frame_selector ?? null,
929
932
  reason: result.reason ?? result.error ?? null,
933
+ error: result.error ?? null,
930
934
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text)
931
935
  }))
932
936
  };
@@ -4413,8 +4417,9 @@ function profileSetupWindowCallReceipts(results) {
4413
4417
  path: result.path ?? null,
4414
4418
  return_captured: result.return_captured ?? null,
4415
4419
  return_stored_to: result.return_stored_to ?? null,
4416
- reason: result.reason || result.error || result.store_reason || null,
4420
+ reason: result.reason || result.store_reason || null,
4417
4421
  };
4422
+ if (result.error !== undefined) receipt.error = result.error;
4418
4423
  if (result.returned !== undefined) receipt.returned = result.returned;
4419
4424
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
4420
4425
  const returnSummary = profileSetupReturnSummary(result);
@@ -4432,8 +4437,9 @@ function profileSetupWindowEvalReceipts(results) {
4432
4437
  script_length: result.script_length ?? null,
4433
4438
  return_captured: result.return_captured ?? null,
4434
4439
  return_stored_to: result.return_stored_to ?? null,
4435
- reason: result.reason || result.error || result.store_reason || null,
4440
+ reason: result.reason || result.store_reason || null,
4436
4441
  };
4442
+ if (result.error !== undefined) receipt.error = result.error;
4437
4443
  if (result.returned !== undefined) receipt.returned = result.returned;
4438
4444
  if (result.expected_return !== undefined) receipt.expected_return = result.expected_return;
4439
4445
  const returnSummary = profileSetupReturnSummary(result);
@@ -4843,6 +4849,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
4843
4849
  selector: result.selector ?? null,
4844
4850
  frame_selector: result.frame_selector ?? null,
4845
4851
  reason: result.reason || result.error || null,
4852
+ error: result.error || null,
4846
4853
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
4847
4854
  })),
4848
4855
  optional_failed: optionalFailed.map((result) => ({
@@ -4851,6 +4858,7 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
4851
4858
  selector: result.selector ?? null,
4852
4859
  frame_selector: result.frame_selector ?? null,
4853
4860
  reason: result.reason || result.error || null,
4861
+ error: result.error || null,
4854
4862
  case_insensitive_text: compactProfileSetupSummaryText(result.case_insensitive_text),
4855
4863
  })),
4856
4864
  };
package/dist/profile.js CHANGED
@@ -23,7 +23,7 @@ import {
23
23
  resolveRiddleProofProfileTimeoutSec,
24
24
  slugifyRiddleProofProfileName,
25
25
  summarizeRiddleProofProfileResult
26
- } from "./chunk-5MBIRRA7.js";
26
+ } from "./chunk-Z42O55GB.js";
27
27
  export {
28
28
  RIDDLE_PROOF_PROFILE_CHECK_TYPES,
29
29
  RIDDLE_PROOF_PROFILE_EVIDENCE_VERSION,
@@ -21,7 +21,7 @@
21
21
  "label": "capture-route-active-state",
22
22
  "timeout_ms": 10000,
23
23
  "store_return_to": "__rpRouteExit.active",
24
- "script": "const proof=window.__exampleRouteProof?.read?.()||{};const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const activeGlobals=watched.filter((name)=>Object.prototype.hasOwnProperty.call(window,name)&&window[name]!==undefined);const out={ready:proof.ready===true,route:location.pathname,activeGlobals,activeGlobalCount:activeGlobals.length,receiptId:String(proof.receiptId||''),mode:String(proof.mode||'')};out.ok=out.ready===true&&out.activeGlobalCount>0;window.__rpRouteExit={...(window.__rpRouteExit||{}),active:out};return out;",
24
+ "script": "const proof=window.__exampleRouteProof?.read?.()||{};const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const activeGlobals=watched.filter((name)=>window[name]!==undefined);const out={ready:proof.ready===true,route:location.pathname,activeGlobals,activeGlobalCount:activeGlobals.length,receiptId:String(proof.receiptId||''),mode:String(proof.mode||'')};out.ok=out.ready===true&&out.activeGlobalCount>0;window.__rpRouteExit={...(window.__rpRouteExit||{}),active:out};return out;",
25
25
  "return_summary_fields": [
26
26
  { "path": "ok" },
27
27
  { "path": "ready" },
@@ -39,7 +39,7 @@
39
39
  "label": "capture-route-exit-cleanup",
40
40
  "timeout_ms": 10000,
41
41
  "store_return_to": "__rpRouteExit.cleanup",
42
- "script": "const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const staleNames=watched.filter((name)=>Object.prototype.hasOwnProperty.call(window,name)&&window[name]!==undefined);const out={ok:location.pathname==='/'&&staleNames.length===0,route:location.pathname,staleNames,staleCount:staleNames.length};window.__rpRouteExit={...(window.__rpRouteExit||{}),cleanup:out};return out;",
42
+ "script": "const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const staleNames=watched.filter((name)=>window[name]!==undefined);const out={ok:location.pathname==='/'&&staleNames.length===0,route:location.pathname,staleNames,staleCount:staleNames.length};window.__rpRouteExit={...(window.__rpRouteExit||{}),cleanup:out};return out;",
43
43
  "return_summary_fields": [
44
44
  { "path": "ok" },
45
45
  { "path": "route" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddledc/riddle-proof",
3
- "version": "0.7.184",
3
+ "version": "0.7.186",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",