Skip to content

test(cards): proposed R5 integration of #773 onto #811 (post-repair-C) - #876

Closed
NewWorldVenture wants to merge 5 commits into
claude/card-pending-owner-and-cardholder-7q6vtffrom
claude/card-r5-integration-7q6vtf
Closed

NewWorldVenture wants to merge 5 commits into
claude/card-pending-owner-and-cardholder-7q6vtffrom
claude/card-r5-integration-7q6vtf

Conversation

@NewWorldVenture

Copy link
Copy Markdown
Owner

Proposed integration: #773's characterization tests onto #811, with R5 updated for repair C. This is a separate proposal so the R5 merge-order patch isn't waiting idle for an integration order. Neither #773 nor #811 is changed.

Draft. Do not merge without the merge lane's decision. Base: #811's branch claude/card-pending-owner-and-cardholder-7q6vtf at aad8eac54.

Commits:

What R5 now pins (after C):

  • Two first orders, Virtual and physical, for a child with no cardholder share one provider cardholder and one stripe_cardholders row, and no cardholder failure is logged.
  • In one millisecond, both card requests carry card-wallet-a-<ms>. The provider refuses the second as an idempotency error, and that order fails with money.couldNotIssueTheCard. This is the inherited key collision the owner kept open in 5964165675.
  • Re-ordering the refused type afterwards issues it.

Local results:

Run Result
Combined tree, unchanged R5 1 of 11 fails (R5 only)
Combined tree, this R5 11/11 pass across 5 runs
Control: this R5 with main's issuing.ts Fails on R5 only

eslint and tsc --noEmit are clean.

How it's used:

No source change, provider call, credential, schema or production change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS


Generated by Claude Code

claude added 2 commits October 3, 2026 11:49
… card key refuses one

With ensureCardholder adopting the exact duplicate (repair C), two first
orders for one child no longer fail at the cardholder step. They now meet
the inherited card-<wallet>-<ms> idempotency key, so in one millisecond
the provider refuses the second with the action's own text. Same verified
patch as #811 comment 5968508930.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
@vercel

vercel Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
bubaly Ignored Ignored Oct 3, 2026 4:12pm UTC

Request Review

claude added 2 commits October 3, 2026 11:55
Mobile has been red on main since 2026-10-03 (from 79a0e11 on) on a new
high advisory: braces <=3.0.3, stack-exhaustion denial of service on deeply
nested patterns. 3.0.3 is the latest release, so there is no fix to take.
braces arrives only through Expo's build tooling: expo -> @expo/cli ->
@expo/metro-file-map -> micromatch.

The owner asked for it to be allowlisted like node-forge (#838): one more
entry in mobile/npm-audit-allowlist.json, by GHSA id for its own package,
plus the CI comment. Any other high advisory, including a new one on
braces, still fails.

Checked against mobile/'s lockfile: with main's list the audit fails on
GHSA-vfj7-8cjw-p6xm (as on main); with this list it passes, 2 allowlisted.
The allowlist tests and the MAIN-F-C10 pin pass; the workflow and the
allowlist parse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TRY21ZKsFrfB3qtoP972A4
(cherry picked from commit 25718db)
…eason

Review 5968590899 on #870: the reason named only expo -> @expo/cli ->
@expo/metro-file-map -> micromatch. The lockfile also has expo ->
@expo/metro -> metro-file-map@0.84.5 -> micromatch -> braces@3.0.3. The
reason now names both, and says the lockfile shows these paths without
showing whether braces reaches a device bundle. Reason text only; the
accepted advisory, the package and the CI step are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TRY21ZKsFrfB3qtoP972A4
(cherry picked from commit cc6540c)

Copy link
Copy Markdown
Owner Author

CI on fb7a27bc8, and the Mobile fix ported in 644a90b86.


Generated by Claude Code

Copy link
Copy Markdown
Owner Author

Hosted CI on 644a90b86: all green. Typecheck · Lint · Test · Build, E2E, Database and Mobile (Expo) all passed. Mobile is green with main's #870 braces entry ported unchanged (5969110043). Merge state is clean. This PR stays a draft.


Generated by Claude Code

Copy link
Copy Markdown
Owner Author

Head moved to edc7627fb: main's audit hardening ported unchanged.


Generated by Claude Code

NewWorldVenture pushed a commit that referenced this pull request Oct 4, 2026
#773 (merged as 15da7b5) added tests/money-card-retry-characterization.test.ts,
which characterizes card issuance BEFORE repair C. On #811 merged with
main, "reproduces: virtual and physical ordered together for a child
with no cardholder — one is refused at the cardholder step" fails,
because #811's repair C makes that order succeed. No textual conflict.

The next commit is R5, the verified follow-up already published on
#876 (fb7a27b). Only R5 is carried: #876's npm/mobile audit commits
are already in main through #887.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS

Copy link
Copy Markdown
Owner Author

Closing: this branch's content is now carried by #811 (R5 cherry-picked as 6b09a2e after #773 merged, per the note of 2026-10-04 12:36 UTC), and a merge with #811's head leaves no remaining diff. #882 is retargeted onto #811's branch so the card stack keeps its base.


Generated by Claude Code

NewWorldVenture pushed a commit that referenced this pull request Oct 4, 2026
#876 was closed (its content is carried by #811) and #882 retargeted onto
#811's branch. The one conflict is tests/money-card-retry-characterization.test.ts,
added on both sides: #811's copy (R5 cherry-picked as 6b09a2e) is
byte-identical to #876's R5 (fb7a27b) that this branch already builds on, so
this branch's version, R5 plus repair B's pinned changes, is kept unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants