[PR #7471] fix(apk): validate classic ZIP disk declarations #7858

Open
opened 2026-11-05 01:48:11 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/7471
Author: @wunianze666-netizen
Created: 10/27/2026
Status: 🔄 Open

Base: main ← Head: codex/apk-classic-zip-disks


📝 Commits (2)

  • 30ae641 fix(apk): validate classic ZIP disk declarations
  • 0369595 merge: integrate upstream CI baseline repairs for APK framing

📊 Changes

5 files changed (+160 additions, -10 deletions)

View changed files

📝 docs/apk-signature.md (+8 -1)
📝 src/apkSignature/apkSignatureFailures.ts (+7 -0)
📝 src/domain/apkSignature/apkSigningBlock.test.ts (+59 -0)
📝 src/domain/apkSignature/apkSigningBlock.ts (+34 -6)
📝 tests/acceptance/apkZip64FramingCli.test.ts (+52 -3)

📄 Description

Summary

Fixes #7433. Refuse classic ZIP disk declarations that the selected file cannot resolve before APK signing inspection reports absent signing schemes.

Problem and expected behavior

A generated two-entry ZIP with only its classic EOCD disk number changed to1 was accepted as observed, unsigned signing Evidence, while the artifact inventory refused the same bytes as split ZIP. A nonzero directory disk and contradictory per-disk entry count were also accepted. Nonlocal disk declarations now return unsupported_target; inconsistent single-disk counts return invalid_request. Valid single-disk and existing Zip64 controls remain supported.

Change and scope

The existing APK tail owner consumes already-parsed EOCD facts and checks classic layout admission before selecting a local directory span. Both ordinary classic and count-saturated/no-Zip64 return paths use that one check. The existing tagged Result and error mapper carry the refusal through CLI/MCP. No new provider or execution authority.

Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the readiness and merge checklists
unchecked. Maintainers can help resolve open questions.

Contract and boundary impact

  • Semantic owner and earliest changed stage: APK central-directory resolution in apkSigningBlock.ts, consuming canonical zipEndOfCentralDirectory candidates; both classic return paths share classicDirectory. No binary-field reinterpretation is added downstream.
  • Contribution scope fit and linked maintainer decision: ordinary static-parser correction in the existing APK inspection boundary; separate scope decision not applicable.
  • CLI and MCP/tool-catalog contract: existing inspect-apk-signature / inspect_apk_signature request and result schemas stay unchanged. Previously accepted unsupported/malformed layouts now use existing typed error categories instead of successful signing Evidence.
  • Provider, bridge, target-format, or platform compatibility: builtin dependency-free APK framing; no Android SDK, device, external engine or genuine split-set support added. Existing Zip64 parsing remains on its original path.
  • Evidence, artifact, provenance, or reconstruction contract: successful controls retain selected path, original SHA256/size and no-runtime-execution fact. Refused inputs produce no signing report, so absence is not promoted from an unresolved layout.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): existing caller-selected local-file reads only; no target execution, mutation, network activity or new cleanup owner.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs and skills/; edit authored instructions in .agents/skills/reverse-engineer-anything/ and never commit build outputs): no package/lock/schema/install changes; generated outputs remain ignored.

Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.

  • Read existing files or captured data.
  • Launch or attach to a process.
  • Inject instrumentation or run scripts/code.
  • Change process memory, registers, files, or configuration.
  • Contact network services.
  • Recover protected code or work around protections.
  • Documentation or usability only; no target interaction.
  • Not sure yet; investigation or maintainer guidance needed.

Evidence and regression coverage

  • Tests added or updated: the seven domain controls and one CLI/MCP scenario remain intact. On the current ordinary-merge tree, all83 controls in six focused files passed,0skip; the three build tasks passed. Docs9 repeated by docs:check are not added again.
  • Base reproduction or other evidence: ordinary merge 03695956bca23aef59cb8622ae5cd8bf589b7f08 integrates frozen main ad7d4c1f4dd9cbd93229ee330e66c7a522e723e6, including relevant upstream #7349/#7479 baseline repairs. Its parents are30ae6416+ad7d4c1f, tree05f0e21d08c231535ebfe378994175b6741b1cbd. No conflict or manual feature edit was needed; relative to frozen main this remains the original five-file APK fix. Upstream repairs are credited to their authors, not this PR. The original18pass/8fail reproduction and subsequent red CI comparisons remain below as history.
  • User-visible CLI/MCP output (if applicable): disk declarations still refuse unsupported layouts, and contradictory single-disk counts retain invalid_request with the EOCD+8 position. A fresh production probe passed4 compiled CLI and10 full/compact stdio calls over the same four unique353-byte generated inputs, including actual SDK-converted input/output schemas, unchanged SHA/size, no false signing Evidence and successful reuse after refusal.
  • Remaining proof gaps: current-head code CI40639870929 completed success for the selected lanes, as detailed below. Full local repository, skipped providers/deep/Windows capability, Android-device and genuine split/signed APK trust remain unverified. Real-world frequency and first affected release remain unknown.

For boundary fixes, identify the applicable boundary regressions
and lifecycle regressions
covered by the evidence above, and explain relevant gaps.

For evidence-bearing changes:

  • Observed, derived, and inferred claims remain distinguishable.
  • Artifact identity, source provenance, and failed attempts remain preserved.
  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

Windows x64, pinned Node24.22.1/npm11.16.0 with the current frozen upstream lock; no feature package/lock change. Local build/check work was serial. The earlier baseline failures are retained in the historical section rather than relabeled as current passes.

  • node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts src/domain/apkSignature/apkV1Signature.test.ts src/domain/apkSignature/apkContentDigest.test.ts src/apkSignature/ApkSignatureProvider.test.ts tests/acceptance/apkZip64FramingCli.test.ts tests/conformance/readmeConsistency.test.ts — three build tasks and83 tests passed,0skip:23tail/20v1/5digest/23provider/3CLI-MCP/9docs.
  • npm run check — passed, including full type/lint/module/format/metadata/knip/architecture/production reachability/typed-lint gates. npm run docs:check passed; its repeated9 controls are not added to83.
  • npm run verify:test-discovery — all2690 test files discovered exactly once, not execution of2690 tests.
  • Independent production protocol verifier — four unique generated353-byte ZIP inputs,4 compiled CLI calls and10 stdio calls across full/compact profiles passed. Selected request/result SDK-converted schemas, exact file hashes and positive reuse after refusals are checked; these calls are not another14 Vitest cases.
  • node scripts/verify-windows-native-artifact.mjs — genuine official1173 source6.8 artifact passed current PE/hash/NAPI8/ABI1 admission. Broader Windows capability verification and local Android tools were not run.

Current-head code CI40639870929 completed success, attempt1:37jobs comprise18success/19optional skips. Source tests passed21,071 with15skips. All eight built shards, build/static/docs, Windows native build, selected Linux package, APK toolchain and final gates passed. Optional skips remain unqualified.

Raw primary, all eight shard, native-build, Linux-package and APK-toolchain checkouts are 9d6941a703f25beb3f05b6fcad9752fa845fdefd, parents b594fbc3e739ade1fbb9ce38846ed1c3a991273e + 03695956bca23aef59cb8622ae5cd8bf589b7f08, tree 6989f16ded9f0454d47b36d27bba66395a9dd767. This differs from local 05f0e21d08c231535ebfe378994175b6741b1cbd; local83 is not relabeled as remote execution. Tail23/provider23 were individually observed in source logs; APK CLI/MCP acceptance3 passed in shard5 job122655566157.

Fresh Linux job122655593095 used Android build-tools36.1.0 apksigner/aapt2 through verify:apk-signature --require-tools and passed23 controlled cases on that actual CI tree. This is separate remote toolchain qualification, not part of local83/14protocol calls, Android-device execution or general signature trust. The older30ae result and red CI remain historical below.

Previous-head evidence and failed attempts (historical)
  • Tests added or updated: seven domain cases cover both disk fields, single-disk entry-count mismatch, and the count-saturated classic fallback; one compiled CLI/stdio MCP scenario covers disk/count refusals, no false signing Evidence, preserved input bytes and successful reuse after refusal. Existing Zip64, v1, digest and provider controls are retained.
  • Base reproduction or other evidence: independently reproduced through the production source CLI on frozen main b8cdbdf0. The new two-file regression run on unchanged production code was18pass/8fail; after the fix, six related files passed83 checks,0skip. This is one framing defect with related controls, not eight distinct vulnerabilities.
  • User-visible CLI/MCP output (if applicable): disk1/directory0 now returns unsupported_target with a multi-disk ZIP explanation; unequal single-disk counts return invalid_request at path with the EOCD+8 byte location. The unsigned single-disk control still returns observed Evidence with its exact SHA/size. Independent compiled CLI4 calls and actual full/compact stdio10 calls on four unique generated inputs passed, including real SDK-converted input/output schema validation and positive calls after refusals.
  • Remaining proof gaps: full check fails on the three unrelated knip exports listed below; no complete repository suite or genuine split/signed APK authenticity result is claimed. Real-world occurrence frequency and first affected release are unknown.

Windows x64, pinned Node24.22.1/npm11.16.0; existing locked dependencies admitted without a new install. Genuine official source1173 native6.8 artifact passed current PE/hash/NAPI8/ABI1 checks; no broader Windows capability claim.

  • node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts tests/acceptance/apkZip64FramingCli.test.ts on unchanged production baseline — three build tasks passed;18pass/8fail, including the newly authored regressions.
  • node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts src/domain/apkSignature/apkV1Signature.test.ts src/domain/apkSignature/apkContentDigest.test.ts src/apkSignature/ApkSignatureProvider.test.ts tests/acceptance/apkZip64FramingCli.test.ts tests/conformance/readmeConsistency.test.ts after fix — three build tasks and83checks passed,0skip:23tail/20v1/5digest/23provider/3CLI-MCP/9docs.
  • npm run check — failed at knip: staticFileUrlPath, AndroidManifestComponentInventory and ObjcClassImportBindingCoverage. The same three findings were independently reproduced on the unmodified actual CI base d6f88bec; no full-main green qualification is inferred. No export or ignore rule was changed.
  • Separate npm run check:fast, verify:architecture-guards, knip:production, lint:typed, docs:check — passed. Formatting/metadata passed. Repeated docs9 are not added to83.
  • npm run verify:test-discovery — all2671 test files discovered exactly once; this is discovery, not execution of2671 tests.
  • External production protocol verifier — four353-byte generated inputs,4compiled CLI calls and10stdio calls across full/compact profiles passed; exact file hashes unchanged. These are generated ZIP controls, not real signed APKs or genuine split volumes.

New-head code CI40481821185 failed:37jobs comprise7success/4failure/7cancellation/19optional skips. Source tests have17 failures; all17 were reproduced on the unmodified actual base d6f88bec (66selected controls:49pass/17fail). Shard7 has19 configuration/packaging/example failures; all19 same test names were reproduced on that base after its own three-task build (37filtered controls not executed). No fixtures, ignores or timeouts were changed. The portable/required gates correctly stayed red.

Primary jobs and all eight shard raw checkouts are 3db370d185a26f7979b8f5a808d176c49c63f170, actual base d6f88becd531cabafca1d968b89cf7fc77a80041, tree 066b281c227ab32e33b3641d4d885f7242102548; this differs from locally validated tree d4ac8faf1290828732f9398d97d362c53b2314e9. The affected tail23/provider23 source files passed. The three APK CLI/MCP acceptance controls completed successfully in shard6 before that shard was cancelled; that is not an entire-shard pass. Build/static/docs/native build and selected Linux packaging passed. The Linux real-apk-signature job122114275873 passed23 existing controlled cases with Android apksigner/aapt2 through the compiled entrypoint. This is separate remote toolchain evidence, not part of local83, Android-device execution, general signature-trust qualification or a green overall CI.

Compatibility, safety, and release

  • Breaking changes or migration steps: no request/schema change; unsupported/malformed classic layouts are refused instead of classified unsigned. Select a complete single-disk archive.
  • Real Hopper/Ghidra, browser, or OS coverage: builtin static parsing through real CLI/MCP on Windows; no real Android engine/device or cryptographic signature-trust validation. Existing supported Zip64 controls passed.
  • Package or release metadata impact: none; no new dependencies, budgets or release changes.
  • Security, privacy, process, or containment review: only selected local generated fixtures were read; no real APK consequences, protection bypass, target execution, capture/replay, paid model, performance or token-savings claim.

Author readiness

Human owner: @wunianze666-netizen

  • 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.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

🔄 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/7471 **Author:** [@wunianze666-netizen](https://github.com/wunianze666-netizen) **Created:** 10/27/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `codex/apk-classic-zip-disks` --- ### 📝 Commits (2) - [`30ae641`](https://github.com/morluto/rea/commit/30ae6416aae0575b66ba4cbc9936bd14ddd703d4) fix(apk): validate classic ZIP disk declarations - [`0369595`](https://github.com/morluto/rea/commit/03695956bca23aef59cb8622ae5cd8bf589b7f08) merge: integrate upstream CI baseline repairs for APK framing ### 📊 Changes **5 files changed** (+160 additions, -10 deletions) <details> <summary>View changed files</summary> 📝 `docs/apk-signature.md` (+8 -1) 📝 `src/apkSignature/apkSignatureFailures.ts` (+7 -0) 📝 `src/domain/apkSignature/apkSigningBlock.test.ts` (+59 -0) 📝 `src/domain/apkSignature/apkSigningBlock.ts` (+34 -6) 📝 `tests/acceptance/apkZip64FramingCli.test.ts` (+52 -3) </details> ### 📄 Description <!-- PR title: type(optional-scope): imperative outcome The title becomes the squash-merge commit subject and generated changelog entry. --> ## Summary Fixes #7433. Refuse classic ZIP disk declarations that the selected file cannot resolve before APK signing inspection reports absent signing schemes. ## Problem and expected behavior A generated two-entry ZIP with only its classic EOCD disk number changed to1 was accepted as observed, unsigned signing Evidence, while the artifact inventory refused the same bytes as split ZIP. A nonzero directory disk and contradictory per-disk entry count were also accepted. Nonlocal disk declarations now return unsupported_target; inconsistent single-disk counts return invalid_request. Valid single-disk and existing Zip64 controls remain supported. ## Change and scope The existing APK tail owner consumes already-parsed EOCD facts and checks classic layout admission before selecting a local directory span. Both ordinary classic and count-saturated/no-Zip64 return paths use that one check. The existing tagged Result and error mapper carry the refusal through CLI/MCP. No new provider or execution authority. Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). Unresolved scope, authority, side effects, or required verification block integration. Link the required maintainer scope decision for new providers or capabilities involving target execution, injection, mutation, or protection recovery; ordinary fixes within existing boundaries may state "not applicable". Draft PRs may leave the scope decision pending and the readiness and merge checklists unchecked. Maintainers can help resolve open questions. ## Contract and boundary impact - Semantic owner and earliest changed stage: APK central-directory resolution in apkSigningBlock.ts, consuming canonical zipEndOfCentralDirectory candidates; both classic return paths share classicDirectory. No binary-field reinterpretation is added downstream. - Contribution scope fit and linked maintainer decision: ordinary static-parser correction in the existing APK inspection boundary; separate scope decision not applicable. - CLI and MCP/tool-catalog contract: existing inspect-apk-signature / inspect_apk_signature request and result schemas stay unchanged. Previously accepted unsupported/malformed layouts now use existing typed error categories instead of successful signing Evidence. - Provider, bridge, target-format, or platform compatibility: builtin dependency-free APK framing; no Android SDK, device, external engine or genuine split-set support added. Existing Zip64 parsing remains on its original path. - Evidence, artifact, provenance, or reconstruction contract: successful controls retain selected path, original SHA256/size and no-runtime-execution fact. Refused inputs produce no signing report, so absence is not promoted from an unresolved layout. - Target selection, authority, upstream behavior, and cleanup details (if applicable): existing caller-selected local-file reads only; no target execution, mutation, network activity or new cleanup owner. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact (CI generates and validates ignored catalogs and `skills/`; edit authored instructions in `.agents/skills/reverse-engineer-anything/` and never commit build outputs): no package/lock/schema/install changes; generated outputs remain ignored. Expected effects (check known effects; use documentation-only on its own). Unchecked items do not establish absence; leave uncertainties visible. - [x] Read existing files or captured data. - [ ] Launch or attach to a process. - [ ] Inject instrumentation or run scripts/code. - [ ] Change process memory, registers, files, or configuration. - [ ] Contact network services. - [ ] Recover protected code or work around protections. - [ ] Documentation or usability only; no target interaction. - [ ] Not sure yet; investigation or maintainer guidance needed. ## Evidence and regression coverage - Tests added or updated: the seven domain controls and one CLI/MCP scenario remain intact. On the current ordinary-merge tree, all83 controls in six focused files passed,0skip; the three build tasks passed. Docs9 repeated by docs:check are not added again. - Base reproduction or other evidence: ordinary merge `03695956bca23aef59cb8622ae5cd8bf589b7f08` integrates frozen main `ad7d4c1f4dd9cbd93229ee330e66c7a522e723e6`, including relevant upstream #7349/#7479 baseline repairs. Its parents are30ae6416+ad7d4c1f, tree05f0e21d08c231535ebfe378994175b6741b1cbd. No conflict or manual feature edit was needed; relative to frozen main this remains the original five-file APK fix. Upstream repairs are credited to their authors, not this PR. The original18pass/8fail reproduction and subsequent red CI comparisons remain below as history. - User-visible CLI/MCP output (if applicable): disk declarations still refuse unsupported layouts, and contradictory single-disk counts retain invalid_request with the EOCD+8 position. A fresh production probe passed4 compiled CLI and10 full/compact stdio calls over the same four unique353-byte generated inputs, including actual SDK-converted input/output schemas, unchanged SHA/size, no false signing Evidence and successful reuse after refusal. - Remaining proof gaps: current-head code CI40639870929 completed success for the selected lanes, as detailed below. Full local repository, skipped providers/deep/Windows capability, Android-device and genuine split/signed APK trust remain unverified. Real-world frequency and first affected release remain unknown. For boundary fixes, identify the applicable [boundary regressions](https://github.com/morluto/rea/blob/main/docs/testing.md#boundary-regressions) and [lifecycle regressions](https://github.com/morluto/rea/blob/main/docs/testing.md#lifecycle-regressions) covered by the evidence above, and explain relevant gaps. For evidence-bearing changes: - [x] Observed, derived, and inferred claims remain distinguishable. - [x] Artifact identity, source provenance, and failed attempts remain preserved. - [x] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed Windows x64, pinned Node24.22.1/npm11.16.0 with the current frozen upstream lock; no feature package/lock change. Local build/check work was serial. The earlier baseline failures are retained in the historical section rather than relabeled as current passes. - `node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts src/domain/apkSignature/apkV1Signature.test.ts src/domain/apkSignature/apkContentDigest.test.ts src/apkSignature/ApkSignatureProvider.test.ts tests/acceptance/apkZip64FramingCli.test.ts tests/conformance/readmeConsistency.test.ts` — three build tasks and83 tests passed,0skip:23tail/20v1/5digest/23provider/3CLI-MCP/9docs. - `npm run check` — passed, including full type/lint/module/format/metadata/knip/architecture/production reachability/typed-lint gates. `npm run docs:check` passed; its repeated9 controls are not added to83. - `npm run verify:test-discovery` — all2690 test files discovered exactly once, not execution of2690 tests. - Independent production protocol verifier — four unique generated353-byte ZIP inputs,4 compiled CLI calls and10 stdio calls across full/compact profiles passed. Selected request/result SDK-converted schemas, exact file hashes and positive reuse after refusals are checked; these calls are not another14 Vitest cases. - `node scripts/verify-windows-native-artifact.mjs` — genuine official1173 source6.8 artifact passed current PE/hash/NAPI8/ABI1 admission. Broader Windows capability verification and local Android tools were not run. Current-head [code CI40639870929](https://github.com/morluto/rea/actions/runs/40639870929) completed **success**, attempt1:37jobs comprise18success/19optional skips. Source tests passed21,071 with15skips. All eight built shards, build/static/docs, Windows native build, selected Linux package, APK toolchain and final gates passed. Optional skips remain unqualified. Raw primary, all eight shard, native-build, Linux-package and APK-toolchain checkouts are `9d6941a703f25beb3f05b6fcad9752fa845fdefd`, parents `b594fbc3e739ade1fbb9ce38846ed1c3a991273e` + `03695956bca23aef59cb8622ae5cd8bf589b7f08`, tree `6989f16ded9f0454d47b36d27bba66395a9dd767`. This differs from local `05f0e21d08c231535ebfe378994175b6741b1cbd`; local83 is not relabeled as remote execution. Tail23/provider23 were individually observed in source logs; APK CLI/MCP acceptance3 passed in shard5 job122655566157. Fresh Linux job122655593095 used Android build-tools36.1.0 apksigner/aapt2 through `verify:apk-signature --require-tools` and passed23 controlled cases on that actual CI tree. This is separate remote toolchain qualification, not part of local83/14protocol calls, Android-device execution or general signature trust. The older30ae result and red CI remain historical below. <details> <summary>Previous-head evidence and failed attempts (historical)</summary> - Tests added or updated: seven domain cases cover both disk fields, single-disk entry-count mismatch, and the count-saturated classic fallback; one compiled CLI/stdio MCP scenario covers disk/count refusals, no false signing Evidence, preserved input bytes and successful reuse after refusal. Existing Zip64, v1, digest and provider controls are retained. - Base reproduction or other evidence: independently reproduced through the production source CLI on frozen main b8cdbdf0. The new two-file regression run on unchanged production code was18pass/8fail; after the fix, six related files passed83 checks,0skip. This is one framing defect with related controls, not eight distinct vulnerabilities. - User-visible CLI/MCP output (if applicable): disk1/directory0 now returns unsupported_target with a multi-disk ZIP explanation; unequal single-disk counts return invalid_request at path with the EOCD+8 byte location. The unsigned single-disk control still returns observed Evidence with its exact SHA/size. Independent compiled CLI4 calls and actual full/compact stdio10 calls on four unique generated inputs passed, including real SDK-converted input/output schema validation and positive calls after refusals. - Remaining proof gaps: full check fails on the three unrelated knip exports listed below; no complete repository suite or genuine split/signed APK authenticity result is claimed. Real-world occurrence frequency and first affected release are unknown. Windows x64, pinned Node24.22.1/npm11.16.0; existing locked dependencies admitted without a new install. Genuine official source1173 native6.8 artifact passed current PE/hash/NAPI8/ABI1 checks; no broader Windows capability claim. - `node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts tests/acceptance/apkZip64FramingCli.test.ts` on unchanged production baseline — three build tasks passed;18pass/8fail, including the newly authored regressions. - `node scripts/run-development-tests.mjs focused src/domain/apkSignature/apkSigningBlock.test.ts src/domain/apkSignature/apkV1Signature.test.ts src/domain/apkSignature/apkContentDigest.test.ts src/apkSignature/ApkSignatureProvider.test.ts tests/acceptance/apkZip64FramingCli.test.ts tests/conformance/readmeConsistency.test.ts` after fix — three build tasks and83checks passed,0skip:23tail/20v1/5digest/23provider/3CLI-MCP/9docs. - `npm run check` — failed at knip: staticFileUrlPath, AndroidManifestComponentInventory and ObjcClassImportBindingCoverage. The same three findings were independently reproduced on the unmodified actual CI base d6f88bec; no full-main green qualification is inferred. No export or ignore rule was changed. - Separate `npm run check:fast`, `verify:architecture-guards`, `knip:production`, `lint:typed`, `docs:check` — passed. Formatting/metadata passed. Repeated docs9 are not added to83. - `npm run verify:test-discovery` — all2671 test files discovered exactly once; this is discovery, not execution of2671 tests. - External production protocol verifier — four353-byte generated inputs,4compiled CLI calls and10stdio calls across full/compact profiles passed; exact file hashes unchanged. These are generated ZIP controls, not real signed APKs or genuine split volumes. New-head [code CI40481821185](https://github.com/morluto/rea/actions/runs/40481821185) **failed**:37jobs comprise7success/4failure/7cancellation/19optional skips. Source tests have17 failures; all17 were reproduced on the unmodified actual base d6f88bec (66selected controls:49pass/17fail). Shard7 has19 configuration/packaging/example failures; all19 same test names were reproduced on that base after its own three-task build (37filtered controls not executed). No fixtures, ignores or timeouts were changed. The portable/required gates correctly stayed red. Primary jobs and all eight shard raw checkouts are `3db370d185a26f7979b8f5a808d176c49c63f170`, actual base `d6f88becd531cabafca1d968b89cf7fc77a80041`, tree `066b281c227ab32e33b3641d4d885f7242102548`; this differs from locally validated tree `d4ac8faf1290828732f9398d97d362c53b2314e9`. The affected tail23/provider23 source files passed. The three APK CLI/MCP acceptance controls completed successfully in shard6 before that shard was cancelled; that is not an entire-shard pass. Build/static/docs/native build and selected Linux packaging passed. The Linux `real-apk-signature` job122114275873 passed23 existing controlled cases with Android apksigner/aapt2 through the compiled entrypoint. This is separate remote toolchain evidence, not part of local83, Android-device execution, general signature-trust qualification or a green overall CI. </details> ## Compatibility, safety, and release - Breaking changes or migration steps: no request/schema change; unsupported/malformed classic layouts are refused instead of classified unsigned. Select a complete single-disk archive. - Real Hopper/Ghidra, browser, or OS coverage: builtin static parsing through real CLI/MCP on Windows; no real Android engine/device or cryptographic signature-trust validation. Existing supported Zip64 controls passed. - Package or release metadata impact: none; no new dependencies, budgets or release changes. - Security, privacy, process, or containment review: only selected local generated fixtures were read; no real APK consequences, protection bypass, target execution, capture/replay, paid model, performance or token-savings claim. ## Author readiness <!-- The human owner completes these declarations before requesting review. The PR author is the owner by default. A different owner must explicitly accept ownership on this PR. AI agents must leave these declarations to a human to dictate to them or there could be catastrophic consequences for many users of REA. Draft PRs may leave them unchecked. These declarations record initial readiness when opening the PR for review; later pushes do not require a new human sign-off. Keep the description and validation evidence current as the work changes. See CONTRIBUTING.md#pull-request-ownership-and-readiness. --> Human owner: @wunianze666-netizen - [ ] 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. ## Before merge <!-- Draft PRs may leave pending items unchecked. Resolve material scope and authority questions before integration. --> - [x] This PR addresses a concrete problem or an agreed enhancement. - [x] Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. --- <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#7858
No description provided.