Skip to content

adopt(vendure-refresh): ready to send: dashboard double submit still reproduces on 3.8.1; patch rebased and re-tested - #158

Open
MeharPro wants to merge 1 commit into
mainfrom
claude/magical-wright-izmnjr
Open

MeharPro wants to merge 1 commit into
mainfrom
claude/magical-wright-izmnjr

Conversation

@MeharPro

@MeharPro MeharPro commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Status: ready to send.

What

I re-ran the Vendure dashboard double-submit hunt on vendurehq/vendure master at f97b187 (2026-11-02, 3.8.1).

  • Still reproduces without GenClass. A double-click on Create or Update on any useDetailPage detail page sends the mutation twice, and Create makes two entities.
  • Patch rebased with no source changes. One correction: the e2e test moves into e2e/tests/catalog/collections.spec.ts, as Vendure's AGENTS.md asks, and its cleanup no longer races between parallel workers.
  • Issue recommendation: file a new dashboard issue rather than comment on #2117. #2117 is the admin-ui report, still open and unchanged since 2025-04-02, and the patch does not fix it. The new issue also corrects #4884's claim that "the React dashboard does avoid the double-click".

No dashboard double submit has been filed upstream since the hunt date.

Files:

  • docs/adoption/hunts/vendure.md: new status header and section 9, "Refresh (2026-11-03)".
  • docs/adoption/hunts/vendure.patch: rebased; applies to f97b187 and to aba3e9c; 4 files, +240 / −9.
  • docs/adoption/hunts/vendure-issue.md: the new-issue decision, the "before filing" checklist (session items done), the issue and PR texts with updated facts and the AI-assistance paragraph.
  • docs/adoption/hunts/vendure-refresh/summary.json and summarize.mjs: every number below, with the script that produced them from the harness's raw runs.
  • docs/adoption/hunts/README.md: the Vendure row.

To send (a person, from a personal account, after the owner's OK)

  1. Search repo:vendurehq/vendure once more for the queries listed in the draft.
  2. Reproduce by hand, following the issue's "To Reproduce": DB=sqlite bun run populate && DB=sqlite bun run dev:direct, double-click Create on a new collection, and see two collections.
  3. File the issue from vendure-issue.md using the bug template (blank issues are off), and note its number #NNNN.
  4. Fork vendurehq/vendure and branch from master. Apply vendure.patch, then sed -i 's/#2117/#NNNN/g' on its four files.
  5. From packages/dashboard, run npx vitest run src/lib/framework/form-engine/use-generated-form.spec.tsx and CI=true VITE_TEST_PORT=5176 npx playwright test --config e2e/playwright.config.ts e2e/tests/catalog/collections.spec.ts -g "Issue #NNNN".
  6. Read the diff.
  7. Commit as fix(dashboard): submit a detail form only once on double-click, with body Fixes #NNNN. Relates to #2117.
  8. Open the PR against master with the drafted text, and sign the CLA when the bot asks.

If asked: the fix is client-side only. #5007 (in 3.8.0) stops duplicate translation rows but not duplicate entities, and all counts were measured with it in place.

Measured (2026-11-03)

All runs are on production dashboard builds against the SQLite dev server, with presses sent through CDP 0, 30, 80 and 150 ms apart. Each sweep has 3 trials per page and gap, over 4 pages.

run Create: 2 mutations duplicate entities Update: 2 mutations
master, no GenClass 21/48 (12/12 at 0 ms, 9/12 at 30 ms) 15 25/48 (12/12, 9/12, 4/12 at 80 ms)
patch, no GenClass 0/48 0 0/48

Tests:

  • Unit tests: the two guard tests fail 3/3 on master and pass 3/3 patched.
  • e2e Create and Update: both fail 3/3 on master (2 mutations each) and pass 3/3 patched.
  • Also on the patched build: the whole collections.spec.ts (27 tests) and --repeat-each=3 pass, check-types is clean, and the dashboard unit suite passes (972 passed, 4 skipped).

GenClass duplicate witness, Create only:

  • master: 24 of the 25 doubled trials (missed one Facet trial at a 30 ms gap).
  • Patched: 0 false reports on 48 single-submit trials.

Problems with GenClass itself

  • The TanStack timer 0ms false stale-write now appears on 12 of 12 clean patched runs on every page. On 2026-10-24 it was about half.
  • New, undiagnosed stale-write findings on base-ui component state after user clicks.
  • react-hook-form stale-write findings duplicate the witness about seven times over per double submit, which drowns genclass_findings.
  • The swarm brief names vendure-ecommerce/vendure, but the search API rejects that name; the canonical name is vendurehq/vendure.

Details are in report section 9.6.

Checks

Docs-only change under docs/adoption/. No runtime, MCP, test or model-visible file was touched, and no dependency was added. GenClass was built from main (c1c9e14) only to run the harness.

Notes for the reviewer

Start with report sections 9.3 and 9.4.

Not run:

  • Vendure's full dashboard e2e suite and its vitest.plugin.config.mts, for lack of time; they touch nothing the patch changes.
  • The 100 ms-latency sweep, so the issue cites the 2026-10-24 figure for it.

Branch: the session was assigned claude/magical-wright-izmnjr, so the branch is not adopt/vendure-refresh. Time spent: about 1 h 15 min.


Generated by Claude Code

Re-ran the hunt on vendurehq/vendure master f97b187 (2026-11-02, 3.8.1):
the double submit still reproduces without GenClass (Create 21 of 48
trials, 15 duplicate entities; Update 25 of 48), and the rebased patch
brings both to 0 of 48. The unit tests and the e2e tests fail 3 of 3 on
master and pass 3 of 3 with the patch.

The e2e test moves into e2e/tests/catalog/collections.spec.ts, per
Vendure's AGENTS.md, and cleans up only the collections its own worker
created. The drafts recommend a new dashboard issue (linking #2117,
#4884, #5007) over a comment on #2117, and gain the AI-assistance
paragraph. The report has a dated Refresh section (9), and
vendure-refresh/ holds the summary and the summariser.

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

This branch has not been deployed

No deployments
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