samchon / samchon/compiler-knowledge-graph

[Provider diagnostics] Preserve both process streams on batch failure

Open
#169 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
6
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Problem

BatchGraphSession drops a batch producer's stdout whenever stderr contains
any text. Build wrappers legitimately divide their output across both streams,
so a benign notice on stderr can hide the only actionable failure on stdout.

The Gson index-time cell in run 33377586947 is the concrete reproduction.
javac-graph exited with code 1. The retained message consists only of three
Picked up JAVA_TOOL_OPTIONS notices from stderr, although scip-java runs a
real Maven build whose failure summary is written to stdout. The current
failureDetail returns stderr immediately when it is non-empty and consults
the bounded stdout tail only when stderr is empty.

Consequence surface

The shared session owns every one-shot SCIP, sidecar, Go, Lua, and Java process.
The defect affects CLI errors, strict-provider fallback warnings, resident
retry diagnosis, experiment artifacts, and index-time logs. It is not specific
to Gson or Maven.

Stdout can also be an artifact channel and both streams may be large. A fix
must retain bounded diagnostic tails without embedding an artifact or allowing
failure output to grow without limit.

Approach

Preserve separately attributed, bounded tails for both non-empty streams. A
stderr-only or stdout-only failure remains concise. When both are non-empty,
include both labels and tails under one fixed total diagnostic budget, favoring
the end of each stream because build tools print their verdict last.

Acceptance and verification

  • A producer with a benign stderr notice and a stdout failure retains both and
    identifies which stream supplied each text.
  • Existing stderr-only, stdout-only, silent, short-output, long-output,
    cancellation, output-limit, and process-tree cleanup behavior remains
    covered.
  • Truncation is explicit only when bytes were omitted, and the combined message
    has a fixed upper bound.
  • Successful artifact stdout is never copied into a diagnostic.
  • The next Gson run exposes the actual Maven cause if the route still fails.
  • The focused BatchGraphSession/SCIP tests, pnpm build, pnpm test, and
    pnpm coverage pass on the same head.

Coordination

This issue improves the evidence needed to finish #74 but does not close Java's
semantic, fixture, JDT, or performance acceptance items by itself.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate BatchGraphSession and its failureDetail implementation, then read the focused BatchGraphSession/SCIP tests covering stream handling and output limits. Verify that both bounded, labeled tails are retained under one limit while artifact stdout and existing cleanup behavior remain unaffected; run the focused tests, pnpm build, pnpm test, and pnpm coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend, cli, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.