Skip to content

v0.3.3 — verify the crash is actually gone

Choose a tag to compare

@waazy-w waazy-w released this 21 Aug 17:19
· 36 commits to main since this release

Fixed

  • --notify produced nothing at all on macOS 15.6, with no way to tell. A
    display notification from a command-line process is discarded: nothing appears,
    osascript exits 0, and the script never registers under System Settings →
    Notifications -- so there is no permission to grant, and phantom cannot observe the
    difference between delivered and dropped. It now warns once per run when it is on that
    path and points at brew install terminal-notifier, which ships its own bundle and does
    deliver. The README previously said to allow Script Editor; that entry never appears, so
    the advice was wrong.

Changed

  • A crash with nothing to go on is now declined instead of recovered. phantom node -e "process.exit(7)" spent 90 seconds and ~300k tokens to conclude nothing: no error line,
    no stack trace, no file named in the output and no test command, so the session could
    neither locate the fault nor tell whether it had fixed it. That is the shape of a linter
    or build tool exiting non-zero, and spending a session to reliably achieve nothing is
    worse than saying so. A project with a test command still gets a recovery -- the suite is
    both the map and the proof -- and --dry-run still runs, since a diagnosis without
    verification is exactly what that mode is for.

Fixed

  • Phantom could report a fix that fixed nothing. Verification ran the test command and
    nothing else, so a session that changed no code at all -- or changed code without
    touching the crashing path -- was announced as ✅ fixed · fix verified by phantom while
    the original command still crashed with the identical error. The tests that "verified" it
    were the ones already passing while the command was dying, since the bug lived in a path
    they never covered. Found by running phantom against a real crash, not by the suite.

    Two changes. A session that changes nothing can no longer be fixed, whatever the suite
    says. And after the tests pass, phantom re-runs the command that crashed: exit 0, or
    still running at the 30 s cap, is the evidence; the same failure again is unfixed with
    the exit code named. The still-running case is deliberate -- phantom npm run dev
    crashed on boot, and surviving past the point it used to die is exactly the proof wanted,
    while waiting for an exit would hang the recovery forever.

    The post-mortem's verification table gains a Crashed command re-run row, so the
    distinction between "tests pass" and "the crash is gone" is visible rather than implied.
    Set "verifyCommand": false to skip the re-run if the command has side effects you do
    not want repeated.

  • A false alarm on the most alarming message phantom has. The stat-snapshot audit flags
    any never-touch file that changed on disk, and phantom reported "phantom cannot restore
    these; inspect them now" for a tracked .env that the hard reset put back a second
    later. It now checks whether git tracks the file: only a file git never knew about -- a
    gitignored .env is the usual one -- is genuinely beyond recovery. A tracked one is
    still a violation and still reverts the branch, but is reported as restored, because it
    was.