[PR #4040] [MERGED] fix(browser): preserve frame identity across captures #6013

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/4040
Author: @eco-null
Created: 10/15/2026
Status: ✅ Merged
Merged: 10/23/2026
Merged by: @morluto

Base: main ← Head: codex/browser-evidence-fidelity


📝 Commits (10+)

  • a466628 fix(browser): preserve capture evidence fidelity
  • 33f048a fix(browser): align frame identity comparisons
  • 0e338dd chore(browser): resolve current main integration
  • 390046a fix(browser): retain historical frame evidence
  • 0d2a81b fix(electron): retain same-document script owners
  • ad2973f chore(browser): sync current main
  • d288065 chore(browser): integrate DOM admission updates
  • 1dcd7b1 fix(electron): bind frame proof to tree reads
  • 7801dae chore(browser): merge current main
  • cd66811 fix(browser): preserve frame identity proof

📊 Changes

21 files changed (+3961 additions, -171 deletions)

View changed files

📝 docs/electron-observation.md (+4 -1)
📝 src/browser/CdpAuthorizedMainFrame.ts (+12 -8)
📝 src/browser/CdpCaptureDocuments.test.ts (+130 -0)
📝 src/browser/CdpCaptureDocuments.ts (+86 -12)
📝 src/browser/CdpElectronInspection.test.ts (+567 -4)
📝 src/browser/CdpElectronInspection.ts (+395 -32)
📝 src/browser/CdpElectronScripts.ts (+2 -5)
📝 src/browser/CdpObservationSession.ts (+44 -20)
📝 src/browser/CdpScreenshot.ts (+55 -17)
📝 src/browser/CdpWebMcpDiscovery.ts (+81 -51)
📝 src/browser/execution/CdpRuntimeProtocol.ts (+1 -2)
📝 src/browser/execution/CdpRuntimeSession.ts (+44 -14)
➕ tests/boundary/browser/cdpAuthorizedMainFrameRetry.test.ts (+204 -0)
📝 tests/boundary/browser/cdpBrowserProvider.document_script.test.ts (+409 -5)
📝 tests/boundary/browser/cdpBrowserProvider.timelineEvents.test.ts (+298 -0)
📝 tests/boundary/browser/cdpElectronProvider.test.ts (+941 -0)
➕ tests/boundary/browser/cdpRuntimeFrameIdentity.test.ts (+168 -0)
📝 tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts (+148 -0)
➕ tests/boundary/browser/cdpWebMcpTransientIdentity.test.ts (+204 -0)
📝 tests/boundary/mcp/browserMcp.test.ts (+87 -0)

...and 1 more files

📄 Description

Summary

Preserve frame identity and lifecycle evidence across browser/Electron captures. Fixes #3878, fixes #3941, fixes #3910.

Problem and expected behavior

CDP splits base URL and fragment, while capture lifecycle can advance between reads. A single parsed identity/scope owner now feeds authorization, runtime, timeline, screenshot and WebMCP consumers. Electron uses a structurally valid ancestry graph separately from per-file admission and binds scripts to authorized frame generations.

Change and scope

Tree snapshots separate stable loader/parent document identity from URL observations. A URL-only child history/hash update retains generation authority; a changed loader/parent uses the shared descendant-generation invalidation. Explicit full-navigation event replay still requires matching observed URL, preserving unknown-frame controls. A tree-observed same-file reload cannot erase the previous loader identity and hide a delayed navigation event; main replacement returns target_changed, while child replacement retains historical proof and leaves newly unverified script attribution unknown.

One coupled outcome: preserve document identity and authorization across capture lifecycle. Integrated main 0b17cb621, including ASAR header admission and runtime setup/cleanup. No new target authority.

Independent fixes removed from this diff: PNG #6412 (merged); omitted-response accounting #6413 (merged). Offline HAR availability and dropped-WebMCP comparison are validated independent branches; GitHub rejected their PR creation with CreatePullRequest permission errors. Prepared comparisons: offline HAR and WebMCP comparison.

Restored prior runtime error precedence: frame/loader or no-loader URL changes return target_changed before origin rejection. Same-document origin rejection retains the original detail text; regressions pin both behaviors. Superseded AST-only regressions were removed; upstream fixes are not claimed here.

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: CdpCaptureDocuments parsed identity/scope and Electron inventory/generation producers.
  • Contribution scope fit and linked maintainer decision: Ordinary fix within existing boundaries; new maintainer scope decision not applicable.
  • CLI and MCP/tool-catalog contract: Existing interfaces and schemas retained; observable correction described above.
  • Provider, bridge, target-format, or platform compatibility: Owner, provider and public CLI/MCP fixture regressions, including ancestry, malformed identity, origin policy, document replacement and cleanup.
  • Evidence, artifact, provenance, or reconstruction contract: Incomplete or rejected observations remain explicit; source evidence is retained.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): Existing selection and authority unchanged.
  • 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 build outputs committed; catalogs regenerated by normal checks.

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: Owner, provider and public CLI/MCP fixture regressions, including ancestry, malformed identity, origin policy, document replacement and cleanup.
  • Base reproduction or other evidence: The existing identity/lifecycle regressions retain prior red/green evidence in this PR history. This revision adds changed-origin/frame precedence and detail assertions; no fresh complete pre-fix replay was performed.
  • User-visible CLI/MCP output (if applicable): Compiled CLI and MCP retain the same reconstructed full URL including fragment; screenshot/runtime evidence matches it. Failed identity and scope remain explicit.
  • Remaining proof gaps: No real Chromium/Electron/live WebMCP replay, full suite or cross-platform run on this head. Historical engine runs do not establish current-head hosted CI.

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

  • Current conflict-resolution head 1b579209dc7c5cc7ac68824381c486b8fe6bb45a merges main 45a411e8f8314b844bc20aef57afb59991c4a637. Retained both frame-identity and upstream cleanup-failure MCP tests; reused the shared imports. No additional production edits.
  • macOS, Node 24.22.1/npm 11.16.0: npm ci --no-audit --no-fund, npm run check, normal pre-commit and pre-push (check:fast) passed. npm run test:focused -- src/browser/CdpCaptureDocuments.test.ts src/browser/CdpElectronInspection.test.ts tests/boundary/browser/cdpAuthorizedMainFrameRetry.test.ts tests/boundary/browser/cdpBrowserProvider.document_script.test.ts tests/boundary/browser/cdpBrowserProvider.timelineEvents.test.ts tests/boundary/browser/cdpElectronProvider.test.ts tests/boundary/browser/cdpRuntimeFrameIdentity.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts tests/boundary/browser/cdpWebMcpTransientIdentity.test.ts tests/boundary/mcp/browserMcp.test.ts tests/boundary/mcp/webRuntimeMcp.test.ts: full rerun passed 429 tests in 11 files (18.54s). Initial run passed 428/429: the screenshot root-replacement test returned target_changed instead of target_not_allowed; its isolated rerun passed 62/62, then the complete selection passed. The screenshot implementation, test, and fixture were unchanged by this merge; intermittent event-order behavior remains unmodified.
  • Current-head limitations: no real Chromium/Electron/live WebMCP, full suite, cross-platform, or fresh docs check run. Hosted CI is pending; CI results listed below refer to earlier heads.
  • Merged main 6dff37594c0bc942c9748b34a7a028d223e88a6d after #6412/#6413 landed. One conflict in screenshot identity tests: retained both upstream PNG tests/CRC fixtures and this PR's frame-identity tests. Other147 upstream-only files match main exactly; no PNG/network production change remains in this PR diff.
  • npm run test:focused -- src/browser/CdpCaptureDocuments.test.ts src/browser/CdpElectronInspection.test.ts tests/boundary/browser/cdpElectronProvider.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts tests/boundary/mcp/browserMcp.test.ts tests/boundary/mcp/webRuntimeMcp.test.ts: 223 passed in6 files (42.18s), including compiled CLI/MCP checks, Electron reload/same-document and strict PNG capture regressions.
  • Full npm run check (6tasks15.123s plus architecture guards), npm run docs:check (9 README tests), normal pre-push (4.313s) passed. Merge commit tree matches the read-only-validated staged tree; mutating pre-commit fixes were not applied to unrelated upstream files. Windows, pinned Node24.18.0/npm11.16.0.
  • Earlier owner failure-first matrices (6red/23controls reload;5red/31controls URL-only),121pass/2Windows POSIX skips and real-engine runs are historical parent proof. No real Electron/Chromium/liveWebMCP/fullsuite/crossplatform local rerun on this merge head. Hosted CI for exact merge head 346093f9da86c4ea98ae289f1ccce42ab8a1554e completed successfully: CI39905535992, CI required SUCCESS, real-browser job SUCCESS. No specific real Electron/liveWebMCP replay or skipped-lane execution is claimed.
  • Parent 0a0e608c726c2eada431527fd11da15f605c0896 completed CI39869520659, including CI required and real-browser jobSUCCESS. That is not new merge-head CI proof.

Compatibility, safety, and release

  • Breaking changes or migration steps: No schema migration; previously misclassified observations are corrected.
  • Real Hopper/Ghidra, browser, or OS coverage: No real Chromium/Electron/live WebMCP replay, full suite or cross-platform run on this head. Historical engine runs do not establish current-head hosted CI.
  • Package or release metadata impact: No dependency or release version change.
  • Security, privacy, process, or containment review: No expanded target authority; no bypass of workflow approval.

Author readiness

Human owner: @eco-null

  • 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/4040 **Author:** [@eco-null](https://github.com/eco-null) **Created:** 10/15/2026 **Status:** ✅ Merged **Merged:** 10/23/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `codex/browser-evidence-fidelity` --- ### 📝 Commits (10+) - [`a466628`](https://github.com/morluto/rea/commit/a4666281f6569826382ed759dd1e38a6e2372d62) fix(browser): preserve capture evidence fidelity - [`33f048a`](https://github.com/morluto/rea/commit/33f048a2c218dd0c35442c968db46f25af9d20d6) fix(browser): align frame identity comparisons - [`0e338dd`](https://github.com/morluto/rea/commit/0e338dd2e0f9c0d8cf4a042695b3fb3c17853831) chore(browser): resolve current main integration - [`390046a`](https://github.com/morluto/rea/commit/390046a75c136ab8bd54d368256e3a991d1d9a56) fix(browser): retain historical frame evidence - [`0d2a81b`](https://github.com/morluto/rea/commit/0d2a81b1498e689cafa3a254d77fa1b5b5f518d0) fix(electron): retain same-document script owners - [`ad2973f`](https://github.com/morluto/rea/commit/ad2973f5e0642e8f8914abfbb27428c630dcbc13) chore(browser): sync current main - [`d288065`](https://github.com/morluto/rea/commit/d288065f5f95dadb7988ea576660b9b601cb3853) chore(browser): integrate DOM admission updates - [`1dcd7b1`](https://github.com/morluto/rea/commit/1dcd7b1bd56a437e9239925be5b621f7c72fa5f0) fix(electron): bind frame proof to tree reads - [`7801dae`](https://github.com/morluto/rea/commit/7801daec3b9429eb8ca9708dcee339cb714c9ce0) chore(browser): merge current main - [`cd66811`](https://github.com/morluto/rea/commit/cd66811ac07843ccb530df489c2daca1080dace8) fix(browser): preserve frame identity proof ### 📊 Changes **21 files changed** (+3961 additions, -171 deletions) <details> <summary>View changed files</summary> 📝 `docs/electron-observation.md` (+4 -1) 📝 `src/browser/CdpAuthorizedMainFrame.ts` (+12 -8) 📝 `src/browser/CdpCaptureDocuments.test.ts` (+130 -0) 📝 `src/browser/CdpCaptureDocuments.ts` (+86 -12) 📝 `src/browser/CdpElectronInspection.test.ts` (+567 -4) 📝 `src/browser/CdpElectronInspection.ts` (+395 -32) 📝 `src/browser/CdpElectronScripts.ts` (+2 -5) 📝 `src/browser/CdpObservationSession.ts` (+44 -20) 📝 `src/browser/CdpScreenshot.ts` (+55 -17) 📝 `src/browser/CdpWebMcpDiscovery.ts` (+81 -51) 📝 `src/browser/execution/CdpRuntimeProtocol.ts` (+1 -2) 📝 `src/browser/execution/CdpRuntimeSession.ts` (+44 -14) ➕ `tests/boundary/browser/cdpAuthorizedMainFrameRetry.test.ts` (+204 -0) 📝 `tests/boundary/browser/cdpBrowserProvider.document_script.test.ts` (+409 -5) 📝 `tests/boundary/browser/cdpBrowserProvider.timelineEvents.test.ts` (+298 -0) 📝 `tests/boundary/browser/cdpElectronProvider.test.ts` (+941 -0) ➕ `tests/boundary/browser/cdpRuntimeFrameIdentity.test.ts` (+168 -0) 📝 `tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts` (+148 -0) ➕ `tests/boundary/browser/cdpWebMcpTransientIdentity.test.ts` (+204 -0) 📝 `tests/boundary/mcp/browserMcp.test.ts` (+87 -0) _...and 1 more files_ </details> ### 📄 Description <!-- PR title: type(optional-scope): imperative outcome The title becomes the squash-merge commit subject and generated changelog entry. --> ## Summary Preserve frame identity and lifecycle evidence across browser/Electron captures. Fixes #3878, fixes #3941, fixes #3910. <!-- What user, agent, or maintainer problem does this solve? Link the issue with "Fixes #123" when applicable. Keep the prior behavior, expected contract, and new behavior understandable without private context. --> ## Problem and expected behavior CDP splits base URL and fragment, while capture lifecycle can advance between reads. A single parsed identity/scope owner now feeds authorization, runtime, timeline, screenshot and WebMCP consumers. Electron uses a structurally valid ancestry graph separately from per-file admission and binds scripts to authorized frame generations. <!-- For fixes, give the smallest trigger and violated invariant. For features, describe the use case and observable outcome. --> ## Change and scope Tree snapshots separate stable loader/parent document identity from URL observations. A URL-only child history/hash update retains generation authority; a changed loader/parent uses the shared descendant-generation invalidation. Explicit full-navigation event replay still requires matching observed URL, preserving unknown-frame controls. A tree-observed same-file reload cannot erase the previous loader identity and hide a delayed navigation event; main replacement returns target_changed, while child replacement retains historical proof and leaves newly unverified script attribution unknown. One coupled outcome: preserve document identity and authorization across capture lifecycle. Integrated main 0b17cb621, including ASAR header admission and runtime setup/cleanup. No new target authority. Independent fixes removed from this diff: PNG #6412 (merged); omitted-response accounting #6413 (merged). Offline HAR availability and dropped-WebMCP comparison are validated independent branches; GitHub rejected their PR creation with CreatePullRequest permission errors. Prepared comparisons: [offline HAR](https://github.com/morluto/rea/compare/main...eco-null:rea:codex/offline-network-availability) and [WebMCP comparison](https://github.com/morluto/rea/compare/main...eco-null:rea:codex/webmcp-dropped-comparison). Restored prior runtime error precedence: frame/loader or no-loader URL changes return target_changed before origin rejection. Same-document origin rejection retains the original detail text; regressions pin both behaviors. Superseded AST-only regressions were removed; upstream fixes are not claimed here. <!-- Explain the chosen approach, why it fits REA's architecture, and what is intentionally not included. --> 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 <!-- Short answers are welcome. Complete applicable lines; mark unresolved facts as "unknown". Use "none" or "not applicable" only when established. --> - Semantic owner and earliest changed stage: CdpCaptureDocuments parsed identity/scope and Electron inventory/generation producers. - Contribution scope fit and linked maintainer decision: Ordinary fix within existing boundaries; new maintainer scope decision not applicable. - CLI and MCP/tool-catalog contract: Existing interfaces and schemas retained; observable correction described above. - Provider, bridge, target-format, or platform compatibility: Owner, provider and public CLI/MCP fixture regressions, including ancestry, malformed identity, origin policy, document replacement and cleanup. - Evidence, artifact, provenance, or reconstruction contract: Incomplete or rejected observations remain explicit; source evidence is retained. - Target selection, authority, upstream behavior, and cleanup details (if applicable): Existing selection and authority unchanged. - 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 build outputs committed; catalogs regenerated by normal checks. 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. - [x] Launch or attach to a process. - [x] Inject instrumentation or run scripts/code. - [ ] 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. ## Evidence and regression coverage <!-- State whether evidence is executed, source-derived, or proposed. For fixes, show the original failure and explain how the regression would fail on the affected base revision when practical. Include the most useful proof inline; link long logs or artifacts, or put them in optional details. Documentation-only changes can use source, link, or rendered-document checks. --> - Tests added or updated: Owner, provider and public CLI/MCP fixture regressions, including ancestry, malformed identity, origin policy, document replacement and cleanup. - Base reproduction or other evidence: The existing identity/lifecycle regressions retain prior red/green evidence in this PR history. This revision adds changed-origin/frame precedence and detail assertions; no fresh complete pre-fix replay was performed. - User-visible CLI/MCP output (if applicable): Compiled CLI and MCP retain the same reconstructed full URL including fragment; screenshot/runtime evidence matches it. Failed identity and scope remain explicit. - Remaining proof gaps: No real Chromium/Electron/live WebMCP replay, full suite or cross-platform run on this head. Historical engine runs do not establish current-head hosted CI. 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 - Current conflict-resolution head `1b579209dc7c5cc7ac68824381c486b8fe6bb45a` merges main `45a411e8f8314b844bc20aef57afb59991c4a637`. Retained both frame-identity and upstream cleanup-failure MCP tests; reused the shared imports. No additional production edits. - macOS, Node 24.22.1/npm 11.16.0: `npm ci --no-audit --no-fund`, `npm run check`, normal pre-commit and pre-push (`check:fast`) passed. `npm run test:focused -- src/browser/CdpCaptureDocuments.test.ts src/browser/CdpElectronInspection.test.ts tests/boundary/browser/cdpAuthorizedMainFrameRetry.test.ts tests/boundary/browser/cdpBrowserProvider.document_script.test.ts tests/boundary/browser/cdpBrowserProvider.timelineEvents.test.ts tests/boundary/browser/cdpElectronProvider.test.ts tests/boundary/browser/cdpRuntimeFrameIdentity.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts tests/boundary/browser/cdpWebMcpTransientIdentity.test.ts tests/boundary/mcp/browserMcp.test.ts tests/boundary/mcp/webRuntimeMcp.test.ts`: full rerun passed 429 tests in 11 files (18.54s). Initial run passed 428/429: the screenshot root-replacement test returned `target_changed` instead of `target_not_allowed`; its isolated rerun passed 62/62, then the complete selection passed. The screenshot implementation, test, and fixture were unchanged by this merge; intermittent event-order behavior remains unmodified. - Current-head limitations: no real Chromium/Electron/live WebMCP, full suite, cross-platform, or fresh docs check run. Hosted CI is pending; CI results listed below refer to earlier heads. <!-- List only commands that actually ran, with observed results. Include the relevant real-provider or platform workflow, or explain why it was unavailable. Keep these results current after changes; a command without its result is incomplete. --> - Merged main `6dff37594c0bc942c9748b34a7a028d223e88a6d` after #6412/#6413 landed. One conflict in screenshot identity tests: retained both upstream PNG tests/CRC fixtures and this PR's frame-identity tests. Other147 upstream-only files match main exactly; no PNG/network production change remains in this PR diff. - `npm run test:focused -- src/browser/CdpCaptureDocuments.test.ts src/browser/CdpElectronInspection.test.ts tests/boundary/browser/cdpElectronProvider.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts tests/boundary/mcp/browserMcp.test.ts tests/boundary/mcp/webRuntimeMcp.test.ts`: 223 passed in6 files (42.18s), including compiled CLI/MCP checks, Electron reload/same-document and strict PNG capture regressions. - Full `npm run check` (6tasks15.123s plus architecture guards), `npm run docs:check` (9 README tests), normal pre-push (4.313s) passed. Merge commit tree matches the read-only-validated staged tree; mutating pre-commit fixes were not applied to unrelated upstream files. Windows, pinned Node24.18.0/npm11.16.0. - Earlier owner failure-first matrices (6red/23controls reload;5red/31controls URL-only),121pass/2Windows POSIX skips and real-engine runs are historical parent proof. No real Electron/Chromium/liveWebMCP/fullsuite/crossplatform local rerun on this merge head. Hosted CI for exact merge head `346093f9da86c4ea98ae289f1ccce42ab8a1554e` completed successfully: [CI39905535992](https://github.com/morluto/rea/actions/runs/39905535992), [CI required SUCCESS](https://github.com/morluto/rea/actions/runs/39905535992/job/120260294833), [real-browser job SUCCESS](https://github.com/morluto/rea/actions/runs/39905535992/job/120256890690). No specific real Electron/liveWebMCP replay or skipped-lane execution is claimed. - Parent `0a0e608c726c2eada431527fd11da15f605c0896` completed [CI39869520659](https://github.com/morluto/rea/actions/runs/39869520659), including CI required and real-browser jobSUCCESS. That is not new merge-head CI proof. ## Compatibility, safety, and release <!-- Call out breaking changes, migrations, package effects, platform/provider limits, security/privacy/containment implications, and meaningful proof gaps. --> - Breaking changes or migration steps: No schema migration; previously misclassified observations are corrected. <!-- For ! / BREAKING CHANGE: show a previously valid call/configuration, its new behavior and migration, and why compatibility/deprecation cannot preserve it. Every release increments minor, including breaking changes; keep breaking markers and migration notes so callers can assess compatibility. See docs/releasing.md. --> - Real Hopper/Ghidra, browser, or OS coverage: No real Chromium/Electron/live WebMCP replay, full suite or cross-platform run on this head. Historical engine runs do not establish current-head hosted CI. - Package or release metadata impact: No dependency or release version change. - Security, privacy, process, or containment review: No expanded target authority; no bypass of workflow approval. ## 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: @eco-null - [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. ## 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>
bsakaguchi 2026-10-31 01:11: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#6013
No description provided.