Skip to content

feat(backend): contract allowlist, correlation ids, webhook verify helper, deployment artifacts#644

Merged
Cedarich merged 4 commits into
Pulsefy:mainfrom
nottherealalanturing:main
Jul 10, 2026
Merged

feat(backend): contract allowlist, correlation ids, webhook verify helper, deployment artifacts#644
Cedarich merged 4 commits into
Pulsefy:mainfrom
nottherealalanturing:main

Conversation

@nottherealalanturing

@nottherealalanturing nottherealalanturing commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Implements four backend issues in one branch:

  • BE-67 (BE-67: Contract Method Allowlist Config #551): config-driven contract method allowlist enforced on compose/build/simulate endpoints via ContractMethodAllowlistGuard, with an admin GET /contracts/allowlist endpoint for operator visibility.
  • BE-68 (BE-68: Transaction Correlation IDs Across RPC + Horizon #552): thread the existing correlation id through transaction build/submit/simulate responses and into async webhook-delivery job payloads/headers (X-QuickEx-Correlation-Id), so a single id traces a request end-to-end including background processing.
  • BE-69 (BE-69: Webhook Signature Verification Helper Endpoint #553): POST /webhooks/verify-signature helper endpoint reusing the exact outgoing-webhook HMAC canonicalization, with deterministic reason codes (MISSING_FIELDS, INVALID_TIMESTAMP, SIGNATURE_MISMATCH, etc).
  • BE-70 (BE-70: Deployment Artifact Storage API #554): deployment artifact storage API (upload/list/download) with checksum verification, uploader/audit metadata, and a retention sweeper for deploy manifests, smoke reports, and registry snapshots.

Also fixes a pre-existing DI bug in ContractsModule (ContractChangeWebhookDispatcher was never registered as a provider, breaking app bootstrap) discovered while wiring the new allowlist/artifact providers into the same module.

Separately: bump the contract crate's transitive ethnum dependency from 1.5.2 to 1.5.3 (cargo update -p ethnum) to fix the CI build failure ("cannot transmute between types of different sizes") — an upstream ethnum bug fixed in 1.5.3, unrelated to any application code.

closes #551 closes #552 closes #553 closes #554

…lper, deployment artifacts

Implements four backend issues in one branch:

- BE-67 (Pulsefy#551): config-driven contract method allowlist enforced on
  compose/build/simulate endpoints via ContractMethodAllowlistGuard,
  with an admin GET /contracts/allowlist endpoint for operator visibility.
- BE-68 (Pulsefy#552): thread the existing correlation id through transaction
  build/submit/simulate responses and into async webhook-delivery job
  payloads/headers (X-QuickEx-Correlation-Id), so a single id traces a
  request end-to-end including background processing.
- BE-69 (Pulsefy#553): POST /webhooks/verify-signature helper endpoint reusing
  the exact outgoing-webhook HMAC canonicalization, with deterministic
  reason codes (MISSING_FIELDS, INVALID_TIMESTAMP, SIGNATURE_MISMATCH, etc).
- BE-70 (Pulsefy#554): deployment artifact storage API (upload/list/download)
  with checksum verification, uploader/audit metadata, and a retention
  sweeper for deploy manifests, smoke reports, and registry snapshots.

Also fixes a pre-existing DI bug in ContractsModule (ContractChangeWebhookDispatcher
was never registered as a provider, breaking app bootstrap) discovered while
wiring the new allowlist/artifact providers into the same module.

Separately: bump the contract crate's transitive `ethnum` dependency from
1.5.2 to 1.5.3 (cargo update -p ethnum) to fix the CI build failure
("cannot transmute between types of different sizes") — an upstream
ethnum bug fixed in 1.5.3, unrelated to any application code.
feat(backend): contract allowlist, correlation ids, webhook verify he…
@nottherealalanturing nottherealalanturing changed the title Update README.md feat(backend): contract allowlist, correlation ids, webhook verify helper, deployment artifacts Jul 10, 2026
@drips-wave

drips-wave Bot commented Jul 10, 2026

Copy link
Copy Markdown

@nottherealalanturing Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@nottherealalanturing nottherealalanturing marked this pull request as ready for review July 10, 2026 13:59
@Cedarich Cedarich merged commit 8da2c63 into Pulsefy:main Jul 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants