[PR #5768] [MERGED] fix(wasm): retain actionable provider configuration diagnostics #7048

Closed
opened 2026-11-01 21:44:58 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/5768
Author: @gensokyo-dev
Created: 10/21/2026
Status: ✅ Merged
Merged: 10/21/2026
Merged by: @gensokyo-dev

Base: main ← Head: fix/5767-wabt-configuration-recovery


📝 Commits (2)

  • e9416a6 fix(wasm): retain actionable provider configuration diagnostics
  • 30cdef6 fix(wasm): attribute failed version probes before dispatch

📊 Changes

6 files changed (+231 additions, -18 deletions)

View changed files

📝 docs/wasm-artifacts.md (+11 -0)
📝 src/wasm/WabtArtifactProvider.test.ts (+70 -1)
📝 src/wasm/WabtArtifactProvider.ts (+39 -9)
📝 src/wasm/WabtFailures.test.ts (+68 -0)
📝 src/wasm/WabtFailures.ts (+41 -7)
📝 src/wasm/WabtRelease.ts (+2 -1)

📄 Description

Fixes #5767.

Problem and expected behavior

WABT configuration admission discarded the actual rejected version output and exact executable, and gave the same generic installation advice for missing paths, wrong directory selection and denied access. Preserve those already-observed facts and give the agent an actionable repair without relaxing admission.

Change and scope

  • Producer-owned typed version failure retains exact stdout/stderr, tool path, expected release and configuration key.
  • Shared configuration recovery distinguishes path/access failures and explains CLI environment versus MCP launch-environment/restart boundaries.
  • One release constant owns provider validation and provenance; no provider installation, target execution, new authority, schema changes or cleanup changes.
  • Updated owning guide and six deterministic regressions (all six failed before the fix).

Contract and boundary impact

  • Semantic owner: existing WABT provider, at configuration admission; CLI/MCP share its typed error projection.
  • Scope decision: not applicable; ordinary diagnostic fix inside existing authority.
  • Compatibility: existing error classes/codes, supported WABT 1.0.42 profile, target inputs and successful Evidence remain unchanged. New diagnostic fields are additive.
  • Provenance/cleanup: rejected probe output is attributed to its exact executable; existing retained cleanup and bounded error transport remain in use.
  • Generated/package impact: none; no binaries, credentials, artifacts or ignored catalogs committed.

Evidence and regression coverage

  • npm run test:focused -- src/wasm/WabtArtifactProvider.test.ts src/wasm/WabtFailures.test.ts src/wasm/WabtRuntime.test.ts tests/boundary/mcp/wasmArtifactMcp.test.ts — 54 passed, including nonzero version exits, cancellation/deadline/cleanup classification, retention and SDK contracts.
  • node scripts/verify-wasm-artifact.mjs --require-tools with actual upstream WABT 1.0.42 — 51 real CLI/MCP cases passed, owned descendants empty at completion.
  • npm run check and npm run docs:check — passed (docs includes five readme consistency tests).
  • Two independent Codex CLI source reviews (initial and follow-up) — no actionable findings. The actionable automated-review nonzero-exit finding was fixed in 30cdef683: the probe descriptor now exists before dispatch and flows through existing failure classification, rather than only being created after successful execution.
  • Actual upstream 1.0.41 vs 1.0.42, missing/relative/file-as-directory/denied paths, pwntools dependency, Ghidra Java root, IDA registration and unknown provider were probed through public MCP. Baseline Codex fixed three isolated caller-owned tool selections/permissions and then completed actual validation in the same MCP session.
  • 26 real sequential Codex sessions / 43 MCP calls, including three permitted-repair tasks before and after: each repaired only an owned tool copy/selection and completed actual validation in the same MCP session. Read-only WABT cases now explain the launch-environment/restart boundary; the old-version answer identifies observed 1.0.41. Final-head nonzero-exit and version-repeat tasks also passed. CLI/MCP version-error diagnostics match exactly.
  • Whole-session measurements: input 2,789,282 tokens (2,359,680 cached), output 14,289; elapsed sum 724.01s, child-family CPU 235.33s, maximum 500ms sampled family RSS 1,188.49 MiB. Warm/uncontrolled caches and shared host; not a causal efficiency/general success-rate claim. Preparation/build/check/review costs excluded. No observed OOM or remaining owned processes.
  • Scope limits: IDA baseline genuinely lacked its setting name and remains a separate follow-up; Frida device listing did not probe connectivity and is not a failure-recovery pass. A subsequent remote process-list call did reach the real Frida connection error. No real native-engine analysis qualification.

Compatibility, safety, and release

No breaking changes. Caller-supplied WABT executables are trusted tools, not targets; no WASM execution or implicit software installation. Test repairs affect only disposable owned copies/symlinks. Real Ghidra/IDA analysis is not qualified by these negative/preflight tests.

Author readiness

Human owner: @gensokyo-dev

The user explicitly directed this work to be ready for review and authorized continuation/merge. The declarations below do not claim a separate human final-diff review occurred.

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/5768 **Author:** [@gensokyo-dev](https://github.com/gensokyo-dev) **Created:** 10/21/2026 **Status:** ✅ Merged **Merged:** 10/21/2026 **Merged by:** [@gensokyo-dev](https://github.com/gensokyo-dev) **Base:** `main` ← **Head:** `fix/5767-wabt-configuration-recovery` --- ### 📝 Commits (2) - [`e9416a6`](https://github.com/morluto/rea/commit/e9416a6aab3274f7fcdcbab6f49094178bf2fc7d) fix(wasm): retain actionable provider configuration diagnostics - [`30cdef6`](https://github.com/morluto/rea/commit/30cdef68357e08dbd6a810ede72ffaef2cbe0f0f) fix(wasm): attribute failed version probes before dispatch ### 📊 Changes **6 files changed** (+231 additions, -18 deletions) <details> <summary>View changed files</summary> 📝 `docs/wasm-artifacts.md` (+11 -0) 📝 `src/wasm/WabtArtifactProvider.test.ts` (+70 -1) 📝 `src/wasm/WabtArtifactProvider.ts` (+39 -9) 📝 `src/wasm/WabtFailures.test.ts` (+68 -0) 📝 `src/wasm/WabtFailures.ts` (+41 -7) 📝 `src/wasm/WabtRelease.ts` (+2 -1) </details> ### 📄 Description Fixes #5767. ## Problem and expected behavior WABT configuration admission discarded the actual rejected version output and exact executable, and gave the same generic installation advice for missing paths, wrong directory selection and denied access. Preserve those already-observed facts and give the agent an actionable repair without relaxing admission. ## Change and scope - Producer-owned typed version failure retains exact stdout/stderr, tool path, expected release and configuration key. - Shared configuration recovery distinguishes path/access failures and explains CLI environment versus MCP launch-environment/restart boundaries. - One release constant owns provider validation and provenance; no provider installation, target execution, new authority, schema changes or cleanup changes. - Updated owning guide and six deterministic regressions (all six failed before the fix). ## Contract and boundary impact - Semantic owner: existing WABT provider, at configuration admission; CLI/MCP share its typed error projection. - Scope decision: not applicable; ordinary diagnostic fix inside existing authority. - Compatibility: existing error classes/codes, supported WABT 1.0.42 profile, target inputs and successful Evidence remain unchanged. New diagnostic fields are additive. - Provenance/cleanup: rejected probe output is attributed to its exact executable; existing retained cleanup and bounded error transport remain in use. - Generated/package impact: none; no binaries, credentials, artifacts or ignored catalogs committed. ## Evidence and regression coverage - `npm run test:focused -- src/wasm/WabtArtifactProvider.test.ts src/wasm/WabtFailures.test.ts src/wasm/WabtRuntime.test.ts tests/boundary/mcp/wasmArtifactMcp.test.ts` — **54 passed**, including nonzero version exits, cancellation/deadline/cleanup classification, retention and SDK contracts. - `node scripts/verify-wasm-artifact.mjs --require-tools` with actual upstream WABT 1.0.42 — **51 real CLI/MCP cases passed**, owned descendants empty at completion. - `npm run check` and `npm run docs:check` — passed (docs includes five readme consistency tests). - Two independent Codex CLI source reviews (initial and follow-up) — no actionable findings. The actionable automated-review nonzero-exit finding was fixed in `30cdef683`: the probe descriptor now exists before dispatch and flows through existing failure classification, rather than only being created after successful execution. - Actual upstream 1.0.41 vs 1.0.42, missing/relative/file-as-directory/denied paths, pwntools dependency, Ghidra Java root, IDA registration and unknown provider were probed through public MCP. Baseline Codex fixed three isolated caller-owned tool selections/permissions and then completed actual validation in the same MCP session. - **26 real sequential Codex sessions / 43 MCP calls**, including three permitted-repair tasks before and after: each repaired only an owned tool copy/selection and completed actual validation in the same MCP session. Read-only WABT cases now explain the launch-environment/restart boundary; the old-version answer identifies observed 1.0.41. Final-head nonzero-exit and version-repeat tasks also passed. CLI/MCP version-error diagnostics match exactly. - Whole-session measurements: input 2,789,282 tokens (2,359,680 cached), output 14,289; elapsed sum 724.01s, child-family CPU 235.33s, maximum 500ms sampled family RSS 1,188.49 MiB. Warm/uncontrolled caches and shared host; not a causal efficiency/general success-rate claim. Preparation/build/check/review costs excluded. No observed OOM or remaining owned processes. - Scope limits: IDA baseline genuinely lacked its setting name and remains a separate follow-up; Frida device listing did not probe connectivity and is not a failure-recovery pass. A subsequent remote process-list call did reach the real Frida connection error. No real native-engine analysis qualification. ## Compatibility, safety, and release No breaking changes. Caller-supplied WABT executables are trusted tools, not targets; no WASM execution or implicit software installation. Test repairs affect only disposable owned copies/symlinks. Real Ghidra/IDA analysis is not qualified by these negative/preflight tests. ## Author readiness Human owner: @gensokyo-dev The user explicitly directed this work to be ready for review and authorized continuation/merge. The declarations below do not claim a separate human final-diff review occurred. - [ ] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [ ] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:44:58 +00:00
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#7048
No description provided.