mirror of
https://github.com/morluto/rea.git
synced 2026-11-09 00:07:18 +00:00
7bcefead69bf97b45225f8cfc1ce57ce9e6903ec
8
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7bcefead69 |
test: strengthen and prune audited test coverage (#8573)
* test: strengthen and prune audited test coverage * test: require delivered DeepSeek skill instructions * test: keep schema fixture types private * test: verify Gemini receives skill instructions * test: bind Qwen skill evidence to its tool result * test: report NativeAOT verifier checks precisely * fix: verify Ghidra cleanup paths reliably * fix: verify Command Code skill activation * test: tighten cleanup and fixture checks * test: verify packet capture evidence is recorded * fix: report HTTP3 capture provenance accurately * test: preserve resource coverage through MCP * test: prune repeated assertions and retain cancellation identity * fix: validate client verifier fixture paths * test: skip Copilot verifier cases on Windows * test: keep verifier setup target relative |
||
|
|
60149282fc |
test: strengthen integration oracles and verification (#8295)
* test: strengthen integration oracles and verification * test: bound lifecycle gates and strengthen workflow checks * test: verify complete paged and extracted results * test: preserve bytecode and cancellation evidence * test: strengthen retained evidence and fixture cleanup * test: require cross-projection bridge identities * test: retain fixture owners through cleanup failures * test: verify graph examples and project selectors * test: tighten provider and lifecycle regressions * test: consolidate hex coverage and bound cutter cleanup * test: bound subprocess output waits and strengthen graph checks * test: check mcp recovery and preserve cleanup owners * test: verify structured mcp argument failures * test: preserve artifact cleanup and gdb limit evidence * test: preserve evidence identities and bound provider gates * test: retain browser and comparison cleanup owners * test: bound startup and strengthen fixture oracles * test: bound lifecycle gates and verify recovered evidence * test: verify public outcomes and lifecycle ownership * test: assert precise evidence and release lifecycle gates * test: verify selected facts and bound cleanup waits * test: check retained evidence and decoded records * test: verify final reports and retain cleanup ownership * test: bound reviewed startup gates and retain cleanup * test: verify PE errors and preserve MCP cleanup * test: preserve MCP fixture cleanup ownership * test: release provider gates before late startup |
||
|
|
5a22ae6bc8 |
fix(mcp)!: return a compact binary_session status by default (#7127)
* fix(mcp)!: return a compact binary_session status by default
binary_session {} with no target open returned about 66 KB, most of it
provider rejection diagnostics and candidate capability sets that the
skill's recovery flow re-reads on every retry. 6.8.0 grew it by 21%
because the shared regex capability limitation began repeating setting
bounds and step-by-step recovery for every search operation of every
provider (#6099, #6267, #6301, #7049) and IDA gained that limitation for
its two search operations (#4862).
The regex limitation now states the effective deadline and heap, their
sources and where to change them; the deadline and heap errors keep the
full recovery. binary_session gains detail: summary (default) or
complete. The summary keeps open state, target identity, the binding,
route capabilities, run, activity and health status, each candidate's
availability and target-support status, code and reason, and every
tool's availability, reason, remediation and modes, and lists the
fields it leaves out in omitted_fields. Complete detail returns the
previous shape. The CLI capabilities and providers commands keep
complete provider facts through the same application projection.
BREAKING CHANGE: binary_session {} no longer returns
analysis_provider_candidates[].availability.diagnostics,
target_support.diagnostics or capabilities, or tool_availability group
surface, effects and annotations. Pass {"detail": "complete"} to get
them.
Fixes #7109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(mcp): key binary_session output fields by detail
The output schema accepted detail: "complete" with summary candidates or
tool groups, and a summary without omitted_fields, so detail did not
tell callers which fields existed. Each session kind is now crossed
with a detail-specific shape: a summary requires omitted_fields and
summary-only candidates and tool groups; complete requires diagnostics,
candidate capabilities and static tool flags and forbids omitted_fields.
Both the canonical schema and the SDK-validated advertised schema reject
mismatched shapes.
The verifier helper accepts summary candidates only for a validated MCP
summary; CLI provider output still requires candidate capabilities.
Regex limitation tests check values, sources and setting names instead
of whole sentences.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
||
|
|
f3ed1657f8 |
feat(mcp): support runtime analysis limit recovery (#7049)
* feat(mcp): support runtime analysis limit recovery * refactor(config): remove unused limit re-exports * fix(android): keep fixture release metadata dependency-free * fix(settings): preserve provider budgets and recovery facts * fix(tests): resolve lint plugins from their repository owner * refactor(mcp): verify guidance delivery without frozen wording * fix(android): align availability with runtime timeout * test(recovery): assert limit facts instead of frozen wording * fix(mcp): share runtime settings with the default JADX provider * test(mcp): bound acknowledgements and release held work on failure * fix(catalog): declare runtime settings tools as MCP-only |
||
|
|
bea6b98e84 |
test: prefer structured assertions over recovery prose (#6379)
* test: prefer structured assertions over recovery prose Lock regex, IDA, Hopper/Kuna, MCP budget, capture-heap, and pcap failures on error codes and reported limits instead of full recovery sentences. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: keep decoder heap negatives off the Windows reserve "512 MiB" also appears in the Bun Windows reserve sentence. The negative check stays on "512 MiB (source setting)", which is the other adapter's heap. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: keep the one-retry cap and deadline recovery tokens The lost-connection guidance must say once only, so an unlimited "whenever it is safe" rewrite fails. Deadline recovery still has to name set, restart, the floor, and the maximum constant. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: keep heap, MCP, pcap, and preload recovery tokens Codex still wanted the set/restart/floor/maximum heap guidance, MCP default/floor/maximum bounds, Wireshark install guidance, and the dropped-preload attribution limit as separate tokens. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: keep shared-context and transport recovery tokens Shared-context capture must still exclude requests without a known root or descendant frame. Shutdown must end the REA process before starting again, and a failed HTTP listen must offer another port or stopping the process that holds it. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: keep handoff, input-check, and budget format tokens Skill and server guidance must still tell the user to restart the MCP client. Process failures must still say to check the input files. Invalid MCP phase budgets must still say positive decimal integer and ms. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: bind budget floors and active deadline sources The phase-budget minimum is the start of "from N to M ms", so a digit inside the maximum no longer satisfies it. Capability text must contain the active "N ms (source ...)" pair, not the default number and a heap source mentioned apart. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: bind heap MiB sources and pcap host tokens A configured 256 MiB request must appear as "256 MiB (source setting)", so a byte-sized 256 no longer passes. Unsupported pcap hosts must still name Linux, util-linux, Windows, and owned Job Objects as separate tokens. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: bind the selected decoder heap to MiB and source The two-adapter limitation must contain "256 MiB (source setting)". The exhaustion message binds that capacity as "256 MiB V8 old-generation heap (source setting)", so a byte-sized 256 no longer passes. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: bind doctor client seconds and prlimit absolute guidance Doctor recovery must name startup_timeout_sec of the policy's seconds, so a hardcoded 60 no longer passes while the policy stays 30. A relative prlimit must say the value must be absolute and tell the user to check REA_TSHARK_PRLIMIT_COMMAND. Co-authored-by: morluto <morluto@users.noreply.github.com> * test: assert integrity codes for rehashed evidence and coverage Independently rehashed process Evidence and a tampered digest project evidence_integrity_mismatch. An unsupported comparison operation stays invalid_request. Unsupported inventory coverage status is an integrity failure whose reason carries the coverage.status schema issue. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com> |
||
|
|
9512a80804 |
feat(process): make the regex worker heap request configurable (#6301)
* feat(process): make the regex worker heap request configurable REA_REGEX_WORKER_HEAP_REQUEST_MIB keeps the 128 MiB default and refuses values outside 8 to 16384 MiB. A positive Node --max-old-space-size still overrides the request and is not clamped by the setting. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): set the regex worker heap floor to the measured startup bound On Node 22.23.4 a 5 MiB old-generation request aborts the regex worker during startup, and 6 MiB starts it and returns a match. The setting floor is that measured bound. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): raise the regex worker heap floor to 7 MiB 6 MiB passes configuration but returns ERR_WORKER_OUT_OF_MEMORY for a trivial match on supported Linux Node 24 and Node 26.0.0. 7 MiB returned that match on the measured 22, 24, and 26 lines. A clean-process test runs the production worker at the floor. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com> |
||
|
|
c7efd3a388 |
feat(config): make the regex matching deadline configurable (#6267)
* feat(config): make the regex matching deadline configurable REA_REGEX_MATCHING_DEADLINE_MS defaults to 5000 ms and refuses values outside 1..2147483647. Recovery and capability text name the effective deadline, its source, and how to change the setting. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(setup): preserve the regex matching deadline in registrations Setup validated REA_REGEX_MATCHING_DEADLINE_MS but left it out of the selected registration environment, so a caller override never reached the launched server and matching fell back to 5000 ms. Co-authored-by: morluto <morluto@users.noreply.github.com> * test(config): restore a stubbed regex matching deadline on failure Kuna deadline assertions now unstub the environment in finally, so a thrown construction or expectation cannot leave the setting stubbed. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com> |
||
|
|
8413ec08f7 |
fix(process): report the effective regex heap and uncertain signal retry (#6099)
* fix(process): report the effective regex worker heap Node gives --max-old-space-size, including NODE_OPTIONS, precedence over the worker's 128 MiB resourceLimits request. Name that effective old-generation heap and stop saying the request has no runtime override. The matching deadline stays a fixed cap. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): keep SIGXCPU and SIGXFSZ retries uncertain The signal does not prove the retained rlimit was exhausted, so an unchanged retry may succeed. Project that retry as possible instead of saying it fails the same way. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): leave percentage heap overrides unestablished --max-old-space-size-percentage takes precedence over the absolute flag in either order. Node computes that MiB from startup memory, which a later read does not recover, so the effective heap stays unknown instead of the 128 MiB request or an absolute flag. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): read launch NODE_OPTIONS, not process.env A preload can rewrite process.env.NODE_OPTIONS after V8 has applied the original flags, and those flags are not copied into execArgv. Use the initial environment block when it can be read, and leave the effective heap unestablished when that provenance cannot be recovered. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): leave env-file heap overrides unestablished --env-file and --env-file-if-exists can supply NODE_OPTIONS when that variable was absent from the initial environment. The file is not in /proc/self/environ, so a missing entry is not the 128 MiB request. An initial NODE_OPTIONS is still parsed, because Node does not let the file replace it. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): leave --max-heap-size old generation unestablished A positive --max-heap-size or --max_heap_size sets the total heap, not the old generation, and can stay below the 128 MiB worker request when an old-space flag is also present. The effective old generation stays unestablished while that value is in effect. Zero or empty clears it. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): leave config-file heap options unestablished --experimental-config-file and --experimental-default-config-file can apply a heap percentage from a file that is not launch provenance. The effective old generation stays unestablished when either flag is present, including beside an absolute --max-old-space-size. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): read launch exec argv from the command line process.execArgv can be cleared after V8 applies --max-old-space-size. Linux recovers those tokens from /proc/self/cmdline and leaves the heap unestablished when that vector cannot be separated from the program entry. Heap probes compare pinned absolute limits instead of a percentage of host memory. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(process): leave a title-overwritten command line unestablished process.title and --title replace /proc/self/cmdline with the title. A buffer without a program entry is not an empty option list, so the heap stays unknown instead of the 128 MiB request. The command-line probe does not read /proc off Linux. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com> |