[PR #7065] [CLOSED] feat(artifacts): read Zstandard-compressed ZIP members #7620

Closed
opened 2026-11-03 13:39:10 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/7065
Author: @ShuaixinHuang
Created: 10/25/2026
Status: ❌ Closed

Base: main ← Head: codex/feat-zip-zstd


📝 Commits (10+)

  • 875eaf5 feat(artifacts): read Zstandard-compressed ZIP members
  • 41d35ab test(zip): observe cancelled producer and decoder completion
  • 41cc38e test(zip): narrow observed streams to native duplex instances
  • 1e5c170 fix(artifacts): retain upstream ZIP producer cleanup with Zstandard
  • ab28cb6 fix(ci): retire unused internal analysis declarations
  • 3b13596 fix(artifacts): preserve upstream ZIP source identity checks
  • a9a9e00 test: use an admitted app bundle for provider routing
  • ada7314 test: keep bundle routing coverage outside oversized group
  • 4a2307b fix(ci): align regression fixtures with current admission contracts
  • 8da6ece test: use an admitted app bundle for provider routing

📊 Changes

14 files changed (+430 additions, -33 deletions)

View changed files

📝 docs/cli.md (+6 -0)
📝 src/android/JadxAnalysis.ts (+1 -1)
📝 src/android/JadxSession.ts (+3 -4)
📝 src/artifacts/ZipArtifactReader.test.ts (+247 -3)
📝 src/artifacts/ZipArtifactReader.ts (+54 -6)
📝 src/browser/PlaywrightScenarioEvents.ts (+3 -5)
📝 src/native/android/AndroidJniLibrary.ts (+1 -1)
📝 tests/boundary/android/androidJniLibraries.test.ts (+1 -1)
📝 tests/boundary/cli/cliOutput.test.ts (+4 -2)
📝 tests/boundary/filesystem/artifactZipIntegrity.test.ts (+60 -0)
📝 tests/boundary/mcp/promptMcp.test.ts (+4 -6)
➕ tests/fixtures/zipZstandard.ts (+44 -0)
📝 tests/support/analysis-efficiency/android-jni.mjs (+1 -2)
📝 tests/support/analysis-efficiency/packet-entry.mjs (+1 -2)

📄 Description

Superseded by #7780 at the author's request. The replacement carries only the original ZIP feature on refreshed upstream; this branch and its validation history are preserved.

Latest-head CI completed successfully

Verified at 2026-10-27T14:45:10.6759401Z, head 30b16ef525c3362fd1fabda2055d023bac4b532f: complete CI workflow 40519933659 and its CI required gate both finished success. This is evidence for this exact current head. Title and human author-declaration checks were also successful before this evidence-only body update; their fresh metadata checks may run again. Earlier queued/failed stages below are retained as historical records, not the current result. Local validation limitations remain disclosed. CI success does not establish maintainer approval or permission to merge.

Earlier shared Hermes preview correction (2026-10-27)

Current head 30b16ef525c3362fd1fabda2055d023bac4b532f corrects the two Hermes CLI preview cases actually observed in this branch's preceding CI. Upstream ddb53376 resolves existing directory ancestors even when the final directory is absent; the fixture now expects native sticky routing for the symlinked default root and external routing for an escaping prefix in both missing/existing states. It retains both iterations, exact config/skill targets, unchanged profile bytes, no backups and no dry-run writes. The correction is exactly one expectation line relative to pinned main 79d2fc05.

Because these cases were newly introduced upstream, changing their block required a normal merge of that same fixed upstream rather than repeated patch-only conflict resolution. Normal hooks also applied behavior-equivalent import, spread and regex formatting. These normalizations were inspected; no new provider capability, resource budget, retry, skip or runtime policy is introduced.

Shared validation executed once on the actual PCK-plus-main producer: the complete Hermes CLI acceptance file passed 22 tests / 1 existing Windows named-user skip, including both formerly failing cases and all five nested-home cases. The combined acceptance/boundary command was 52 passed / 5 existing skips / 3 failed; the remaining boundary failures compare POSIX path spellings on Windows. The complete combined command is not green and was not repeated on every branch. All normal pre-push typecheck/lint tasks passed 2/2 for this branch. Latest-head CI 40519933659 has been created and must complete independently; earlier green runs are historical.

Earlier conflict alignment (2026-10-27)

Head 58b0e12ca8f5a06caf473cc5194b8470225972f8 resolves exactly five conflicting test/fixture files against fixed main 79d2fc05. It adopts the maintainer-reviewed structured error and launcher assertions, preserves unknown ownership, exact configuration paths and unchanged bytes, and retains nonempty remediation checks. The Windows tshark fixture adds the missing raw-DNS branch while retaining flat packets, version and invalid-argument handling. No feature/production file or dependency is changed by this follow-up; no skips, retries or timeouts are added. Read-only merge-tree exited 0, and GitHub reported no merge conflicts after the normal push.

Shared Windows verification was executed once on the actual PCK-plus-main merge b2a3c27f: 47 passed / 11 existing skips / 4 failed across four complete focused files. Browser cleanup 8/8 and MCP limitations 4/4 passed. The remaining client-registration cases use POSIX launcher paths (3 failures) and an unavailable Windows symlink privilege (1 failure); the complete command is not green. The standalone PCK command had previously recorded 45 passed / 11 existing skips / 6 failed; the actual merged producer resolved the two cleanup-structure mismatches. The Windows stub probe passed version, 3 flat packets, the 49-byte raw DNS packet and invalid-argument exit 2; this is fixture validation, not a real tshark engine claim. These shared results were not rerun on every branch.

Normal push hooks passed typecheck/lint 2/2 on each branch. Latest-head CI 40516690623 has been created and still needs its own full result; earlier green heads do not qualify this head. Any older host-dependent DMG/CLI timeout failure is not claimed fixed by these assertion-only conflict alignments.

Summary

Read and extract ZIP members using Zstandard compression method 93, which PKWARE APPNOTE 6.3.10 §4.4.5 assigns to Zstandard. The current reader lists such a member but reports "Compression method not supported" when its contents are read.

Register a small Node-native streaming decoder through zip.js's supported codec API. zip.js continues owning ZIP framing, CRC, declared output size and overlap checks; the artifact reader retains its expansion budget, path and member identity checks. No additional dependency or ZIP parser is introduced.

Contract and boundary impact

  • Semantic owner: the existing ZipArtifactReader and zip.js extraction stream.
  • Scope: ordinary static archive compatibility within existing inspection/extraction; no new provider, target execution, decryption or scope decision.
  • Existing CLI/MCP operations, schemas, source/content identities and extraction containment are retained.
  • The decoder keeps Node's existing 128 MiB Zstandard window cap. Known native compressed-data faults are classified at the ZIP adapter boundary only for method 93, with the original cause retained. Cancellation and unrelated runtime errors retain their semantics.
  • Deprecated method 20 and unregistered methods remain unsupported.
  • Package, installation and generated metadata: unchanged.
  • Related issue: none; demonstrated directly on main 4ed33efb.

Expected effects:

  • Read existing files or captured data.
  • Change files only through the existing explicitly requested extraction workflow.

Evidence and regression coverage

A small fixture independently writes standard local/central/end ZIP records and compresses only the member payload with Node Zstandard. Empty and Unicode-containing payloads fail on base and decode byte-exactly after the change.

Existing reader tests now cover CRC and declared-size failures, bounded expansion, unsupported methods, damaged/truncated/checksummed frames and the decoder window boundary. Three fixed corruption frames retain their native cause codes through the typed ZIP format failure. Real midstream cancellation and consumer abandonment settle, followed by a complete successful read using the same reader.

The public compiled CLI inventories and extracts the member, verifies carrier/member SHA-256 values, byte-exact output, unchanged source and containment.

  • Observed, derived and inferred claims remain distinguishable.
  • Identities, raw causes and failed attempts remain preserved.
  • Unsupported formats and verification limits remain explicit.

Validation performed

Windows, Node 24.22.1 / npm 11.16.0. The original method-93 implementation was verified on its original baseline: the two new valid-member cases failed before the fix; all 29 reader tests, the compiled CLI boundary (25 passed / four existing Windows skips), full six-task static check, and documentation checks passed. These are historical results, not a claim that old-head CI validates the synchronized head.

Earlier synchronization evidence (before the current CI repairs)

Merged current upstream through 0ddde829, preserving zip.js producer completion ownership and the newly added admitted-source identity checks. The import conflict in the reader regression file was resolved by retaining both sides' imports. Normal commit hooks also consolidated duplicate imports in six upstream files; those changes are import-only. The complete diff against this baseline is 11 files: five feature/test/documentation files and six import cleanups.

On the synchronized source, before the final merge commit's import formatting:

  • node node_modules/vitest/vitest.mjs run src/artifacts/ZipArtifactReader.test.ts — 39 passed, including current upstream source-identity regressions, corruption, cancellation, producer completion and reader reuse.
  • npm run test:focused -- tests/boundary/filesystem/artifactZipIntegrity.test.ts — 25 passed, four existing Windows skips, including the compiled public CLI inventory/extraction workflow.
  • Normal final pre-commit and pre-push typecheck/lint hooks passed. git diff --check passed; the tracked worktree is clean.

Earlier in this synchronization, against upstream 2ad599da, npm run check:fast passed both tasks, architecture guards passed across 2,145 source files, and npm run docs:check passed six tasks plus nine README consistency cases. These checks were not all repeated after the second upstream merge. A full check on that shared baseline was blocked by two unrelated unused exports, also reproduced on clean upstream; their separate repair is #7349 and is not merged into this feature branch.

The four Windows skips remain unexecuted locally. No independent external ZIP-producer corpus, live analysis engine or Linux/macOS runtime was exercised. Current-head hosted CI is pending and must be evaluated independently.

Compatibility, safety, and release

Additive read support, not ZIP writing or historical method-20 support. Existing normal ZIP formats, budgets and extraction authority remain unchanged. The codec registration is process-local; no worker module or external executable is loaded. Documentation records supported method and window limit.

Earlier CI repair evidence (2026-10-27)

Earlier repair head: 581768e6510ca2f8c3e101f666e3f732f0741ffc. The last full upstream synchronization is pinned 0d1d6e85. The shared CI repair wave changes regression fixtures only; production source and the original feature behavior were not expanded. Launcher ownership, malformed-input refusals, native admission, source identities, cleanup retries and sensitive-value controls remain enforced.

Native artifact and client fixture checks used the actual CI merge b2011fd3 and its matching three-task build. The results and unavailable coverage are separated below:

  • Windows loader PE fixture: 8 failed / 14 passed before; 22 passed after declaring the optional-header length and supplying its bytes. Admission and digest refusal assertions are unchanged.
  • Dependency-free native verifier fixtures: 2 failed before; 2 passed after copying the newly imported PE parser dependency into both isolated source and packed layouts.
  • Cleanup retry ownership: 2 failed / 4 passed before; 6 passed after, checking the exact retained root path rather than the old placeholder.
  • Client environment preservation: 6 failed / 57 passed before; 63 passed after giving positive refresh fixtures a proven-owned launcher.
  • Eight other client files: the identical Windows command changed from 50 failed / 115 passed / 10 skipped to 19 failed / 146 passed / 10 skipped, with no newly failing test names. The remaining failures were already present in the baseline, including Windows symlink permissions, POSIX path expectations and platform-specific launcher expectations; the complete command is not green. A final platform-correct Kimi launcher was then verified separately across lifecycle, profile, transport and timeout groups: 23 passed / 8 unselected. The two existing POSIX-only alias cases remain unexecuted locally.
  • The controlled Apple cleanup helper passed protocol syntax and production response validation. Its guarded compiler stub rejected 6 negative argument cases and accepted the valid write invocation. The actual Darwin process CLI failure is not locally verified and requires new hosted CI.

The earlier retained-root capture correction was checked with 2 selected producer controls passing; the actual process-capture file's 24 Windows PTY cases were unavailable locally. No actual Linux/macOS run is claimed by these fixture checks.

On that earlier branch head, normal pre-push typecheck/lint passed 2/2 tasks; hooks were kept enabled. The focused results above describe their executed fixture/build revisions, not a complete run on every branch.

All 13 shared repaired test files are byte-identical to root head df7536df after porting. Read-only merge analysis against fixed upstream 5b292b63 was clean after the minimal overlap corrections. No full main merge was performed for this wave; merge analysis does not establish CI success.

Earlier shared validation remains historical: Apple projection 39/39 and canonical CLI examples 9/9; SAZ CLI/MCP 18 passed / 1 skip after its required build; five public regression files 63 passed / 4 skips at 6e0c0c9f; four Electron files 34 passed / 3 skips; Java files 35 passed / 5 skips; provider/overview/workflow files 15 passed / 1 skip. The borrowed #7336 and #7335 fixture commits retain their authored history. A two-line Electron fixture overlap was aligned with upstream without importing unrelated main changes.

As of 2026-10-27 13:32 CST, then-current-head hosted CI 40455626928 is queued; its CI required gate has not completed. No failed code job was reported at this query; that is not a completed CI pass. Previous-head results do not establish current-head success. Linux-only extraction-close, FIFO/socket, fake-gh and process/alias coverage still require hosted CI. Human readiness remains a separate declaration below.

Later feature validation at 79cc1a5b: reader file 39/39 passed and compiled ZIP integrity/public CLI file 25 passed / 4 existing Windows skips. All five feature-file blobs remain unchanged by this test-only repair wave.

The existing IDA import-cleanup overlap is resolved through the established shared cleanup-binding owner, whose helper already matches fixed upstream. Cleanup leases and failure provenance remain retained; this adds no provider capability or execution authority. Four affected IDA regression files passed 59/59. No real IDA engine was run.

Earlier shared test repairs (2026-10-27)

Earlier PR head: da988cdcd43243d0d3d59d7501ab9ad653b3413f. Two follow-ups port the same 9 shared test files as root 57136e6f, without changing this PR's feature implementation: the first preserves exact DNS-label output, the trusted Ghidra ps prerequisite, admitted Mach-O bundle input and precise unknown-launcher diagnostics; the second preserves owned Int64/deadline registration fixtures, both cleanup failure records, authentication-before-commit observation and the native fixture's actual digest. Refusal, no-overwrite, identity and cleanup controls remain enforced. Normal pre-commit hooks and final pre-push typecheck/lint 2/2 tasks passed on this PR head.

Shared verification: root head 57136e6f21b68849d2f949622151ff1eaafcdb3e completed main CI 40469048903 and independent real-packet/tshark CI 40469048779 successfully. This validates that root revision; it is not a completed CI result for this PR. The separate focused 9 passed / 116 unselected result was executed only on failed CI merge b0d706a748d808a0d766e6244b3d11288d64640a and its matching three-task build, rather than on every feature branch.

At 2026-10-27 16:26 CST, this PR's exact earlier head da988cdcd43243d0d3d59d7501ab9ad653b3413f has completed successful hosted CI: main CI 40471023038, including CI required, and the separate real-packet/tshark CI 40471022993. Its latest Conventional PR title and PR readiness checks passed; GitHub reports it mergeable with no conflict. These are this PR's results at that earlier head. All original feature checks and Windows, engine and IDA limitations above retain their recorded scope; earlier non-green local commands and the focused 9-pass/116-unselected evidence are not reclassified as complete local-suite passes.

Earlier upstream alignment (2026-10-27)

Earlier PR head: caa0734eb7fd15c1241d660da6292e5912daadb9. The two Windows native-artifact test consumers and their shared fixture now match upstream #7479 at pinned 570abe95f2a35b5c580a5ec2fca90c33d4114bdc. This commit changes only those three test files; all five original feature-file blobs remain unchanged.

The identical three-file fixture change passed 24/24 selected tests in #7062. This is shared fixture evidence; those tests were not rerun on this feature branch. Normal pre-commit (oxlint --fix, oxfmt) and this branch's normal pre-push typecheck/lint (2/2 tasks, 36.707 s) passed with hooks enabled.

At the earlier head, main CI 40496211612 subsequently failed in the Android inline-Evidence contract test: its new JNI contract defaults to a retained summary, while this test requested no detail and expected the named complete Evidence. This is a historical result; the correction and new-head CI are reported below.

Earlier Android inline Evidence correction (2026-10-27)

Earlier PR head: b4b9a0379f1d304d099356fadef2171d39d9d166. Only tests/boundary/process/androidAnalysisMcp.test.ts changes (4 added lines): the inline-Evidence loop explicitly requests detail: "complete" when its named contract offers detail selection. The named operation, advertised-schema/Ajv, non-null raw Evidence and cleanup assertions remain enforced. No production code changes; all five original feature-file blobs remain unchanged.

Shared isolated evidence on the actual failed CI merge 423db9e045204d059b26199365bdb93438f4ece2: the existing cross-platform JNI MCP owner test passed 1 selected test / 4 unselected (35.66 s), covering default summary, explicit complete delivery, selectors and retained-parent provenance. That merge plus this exact patch passed the complete source typecheck (17.157 s). These are shared diagnostic checks, not a full POSIX-file pass on this branch. The complete POSIX process test file remains unrun locally on Windows; no real JADX engine was run.

Normal pre-commit hooks and this branch's normal pre-push typecheck/lint 2/2 tasks passed (31.012 s), with hooks enabled. As of 2026-10-27 12:11:47 UTC, this exact head's main CI 40501697684 is queued / pending, with no conclusion; earlier CI results do not qualify this head.

Author readiness

Human owner: @ShuaixinHuang

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

The human owner explicitly confirmed review and responsibility for this PR and requested formal maintainer review in this session on 2026-10-25.

Before merge

  • Focused compatibility enhancement within existing static archive scope.
  • Valid, malformed, integrity, resource and cancellation controls checked.
  • Public CLI output and documentation updated.
  • No generated artifacts, secrets or unrelated cleanup.
  • Latest-head required CI and human readiness confirmed.

Normal commit and final pre-push hooks passed, including both typecheck/lint tasks.


🔄 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/7065 **Author:** [@ShuaixinHuang](https://github.com/ShuaixinHuang) **Created:** 10/25/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `codex/feat-zip-zstd` --- ### 📝 Commits (10+) - [`875eaf5`](https://github.com/morluto/rea/commit/875eaf57b2d20575f9acb438726b1cd28a61258e) feat(artifacts): read Zstandard-compressed ZIP members - [`41d35ab`](https://github.com/morluto/rea/commit/41d35ab1df0b873acbbb6ccddccd59e4cba7ad6a) test(zip): observe cancelled producer and decoder completion - [`41cc38e`](https://github.com/morluto/rea/commit/41cc38ea572e82da648a8a1e5f8e59053e8f00ff) test(zip): narrow observed streams to native duplex instances - [`1e5c170`](https://github.com/morluto/rea/commit/1e5c17067dc6c78be4822719a95396220931d778) fix(artifacts): retain upstream ZIP producer cleanup with Zstandard - [`ab28cb6`](https://github.com/morluto/rea/commit/ab28cb6c9651a631174774e1dc9577515914f723) fix(ci): retire unused internal analysis declarations - [`3b13596`](https://github.com/morluto/rea/commit/3b1359672884ec010652f50e6fe90d07abe907bd) fix(artifacts): preserve upstream ZIP source identity checks - [`a9a9e00`](https://github.com/morluto/rea/commit/a9a9e00dd69c2d4dbd3a7359ed2884f0b383521f) test: use an admitted app bundle for provider routing - [`ada7314`](https://github.com/morluto/rea/commit/ada73141f53a204a350daa4403efdc74ff461135) test: keep bundle routing coverage outside oversized group - [`4a2307b`](https://github.com/morluto/rea/commit/4a2307b7466009b663f4ab370aae2f562377d53f) fix(ci): align regression fixtures with current admission contracts - [`8da6ece`](https://github.com/morluto/rea/commit/8da6eceacf44413910ccb237a5361432ad85a888) test: use an admitted app bundle for provider routing ### 📊 Changes **14 files changed** (+430 additions, -33 deletions) <details> <summary>View changed files</summary> 📝 `docs/cli.md` (+6 -0) 📝 `src/android/JadxAnalysis.ts` (+1 -1) 📝 `src/android/JadxSession.ts` (+3 -4) 📝 `src/artifacts/ZipArtifactReader.test.ts` (+247 -3) 📝 `src/artifacts/ZipArtifactReader.ts` (+54 -6) 📝 `src/browser/PlaywrightScenarioEvents.ts` (+3 -5) 📝 `src/native/android/AndroidJniLibrary.ts` (+1 -1) 📝 `tests/boundary/android/androidJniLibraries.test.ts` (+1 -1) 📝 `tests/boundary/cli/cliOutput.test.ts` (+4 -2) 📝 `tests/boundary/filesystem/artifactZipIntegrity.test.ts` (+60 -0) 📝 `tests/boundary/mcp/promptMcp.test.ts` (+4 -6) ➕ `tests/fixtures/zipZstandard.ts` (+44 -0) 📝 `tests/support/analysis-efficiency/android-jni.mjs` (+1 -2) 📝 `tests/support/analysis-efficiency/packet-entry.mjs` (+1 -2) </details> ### 📄 Description Superseded by #7780 at the author's request. The replacement carries only the original ZIP feature on refreshed upstream; this branch and its validation history are preserved. ## Latest-head CI completed successfully Verified at **2026-10-27T14:45:10.6759401Z**, head `30b16ef525c3362fd1fabda2055d023bac4b532f`: [complete CI workflow 40519933659](https://github.com/morluto/rea/actions/runs/40519933659) and its [CI required gate](https://github.com/morluto/rea/actions/runs/40519933659/job/122252545561) both finished **success**. This is evidence for this exact current head. Title and human author-declaration checks were also successful before this evidence-only body update; their fresh metadata checks may run again. Earlier queued/failed stages below are retained as historical records, not the current result. Local validation limitations remain disclosed. CI success does not establish maintainer approval or permission to merge. ## Earlier shared Hermes preview correction (2026-10-27) Current head `30b16ef525c3362fd1fabda2055d023bac4b532f` corrects the two Hermes CLI preview cases actually observed in this branch's preceding CI. Upstream `ddb53376` resolves existing directory ancestors even when the final directory is absent; the fixture now expects native sticky routing for the symlinked default root and external routing for an escaping prefix in both missing/existing states. It retains both iterations, exact config/skill targets, unchanged profile bytes, no backups and no dry-run writes. The correction is exactly one expectation line relative to pinned main `79d2fc05`. Because these cases were newly introduced upstream, changing their block required a normal merge of that same fixed upstream rather than repeated patch-only conflict resolution. Normal hooks also applied behavior-equivalent import, spread and regex formatting. These normalizations were inspected; no new provider capability, resource budget, retry, skip or runtime policy is introduced. Shared validation executed once on the actual PCK-plus-main producer: the complete Hermes CLI acceptance file passed **22 tests / 1 existing Windows named-user skip**, including both formerly failing cases and all five nested-home cases. The combined acceptance/boundary command was **52 passed / 5 existing skips / 3 failed**; the remaining boundary failures compare POSIX path spellings on Windows. The complete combined command is **not green** and was not repeated on every branch. All normal pre-push typecheck/lint tasks passed **2/2** for this branch. [Latest-head CI 40519933659](https://github.com/morluto/rea/actions/runs/40519933659) has been created and must complete independently; earlier green runs are historical. ## Earlier conflict alignment (2026-10-27) Head `58b0e12ca8f5a06caf473cc5194b8470225972f8` resolves exactly five conflicting test/fixture files against fixed main `79d2fc05`. It adopts the maintainer-reviewed structured error and launcher assertions, preserves unknown ownership, exact configuration paths and unchanged bytes, and retains nonempty remediation checks. The Windows tshark fixture adds the missing raw-DNS branch while retaining flat packets, version and invalid-argument handling. No feature/production file or dependency is changed by this follow-up; no skips, retries or timeouts are added. Read-only merge-tree exited 0, and GitHub reported no merge conflicts after the normal push. Shared Windows verification was executed once on the actual PCK-plus-main merge `b2a3c27f`: **47 passed / 11 existing skips / 4 failed** across four complete focused files. Browser cleanup **8/8** and MCP limitations **4/4** passed. The remaining client-registration cases use POSIX launcher paths (3 failures) and an unavailable Windows symlink privilege (1 failure); the complete command is **not green**. The standalone PCK command had previously recorded 45 passed / 11 existing skips / 6 failed; the actual merged producer resolved the two cleanup-structure mismatches. The Windows stub probe passed version, 3 flat packets, the 49-byte raw DNS packet and invalid-argument exit 2; this is fixture validation, not a real tshark engine claim. These shared results were not rerun on every branch. Normal push hooks passed typecheck/lint **2/2** on each branch. [Latest-head CI 40516690623](https://github.com/morluto/rea/actions/runs/40516690623) has been created and still needs its own full result; earlier green heads do not qualify this head. Any older host-dependent DMG/CLI timeout failure is not claimed fixed by these assertion-only conflict alignments. ## Summary Read and extract ZIP members using Zstandard compression method 93, which [PKWARE APPNOTE 6.3.10 §4.4.5](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) assigns to Zstandard. The current reader lists such a member but reports "Compression method not supported" when its contents are read. Register a small Node-native streaming decoder through zip.js's supported codec API. zip.js continues owning ZIP framing, CRC, declared output size and overlap checks; the artifact reader retains its expansion budget, path and member identity checks. No additional dependency or ZIP parser is introduced. ## Contract and boundary impact - Semantic owner: the existing `ZipArtifactReader` and zip.js extraction stream. - Scope: ordinary static archive compatibility within existing inspection/extraction; no new provider, target execution, decryption or scope decision. - Existing CLI/MCP operations, schemas, source/content identities and extraction containment are retained. - The decoder keeps Node's existing 128 MiB Zstandard window cap. Known native compressed-data faults are classified at the ZIP adapter boundary only for method 93, with the original cause retained. Cancellation and unrelated runtime errors retain their semantics. - Deprecated method 20 and unregistered methods remain unsupported. - Package, installation and generated metadata: unchanged. - Related issue: none; demonstrated directly on main `4ed33efb`. Expected effects: - [x] Read existing files or captured data. - [x] Change files only through the existing explicitly requested extraction workflow. ## Evidence and regression coverage A small fixture independently writes standard local/central/end ZIP records and compresses only the member payload with Node Zstandard. Empty and Unicode-containing payloads fail on base and decode byte-exactly after the change. Existing reader tests now cover CRC and declared-size failures, bounded expansion, unsupported methods, damaged/truncated/checksummed frames and the decoder window boundary. Three fixed corruption frames retain their native cause codes through the typed ZIP format failure. Real midstream cancellation and consumer abandonment settle, followed by a complete successful read using the same reader. The public compiled CLI inventories and extracts the member, verifies carrier/member SHA-256 values, byte-exact output, unchanged source and containment. - [x] Observed, derived and inferred claims remain distinguishable. - [x] Identities, raw causes and failed attempts remain preserved. - [x] Unsupported formats and verification limits remain explicit. ## Validation performed Windows, Node 24.22.1 / npm 11.16.0. The original method-93 implementation was verified on its original baseline: the two new valid-member cases failed before the fix; all 29 reader tests, the compiled CLI boundary (25 passed / four existing Windows skips), full six-task static check, and documentation checks passed. These are historical results, not a claim that old-head CI validates the synchronized head. ### Earlier synchronization evidence (before the current CI repairs) Merged current upstream through `0ddde829`, preserving zip.js producer completion ownership and the newly added admitted-source identity checks. The import conflict in the reader regression file was resolved by retaining both sides' imports. Normal commit hooks also consolidated duplicate imports in six upstream files; those changes are import-only. The complete diff against this baseline is 11 files: five feature/test/documentation files and six import cleanups. On the synchronized source, before the final merge commit's import formatting: - `node node_modules/vitest/vitest.mjs run src/artifacts/ZipArtifactReader.test.ts` — **39 passed**, including current upstream source-identity regressions, corruption, cancellation, producer completion and reader reuse. - `npm run test:focused -- tests/boundary/filesystem/artifactZipIntegrity.test.ts` — **25 passed, four existing Windows skips**, including the compiled public CLI inventory/extraction workflow. - Normal final pre-commit and pre-push typecheck/lint hooks passed. `git diff --check` passed; the tracked worktree is clean. Earlier in this synchronization, against upstream `2ad599da`, `npm run check:fast` passed both tasks, architecture guards passed across 2,145 source files, and `npm run docs:check` passed six tasks plus nine README consistency cases. These checks were not all repeated after the second upstream merge. A full check on that shared baseline was blocked by two unrelated unused exports, also reproduced on clean upstream; their separate repair is #7349 and is not merged into this feature branch. The four Windows skips remain unexecuted locally. No independent external ZIP-producer corpus, live analysis engine or Linux/macOS runtime was exercised. Current-head hosted CI is pending and must be evaluated independently. ## Compatibility, safety, and release Additive read support, not ZIP writing or historical method-20 support. Existing normal ZIP formats, budgets and extraction authority remain unchanged. The codec registration is process-local; no worker module or external executable is loaded. Documentation records supported method and window limit. ## Earlier CI repair evidence (2026-10-27) Earlier repair head: `581768e6510ca2f8c3e101f666e3f732f0741ffc`. The last full upstream synchronization is pinned `0d1d6e85`. The shared CI repair wave changes regression fixtures only; production source and the original feature behavior were not expanded. Launcher ownership, malformed-input refusals, native admission, source identities, cleanup retries and sensitive-value controls remain enforced. Native artifact and client fixture checks used the actual CI merge `b2011fd3` and its matching three-task build. The results and unavailable coverage are separated below: - Windows loader PE fixture: **8 failed / 14 passed before; 22 passed after** declaring the optional-header length and supplying its bytes. Admission and digest refusal assertions are unchanged. - Dependency-free native verifier fixtures: **2 failed before; 2 passed after** copying the newly imported PE parser dependency into both isolated source and packed layouts. - Cleanup retry ownership: **2 failed / 4 passed before; 6 passed after**, checking the exact retained root path rather than the old placeholder. - Client environment preservation: **6 failed / 57 passed before; 63 passed after** giving positive refresh fixtures a proven-owned launcher. - Eight other client files: the identical Windows command changed from **50 failed / 115 passed / 10 skipped** to **19 failed / 146 passed / 10 skipped**, with no newly failing test names. The remaining failures were already present in the baseline, including Windows symlink permissions, POSIX path expectations and platform-specific launcher expectations; the complete command is **not green**. A final platform-correct Kimi launcher was then verified separately across lifecycle, profile, transport and timeout groups: **23 passed / 8 unselected**. The two existing POSIX-only alias cases remain unexecuted locally. - The controlled Apple cleanup helper passed protocol syntax and production response validation. Its guarded compiler stub rejected **6 negative argument cases** and accepted the valid write invocation. The actual Darwin process CLI failure is **not locally verified** and requires new hosted CI. The earlier retained-root capture correction was checked with **2 selected producer controls passing**; the actual process-capture file's **24 Windows PTY cases were unavailable locally**. No actual Linux/macOS run is claimed by these fixture checks. On that earlier branch head, normal pre-push typecheck/lint passed **2/2 tasks**; hooks were kept enabled. The focused results above describe their executed fixture/build revisions, not a complete run on every branch. All **13 shared repaired test files** are byte-identical to root head `df7536df` after porting. Read-only merge analysis against fixed upstream `5b292b63` was clean after the minimal overlap corrections. No full main merge was performed for this wave; merge analysis does not establish CI success. Earlier shared validation remains historical: Apple projection **39/39** and canonical CLI examples **9/9**; SAZ CLI/MCP **18 passed / 1 skip** after its required build; five public regression files **63 passed / 4 skips** at `6e0c0c9f`; four Electron files **34 passed / 3 skips**; Java files **35 passed / 5 skips**; provider/overview/workflow files **15 passed / 1 skip**. The borrowed [#7336](https://github.com/morluto/rea/pull/7336) and [#7335](https://github.com/morluto/rea/pull/7335) fixture commits retain their authored history. A two-line Electron fixture overlap was aligned with upstream without importing unrelated main changes. As of **2026-10-27 13:32 CST**, then-current-head [hosted CI 40455626928](https://github.com/morluto/rea/actions/runs/40455626928) is **queued**; its CI required gate has **not completed**. No failed code job was reported at this query; that is not a completed CI pass. Previous-head results do not establish current-head success. Linux-only extraction-close, FIFO/socket, fake-gh and process/alias coverage still require hosted CI. Human readiness remains a separate declaration below. Later feature validation at `79cc1a5b`: reader file **39/39 passed** and compiled ZIP integrity/public CLI file **25 passed / 4 existing Windows skips**. All five feature-file blobs remain unchanged by this test-only repair wave. The existing IDA import-cleanup overlap is resolved through the established shared cleanup-binding owner, whose helper already matches fixed upstream. Cleanup leases and failure provenance remain retained; this adds no provider capability or execution authority. Four affected IDA regression files passed **59/59**. No real IDA engine was run. ## Earlier shared test repairs (2026-10-27) Earlier PR head: `da988cdcd43243d0d3d59d7501ab9ad653b3413f`. Two follow-ups port the same **9 shared test files** as root `57136e6f`, without changing this PR's feature implementation: the first preserves exact DNS-label output, the trusted Ghidra `ps` prerequisite, admitted Mach-O bundle input and precise unknown-launcher diagnostics; the second preserves owned Int64/deadline registration fixtures, both cleanup failure records, authentication-before-commit observation and the native fixture's actual digest. Refusal, no-overwrite, identity and cleanup controls remain enforced. Normal pre-commit hooks and final pre-push typecheck/lint **2/2 tasks passed** on this PR head. Shared verification: root head `57136e6f21b68849d2f949622151ff1eaafcdb3e` completed [main CI 40469048903](https://github.com/morluto/rea/actions/runs/40469048903) and [independent real-packet/tshark CI 40469048779](https://github.com/morluto/rea/actions/runs/40469048779) successfully. This validates that root revision; it is **not** a completed CI result for this PR. The separate focused **9 passed / 116 unselected** result was executed only on failed CI merge `b0d706a748d808a0d766e6244b3d11288d64640a` and its matching three-task build, rather than on every feature branch. At **2026-10-27 16:26 CST**, this PR's exact earlier head `da988cdcd43243d0d3d59d7501ab9ad653b3413f` has **completed successful hosted CI**: [main CI 40471023038](https://github.com/morluto/rea/actions/runs/40471023038), including [CI required](https://github.com/morluto/rea/actions/runs/40471023038/job/122085580481), and the separate [real-packet/tshark CI 40471022993](https://github.com/morluto/rea/actions/runs/40471022993). Its latest [Conventional PR title](https://github.com/morluto/rea/actions/runs/40471441178/job/122079191761) and [PR readiness](https://github.com/morluto/rea/actions/runs/40471442003) checks passed; GitHub reports it mergeable with no conflict. These are this PR's results at that earlier head. All original feature checks and Windows, engine and IDA limitations above retain their recorded scope; earlier non-green local commands and the focused 9-pass/116-unselected evidence are not reclassified as complete local-suite passes. ## Earlier upstream alignment (2026-10-27) Earlier PR head: `caa0734eb7fd15c1241d660da6292e5912daadb9`. The two Windows native-artifact test consumers and their shared fixture now match upstream [#7479](https://github.com/morluto/rea/pull/7479) at pinned `570abe95f2a35b5c580a5ec2fca90c33d4114bdc`. This commit changes only those three test files; all five original feature-file blobs remain unchanged. The identical three-file fixture change passed **24/24 selected tests** in [#7062](https://github.com/morluto/rea/pull/7062). This is shared fixture evidence; those tests were **not rerun on this feature branch**. Normal pre-commit (`oxlint --fix`, `oxfmt`) and this branch's normal pre-push typecheck/lint (**2/2 tasks**, **36.707 s**) passed with hooks enabled. At the earlier head, [main CI 40496211612](https://github.com/morluto/rea/actions/runs/40496211612) subsequently **failed** in the Android inline-Evidence contract test: its new JNI contract defaults to a retained summary, while this test requested no detail and expected the named complete Evidence. This is a historical result; the correction and new-head CI are reported below. ## Earlier Android inline Evidence correction (2026-10-27) Earlier PR head: `b4b9a0379f1d304d099356fadef2171d39d9d166`. Only `tests/boundary/process/androidAnalysisMcp.test.ts` changes (**4 added lines**): the inline-Evidence loop explicitly requests `detail: "complete"` when its named contract offers detail selection. The named operation, advertised-schema/Ajv, non-null raw Evidence and cleanup assertions remain enforced. No production code changes; all five original feature-file blobs remain unchanged. Shared isolated evidence on the actual failed CI merge `423db9e045204d059b26199365bdb93438f4ece2`: the existing cross-platform JNI MCP owner test passed **1 selected test / 4 unselected** (**35.66 s**), covering default summary, explicit complete delivery, selectors and retained-parent provenance. That merge plus this exact patch passed the complete source typecheck (**17.157 s**). These are shared diagnostic checks, not a full POSIX-file pass on this branch. The complete POSIX process test file remains unrun locally on Windows; no real JADX engine was run. Normal pre-commit hooks and this branch's normal pre-push typecheck/lint **2/2 tasks passed** (**31.012 s**), with hooks enabled. As of **2026-10-27 12:11:47 UTC**, this exact head's [main CI 40501697684](https://github.com/morluto/rea/actions/runs/40501697684) is **queued / pending**, with no conclusion; earlier CI results do not qualify this head. ## Author readiness Human owner: @ShuaixinHuang - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. The human owner explicitly confirmed review and responsibility for this PR and requested formal maintainer review in this session on 2026-10-25. ## Before merge - [x] Focused compatibility enhancement within existing static archive scope. - [x] Valid, malformed, integrity, resource and cancellation controls checked. - [x] Public CLI output and documentation updated. - [x] No generated artifacts, secrets or unrelated cleanup. - [ ] Latest-head required CI and human readiness confirmed. Normal commit and final pre-push hooks passed, including both typecheck/lint tasks. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-03 13:39:10 +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#7620
No description provided.