Skip to content

v0.2.3

Choose a tag to compare

@isty2e isty2e released this 12 Sep 17:08
· 14 commits to main since this release
e44782e

Fix

Fix concurrent Git source-cache initialization on NFSv3 (#110, fixes #109). In v0.2.2, multiple Git sources in one lock command could race to create shared cache ancestors, fail with EEXIST, and leave residue that blocked the workspace.

Internal workers now coordinate publication by retained parent-directory identity and recheck the child before creating a stage. Workers reuse an existing directory without claiming cleanup ownership; unrelated parents remain independent. Actual uncertain NFS rename results still preserve their causes and candidate recovery artifacts.

Existing failed workspaces

This fix prevents new bootstrap collisions; it does not repair existing markerless .daem-tmp-* residue. If an earlier failure fenced your workspace, upgrading alone will not clear it. Preserve the residue and error output for manual analysis. Do not delete internal paths merely because their names look temporary. See NFS troubleshooting.

Support and upgrade limits

  • NFSv3 support remains single-client, single-writer and trusted-path only. This change does not add cross-process or cross-node exclusion, hostile-interference protection, server-outage/reconnect/power-loss durability, or universal automatic recovery.
  • Legacy mount-ID recovery requires the same boot and no unmount/remount. Complete pending recovery before reboot, remount or a kernel transition; incompatible identity schemes are refused rather than converted.
  • Metadata preservation covers supported metadata exposed through the client, not invisible server-only metadata. Metadata-based revalidation detects observable drift, not every competing write or inode-reuse cycle; this also applies to local filesystems. Keep inputs and namespaces stable during a command.
  • When upgrading from v0.1.0, follow the upgrade procedure before replacing the executable. Populated old state and ownership records are not migrated automatically, and old recovery journals are refused. Keep the old binary and back up your manifest and lockfile; do not edit or delete state to bypass refusal. JSON consumers should check the CLI reference.
  • Installer rollback restores only the executable, not manifests, lockfiles, managed state or host changes.

The platform contract defines the support boundary. Linux 5.15/NFSv3 reproduction and regression results are reported in #110; hosted release CI does not provision NFS.

Verification

The release workflow verified both native artifacts, reproducible builds and archives, fresh installation, development-binary upgrade, offline executable rollback, and refusal of corrupt checksums and wrong binary identities. These installer checks do not establish migration of populated old state.

Install

Available for macOS 26 or newer on Apple silicon and Linux x86-64. Download the matching archive and SHA-256 sidecar below or use the installation guide.

Full changelog