[PR #6911] [CLOSED] fix(firmware): retain standalone Unblob task failures #7443

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/6911
Author: @Plastic-time
Created: 10/23/2026
Status: ❌ Closed

Base: main ← Head: codex/rea-unblob-task-errors-20261023


📝 Commits (1)

  • 592137d fix(firmware): retain standalone Unblob task failures

📊 Changes

2 files changed (+166 additions, -1 deletions)

View changed files

📝 src/firmware/FirmwareReports.ts (+8 -1)
➕ tests/boundary/firmware/firmwareTaskFailure.test.ts (+158 -0)

📄 Description

Summary

Fixes #6895. A standalone Unblob UnknownError was retained in diagnostics with partial coverage but omitted from extraction_gaps. Recognize the pinned producer's task-exception report so publication emits one extractor-failure row and its recovery continuation per affected task.

Change and scope

Validate UnknownError, severity: "ERROR", and the serialized exception at the existing report-normalization boundary. Reuse its task-level failure deduplication and the existing publication projector. Keep diagnostics intact and stage identity/byte ranges unknown; warnings, malformed exception records and unfamiliar report types remain diagnostics without invented failure ownership. Existing standalone execution-error and missing-dependency handling is preserved.

Ordinary correction within the existing firmware capability; advance maintainer scope approval is not applicable. The pinned producer report model was inspected. No downstream reinterpretation, new execution authority, schema, dependency, installation or generated-metadata changes are needed.

Evidence and regression coverage

On base a91412aaf992929595e005e1cf7b8cbc0c322002, the new publication-boundary regression had 2 failures and 5 passes: single and repeated task exceptions produced zero recovery rows instead of one. With the fix, all seven cases pass.

Tests pass synthetic reports through the real normalizer and filesystem publication path. They check retained diagnostics, partial/complete coverage, deduplication, dependency recovery, null handler/provider/ranges, linked recovery instructions, and zero published bytes. Temporary input and output fixtures are cleaned up. Other cases cover clean tasks, warnings, malformed exceptions, and unknown report types.

Validation performed

Windows x64, Node 24.22.1 / npm 11.16.0:

  • npm run test:focused -- tests/boundary/firmware/firmwareTaskFailure.test.ts src/firmware/FirmwareReports.test.ts tests/boundary/firmware/firmwareReportFiles.test.ts tests/boundary/cli/firmwareIncompleteRange.test.ts tests/boundary/mcp/firmwareMcp.test.ts — 40 passed, 1 skipped. The MCP fixture requires Linux and was skipped on Windows. Required runtime build passed.
  • npm run check — passed: typecheck, lint (0 errors; existing repository warnings reported), formatting, knip, metadata, module boundaries and architecture guards.
  • npm run verify:test-discovery — all 2,185 test files assigned exactly once.
  • npm run verify:windows-native:artifact — passed for the matching published 6.7.0 artifact restored locally; no binary is committed.
  • npx --no-install lint-staged, npm run check:fast, and git diff --check — passed. Git hook launch failed on the isolated Node shim in Git's shell; the identical checks were executed successfully in PowerShell before committing/pushing with the hook launcher disabled.

Compatibility and verification limits

No breaking change. The existing workflow's process supervision, output publication and cleanup remain unchanged. No real Unblob exception, provider-backed firmware extraction, Linux/macOS run, or end-to-end CLI/MCP task-failure request was executed. The CLI regression checks existing argument validation, not this failure projection. The full suite and optional check:pr gate were not run. No security or performance improvement is claimed.

Prepared with AI assistance.

CI follow-up (2026-10-23)

The CI run failed with 11 source-test failures and three failures in boundary shard 5; sibling boundary shards were cancelled. These are not a full-suite pass.

A same-environment comparison on Windows, Node 24.22.1 and the same locked dependencies reproduced 14 failures / 179 passes on both PR head 592137df and its exact, unmodified upstream parent a91412aa. All 14 failing test names match. Each checkout used its own build.

Executed on both revisions:

npm run test:focused -- src/application/frida/FridaInstrumentationService.test.ts src/domain/javascript/javascriptStaticAnalysis.mapEndpoints.test.ts src/domain/javascript/javascriptStaticAnalysisReturnedInvocation.test.ts src/server/BundleResourcesMcp.test.ts tests/boundary/cli/browserCli.test.ts tests/acceptance/applications/javascriptEndpointCandidateCli.test.ts tests/boundary/filesystem/javascript-applications/javascriptApplicationService.test.ts

The failures cover Frida cleanup (4), Map endpoint classification (5), returned invocation (1), bundle-resource MCP schema (1), browser redirect comparison (1), endpoint CLI output (1), and lazy JSON dependency facts (1). They reproduce without this firmware change. The previously reported firmware regression coverage and real-provider verification limitations remain unchanged.

Author readiness

Human owner: @Plastic-time

  • 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/6911 **Author:** [@Plastic-time](https://github.com/Plastic-time) **Created:** 10/23/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `codex/rea-unblob-task-errors-20261023` --- ### 📝 Commits (1) - [`592137d`](https://github.com/morluto/rea/commit/592137df574fe565c7eb7e51f96b8e65d2358ee9) fix(firmware): retain standalone Unblob task failures ### 📊 Changes **2 files changed** (+166 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `src/firmware/FirmwareReports.ts` (+8 -1) ➕ `tests/boundary/firmware/firmwareTaskFailure.test.ts` (+158 -0) </details> ### 📄 Description ## Summary Fixes #6895. A standalone Unblob `UnknownError` was retained in diagnostics with partial coverage but omitted from `extraction_gaps`. Recognize the pinned producer's task-exception report so publication emits one `extractor-failure` row and its recovery continuation per affected task. ## Change and scope Validate `UnknownError`, `severity: "ERROR"`, and the serialized exception at the existing report-normalization boundary. Reuse its task-level failure deduplication and the existing publication projector. Keep diagnostics intact and stage identity/byte ranges unknown; warnings, malformed exception records and unfamiliar report types remain diagnostics without invented failure ownership. Existing standalone execution-error and missing-dependency handling is preserved. Ordinary correction within the existing firmware capability; advance maintainer scope approval is not applicable. The [pinned producer report model](https://github.com/onekey-sec/unblob/blob/1fcc7a0a584a70a96c31f5a276c20944d199a089/python/unblob/report.py) was inspected. No downstream reinterpretation, new execution authority, schema, dependency, installation or generated-metadata changes are needed. ## Evidence and regression coverage On base `a91412aaf992929595e005e1cf7b8cbc0c322002`, the new publication-boundary regression had **2 failures and 5 passes**: single and repeated task exceptions produced zero recovery rows instead of one. With the fix, all seven cases pass. Tests pass synthetic reports through the real normalizer and filesystem publication path. They check retained diagnostics, partial/complete coverage, deduplication, dependency recovery, null handler/provider/ranges, linked recovery instructions, and zero published bytes. Temporary input and output fixtures are cleaned up. Other cases cover clean tasks, warnings, malformed exceptions, and unknown report types. ## Validation performed Windows x64, Node 24.22.1 / npm 11.16.0: - `npm run test:focused -- tests/boundary/firmware/firmwareTaskFailure.test.ts src/firmware/FirmwareReports.test.ts tests/boundary/firmware/firmwareReportFiles.test.ts tests/boundary/cli/firmwareIncompleteRange.test.ts tests/boundary/mcp/firmwareMcp.test.ts` — **40 passed, 1 skipped**. The MCP fixture requires Linux and was skipped on Windows. Required runtime build passed. - `npm run check` — passed: typecheck, lint (0 errors; existing repository warnings reported), formatting, knip, metadata, module boundaries and architecture guards. - `npm run verify:test-discovery` — all 2,185 test files assigned exactly once. - `npm run verify:windows-native:artifact` — passed for the matching published 6.7.0 artifact restored locally; no binary is committed. - `npx --no-install lint-staged`, `npm run check:fast`, and `git diff --check` — passed. Git hook launch failed on the isolated Node shim in Git's shell; the identical checks were executed successfully in PowerShell before committing/pushing with the hook launcher disabled. ## Compatibility and verification limits No breaking change. The existing workflow's process supervision, output publication and cleanup remain unchanged. No real Unblob exception, provider-backed firmware extraction, Linux/macOS run, or end-to-end CLI/MCP task-failure request was executed. The CLI regression checks existing argument validation, not this failure projection. The full suite and optional `check:pr` gate were not run. No security or performance improvement is claimed. Prepared with AI assistance. ## CI follow-up (2026-10-23) The [CI run](https://github.com/morluto/rea/actions/runs/40021017520) failed with 11 source-test failures and three failures in boundary shard 5; sibling boundary shards were cancelled. These are not a full-suite pass. A same-environment comparison on Windows, Node 24.22.1 and the same locked dependencies reproduced **14 failures / 179 passes** on both PR head `592137df` and its exact, unmodified upstream parent `a91412aa`. All 14 failing test names match. Each checkout used its own build. Executed on both revisions: ```text npm run test:focused -- src/application/frida/FridaInstrumentationService.test.ts src/domain/javascript/javascriptStaticAnalysis.mapEndpoints.test.ts src/domain/javascript/javascriptStaticAnalysisReturnedInvocation.test.ts src/server/BundleResourcesMcp.test.ts tests/boundary/cli/browserCli.test.ts tests/acceptance/applications/javascriptEndpointCandidateCli.test.ts tests/boundary/filesystem/javascript-applications/javascriptApplicationService.test.ts ``` The failures cover Frida cleanup (4), Map endpoint classification (5), returned invocation (1), bundle-resource MCP schema (1), browser redirect comparison (1), endpoint CLI output (1), and lazy JSON dependency facts (1). They reproduce without this firmware change. The previously reported firmware regression coverage and real-provider verification limitations remain unchanged. ## Author readiness Human owner: @Plastic-time - [x] 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. - [x] 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:47:53 +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#7443
No description provided.