Skip to content

fix(dashboards): replay keyed create after concurrent title activation - #52

Draft
VibeSWE wants to merge 6 commits into
dashboard/prerequisite-agent-apifrom
dashboard/fix-idempotent-create-race
Draft

VibeSWE wants to merge 6 commits into
dashboard/prerequisite-agent-apifrom
dashboard/fix-idempotent-create-race

Conversation

@VibeSWE

@VibeSWE VibeSWE commented Oct 19, 2026 •

Copy link
Copy Markdown

A concurrent keyed create can read an absent dashboard, then lose the title claim after another node commits the same request and activates its title. It currently returns 409 title_conflict instead of replaying the durable create receipt.

On that title-conflict path only, reread the deterministic dashboard receipt and use the existing replay helper. Matching requests return current configuration and the original applied revision, including after a later edit. Different arguments retain idempotency_conflict; a distinct key retains title_conflict. The retry does not rewrite the document or title.

Stack: depends on prerequisite draft #51; base is dashboard/prerequisite-agent-api (54e8de3352e3804586952f90b3c02aa4a0345804), not main. Only src/users/dashboard_service.rs changes in this layer: the exact supplied fix and regression (158 additions / 3 deletions). Keep draft until the prerequisite's public API compatibility/security/resource-cost blockers and remaining validation are resolved. No broader compatibility claim is made here.

The regression pauses an actual absent read while another service commits, then covers four cases: identical create; identical create after a later edit; same key/different arguments; distinct key/same title. Each checks one document and unchanged stored document/title versions after the late replay or conflict.

Fresh verification: exact patch applicability and reverse check; one-file stack diff; baseline SHA-256 ef366d16c2e8d178b16cbf80a504708e70304feb253adefcb76c89e0bed3a38b; resulting SHA-256 7686f9e862c8b27f6db9d63bdfb73dbcbabcf8707f4c30014f6555ad82f1c8c1; /home/ajs/.cargo/bin/rustfmt --check --edition 2024 --config skip_children=true src/users/dashboard_service.rs; git diff --check: all passed.

Not freshly executed: Rust compilation/test suite and this four-case regression; current CI pending. Historical R81 reconstructed-overlay evidence (835 passed / 1 ignored and the four race subcases) is not a fresh branch test. The prerequisite's fresh 62-test frontend run, TypeScript, formatting and Python syntax checks are documented in #51; the race layer does not change frontend code. No new Rust build target, server, benchmark, dependency installation, merge, or deployment was performed.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

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.

1 participant