[PR #2491] [MERGED] fix(browser): preserve unknown storage inventory and fingerprint coverage #5269

Closed
opened 2026-10-31 01:05:19 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2491
Author: @chAng-L19
Created: 10/13/2026
Status: ✅ Merged
Merged: 10/13/2026
Merged by: @morluto

Base: main ← Head: audit/boundary-integrity


📝 Commits (10+)

  • 522da0f fix(browser): preserve unknown storage inventory and fingerprint coverage
  • ec46782 fix(browser): compare known storage edits with incomplete inventories
  • 869060e test(browser): consolidate storage completeness regression workflows
  • efe21e1 Merge remote-tracking branch 'origin/main' into audit/boundary-integrity
  • a16505c test(ida): admit aligned FAT thinning fixtures on every platform
  • 608f62e fix: resolve PR 2491 IDA fixture alignment conflict
  • 4b2776a Merge remote-tracking branch 'origin/main' into audit/pr2491-conflict-sync
  • 98f5b6e Merge commit 'c02fb0ea80' into audit/pr2491-conflict-sync
  • 4f7e85f Merge commit 'e05d3399f1' into audit/pr2491-conflict-sync
  • ba46433 chore(ci): merge upstream baseline fixes

📊 Changes

6 files changed (+506 additions, -82 deletions)

View changed files

📝 src/browser/CdpCaptureStorage.ts (+25 -3)
📝 src/browser/CdpCaptureStorageFingerprints.ts (+66 -11)
📝 src/browser/CdpPageCapture.ts (+6 -0)
📝 src/domain/webCaptureDiff.ts (+6 -5)
📝 src/ida/IdaWorkspaceThinning.test.ts (+48 -63)
➕ tests/boundary/browser/cdpBrowserProvider.storage_completeness.test.ts (+355 -0)

📄 Description

Summary

Preserve unknown CDP storage coverage instead of reporting false unchanged, removed, or schema-modified results in compare_web_captures. This fixes the producing boundary and decouples inventory coverage from shared complete content fingerprints in the existing comparison.

Problem and expected behavior

For example, CacheStorage.requestCacheNames returning {}, { caches: null }, or { caches: [null] } was normalized to an empty inventory and incorrectly marked complete. A valid earlier capture could then appear to have lost its caches. Incomplete DOMStorage/IndexedDB/CacheStorage key inventories also failed to mark storage_keys unavailable, including when fingerprints were not requested.

IndexedDB fingerprints similarly treated missing or malformed RemoteObjects and keyPaths as complete, and filtering invalid object-store entries could create a complete-looking partial schema. These inputs must preserve uncertainty while retaining successfully observed facts.

Change and scope

  • Compare parsed cache and object-store coverage against the original protocol arrays.
  • Return key-inventory exclusion reasons from captureStorage; its sole CDP consumer records them in the canonical ledger.
  • Validate IndexedDB keyPath variants and RemoteObject by-value/primitive representations before declaring fingerprints complete. Unresolved handles remain incomplete.
  • Add 44 production-boundary regression cases, including valid-value negative controls and downstream comparison behavior.

The storage comparison now gates key inventories independently from complete content fingerprints, so an unavailable peer inventory does not hide a known modification. No new provider, capability, or dependency. An advance maintainer scope decision is not applicable to this correction of an existing capture boundary. No linked issue: discovered during source audit and reproduced locally. The follow-up addresses review thread https://github.com/morluto/rea/pull/2491#discussion_r4255498118 .

Deduplication: reviewed all 1,620 historical PRs in the initial snapshot, refreshed the latest 100 before submission (through #2487), and inspected relevant patches. #513 handles downstream incomplete-inventory diffs; this fixes the producer's incorrect completeness claims. #809 handles Date key/primaryKey references and empty indexName; this covers malformed/missing protocol values. #763, #815, #1579, and #2487 contain no equivalent fix. This branch does not include the separate sensitive-history correction in #2477.

Contract and boundary impact

  • Semantic owner and earliest changed stage: CDP storage capture and fingerprint producers, before normalization and comparison.
  • Contribution scope fit and linked maintainer decision: ordinary correctness fix within existing browser observation scope; not applicable.
  • CLI and MCP/tool-catalog contract: no schema or tool changes; existing storage_keys exclusions and fingerprint complete flags now reflect actual coverage.
  • Provider/platform compatibility: CDP protocol validation; exercised on Windows with Chrome 155.0.8059.39. Playwright producers are unchanged.
  • Evidence/provenance contract: retain partial observations and unknowns; do not convert missing coverage into absence.
  • Target selection, authority, and cleanup: unchanged existing target/origin gates; fixtures use local HTTP/WebSocket transport and test-scoped cleanup. Real verifier closes proxies, stops owned Chrome, and preserves attached external targets.
  • Generated metadata/package/installation impact: none; no generated outputs committed.

Expected effects of the existing workflow exercised here:

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

These describe existing local browser-verifier behavior, including temporary profiles and scenario initialization; the fix adds no such effects.

Evidence and regression coverage

  • Added cdpBrowserProvider.storage_completeness.test.ts: real local HTTP/WebSocket fixtures exercise production transport, capture, output schemas, and comparison. Malformed replies are fixture-generated, not claimed as observed Chrome behavior.

  • Initial base reproduction: 23 failures / 14 passes across the first 37 regression cases, before the producer fixes.

  • Review regression: unavailable or malformed cache inventory preserves local/session-storage value modifications in both comparison directions. Identical partial observations, missing peers, malformed peer values, and incomplete fingerprints remain unknown without inferred additions/removals. Both new cases failed on the prior PR head and pass with the independent comparison gates.

  • Final focused coverage: 44 new cases plus existing IndexedDB, sensitive-data, and diff regressions; 65 passed.

  • Representative output for malformed inventory: completeness.excluded includes { section: "storage_keys", reason: "invalid_protocol_value", count: null }; storage comparison reports { status: "unknown", total_changes: 0 }.

  • Negative controls preserve valid empty inventories and complete string, boolean, finite number, undefined, null, by-value JSON, numeric special values, and bigint observations. Unsupported commands retain successfully observed peer keys.

  • Remaining proof gaps: no Linux/macOS run; a Windows signal-classification test fails as described below. Existing exported captures are not retroactively corrected.

  • 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

Node 24.18.0 / npm 11.16.0 on Windows:

  • npm run test:focused -- tests/boundary/browser/cdpBrowserProvider.storage_completeness.test.ts tests/boundary/browser/cdpBrowserProvider.indexed_db.test.ts tests/boundary/browser/cdpBrowserProvider.sensitive_data.test.ts tests/boundary/browser/webCaptureDiff.test.ts — 4 files / 65 tests passed.
  • npm run check — typecheck, formatting, lint, knip, module boundaries, and architecture guards passed after rebasing onto 2c7240cf9d8231e16ad01de7678af9dbd01bab46; lint reports 0 errors and 1,000 existing repository warnings.
  • npm run verify:test-discovery — all 1,014 files in that snapshot discovered exactly once.
  • npm run test:focused -- tests/boundary/browser — 426 passed, 8 skipped, 1 failed across 43 files. The existing browserProcessStartup.test.ts:60 expects POSIX SIGTERM termination; Windows returns exitCode 1 / signalCode null. Its test and production path are unchanged by this PR.
  • REA_BROWSER_EXECUTABLE selecting installed Chrome, then node scripts/verify-real-browser.mjs — Chrome 155.0.8059.39, verified: true, including public CLI/stdio MCP, capture/storage, scenario storage, network, screenshots, popups, source maps, and cleanup. Executed before rebase against the same browser production changes; rebase did not alter them.
  • Review follow-up: npm run check passed; browser focused regressions 65 passed; CLI/MCP comparison entrypoint regressions 18 passed across 5 files.
  • Real Chrome verifier rerun on the follow-up did not finish successfully: first attempt failed initial target authorization; retry reached scenario storage and reported a 1-second cleanup timeout. These failures are retained as validation gaps, not a passing real-provider result. Verifier finally blocks ran; a subsequent process query found no Chrome with verifier/scenario temporary-profile arguments. The earlier successful real-provider run above remains historical evidence.
  • git diff --check origin/main...HEAD — passed.

Compatibility, safety, and release

  • No breaking interface or migration; comparisons requiring reliable storage coverage should recapture older incomplete evidence.
  • Real browser coverage is Windows/Chrome only; fixtures prove malformed-boundary behavior independently.
  • No package or release metadata changes; no credentials, private binaries, generated artifacts, or local audit logs in the diff.
  • Impact is analysis-result integrity. This work does not establish code execution, privilege escalation, or unauthorized data access.

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 (no contract/schema change).
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

CI follow-up

CI follow-up: fixed both confirmed blockers.

  1. Static checks: jscpd reported 3.007057% against the unchanged 3% threshold. Consolidated duplicated storage test setup, comparison, and RemoteObject cases while preserving all 44 cases. After syncing current main, consolidated the directly related IDA fixture admission and exact-slice verification too. Final local rate is 2.998722%, and the full npm run check:ci passes. No threshold or ignore rule was changed.
  2. Test shard 1: an upstream IDA FAT fixture used offset 4096 while declaring alignment 2^14. The parser correctly rejected it before reaching the intended copy regression. Corrected the fixture declaration to 2^12 and added a platform-independent admission regression. It reproduced the same failure on Windows before the fix. Existing Unix-only copy tests retain their slice, byte-equality, size, and digest coverage.

Final local verification after syncing main: 68 passed / 5 Windows platform skips across the focused browser and IDA files; all 1,034 test files discovered exactly once; check:ci and pre-push checks passed. Commits: 869060eed (storage test consolidation), a16505c27 (FAT fixture correction). Remote CI completed successfully on head a16505c27: https://github.com/morluto/rea/actions/runs/38360737923 . All six test shards and the coverage/timing aggregation passed: 1,021 test files passed / 13 skipped; 10,555 tests passed / 99 skipped. Static checks, real-browser verification, native package baseline, and all SQLite compatibility lanes also passed. The earlier head's real-browser CI lane passed; the historical local Chrome failures remain recorded separately.

Conflict resolution verification (2026-10-13)

Merged upstream main through c02fb0ea80 into the existing branch. The conflict was limited to the IDA FAT fixture: retain the upstream per-slice alignment exponent, use 12 for the 4096-byte-offset first slice, and retain the PR's shared fixture and platform-independent admission regression.

Validation on Windows x64, Node 24.18.0 / npm 11.16.0:

  • Relevant browser/IDA suite: 68 passed, 5 existing platform skips.
  • npm run check: passed.
  • npm run verify:test-discovery: all 1044 files discovered exactly once.
  • Windows native artifact manifest/hash verification: passed. The reused native artifact predates unrelated runtime-allocation/processor-group changes; no claim of full current native-source verification.
  • GitHub reports mergeable: true; required CI/review status is tracked separately.

Real Hopper/Ghidra/IDA GUI workflows and macOS/Linux execution were not rerun in this conflict-only update.

Final upstream synchronization: 98f5b6eadfb506e8d2e5b8f2e764a3cffdb0bb09; relevant suite remains 68 passed / 5 platform skips, and npm run check passed after merging c02fb0ea8055f98def2b12ad557aed0faefd3639.

CI failure follow-up (2026-10-13)

The failing shard in both #2491 and #2724 was the same upstream assertion in src/domain/javascript/javascriptSemanticAnalysis.structure.test.ts:74: a shadowing function parameter was expected to be local, although its producing provenance rule retains caller-dependent parameters as unknown.

Reproduced locally before synchronization: 1 failed / 25 passed across the structure and provenance files. Upstream has already fixed the assertion in e05d3399f19f25fdf04285a02b293418256b26dc; this branch now merges that commit and its preceding main history without adding a duplicate fix or altering the production provenance rule.

Verification on the new head 4f7e85f209ae0d7dcc8395ee2c240f4544330a2d:

  • Failing structure/provenance files plus this PR's regressions: 94 passed / 5 Windows platform skips.
  • npm run check:ci: passed (including duplication/TODO gates).
  • PR diff remains confined to the original six files relative to the synchronized main.
  • New remote CI is being checked separately; the earlier failed runs are retained as historical evidence.

The Codex review summary's tool failure is separate from the assertion failure. It is a review-service status, not a compiler/test finding; the retrieved Greptile review reported no actionable new defect.


🔄 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/2491 **Author:** [@chAng-L19](https://github.com/chAng-L19) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/13/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `audit/boundary-integrity` --- ### 📝 Commits (10+) - [`522da0f`](https://github.com/morluto/rea/commit/522da0f660f7777f63d77638c93a8f904d85504c) fix(browser): preserve unknown storage inventory and fingerprint coverage - [`ec46782`](https://github.com/morluto/rea/commit/ec4678240e35aa9c6fe3160ddc33545adcfb451b) fix(browser): compare known storage edits with incomplete inventories - [`869060e`](https://github.com/morluto/rea/commit/869060eed0f402aa0a678c73a5dcaa1ce3e06589) test(browser): consolidate storage completeness regression workflows - [`efe21e1`](https://github.com/morluto/rea/commit/efe21e1f46715e0e8fc1c23cd1fce4eec6054f7d) Merge remote-tracking branch 'origin/main' into audit/boundary-integrity - [`a16505c`](https://github.com/morluto/rea/commit/a16505c27f826565d6ee76dd68dcb5751292f2f1) test(ida): admit aligned FAT thinning fixtures on every platform - [`608f62e`](https://github.com/morluto/rea/commit/608f62e3aa7cadcfb105a559cdf5b9ab1910ae2f) fix: resolve PR 2491 IDA fixture alignment conflict - [`4b2776a`](https://github.com/morluto/rea/commit/4b2776afb581a5e6f7675623990339453acd2f22) Merge remote-tracking branch 'origin/main' into audit/pr2491-conflict-sync - [`98f5b6e`](https://github.com/morluto/rea/commit/98f5b6eadfb506e8d2e5b8f2e764a3cffdb0bb09) Merge commit 'c02fb0ea8055f98def2b12ad557aed0faefd3639' into audit/pr2491-conflict-sync - [`4f7e85f`](https://github.com/morluto/rea/commit/4f7e85f209ae0d7dcc8395ee2c240f4544330a2d) Merge commit 'e05d3399f19f25fdf04285a02b293418256b26dc' into audit/pr2491-conflict-sync - [`ba46433`](https://github.com/morluto/rea/commit/ba4643303f69b95e8417cd47d675d53f850411f3) chore(ci): merge upstream baseline fixes ### 📊 Changes **6 files changed** (+506 additions, -82 deletions) <details> <summary>View changed files</summary> 📝 `src/browser/CdpCaptureStorage.ts` (+25 -3) 📝 `src/browser/CdpCaptureStorageFingerprints.ts` (+66 -11) 📝 `src/browser/CdpPageCapture.ts` (+6 -0) 📝 `src/domain/webCaptureDiff.ts` (+6 -5) 📝 `src/ida/IdaWorkspaceThinning.test.ts` (+48 -63) ➕ `tests/boundary/browser/cdpBrowserProvider.storage_completeness.test.ts` (+355 -0) </details> ### 📄 Description ## Summary Preserve unknown CDP storage coverage instead of reporting false unchanged, removed, or schema-modified results in `compare_web_captures`. This fixes the producing boundary and decouples inventory coverage from shared complete content fingerprints in the existing comparison. ## Problem and expected behavior For example, `CacheStorage.requestCacheNames` returning `{}`, `{ caches: null }`, or `{ caches: [null] }` was normalized to an empty inventory and incorrectly marked complete. A valid earlier capture could then appear to have lost its caches. Incomplete DOMStorage/IndexedDB/CacheStorage key inventories also failed to mark `storage_keys` unavailable, including when fingerprints were not requested. IndexedDB fingerprints similarly treated missing or malformed RemoteObjects and keyPaths as complete, and filtering invalid object-store entries could create a complete-looking partial schema. These inputs must preserve uncertainty while retaining successfully observed facts. ## Change and scope - Compare parsed cache and object-store coverage against the original protocol arrays. - Return key-inventory exclusion reasons from `captureStorage`; its sole CDP consumer records them in the canonical ledger. - Validate IndexedDB keyPath variants and RemoteObject by-value/primitive representations before declaring fingerprints complete. Unresolved handles remain incomplete. - Add 44 production-boundary regression cases, including valid-value negative controls and downstream comparison behavior. The storage comparison now gates key inventories independently from complete content fingerprints, so an unavailable peer inventory does not hide a known modification. No new provider, capability, or dependency. An advance maintainer scope decision is not applicable to this correction of an existing capture boundary. No linked issue: discovered during source audit and reproduced locally. The follow-up addresses review thread https://github.com/morluto/rea/pull/2491#discussion_r4255498118 . Deduplication: reviewed all 1,620 historical PRs in the initial snapshot, refreshed the latest 100 before submission (through #2487), and inspected relevant patches. #513 handles downstream incomplete-inventory diffs; this fixes the producer's incorrect completeness claims. #809 handles Date key/primaryKey references and empty indexName; this covers malformed/missing protocol values. #763, #815, #1579, and #2487 contain no equivalent fix. This branch does not include the separate sensitive-history correction in #2477. ## Contract and boundary impact - Semantic owner and earliest changed stage: CDP storage capture and fingerprint producers, before normalization and comparison. - Contribution scope fit and linked maintainer decision: ordinary correctness fix within existing browser observation scope; not applicable. - CLI and MCP/tool-catalog contract: no schema or tool changes; existing `storage_keys` exclusions and fingerprint `complete` flags now reflect actual coverage. - Provider/platform compatibility: CDP protocol validation; exercised on Windows with Chrome 155.0.8059.39. Playwright producers are unchanged. - Evidence/provenance contract: retain partial observations and unknowns; do not convert missing coverage into absence. - Target selection, authority, and cleanup: unchanged existing target/origin gates; fixtures use local HTTP/WebSocket transport and test-scoped cleanup. Real verifier closes proxies, stops owned Chrome, and preserves attached external targets. - Generated metadata/package/installation impact: none; no generated outputs committed. Expected effects of the existing workflow exercised here: - [x] Read existing files or captured data. - [x] Launch or attach to a process. - [x] Inject instrumentation or run scripts/code. - [x] Change process memory, registers, files, or configuration. - [x] 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. These describe existing local browser-verifier behavior, including temporary profiles and scenario initialization; the fix adds no such effects. ## Evidence and regression coverage - Added `cdpBrowserProvider.storage_completeness.test.ts`: real local HTTP/WebSocket fixtures exercise production transport, capture, output schemas, and comparison. Malformed replies are fixture-generated, not claimed as observed Chrome behavior. - Initial base reproduction: 23 failures / 14 passes across the first 37 regression cases, before the producer fixes. - Review regression: unavailable or malformed cache inventory preserves local/session-storage value modifications in both comparison directions. Identical partial observations, missing peers, malformed peer values, and incomplete fingerprints remain unknown without inferred additions/removals. Both new cases failed on the prior PR head and pass with the independent comparison gates. - Final focused coverage: 44 new cases plus existing IndexedDB, sensitive-data, and diff regressions; 65 passed. - Representative output for malformed inventory: `completeness.excluded` includes `{ section: "storage_keys", reason: "invalid_protocol_value", count: null }`; storage comparison reports `{ status: "unknown", total_changes: 0 }`. - Negative controls preserve valid empty inventories and complete string, boolean, finite number, undefined, null, by-value JSON, numeric special values, and bigint observations. Unsupported commands retain successfully observed peer keys. - Remaining proof gaps: no Linux/macOS run; a Windows signal-classification test fails as described below. Existing exported captures are not retroactively corrected. - [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 Node 24.18.0 / npm 11.16.0 on Windows: - `npm run test:focused -- tests/boundary/browser/cdpBrowserProvider.storage_completeness.test.ts tests/boundary/browser/cdpBrowserProvider.indexed_db.test.ts tests/boundary/browser/cdpBrowserProvider.sensitive_data.test.ts tests/boundary/browser/webCaptureDiff.test.ts` — 4 files / 65 tests passed. - `npm run check` — typecheck, formatting, lint, knip, module boundaries, and architecture guards passed after rebasing onto `2c7240cf9d8231e16ad01de7678af9dbd01bab46`; lint reports 0 errors and 1,000 existing repository warnings. - `npm run verify:test-discovery` — all 1,014 files in that snapshot discovered exactly once. - `npm run test:focused -- tests/boundary/browser` — 426 passed, 8 skipped, 1 failed across 43 files. The existing `browserProcessStartup.test.ts:60` expects POSIX SIGTERM termination; Windows returns exitCode 1 / signalCode null. Its test and production path are unchanged by this PR. - `REA_BROWSER_EXECUTABLE` selecting installed Chrome, then `node scripts/verify-real-browser.mjs` — Chrome 155.0.8059.39, `verified: true`, including public CLI/stdio MCP, capture/storage, scenario storage, network, screenshots, popups, source maps, and cleanup. Executed before rebase against the same browser production changes; rebase did not alter them. - Review follow-up: `npm run check` passed; browser focused regressions 65 passed; CLI/MCP comparison entrypoint regressions 18 passed across 5 files. - Real Chrome verifier rerun on the follow-up did not finish successfully: first attempt failed initial target authorization; retry reached scenario storage and reported a 1-second cleanup timeout. These failures are retained as validation gaps, not a passing real-provider result. Verifier finally blocks ran; a subsequent process query found no Chrome with verifier/scenario temporary-profile arguments. The earlier successful real-provider run above remains historical evidence. - `git diff --check origin/main...HEAD` — passed. ## Compatibility, safety, and release - No breaking interface or migration; comparisons requiring reliable storage coverage should recapture older incomplete evidence. - Real browser coverage is Windows/Chrome only; fixtures prove malformed-boundary behavior independently. - No package or release metadata changes; no credentials, private binaries, generated artifacts, or local audit logs in the diff. - Impact is analysis-result integrity. This work does not establish code execution, privilege escalation, or unauthorized data access. ## Before merge - [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 (no contract/schema change). - [x] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. ## CI follow-up CI follow-up: fixed both confirmed blockers. 1. Static checks: `jscpd` reported 3.007057% against the unchanged 3% threshold. Consolidated duplicated storage test setup, comparison, and RemoteObject cases while preserving all 44 cases. After syncing current main, consolidated the directly related IDA fixture admission and exact-slice verification too. Final local rate is 2.998722%, and the full `npm run check:ci` passes. No threshold or ignore rule was changed. 2. Test shard 1: an upstream IDA FAT fixture used offset 4096 while declaring alignment 2^14. The parser correctly rejected it before reaching the intended copy regression. Corrected the fixture declaration to 2^12 and added a platform-independent admission regression. It reproduced the same failure on Windows before the fix. Existing Unix-only copy tests retain their slice, byte-equality, size, and digest coverage. Final local verification after syncing main: 68 passed / 5 Windows platform skips across the focused browser and IDA files; all 1,034 test files discovered exactly once; `check:ci` and pre-push checks passed. Commits: 869060eed (storage test consolidation), a16505c27 (FAT fixture correction). Remote CI completed successfully on head a16505c27: https://github.com/morluto/rea/actions/runs/38360737923 . All six test shards and the coverage/timing aggregation passed: 1,021 test files passed / 13 skipped; 10,555 tests passed / 99 skipped. Static checks, real-browser verification, native package baseline, and all SQLite compatibility lanes also passed. The earlier head's real-browser CI lane passed; the historical local Chrome failures remain recorded separately. ### Conflict resolution verification (2026-10-13) Merged upstream main through c02fb0ea8055f98def2b12ad557aed0faefd3639 into the existing branch. The conflict was limited to the IDA FAT fixture: retain the upstream per-slice alignment exponent, use 12 for the 4096-byte-offset first slice, and retain the PR's shared fixture and platform-independent admission regression. Validation on Windows x64, Node 24.18.0 / npm 11.16.0: - Relevant browser/IDA suite: 68 passed, 5 existing platform skips. - `npm run check`: passed. - `npm run verify:test-discovery`: all 1044 files discovered exactly once. - Windows native artifact manifest/hash verification: passed. The reused native artifact predates unrelated runtime-allocation/processor-group changes; no claim of full current native-source verification. - GitHub reports `mergeable: true`; required CI/review status is tracked separately. Real Hopper/Ghidra/IDA GUI workflows and macOS/Linux execution were not rerun in this conflict-only update. Final upstream synchronization: `98f5b6eadfb506e8d2e5b8f2e764a3cffdb0bb09`; relevant suite remains 68 passed / 5 platform skips, and `npm run check` passed after merging `c02fb0ea8055f98def2b12ad557aed0faefd3639`. ### CI failure follow-up (2026-10-13) The failing shard in both #2491 and #2724 was the same upstream assertion in `src/domain/javascript/javascriptSemanticAnalysis.structure.test.ts:74`: a shadowing function parameter was expected to be `local`, although its producing provenance rule retains caller-dependent parameters as `unknown`. Reproduced locally before synchronization: 1 failed / 25 passed across the structure and provenance files. Upstream has already fixed the assertion in `e05d3399f19f25fdf04285a02b293418256b26dc`; this branch now merges that commit and its preceding main history without adding a duplicate fix or altering the production provenance rule. Verification on the new head `4f7e85f209ae0d7dcc8395ee2c240f4544330a2d`: - Failing structure/provenance files plus this PR's regressions: 94 passed / 5 Windows platform skips. - `npm run check:ci`: passed (including duplication/TODO gates). - PR diff remains confined to the original six files relative to the synchronized main. - New remote CI is being checked separately; the earlier failed runs are retained as historical evidence. The Codex review summary's tool failure is separate from the assertion failure. It is a review-service status, not a compiler/test finding; the retrieved Greptile review reported no actionable new defect. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:05:19 +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#5269
No description provided.