[GH-ISSUE #7275] [Bug] rea setup completion prints Ida and Jadx instead of IDA and JADX #4318

Open
opened 2026-10-31 00:48:53 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @coygeek on GitHub (Oct 26, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/7275

Before submitting

  • I searched the open and closed issues for a related report.
  • I removed credentials, tokens, private paths, and sensitive target data.

Area

Setup, packaging, or upgrade

Observed behavior

The production interactive setup completion printer renders ready IDA and JADX providers as “Ida” and “Jadx”. A direct source replay reproduced the incorrect labels; the complete interactive command and real providers were not run. Source tracing confirms the registered interactive rea setup command uses this printer for its ready result.

Reproduction

  1. Start at the source revision below with locked dependencies installed, Node on PATH, and HOME set to a disposable empty directory.
  2. From the checkout root, run the inline command under Relevant output or evidence. It prints a ready four-provider result, then a Hopper/Ghidra-only control. It performs no provider analysis or configuration writes.
  3. Observe “Ida” and “Jadx” in the first “Deep analysis:” line. The control reads “Hopper and Ghidra”.

The inline command reproduced the defect in one attempt. A separate focused source test reproduced the same labels and passed its assertions for this current behavior. No packaged runtime was built.

Expected behavior

Use the product spellings “IDA” and “JADX” in the compact completion list: “Deep analysis: Hopper, Ghidra, IDA, and JADX”. The provider identities declare “IDA MCP adapter” at src/ida/IdaProviderCapabilities.ts:8 and “JADX headless” at src/android/JadxRelease.ts:40. docs/ida-provider.md:1 and docs/android-analysis.md:3 use those acronym spellings; AGENTS.md:33 separates lookup identity from display formatting.

Impact and scope

P3: cosmetic wording in the ready completion summary when the list includes IDA or JADX. The replay establishes no readiness, configuration, or analysis failure. No display-name override or alternate diagnostic workaround was tested. Real-provider and cross-platform end-to-end runs remain outside the verification performed.

REA version

615fbbbdd7 (package.json version 6.8.0)

Runtime and platform

Node v26.12.1; macOS arm64. Repository-pinned tsx for the inline replay; Vitest 5.0.3 for the focused source test. No IDA or JADX installation used.

Target and artifact context

Not applicable. The fixture is a ready setup result with four available provider ids and no configured clients or applied actions.

Interface

CLI

Earliest failure stage

Transport or result projection

Relevant output or evidence

Executed from the source checkout:

node --import tsx --input-type=module <<'JS'
import { renderInteractiveSetupResult } from './src/cli/interactiveSetup.ts';
const result = {
  status: 'ready', plannedActions: [], appliedActions: [], clients: {}, clientStates: [],
  doctor: {
    healthy: true, environment_healthy: true,
    scope: { mode: 'explicit', clients: [], providers: [], skill: false, target: null },
    availableProviders: ['hopper', 'ghidra', 'ida', 'jadx'],
  },
};
renderInteractiveSetupResult(result, {});
renderInteractiveSetupResult({ ...result, doctor: { ...result.doctor, availableProviders: ['hopper', 'ghidra'] } }, {});
JS

Relevant stderr, with exit status 0:

│  Deep analysis: Hopper, Ghidra, Ida, and Jadx
│  Deep analysis: Hopper and Ghidra

Source-derived reachability: src/cli.ts:115 registers setup; src/cli/setupCommands.ts:102 dispatches to the setup runner. Lines 304–316 admit TTY input/output without automatic approval, dry-run, or explicit format, and line 243 invokes the production completion renderer after setup returns. src/application/Setup.ts:418 determines the ready result and line 622 retains available provider ids only when their checks pass. src/cli/interactiveSetup.ts:97 handles ready results and line 252 prints the list. Real provider availability is a supplied fixture premise in the executed replay.

Typed outcome or recovery expected

Repeat both inputs: the first line should use “IDA” and “JADX”, and the Hopper/Ghidra control should remain unchanged. Keep the same provider membership and order; omission or suppression does not restore the naming contract.

Analysis or suspected cause

Source-derived: src/cli/interactiveSetup.ts:277 maps lowercase provider ids through the first-character capitalization at line 280. That produces “Ida” and “Jadx”.

Additional context

Closed #5105 concerns Kuna readiness in setup; closed #2944 concerns preserving JADX registration settings. Neither reports this display spelling failure. Open and closed issue searches found no matching report.

Originally created by @coygeek on GitHub (Oct 26, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/7275 ### Before submitting - [x] I searched the open and closed issues for a related report. - [x] I removed credentials, tokens, private paths, and sensitive target data. ### Area Setup, packaging, or upgrade ### Observed behavior The production interactive setup completion printer renders ready IDA and JADX providers as “Ida” and “Jadx”. A direct source replay reproduced the incorrect labels; the complete interactive command and real providers were not run. Source tracing confirms the registered interactive `rea setup` command uses this printer for its ready result. ### Reproduction 1. Start at the source revision below with locked dependencies installed, Node on PATH, and HOME set to a disposable empty directory. 2. From the checkout root, run the inline command under Relevant output or evidence. It prints a ready four-provider result, then a Hopper/Ghidra-only control. It performs no provider analysis or configuration writes. 3. Observe “Ida” and “Jadx” in the first “Deep analysis:” line. The control reads “Hopper and Ghidra”. The inline command reproduced the defect in one attempt. A separate focused source test reproduced the same labels and passed its assertions for this current behavior. No packaged runtime was built. ### Expected behavior Use the product spellings “IDA” and “JADX” in the compact completion list: “Deep analysis: Hopper, Ghidra, IDA, and JADX”. The provider identities declare “IDA MCP adapter” at `src/ida/IdaProviderCapabilities.ts:8` and “JADX headless” at `src/android/JadxRelease.ts:40`. `docs/ida-provider.md:1` and `docs/android-analysis.md:3` use those acronym spellings; `AGENTS.md:33` separates lookup identity from display formatting. ### Impact and scope P3: cosmetic wording in the ready completion summary when the list includes IDA or JADX. The replay establishes no readiness, configuration, or analysis failure. No display-name override or alternate diagnostic workaround was tested. Real-provider and cross-platform end-to-end runs remain outside the verification performed. ### REA version 615fbbbdd750de2df5d92b9827d0c7c4422c1d03 (package.json version 6.8.0) ### Runtime and platform Node v26.12.1; macOS arm64. Repository-pinned tsx for the inline replay; Vitest 5.0.3 for the focused source test. No IDA or JADX installation used. ### Target and artifact context Not applicable. The fixture is a ready setup result with four available provider ids and no configured clients or applied actions. ### Interface CLI ### Earliest failure stage Transport or result projection ### Relevant output or evidence Executed from the source checkout: ```sh node --import tsx --input-type=module <<'JS' import { renderInteractiveSetupResult } from './src/cli/interactiveSetup.ts'; const result = { status: 'ready', plannedActions: [], appliedActions: [], clients: {}, clientStates: [], doctor: { healthy: true, environment_healthy: true, scope: { mode: 'explicit', clients: [], providers: [], skill: false, target: null }, availableProviders: ['hopper', 'ghidra', 'ida', 'jadx'], }, }; renderInteractiveSetupResult(result, {}); renderInteractiveSetupResult({ ...result, doctor: { ...result.doctor, availableProviders: ['hopper', 'ghidra'] } }, {}); JS ``` Relevant stderr, with exit status 0: ```text │ Deep analysis: Hopper, Ghidra, Ida, and Jadx │ Deep analysis: Hopper and Ghidra ``` Source-derived reachability: `src/cli.ts:115` registers setup; `src/cli/setupCommands.ts:102` dispatches to the setup runner. Lines 304–316 admit TTY input/output without automatic approval, dry-run, or explicit format, and line 243 invokes the production completion renderer after setup returns. `src/application/Setup.ts:418` determines the ready result and line 622 retains available provider ids only when their checks pass. `src/cli/interactiveSetup.ts:97` handles ready results and line 252 prints the list. Real provider availability is a supplied fixture premise in the executed replay. ### Typed outcome or recovery expected Repeat both inputs: the first line should use “IDA” and “JADX”, and the Hopper/Ghidra control should remain unchanged. Keep the same provider membership and order; omission or suppression does not restore the naming contract. ### Analysis or suspected cause Source-derived: `src/cli/interactiveSetup.ts:277` maps lowercase provider ids through the first-character capitalization at line 280. That produces “Ida” and “Jadx”. ### Additional context Closed [#5105](https://github.com/morluto/rea/issues/5105) concerns Kuna readiness in setup; closed [#2944](https://github.com/morluto/rea/issues/2944) concerns preserving JADX registration settings. Neither reports this display spelling failure. Open and closed issue searches found no matching report.
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#4318
No description provided.