Skip to content

fix: add path-free recovery errors to output helpers - #495

Merged
entelecheia merged 3 commits into
mainfrom
fix/471-output-errors
Nov 10, 2026
Merged

entelecheia merged 3 commits into
mainfrom
fix/471-output-errors

Conversation

@entelecheia

Copy link
Copy Markdown
Member

Closes #471.

Stage-sync and file-identity helper failures omitted a recovery step and could print private staging/destination paths. All four StagedOutput::sync_file failures, both Windows identity failures and fallback canonicalization now return fixed Korean phase/cause/remedy errors. The shared formatter accepts static text and discards original I/O chains. The remedy is to check output-directory permissions and free space, then rerun.

The path-free policy applies to the helper error values. Binding's output-set path propagates them directly, satisfying docs/design/25-form-binding-plan.md; sidecar directory preparation retains its separate higher-level context. Identity probes can occur after rename, so messages describe the probe phase and remedy. Successful sync/identity behavior and Windows handle cleanup remain unchanged. No observed caller branches on these helpers' source I/O errors; direct-filesystem NotFound handling is untouched.

Baseline bb497192d6c3c8132a8b58a4ee2d6cb37c871edd changes tests only:

  • Remote Linux cargo +1.93.0 test -p hwp-cli --bin hwp output_helper_ -- --test-threads=2: both sync tests failed at their intended phase assertion.
  • Native Windows baseline job: 320 existing tests passed and all 3 new tests failed at that assertion. The identity test deletes a temporary file after taking its metadata, reaching a real CreateFileW failure. The remaining queued, non-target macOS baseline job was canceled after collecting this evidence.

Tests check phase, permission/free-space/rerun guidance, path absence in Display/alternate/Debug formatting, and the source-free error-chain contract. Sync tests also verify destination bytes and cleanup. Other helper failure branches are source-audited rather than directly fault-injected.

Full verification at 23eeee9ca7bb7407aec8d94e761b501e2708a22d: exact-head remote Linux/Rust 1.93.0, CARGO_BUILD_JOBS=2 RUST_TEST_THREADS=2 scripts/check.sh </dev/null, with verifier stdin also closed, exit 0. The final source-chain assertion is included.

== check: OK (fmt/clippy/test/crate-edges/pdf-runner/structured-corpus/claims/doc-surface/release-block/readiness-selfcheck/skip-accounting/public-parity=skipped) skipped-for-missing-fixtures=49 (optional=4) ==

The 49 missing-fixture skips include 4 optional cases; absent fixture paths remain unverified. Public PDF parity auto-skipped for this environment's Poppler version. Post-fix native Windows and other hosted PR checks remain separate evidence before merge.

Copilot AI balanced review requested due to automatic review settings November 10, 2026 14:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T14:37:34.048539Z 23eeee9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@entelecheia
entelecheia merged commit 0358c84 into main Nov 10, 2026
7 checks passed
@entelecheia
entelecheia deleted the fix/471-output-errors branch November 10, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Output transaction helper errors lack a next step and may print staging paths

2 participants