Skip to content

🤖 formal/plan-storage: model and repro gaps from the #5458 review #5462

Description

@ThomasK33

Follow-ups from the Codex review of #5458 (the plan-storage TLA+ model and repros). Each one refines the model or a repro. None changes the findings #5458 reports.

  1. Fork crash between registration and copy (MC_fork_race_fixed). With Crashes = TRUE and forkCopyAfterRegister, a fork can register and then crash before its copy. The fork's row is live without its plan. No invariant checks plan availability, so the fixed twin holds. Track plan presence per live row (or keep registration pending until the copy ends) before certifying the 🤖 fix: the fork plan copy runs before registration, so concurrent forks with one name keep the last copy #5175 fix ordering. Review threads: PRRT_kwDOPxxmWM6oWV5D, PRRT_kwDOPxxmWM6oWV5J.
  2. Removal guard and delete are one atomic step (MC_seeded_remove, ClearGuard). deletePlanFilesOfRemovedWorkspace awaits getAllWorkspaceMetadata() and then deletePlanFilesOfMetadata() separately. A create of the same name can register between the two awaits. Split guard and delete into separate sub-steps and add a concurrent-create scenario, for removal and for a candidate clear guard. Review thread: PRRT_kwDOPxxmWM6oWV5R.
  3. F6 repro varies the project path as well as the installation (🤖 fix: two Xum installations on one SSH host can share or delete each other's plan files #5174). The two-installations repro gives the other installation a different local project path. A fix that namespaces remote plans by local project path would pass it, although two installations with the same project path still collide. Hold the project path constant, vary only the installation root, and give the other installation another srcBaseDir for a separate checkout. The 🤖 fix: two Xum installations on one SSH host can share or delete each other's plan files #5174 fix PR owns this change. Review thread: PRRT_kwDOPxxmWM6oWV5V.

Refs #5458, #5175, #5174


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions