claw-code/rust/crates/rusty-claude-cli/tests
YeonGyu-Kim 0afdfb3481 fix(#168c): emit error envelopes to stdout under --output-format json
Under --output-format json, error envelopes were emitted to stderr via
eprintln!. This violated the emission contract: stdout should carry the
contractual envelope (success OR error); stderr is reserved for
non-contractual diagnostics.

Cycle #87 controlled matrix audit found bootstrap/dump-manifests/state
exhibited this pattern (exit 1, stdout 0 bytes, stderr N bytes under
--output-format json).

Fix: change eprintln! to println! for the JSON error envelope path in main().
Text mode continues to route errors to stderr (conventional).

Verification:
- bootstrap --output-format json: stdout now carries envelope, exit 1
- dump-manifests --output-format json: stdout now carries envelope, exit 1
- Text mode: errors still on stderr with [error-kind: ...] prefix (no regression)

Tests:
- Updated assert_json_error_envelope helper to read from stdout (was stderr)
- Added error_envelope_emitted_to_stdout_under_output_format_json_168c
  regression test that asserts envelope on stdout + non-JSON on stderr
- All 16 output_format_contract tests pass

Phase 0 Task 1 complete: emission routing fixed across all error-path verbs.
Phase 0 Task 2 (no-silent CI guarantee) remains.

Refs: #168c (cycle #87 filing), cycle #88 emission contract framing
2026-04-30 11:03:06 +09:00
..
cli_flags_and_config_defaults.rs Prevent cross-worktree session bleed during managed session resume/load 2026-04-11 16:08:28 +00:00
compact_output.rs Restore Rust formatting compliance 2026-04-28 09:19:16 +00:00
mock_parity_harness.rs fix(cli): 6 cascading test regressions hidden behind client_integration gate 2026-04-08 14:54:10 +09:00
output_format_contract.rs fix(#168c): emit error envelopes to stdout under --output-format json 2026-04-30 11:03:06 +09:00
resume_slash_commands.rs fix: #150 — eliminate symlink canonicalization flake in resume_latest test + file #246 (reminder outcome ambiguity) 2026-04-21 21:01:09 +09:00