Skip to content

Cover scoped crash recovery#323

Merged
adamziel merged 1 commit into
trunkfrom
codex/crash-consistency-next
May 18, 2026
Merged

Cover scoped crash recovery#323
adamziel merged 1 commit into
trunkfrom
codex/crash-consistency-next

Conversation

@adamziel
Copy link
Copy Markdown
Contributor

What it does

Adds a focused regression proving recover-crash --run is scoped to the requested merge run. The test creates two pending crash artifacts, restores one by run id, verifies the other target DB and artifact remain pending, then restores the rest globally.

Rationale

Crash recovery can be invoked globally or for a single run. Without coverage for the scoped path, a future cleanup bug could accidentally clear unrelated pending recovery artifacts or mutate another target DB while the operator intended to recover only one run.

Implementation

The new PHP merge test writes two target-db-commit crash artifacts with separate target DB snapshots, exercises recover-crash --run 101 --restore-target-db, and then verifies global recovery still sees run 202. docs/merge-crash-consistency.md now records this covered boundary.

Testing instructions

php -l tests/cow/merge.php
make test-cow-merge
git diff --check

Local result: make test-cow-merge passed with 3,243 assertions.

@adamziel adamziel merged commit 8452037 into trunk May 18, 2026
7 checks passed
adamziel added a commit that referenced this pull request May 18, 2026
## Release `v0.1.35`

Version bump and release metadata update for `v0.1.35`.

**Changelog draft:**
* Extend merge revalidation and WordPress semantic guards
([#313](#313))
* Add Events Calendar-shaped merge smoke coverage
([#318](#318))
* Extend semantic E2E with Site Editor objects
([#317](#317))
* Add thin SSH remote clone command
([#315](#315))
* Update release gate evidence for v0.1.34
([#319](#319))
* Guard plugin children behind logical identity collisions
([#320](#320))
* Hold case-insensitive upload path collisions
([#322](#322))
* Cover scoped crash recovery
([#323](#323))
* Hold malformed attachment metadata shapes
([#324](#324))
* Cover thin remote clone branch metadata
([#326](#326))
* Cover source-added trigger view dependencies
([#321](#321))
* Cover WooCommerce duplicate address semantics
([#325](#325))
* Cover Events Calendar organizer validator semantics
([#327](#327))
* Cover Elementor widget media validator semantics
([#328](#328))
* Reject duplicate attachment upload metadata rows
([#329](#329))
* Cover existing branch Git update crash recovery
([#330](#330))
* Mark WordPress media repairs review-only
([#331](#331))
* Cover backup attachment metadata drift
([#332](#332))
* Limit release verification for COW-only PRs
([#335](#335))
* Batch merge reliability roadmap coverage
([#336](#336))
* Cover WordPress upload MIME drift
([#333](#333))
* Add branch merge history commands
([#334](#334))
* Show restored stale-audit reviews
([#337](#337))
* Cover Yoast duplicate indexable permalinks
([#338](#338))
* Cover Yoast indexable hierarchy drift
([#339](#339))
* Cover revision parent semantic drift
([#340](#340))
* Expose merge history in branch switcher
([#341](#341))
* Cover ACF relationship validator drift
([#342](#342))
* Show merge history on branch admin page
([#343](#343))
* Drill into conflicts from branch admin history
([#344](#344))
* Expose branch tree on admin page
([#345](#345))
* Resolve conflicts from branch admin page
([#346](#346))
* Document conflict review workflow
([#347](#347))

**Full changelog:**
v0.1.34...release/v0.1.35

## Next steps

1. **Review** the changes in this pull request.
2. **Push** any additional edits to this branch (`release/v0.1.35`).
3. **Merge** this pull request to publish `v0.1.35`.

Merging will automatically build ForkPress binaries, create a GitHub
release, and update the Homebrew formula.

Co-authored-by: Codex <codex@openai.com>
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