docs: correct setup capture and recovery boundary guidance

This commit is contained in:
morluto
2026-10-24 02:37:42 +08:00
parent 0a1ad0d465
commit 80bc0f5ede
7 changed files with 46 additions and 15 deletions
+6 -4
View File
@@ -748,7 +748,9 @@ browser, web and Electron commands (including `analyze-web-bundle`,
for Android/ADB, Apktool/JEB/Flutter, firmware, PCAP and signal analysis,
WASM/EVM, Go/Rust and binary diagnostics, Frida instrumentation, the Cutter
command, objdump, Rizin and GDB, and the agent environment server
(`environment-serve`). In these paths, a returned structured
(`environment-serve`). The handler also wraps `doctor`,
`inspect-sqlite-database`, `recover-javascript-sources`,
`inspect-il2cpp-metadata`, and `inspect-desktop-application`. In these paths, a returned structured
`cancelled` result can be printed before the wrapper assigns the
signal-derived status. This describes the current source routing; it is not a
claim that every command or provider runtime has been independently exercised.
@@ -766,9 +768,9 @@ CLI stops writing, prints no error and exits `141` (`128 + 13`, the status of a
SIGPIPE-terminated writer). The operation itself may have completed; only its
output was declined.
`inspect-artifact` also returns a structured cancelled result, but its direct
analysis cancellation path does not set a signal-derived exit status, so it
exits `1`. Setup has its own contract: cancellation exits `0`. Treat the
`inspect-artifact` also returns a structured cancelled result. Its logging
wrapper sits outside the cancellation handler and replaces the signal-derived
status with the analysis failure status, so it exits `1`. Setup has its own contract: cancellation exits `0`. Treat the
structured result and process status as separate signals when scripting
cancellation.
+6 -3
View File
@@ -313,9 +313,12 @@ workload needs more time. Devin honors `XDG_CONFIG_HOME` for its
## OMP
For OMP, setup writes a `type: "stdio"` entry to the user-level
`~/.omp/agent/mcp.json`. It follows `PI_CONFIG_DIR` and
`PI_CODING_AGENT_DIR` (relative to the setup working directory), and the profile selected by `OMP_PROFILE` or
`PI_PROFILE` (`~/.omp/profiles/<name>/agent/mcp.json`). Setup also removes
`~/.omp/agent/mcp.json`. A relative `PI_CONFIG_DIR` selects a configuration root
under the home directory. For the default profile, `PI_CODING_AGENT_DIR`
overrides the agent directory; a relative value uses the setup working
directory. A named profile selected by `OMP_PROFILE` or `PI_PROFILE` instead
uses `<configuration-root>/profiles/<name>/agent/mcp.json` and ignores
`PI_CODING_AGENT_DIR`. Setup also removes
`rea` from that file's `disabledServers` list, which would otherwise hide the
registration. Doctor treats an `enabled: false` entry as active when
`enabledServers` lists `rea`, as OMP does, unless `disabledServers` also lists
+3 -2
View File
@@ -136,8 +136,9 @@ server; older servers keep the complete request after schema discovery.
- **Bounded reads.** APK snapshots are bounded at 2 GiB, including while
copying. Identification permits 768 MiB of cumulative library extraction;
declared sizes are checked before extraction. Library reads are bounded at 256 MiB each and ZIP
metadata at 8 MiB; the AOT image buffer is allocated at exactly the
declared size before reading. Exceeded budgets report
metadata at 8 MiB. Before reading, the AOT image buffer reserves the
admitted declared size plus one byte; the reported byte count is the number
actually read. Exceeded budgets report
`resource_constraint`.
- **Engine notes.** Engine libraries are spooled into the owned root. ELF
headers, note tables and note payloads share an 8 MiB metadata budget;
+20 -2
View File
@@ -763,8 +763,8 @@ Automatic discovery accepts executable regular files, including file symlinks,
and skips directories.
On Linux, it prefers executable `/opt/hopper/bin/Hopper`, then executable
`~/.local/share/rea/hopper/bin/Hopper`, followed by `/opt/hopper-v4/bin/hopper`
and `/usr/bin/hopper`; if none exists, the former remains the diagnostic
fallback. `rea doctor` checks only the current platform's candidates, in the
and `/usr/bin/hopper`; if none exists, `/opt/hopper/bin/Hopper` remains the
diagnostic fallback. `rea doctor` checks only the current platform's candidates, in the
same order; other platforms have no automatic candidates.
`HOPPER_LAUNCHER_PATH` overrides those choices:
@@ -1453,4 +1453,22 @@ curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh |
bash -s -- --dry-run
```
To review a version-pinned installer before running it, select the release
version, download its tagged script, and inspect the downloaded file:
```bash
rea_version=6.7.0
curl -fsSL "https://raw.githubusercontent.com/morluto/rea/rea-agents-${rea_version}/install.sh" -o rea-install.sh
less rea-install.sh
```
After reviewing it, install the same package version:
```bash
bash rea-install.sh --version "$rea_version"
```
The tag pins the selected script revision; `--version` selects the npm package
version. Neither command verifies a signature on the downloaded script.
Supported options are `--version <semver>`, `--dry-run`, `--no-setup`, `--no-prompt`, and `--verbose`. Neither `--no-prompt` nor a non-interactive shell grants permission to install external dependencies.
+1 -1
View File
@@ -25,7 +25,7 @@ harm_rank,location,trigger,current_copy,user_risk,proposed_replacement,implement
22,src/domain/errors.ts:HopperCancelledError,Caller cancels provider request,Hopper operation was cancelled,Exposes provider name,"Analysis was cancelled. Start it again when ready.",implemented,focused assertions passed; full `npm run check` passed
23,src/domain/errors.ts:NoBinaryOpenError,Analysis requested without target,"No app is open. Ask the user which app to investigate, then call open_binary with its local path.",Low risk; already supplies agent recovery,Keep current copy,implemented,focused assertions passed; full `npm run check` passed
24,src/server/toolResult.ts:successResult,Successful value violates public output schema,AnalysisOutputError: Analysis output does not match the tool contract,Exposes internal error tag and contract implementation,"Analysis returned an unreadable result. Run `rea doctor` and review the reported details; repeating the unchanged request is not expected to succeed.",implemented,focused assertions passed; full `npm run check` passed
24.5,src/server/registerOfficialTools.ts:capability unknown,Approved unknown tracking records an unavailable analysis,"TOOL_NAME is unavailable: PROVIDER_REASON",Exposes an internal tool identifier and provider diagnostic in persistent user-visible evidence,"The requested analysis is unavailable for the current target.",implemented,verified by focused MCP integration test
24.5,src/server/registerEvidenceTools.ts:unavailable analysis,Analysis is unavailable without supporting Evidence,Unavailable error without a session unknown,Do not infer a persistent unknown without supporting Evidence,Return the unavailable error; session unknowns require supporting Evidence,approval-based tracking removed,Source and assertions inspected: tests/boundary/mcp/serverUnknownsMcp.test.ts; unavailable error leaves list_unknowns empty; test not rerun for this documentation change
24.6,src/application/ReferenceSourceImportEntries.ts:failed entry,A partial reference import contains an unreadable entry,Low-level reader diagnostic stored in entry limitations,Can persist filesystem or reader implementation details,"Code- and entry-specific safe guidance with a retry, limit, exclusion, or platform recovery step.",implemented,verified by exhaustive focused projection test
24.7,src/server/registerSessionTools.ts:process residual,Capture records a residual unknown linked to capture Evidence,SCOPE: RAW_REASON,Persists adapter diagnostic and implementation wording,"Was SCOPE behavior fully observed during capture?",implemented,verified by focused session MCP test
24.8,src/server/registerInvestigationTools.ts:changed behavior unknown,Changed-behavior workflow remains incomplete,"Changed behavior result EVIDENCE_ID remains STATUS",Persists internal evidence identifier,"Did both versions behave the same under a complete controlled replay?",implemented,verified by focused investigation MCP test
1 harm_rank location trigger current_copy user_risk proposed_replacement implementation_status verification_result
25 22 src/domain/errors.ts:HopperCancelledError Caller cancels provider request Hopper operation was cancelled Exposes provider name Analysis was cancelled. Start it again when ready. implemented focused assertions passed; full `npm run check` passed
26 23 src/domain/errors.ts:NoBinaryOpenError Analysis requested without target No app is open. Ask the user which app to investigate, then call open_binary with its local path. Low risk; already supplies agent recovery Keep current copy implemented focused assertions passed; full `npm run check` passed
27 24 src/server/toolResult.ts:successResult Successful value violates public output schema AnalysisOutputError: Analysis output does not match the tool contract Exposes internal error tag and contract implementation Analysis returned an unreadable result. Run `rea doctor` and review the reported details; repeating the unchanged request is not expected to succeed. implemented focused assertions passed; full `npm run check` passed
28 24.5 src/server/registerOfficialTools.ts:capability unknown src/server/registerEvidenceTools.ts:unavailable analysis Approved unknown tracking records an unavailable analysis Analysis is unavailable without supporting Evidence TOOL_NAME is unavailable: PROVIDER_REASON Unavailable error without a session unknown Exposes an internal tool identifier and provider diagnostic in persistent user-visible evidence Do not infer a persistent unknown without supporting Evidence The requested analysis is unavailable for the current target. Return the unavailable error; session unknowns require supporting Evidence implemented approval-based tracking removed verified by focused MCP integration test Source and assertions inspected: tests/boundary/mcp/serverUnknownsMcp.test.ts; unavailable error leaves list_unknowns empty; test not rerun for this documentation change
29 24.6 src/application/ReferenceSourceImportEntries.ts:failed entry A partial reference import contains an unreadable entry Low-level reader diagnostic stored in entry limitations Can persist filesystem or reader implementation details Code- and entry-specific safe guidance with a retry, limit, exclusion, or platform recovery step. implemented verified by exhaustive focused projection test
30 24.7 src/server/registerSessionTools.ts:process residual Capture records a residual unknown linked to capture Evidence SCOPE: RAW_REASON Persists adapter diagnostic and implementation wording Was SCOPE behavior fully observed during capture? implemented verified by focused session MCP test
31 24.8 src/server/registerInvestigationTools.ts:changed behavior unknown Changed-behavior workflow remains incomplete Changed behavior result EVIDENCE_ID remains STATUS Persists internal evidence identifier Did both versions behave the same under a complete controlled replay? implemented verified by focused investigation MCP test
+4 -2
View File
@@ -279,8 +279,10 @@ not register or wrap the Fiddler MCP server.
- `numeric_literals` preserve HAR number lexemes and native integer/float
representations, including unsafe integers and non-finite native floats.
Values that cannot be safely represented as JSON numbers are `null` in the
reported view, including otherwise valid standard HAR numeric fields;
their exact source values remain available through the numeric sidecars.
reported view. Schema-valid HAR numbers are admitted even when they cannot
be published safely as JSON numbers; their exact lexemes remain in
`numeric_literals`. Standard numeric fields must still satisfy the pinned
schema, including integer requirements judged from the numeric lexeme.
- `binary_fields` retain exposed bytes, base64 and SHA-256 independently of
declared sizes. Valid HAR `content.encoding: "base64"` is decoded exactly;
producer-decoded Unicode text, missing text and unknown encodings do not
+6 -1
View File
@@ -59,10 +59,15 @@ its own descriptor. It does not duplicate script bytes.
- Ordinary query-free `.js`, `.mjs`, and `.cjs` URL paths are arranged under a
directory for each origin, preserving their relative module layout when it
is unambiguous.
- Competing versions, query/fragment variants, case and file/directory prefix
- Competing versions, query/fragment variants, and file/directory prefix
collisions, inline sources, and unrepresentable paths use unique isolated
names with a stated reason. Missing competing sources also prevent selection
of an apparently canonical version.
- Case-distinct URL spellings keep their relative paths when the destination
filesystem can store both. If a later spelling collides at publication, that
record is isolated while an earlier canonical spelling can remain. Read each
record's `layout`, `relative_path`, and `layout_reason`; case isolation depends
on the destination, unlike preplanned exact-path/version isolation.
## Interpretation and limits