[GH-ISSUE #3570] [Feature] Preserve static file identity when inspect-artifact declines a format #1326

Open
opened 2026-10-16 21:04:17 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @matbrgz on GitHub (Oct 14, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/3570

Type: Feature Domain: Reverse Engineering Status: Proposed Ecosystem: REA

REA 6.4.0, source checkout 183d21210acda588184dd9a0897047523aa644b2, macOS arm64.

inspect-artifact refuses an ordinary valid PNG before returning artifact Evidence. This is a feature proposal for bounded identity observations, rather than a request to treat raster files as native executables.

Minimal original fixture:

from pathlib import Path
import hashlib, struct, zlib
def chunk(kind, payload):
    return struct.pack('>I', len(payload)) + kind + payload + struct.pack('>I', zlib.crc32(kind + payload))
data = (b'\x89PNG\r\n\x1a\n'
        + chunk(b'IHDR', struct.pack('>IIBBBBB', 1, 1, 8, 6, 0, 0, 0))
        + chunk(b'IDAT', zlib.compress(b'\x00\xff\x00\x00\xff'))
        + chunk(b'IEND', b''))
Path('pixel.png').write_bytes(data)
print(len(data), hashlib.sha256(data).hexdigest())

The observed fixture is 70 bytes, SHA-256 4ff6ab670a58c14270e034e2090d9a432caa263a14e0a25785386b0c12f880b5.

rea inspect-artifact pixel.png --format json --full-output

Observed exit code 1; the envelope reports:

{
  "code": "target_unavailable",
  "category": "unsupported_target",
  "retryable": false,
  "constraint": "file_format_rejected"
}

There is no subject digest/Evidence ID in the refusal envelope. Batch callers consequently need an independent identity ledger even when the file is readable and only deeper format interpretation is unavailable.

Proposed scope:

  • Return bounded read-only file identity Evidence (exact input, byte count and SHA-256) when format admission declines further analysis, either as a separate operation or an explicit mode of inspect-artifact.
  • Preserve the unsupported/malformed distinction and its reason; keep architecture, application kind and semantic interpretation unknown.
  • Do not silently accept malformed native inputs for native analysis, execute selected files, or broaden provider authority.
  • Keep current resource limits and add original opaque-resource fixtures alongside existing malformed-native tests.

Related format-specific proposals such as #3323 and #3153 do not cover the generic identity-only case. This proposal requests a maintainer scope decision before implementation.

Originally created by @matbrgz on GitHub (Oct 14, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/3570 [![Type: Feature](https://img.shields.io/badge/type-feature-blue.svg?style=flat-square)](https://github.com/morluto/rea) [![Domain: Reverse Engineering](https://img.shields.io/badge/domain-reverse_engineering-blueviolet.svg?style=flat-square)](https://github.com/morluto/rea) [![Status: Proposed](https://img.shields.io/badge/status-proposed-blue.svg?style=flat-square)](https://github.com/morluto/rea) [![Ecosystem: REA](https://img.shields.io/badge/ecosystem-morluto%2Frea-8A2BE2.svg?style=flat-square)](https://github.com/morluto/rea) REA 6.4.0, source checkout `183d21210acda588184dd9a0897047523aa644b2`, macOS arm64. `inspect-artifact` refuses an ordinary valid PNG before returning artifact Evidence. This is a feature proposal for bounded identity observations, rather than a request to treat raster files as native executables. Minimal original fixture: ```python from pathlib import Path import hashlib, struct, zlib def chunk(kind, payload): return struct.pack('>I', len(payload)) + kind + payload + struct.pack('>I', zlib.crc32(kind + payload)) data = (b'\x89PNG\r\n\x1a\n' + chunk(b'IHDR', struct.pack('>IIBBBBB', 1, 1, 8, 6, 0, 0, 0)) + chunk(b'IDAT', zlib.compress(b'\x00\xff\x00\x00\xff')) + chunk(b'IEND', b'')) Path('pixel.png').write_bytes(data) print(len(data), hashlib.sha256(data).hexdigest()) ``` The observed fixture is 70 bytes, SHA-256 `4ff6ab670a58c14270e034e2090d9a432caa263a14e0a25785386b0c12f880b5`. ```sh rea inspect-artifact pixel.png --format json --full-output ``` Observed exit code 1; the envelope reports: ```json { "code": "target_unavailable", "category": "unsupported_target", "retryable": false, "constraint": "file_format_rejected" } ``` There is no subject digest/Evidence ID in the refusal envelope. Batch callers consequently need an independent identity ledger even when the file is readable and only deeper format interpretation is unavailable. Proposed scope: - Return bounded read-only file identity Evidence (exact input, byte count and SHA-256) when format admission declines further analysis, either as a separate operation or an explicit mode of `inspect-artifact`. - Preserve the unsupported/malformed distinction and its reason; keep architecture, application kind and semantic interpretation unknown. - Do not silently accept malformed native inputs for native analysis, execute selected files, or broaden provider authority. - Keep current resource limits and add original opaque-resource fixtures alongside existing malformed-native tests. Related format-specific proposals such as #3323 and #3153 do not cover the generic identity-only case. This proposal requests a maintainer scope decision before implementation.
Author
Owner

@matbrgz commented on GitHub (Oct 14, 2026):

Update checked on 2026-10-14 with the published rea-agents@6.5.0 in an isolated installation, Node 26.11.1, macOS arm64. The package launcher reports 6.5.0.

I reinspected the original 70-byte PNG, SHA-256 4ff6ab670a58c14270e034e2090d9a432caa263a14e0a25785386b0c12f880b5, with inspect-artifact <fixture> --format json --full-output. The CLI still exits 1, with code: target_unavailable, category: unsupported_target, constraint: file_format_rejected, and retryable: false. This is a confirmed format-scope gap for this fixture; it is not a claim that 6.5.0 regressed or that an unsupported format should be presented as a complete inventory. No target classes were loaded or executed.

The refusal still contains no file digest or Evidence ID. The requested identity-only record remains useful independently of any future PNG interpretation.

<!-- gh-comment-id:6174322237 --> @matbrgz commented on GitHub (Oct 14, 2026): Update checked on 2026-10-14 with the published **rea-agents@6.5.0** in an isolated installation, Node 26.11.1, macOS arm64. The package launcher reports `6.5.0`. I reinspected the original 70-byte PNG, SHA-256 `4ff6ab670a58c14270e034e2090d9a432caa263a14e0a25785386b0c12f880b5`, with `inspect-artifact <fixture> --format json --full-output`. The CLI still exits **1**, with `code: target_unavailable`, `category: unsupported_target`, `constraint: file_format_rejected`, and `retryable: false`. This is a confirmed format-scope gap for this fixture; it is not a claim that 6.5.0 regressed or that an unsupported format should be presented as a complete inventory. No target classes were loaded or executed. The refusal still contains no file digest or Evidence ID. The requested identity-only record remains useful independently of any future PNG interpretation.
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#1326
No description provided.