Bind external requests to canonical schema resources - #181
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@coderabbitai review |
|
@codex please review |
✅ Action performedReview finished.
|
|
Warning Review limit reached
Next review available in: 34 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
Summary by CodeRabbit
WalkthroughExternal-action builds now require generator-owned canonical CBOR resource artifacts. The CLI loads and independently validates bounded ChangesExternal-action resource validation
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Actionable comments posted: 8
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/edict-cli/src/application_build.rs`:
- Around line 2799-2848: Replace
fixed_seed_request_resource_mutations_fail_closed with a single representative
mutation, removing RESOURCE_MUTATION_SEED and the ordinal loop, since every
iteration currently changes only definition.root and asserts the same outcome.
Keep the existing temp-tree setup, artifact mutation, build_application call,
and ExternalActionResourceClosureMismatch assertion for that one case.
- Around line 43-44: Centralize EXTERNAL_ACTION_RESOURCE_API_VERSION and
EXTERNAL_ACTION_RESOURCE_DIGEST_DOMAIN as pub const values in
edict-syntax/src/canonical.rs beside the existing digest-domain constants, and
re-export them from the edict_syntax crate root. In
crates/edict-cli/src/application_build.rs lines 43-44 and
xtask/src/lawpack_goldens.rs lines 15-17, remove the local duplicate constants
and import both shared symbols from edict_syntax; leave DIGEST_FRAME unchanged
in xtask.
- Around line 519-521: Replace the unreachable! branch in the build path around
the definition field lookup with the existing ApplicationBuildFailure
constructor, returning a structured failure with the appropriate stable error
kind when "definition" is absent. Preserve the successful field extraction and
avoid relying on the fields.get call being guaranteed by the string-literal
field set.
- Around line 2785-2792: Update the refusal-case table and its assertion in the
relevant test so each case carries its expected failure kind: missing,
duplicate, and disconnected must require ExternalActionResourceClosureMismatch,
while noncanonical must require InvalidExternalActionResource. Replace the broad
matches! acceptance with an equality check against the case-specific
expectation, preserving the existing failure reporting.
In `@docs/topics/external-action-requests/test-plan.md`:
- Around line 82-86: Standardize this rejection class on “sentinel” terminology,
preserving EXTREQ-TP-026 in
docs/topics/external-action-requests/test-plan.md:82-86 as the canonical
wording. Update the corresponding “placeholder identities” wording in
docs/topics/cli/test-plan.md:106-107, docs/topics/cli/README.md:97-107, and
CHANGELOG.md:13-18 to use “sentinel” consistently, including the related
resource descriptions.
In `@fixtures/lawpack/workspace-patch/README.md`:
- Around line 14-20: Add [claim:<id>, confidence:<value>] tags to the first
occurrences of the technical claims in the README section, and append the
required collapsed citations appendix. Cite xtask/src/lawpack_goldens.rs:478-583
and the repository-relative loader implementation that validates the complete
closure, including line ranges and Git SHAs.
In `@xtask/src/lawpack_goldens.rs`:
- Around line 433-438: Update xtask/src/lawpack_goldens.rs:433-438
workspace_snapshot_application_source and xtask/src/lawpack_goldens.rs:731-736
workspace_patch_application_source to accept GeneratedExternalActionResource
references instead of loose digest strings; add coordinate: String to
GeneratedExternalActionResource at xtask/src/lawpack_goldens.rs:185-199 and
populate it from external_action_resource; update callers at
xtask/src/lawpack_goldens.rs:226-233 to pass resource values, and make both
templates use each resource’s coordinate and digest rather than duplicated
hardcoded coordinates (snapshot sites 461, 463, 470; patch sites 759, 761, 768).
- Around line 1452-1458: Update the non-Lowered branch after lower_to_target_ir
in the lawpack golden generation flow to include the returned failures
diagnostics in the error message, following the existing build_application
pattern. Preserve the status reporting while formatting the failures payload so
callers receive the underlying causes instead of only TargetLoweringStatus.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 8157d51d-ebf1-4e15-9322-913261e048b0
📒 Files selected for processing (31)
CHANGELOG.mdcrates/edict-cli/src/application_build.rsdocs/topics/cli/README.mddocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.mddocs/topics/external-action-requests/test-plan.mdfixtures/lawpack/workspace-patch/README.mdfixtures/lawpack/workspace-patch/apply-validated-patch.core.cborfixtures/lawpack/workspace-patch/apply-validated-patch.core.sha256fixtures/lawpack/workspace-patch/apply-validated-patch.edictfixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.cborfixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.sha256fixtures/lawpack/workspace-patch/input-schema.cborfixtures/lawpack/workspace-patch/input-schema.sha256fixtures/lawpack/workspace-patch/reconciliation-law.cborfixtures/lawpack/workspace-patch/reconciliation-law.sha256fixtures/lawpack/workspace-patch/settlement-schema.cborfixtures/lawpack/workspace-patch/settlement-schema.sha256fixtures/lawpack/workspace-snapshot/README.mdfixtures/lawpack/workspace-snapshot/input-schema.cborfixtures/lawpack/workspace-snapshot/input-schema.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.core.cborfixtures/lawpack/workspace-snapshot/observe-workspace.core.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.edictfixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.cborfixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.sha256fixtures/lawpack/workspace-snapshot/reconciliation-law.cborfixtures/lawpack/workspace-snapshot/reconciliation-law.sha256fixtures/lawpack/workspace-snapshot/settlement-schema.cborfixtures/lawpack/workspace-snapshot/settlement-schema.sha256xtask/src/lawpack_goldens.rs
📜 Review details
⏰ Context from checks skipped due to timeout. (3)
- GitHub Check: supply-chain (cargo-deny)
- GitHub Check: rust stable (fmt · clippy · test)
- GitHub Check: rust msrv 1.94.0 (fmt · clippy · test)
🧰 Additional context used
📓 Path-based instructions (6)
**/*
📄 CodeRabbit inference engine (AGENTS.md)
**/*: Never amend Git commits, usegit rebasewithout explicit user approval, or force any Git operation; use new commits and regular merge commits instead.
Do not create draft pull requests, and never use acodexprefix in branch names, pull request titles, or commit messages.
Pull requests for issue work must include GitHub auto-close text such asCloses#123`` for every issue they intend to close.
Usecodex-think --remember --jsonwhen starting a session, entering the repository, or regaining context, and record significant durable events with `codex-think "..." --json`. Treat Think as memory rather than repository truth.
Every pull request body must contain `## Plain-English Walkthrough` with `### TL;DR` and `### Walkthrough`, explaining the prior behavior, new model and dataflow, invariants, failures, compatibility, and verification as applicable.
Use Mermaid diagrams for nontrivial flow, lifecycle, ownership, or component interaction when clearer than prose; every diagram requires an introductory paragraph, the diagram, the exact collapsed caption structure, and a concluding interpretation.
Tag each material technical claim at first occurrence as `[claim:, confidence:]`, cite evidence using repository-relative paths, line numbers, and Git SHAs, and end the explanatory body with a collapsed citations appendix.
If CodeRabbit is actively reviewing, obtain its approval before merge; if unavailable due to limits or credits, request `@codex review please` and wait for the alternate response. Do not treat unavailability as approval unless a maintainer explicitly overrides the gate.
For release preparation, write the release thesis first, reconcile changes from the previous tag, update release policy and tests, verify the milestone has no open issues and no unauthorized crates.io publication occurred, and record a durable release report.
Run `cargo xtask verify` before claiming a branch is ready.
Files:
fixtures/lawpack/workspace-patch/input-schema.sha256fixtures/lawpack/workspace-patch/reconciliation-law.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.sha256fixtures/lawpack/workspace-snapshot/settlement-schema.sha256fixtures/lawpack/workspace-patch/apply-validated-patch.edictfixtures/lawpack/workspace-snapshot/reconciliation-law.cborfixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.sha256fixtures/lawpack/workspace-snapshot/input-schema.sha256fixtures/lawpack/workspace-snapshot/input-schema.cborfixtures/lawpack/workspace-snapshot/reconciliation-law.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.core.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.edictfixtures/lawpack/workspace-patch/settlement-schema.cborfixtures/lawpack/workspace-snapshot/settlement-schema.cborfixtures/lawpack/workspace-patch/reconciliation-law.cborfixtures/lawpack/workspace-patch/README.mdfixtures/lawpack/workspace-patch/input-schema.cborfixtures/lawpack/workspace-patch/settlement-schema.sha256fixtures/lawpack/workspace-patch/apply-validated-patch.core.sha256fixtures/lawpack/workspace-snapshot/observe-workspace.core.cborCHANGELOG.mddocs/topics/cli/README.mddocs/topics/external-action-requests/test-plan.mdfixtures/lawpack/workspace-patch/apply-validated-patch.core.cborfixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.cborfixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.cbordocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.mdfixtures/lawpack/workspace-snapshot/README.mdxtask/src/lawpack_goldens.rscrates/edict-cli/src/application_build.rs
**/*.{rs,md}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{rs,md}: Tests must assert software behavior and stable error kinds or structured artifacts, not implementation details, prose, paths, or merelyis_err(); documentation-tool tests may test validator behavior.
For nontrivial behavior, contract, workflow, release, schema, validation, or public-surface changes, follow RED/GREEN TDD: update the owningtest-plan.md, write the deterministic test first, observe the RED failure, implement the smallest coherent fix, then mark the case implemented only after executable evidence exists.
Files:
fixtures/lawpack/workspace-patch/README.mdCHANGELOG.mddocs/topics/cli/README.mddocs/topics/external-action-requests/test-plan.mddocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.mdfixtures/lawpack/workspace-snapshot/README.mdxtask/src/lawpack_goldens.rscrates/edict-cli/src/application_build.rs
**/*.{md,mdx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{md,mdx}: Documentation pages must have one primary reader job, separate user task help from contributor architecture and evidence maps, use concrete valid examples with expected results when relevant, and keep exact public facts in validated or generated reference material.
Update affected documentation in the same change as behavior, schema, release, workflow, or public-surface changes, or statedocs-impact: nonewith a concise rationale.
Files:
fixtures/lawpack/workspace-patch/README.mdCHANGELOG.mddocs/topics/cli/README.mddocs/topics/external-action-requests/test-plan.mddocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.mdfixtures/lawpack/workspace-snapshot/README.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Use tables for consistent-shape comparisons and evidence, bullets for unordered sets, numbered lists for ordered procedures or states, and focused branch-accurate snippets for exact syntax.
Files:
fixtures/lawpack/workspace-patch/README.mdCHANGELOG.mddocs/topics/cli/README.mddocs/topics/external-action-requests/test-plan.mddocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.mdfixtures/lawpack/workspace-snapshot/README.md
docs/topics/**
📄 CodeRabbit inference engine (AGENTS.md)
docs/topics/**: Topic shelves document landed behavior:README.mddescribes current HEAD truth,test-plan.mdrecords verification and known gaps, and optional architecture or rationale pages contain durable supporting information.
For every nontrivial behavior, contract, workflow, release, schema, validation, or public-surface change, identify or create the owning topic shelf, updatetest-plan.md, add executable evidence, updateREADME.mdonly after behavior exists, and runcargo xtask verify.
Do not update topic shelves for purely mechanical edits that do not change a contract; explain the omission in the pull request or final report.
Files:
docs/topics/cli/README.mddocs/topics/external-action-requests/test-plan.mddocs/topics/cli/test-plan.mddocs/topics/external-action-requests/README.md
**/*.rs
📄 CodeRabbit inference engine (AGENTS.md)
**/*.rs: For Rust changes, preserve claim integrity by providing executable evidence, keep compiler and validation paths deterministic and free of hidden I/O, and prefer structured public failures with stable error kinds over prose-only diagnostics.
Do not add Rust dependencies without pull-request rationale and contract-impact notes; treat planned lint, dependency, and fuzzing ratchets as planned until executable checks land.
Files:
xtask/src/lawpack_goldens.rscrates/edict-cli/src/application_build.rs
🔇 Additional comments (47)
docs/topics/cli/README.md (1)
80-84: LGTM!docs/topics/cli/test-plan.md (1)
46-46: LGTM!docs/topics/external-action-requests/README.md (5)
18-18: LGTM!
27-32: LGTM!
70-75: LGTM!
85-103: Steps verified againstload_external_action_resource/external_action_resource.Decode → meta-contract validation → digest recompute → exact-closure requirement sequence matches the implementation.
104-111: LGTM!docs/topics/external-action-requests/test-plan.md (2)
41-41: LGTM!
53-53: LGTM!xtask/src/lawpack_goldens.rs (5)
80-91: LGTM!Also applies to: 116-127
147-157: LGTM!
256-288: LGTM!Also applies to: 550-582
1416-1433: LGTM!
1459-1488: LGTM!Also applies to: 1490-1696
crates/edict-cli/src/application_build.rs (13)
45-46: LGTM!
71-81: LGTM!
107-137: LGTM!
171-172: LGTM!Also applies to: 341-345
460-480: LGTM!
482-518: LGTM!Also applies to: 522-533
535-635: LGTM!
637-727: LGTM!
729-738: LGTM!Also applies to: 764-770
799-847: LGTM!
1005-1020: LGTM!Also applies to: 1036-1041
2395-2412: LGTM!Also applies to: 2459-2536, 2599-2711, 2850-2911, 3275-3311, 3359-3377, 3447-3451, 3784-3784
849-894: 🔒 Security & PrivacyNo change needed.
The external-action resource closure is bidirectional and bounded: every required resource is looked up and compared by coordinate, kind, and canonical digest; any configured resource not in the closure is rejected as disconnected. Coordinate uniqueness is enforced before loading, and digest literals are case-normalized before this comparison.
fixtures/lawpack/workspace-snapshot/observe-workspace.edict (1)
23-32: LGTM!fixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.cbor (1)
1-2: LGTM!fixtures/lawpack/workspace-snapshot/observe-workspace.target-ir.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/reconciliation-law.cbor (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/reconciliation-law.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/settlement-schema.cbor (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/settlement-schema.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-patch/apply-validated-patch.core.cbor (1)
4-4: LGTM!fixtures/lawpack/workspace-patch/apply-validated-patch.core.sha256 (1)
1-1: 🗄️ Data Integrity & IntegrationVerify every changed checksum sidecar.
Recompute each hash from its paired final binary before merge.
fixtures/lawpack/workspace-patch/apply-validated-patch.core.sha256#L1-L1: compare againstapply-validated-patch.core.cbor.fixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.sha256#L1-L1: compare againstapply-validated-patch.target-ir.cbor.fixtures/lawpack/workspace-snapshot/observe-workspace.core.sha256#L1-L1: compare againstobserve-workspace.core.cbor.fixtures/lawpack/workspace-patch/apply-validated-patch.edict (1)
23-32: 🗄️ Data Integrity & IntegrationVerify the complete digest-locked resource closure.
The manifest pins digests that must be computed from the exact canonical resource bytes; validate the entire closure with the generator and external-action build tests.
fixtures/lawpack/workspace-patch/apply-validated-patch.edict#L23-L32: verify the input, settlement, and reconciliation digests against their generated sidecars.fixtures/lawpack/workspace-patch/input-schema.cbor#L1-L1: verify canonical CBOR, resource-definition validity, and equality with the pinned input-schema digest.fixtures/lawpack/workspace-patch/apply-validated-patch.target-ir.cbor (1)
2-3: LGTM!fixtures/lawpack/workspace-snapshot/observe-workspace.core.cbor (1)
1-2: LGTM!fixtures/lawpack/workspace-patch/input-schema.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-patch/reconciliation-law.cbor (1)
1-1: LGTM!fixtures/lawpack/workspace-patch/reconciliation-law.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-patch/settlement-schema.cbor (1)
1-1: LGTM!fixtures/lawpack/workspace-patch/settlement-schema.sha256 (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/README.md (1)
21-27: LGTM!fixtures/lawpack/workspace-snapshot/input-schema.cbor (1)
1-1: LGTM!fixtures/lawpack/workspace-snapshot/input-schema.sha256 (1)
1-1: LGTM!
|
Merge gate opened at 3148f0a: stable, MSRV, and cargo-deny checks pass; CodeRabbit approved the current head; zero unresolved review threads remain; local cargo xtask verify passes. main is unprotected and the repository has one direct collaborator, the author. Criteria 1–4 therefore substitute for a separate human approval under the recorded solo-maintainer rule. |
Plain-English Walkthrough
TL;DR
External-action source no longer pins placeholder schema or reconciliation digests. [claim:real-request-resources, confidence:1.00] The owning generator now emits canonical input-schema, settlement-schema, and reconciliation-law artifacts for both workspace observation and validated patch requests; the public application build independently validates their shape, recomputes their domain-framed identities, and requires the configured set to equal the compiler-emitted Target request closure.
Invalid resource closures fail before Core or Target IR publication. [claim:fail-closed-resource-closure, confidence:1.00] Missing, duplicate, disconnected, substituted, opaque, non-canonical, sentinel, fixed-seed mutated, and over-budget resource sets have executable rejection witnesses.
Walkthrough
Previously, Core and Target IR faithfully preserved schema and reconciliation coordinates, but the workspace fixtures bound those coordinates to repeated-byte placeholder digests. A caller could therefore present compiler-consistent request artifacts without presenting the real resources those identities claimed to name.
edict.application/v1now acceptsexternalActionResources, a bounded list of canonical resource artifact paths. Each artifact declares its coordinate, resource kind, and closed definition underedict.external-action-resource/v1. The build decodes canonical CBOR, validates the schema or reconciliation meta-contract, recomputes the exact domain-framed SHA-256 identity, and compares it to the request slot that cited it. [claim:independent-resource-admission, confidence:1.00]The authority and data flow is:
flowchart LR S[Edict source request] --> C[Compiler Core and Target IR] G[Generator-owned resource artifacts] --> A[Public build admission] C --> A A -->|exact complete closure| P[Publish Core and Target IR] A -->|missing or mismatched| R[Typed refusal]Caption: External request resource admission
This keeps request description separate from performance authority. The new artifacts contain declarative schemas and reconciliation bindings only. No provider component is invoked, no filesystem capability enters Edict semantics, and no adapter operation is performed. [claim:no-performance-authority, confidence:1.00]
Both workspace fixture families are regenerated through
cargo xtask lawpack-goldens --write, so the checked source, resource sidecars, Core, and Target IR remain one generator-owned closure. [claim:generator-owned-closure, confidence:1.00] No dependency was added.Compatibility impact is explicit: external-action application manifests must list every request resource in
externalActionResources, and consumers must repin the regenerated Core/Target artifacts. Executable-operation manifests reject a non-empty external resource list. The field is capped at 192 artifacts, matching three distinct resources for a 64-request closure.RED / GREEN
RED:
The test failed because
build_applicationreturned success for repeated-byte request resource identities.GREEN:
The full repository gate passed at
663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13: formatting, strict all-feature clippy, workspace and doc tests, every owned golden check, provider fixtures and contract packs, provider dependency boundary, topic contracts, and diff checks.Appendix: Citations
claim:real-request-resourcesxtask/src/lawpack_goldens.rs#1416@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;xtask/src/lawpack_goldens.rs#1490@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;xtask/src/lawpack_goldens.rs#1551@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13claim:fail-closed-resource-closurecrates/edict-cli/src/application_build.rs#849@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;public_external_action_build_rejects_sentinel_resource_identitiesatcrates/edict-cli/src/application_build.rs#2600@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;fixed_seed_request_resource_mutations_fail_closedatcrates/edict-cli/src/application_build.rs#2800@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13claim:independent-resource-admissioncrates/edict-cli/src/application_build.rs#482@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;crates/edict-cli/src/application_build.rs#535@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;crates/edict-cli/src/application_build.rs#799@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13claim:no-performance-authoritydocs/topics/external-action-requests/README.md#69@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;docs/topics/external-action-requests/README.md#102@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13claim:generator-owned-closurextask/src/lawpack_goldens.rs#177@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;xtask/src/lawpack_goldens.rs#472@663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13;lawpack_goldens_match_executable_codecpluscargo xtask verifyat663148a1ba1afbdbdf2ea9a7ba6da40d2e9a5d13Closes #180.