[GH-ISSUE #1250] feat(process): report capture truncation separately for each evidence dimension #447

Closed
opened 2026-10-15 18:25:08 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @N0zoM1z0 on GitHub (Oct 9, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/1250

Current limitation

A sparse successful capture can retain all raw terminal output and a complete report hash but set only global truncated:true after cumulative rendered terminal snapshots exhaust their budget. The result does not identify which terminal dimension was truncated or its budget/accounting; filesystem checkpoint flags cover only their own snapshots.

Reproduction

Capture this Node workload with normalization disabled and limits.output_bytes:30000:

let n=0;
const timer=setInterval(()=>{
  console.log('board '+String(n).padStart(2,'0')+' completed; score '+String(n*10));
  if(++n===65) clearInterval(timer);
},20);

Current main retains all 65 raw frames (2,004 PTY bytes, including the final board), 13 rendered snapshots, child exit0 and verified cleanup, but reports global truncation without a truncation_details field or terminal-dimension explanation. The published release reproduces the same distinction.

Required behavior

Return per-dimension completeness and actionable truncation reasons for raw output, cumulative rendered snapshots, filesystem enumeration/digests and process observations. Report observed/retained amounts and the applicable limit where available; sampled process coverage is not event completeness.

Derive the global summary from those facts. Comparison should mark only unobserved/truncated facets unknown rather than implying all captured output is incomplete. Verify sparse output versus renderer expansion, actual raw clipping, file-count/hash exhaustion and combination cases through CLI/MCP.

src/process/capture/ProcessHarness.ts:458 joins truncation flags; src/domain/process/processCapture.ts:208 exposes the global field. Distinct from closed #176/#179 (native command stdout/stderr flags). Related #48 and #1065. #1231 tracks falsely inferred filesystem deletions and should remain a separate correctness fix.

Verification and scope

Reproduced with a short source-owned workload through real MCP on published/main. This is an observability gap, not missing child completion or missing raw board messages.

Audit date: 2026-10-09. Latest npm dist-tag verified as rea-agents@6.1.0; current main tested at f4c99ab8a53806dd57dc24b3d5a600905bcb4686. Linux x64, Node 24.18.0, MCP client SDK 2.3.1. Native observations use unmodified Ghidra 12.1.4 and JDK 21, two CPUs and a 512 MiB Java heap. No target execution or executable mutation was used for the static native checks.

Originally created by @N0zoM1z0 on GitHub (Oct 9, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/1250 ### Current limitation A sparse successful capture can retain all raw terminal output and a complete report hash but set only global `truncated:true` after cumulative rendered terminal snapshots exhaust their budget. The result does not identify which terminal dimension was truncated or its budget/accounting; filesystem checkpoint flags cover only their own snapshots. ### Reproduction Capture this Node workload with normalization disabled and `limits.output_bytes:30000`: ```js let n=0; const timer=setInterval(()=>{ console.log('board '+String(n).padStart(2,'0')+' completed; score '+String(n*10)); if(++n===65) clearInterval(timer); },20); ``` Current main retains all 65 raw frames (2,004 PTY bytes, including the final board), 13 rendered snapshots, child exit0 and verified cleanup, but reports global truncation without a `truncation_details` field or terminal-dimension explanation. The published release reproduces the same distinction. ### Required behavior Return per-dimension completeness and actionable truncation reasons for raw output, cumulative rendered snapshots, filesystem enumeration/digests and process observations. Report observed/retained amounts and the applicable limit where available; sampled process coverage is not event completeness. Derive the global summary from those facts. Comparison should mark only unobserved/truncated facets unknown rather than implying all captured output is incomplete. Verify sparse output versus renderer expansion, actual raw clipping, file-count/hash exhaustion and combination cases through CLI/MCP. ### Source and related work [src/process/capture/ProcessHarness.ts:458](https://github.com/morluto/rea/blob/f4c99ab8a53806dd57dc24b3d5a600905bcb4686/src/process/capture/ProcessHarness.ts#L458) joins truncation flags; [src/domain/process/processCapture.ts:208](https://github.com/morluto/rea/blob/f4c99ab8a53806dd57dc24b3d5a600905bcb4686/src/domain/process/processCapture.ts#L208) exposes the global field. Distinct from closed #176/#179 (native command stdout/stderr flags). Related #48 and #1065. #1231 tracks falsely inferred filesystem deletions and should remain a separate correctness fix. ### Verification and scope Reproduced with a short source-owned workload through real MCP on published/main. This is an observability gap, not missing child completion or missing raw board messages. Audit date: 2026-10-09. Latest npm dist-tag verified as `rea-agents@6.1.0`; current main tested at `f4c99ab8a53806dd57dc24b3d5a600905bcb4686`. Linux x64, Node 24.18.0, MCP client SDK 2.3.1. Native observations use unmodified Ghidra 12.1.4 and JDK 21, two CPUs and a 512 MiB Java heap. No target execution or executable mutation was used for the static native checks.
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#447
No description provided.