v0.5.0 — security + honesty hardening
Skeptic-review hardening pass — 10 merged PRs. Reproduce every number with npm run metrics.
🔴 Security
- Checkpoint label
..no longer wipes the temp dir —safeLabeladmitted./..; a..label madecheckpoint()resolve to the temp root andrmSyncit. Rejected +containedPath()containment at every join site. git clean --forceclassified destructive (was read-only → no effect-tracking / nudge); a glob/redirect/$()no longer downgradesrm */shred f > /dev/null/git reset --hard $(…)tocomplex.- Record store is owner-only (
0700dir /0600files) — captured stdout/stderr no longer world-readable on shared hosts. - Guard hook hardened —
VEIL_BYPASSonly as a leading env-assignment (no comment bypass); danger set coversfind -delete,git clean -f/--force,chmod -R,shred,truncate,rm --recursive/--force; verb patterns anchored so benign arguments aren't mis-blocked.
Fixed
veil initnever deletes user content between mismatched markers.- Condensing surfaces more signal — the lexicon covers crash idioms (
SIGSEGV,CONFLICT,! [rejected],timed out, …) plus a+N moreoverflow note instead of a silent cap-at-5. - Snapshot honesty —
method: "clone"is reported only within one volume; cross-volume / non-APFS falls back torsync. - Falsifiable backtest floor — a per-short-command envelope-overhead check the byte-weighted net% structurally could not catch.
Added
npm run metrics— agent-turns-saved (55% fewer round-trips), sandbox-escapes-blocked (5/5), signal-recall (100% on a labeled corpus), checkpoint cost (CoW clone vs rsync) — deterministic rows asserted in the suite so the figures can't drift.- "Why veil" + Metrics README sections; the over-claims a review flagged corrected to match what ships (lazy sandbox probe, guard = routing not containment, byte- not token-savings, 228 assertions).
Full detail: CHANGELOG.