[GH-ISSUE #5851] [Feature] Expose firmware analysis budgets independently of publication recovery #3547

Closed
opened 2026-10-31 00:41:44 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @gensokyo-dev on GitHub (Oct 21, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/5851

Before submitting

  • Searched related reports; #5808 tracks remaining timeout owners. SQLite #5812 / #5818 is now merged and post-merge verified.
  • Reviewed scope: existing Linux Binwalk/Unblob workflows only; no target execution, sandbox relaxation, source mutation, new extraction authority or automatic installation.
  • No credentials or sensitive firmware samples.

Area

MCP or agent integration

Current limitation (source-derived)

At f801b2fbfd28f4e3713adefddc7bd73db44c284c:

  • FirmwareProvider starts a fixed 120000 ms analysis phase after queue/retained-cleanup admission. It covers tool resolution/fingerprinting, frozen input acquisition, version/analysis commands and report/inventory work. Inspection finalization remains in that phase. Extraction switches to a separately selected publication/final-cleanup phase.
  • FirmwareCommand independently starts another fixed 120000 ms clock for each command. Adding a public outer knob alone would still leave longer commands clipped by this hidden deadline.
  • FirmwareFailures has precise publication recovery, but analysis timeouts use generic guidance. Current public inputs expose publication_timeout_ms, not an analysis control; changing publication or only the MCP client deadline cannot repair an analysis timeout.
  • The existing prlimit policy separately fixes 120 CPU seconds per process, 1 GiB per-process address space and report/file/diagnostic bounds. These are not the same as wall-clock analysis time and must not silently become adjustable.
  • Failed command cleanup currently preserves the earlier failure as a message rather than a typed primary. Recovery must retain phase, actual selected budget, cause, output and resource ownership through cleanup retry without duplicate payloads.

Desired outcome and success criteria

Expose optional per-call analysis_timeout_ms / CLI --analysis-timeout-ms on both firmware operations, default 120000 and integer timer range 1..2147483647. One phase owner should drive all command/consumption checks; remove the hidden fixed command clock rather than adding competing budgets. Keep queue waiting, retained-cleanup admission, extraction analysis, publication and whole-client delivery scopes explicit.

Current success and completed partial/publication observations must preserve the actual selected settings. Historical missing settings stay unknown; explicit caller selection remains explicit and omission remains omission. Shared CLI/MCP validation must reject missing/mismatched settings in fresh results.

Errors should name the exact supported repair, units/range, client headroom and cleanup-before-retry boundary. Preserve source path/digest/range and extraction question. A retry must respect absent-output-directory and retained publication receipt semantics. Fixed CPU/memory/byte limits remain fixed; do not infer the cause of an ambiguous kill or suggest that more wall time raises those limits.

Use cases / alternatives

A legitimate scan/extraction may need more wall time for tool startup, I/O or analysis. Exact input-range/depth/output-budget choices can reduce work only when they preserve the caller's question. Raising publication time, setting an unsupported field, restarting an unchanged server or blindly repeating the failed request are not repairs for a hidden analysis deadline.

Expected interaction with targets

Read/freeze caller-selected firmware and launch the existing caller-supplied analyzers with current one-worker limits, default sandbox and owned cleanup. Extraction publishes verified regular files only to an explicitly selected absent destination; no mounts, extracted-code execution, provider installation or protection bypass.

Verification available so far

Source inspection and existing guide/contract comparison only. In this shell, firmware command variables are unset and Binwalk/Unblob were not found on PATH; existing prlimit, Python, C compiler and 7z are available. This is not a runtime timeout reproduction or real-provider qualification.

NOT_ENOUGH_INFO: natural slow-firmware frequency, large/vendor-image performance and current real-engine coverage. Proposed checks are not completed results.

Verification details proposed

Fail-before/pass-after owner/service guards; controlled real owned-command deadlines and delayed consumption; distinct analysis/publication phase recovery; queued non-default settings; opaque cancellation, late completion, failed cleanup and retry with one output copy. Validate SDK-converted schemas and exact CLI/MCP controls, default/invalid/max settings, immutable inputs and retained Evidence. Use the existing generated gzip/USTAR/ELF independent oracle and actual supplied tools where available; simulated producers do not establish real engine behavior. Exercise actual Codex CLI corrected success and honest missing-provider/fixed-limit blockers. Record whole-session tokens, elapsed, CPU and sampled family RSS, with cold/warm and unmeasured costs explicit; bound concurrency and memory.

Originally created by @gensokyo-dev on GitHub (Oct 21, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/5851 ### Before submitting - [x] Searched related reports; #5808 tracks remaining timeout owners. SQLite #5812 / #5818 is now merged and post-merge verified. - [x] Reviewed scope: existing Linux Binwalk/Unblob workflows only; no target execution, sandbox relaxation, source mutation, new extraction authority or automatic installation. - [x] No credentials or sensitive firmware samples. ### Area MCP or agent integration ### Current limitation (source-derived) At `f801b2fbfd28f4e3713adefddc7bd73db44c284c`: - `FirmwareProvider` starts a fixed 120000 ms analysis phase after queue/retained-cleanup admission. It covers tool resolution/fingerprinting, frozen input acquisition, version/analysis commands and report/inventory work. Inspection finalization remains in that phase. Extraction switches to a separately selected publication/final-cleanup phase. - `FirmwareCommand` independently starts another fixed 120000 ms clock for each command. Adding a public outer knob alone would still leave longer commands clipped by this hidden deadline. - `FirmwareFailures` has precise publication recovery, but analysis timeouts use generic guidance. Current public inputs expose `publication_timeout_ms`, **not an analysis control**; changing publication or only the MCP client deadline cannot repair an analysis timeout. - The existing `prlimit` policy separately fixes 120 CPU seconds per process, 1 GiB per-process address space and report/file/diagnostic bounds. These are not the same as wall-clock analysis time and must not silently become adjustable. - Failed command cleanup currently preserves the earlier failure as a message rather than a typed primary. Recovery must retain phase, actual selected budget, cause, output and resource ownership through cleanup retry without duplicate payloads. ### Desired outcome and success criteria Expose optional per-call `analysis_timeout_ms` / CLI `--analysis-timeout-ms` on both firmware operations, default 120000 and integer timer range 1..2147483647. One phase owner should drive all command/consumption checks; remove the hidden fixed command clock rather than adding competing budgets. Keep queue waiting, retained-cleanup admission, extraction analysis, publication and whole-client delivery scopes explicit. Current success and completed partial/publication observations must preserve the actual selected settings. Historical missing settings stay unknown; explicit caller selection remains explicit and omission remains omission. Shared CLI/MCP validation must reject missing/mismatched settings in fresh results. Errors should name the exact supported repair, units/range, client headroom and cleanup-before-retry boundary. Preserve source path/digest/range and extraction question. A retry must respect absent-output-directory and retained publication receipt semantics. Fixed CPU/memory/byte limits remain fixed; do not infer the cause of an ambiguous kill or suggest that more wall time raises those limits. ### Use cases / alternatives A legitimate scan/extraction may need more wall time for tool startup, I/O or analysis. Exact input-range/depth/output-budget choices can reduce work only when they preserve the caller's question. Raising publication time, setting an unsupported field, restarting an unchanged server or blindly repeating the failed request are not repairs for a hidden analysis deadline. ### Expected interaction with targets Read/freeze caller-selected firmware and launch the existing caller-supplied analyzers with current one-worker limits, default sandbox and owned cleanup. Extraction publishes verified regular files only to an explicitly selected absent destination; no mounts, extracted-code execution, provider installation or protection bypass. ### Verification available so far Source inspection and existing guide/contract comparison only. In this shell, firmware command variables are unset and Binwalk/Unblob were not found on PATH; existing `prlimit`, Python, C compiler and `7z` are available. This is not a runtime timeout reproduction or real-provider qualification. NOT_ENOUGH_INFO: natural slow-firmware frequency, large/vendor-image performance and current real-engine coverage. Proposed checks are not completed results. ### Verification details proposed Fail-before/pass-after owner/service guards; controlled real owned-command deadlines and delayed consumption; distinct analysis/publication phase recovery; queued non-default settings; opaque cancellation, late completion, failed cleanup and retry with one output copy. Validate SDK-converted schemas and exact CLI/MCP controls, default/invalid/max settings, immutable inputs and retained Evidence. Use the existing generated gzip/USTAR/ELF independent oracle and actual supplied tools where available; simulated producers do not establish real engine behavior. Exercise actual Codex CLI corrected success and honest missing-provider/fixed-limit blockers. Record whole-session tokens, elapsed, CPU and sampled family RSS, with cold/warm and unmeasured costs explicit; bound concurrency and memory.
Author
Owner

@gensokyo-dev commented on GitHub (Oct 21, 2026):

Executed recovery verification — PR #5863

Final tested head: 272f9fb15910deb656f4c8786f61f2ba3d0c08c9, based on latest main when work began (f801b2fb). Runtime files are unchanged from 320a4a436; subsequent changes migrate native/managed/pwntools consumer assertions and verify capture ownership, including matching text from separate owners. Concurrent main changes have been checked for touched-path overlap; no overlap was observed at the last fetch. Follow-up to RepoPrompt comparison #5598 / timeout tracker #5808.

Regression and public contracts

  • Initial fail-before: 12 failed / 10 passed. Launcher-admission counterexamples: 4 failed / 5 passed before repair. Failed final CLI close: 1 failed / 15 passed before shared output ownership repair. Interruption during command cleanup: 3 failed / 18 passed before the final repair.
  • Exact final-head expanded lane: 535 passed, 4 platform skips, 39 files, 151.06s Vitest duration. Includes firmware, SQLite, domain/error conformance, native/managed/pwntools/PCAP/WABT consumers and CLI finalization. Dedicated capture/cleanup consumer audit: 189 passed / 1 skip across 13 files, 67.84s; targeted phase/shared-error lane: 106 passed. Typecheck/lint (62.76s), docs checks + 5 consistency tests, architecture guards (1699 source files) and test discovery (1902 files) passed. Source CI exposed two old duplicate-output assertions (local before 2 failures / 11 passes, after all 13 passed); a later built shard exposed two more pwntools assertions, now migrated and included in the complete audit. These PR-owned test-contract mismatches were fixed, not waived.

The audit distinguishes the canonical primary capture from pwntools' existing cleanup-owner snapshot used by failed-close receipts. An exploratory one-total-text-copy assertion was too strong for that existing provider representation: the corrected oracle preserves both owner scopes, requires no third generic-primary-history copy, and pins preservation even when different owners' text matches. No pwntools runtime change or text-based evidence deduplication was introduced. Further consolidation of that provider-specific snapshot lifetime would require explicit ownership/reference semantics and is not claimed here.

  • Actual isolated Binwalk 3.1.0 / Unblob 26.6.4, Linux x64, existing util-linux prlimit/default sandbox. No target/extracted-code execution or product-driven installs. Existing public CLI/MCP verifier passed on baseline and initial implementation: independent Python USTAR/gzip/compiled-ELF oracle, ranges, unknown chunks, depth and immutable inputs.
  • Nine additional CLI/MCP pairs cover defaults, selected/max timer, inspection/extraction 1ms timeouts, publication-only timeout and fixed oversized refusal. SDK-converted AJV 2020 input/output schemas and bounds, successful result facts/budgets, omission versus explicit parameters, original digest and exact retained Evidence readback checked. A full paired run passed on c93e6f6b; final 320a4a436 run had 17/18 expected endpoint outcomes, with selected-budget MCP inspection blocked by the independently reproduced baseline report-missing issue #5876. All actual timer/refusal outcomes matched. This is not an all-green real-provider claim.

Actual Codex CLI behavior

Model: installed Codex 0.161.0, gpt-6.1-sol; ephemeral/read-only agent, only the two REA firmware tools enabled, sequential calls. Prompts prescribe the first failing request and exact analyst question, but no recovery procedure. Extraction writes only to expressly authorized absent destinations. Final facts/digests are checked independently against the generated oracle.

Scenario Observed outcome
Inspection 1ms timeout Five sessions adjusted analysis_timeout_ms to 120000 and returned correct gzip offset/length, including the exact final head
Extraction 1ms timeout Three sessions adjusted analysis budget, used an authorized absent destination, returned both requested verified files and preserved unknown coverage
Invalid 0ms budget Corrected to legal/default budget; correct observed result
Publication 1ms timeout Adjusted publication_timeout_ms, not analysis time; verified extraction with remaining gaps
Missing Binwalk / Unblob, absent executable, absent prlimit, wrong provider/version Five genuine capability blockers accurately explained; no installation/configuration changes or arbitrary analyzer substitution
Fixed 128-MiB-plus-one-byte source Correctly refused replacement/cropping/limit changes and reported the fixed input boundary

18 qualification sessions: 16 reached REA, 10 corrected successes + 6 correct blockers. Two pre-dispatch model reports of unavailable tools made zero calls and are not product passes; their cause is unestablished. No unchanged failed agent retries, shell commands, unexpected tools or surviving sampled process identities in completed sessions.

Whole-session cost / resource evidence

Counts include schemas/context, MCP startup, retries and final answers. Fresh processes, uncontrolled filesystem/model caches; these are not isolated REA token costs, cold-cache measurements or speedup claims. CPU is local process-family CPU reported by /usr/bin/time; peak RSS is a 500ms sampled family estimate, tracked by PID/start identity, not a hard maximum.

Completed sessions Input / cached-input / output tokens Wall / local CPU Max sampled family RSS
18 qualification attempts 1,829,661 / 1,504,640 / 10,250 548.48s / 171.32s 1261.93 MiB
4 initial MCP-env harness mistakes 335,063 / 275,456 / 1,738 106.98s / 30.41s 1101.54 MiB
All 22 completed measured sessions 2,164,724 / 1,780,096 / 11,988 655.47s / 201.73s 1261.93 MiB

The four harness mistakes omitted explicit provider environment forwarding and are excluded only from qualification, not measured cost. One additional interrupted harness session has incomplete usage/timing; its partial artifacts are retained. Build/tool-setup/full-CI costs, cloud inference CPU and naturally slow/vendor-image performance are unmeasured. Tests/builds requested a 2-GiB Node heap and serial task scheduling; Codex harnesses requested 1 GiB, cases were serial and Binwalk built with one job. Earlier Codex-filtered MCP heap-variable inheritance was not independently verified, so no hard child-heap claim is made; the harness now forwards that variable explicitly for subsequent checks. No observed OOM.

Controlled real-command wall-time experiment (121-second wrapper delay before executing the actual pinned tool, not naturally slow firmware): baseline failed its fixed 120000ms budget (121.95s wall, 4.02s CPU, 353.20 MiB sampled family). Selecting 135000ms on the implementation succeeded with oracle-matching facts (122.97s, 4.20s, 352.62 MiB), repeated after admission repair (124.68s, 5.11s, 347.38 MiB). A later c93e6f6b attempt passed the old wall cap but ended in the baseline report-missing failure (124.71s, 6.83s, 353.61 MiB); it is not counted as successful extraction/inspection or a fixed upstream failure. All sampled families ended. Fixed per-process 120 CPU seconds / memory / byte limits were not raised or newly qualified by this idle-time experiment.

Review scope and remaining gaps

Fixed launcher signal identity, repeated CLI-close output duplication at the common projection owner (also reused by SQLite), and interruption during awaited command cleanup while preserving earlier failure precedence. Clarified existing inspection cleanup scope rather than inventing an inapplicable publication control; non-default committed partial settings are tested. Reviewer threads include root cause, structural fix, executed checks and limits.

Pre-existing, separately recorded: #5876 (missing real Binwalk report, reproduced 2/12 on baseline before verified non-signaling cleanup; root cause unknown), #5845 (WABT .exactOptional requiredness-test false positive, already reproduced before SQLite/firmware; concurrent main corrected the assertion). Separately recorded #5889: an unchanged process-success progress test failed a two-frame upper bound in CI, then passed on the same PR head without code changes; baseline 7/7 passed, so no exact baseline runtime reproduction is claimed. Fail-fast-cancelled shards were rerun, not silently accepted as passes. Staging refusal classification #5846, other provider rows in #5808, provider-specific cleanup snapshot consolidation, native resource-limit attribution, large/vendor firmware and non-Linux real-provider coverage are not solved here. No unrelated runtime failures were patched or safety/report validation relaxed.

<!-- gh-comment-id:6313469058 --> @gensokyo-dev commented on GitHub (Oct 21, 2026): ## Executed recovery verification — PR #5863 Final tested head: `272f9fb15910deb656f4c8786f61f2ba3d0c08c9`, based on latest main when work began (`f801b2fb`). Runtime files are unchanged from `320a4a436`; subsequent changes migrate native/managed/pwntools consumer assertions and verify capture ownership, including matching text from separate owners. Concurrent main changes have been checked for touched-path overlap; no overlap was observed at the last fetch. Follow-up to RepoPrompt comparison #5598 / timeout tracker #5808. ### Regression and public contracts - Initial fail-before: **12 failed / 10 passed**. Launcher-admission counterexamples: **4 failed / 5 passed** before repair. Failed final CLI close: **1 failed / 15 passed** before shared output ownership repair. Interruption during command cleanup: **3 failed / 18 passed** before the final repair. - Exact final-head expanded lane: **535 passed, 4 platform skips, 39 files, 151.06s Vitest duration**. Includes firmware, SQLite, domain/error conformance, native/managed/pwntools/PCAP/WABT consumers and CLI finalization. Dedicated capture/cleanup consumer audit: **189 passed / 1 skip across 13 files**, 67.84s; targeted phase/shared-error lane: 106 passed. Typecheck/lint (62.76s), docs checks + 5 consistency tests, architecture guards (1699 source files) and test discovery (1902 files) passed. Source CI exposed two old duplicate-output assertions (local before 2 failures / 11 passes, after all 13 passed); a later built shard exposed two more pwntools assertions, now migrated and included in the complete audit. These PR-owned test-contract mismatches were fixed, not waived. The audit distinguishes the canonical primary capture from pwntools' existing cleanup-owner snapshot used by failed-close receipts. An exploratory one-total-text-copy assertion was too strong for that existing provider representation: the corrected oracle preserves both owner scopes, requires no third generic-primary-history copy, and pins preservation even when different owners' text matches. No pwntools runtime change or text-based evidence deduplication was introduced. Further consolidation of that provider-specific snapshot lifetime would require explicit ownership/reference semantics and is not claimed here. - Actual isolated **Binwalk 3.1.0 / Unblob 26.6.4**, Linux x64, existing util-linux prlimit/default sandbox. No target/extracted-code execution or product-driven installs. Existing public CLI/MCP verifier passed on baseline and initial implementation: independent Python USTAR/gzip/compiled-ELF oracle, ranges, unknown chunks, depth and immutable inputs. - Nine additional CLI/MCP pairs cover defaults, selected/max timer, inspection/extraction 1ms timeouts, publication-only timeout and fixed oversized refusal. SDK-converted AJV 2020 input/output schemas and bounds, successful result facts/budgets, omission versus explicit parameters, original digest and exact retained Evidence readback checked. A full paired run passed on `c93e6f6b`; final `320a4a436` run had **17/18 expected endpoint outcomes**, with selected-budget MCP inspection blocked by the independently reproduced baseline report-missing issue #5876. All actual timer/refusal outcomes matched. This is not an all-green real-provider claim. ### Actual Codex CLI behavior Model: installed Codex 0.161.0, `gpt-6.1-sol`; ephemeral/read-only agent, only the two REA firmware tools enabled, sequential calls. Prompts prescribe the first failing request and exact analyst question, but **no recovery procedure**. Extraction writes only to expressly authorized absent destinations. Final facts/digests are checked independently against the generated oracle. | Scenario | Observed outcome | | --- | --- | | Inspection 1ms timeout | Five sessions adjusted `analysis_timeout_ms` to 120000 and returned correct gzip offset/length, including the exact final head | | Extraction 1ms timeout | Three sessions adjusted analysis budget, used an authorized absent destination, returned both requested verified files and preserved unknown coverage | | Invalid 0ms budget | Corrected to legal/default budget; correct observed result | | Publication 1ms timeout | Adjusted `publication_timeout_ms`, not analysis time; verified extraction with remaining gaps | | Missing Binwalk / Unblob, absent executable, absent prlimit, wrong provider/version | Five genuine capability blockers accurately explained; no installation/configuration changes or arbitrary analyzer substitution | | Fixed 128-MiB-plus-one-byte source | Correctly refused replacement/cropping/limit changes and reported the fixed input boundary | **18 qualification sessions: 16 reached REA, 10 corrected successes + 6 correct blockers.** Two pre-dispatch model reports of unavailable tools made zero calls and are not product passes; their cause is unestablished. No unchanged failed agent retries, shell commands, unexpected tools or surviving sampled process identities in completed sessions. ### Whole-session cost / resource evidence Counts include schemas/context, MCP startup, retries and final answers. Fresh processes, **uncontrolled filesystem/model caches**; these are not isolated REA token costs, cold-cache measurements or speedup claims. CPU is local process-family CPU reported by `/usr/bin/time`; peak RSS is a **500ms sampled family estimate**, tracked by PID/start identity, not a hard maximum. | Completed sessions | Input / cached-input / output tokens | Wall / local CPU | Max sampled family RSS | | --- | --- | --- | --- | | 18 qualification attempts | 1,829,661 / 1,504,640 / 10,250 | 548.48s / 171.32s | 1261.93 MiB | | 4 initial MCP-env harness mistakes | 335,063 / 275,456 / 1,738 | 106.98s / 30.41s | 1101.54 MiB | | All 22 completed measured sessions | 2,164,724 / 1,780,096 / 11,988 | 655.47s / 201.73s | 1261.93 MiB | The four harness mistakes omitted explicit provider environment forwarding and are excluded only from qualification, not measured cost. One additional interrupted harness session has incomplete usage/timing; its partial artifacts are retained. Build/tool-setup/full-CI costs, cloud inference CPU and naturally slow/vendor-image performance are unmeasured. Tests/builds requested a 2-GiB Node heap and serial task scheduling; Codex harnesses requested 1 GiB, cases were serial and Binwalk built with one job. Earlier Codex-filtered MCP heap-variable inheritance was not independently verified, so no hard child-heap claim is made; the harness now forwards that variable explicitly for subsequent checks. No observed OOM. Controlled real-command wall-time experiment (121-second wrapper delay before executing the actual pinned tool, **not naturally slow firmware**): baseline failed its fixed 120000ms budget (121.95s wall, 4.02s CPU, 353.20 MiB sampled family). Selecting 135000ms on the implementation succeeded with oracle-matching facts (122.97s, 4.20s, 352.62 MiB), repeated after admission repair (124.68s, 5.11s, 347.38 MiB). A later `c93e6f6b` attempt passed the old wall cap but ended in the baseline report-missing failure (124.71s, 6.83s, 353.61 MiB); it is not counted as successful extraction/inspection or a fixed upstream failure. All sampled families ended. Fixed per-process 120 CPU seconds / memory / byte limits were not raised or newly qualified by this idle-time experiment. ### Review scope and remaining gaps Fixed launcher signal identity, repeated CLI-close output duplication at the common projection owner (also reused by SQLite), and interruption during awaited command cleanup while preserving earlier failure precedence. Clarified existing inspection cleanup scope rather than inventing an inapplicable publication control; non-default committed partial settings are tested. Reviewer threads include root cause, structural fix, executed checks and limits. Pre-existing, separately recorded: #5876 (missing real Binwalk report, reproduced 2/12 on baseline before verified non-signaling cleanup; root cause unknown), #5845 (WABT `.exactOptional` requiredness-test false positive, already reproduced before SQLite/firmware; concurrent main corrected the assertion). Separately recorded #5889: an unchanged process-success progress test failed a two-frame upper bound in CI, then passed on the same PR head without code changes; baseline 7/7 passed, so no exact baseline runtime reproduction is claimed. Fail-fast-cancelled shards were rerun, not silently accepted as passes. Staging refusal classification #5846, other provider rows in #5808, provider-specific cleanup snapshot consolidation, native resource-limit attribution, large/vendor firmware and non-Linux real-provider coverage are not solved here. No unrelated runtime failures were patched or safety/report validation relaxed.
Author
Owner

@gensokyo-dev commented on GitHub (Oct 21, 2026):

Merged and verified against the actual merge

Merged as aa53c065387c58b4189d82c47f1f3445fc505e30. All 23 PR files match reviewed head 272f9fb15910deb656f4c8786f61f2ba3d0c08c9 byte-for-byte. Merge attribution: no Co-authored-by, one canonical Kogasa Assisted-by for the counterexample/regression workflow. Fresh detached merged checkout: pinned Node 24.18.0/npm 11.16.0, npm ci and npm run build:cached passed (build 39.403s).

Executed post-merge checks:

  • Nine synthetic-fixture CLI/MCP pairs passed: omitted/selected/maximum analysis budget, analysis timeouts for inspection/extraction, extraction publication timeout and fixed input-size rejection. SDK-converted schemas were checked with AJV 2020, retained Evidence compared exactly, and extracted files/signature facts checked against an independently generated gzip/USTAR/ELF oracle. Source bytes were unchanged.
  • Three additional real-image CLI/MCP pairs passed: default 120000ms and selected 60000ms returned matching candidate facts; 1ms returned actionable provider_timeout on both adapters. Fixture: official OpenWrt 24.10.0 Archer C7 v2 sysupgrade image, 6,947,141 bytes, SHA-256 a1dedf75082aa0d35910c839faf9a9f7ab3b8dad11b91d3f94d766f169d91f2b, matching the official listing. Release signature was not verified. Static inspection only; no extraction, mounting, flashing or target execution.
  • Actual Codex CLI (gpt-6.1-sol) on that merged runtime/image made the requested 1ms MCP call, read its timeout remediation, then selected 120000ms and succeeded. The prompt supplied no recovery procedure. It preserved the input/question and reported the two candidates accurately: lzma offset 512 / reported size 2,613,741; squashfs offset 2,614,256 / reported size 4,293,768. A separate verifier matched the final answer's facts, digest and Evidence ID to the actual returned Evidence and checked its explicit unvalidated-partition/length limitation. No shell calls, unchanged failed retries or surviving sampled process identities.

The official-image check establishes source-hash provenance and cross-adapter consistency of provider-reported candidates, not independent partition/size validity. The synthetic oracle supplies a different, explicitly narrower correctness check.

Post-merge costs: the official-image three-pair batch took 35.66s wall / 50.77s local process-family CPU / 1269.89MiB sampled peak family RSS. The added complete Codex session took 37.16s / 16.38s / 1186.69MiB, using 143,531 input tokens (120,704 cached) and 838 output tokens. MCP heap configuration was explicitly forwarded; native worker/resource policy was unchanged. RSS sampled every 500ms is an estimate, not a hard memory maximum.

Including this additional agent case, 19 qualification attempts comprise 11 corrected successes, 6 correctly explained blockers (including missing/misconfigured providers, missing limiter and fixed capacity), and 2 zero-call unavailable-tool reports that are not product passes. Four initial harness-environment mistakes remain excluded only from qualification: all 23 completed measured sessions cost 2,308,255 input tokens (1,900,800 cached), 12,826 output tokens, 692.62s wall / 218.11s local CPU, maximum sampled family RSS 1261.93MiB. One interrupted harness session has incomplete measurements and remains separately disclosed. These are whole-session costs including startup, catalogs/context, retries and final answers; caches were uncontrolled, so no cold-cache or speedup claim. Cloud inference and full CI/setup resource costs were not measured.

The earlier 535-pass / 4-platform-skip affected suite, successful final technical CI and automated-review disposition remain recorded above. Only the human-review declaration gate used the user's explicit admin-merge authorization; no human review was falsely attested and no technical check was bypassed. Known report-missing intermittency #5876 and progress-check intermittency #5889 remain open and are not claimed fixed; neither recurred in this post-merge batch. Remaining provider timeout/limit work stays tracked in #5808.

<!-- gh-comment-id:6314954956 --> @gensokyo-dev commented on GitHub (Oct 21, 2026): ## Merged and verified against the actual merge Merged as `aa53c065387c58b4189d82c47f1f3445fc505e30`. All 23 PR files match reviewed head `272f9fb15910deb656f4c8786f61f2ba3d0c08c9` byte-for-byte. Merge attribution: no `Co-authored-by`, one canonical Kogasa `Assisted-by` for the counterexample/regression workflow. Fresh detached merged checkout: pinned Node 24.18.0/npm 11.16.0, `npm ci` and `npm run build:cached` passed (build 39.403s). Executed post-merge checks: - **Nine synthetic-fixture CLI/MCP pairs passed**: omitted/selected/maximum analysis budget, analysis timeouts for inspection/extraction, extraction publication timeout and fixed input-size rejection. SDK-converted schemas were checked with AJV 2020, retained Evidence compared exactly, and extracted files/signature facts checked against an independently generated gzip/USTAR/ELF oracle. Source bytes were unchanged. - **Three additional real-image CLI/MCP pairs passed**: default 120000ms and selected 60000ms returned matching candidate facts; 1ms returned actionable `provider_timeout` on both adapters. Fixture: [official OpenWrt 24.10.0 Archer C7 v2 sysupgrade image](https://downloads.openwrt.org/releases/24.10.0/targets/ath79/generic/openwrt-24.10.0-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin), 6,947,141 bytes, SHA-256 `a1dedf75082aa0d35910c839faf9a9f7ab3b8dad11b91d3f94d766f169d91f2b`, matching the [official listing](https://downloads.openwrt.org/releases/24.10.0/targets/ath79/generic/). Release signature was **not** verified. Static inspection only; no extraction, mounting, flashing or target execution. - **Actual Codex CLI (`gpt-6.1-sol`) on that merged runtime/image** made the requested 1ms MCP call, read its timeout remediation, then selected 120000ms and succeeded. The prompt supplied no recovery procedure. It preserved the input/question and reported the two candidates accurately: `lzma` offset 512 / reported size 2,613,741; `squashfs` offset 2,614,256 / reported size 4,293,768. A separate verifier matched the final answer's facts, digest and Evidence ID to the actual returned Evidence and checked its explicit unvalidated-partition/length limitation. No shell calls, unchanged failed retries or surviving sampled process identities. The official-image check establishes source-hash provenance and cross-adapter consistency of provider-reported candidates, **not** independent partition/size validity. The synthetic oracle supplies a different, explicitly narrower correctness check. Post-merge costs: the official-image three-pair batch took 35.66s wall / 50.77s local process-family CPU / 1269.89MiB sampled peak family RSS. The added complete Codex session took 37.16s / 16.38s / 1186.69MiB, using 143,531 input tokens (120,704 cached) and 838 output tokens. MCP heap configuration was explicitly forwarded; native worker/resource policy was unchanged. RSS sampled every 500ms is an estimate, not a hard memory maximum. Including this additional agent case, **19 qualification attempts** comprise 11 corrected successes, 6 correctly explained blockers (including missing/misconfigured providers, missing limiter and fixed capacity), and 2 zero-call unavailable-tool reports that are **not product passes**. Four initial harness-environment mistakes remain excluded only from qualification: all **23 completed measured sessions** cost 2,308,255 input tokens (1,900,800 cached), 12,826 output tokens, 692.62s wall / 218.11s local CPU, maximum sampled family RSS 1261.93MiB. One interrupted harness session has incomplete measurements and remains separately disclosed. These are whole-session costs including startup, catalogs/context, retries and final answers; caches were uncontrolled, so no cold-cache or speedup claim. Cloud inference and full CI/setup resource costs were not measured. The earlier 535-pass / 4-platform-skip affected suite, [successful final technical CI](https://github.com/morluto/rea/actions/runs/39590022091) and automated-review disposition remain recorded above. Only the human-review declaration gate used the user's explicit admin-merge authorization; no human review was falsely attested and no technical check was bypassed. Known report-missing intermittency #5876 and progress-check intermittency #5889 remain open and are **not** claimed fixed; neither recurred in this post-merge batch. Remaining provider timeout/limit work stays tracked in #5808.
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#3547
No description provided.