# PortMarshal v0.6.2 reliability fixes

> 2026-08-20. This patch release keeps the existing supervisor-free lifecycle and safety model while correcting project execution, loopback readiness, and log retention behavior.

## Goals

1. Make foreground and detached `run --project DIR` execute from the same recorded project directory.
2. Treat IPv4-only and IPv6-only loopback listeners as equivalent readiness targets without weakening run identity verification.
3. Keep `logs` tail reads memory-bounded and cap the retained previous-run log without adding a resident supervisor.
4. Prevent filesystem sanitization from mapping distinct service names to the same detached log file.
5. Exercise the supported codebase on current Node.js LTS lines in CI.

## Execution directory

`--project DIR` is both the cooperative ownership identity and the child process working directory. Foreground `run` now passes `cwd: project` to `spawn`, matching `run -d`.

## Loopback readiness

Readiness probes both `127.0.0.1` and `::1`. HTTP health checks run against every reachable loopback family until one returns 2xx/3xx. Endpoint success still requires the existing runId and process-group ownership verification.

## Log bounds

- `tailLines` reads backward in 64 KiB chunks and stops after enough lines or a 1 MiB read window.
- A single line longer than the window is returned from its tail with an ellipsis marker.
- Rotation keeps at most the final 10 MiB of the previous run and records a truncation marker.
- The active log remains a direct child stdout/stderr target and may grow until that run exits or restarts. Enforcing a live byte cap would require a resident log-pump process and is intentionally outside this patch's supervisor-free boundary.

## Collision-resistant log paths

Ordinary names keep the existing `<project-hash>-<name>.log` path. Names that require sanitization, are empty after sanitization, or exceed 64 characters receive an additional hash of the original name.

## Compatibility

- No registry schema changes.
- Existing registry `logFile` paths remain readable.
- Ordinary service names keep their existing log paths.
- The package runtime declaration remains unchanged in this patch; CI runs Node.js 22 and 24 on Ubuntu and macOS.
