Skip to content

Release 0.6.0: current-directory CLI, runtime-policy, reboot-stable cleanup - #7

Merged
vindfjur merged 1 commit into
mainfrom
release/0.6.0
Jun 27, 2026
Merged

Release 0.6.0: current-directory CLI, runtime-policy, reboot-stable cleanup#7
vindfjur merged 1 commit into
mainfrom
release/0.6.0

Conversation

@vindfjur

Copy link
Copy Markdown
Owner

Highlights

  • install-service --runtime-policy strict|balanced (balanced default on
    macOS) — installs on a stock Homebrew interpreter; world-writable, foreign-
    owned, symlinked and writable-code components are still rejected.
  • Reboot-stable ownership identity: the persisted ownership check compares
    st_ino only (st_dev is not stable across reboots), restoring automatic
    post-reboot cleanup. Within-boot fd-relative and mount-boundary checks keep
    the full device+inode pair.
  • Current-directory keep/rm/explain/extend/path (a subdirectory
    resolves to the managed root), fail-closed on a bad marker, no latest-
    fallback for destructive commands.

527 tests, ruff + mypy --strict clean; build + twine check pass.

…leanup

- install-service runtime-trust policy --runtime-policy strict|balanced
  (balanced default on macOS): a stock Homebrew interpreter can host the
  scheduled sweep via a narrow /opt/homebrew|/usr/local + admin-group carve-out,
  while world-writable, foreign-owned, symlinked and writable-code components
  stay hard failures. Fixes install-service refusing on every Homebrew Mac.
- Reboot-stable ownership identity: the persisted inode check compares st_ino
  only (st_dev is not stable across reboots on APFS/Linux). Fixes tracked
  directories never being removed after a restart. Within-boot fd-relative and
  mount-boundary checks keep the full device+inode pair.
- Current-directory commands: keep/rm/explain/extend act on the ephemdir
  directory you are in (a subdirectory resolves to the managed root) with no
  name; extend accepts a bare lifetime; path prefers the current directory. All
  fail closed on an absent/invalid/mismatched marker and never fall back to the
  latest directory for destructive commands. The random marker plus st_ino
  remain the deletion gate.

527 tests, ruff + mypy --strict clean.
@vindfjur
vindfjur merged commit 2f922d3 into main Jun 27, 2026
10 checks passed
@vindfjur
vindfjur deleted the release/0.6.0 branch June 27, 2026 07:47
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.

1 participant