[PR #1319] [MERGED] test(artifacts): verify extraction races with real filesystem changes #2797

Closed
opened 2026-10-17 21:10:23 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1319
Author: @dakjdakd
Created: 10/9/2026
Status: ✅ Merged
Merged: 10/9/2026
Merged by: @N0zoM1z0

Base: main ← Head: fix/extraction-missing-inventory


📝 Commits (6)

  • 898689c fix(artifacts): reject incomplete inventoried extraction
  • e07afac chore: refresh main for extraction integrity review
  • 4f98593 test(artifacts): exercise extraction races through actual filesystem changes
  • 5e17bbe chore: retain reviewed schema portability during extraction verification
  • 4e1fce5 test(artifacts): keep extraction race verification bounded and portable
  • 202c72c test(artifacts): retain earlier directory disappearance diagnostics

📊 Changes

2 files changed (+58 additions, -24 deletions)

View changed files

📝 .github/workflows/ci.yml (+1 -0)
📝 tests/boundary/providers/native/artifactProvider.extractionCompleteness.test.ts (+57 -24)

📄 Description

Closes #1318.

Extraction must materialize every regular occurrence selected from the active artifact before publishing its output. The production fix is already on main in 5e8fb531 and cfb12e47, including the correction that excludes nested members represented by a containing archive before validating the active selection. The remaining diff adds verification of that behavior.

The regressions now synchronize through real filesystem output creation instead of spying on SafeOutputTree.create. They cover a missing inventoried file, a disappearing containing directory, an unexpected new file, equal-content occurrences, and nested archive selection. A directory may already have been enumerated when deletion occurs: the regression preserves that earlier ENOENT I/O diagnostic as well as the final completeness failure, while requiring rollback in both cases. Full byte digests keep the streamed-copy fixtures within the ordinary test heap. The suite is also included in the curated Windows CI lane.

Validation:

  • Five extraction-completeness cases pass with a 768 MiB Node heap; sampled process-family peak 563 MiB.
  • The public CLI and SDK-validated stdio MCP extract the same synthetic .app bundle with identical manifests and verified output bytes. An actual filesystem deletion during MCP extraction produces an integrity diagnostic naming the missing resource, rolls back owned output, and leaves the next ping usable; sampled family peak 713 MiB. The bundle executable is never launched.
  • The Windows lane-selection check passes. Actual Windows regression coverage is provided by CI.

No Hopper/Ghidra analysis verification is claimed for this extraction-only change. Final checks apply to the pushed head before merging.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1319 **Author:** [@dakjdakd](https://github.com/dakjdakd) **Created:** 10/9/2026 **Status:** ✅ Merged **Merged:** 10/9/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/extraction-missing-inventory` --- ### 📝 Commits (6) - [`898689c`](https://github.com/morluto/rea/commit/898689cb62abc88cabcaccc5d3698866271abe7a) fix(artifacts): reject incomplete inventoried extraction - [`e07afac`](https://github.com/morluto/rea/commit/e07afacf775df864fb8ba1906dc9263eb46206e8) chore: refresh main for extraction integrity review - [`4f98593`](https://github.com/morluto/rea/commit/4f98593e9f3371b868b80f479df3c6ae0e312ec7) test(artifacts): exercise extraction races through actual filesystem changes - [`5e17bbe`](https://github.com/morluto/rea/commit/5e17bbe60938338f5b3004198a13910d049c4616) chore: retain reviewed schema portability during extraction verification - [`4e1fce5`](https://github.com/morluto/rea/commit/4e1fce56ca0e96b52a81843318df8ef2d7ff995e) test(artifacts): keep extraction race verification bounded and portable - [`202c72c`](https://github.com/morluto/rea/commit/202c72c9bec5195a911511f415c1ceecf735b568) test(artifacts): retain earlier directory disappearance diagnostics ### 📊 Changes **2 files changed** (+58 additions, -24 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+1 -0) 📝 `tests/boundary/providers/native/artifactProvider.extractionCompleteness.test.ts` (+57 -24) </details> ### 📄 Description Closes #1318. Extraction must materialize every regular occurrence selected from the active artifact before publishing its output. The production fix is already on main in 5e8fb531 and cfb12e47, including the correction that excludes nested members represented by a containing archive before validating the active selection. The remaining diff adds verification of that behavior. The regressions now synchronize through real filesystem output creation instead of spying on `SafeOutputTree.create`. They cover a missing inventoried file, a disappearing containing directory, an unexpected new file, equal-content occurrences, and nested archive selection. A directory may already have been enumerated when deletion occurs: the regression preserves that earlier ENOENT I/O diagnostic as well as the final completeness failure, while requiring rollback in both cases. Full byte digests keep the streamed-copy fixtures within the ordinary test heap. The suite is also included in the curated Windows CI lane. Validation: - Five extraction-completeness cases pass with a 768 MiB Node heap; sampled process-family peak 563 MiB. - The public CLI and SDK-validated stdio MCP extract the same synthetic `.app` bundle with identical manifests and verified output bytes. An actual filesystem deletion during MCP extraction produces an integrity diagnostic naming the missing resource, rolls back owned output, and leaves the next ping usable; sampled family peak 713 MiB. The bundle executable is never launched. - The Windows lane-selection check passes. Actual Windows regression coverage is provided by CI. No Hopper/Ghidra analysis verification is claimed for this extraction-only change. Final checks apply to the pushed head before merging. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:10:23 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2797
No description provided.