@riddledc/riddle-proof 0.8.68 → 0.8.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/codex-exec-agent.js +3 -3
- package/dist/adapters/codex.js +3 -3
- package/dist/adapters/local-agent.js +3 -3
- package/dist/adapters/openclaw.js +6 -6
- package/dist/advanced/engine-harness.cjs +19 -4
- package/dist/advanced/engine-harness.js +6 -6
- package/dist/advanced/index.cjs +19 -4
- package/dist/advanced/index.js +7 -7
- package/dist/advanced/runner.cjs +19 -4
- package/dist/advanced/runner.js +6 -6
- package/dist/checkpoint.js +3 -3
- package/dist/{chunk-NMQIWBSB.js → chunk-CGJX7LJO.js} +2 -2
- package/dist/{chunk-DTFSHRV5.js → chunk-CWRIXP5H.js} +1 -1
- package/dist/{chunk-ZB5XBHWD.js → chunk-DYE3URAQ.js} +1 -1
- package/dist/{chunk-WKNWMRDF.js → chunk-HNAMDVE3.js} +2 -2
- package/dist/{chunk-OD6OKXL2.js → chunk-KXLEN4SA.js} +1 -1
- package/dist/{chunk-UK7G4RKA.js → chunk-NKHZASNQ.js} +1 -1
- package/dist/{chunk-AF3KFD4A.js → chunk-RJVA5KKM.js} +4 -4
- package/dist/{chunk-2OTPBHSM.js → chunk-UTCL7FEZ.js} +2 -2
- package/dist/{chunk-P4BHU5NM.js → chunk-WLUMLHII.js} +4 -4
- package/dist/{chunk-LD2YTPD7.js → chunk-YH7ADFY4.js} +2 -2
- package/dist/{chunk-6PSM6KB2.js → chunk-ZAR7BWMN.js} +19 -4
- package/dist/cli/index.js +9 -9
- package/dist/cli.cjs +19 -4
- package/dist/cli.js +9 -9
- package/dist/codex-exec-agent.js +3 -3
- package/dist/engine-harness.cjs +19 -4
- package/dist/engine-harness.js +6 -6
- package/dist/index.cjs +19 -4
- package/dist/index.js +9 -9
- package/dist/local-agent.js +3 -3
- package/dist/openclaw.js +6 -6
- package/dist/pr-comment.cjs +19 -4
- package/dist/pr-comment.js +2 -2
- package/dist/public-state.cjs +19 -4
- package/dist/public-state.js +1 -1
- package/dist/result.cjs +19 -4
- package/dist/result.js +2 -2
- package/dist/run-card.cjs +19 -4
- package/dist/run-card.js +4 -4
- package/dist/runner.cjs +19 -4
- package/dist/runner.js +6 -6
- package/dist/spec/checkpoint.js +3 -3
- package/dist/spec/index.cjs +19 -4
- package/dist/spec/index.js +5 -5
- package/dist/spec/public-state.cjs +19 -4
- package/dist/spec/public-state.js +1 -1
- package/dist/spec/result.cjs +19 -4
- package/dist/spec/result.js +2 -2
- package/dist/spec/run-card.cjs +19 -4
- package/dist/spec/run-card.js +4 -4
- package/dist/spec/state.cjs +19 -4
- package/dist/spec/state.js +5 -5
- package/dist/state.cjs +19 -4
- package/dist/state.js +5 -5
- package/examples/story-matrices/README.md +13 -0
- package/examples/story-matrices/riddle-proof-ux-coverage.csv +23 -0
- package/package.json +1 -1
package/dist/state.cjs
CHANGED
|
@@ -111,6 +111,19 @@ function checkpointSummaryFrom(...values) {
|
|
|
111
111
|
function uniqueStrings(values) {
|
|
112
112
|
return [...new Set(values.filter(Boolean))];
|
|
113
113
|
}
|
|
114
|
+
function statusIsProofFailed(status) {
|
|
115
|
+
return status === "failed" || status === "product_regression";
|
|
116
|
+
}
|
|
117
|
+
function statusIsProofBlocked(status) {
|
|
118
|
+
return status === "blocked" || status === "proof_insufficient" || status === "environment_blocked" || status === "configuration_error" || status === "needs_human_review";
|
|
119
|
+
}
|
|
120
|
+
function statusRequiresDisclosure(status) {
|
|
121
|
+
if (status === "proof_insufficient") return "proof_insufficient";
|
|
122
|
+
if (status === "environment_blocked") return "environment_blocked";
|
|
123
|
+
if (status === "configuration_error") return "configuration_error";
|
|
124
|
+
if (status === "needs_human_review") return "human_review_required";
|
|
125
|
+
return void 0;
|
|
126
|
+
}
|
|
114
127
|
function summarizeRiddleProofPublicState(input) {
|
|
115
128
|
const record = asRecord(input);
|
|
116
129
|
const runCard = asRecord(record.run_card);
|
|
@@ -153,7 +166,7 @@ function summarizeRiddleProofPublicState(input) {
|
|
|
153
166
|
asRecord(record.details).checkpoint_summary,
|
|
154
167
|
asRecord(raw.details).checkpoint_summary
|
|
155
168
|
);
|
|
156
|
-
const blockedOrWaiting = status
|
|
169
|
+
const blockedOrWaiting = statusIsProofBlocked(status) || statusIsProofFailed(status) || status === "awaiting_checkpoint" || handoffState === "proof_blocked" || handoffState === "proof_review_required" || handoffState === "proof_failed" || handoffState === "proof_checkpoint_required";
|
|
157
170
|
const proofPassed = Boolean(proofComplete && !blockedOrWaiting);
|
|
158
171
|
const explicitMergeReady = firstBooleanValue(record.merge_ready, stopCondition.merge_ready, raw.merge_ready, handoff.merge_ready);
|
|
159
172
|
const normalPrAllowed = firstBooleanValue(record.normal_pr_allowed, raw.normal_pr_allowed, handoff.normal_pr_allowed);
|
|
@@ -162,8 +175,8 @@ function summarizeRiddleProofPublicState(input) {
|
|
|
162
175
|
const syncAllowed = mergeReady;
|
|
163
176
|
let policyState = "unknown";
|
|
164
177
|
if (status === "awaiting_checkpoint" || handoffState === "proof_checkpoint_required") policyState = "awaiting_checkpoint";
|
|
165
|
-
else if (status
|
|
166
|
-
else if (status
|
|
178
|
+
else if (statusIsProofFailed(status) || handoffState === "proof_failed") policyState = "proof_failed";
|
|
179
|
+
else if (statusIsProofBlocked(status) || handoffState === "proof_blocked" || handoffState === "proof_review_required") policyState = "proof_blocked";
|
|
167
180
|
else if (handoffState === "proof_complete_ship_disabled") policyState = "proof_complete_ship_disabled";
|
|
168
181
|
else if (proofComplete && shipHeld && !shipAuthorized) policyState = "proof_passed_ship_held";
|
|
169
182
|
else if (proofComplete && shippingDisabled && !shipAuthorized) policyState = "proof_complete_ship_disabled";
|
|
@@ -175,6 +188,8 @@ function summarizeRiddleProofPublicState(input) {
|
|
|
175
188
|
if (shippingDisabled) requiredDisclosures.push("shipping_disabled");
|
|
176
189
|
if (checkpointSummary?.audit_disclosure_required) requiredDisclosures.push("checkpoint_audit_counters");
|
|
177
190
|
if (status === "awaiting_checkpoint" || handoffState === "proof_checkpoint_required") requiredDisclosures.push("checkpoint_required");
|
|
191
|
+
const statusDisclosure = statusRequiresDisclosure(status);
|
|
192
|
+
if (statusDisclosure) requiredDisclosures.push(statusDisclosure);
|
|
178
193
|
const prohibitedClaims = [];
|
|
179
194
|
if (!shipAuthorized || shipHeld || shippingDisabled) prohibitedClaims.push("ship_authorized", "shipped");
|
|
180
195
|
if (!mergeReady) prohibitedClaims.push("merge_ready");
|
|
@@ -185,7 +200,7 @@ function summarizeRiddleProofPublicState(input) {
|
|
|
185
200
|
if (checkpointSummary?.audit_disclosure_required) {
|
|
186
201
|
prohibitedClaims.push("all_checkpoint_responses_accepted");
|
|
187
202
|
}
|
|
188
|
-
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";
|
|
203
|
+
const resultLabel = status === "product_regression" ? "product_regression" : status === "proof_insufficient" ? "proof_insufficient" : status === "environment_blocked" ? "environment_blocked" : status === "configuration_error" ? "configuration_error" : status === "needs_human_review" ? "needs_human_review" : 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";
|
|
189
204
|
return {
|
|
190
205
|
status,
|
|
191
206
|
ok,
|
package/dist/state.js
CHANGED
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
normalizePrLifecycleState,
|
|
10
10
|
normalizeRunParams,
|
|
11
11
|
setRunStatus
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-CGJX7LJO.js";
|
|
13
|
+
import "./chunk-UTCL7FEZ.js";
|
|
14
|
+
import "./chunk-DYE3URAQ.js";
|
|
15
|
+
import "./chunk-NKHZASNQ.js";
|
|
16
|
+
import "./chunk-ZAR7BWMN.js";
|
|
17
17
|
import "./chunk-MLKGABMK.js";
|
|
18
18
|
export {
|
|
19
19
|
RIDDLE_PROOF_RUN_STATE_VERSION,
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
It is meant to keep broad user-story sweeps evidence-backed and reviewable
|
|
5
5
|
without turning them into unbounded scaffolding.
|
|
6
6
|
|
|
7
|
+
`riddle-proof-ux-coverage.csv` is the spreadsheet view of the same loop. Open it
|
|
8
|
+
in a spreadsheet editor when you want the "status bar" view: surface, user story,
|
|
9
|
+
expected behavior, runner, required evidence, last result, finding, next action,
|
|
10
|
+
and priority.
|
|
11
|
+
|
|
7
12
|
Each story names:
|
|
8
13
|
|
|
9
14
|
- the Riddle Proof surface under test
|
|
@@ -15,3 +20,11 @@ Each story names:
|
|
|
15
20
|
|
|
16
21
|
Use one batch at a time, save outputs under `artifacts/riddle-proof/<story-id>/`,
|
|
17
22
|
fix only high-signal failures, and rerun the same batch before expanding scope.
|
|
23
|
+
|
|
24
|
+
Use the CSV to choose the next batch:
|
|
25
|
+
|
|
26
|
+
- `passed`, `product_regression_expected`, and `found_fixed` rows need receipts
|
|
27
|
+
in `artifact_or_pr`.
|
|
28
|
+
- `ready_to_run` rows are good next targets for live dogfood passes.
|
|
29
|
+
- `needs_product_hook` rows point to product surfaces that need an import, shared
|
|
30
|
+
contract, or manual proof-view smoke before they can become recurring.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
area,user_story_id,user_story,expected_behavior,surface,runner,evidence_required,last_result,last_run,artifact_or_pr,finding,next_action,priority,failure_class
|
|
2
|
+
"Authoring","rp-story-profile-suggest-drafts-not-verdicts","As a proof author, I can ask for suggested checks without accidentally treating the suggestion as proof.","Output is a draft profile only; it contains no passed, product_regression, or proof_insufficient verdict.","profile-suggest","local-cli","Generated profile; absence of proof verdict; saved stdout or draft path","passed","2026-06-21","docs/riddle-proof-story-matrix-runs/2026-06-21-initial-batch.md","Authoring boundary held: suggestions stayed drafts.","Promote after one more route-specific use against a real product change.","P2","doc_or_ux_gap"
|
|
3
|
+
"Local core","rp-story-local-core-trust-boundary","As a framework maintainer, I can validate core trust-boundary behavior without hosted infrastructure.","Local core regression pack passes route, query/hash, thrown-error, missing-selector, and no-diff cases.","regression-pack local core","local-core","regression-pack-result.json; required cases present; forbidden terminal markers absent","passed","2026-06-21","docs/riddle-proof-story-matrix-runs/2026-06-21-initial-batch.md","Core contracts are covered by a repeatable local suite.","Keep recurring and run before hosted batches.","P1","contract_gap"
|
|
4
|
+
"Hosted run","rp-story-hosted-happy-path-produces-artifacts","As a maintainer, I can run a hosted profile against a live route and receive evidence-backed artifacts.","Hosted run-profile returns passed and writes profile-result, summary, proof JSON, console, DOM summary, and screenshots.","run-profile hosted runner","hosted-riddle","profile-result.json; proof.json; screenshot; riddle.job_id","passed","2026-06-21","job_366d440b","Hosted happy path passed with 5/5 checks and artifact links.","Keep recurring; reuse as known-good packet for reporting and recovery checks.","P1","product_regression"
|
|
5
|
+
"Hosted negative control","rp-story-hosted-negative-control-stays-regression","As a maintainer, I can run a deliberate missing-selector profile and see product_regression instead of a false pass.","Negative control returns product_regression with failed-check evidence and artifacts.","run-profile hosted runner","hosted-riddle","profile-result.json; failed check; summary.md; console.json","product_regression_expected","2026-06-21","job_9f446230","Negative control stayed red: 1 passed / 1 failed.","Keep recurring next to hosted happy path.","P1","contract_gap"
|
|
6
|
+
"Cold start","rp-story-cold-start-does-not-duplicate-too-soon","As a hosted runner user, I can submit work while workers are scaled to zero without the client declaring the job stale too early.","Client waits through accepted worker cold-start latency and reports worker-wake progress.","hosted worker cold start","hosted-riddle","progress output; profile-result.json; queue/pre-submission timing","passed","2026-06-21","job_366d440b","Cold start waited about 165 seconds and completed without duplicate retry.","Run occasionally after infra changes; do not wait an hour for every batch.","P2","environment_blocked"
|
|
7
|
+
"Reporting","rp-story-pr-comment-renders-only-evidence-backed-status","As a reviewer, I can get a PR comment whose status, checks, screenshot, and links reflect the saved proof packet.","PR comment reads profile-result.json, uses profile check statuses, and links hosted artifacts.","pr-comment","local-cli","pr-comment-body.md; profile-result.json; screenshot/artifact links","found_fixed","2026-06-21","PR #947","Found real bug: profile packets were rejected or miscounted as 4 passed / 12 failed.","Keep recurring; replay against happy-path and negative-control packets.","P0","contract_gap"
|
|
8
|
+
"Artifact promotion","rp-story-profile-body-assertions-derive-from-real-artifact","As a profile promoter, I can derive body assertions from a real artifact before making a public claim.","Body assertion command emits present fragments and exits nonzero for missing required fragments.","profile-body-assertions","local-cli","body assertion output; nonzero missing-required case","passed","2026-06-21","docs/riddle-proof-story-matrix-runs/2026-06-21-initial-batch.md","Positive and missing-required cases behaved as a real gate.","Use when promoting public proof/profile claims.","P2","proof_insufficient"
|
|
9
|
+
"Artifact publication","rp-story-http-preflight-catches-publication-mismatch","As a publisher, I can preflight public artifact URLs before spending hosted browser time.","Preflight checks status, content type, bytes, required body fragments, forbidden body text, and JSON assertions.","profile-http-status-preflight","local-cli","preflight JSON; failed missing-fragment negative control","passed","2026-06-21","https://cdn.riddledc.com/scripts/job_366d440b/proof.json.json","Live CDN artifact passed positive checks; missing fragment failed clearly.","Keep as the cheap gate before broad hosted runs.","P1","product_regression"
|
|
10
|
+
"Recovery","rp-story-run-profile-recover-preserves-artifacts","As a user whose local process was interrupted, I can recover a hosted job and still get the proof artifacts and summary.","Recover preserves the original job id and writes profile-result, summary, proof JSON, console, DOM summary, and screenshot references.","run-profile recover","hosted-riddle","recovered profile-result.json; summary.md; proof.json; preserved job id","passed","2026-06-21","job_366d440b","Recovery reconstructed the hosted happy-path packet from the old job id.","Keep as recurring for interrupted-run confidence.","P2","environment_blocked"
|
|
11
|
+
"Package install","rp-ux-published-bin-resolves","As a new user, I can invoke the published package binary from a clean temporary directory.","npm exec resolves riddle-proof-loop and prints CLI help when npm is on PATH.","published package bin","npm-exec","npm exec output; package version","passed","2026-06-21","@riddledc/riddle-proof@0.8.68","Earlier command-not-found was local PATH, not a package bin defect.","Repeat after package metadata or bin changes.","P2","configuration_error"
|
|
12
|
+
"Local browser","rp-ux-local-playwright-runner-smoke","As a user avoiding hosted infra, I can run the local Playwright runner and receive the same profile-result contract shape.","riddle-proof-playwright writes profile-result.json, proof.json, console.json, dom-summary.json, summary.md, and artifact-manifest.json.","@riddledc/riddle-proof-runner-playwright","local-playwright","profile-result.json; artifact-manifest.json; screenshot or DOM evidence","passed","2026-06-21","docs/riddle-proof-story-matrix-runs/2026-06-21-ux-coverage-batch.md","Live local Playwright smoke passed against riddledc.com/proof with 5/5 checks.","Keep as local-vs-hosted parity smoke; rerun after runner package changes.","P1","configuration_error"
|
|
13
|
+
"Viewport matrices","rp-story-viewport-aggregate-does-not-hide-child-failure","As a maintainer running viewport matrices, I can aggregate child runs without losing the failing viewport.","Aggregate returns the worst child verdict, lists child outputs, and separates summed poll time from max child latency.","run-profile aggregate","local-cli","child profile-result files; aggregate profile-result.json; summary.md","product_regression_expected","2026-06-21","docs/riddle-proof-story-matrix-runs/2026-06-21-ux-coverage-batch.md","Aggregate preserved the phone child product_regression via split_viewport_children.","Keep as a recurring negative-control aggregate using one passing child and one failing child.","P1","contract_gap"
|
|
14
|
+
"Formal contract","rp-story-formal-kernel-matches-runtime-contract","As a framework maintainer, I can prove the status/result contract that runtime tests depend on.","Lean kernel builds and runtime conformance tests mirror the formal contract cases.","formal/riddle-proof-kernel","lean-kernel","lake build; formal-conformance test log","passed","2026-06-21","PR #947 CI formal-kernel","Formal layer stayed in contract-hardening path, not runtime evidence collection.","Keep recurring when status semantics change.","P2","contract_gap"
|
|
15
|
+
"Hosted proof view","rp-ux-hosted-proof-view-contract-passed","As a hosted proof viewer, I see a passing packet rendered from the shared public-state contract.","Hosted proof view helper reports passed proof state only from passed/ready evidence and preserves handoff gating.","hosted proof view contract","formal-conformance","summarizeRiddleProofHostedProofViewSurface passed case; public-state claims; handoff claims","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Shared hosted-view helper uses the same public-state contract as PR comments.","Use this helper from any real hosted proof packet renderer.","P1","contract_gap"
|
|
16
|
+
"Hosted proof view","rp-ux-hosted-proof-view-contract-product-regression","As a hosted proof viewer, I see product_regression as failed evidence, not as a generic successful packet.","product_regression maps to proof_failed, keeps result_label product_regression, and prohibits proof_passed/ready_to_ship/merge claims.","hosted proof view contract","formal-conformance","product_regression packet; prohibited claims; suppressed merge recommendation","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Found and fixed the semantic gap where profile verdicts were not explicit public-state blockers.","Keep this as the negative-control renderer contract before UI smoke.","P1","contract_gap"
|
|
17
|
+
"Hosted proof view","rp-ux-hosted-proof-view-contract-proof-insufficient","As a hosted proof viewer, I see missing or incomplete evidence as proof_insufficient with an explicit disclosure.","proof_insufficient maps to proof_blocked, keeps result_label proof_insufficient, and requires proof_insufficient disclosure.","hosted proof view contract","formal-conformance","proof_insufficient packet; disclosure; prohibited proof_passed claim","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Incomplete evidence now stays blocked in public consumer surfaces.","Keep paired with product_regression in renderer smoke tests.","P1","proof_insufficient"
|
|
18
|
+
"Hosted proof view","rp-ux-hosted-proof-view-product-renderer-imports-contract","As a hosted proof viewer, the actual product renderer imports the shared contract instead of rendering raw proof fields.","Hosted proof packet UI uses @riddledc/riddle-proof/public-state or an equivalent shared wrapper for status, handoff, and disclosures.","hosted proof renderer","manual-review","renderer import; screenshot; passed and negative-control packets","needs_product_hook","","","Read-only site scan found proof/example pages, but no live hosted proof packet renderer importing public-state yet.","Wire any hosted proof packet renderer to summarizeRiddleProofHostedProofViewSurface and run passed plus negative-control UI smoke.","P1","contract_gap"
|
|
19
|
+
"Agent summary","rp-ux-agent-summary-contract-proof-insufficient","As an agent consuming Riddle Proof output, I see proof_insufficient as incomplete evidence, not as success.","Agent summary helper maps proof_insufficient to proof_blocked and prohibits proof_passed.","agent summary contract","formal-conformance","summarizeRiddleProofAgentSummarySurface proof_insufficient case; disclosure; prohibited claim","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Agent-facing proof_insufficient summaries now share the public-state blocker contract.","Keep as a fixture for agent-output golden summaries.","P1","proof_insufficient"
|
|
20
|
+
"Agent summary","rp-ux-agent-summary-contract-environment-blocked","As an agent consuming Riddle Proof output, I see environment_blocked as a blocker outside product correctness.","Agent summary helper maps environment_blocked to proof_blocked, suppresses merge recommendations, and requires environment disclosure.","agent summary contract","formal-conformance","environment_blocked packet; suppressed merge recommendation; disclosure","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Environment blockers stay visible and cannot become proof_passed in agent summaries.","Use in hosted cold-start/network-blocked summary tests.","P1","environment_blocked"
|
|
21
|
+
"Agent summary","rp-ux-agent-summary-contract-human-review","As an agent consuming Riddle Proof output, I see needs_human_review as a held proof state, not a pass.","Agent summary helper maps needs_human_review to proof_blocked and requires human-review disclosure.","agent summary contract","formal-conformance","needs_human_review packet; disclosure; prohibited proof_passed claim","passed","2026-06-21","packages/riddle-proof/formal-conformance.test.js","Human-review verdicts now stay blocked in public consumer surfaces.","Keep this for evidence packets with subjective or unsupported checks.","P2","contract_gap"
|
|
22
|
+
"Agent summary","rp-ux-agent-summary-product-wiring-uses-contract","As an agent consuming real Riddle Proof output, the emitted summary uses the shared contract rather than raw fields.","Agent-facing summaries import/use the public-state consumer helper for status, handoff, and prohibited claims.","agent-facing summary","manual-review","summary text; contract import or documented gap; negative-control packet","needs_product_hook","","","Package helper is now contract-tested; product wiring still needs an executable consumer check outside PR comments.","Find the actual agent summary renderer/emitter and wire or verify summarizeRiddleProofAgentSummarySurface usage.","P1","contract_gap"
|
|
23
|
+
"Release and publish","rp-ux-release-publish-flow","As a package maintainer, I can merge a fix, get a version PR, and publish the package without manual status fakery.","Changeset release PR validates, merges, and trusted npm publish updates latest.","changesets release","github-actions","release PR; Release workflow; npm view latest","passed","2026-06-21","@riddledc/riddle-proof@0.8.68","Release path worked for the reporting fix and published with provenance.","Keep GitHub Action noise low and use this as release smoke.","P2","environment_blocked"
|