[PR #4317] fix(apple): retain keyed archive scalar object kinds #6166

Open
opened 2026-10-31 01:12:22 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/4317
Author: @Jax367
Created: 10/16/2026
Status: 🔄 Open

Base: main ← Head: codex/keyed-archive-scalar-kinds


📝 Commits (10+)

  • 2b0f2dd fix(apple): retain keyed archive scalar object kinds
  • eeb3137 Merge remote-tracking branch 'origin/main' into codex/keyed-archive-scalar-kinds
  • 341bf6c test(apple): align captured archive scalar expectation
  • 2538d01 fix(browser): retain cancellation evidence and shared provider ownership
  • 76b5a55 test(cli): align cancellation and resolved cleanup expectations
  • 0261d46 test: verify staged adb input and expose deadline failures
  • 2cba7b1 Merge branch 'main' into codex/keyed-archive-scalar-kinds
  • 8d0d6f3 fix: reconcile lifecycle contracts after merging main
  • ad1d46e chore: sync main after resolving lifecycle conflicts
  • 07fc6e5 chore: merge main and preserve adb argument boundaries

📊 Changes

7 files changed (+98 additions, -34 deletions)

View changed files

📝 src/browser/PlaywrightBrowserScenarioProvider.test.ts (+1 -0)
📝 tests/acceptance/providers/jebConfigurationIsolation.test.ts (+9 -1)
📝 tests/boundary/cli/adbCli.test.ts (+42 -26)
📝 tests/boundary/cli/keyedArchivePrototypeKeyCli.test.ts (+4 -1)
📝 tests/boundary/process/browserScenarioProbeLifecycle.test.ts (+37 -1)
📝 tests/boundary/process/processCaptureLifecycle.test.ts (+0 -1)
📝 tests/process-global/browserScenarioCleanup.test.ts (+5 -4)

📄 Description

Summary

The core fix proposed here for #4295 has been adapted and incorporated into main by the maintainer in 2cf9c28f2, which credits @Jax367 and this PR. That commit preserves decoded keyed-archive scalar identity through dictionary/UID consumers and includes the public CLI/MCP regressions and corrected Foundation golden expectation.

This branch now merges that upstream implementation. The archive production code and scalar-related documentation and regressions match main exactly. The remaining diff is test-only boundary coverage and diagnostics; it does not represent a second archive implementation.

Remaining changes

  • Preserve exact ADB argument boundaries using one NUL-framed call log. Check caller-selected APK paths, install/reinstall flags, bytes/digests, unique staging paths and cleanup without a duplicate snapshot log. Keep main's filename-with-spaces and byte comparison controls.

  • Verify incomplete captures on active cancellation, completed Evidence when cancellation arrives during final close, concurrent shared-provider cleanup retries, and standalone server cleanup ownership.

  • Include the command, stdout, stderr and signal in JEB discovery assertion failures. Keep main's restored PATH so Linux process-ownership prerequisites such as ps remain available while the malformed JEB timeout is still rejected.

  • Remove one redundant success assertion immediately followed by the existing error guard in the process-capture lifecycle test.

  • Format the new XML keyed-archive regression introduced by upstream 78cf6100f; the first CI merge snapshot exposed a long call that failed the formatter.

No runtime, schema, provider authority, dependency, installer or generated-output changes remain relative to main.

Validation

Latest head: 1713d3c6c, merging main 78cf6100f on 2026-10-17. All three overlapping archive conflicts use main's improved implementation; GitHub reports the head mergeable.

  • Pinned Node 24.18.0 / npm 11.16.0; dependency validation, pre-commit formatting/lint and pre-push typecheck/lint passed.
  • Ten relevant files: 63 distinct tests passed, 6 POSIX-only cases skipped on Windows. The large root traversal budget case exceeded its unchanged 30-second limit in the combined run; the same five-case domain file passed alone, with the large case taking 18.4 seconds. No input, budget or timeout was relaxed.
  • Public compiled CLI and production stdio MCP cover XML/binary scalar kinds, wrapper-shaped dictionary controls, scalar-root refusal, date uncertainty and JEB configuration isolation.
  • npm run check:ci: all eight static tasks and architecture guards passed.
  • npm run docs:check: six tasks and all five README consistency tests passed.
  • Complete CI for the preceding head passed, including all five shards, Portable tests, CI required and real Apple artifact CLI/MCP E2E.
  • After synchronizing the additional upstream XML key repair: 67 tests passed across four files, including segmented XML keys, independent binary controls, root selection, CLI/MCP result equality and original-byte retention.
  • Static and documentation checks passed again after that synchronization.
  • CI for the latest merged head passed: all five test shards, Portable tests, CI required, static checks, source tests and real Apple artifact CLI/MCP E2E. Source tests: 595 files / 9,421 passed / 8 skipped. Shard 5 includes both JEB isolation tests and all 16 Linux ADB tests passing.
  • Provider/package lanes not selected for the final test-only diff remain skipped; this run does not claim new real deep-provider qualification.

Local Windows execution does not verify POSIX ADB execution or real Apple tooling; those require the appropriate hosted lanes. No actual Hopper/Ghidra/IDA provider was exercised locally.

Author readiness

Human owner: @Jax367

  • 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 completes these declarations; AI assistance does not attest to human review.

Before merge

  • Original archive fix is incorporated upstream with attribution.
  • Conflicts resolved against the maintainer's implementation.
  • Remaining test changes and verification limits described above.
  • No unrelated runtime changes, credentials or generated outputs.
  • Required CI checks pass on the latest head.
  • Human author readiness completed.

🔄 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/4317 **Author:** [@Jax367](https://github.com/Jax367) **Created:** 10/16/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `codex/keyed-archive-scalar-kinds` --- ### 📝 Commits (10+) - [`2b0f2dd`](https://github.com/morluto/rea/commit/2b0f2dd3526849a7a56d103d057b2a24d8c3b403) fix(apple): retain keyed archive scalar object kinds - [`eeb3137`](https://github.com/morluto/rea/commit/eeb313764557e5e93b5c707d517070f37f59941b) Merge remote-tracking branch 'origin/main' into codex/keyed-archive-scalar-kinds - [`341bf6c`](https://github.com/morluto/rea/commit/341bf6cf4a882ca520ae7903ec859c93ea7c5332) test(apple): align captured archive scalar expectation - [`2538d01`](https://github.com/morluto/rea/commit/2538d0151ec2c5712a841b2def15e426af67af52) fix(browser): retain cancellation evidence and shared provider ownership - [`76b5a55`](https://github.com/morluto/rea/commit/76b5a5508f171b92cf016d1968a9afc4a91be432) test(cli): align cancellation and resolved cleanup expectations - [`0261d46`](https://github.com/morluto/rea/commit/0261d46cd98a38e4580bd035ce619f9297da8301) test: verify staged adb input and expose deadline failures - [`2cba7b1`](https://github.com/morluto/rea/commit/2cba7b170a3994bce6215588c9bfd232015509ac) Merge branch 'main' into codex/keyed-archive-scalar-kinds - [`8d0d6f3`](https://github.com/morluto/rea/commit/8d0d6f33fa4689085ebd671f2cab9793210c8946) fix: reconcile lifecycle contracts after merging main - [`ad1d46e`](https://github.com/morluto/rea/commit/ad1d46eb67a5ba4c34ab06b70d7c36da261d9db2) chore: sync main after resolving lifecycle conflicts - [`07fc6e5`](https://github.com/morluto/rea/commit/07fc6e515c0bb029c58dd48fc31e9a497b529996) chore: merge main and preserve adb argument boundaries ### 📊 Changes **7 files changed** (+98 additions, -34 deletions) <details> <summary>View changed files</summary> 📝 `src/browser/PlaywrightBrowserScenarioProvider.test.ts` (+1 -0) 📝 `tests/acceptance/providers/jebConfigurationIsolation.test.ts` (+9 -1) 📝 `tests/boundary/cli/adbCli.test.ts` (+42 -26) 📝 `tests/boundary/cli/keyedArchivePrototypeKeyCli.test.ts` (+4 -1) 📝 `tests/boundary/process/browserScenarioProbeLifecycle.test.ts` (+37 -1) 📝 `tests/boundary/process/processCaptureLifecycle.test.ts` (+0 -1) 📝 `tests/process-global/browserScenarioCleanup.test.ts` (+5 -4) </details> ### 📄 Description ## Summary The core fix proposed here for #4295 has been adapted and incorporated into main by the maintainer in [2cf9c28f2](https://github.com/morluto/rea/commit/2cf9c28f27261b7e64af2ba7ecb4e23ea7714aee), which credits @Jax367 and this PR. That commit preserves decoded keyed-archive scalar identity through dictionary/UID consumers and includes the public CLI/MCP regressions and corrected Foundation golden expectation. This branch now merges that upstream implementation. The archive production code and scalar-related documentation and regressions match main exactly. The remaining diff is test-only boundary coverage and diagnostics; it does not represent a second archive implementation. ## Remaining changes - Preserve exact ADB argument boundaries using one NUL-framed call log. Check caller-selected APK paths, install/reinstall flags, bytes/digests, unique staging paths and cleanup without a duplicate snapshot log. Keep main's filename-with-spaces and byte comparison controls. - Verify incomplete captures on active cancellation, completed Evidence when cancellation arrives during final close, concurrent shared-provider cleanup retries, and standalone server cleanup ownership. - Include the command, stdout, stderr and signal in JEB discovery assertion failures. Keep main's restored PATH so Linux process-ownership prerequisites such as `ps` remain available while the malformed JEB timeout is still rejected. - Remove one redundant success assertion immediately followed by the existing error guard in the process-capture lifecycle test. - Format the new XML keyed-archive regression introduced by upstream `78cf6100f`; the first CI merge snapshot exposed a long call that failed the formatter. No runtime, schema, provider authority, dependency, installer or generated-output changes remain relative to main. ## Validation Latest head: `1713d3c6c`, merging main `78cf6100f` on 2026-10-17. All three overlapping archive conflicts use main's improved implementation; GitHub reports the head mergeable. - Pinned Node 24.18.0 / npm 11.16.0; dependency validation, pre-commit formatting/lint and pre-push typecheck/lint passed. - Ten relevant files: **63 distinct tests passed, 6 POSIX-only cases skipped on Windows**. The large root traversal budget case exceeded its unchanged 30-second limit in the combined run; the same five-case domain file passed alone, with the large case taking 18.4 seconds. No input, budget or timeout was relaxed. - Public compiled CLI and production stdio MCP cover XML/binary scalar kinds, wrapper-shaped dictionary controls, scalar-root refusal, date uncertainty and JEB configuration isolation. - `npm run check:ci`: all eight static tasks and architecture guards passed. - `npm run docs:check`: six tasks and all five README consistency tests passed. - [Complete CI for the preceding head](https://github.com/morluto/rea/actions/runs/39031975131) passed, including all five shards, Portable tests, CI required and real Apple artifact CLI/MCP E2E. - After synchronizing the additional upstream XML key repair: **67 tests passed across four files**, including segmented XML keys, independent binary controls, root selection, CLI/MCP result equality and original-byte retention. - Static and documentation checks passed again after that synchronization. - [CI for the latest merged head](https://github.com/morluto/rea/actions/runs/39033568414) **passed**: all five test shards, Portable tests, CI required, static checks, source tests and real Apple artifact CLI/MCP E2E. Source tests: 595 files / 9,421 passed / 8 skipped. Shard 5 includes both JEB isolation tests and all 16 Linux ADB tests passing. - Provider/package lanes not selected for the final test-only diff remain skipped; this run does not claim new real deep-provider qualification. Local Windows execution does not verify POSIX ADB execution or real Apple tooling; those require the appropriate hosted lanes. No actual Hopper/Ghidra/IDA provider was exercised locally. ## Author readiness Human owner: @Jax367 - [ ] 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 completes these declarations; AI assistance does not attest to human review. ## Before merge - [x] Original archive fix is incorporated upstream with attribution. - [x] Conflicts resolved against the maintainer's implementation. - [x] Remaining test changes and verification limits described above. - [x] No unrelated runtime changes, credentials or generated outputs. - [x] Required CI checks pass on the latest head. - [ ] Human author readiness completed. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
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#6166
No description provided.