[PR #500] [MERGED] feat(native): add inspection primitives, dispatch traces and approved UI observation #2028

Closed
opened 2026-10-16 21:13:30 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/500
Author: @morluto
Created: 10/4/2026
Status: ✅ Merged
Merged: 10/4/2026
Merged by: @morluto

Base: main ← Head: codex/native-investigation-tools


📝 Commits (8)

  • d649138 fix(hopper): normalize string-backed addresses and update verification
  • bbb1dcb feat(native): add inspection primitives, dispatch traces and approved UI observation
  • db984d1 test: prioritize real artifact E2E and captured golden regressions
  • cf240a4 fix(process): queue observed output before reactive rendering actions
  • 4cfce90 test: prune redundant cases and strengthen boundary assertions
  • ccf10eb fix(cli): route native value tracing through shared workflows
  • 7606863 test: replace synthetic success with real workflows and captured data
  • 80048df fix(catalog): separate portable metadata from native host availability

📊 Changes

205 files changed (+8145 additions, -1825 deletions)

View changed files

📝 .github/workflows/ci.yml (+19 -1)
📝 AGENTS.md (+1 -1)
📝 README.md (+13 -11)
📝 README_ar.md (+4 -4)
📝 README_ja.md (+4 -4)
📝 README_ko.md (+4 -4)
📝 README_zh.md (+4 -4)
📝 bridge/ghidra/ReaGhidraBridge.java (+310 -42)
📝 bridge/hopper_bridge.py (+5 -0)
➕ bridge/native/ReaNativeUI.swift (+156 -0)
📝 docs/native-investigation.md (+144 -76)
📝 docs/product-catalog.json (+39 -16)
📝 docs/provider-evaluation.md (+17 -18)
➕ docs/test-suite-audit.md (+169 -0)
📝 docs/testing.md (+69 -9)
📝 docs/verification/managed-conformance-manifest.json (+2 -2)
📝 package.json (+7 -1)
📝 scripts/fixtures/browser-verifier-site.mjs (+15 -0)
📝 scripts/generate-mcp-tool-catalog.mjs (+1 -1)
➕ scripts/lib/artifact-e2e.mjs (+64 -0)

...and 80 more files

📄 Description

Summary

Add native investigation primitives and shared CLI/MCP workflows for the requested issue set. Previously, analysts had to join provider text, symbol inventories, serialized Apple resources and runtime UI evidence themselves. REA now exposes explicit object and relationship results with artifact identity, source locations, evidence references and coverage limits.

The changes are split into two commits: a Hopper address normalization fix with updated real-provider assertions, and the native investigation implementation with its contracts, fixtures, verification lanes and generated catalog.

Issue coverage

Issue Implementation
#497 Approved observation of one existing native app PID and window, plus separately approved selected-element scenarios with ordered captures.
#496 Paginated compiled Apple asset catalog metadata using assetutil, rendition records and exact UI resource-name joins.
#495 Inert Foundation keyed archive decoding into original object IDs, named roots, class descriptors and shared/cyclic UID edges.
#492 Exact recovered native type/layout inspection, including fields, enum values and child type identities.
#491 Exact native instruction bytes, ordered operand tokens, flow and typed references.
#490 Provider-neutral static call-site resolution preserving resolved, ambiguous and unresolved outcomes.
#487 Guarded recovery of AArch64 byte/halfword relative tables with source-owned ELF and Mach-O verification fixtures.
#484 Typed Mach-O Objective-C methods, ivars and protocols, plus supported Swift witness tables and class vtables.
#483 UI action or native function tracing through dispatch evidence and typed static call relationships.
#482 Bounded cross-function high-p-code dependencies, with derived argument/parameter and return/output bindings.
#481 Bring-your-own read-only macOS Ghidra host support with matching native decompiler prerequisites.

Refs #497, #496, #495, #492, #491, #490, #487, #484, #483, #482, #481.

Contracts and behavior

  • Add inspect_asset_catalog, inspect_keyed_archive, inspect_native_instruction, resolve_native_call_targets, inspect_native_data_type, trace_native_values, observe_native_ui and capture_native_ui_scenario, with matching CLI commands and canonical output/effect contracts.
  • Prefer byte-backed Apple dispatch metadata; preserve narrower symbol inventory fallback only when the capability is unavailable. Keep provider details in adapters and compose workflows in the application layer.
  • Preserve observed facts, derived bindings, inferred fallback relationships and unknown facets separately. Validate provider output, target identity and resource boundaries.
  • Require explicit PID/window observation approval and separate action approval. Capture only the selected window and selected accessibility elements; report permission failures and cleanup owned helper processes and temporary files.
  • Admit macOS x64/arm64 Ghidra installations with matching native decompiler tools, exact Ghidra 12.1.4 and full JDK 21. No toolchain installation is introduced.
  • Keep Hopper capability reporting accurate for the new Ghidra primitives. Normalize Hopper string-backed addresses and repair real-provider verification assertions against current result shapes.
  • Regenerate catalogs, skill metadata and conformance manifest digests; update provider, investigation and testing documentation.

MCP examples

After opening a supported target, callers can inspect an explicit location or seed a bounded trace:

{"name":"inspect_native_instruction","arguments":{"address":"0x100001000"}}
{"name":"resolve_native_call_targets","arguments":{"address":"0x100001010"}}
{"name":"inspect_native_data_type","arguments":{"type":"/Example/Record"}}
{"name":"trace_native_values","arguments":{"procedure":"0x100001000","max_depth":2,"max_functions":8}}

For an already-running application matching the active target, replace the illustrative PID/window IDs with the approved selected window:

{"name":"observe_native_ui","arguments":{"pid":123,"window_id":456,"observation_approved":true}}
{"name":"capture_native_ui_scenario","arguments":{"pid":123,"window_id":456,"observation_approved":true,"actions_approved":true,"restore":"leave-as-is","steps":[{"kind":"wait","milliseconds":100}]}}

Verification

Completed locally on macOS ARM64:

  • npm run check:pr — latest expanded audit: 352 test files; 1,797 tests passed, 2 skipped. Typecheck, lint, format, unused-code and generated documentation checks passed. Latest check:fast reports 68 warnings and zero errors.
  • npm run verify:package — packaged CLI, MCP, setup and lifecycle verification passed; complete catalog contains 122 tools.
  • node scripts/verify-real-ghidra.mjs with configured Ghidra 12.1.4/JDK 21 — real host Mach-O debug/stripped and DWARF type-layout fixtures, exact instruction/call/type facts, value bindings and cleanup passed.
  • node scripts/verify-real-ghidra.mjs --aarch64-jump-table with the same prerequisites — eight fixture variants passed, including byte/halfword relative tables in ELF and Mach-O and an optimized dense ELF switch.
  • node scripts/verify-apple-dispatch.mjs — source-built Objective-C and Swift metadata fixtures, including stripped local symbols, passed without executing targets.
  • node scripts/verify-keyed-archive.mjs — real Foundation binary archive writer, shared/cyclic references and inert reader passed.
  • node scripts/verify-native-ui.mjs — selected fixture-window screenshot/accessibility observation, approved button action, actual CLI scenario parity, digest mismatch rejection and fixture cleanup passed.
  • npx vitest run tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts — enhanced registration/transport regression passed after the final test update.
  • Real Hopper verification passed earlier in this working-tree session. No additional Hopper windows were opened for PR preparation.
  • git diff --check passed; commit hooks completed successfully.

Coverage limits

These implementations establish the supported static and runtime boundaries; broader facets remain explicit unknowns. Call targets are static candidates, and value graphs do not prove runtime reachability, complete alias behavior, persistent-state roles or RNG semantics. The AArch64 recovery supports validated guarded layouts. Apple metadata decoding does not claim complete chained-fixup/PAC, external binding, generic/resilient Swift or async dispatch coverage. Asset inspection returns metadata rather than rendition bytes. Native scenarios require macOS permissions and leave state as-is; an action can occur before a subsequent capture fails.

Real macOS Ghidra proof was performed on ARM64. macOS Intel and Windows were not verified on real hosts in this session. This PR does not claim to resolve Hopper's long-running script overlay or sequential GUI-window reuse issues (#494 and #479).

Test audit follow-up

Commit db984d1d applies the requested preference for full unmocked E2E, boundary integration and real-data goldens. Detailed decisions and remaining coverage gaps are in docs/test-suite-audit.md.

  • Remove or consolidate ten synthetic/duplicate/configuration-shaped cases, adding three focused golden/release-guard cases. Preserve malformed data, permissions, cancellation, identity and cleanup regressions.
  • Add real actool/assetutil → production CLI and separate stdio MCP coverage, checking every metadata record, digest, pagination and invalid requests.
  • Upgrade Foundation archive verification to production CLI and stdio MCP; compare binary/XML relationships and the complete captured XML graph golden.
  • Capture immutable Foundation XML and assetutil JSON with source/producer/digest provenance. Change the keyed archive MCP integration to use the real capture.
  • Consolidate generic contract checks into the SDK wire catalog integration; require success before native value pagination/ambiguity assertions.
  • Remove incidental CI matrix/shard/prompt ordering assertions and relocate the package verifier classifier out of acceptance. Retain a compact verification-before-publish and registry-canary release guard.
  • Add macOS Apple artifact CI, and label the existing package lane as package/install integration because it substitutes deep providers.
  • Make the positive native UI lane require capture/actions. The separate opt-in permissions lane reports positive_e2e: false when permission denial prevents capture.

Initial audit verification: npm run check:pr passed (355 files; 1,828 passed, 2 skipped); check:fast, npm run verify:package and the relocated verifier tests passed. Real artifact CLI/stdio MCP E2E, Apple dispatch, compiled nib and required native UI capture/action lanes all passed. Lint remains at 68 warnings and zero errors. No Hopper windows were opened during this audit.

Real dispatch/UI-handler workflow transport goldens, native UI stdio MCP scenarios and approved real-runner CI remain follow-up coverage. Native value tracing now has real CLI/stdio MCP parity coverage. The audit does not claim that all recording-provider application tests have been replaced.

Exhaustive test cleanup

Reviewed all 355 test files across domain/contracts, services/composition, adapters/process boundaries and public transports/conformance. Three passes checked deletions against existing coverage and then checked the final diff for lost claims. This follow-up reduces the suite by another 31 test declarations and removes three redundant files; the remaining suite has 352 files. No further immediately safe pruning was identified without new independent replacement coverage or retiring source behavior.

  • Consolidate target/configuration, capability, catalog, replay, source-map and artifact tests. Preserve unique malformed input, permission, cancellation, integrity and large-output regressions.
  • Replace concurrency/call-order assertions with distinct actual returned payloads, exact complete cyclic graphs and all ordered batch results.
  • Repair false passes: actually attempt refused Ghidra mutation, require successful profile/session setup and transitions, exercise repeated close, independently reject each capability flag and verify the complete >10 MiB Hopper response.
  • Remove impossible long-boundary success and fabricated output-dimension injection; keep real MCP evaluation and real artifact comparisons. Retire the ledger serializer whose only consumer was a redundant test. No CLI/MCP schema changes.
  • Fix a real PTY rendering race found by the full suite: enqueue observed output before journal publication can synchronously trigger a reactive resize. The existing real process test now requires the first resized frame to contain the output that triggered that resize.
  • Keep test-only domain modules and tests pending a separate source-retirement decision; no unsupported E2E claim or coverage-threshold reduction.

Verification after the expanded audit: npm run check:pr passed (352 files, 1,797 passed, 2 skipped); npm run check:fast passed (68 lint warnings, zero errors). Repeated real verify:browser, verify:asset-catalog, verify:keyed-archive and verify:fixtures all passed, including actual browser scenario lifecycle, production CLI/stdio MCP artifact routes and seven source-built host fixtures. No new Hopper windows or Ghidra runs were started. The initial test run collided with verifier rebuilds; the final gate ran without concurrent builds and passed after fixing the independent rendering race.

Stronger replacement tests and closing audit

  • Prune three additional synthetic success cases after replacing them with real Ghidra CLI/stdio MCP tracing, real large Chromium PNG capture, and a real TOML filesystem transaction. Keep distinct malformed data, ambiguity, bounded work, permission and cleanup regressions.
  • The Ghidra E2E found and fixes missing CLI native-value workflow routing, workflow profile classification and discovery prerequisites. Assert authenticated workflow/upstream Evidence profiles, actual argument/parameter/return relationships, matching CLI/MCP graphs and successful MCP closure.
  • Capture a valid 9,467,940-byte PNG through both production CLI and stdio MCP; validate complete artifact parity and decode with the production PNG comparator. Configure the SDK client receive buffer for the large inline response; this is capture coverage, not large comparison-request transport coverage. Fix CRCs in retained PNG metric fixtures.
  • Replace injected long-path data with a real ZIP entry; partition actual inventory graphs into authenticated partial observations and assert every reconstructed result and citation, including 202 distinct citations. Capture a real SDK initialize request as a reviewed protocol golden with exact decoded values.
  • Cover all four conformance replay statuses and diagnostics; remove remaining internal order/default/private-size/prose and redundant catalog assertions. Final read-only reviews found no further immediately safe pruning.

Final verification: npm run check:pr passed (351 files, 1,794 passed, 2 skipped); typecheck, lint, formatting, unused-code and generated-document checks passed (70 lint warnings, zero errors). Real macOS ARM64 Ghidra 12.1.4/JDK 21 verification passed, including 171 graph nodes, 298 edges and six decompilations through CLI/stdio MCP. Real Chrome 153 observation/scenario verification and the large PNG capture passed. No Hopper windows were opened. No new hosted CI result is claimed.

CI catalog portability fix

Fix the Linux Docs Generation failure caused by host-dependent asset catalog metadata. The generator now supplies its canonical platform to ArtifactProvider; runtime lazy discovery applies actual native host restrictions separately. Strengthen the existing real archive/SDK MCP integration to use production session composition and verify actual host availability. No generated catalog bytes or check expectations were weakened.

Verification: local npm run docs:check, npm run check:pr (351 files, 1,794 passed, 2 skipped) and the MCP integration passed. GitHub verification is running for commit 80048dfa.


🔄 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/500 **Author:** [@morluto](https://github.com/morluto) **Created:** 10/4/2026 **Status:** ✅ Merged **Merged:** 10/4/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `codex/native-investigation-tools` --- ### 📝 Commits (8) - [`d649138`](https://github.com/morluto/rea/commit/d6491382c2dbb3fce0cdebdf116bb9c37126237e) fix(hopper): normalize string-backed addresses and update verification - [`bbb1dcb`](https://github.com/morluto/rea/commit/bbb1dcb12267680fd1765c030a15f199292d07e2) feat(native): add inspection primitives, dispatch traces and approved UI observation - [`db984d1`](https://github.com/morluto/rea/commit/db984d1d749c214448f5643483f78cb08aba21d0) test: prioritize real artifact E2E and captured golden regressions - [`cf240a4`](https://github.com/morluto/rea/commit/cf240a44dd3ce7ebe3e2534b018e9c1e0a5eb2e7) fix(process): queue observed output before reactive rendering actions - [`4cfce90`](https://github.com/morluto/rea/commit/4cfce905d919767c86f852dbaa597faf934b7273) test: prune redundant cases and strengthen boundary assertions - [`ccf10eb`](https://github.com/morluto/rea/commit/ccf10ebf2d52387b444f8ffebfeeb02345e30631) fix(cli): route native value tracing through shared workflows - [`7606863`](https://github.com/morluto/rea/commit/76068635bd77ba0abdc0b5f1f302d8cdd384cdc5) test: replace synthetic success with real workflows and captured data - [`80048df`](https://github.com/morluto/rea/commit/80048dfab70016aa014e6f78905575d281adc3ff) fix(catalog): separate portable metadata from native host availability ### 📊 Changes **205 files changed** (+8145 additions, -1825 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+19 -1) 📝 `AGENTS.md` (+1 -1) 📝 `README.md` (+13 -11) 📝 `README_ar.md` (+4 -4) 📝 `README_ja.md` (+4 -4) 📝 `README_ko.md` (+4 -4) 📝 `README_zh.md` (+4 -4) 📝 `bridge/ghidra/ReaGhidraBridge.java` (+310 -42) 📝 `bridge/hopper_bridge.py` (+5 -0) ➕ `bridge/native/ReaNativeUI.swift` (+156 -0) 📝 `docs/native-investigation.md` (+144 -76) 📝 `docs/product-catalog.json` (+39 -16) 📝 `docs/provider-evaluation.md` (+17 -18) ➕ `docs/test-suite-audit.md` (+169 -0) 📝 `docs/testing.md` (+69 -9) 📝 `docs/verification/managed-conformance-manifest.json` (+2 -2) 📝 `package.json` (+7 -1) 📝 `scripts/fixtures/browser-verifier-site.mjs` (+15 -0) 📝 `scripts/generate-mcp-tool-catalog.mjs` (+1 -1) ➕ `scripts/lib/artifact-e2e.mjs` (+64 -0) _...and 80 more files_ </details> ### 📄 Description ## Summary Add native investigation primitives and shared CLI/MCP workflows for the requested issue set. Previously, analysts had to join provider text, symbol inventories, serialized Apple resources and runtime UI evidence themselves. REA now exposes explicit object and relationship results with artifact identity, source locations, evidence references and coverage limits. The changes are split into two commits: a Hopper address normalization fix with updated real-provider assertions, and the native investigation implementation with its contracts, fixtures, verification lanes and generated catalog. ## Issue coverage | Issue | Implementation | | --- | --- | | #497 | Approved observation of one existing native app PID and window, plus separately approved selected-element scenarios with ordered captures. | | #496 | Paginated compiled Apple asset catalog metadata using assetutil, rendition records and exact UI resource-name joins. | | #495 | Inert Foundation keyed archive decoding into original object IDs, named roots, class descriptors and shared/cyclic UID edges. | | #492 | Exact recovered native type/layout inspection, including fields, enum values and child type identities. | | #491 | Exact native instruction bytes, ordered operand tokens, flow and typed references. | | #490 | Provider-neutral static call-site resolution preserving resolved, ambiguous and unresolved outcomes. | | #487 | Guarded recovery of AArch64 byte/halfword relative tables with source-owned ELF and Mach-O verification fixtures. | | #484 | Typed Mach-O Objective-C methods, ivars and protocols, plus supported Swift witness tables and class vtables. | | #483 | UI action or native function tracing through dispatch evidence and typed static call relationships. | | #482 | Bounded cross-function high-p-code dependencies, with derived argument/parameter and return/output bindings. | | #481 | Bring-your-own read-only macOS Ghidra host support with matching native decompiler prerequisites. | Refs #497, #496, #495, #492, #491, #490, #487, #484, #483, #482, #481. ## Contracts and behavior - Add `inspect_asset_catalog`, `inspect_keyed_archive`, `inspect_native_instruction`, `resolve_native_call_targets`, `inspect_native_data_type`, `trace_native_values`, `observe_native_ui` and `capture_native_ui_scenario`, with matching CLI commands and canonical output/effect contracts. - Prefer byte-backed Apple dispatch metadata; preserve narrower symbol inventory fallback only when the capability is unavailable. Keep provider details in adapters and compose workflows in the application layer. - Preserve observed facts, derived bindings, inferred fallback relationships and unknown facets separately. Validate provider output, target identity and resource boundaries. - Require explicit PID/window observation approval and separate action approval. Capture only the selected window and selected accessibility elements; report permission failures and cleanup owned helper processes and temporary files. - Admit macOS x64/arm64 Ghidra installations with matching native decompiler tools, exact Ghidra 12.1.4 and full JDK 21. No toolchain installation is introduced. - Keep Hopper capability reporting accurate for the new Ghidra primitives. Normalize Hopper string-backed addresses and repair real-provider verification assertions against current result shapes. - Regenerate catalogs, skill metadata and conformance manifest digests; update provider, investigation and testing documentation. ## MCP examples After opening a supported target, callers can inspect an explicit location or seed a bounded trace: ```json {"name":"inspect_native_instruction","arguments":{"address":"0x100001000"}} {"name":"resolve_native_call_targets","arguments":{"address":"0x100001010"}} {"name":"inspect_native_data_type","arguments":{"type":"/Example/Record"}} {"name":"trace_native_values","arguments":{"procedure":"0x100001000","max_depth":2,"max_functions":8}} ``` For an already-running application matching the active target, replace the illustrative PID/window IDs with the approved selected window: ```json {"name":"observe_native_ui","arguments":{"pid":123,"window_id":456,"observation_approved":true}} {"name":"capture_native_ui_scenario","arguments":{"pid":123,"window_id":456,"observation_approved":true,"actions_approved":true,"restore":"leave-as-is","steps":[{"kind":"wait","milliseconds":100}]}} ``` ## Verification Completed locally on macOS ARM64: - `npm run check:pr` — latest expanded audit: 352 test files; 1,797 tests passed, 2 skipped. Typecheck, lint, format, unused-code and generated documentation checks passed. Latest `check:fast` reports 68 warnings and zero errors. - `npm run verify:package` — packaged CLI, MCP, setup and lifecycle verification passed; complete catalog contains 122 tools. - `node scripts/verify-real-ghidra.mjs` with configured Ghidra 12.1.4/JDK 21 — real host Mach-O debug/stripped and DWARF type-layout fixtures, exact instruction/call/type facts, value bindings and cleanup passed. - `node scripts/verify-real-ghidra.mjs --aarch64-jump-table` with the same prerequisites — eight fixture variants passed, including byte/halfword relative tables in ELF and Mach-O and an optimized dense ELF switch. - `node scripts/verify-apple-dispatch.mjs` — source-built Objective-C and Swift metadata fixtures, including stripped local symbols, passed without executing targets. - `node scripts/verify-keyed-archive.mjs` — real Foundation binary archive writer, shared/cyclic references and inert reader passed. - `node scripts/verify-native-ui.mjs` — selected fixture-window screenshot/accessibility observation, approved button action, actual CLI scenario parity, digest mismatch rejection and fixture cleanup passed. - `npx vitest run tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts` — enhanced registration/transport regression passed after the final test update. - Real Hopper verification passed earlier in this working-tree session. No additional Hopper windows were opened for PR preparation. - `git diff --check` passed; commit hooks completed successfully. ## Coverage limits These implementations establish the supported static and runtime boundaries; broader facets remain explicit unknowns. Call targets are static candidates, and value graphs do not prove runtime reachability, complete alias behavior, persistent-state roles or RNG semantics. The AArch64 recovery supports validated guarded layouts. Apple metadata decoding does not claim complete chained-fixup/PAC, external binding, generic/resilient Swift or async dispatch coverage. Asset inspection returns metadata rather than rendition bytes. Native scenarios require macOS permissions and leave state as-is; an action can occur before a subsequent capture fails. Real macOS Ghidra proof was performed on ARM64. macOS Intel and Windows were not verified on real hosts in this session. This PR does not claim to resolve Hopper's long-running script overlay or sequential GUI-window reuse issues (#494 and #479). ## Test audit follow-up Commit `db984d1d` applies the requested preference for full unmocked E2E, boundary integration and real-data goldens. Detailed decisions and remaining coverage gaps are in `docs/test-suite-audit.md`. - Remove or consolidate ten synthetic/duplicate/configuration-shaped cases, adding three focused golden/release-guard cases. Preserve malformed data, permissions, cancellation, identity and cleanup regressions. - Add real actool/assetutil → production CLI and separate stdio MCP coverage, checking every metadata record, digest, pagination and invalid requests. - Upgrade Foundation archive verification to production CLI and stdio MCP; compare binary/XML relationships and the complete captured XML graph golden. - Capture immutable Foundation XML and assetutil JSON with source/producer/digest provenance. Change the keyed archive MCP integration to use the real capture. - Consolidate generic contract checks into the SDK wire catalog integration; require success before native value pagination/ambiguity assertions. - Remove incidental CI matrix/shard/prompt ordering assertions and relocate the package verifier classifier out of acceptance. Retain a compact verification-before-publish and registry-canary release guard. - Add macOS Apple artifact CI, and label the existing package lane as package/install integration because it substitutes deep providers. - Make the positive native UI lane require capture/actions. The separate opt-in permissions lane reports `positive_e2e: false` when permission denial prevents capture. Initial audit verification: `npm run check:pr` passed (355 files; 1,828 passed, 2 skipped); `check:fast`, `npm run verify:package` and the relocated verifier tests passed. Real artifact CLI/stdio MCP E2E, Apple dispatch, compiled nib and required native UI capture/action lanes all passed. Lint remains at 68 warnings and zero errors. No Hopper windows were opened during this audit. Real dispatch/UI-handler workflow transport goldens, native UI stdio MCP scenarios and approved real-runner CI remain follow-up coverage. Native value tracing now has real CLI/stdio MCP parity coverage. The audit does not claim that all recording-provider application tests have been replaced. ## Exhaustive test cleanup Reviewed all 355 test files across domain/contracts, services/composition, adapters/process boundaries and public transports/conformance. Three passes checked deletions against existing coverage and then checked the final diff for lost claims. This follow-up reduces the suite by another 31 test declarations and removes three redundant files; the remaining suite has 352 files. No further immediately safe pruning was identified without new independent replacement coverage or retiring source behavior. - Consolidate target/configuration, capability, catalog, replay, source-map and artifact tests. Preserve unique malformed input, permission, cancellation, integrity and large-output regressions. - Replace concurrency/call-order assertions with distinct actual returned payloads, exact complete cyclic graphs and all ordered batch results. - Repair false passes: actually attempt refused Ghidra mutation, require successful profile/session setup and transitions, exercise repeated close, independently reject each capability flag and verify the complete >10 MiB Hopper response. - Remove impossible long-boundary success and fabricated output-dimension injection; keep real MCP evaluation and real artifact comparisons. Retire the ledger serializer whose only consumer was a redundant test. No CLI/MCP schema changes. - Fix a real PTY rendering race found by the full suite: enqueue observed output before journal publication can synchronously trigger a reactive resize. The existing real process test now requires the first resized frame to contain the output that triggered that resize. - Keep test-only domain modules and tests pending a separate source-retirement decision; no unsupported E2E claim or coverage-threshold reduction. Verification after the expanded audit: `npm run check:pr` passed (**352 files, 1,797 passed, 2 skipped**); `npm run check:fast` passed (**68 lint warnings, zero errors**). Repeated real `verify:browser`, `verify:asset-catalog`, `verify:keyed-archive` and `verify:fixtures` all passed, including actual browser scenario lifecycle, production CLI/stdio MCP artifact routes and seven source-built host fixtures. No new Hopper windows or Ghidra runs were started. The initial test run collided with verifier rebuilds; the final gate ran without concurrent builds and passed after fixing the independent rendering race. ## Stronger replacement tests and closing audit - Prune three additional synthetic success cases after replacing them with real Ghidra CLI/stdio MCP tracing, real large Chromium PNG capture, and a real TOML filesystem transaction. Keep distinct malformed data, ambiguity, bounded work, permission and cleanup regressions. - The Ghidra E2E found and fixes missing CLI native-value workflow routing, workflow profile classification and discovery prerequisites. Assert authenticated workflow/upstream Evidence profiles, actual argument/parameter/return relationships, matching CLI/MCP graphs and successful MCP closure. - Capture a valid **9,467,940-byte PNG** through both production CLI and stdio MCP; validate complete artifact parity and decode with the production PNG comparator. Configure the SDK client receive buffer for the large inline response; this is capture coverage, not large comparison-request transport coverage. Fix CRCs in retained PNG metric fixtures. - Replace injected long-path data with a real ZIP entry; partition actual inventory graphs into authenticated partial observations and assert every reconstructed result and citation, including 202 distinct citations. Capture a real SDK initialize request as a reviewed protocol golden with exact decoded values. - Cover all four conformance replay statuses and diagnostics; remove remaining internal order/default/private-size/prose and redundant catalog assertions. Final read-only reviews found no further immediately safe pruning. Final verification: `npm run check:pr` passed (**351 files, 1,794 passed, 2 skipped**); typecheck, lint, formatting, unused-code and generated-document checks passed (**70 lint warnings, zero errors**). Real macOS ARM64 Ghidra 12.1.4/JDK 21 verification passed, including **171 graph nodes, 298 edges and six decompilations** through CLI/stdio MCP. Real Chrome 153 observation/scenario verification and the large PNG capture passed. No Hopper windows were opened. No new hosted CI result is claimed. ## CI catalog portability fix Fix the Linux Docs Generation failure caused by host-dependent asset catalog metadata. The generator now supplies its canonical platform to ArtifactProvider; runtime lazy discovery applies actual native host restrictions separately. Strengthen the existing real archive/SDK MCP integration to use production session composition and verify actual host availability. No generated catalog bytes or check expectations were weakened. Verification: local `npm run docs:check`, `npm run check:pr` (**351 files, 1,794 passed, 2 skipped**) and the MCP integration passed. GitHub verification is running for commit `80048dfa`. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:13:30 +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#2028
No description provided.