test(ci): rehearse PR 216 redelivery integration#240
Conversation
…o fix/mpp-session-state-hardening # Conflicts: # typescript/packages/mpp/src/server/Session.ts # typescript/packages/mpp/src/server/session/on-chain.ts # typescript/packages/pay-kit/src/adapters/mpp-session.ts # typescript/packages/pay-kit/src/config.ts
|
@greptile-apps please re-review. The rehearsal now preserves the Go v2 settlement outbox/lease semantics, removes stale PHP replay-store escape wiring, and restores the TypeScript subscription replay-store public contract; focused Go race/full, PHP full, Python session, and TypeScript build/type checks are green. |
Greptile SummaryThis integration rehearsal combines six language SDKs (Go, Python, TypeScript, Rust, PHP, Ruby) and the full CI/harness matrix into a single rehearsal head against The substantive changes include:
Confidence Score: 4/5The three previously flagged issues have all been addressed: the nil-RPC + non-nil-signer gap is now rejected at construction, the settlement-not-landed TOCTOU was reworked to use IsBlockhashValid at finalized commitment, and the VerifyTopUpTx dispatch now uses a typed switch with a clear diagnostic. No new issues of comparable weight were introduced. The VerifyTopUpTx any field in SessionConfig still allows a mistyped verifier to be assigned without a compile-time error when constructing the struct directly. The runtime error is now descriptive, but the failure only surfaces during a live top-up rather than at server construction. NewSession always writes a properly-typed value, so the public API path is safe. go/protocols/mpp/server/session.go — SessionConfig.VerifyTopUpTx is typed any; a construction-time type assertion in NewSessionServer would eliminate the last runtime-only detection path for direct struct users. Important Files Changed
Reviews (6): Last reviewed commit: "fix(integration): preserve replay store ..." | Re-trigger Greptile |
|
@greptile-apps please re-review the updated integration head. It now preserves explicit-false replay-store precedence over environment opt-in, restores only the localnet fallback, and closes the Go lint, PHP constructor, and TypeScript atomic-store merge gaps; adversarial Sol verification is clean. |
…o fix/rust-security-hardening
…o fix/ruby-replay-store-capability
…o fix/mpp-subscription-hardening
…fix/rust-security-hardening
…o fix/ruby-replay-store-capability
…' into fix/harness-adversarial-hardening
1241259 to
5c8ca50
Compare
The public encoder returns a Uint8Array over ArrayBufferLike, and both the helper's declared return type and WebCrypto's BufferSource require a non-shared ArrayBuffer backing, so the CI typecheck rejected the direct return. Copy the encoded bytes into a fresh ArrayBuffer (the shape the file used before), keeping the public bigint-native encoder for the content.
…ix/mpp-replay-store-hardening
…into fix/mpp-subscription-hardening
…into fix/python-security-hardening
…nto fix/mpp-session-state-hardening
… into fix/x402-replay-hardening
…fix/rust-security-hardening
…o fix/ruby-replay-store-capability
…' into fix/harness-adversarial-hardening
The reconciled boot-policy contract this leaf carries drives the high-level createPayKit fixture, which needs three support pieces that lived one leaf later: the setup-harness build-pay-kit input (ordered @solana/mpp -> @solana/pay-kit build) wired into the TS-harness job, the harness package declaring the pay-kit file dependency, and the tsconfig exclusion that keeps the shared cross-language typecheck on its @solana/mpp-only baseline (the fixture is typechecked by the dedicated paths that actually build pay-kit). Without them the shared Build-harness-deps job typechecks a module that is never built there and every downstream leg dies.
…into fix/mpp-subscription-hardening
…into fix/python-security-hardening
…nto fix/mpp-session-state-hardening
… into fix/x402-replay-hardening
…fix/rust-security-hardening
…o fix/ruby-replay-store-capability
…' into fix/harness-adversarial-hardening
…subject Same subject rule as the harness.yml python leg carried by the cascade root: the python session settle path and its marker fixture land with the mpp session-state leaf, and pre-hardening the settle transaction is rejected on-chain (0x104). The matrix workflow's own copy of the leg was missed in the first pass and stayed permanently red; it now waits on the same subject and activates with it.
…ix/mpp-replay-store-hardening
…into fix/mpp-subscription-hardening
…into fix/python-security-hardening
…nto fix/mpp-session-state-hardening
… into fix/x402-replay-hardening
…fix/rust-security-hardening
…o fix/ruby-replay-store-capability
…' into fix/harness-adversarial-hardening
Purpose
Temporary integration rehearsal for the #216 redelivery stack against #219. This combines the current leaf heads to exercise the complete CI/harness matrix before maintainers merge the reviewable per-language and per-protocol PRs.
Included proof
This PR is not a replacement for the leaf PRs and should not be merged directly.