[PR #1865] [MERGED] fix(artifacts): preserve physical ZIP member identities #4861

Closed
opened 2026-10-31 00:56:09 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

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

Base: main ← Head: fix/1860-zip-member-identity


📝 Commits (1)

  • f7a68f9 fix(artifacts): preserve physical ZIP member identities

📊 Changes

3 files changed (+64 additions, -20 deletions)

View changed files

📝 src/artifacts/ZipArtifactReader.ts (+15 -14)
📝 tests/boundary/android/jadxConfiguration.test.ts (+34 -0)
📝 tests/boundary/filesystem/artifactZipIntegrity.test.ts (+15 -6)

📄 Description

REA rejected its audited Android engine JAR when repeated license resources appeared before the required classes. ZIP member lookup used filenames as identity, so a valid second occurrence triggered a path-collision error during prerequisite inspection.

Bind each ZIP member to its central-directory occurrence and preserve that source across repeated enumeration. Artifact inventory continues to enforce unique logical paths. Existing metadata binding, CRC, overlap, metadata-budget and cancellation checks remain active.

Closes #1860.

Validation:

  • Reduced engine-admission regression failed with the original path-collision error before the fix.
  • 36 focused tests pass across Android configuration, ZIP integrity, backpressure/cancellation, inventory snapshot, entry-order and descriptor-cleanup suites.
  • Real REA CLI and stdio MCP with the audited Android engine admit the original JAR and complete a selected method query; following MCP ping succeeds and APK digest is unchanged.
  • Runtime/skill build and npm run check pass: typecheck, lint/module boundaries, formatting, unused exports, metadata and architecture guards.

Real-provider scope: Linux x86_64, Node.js 24.18.0, audited Android engine 0.7.1, one CPU / 3 GiB, configured 768-MiB worker heap. Other platforms and providers rely on CI coverage where available.


🔄 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/1865 **Author:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Created:** 10/11/2026 **Status:** ✅ Merged **Merged:** 10/11/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/1860-zip-member-identity` --- ### 📝 Commits (1) - [`f7a68f9`](https://github.com/morluto/rea/commit/f7a68f991c6654f9a3095bb345907325873211f9) fix(artifacts): preserve physical ZIP member identities ### 📊 Changes **3 files changed** (+64 additions, -20 deletions) <details> <summary>View changed files</summary> 📝 `src/artifacts/ZipArtifactReader.ts` (+15 -14) 📝 `tests/boundary/android/jadxConfiguration.test.ts` (+34 -0) 📝 `tests/boundary/filesystem/artifactZipIntegrity.test.ts` (+15 -6) </details> ### 📄 Description REA rejected its audited Android engine JAR when repeated license resources appeared before the required classes. ZIP member lookup used filenames as identity, so a valid second occurrence triggered a path-collision error during prerequisite inspection. Bind each ZIP member to its central-directory occurrence and preserve that source across repeated enumeration. Artifact inventory continues to enforce unique logical paths. Existing metadata binding, CRC, overlap, metadata-budget and cancellation checks remain active. Closes #1860. Validation: - Reduced engine-admission regression failed with the original path-collision error before the fix. - 36 focused tests pass across Android configuration, ZIP integrity, backpressure/cancellation, inventory snapshot, entry-order and descriptor-cleanup suites. - Real REA CLI and stdio MCP with the audited Android engine admit the original JAR and complete a selected method query; following MCP ping succeeds and APK digest is unchanged. - Runtime/skill build and `npm run check` pass: typecheck, lint/module boundaries, formatting, unused exports, metadata and architecture guards. Real-provider scope: Linux x86_64, Node.js 24.18.0, audited Android engine 0.7.1, one CPU / 3 GiB, configured 768-MiB worker heap. Other platforms and providers rely on CI coverage where available. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 00:56:09 +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#4861
No description provided.