Repository navigation
v0.7.1 — 2026-06 trust-review safety fixes (P0/P1/P2)
Trust & safety
Closes all seven remaining items from the 2026-06 trust review. Each
upholds the core contract: never surprise the user with data movement,
exposure, or silent replacement.
- P0 — nested ignore promotion no longer writes through foreign parent
symlinks. Aforeign_ancestorguard inapply_file_entryrejects
nested link creation when a parent symlink resolves outside the repo,
for both dry-run and real operations. - P1 —
editrejects path traversal.match_target_to_source
validates relative target fragments withis_safe_fragment, rejecting
.and..components before joining onto the store directory. - P1 —
apply --planrejects parent symlinks that resolve into the
repo.resolved_target_points_into_repoinplan_execblocks
executable plans from clobbering repository content through symlinked
parents, closing the TOCTOU gap from the P0 fix. - P1 — ignore promotion preserves source symlinks.
resolve_files
now acceptsis_symlink()entries, andcreate_link_to_entrylinks
to the source symlink path without canonicalizing — so relative,
absolute, and dangling symlinks match whole-dir behavior after
promotion to file mode. - P1 —
doctorallows mutually-exclusivewhentargets sharing a
path.WhenClause::are_compatiblemakes duplicate-target detection
when-aware, matching SPEC's documented laptop/server multi-target
layout. Genuine duplicates (compatible or absentwhen) are still
reported. - P2 — init/migrate overwrite guards detect dangling symlinks. The
refuse-existing-path guards now usesymlink_metadatainstead of
Path::exists, so a danglingstate.toml/stitch.toml/.bak
symlink is refused rather than silently replaced by a regular file. - P2 —
migratevalidates the split state before writing. A v0.2
entry the new validator rejects (e.g.files = ["./bashrc"]) now
fails fast before any file is written or the legacy config is backed
up, instead of stranding the user with unloadable state.
All changes are covered by unit + integration tests. cargo fmt,
cargo clippy -D warnings, and the full suite (91 unit + 213 CLI) are
clean.