# Per-engine verification sweep (full harness, one run per engine image)
#
# Command: scripts/verify-all-engines.sh
# Date:    2026-11-07T09:44:51Z (sweep started 2026-11-07T09:17:17Z)
# REA:     6.8.0 (rea-agents npm release; 229 MCP tools, matching the bundled skill v49)
# Images:  rea-agent / -ghidra / -hopper / -ida, linux/amd64, built by scripts/build-all.sh
# Result:  0 failures on all four (every skip is conditional and listed below)
#
# This sweep re-verifies the same REA 6.8.0 images after a *feed* move, not a
# REA move: rea-agents 6.8.0 is still the newest release on npm and GitHub, but
# the vendor's publisher-signed Hopper feed advanced from 6.6.1 (launcher
# 74b51599...) to 6.6.2 (launcher 226800f1...) on 2026-11-06. REA admits a Linux
# Hopper build only if its launcher is the feed's *current* main_exe_hash, so the
# previous pin was refused at run time and the build layer refused outright.
# HOPPER_DEMO_VERSION / HOPPER_DEB_SHA1 / HOPPER_DEB_BYTES /
# HOPPER_LAUNCHER_SHA256 moved to the feed's row, and nothing else changed:
# every count is identical to the 2026-10-31 sweep on all four images
# (121/109/102/94 passed), which is the expected result for a package swap that
# adds no tool family and no capability.
#
# Counts per image are unchanged; the Hopper checks carry the evidence of the
# bump - `hopper launcher digest is the demo REA's feed admits` prints
# 226800f1..., and `rea doctor --provider hopper` reports
# reported_release_version 6.6.2 with source=signed_package_cache.
#
# The four pins were re-derived from the feed and then checked against the
# package itself rather than against the feed's opinion of it:
# Hopper-6.6.2-Linux-demo.deb (35,749,280 bytes, sha1 9b467881...) was
# downloaded, its detached PGP signature verified with the vendor key (primary
# fingerprint 7C2D73BAFAF5B9A710A69DA1A26DF815099B1BCD - the one REA pins as
# HOPPER_LINUX_PRIMARY_FINGERPRINT), and opt/hopper/bin/Hopper hashed out of the
# unpacked package (226800f1..., which is the feed's main_exe_hash).
#
# Node stays at 24.22.1 (24.22.2, frida 17.26.1, uv 0.13.7, supergateway 4.2.1,
# mitmproxy 12.3.1, pwndbg 2026.10.28 and Ghidra 12.2 are newer upstream but wait
# for the next REA release, per docs/UPDATES.md).
#
# NOTE: the `platform:` line in each run is redacted to 'Linux x86_64' - the
# exact kernel/host string was removed before publishing this repo. Nothing
# else in these summaries was altered.


==============================================================
=== verifying engine: all  (ghcr.io/alexmi256/rea-agent:6.8.0-linux-amd64)
==============================================================
running harness in ghcr.io/alexmi256/rea-agent:6.8.0-linux-amd64 as 10000:10000
[rea-agent] loaded overrides from /etc/rea/rea.env
[rea-agent] engine profile: all
[rea-agent] ready: rea 6.8.0 | node v24.22.1 | user rea
[1mrea-agent verification[0m  run=20261107T091717Z  out=/work/verify-reports/20261107T091717Z

[1m== fixtures ==[0m
building C fixtures in /tmp/rea-verify/fixtures
  + fixture-x86_64.elf
  + fixture-aarch64.elf (aarch64)
  + fixture-armv7.elf (arm)
  + fixture-mips.elf (big-endian MIPS32)
  + fixture-mipsel.elf (little-endian MIPS32)
  + fixture-riscv64.elf (riscv64)
  + fixture-ppc.elf (PowerPC)
  + fixture-win64.exe (PE32+)
  + module.wasm
  + fixture.sqlite
  + session.har
  + Info.plist
  + jsapp/
  + jsbundle/bundle.min.js
  + www/index.html
  + fixture.pcap
  + uart.vcd
  + firmware.bin
  + runtime.hex
  + process-scenario.json, browser-scenario.json
  + bundle.zip
  dotnet: Restore succeeded.
  dotnet: 
  dotnet: 
  dotnet: Build succeeded.
  dotnet:     0 Warning(s)
  dotnet:     0 Error(s)
  dotnet: 
  dotnet: Time Elapsed 00:00:02.13
  + dotnet-app/bin/Release/net8.0/VerifyLib.dll
fixtures ready in /tmp/rea-verify/fixtures

[1m== runtime ==[0m
  [32mPASS[0m node version
  [32mPASS[0m npm present
  [32mPASS[0m rea version
  [32mPASS[0m rea providers (no bundled engine)

[1m== engine profile ==[0m
  [32mPASS[0m declared engine
  [32mPASS[0m engine env file
  [32mPASS[0m rea wrapper injects engine env
  [32mPASS[0m rea wrapper is the engine-injecting shell script

[1m== container healthcheck ==[0m
  [32mPASS[0m healthcheck reports healthy
  [32mPASS[0m healthcheck (deep) reports healthy

[1m== analysis engines ==[0m
  [32mPASS[0m java runtime
  [32mPASS[0m javac present
  [32mPASS[0m ghidra analyzeHeadless executable
  [32mPASS[0m ghidra native decompiler (linux_x86_64)
  [32mPASS[0m hopper launcher executable
  [32mPASS[0m hopper shared libraries resolve (0 = none missing)
  [32mPASS[0m hopper launcher digest is the demo REA's feed admits
  [32mPASS[0m xvfb present
  [32mPASS[0m IDA mount point
  [32mPASS[0m IDA licence placement helpers

[1m== static analysis helpers ==[0m
  [32mPASS[0m pwntools venv python
  [32mPASS[0m wabt 1.0.42
  [32mPASS[0m jadx headless MCP jar
  [32mPASS[0m jadx jar is a runnable archive
  [32mPASS[0m apktool launcher
  [32mPASS[0m dotnet sdk
  [32mPASS[0m ilspycmd

[1m== javascript source recovery (Wakaru) ==[0m
  [32mPASS[0m REA_WAKARU_COMMAND is absolute
  [32mPASS[0m wakaru binary is a real file, readable and executable
  [32mPASS[0m wakaru banner in the form REA parses
  [32mPASS[0m wakaru digest is REA's audited build
  [32mPASS[0m util-linux prlimit (REA's resource limiter)

[1m== firmware / packet / signal ==[0m
  [32mPASS[0m binwalk
  [32mPASS[0m unblob
  [32mPASS[0m tshark
  [32mPASS[0m capinfos
  [32mPASS[0m sigrok-cli
  [32mPASS[0m sigrok backend loads libsigrokdecode

[1m== capture / devices ==[0m
  [32mPASS[0m mitmdump
  [32mPASS[0m adb
  [32mPASS[0m frida binding loads and sees the local device

[1m== debuggers and arch emulation ==[0m
  [32mPASS[0m gdb
  [32mPASS[0m gdb-multiarch
  [32mPASS[0m gdb sources pwndbg
  [32mPASS[0m qemu-user-static
  [32mPASS[0m wine

[1m== browsers ==[0m
  [32mPASS[0m google-chrome
  [32mPASS[0m playwright chromium

[1m== provider readiness ==[0m
  [32mPASS[0m doctor: ghidra
  [32mPASS[0m doctor: hopper

[1m== ghidra: architecture coverage (multi-arch is the point) ==[0m
  [32mPASS[0m ghidra analyze linux-x86_64
  [32mPASS[0m ghidra search linux-aarch64 finds fixture string
  [32mPASS[0m ghidra search linux-armv7 finds fixture string
  [32mPASS[0m ghidra search linux-mips32-be finds fixture string
  [32mPASS[0m ghidra search linux-mips32-le finds fixture string
  [32mPASS[0m ghidra search linux-riscv64 finds fixture string
  [32mPASS[0m ghidra search linux-powerpc finds fixture string
  [32mPASS[0m ghidra search windows-pe-x64 finds fixture string

[1m== ghidra: function and decompiler output ==[0m
  [32mPASS[0m ghidra function main (x86_64)
  [32mPASS[0m ghidra decompile main mentions the fixture strings
  [32mPASS[0m ghidra decompile aarch64 main
  [32mPASS[0m ghidra decompile mips32 main
  [32mPASS[0m ghidra instructions of main

[1m== hopper: headless demo analysis ==[0m
  [32mPASS[0m hopper analyze x86_64
  [32mPASS[0m hopper decompile main
  [32mPASS[0m hopper string search

[1m== provider capabilities ==[0m
  [32mPASS[0m providers listing
  [32mPASS[0m capabilities listing

[1m== ELF layout (pwntools 4.15.0) ==[0m
  [32mPASS[0m binary layout: sections and main symbol

[1m== artifact inspection ==[0m
  [32mPASS[0m rea analyze on an application directory
  [32mPASS[0m inspect-artifact on a zip bundle
  [32mPASS[0m extract-artifact on a zip bundle
  [32mPASS[0m extracted files exist under the reported output_root

[1m== Apple static formats (platform-scoped in REA) ==[0m
  [33mSKIP[0m plist decode - REA routes plists through the Apple composite provider (unavailable on Linux for this input)

[1m== managed code (.NET / ilspycmd) ==[0m
  [32mPASS[0m managed artifact identity
  [32mPASS[0m managed members include License.Describe
  [32mPASS[0m ilspycmd decompiles the fixture assembly

[1m== EVM bytecode ==[0m
  [32mPASS[0m evm interface selectors

[1m== JavaScript / Electron application graph ==[0m
  [32mPASS[0m js application graph
  [32mPASS[0m analysis view projection of saved evidence

[1m== JavaScript source recovery (Wakaru) ==[0m
  [32mPASS[0m js recovery: provider is Wakaru
  [32mPASS[0m js recovery: reported version
  [32mPASS[0m js recovery: completed with no failures
  [32mPASS[0m js recovery: bundle decompiled into a module
  [32mPASS[0m js recovery: REA fingerprinted the audited Wakaru build
  [32mPASS[0m js recovery: published module file is non-empty
  [32mPASS[0m js recovery: evidence keeps its limitations
  [32mPASS[0m analysis of the recovered module tree

[1m== historical source import ==[0m
  [32mPASS[0m reference source import

[1m== families added in REA 6.5.0 ==[0m
  [32mPASS[0m sqlite schema + row sample
  [32mPASS[0m wasm artifact: imports/exports and WAT
  [32mPASS[0m go-binary metadata probe

[1m== firmware (binwalk 3.1.x + unblob 26.6.x) ==[0m
  [32mPASS[0m firmware regions (binwalk)
  [32mPASS[0m firmware extraction (unblob)

[1m== HTTP captures ==[0m
  [32mPASS[0m HAR 1.2 capture
  [32mPASS[0m native mitmproxy capture decode

[1m== browser: CDP observation ==[0m
  [32mPASS[0m browser target discovery (CDP)
  [32mPASS[0m browser page capture (DOM/scripts)
  [32mPASS[0m browser screenshot capture

[1m== browser: Playwright scenario ==[0m
  [32mPASS[0m playwright launch + click + DOM capture

[1m== process behaviour capture (native PTY) ==[0m
  [32mPASS[0m pty process capture

[1m== packet captures (tshark 4.x) ==[0m
  [32mPASS[0m pcap client inspection
  [32mPASS[0m pcap capture: udp fields
  [32mPASS[0m pcap summary

[1m== recorded signals (sigrok-cli 0.7.2 + libsigrokdecode) ==[0m
  [32mPASS[0m sigrok decoder inventory
  [32mPASS[0m vcd UART decode

[1m== Frida (JS instrumentation) ==[0m
  [32mPASS[0m frida binding resolves from REA
  [32mPASS[0m rea frida device inventory

[1m== Android: adb + Apktool + JADX engine ==[0m
  [32mPASS[0m adb client inspection
  [32mPASS[0m adb device listing (no device attached is a valid answer)
  [32mPASS[0m apktool client inspection
  [32mPASS[0m apktool runs as a launcher
  [32mPASS[0m jadx engine jar loads under java 21

[1m== IDA provider (bring your own install + licence) ==[0m
  [33mSKIP[0m ida doctor - REA_IDA_MCP_CONFIG not set (see docs/BYO-LICENSES.md)
  [32mPASS[0m ida registration templates present
  [32mPASS[0m IDADIR mount

[1m== JEB provider (bring your own licence) ==[0m
  [33mSKIP[0m jeb client - REA_JEB_MCP_URL not set (bring your own JEB)

[1m== Hopper licence/state layout ==[0m
  [32mPASS[0m hopper application-support dir

[1m== import-export / comparison surface ==[0m
  [32mPASS[0m compare command rejects identical artefacts cleanly

[1m== MCP over stdio (docker exec / subprocess) ==[0m
  [32mPASS[0m mcp initialize + tools/list (229 tools)
  [32mPASS[0m mcp tools/call: engine-free tool returned data
  [32mPASS[0m mcp open_binary via ghidra
  [32mPASS[0m mcp analyze_function via ghidra

[1m== MCP over Streamable HTTP (supergateway bridge) ==[0m
  [32mPASS[0m http bridge initialize (serverInfo over SSE)
rea-agent verification
run:       20261107T091717Z
date:      2026-11-07T09:29:21Z
image:     ghcr.io/alexmi256/rea-agent:6.8.0-linux-amd64
platform:  Linux x86_64 (kernel string redacted for publication)
node:      v24.22.1
rea:       6.8.0
passed:    121
failed:    0
skipped:   3

skipped checks:
  - plist decode
  - ida doctor
  - jeb client

[1mreport: /work/verify-reports/20261107T091717Z[0m
passed=121 failed=0 skipped=3

==============================================================
=== verifying engine: ghidra  (ghcr.io/alexmi256/rea-agent-ghidra:6.8.0-linux-amd64)
==============================================================
running harness in ghcr.io/alexmi256/rea-agent-ghidra:6.8.0-linux-amd64 as 10000:10000
[rea-agent] loaded overrides from /etc/rea/rea.env
[rea-agent] engine profile: ghidra
[rea-agent] ready: rea 6.8.0 | node v24.22.1 | user rea
[1mrea-agent verification[0m  run=20261107T092924Z  out=/work/verify-reports/20261107T092924Z

[1m== fixtures ==[0m
building C fixtures in /tmp/rea-verify/fixtures
  + fixture-x86_64.elf
  + fixture-aarch64.elf (aarch64)
  + fixture-armv7.elf (arm)
  + fixture-mips.elf (big-endian MIPS32)
  + fixture-mipsel.elf (little-endian MIPS32)
  + fixture-riscv64.elf (riscv64)
  + fixture-ppc.elf (PowerPC)
  + fixture-win64.exe (PE32+)
  + module.wasm
  + fixture.sqlite
  + session.har
  + Info.plist
  + jsapp/
  + jsbundle/bundle.min.js
  + www/index.html
  + fixture.pcap
  + uart.vcd
  + firmware.bin
  + runtime.hex
  + process-scenario.json, browser-scenario.json
  + bundle.zip
  dotnet: Restore succeeded.
  dotnet: 
  dotnet: 
  dotnet: Build succeeded.
  dotnet:     0 Warning(s)
  dotnet:     0 Error(s)
  dotnet: 
  dotnet: Time Elapsed 00:00:02.08
  + dotnet-app/bin/Release/net8.0/VerifyLib.dll
fixtures ready in /tmp/rea-verify/fixtures

[1m== runtime ==[0m
  [32mPASS[0m node version
  [32mPASS[0m npm present
  [32mPASS[0m rea version
  [32mPASS[0m rea providers

[1m== engine profile ==[0m
  [32mPASS[0m declared engine
  [32mPASS[0m engine env file
  [32mPASS[0m rea wrapper injects engine env
  [32mPASS[0m rea wrapper is the engine-injecting shell script

[1m== container healthcheck ==[0m
  [32mPASS[0m healthcheck reports healthy
  [32mPASS[0m healthcheck (deep) reports healthy

[1m== analysis engines ==[0m
  [32mPASS[0m java runtime
  [32mPASS[0m javac present
  [32mPASS[0m ghidra analyzeHeadless executable
  [32mPASS[0m ghidra native decompiler (linux_x86_64)
  [33mSKIP[0m hopper installation - not in this image (engine: ghidra)

[1m== static analysis helpers ==[0m
  [32mPASS[0m pwntools venv python
  [32mPASS[0m wabt 1.0.42
  [32mPASS[0m jadx headless MCP jar
  [32mPASS[0m jadx jar is a runnable archive
  [32mPASS[0m apktool launcher
  [32mPASS[0m dotnet sdk
  [32mPASS[0m ilspycmd

[1m== javascript source recovery (Wakaru) ==[0m
  [32mPASS[0m REA_WAKARU_COMMAND is absolute
  [32mPASS[0m wakaru binary is a real file, readable and executable
  [32mPASS[0m wakaru banner in the form REA parses
  [32mPASS[0m wakaru digest is REA's audited build
  [32mPASS[0m util-linux prlimit (REA's resource limiter)

[1m== firmware / packet / signal ==[0m
  [32mPASS[0m binwalk
  [32mPASS[0m unblob
  [32mPASS[0m tshark
  [32mPASS[0m capinfos
  [32mPASS[0m sigrok-cli
  [32mPASS[0m sigrok backend loads libsigrokdecode

[1m== capture / devices ==[0m
  [32mPASS[0m mitmdump
  [32mPASS[0m adb
  [32mPASS[0m frida binding loads and sees the local device

[1m== debuggers and arch emulation ==[0m
  [32mPASS[0m gdb
  [32mPASS[0m gdb-multiarch
  [32mPASS[0m gdb sources pwndbg
  [32mPASS[0m qemu-user-static
  [32mPASS[0m wine

[1m== browsers ==[0m
  [32mPASS[0m google-chrome
  [32mPASS[0m playwright chromium

[1m== provider readiness ==[0m
  [32mPASS[0m doctor: ghidra
  [33mSKIP[0m doctor: hopper - Hopper not in this image (engine: ghidra)

[1m== ghidra: architecture coverage (multi-arch is the point) ==[0m
  [32mPASS[0m ghidra analyze linux-x86_64
  [32mPASS[0m ghidra search linux-aarch64 finds fixture string
  [32mPASS[0m ghidra search linux-armv7 finds fixture string
  [32mPASS[0m ghidra search linux-mips32-be finds fixture string
  [32mPASS[0m ghidra search linux-mips32-le finds fixture string
  [32mPASS[0m ghidra search linux-riscv64 finds fixture string
  [32mPASS[0m ghidra search linux-powerpc finds fixture string
  [32mPASS[0m ghidra search windows-pe-x64 finds fixture string

[1m== ghidra: function and decompiler output ==[0m
  [32mPASS[0m ghidra function main (x86_64)
  [32mPASS[0m ghidra decompile main mentions the fixture strings
  [32mPASS[0m ghidra decompile aarch64 main
  [32mPASS[0m ghidra decompile mips32 main
  [32mPASS[0m ghidra instructions of main

[1m== hopper: headless demo analysis ==[0m
  [33mSKIP[0m hopper analysis - Hopper not in this image (engine: ghidra)

[1m== provider capabilities ==[0m
  [32mPASS[0m providers listing
  [32mPASS[0m capabilities listing

[1m== ELF layout (pwntools 4.15.0) ==[0m
  [32mPASS[0m binary layout: sections and main symbol

[1m== artifact inspection ==[0m
  [32mPASS[0m rea analyze on an application directory
  [32mPASS[0m inspect-artifact on a zip bundle
  [32mPASS[0m extract-artifact on a zip bundle
  [32mPASS[0m extracted files exist under the reported output_root

[1m== Apple static formats (platform-scoped in REA) ==[0m
  [33mSKIP[0m plist decode - REA routes plists through the Apple composite provider (unavailable on Linux for this input)

[1m== managed code (.NET / ilspycmd) ==[0m
  [32mPASS[0m managed artifact identity
  [32mPASS[0m managed members include License.Describe
  [32mPASS[0m ilspycmd decompiles the fixture assembly

[1m== EVM bytecode ==[0m
  [32mPASS[0m evm interface selectors

[1m== JavaScript / Electron application graph ==[0m
  [32mPASS[0m js application graph
  [32mPASS[0m analysis view projection of saved evidence

[1m== JavaScript source recovery (Wakaru) ==[0m
  [32mPASS[0m js recovery: provider is Wakaru
  [32mPASS[0m js recovery: reported version
  [32mPASS[0m js recovery: completed with no failures
  [32mPASS[0m js recovery: bundle decompiled into a module
  [32mPASS[0m js recovery: REA fingerprinted the audited Wakaru build
  [32mPASS[0m js recovery: published module file is non-empty
  [32mPASS[0m js recovery: evidence keeps its limitations
  [32mPASS[0m analysis of the recovered module tree

[1m== historical source import ==[0m
  [32mPASS[0m reference source import

[1m== families added in REA 6.5.0 ==[0m
  [32mPASS[0m sqlite schema + row sample
  [32mPASS[0m wasm artifact: imports/exports and WAT
  [32mPASS[0m go-binary metadata probe

[1m== firmware (binwalk 3.1.x + unblob 26.6.x) ==[0m
  [32mPASS[0m firmware regions (binwalk)
  [32mPASS[0m firmware extraction (unblob)

[1m== HTTP captures ==[0m
  [32mPASS[0m HAR 1.2 capture
  [32mPASS[0m native mitmproxy capture decode

[1m== browser: CDP observation ==[0m
  [32mPASS[0m browser target discovery (CDP)
  [32mPASS[0m browser page capture (DOM/scripts)
  [32mPASS[0m browser screenshot capture

[1m== browser: Playwright scenario ==[0m
  [32mPASS[0m playwright launch + click + DOM capture

[1m== process behaviour capture (native PTY) ==[0m
  [32mPASS[0m pty process capture

[1m== packet captures (tshark 4.x) ==[0m
  [32mPASS[0m pcap client inspection
  [32mPASS[0m pcap capture: udp fields
  [32mPASS[0m pcap summary

[1m== recorded signals (sigrok-cli 0.7.2 + libsigrokdecode) ==[0m
  [32mPASS[0m sigrok decoder inventory
  [32mPASS[0m vcd UART decode

[1m== Frida (JS instrumentation) ==[0m
  [32mPASS[0m frida binding resolves from REA
  [32mPASS[0m rea frida device inventory

[1m== Android: adb + Apktool + JADX engine ==[0m
  [32mPASS[0m adb client inspection
  [32mPASS[0m adb device listing (no device attached is a valid answer)
  [32mPASS[0m apktool client inspection
  [32mPASS[0m apktool runs as a launcher
  [32mPASS[0m jadx engine jar loads under java 21

[1m== IDA provider (bring your own install + licence) ==[0m
  [33mSKIP[0m ida doctor - REA_IDA_MCP_CONFIG not set (see docs/BYO-LICENSES.md)
  [32mPASS[0m ida registration templates present
  [33mSKIP[0m IDADIR mount - not in this image (engine: ghidra)

[1m== JEB provider (bring your own licence) ==[0m
  [33mSKIP[0m jeb client - REA_JEB_MCP_URL not set (bring your own JEB)

[1m== Hopper licence/state layout ==[0m
  [33mSKIP[0m hopper application-support dir - not in this image (engine: ghidra)

[1m== import-export / comparison surface ==[0m
  [32mPASS[0m compare command rejects identical artefacts cleanly

[1m== MCP over stdio (docker exec / subprocess) ==[0m
  [32mPASS[0m mcp initialize + tools/list (229 tools)
  [32mPASS[0m mcp tools/call: engine-free tool returned data
  [32mPASS[0m mcp open_binary via ghidra
  [32mPASS[0m mcp analyze_function via ghidra

[1m== MCP over Streamable HTTP (supergateway bridge) ==[0m
  [32mPASS[0m http bridge initialize (serverInfo over SSE)
rea-agent verification
run:       20261107T092924Z
date:      2026-11-07T09:41:13Z
image:     ghcr.io/alexmi256/rea-agent-ghidra:6.8.0-linux-amd64
platform:  Linux x86_64 (kernel string redacted for publication)
node:      v24.22.1
rea:       6.8.0
passed:    109
failed:    0
skipped:   8

skipped checks:
  - hopper installation
  - doctor: hopper
  - hopper analysis
  - plist decode
  - ida doctor
  - IDADIR mount
  - jeb client
  - hopper application-support dir

[1mreport: /work/verify-reports/20261107T092924Z[0m
passed=109 failed=0 skipped=8

==============================================================
=== verifying engine: hopper  (ghcr.io/alexmi256/rea-agent-hopper:6.8.0-linux-amd64)
==============================================================
running harness in ghcr.io/alexmi256/rea-agent-hopper:6.8.0-linux-amd64 as 10000:10000
[rea-agent] loaded overrides from /etc/rea/rea.env
[rea-agent] engine profile: hopper
[rea-agent] ready: rea 6.8.0 | node v24.22.1 | user rea
[1mrea-agent verification[0m  run=20261107T094115Z  out=/work/verify-reports/20261107T094115Z

[1m== fixtures ==[0m
building C fixtures in /tmp/rea-verify/fixtures
  + fixture-x86_64.elf
  + fixture-aarch64.elf (aarch64)
  + fixture-armv7.elf (arm)
  + fixture-mips.elf (big-endian MIPS32)
  + fixture-mipsel.elf (little-endian MIPS32)
  + fixture-riscv64.elf (riscv64)
  + fixture-ppc.elf (PowerPC)
  + fixture-win64.exe (PE32+)
  + module.wasm
  + fixture.sqlite
  + session.har
  + Info.plist
  + jsapp/
  + jsbundle/bundle.min.js
  + www/index.html
  + fixture.pcap
  + uart.vcd
  + firmware.bin
  + runtime.hex
  + process-scenario.json, browser-scenario.json
  + bundle.zip
  dotnet: Restore succeeded.
  dotnet: 
  dotnet: 
  dotnet: Build succeeded.
  dotnet:     0 Warning(s)
  dotnet:     0 Error(s)
  dotnet: 
  dotnet: Time Elapsed 00:00:02.09
  + dotnet-app/bin/Release/net8.0/VerifyLib.dll
fixtures ready in /tmp/rea-verify/fixtures

[1m== runtime ==[0m
  [32mPASS[0m node version
  [32mPASS[0m npm present
  [32mPASS[0m rea version
  [32mPASS[0m rea providers

[1m== engine profile ==[0m
  [32mPASS[0m declared engine
  [32mPASS[0m engine env file
  [32mPASS[0m rea wrapper injects engine env
  [32mPASS[0m rea wrapper is the engine-injecting shell script

[1m== container healthcheck ==[0m
  [32mPASS[0m healthcheck reports healthy
  [32mPASS[0m healthcheck (deep) reports healthy

[1m== analysis engines ==[0m
  [32mPASS[0m java runtime
  [32mPASS[0m javac present
  [33mSKIP[0m ghidra installation - not in this image (engine: hopper)
  [32mPASS[0m hopper launcher executable
  [32mPASS[0m hopper shared libraries resolve (0 = none missing)
  [32mPASS[0m hopper launcher digest is the demo REA's feed admits
  [32mPASS[0m xvfb present

[1m== static analysis helpers ==[0m
  [32mPASS[0m pwntools venv python
  [32mPASS[0m wabt 1.0.42
  [32mPASS[0m jadx headless MCP jar
  [32mPASS[0m jadx jar is a runnable archive
  [32mPASS[0m apktool launcher
  [32mPASS[0m dotnet sdk
  [32mPASS[0m ilspycmd

[1m== javascript source recovery (Wakaru) ==[0m
  [32mPASS[0m REA_WAKARU_COMMAND is absolute
  [32mPASS[0m wakaru binary is a real file, readable and executable
  [32mPASS[0m wakaru banner in the form REA parses
  [32mPASS[0m wakaru digest is REA's audited build
  [32mPASS[0m util-linux prlimit (REA's resource limiter)

[1m== firmware / packet / signal ==[0m
  [32mPASS[0m binwalk
  [32mPASS[0m unblob
  [32mPASS[0m tshark
  [32mPASS[0m capinfos
  [32mPASS[0m sigrok-cli
  [32mPASS[0m sigrok backend loads libsigrokdecode

[1m== capture / devices ==[0m
  [32mPASS[0m mitmdump
  [32mPASS[0m adb
  [32mPASS[0m frida binding loads and sees the local device

[1m== debuggers and arch emulation ==[0m
  [32mPASS[0m gdb
  [32mPASS[0m gdb-multiarch
  [32mPASS[0m gdb sources pwndbg
  [32mPASS[0m qemu-user-static
  [32mPASS[0m wine

[1m== browsers ==[0m
  [32mPASS[0m google-chrome
  [32mPASS[0m playwright chromium

[1m== provider readiness ==[0m
  [33mSKIP[0m doctor: ghidra - not in this image (engine: hopper)
  [32mPASS[0m doctor: hopper

[1m== ghidra: architecture coverage (multi-arch is the point) ==[0m
  [33mSKIP[0m ghidra analysis - not in this image (engine: hopper)

[1m== hopper: headless demo analysis ==[0m
  [32mPASS[0m hopper analyze x86_64
  [32mPASS[0m hopper decompile main
  [32mPASS[0m hopper string search

[1m== provider capabilities ==[0m
  [32mPASS[0m providers listing
  [32mPASS[0m capabilities listing

[1m== ELF layout (pwntools 4.15.0) ==[0m
  [32mPASS[0m binary layout: sections and main symbol

[1m== artifact inspection ==[0m
  [32mPASS[0m rea analyze on an application directory
  [32mPASS[0m inspect-artifact on a zip bundle
  [32mPASS[0m extract-artifact on a zip bundle
  [32mPASS[0m extracted files exist under the reported output_root

[1m== Apple static formats (platform-scoped in REA) ==[0m
  [33mSKIP[0m plist decode - REA routes plists through the Apple composite provider (unavailable on Linux for this input)

[1m== managed code (.NET / ilspycmd) ==[0m
  [32mPASS[0m managed artifact identity
  [32mPASS[0m managed members include License.Describe
  [32mPASS[0m ilspycmd decompiles the fixture assembly

[1m== EVM bytecode ==[0m
  [32mPASS[0m evm interface selectors

[1m== JavaScript / Electron application graph ==[0m
  [32mPASS[0m js application graph
  [32mPASS[0m analysis view projection of saved evidence

[1m== JavaScript source recovery (Wakaru) ==[0m
  [32mPASS[0m js recovery: provider is Wakaru
  [32mPASS[0m js recovery: reported version
  [32mPASS[0m js recovery: completed with no failures
  [32mPASS[0m js recovery: bundle decompiled into a module
  [32mPASS[0m js recovery: REA fingerprinted the audited Wakaru build
  [32mPASS[0m js recovery: published module file is non-empty
  [32mPASS[0m js recovery: evidence keeps its limitations
  [32mPASS[0m analysis of the recovered module tree

[1m== historical source import ==[0m
  [32mPASS[0m reference source import

[1m== families added in REA 6.5.0 ==[0m
  [32mPASS[0m sqlite schema + row sample
  [32mPASS[0m wasm artifact: imports/exports and WAT
  [32mPASS[0m go-binary metadata probe

[1m== firmware (binwalk 3.1.x + unblob 26.6.x) ==[0m
  [32mPASS[0m firmware regions (binwalk)
  [32mPASS[0m firmware extraction (unblob)

[1m== HTTP captures ==[0m
  [32mPASS[0m HAR 1.2 capture
  [32mPASS[0m native mitmproxy capture decode

[1m== browser: CDP observation ==[0m
  [32mPASS[0m browser target discovery (CDP)
  [32mPASS[0m browser page capture (DOM/scripts)
  [32mPASS[0m browser screenshot capture

[1m== browser: Playwright scenario ==[0m
  [32mPASS[0m playwright launch + click + DOM capture

[1m== process behaviour capture (native PTY) ==[0m
  [32mPASS[0m pty process capture

[1m== packet captures (tshark 4.x) ==[0m
  [32mPASS[0m pcap client inspection
  [32mPASS[0m pcap capture: udp fields
  [32mPASS[0m pcap summary

[1m== recorded signals (sigrok-cli 0.7.2 + libsigrokdecode) ==[0m
  [32mPASS[0m sigrok decoder inventory
  [32mPASS[0m vcd UART decode

[1m== Frida (JS instrumentation) ==[0m
  [32mPASS[0m frida binding resolves from REA
  [32mPASS[0m rea frida device inventory

[1m== Android: adb + Apktool + JADX engine ==[0m
  [32mPASS[0m adb client inspection
  [32mPASS[0m adb device listing (no device attached is a valid answer)
  [32mPASS[0m apktool client inspection
  [32mPASS[0m apktool runs as a launcher
  [32mPASS[0m jadx engine jar loads under java 21

[1m== IDA provider (bring your own install + licence) ==[0m
  [33mSKIP[0m ida doctor - REA_IDA_MCP_CONFIG not set (see docs/BYO-LICENSES.md)
  [32mPASS[0m ida registration templates present
  [33mSKIP[0m IDADIR mount - not in this image (engine: hopper)

[1m== JEB provider (bring your own licence) ==[0m
  [33mSKIP[0m jeb client - REA_JEB_MCP_URL not set (bring your own JEB)

[1m== Hopper licence/state layout ==[0m
  [32mPASS[0m hopper application-support dir

[1m== import-export / comparison surface ==[0m
  [32mPASS[0m compare command rejects identical artefacts cleanly

[1m== MCP over stdio (docker exec / subprocess) ==[0m
  [32mPASS[0m mcp initialize + tools/list (229 tools)
  [32mPASS[0m mcp tools/call: engine-free tool returned data
  [32mPASS[0m mcp open_binary via hopper
  [32mPASS[0m mcp analyze_function via hopper

[1m== MCP over Streamable HTTP (supergateway bridge) ==[0m
  [32mPASS[0m http bridge initialize (serverInfo over SSE)
rea-agent verification
run:       20261107T094115Z
date:      2026-11-07T09:43:10Z
image:     ghcr.io/alexmi256/rea-agent-hopper:6.8.0-linux-amd64
platform:  Linux x86_64 (kernel string redacted for publication)
node:      v24.22.1
rea:       6.8.0
passed:    102
failed:    0
skipped:   7

skipped checks:
  - ghidra installation
  - doctor: ghidra
  - ghidra analysis
  - plist decode
  - ida doctor
  - IDADIR mount
  - jeb client

[1mreport: /work/verify-reports/20261107T094115Z[0m
passed=102 failed=0 skipped=7

==============================================================
=== verifying engine: ida  (ghcr.io/alexmi256/rea-agent-ida:6.8.0-linux-amd64)
==============================================================
running harness in ghcr.io/alexmi256/rea-agent-ida:6.8.0-linux-amd64 as 10000:10000
[rea-agent] loaded overrides from /etc/rea/rea.env
[rea-agent] engine profile: ida
[rea-agent] note: this image bundles no analysis engine. Provide IDA + a registration:
[rea-agent] note:   /opt/rea/scripts/setup-ida-mcp.sh <idalib|official|sidecar|attached|native>
[rea-agent] ready: rea 6.8.0 | node v24.22.1 | user rea
[1mrea-agent verification[0m  run=20261107T094312Z  out=/work/verify-reports/20261107T094312Z

[1m== fixtures ==[0m
building C fixtures in /tmp/rea-verify/fixtures
  + fixture-x86_64.elf
  + fixture-aarch64.elf (aarch64)
  + fixture-armv7.elf (arm)
  + fixture-mips.elf (big-endian MIPS32)
  + fixture-mipsel.elf (little-endian MIPS32)
  + fixture-riscv64.elf (riscv64)
  + fixture-ppc.elf (PowerPC)
  + fixture-win64.exe (PE32+)
  + module.wasm
  + fixture.sqlite
  + session.har
  + Info.plist
  + jsapp/
  + jsbundle/bundle.min.js
  + www/index.html
  + fixture.pcap
  + uart.vcd
  + firmware.bin
  + runtime.hex
  + process-scenario.json, browser-scenario.json
  + bundle.zip
  dotnet: Restore succeeded.
  dotnet: 
  dotnet: 
  dotnet: Build succeeded.
  dotnet:     0 Warning(s)
  dotnet:     0 Error(s)
  dotnet: 
  dotnet: Time Elapsed 00:00:02.10
  + dotnet-app/bin/Release/net8.0/VerifyLib.dll
fixtures ready in /tmp/rea-verify/fixtures

[1m== runtime ==[0m
  [32mPASS[0m node version
  [32mPASS[0m npm present
  [32mPASS[0m rea version
  [32mPASS[0m rea providers (no bundled engine)

[1m== engine profile ==[0m
  [32mPASS[0m declared engine
  [32mPASS[0m engine env file
  [32mPASS[0m rea wrapper injects engine env
  [32mPASS[0m rea wrapper is the engine-injecting shell script

[1m== container healthcheck ==[0m
  [32mPASS[0m healthcheck reports healthy
  [32mPASS[0m healthcheck (deep) names the missing IDA registration

[1m== analysis engines ==[0m
  [32mPASS[0m java runtime
  [32mPASS[0m javac present
  [33mSKIP[0m ghidra installation - not in this image (engine: ida)
  [33mSKIP[0m hopper installation - not in this image (engine: ida)
  [32mPASS[0m IDA mount point
  [32mPASS[0m IDA licence placement helpers

[1m== static analysis helpers ==[0m
  [32mPASS[0m pwntools venv python
  [32mPASS[0m wabt 1.0.42
  [32mPASS[0m jadx headless MCP jar
  [32mPASS[0m jadx jar is a runnable archive
  [32mPASS[0m apktool launcher
  [32mPASS[0m dotnet sdk
  [32mPASS[0m ilspycmd

[1m== javascript source recovery (Wakaru) ==[0m
  [32mPASS[0m REA_WAKARU_COMMAND is absolute
  [32mPASS[0m wakaru binary is a real file, readable and executable
  [32mPASS[0m wakaru banner in the form REA parses
  [32mPASS[0m wakaru digest is REA's audited build
  [32mPASS[0m util-linux prlimit (REA's resource limiter)

[1m== firmware / packet / signal ==[0m
  [32mPASS[0m binwalk
  [32mPASS[0m unblob
  [32mPASS[0m tshark
  [32mPASS[0m capinfos
  [32mPASS[0m sigrok-cli
  [32mPASS[0m sigrok backend loads libsigrokdecode

[1m== capture / devices ==[0m
  [32mPASS[0m mitmdump
  [32mPASS[0m adb
  [32mPASS[0m frida binding loads and sees the local device

[1m== debuggers and arch emulation ==[0m
  [32mPASS[0m gdb
  [32mPASS[0m gdb-multiarch
  [32mPASS[0m gdb sources pwndbg
  [32mPASS[0m qemu-user-static
  [32mPASS[0m wine

[1m== browsers ==[0m
  [32mPASS[0m google-chrome
  [32mPASS[0m playwright chromium

[1m== provider readiness ==[0m
  [33mSKIP[0m doctor: ghidra - not in this image (engine: ida)
  [33mSKIP[0m doctor: hopper - Hopper not in this image (engine: ida)

[1m== ghidra: architecture coverage (multi-arch is the point) ==[0m
  [33mSKIP[0m ghidra analysis - not in this image (engine: ida)

[1m== hopper: headless demo analysis ==[0m
  [33mSKIP[0m hopper analysis - IDA image: register IDA (see docs/ida-variants.md) to analyse natively

[1m== provider capabilities ==[0m
  [32mPASS[0m providers listing
  [32mPASS[0m capabilities listing

[1m== ELF layout (pwntools 4.15.0) ==[0m
  [32mPASS[0m binary layout: sections and main symbol

[1m== artifact inspection ==[0m
  [32mPASS[0m rea analyze on an application directory
  [32mPASS[0m inspect-artifact on a zip bundle
  [32mPASS[0m extract-artifact on a zip bundle
  [32mPASS[0m extracted files exist under the reported output_root

[1m== Apple static formats (platform-scoped in REA) ==[0m
  [33mSKIP[0m plist decode - REA routes plists through the Apple composite provider (unavailable on Linux for this input)

[1m== managed code (.NET / ilspycmd) ==[0m
  [32mPASS[0m managed artifact identity
  [32mPASS[0m managed members include License.Describe
  [32mPASS[0m ilspycmd decompiles the fixture assembly

[1m== EVM bytecode ==[0m
  [32mPASS[0m evm interface selectors

[1m== JavaScript / Electron application graph ==[0m
  [32mPASS[0m js application graph
  [32mPASS[0m analysis view projection of saved evidence

[1m== JavaScript source recovery (Wakaru) ==[0m
  [32mPASS[0m js recovery: provider is Wakaru
  [32mPASS[0m js recovery: reported version
  [32mPASS[0m js recovery: completed with no failures
  [32mPASS[0m js recovery: bundle decompiled into a module
  [32mPASS[0m js recovery: REA fingerprinted the audited Wakaru build
  [32mPASS[0m js recovery: published module file is non-empty
  [32mPASS[0m js recovery: evidence keeps its limitations
  [32mPASS[0m analysis of the recovered module tree

[1m== historical source import ==[0m
  [32mPASS[0m reference source import

[1m== families added in REA 6.5.0 ==[0m
  [32mPASS[0m sqlite schema + row sample
  [32mPASS[0m wasm artifact: imports/exports and WAT
  [32mPASS[0m go-binary metadata probe

[1m== firmware (binwalk 3.1.x + unblob 26.6.x) ==[0m
  [32mPASS[0m firmware regions (binwalk)
  [32mPASS[0m firmware extraction (unblob)

[1m== HTTP captures ==[0m
  [32mPASS[0m HAR 1.2 capture
  [32mPASS[0m native mitmproxy capture decode

[1m== browser: CDP observation ==[0m
  [32mPASS[0m browser target discovery (CDP)
  [32mPASS[0m browser page capture (DOM/scripts)
  [32mPASS[0m browser screenshot capture

[1m== browser: Playwright scenario ==[0m
  [32mPASS[0m playwright launch + click + DOM capture

[1m== process behaviour capture (native PTY) ==[0m
  [32mPASS[0m pty process capture

[1m== packet captures (tshark 4.x) ==[0m
  [32mPASS[0m pcap client inspection
  [32mPASS[0m pcap capture: udp fields
  [32mPASS[0m pcap summary

[1m== recorded signals (sigrok-cli 0.7.2 + libsigrokdecode) ==[0m
  [32mPASS[0m sigrok decoder inventory
  [32mPASS[0m vcd UART decode

[1m== Frida (JS instrumentation) ==[0m
  [32mPASS[0m frida binding resolves from REA
  [32mPASS[0m rea frida device inventory

[1m== Android: adb + Apktool + JADX engine ==[0m
  [32mPASS[0m adb client inspection
  [32mPASS[0m adb device listing (no device attached is a valid answer)
  [32mPASS[0m apktool client inspection
  [32mPASS[0m apktool runs as a launcher
  [32mPASS[0m jadx engine jar loads under java 21

[1m== IDA provider (bring your own install + licence) ==[0m
  [33mSKIP[0m ida doctor - REA_IDA_MCP_CONFIG not set (see docs/BYO-LICENSES.md)
  [32mPASS[0m ida registration templates present
  [32mPASS[0m IDADIR mount

[1m== JEB provider (bring your own licence) ==[0m
  [33mSKIP[0m jeb client - REA_JEB_MCP_URL not set (bring your own JEB)

[1m== Hopper licence/state layout ==[0m
  [33mSKIP[0m hopper application-support dir - not in this image (engine: ida)

[1m== import-export / comparison surface ==[0m
  [32mPASS[0m compare command rejects identical artefacts cleanly

[1m== MCP over stdio (docker exec / subprocess) ==[0m
  [32mPASS[0m mcp initialize + tools/list (229 tools)
  [32mPASS[0m mcp tools/call: engine-free tool returned data
  [33mSKIP[0m mcp open_binary/analyze_function - disabled or fixture missing

[1m== MCP over Streamable HTTP (supergateway bridge) ==[0m
  [32mPASS[0m http bridge initialize (serverInfo over SSE)
rea-agent verification
run:       20261107T094312Z
date:      2026-11-07T09:44:51Z
image:     ghcr.io/alexmi256/rea-agent-ida:6.8.0-linux-amd64
platform:  Linux x86_64 (kernel string redacted for publication)
node:      v24.22.1
rea:       6.8.0
passed:    94
failed:    0
skipped:   11

skipped checks:
  - ghidra installation
  - hopper installation
  - doctor: ghidra
  - doctor: hopper
  - ghidra analysis
  - hopper analysis
  - plist decode
  - ida doctor
  - jeb client
  - hopper application-support dir
  - mcp open_binary/analyze_function

[1mreport: /work/verify-reports/20261107T094312Z[0m
passed=94 failed=0 skipped=11

==============================================================
=== per-engine results
==============================================================
ENGINE   COUNTS                                 EXIT      RUN
all      passed=121 failed=0 skipped=3          exit=0    20261107T091717Z
ghidra   passed=109 failed=0 skipped=8          exit=0    20261107T092924Z
hopper   passed=102 failed=0 skipped=7          exit=0    20261107T094115Z
ida      passed=94 failed=0 skipped=11          exit=0    20261107T094312Z

all verified engine images passed

exit=0
