Skip to content

hardening: post-v0.14 I/O, setup, and edge-case follow-ups #79

Description

@subinium

Context

The v0.14.0 release audit cleared all identified P0/P1 blockers. These lower-severity follow-ups were intentionally kept out of the release-critical patch set, but should remain tracked for a 0.14.x hardening pass.

Follow-ups

  • Prime Agent deletion is fail-closed, but the common TUI Delete action can still appear and return without a useful unsupported message.
  • Structured/list/stats stdout paths do not all share one broken-pipe-safe error contract; some writes are ignored and some println paths can panic.
  • Shell setup read-modify-write has no cross-process coordination, and atomic writes do not fsync the parent directory before reporting durable success.
  • Saving settings after malformed TOML can replace unrelated user settings instead of preserving the original file and reporting the parse error.
  • Cache fingerprints can miss exotic same-path/same-size/same-mtime replacements and nested symlink-target changes.
  • OpenCode/Hermes SQL title aggregation should bound source content before materializing it, not only truncate after allocation.
  • CSV output should document or implement spreadsheet formula-injection neutralization for fields beginning with formula sigils.
  • Watch should report running state as unknown on unsupported Windows backends and should persist successful refreshed state consistently.
  • Hermes sessions with an empty project path should disable the Cd action instead of previewing it as unavailable and later producing an empty-directory command.

Acceptance criteria

  • Each behavior has a focused regression test, including Windows where platform-specific.
  • I/O failures are surfaced without corrupting settings, cache, or terminal state.
  • Allocation bounds are applied before SQLite/Rust materialization.
  • Unsupported actions are disabled or provide explicit feedback.
  • fmt, Clippy with warnings denied, MSRV, RustSec, Linux tests, and Windows tests pass.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions