Read current lazy workspace files without changing pinned observations
Problem
Default context capture needs the selected workspace's current AGENTS.md/CLAUDE.md. LazyWorkspace::read deliberately retains its first source observation. A native edit between turns without an active source watch can therefore leave that lookup stale.
Design
Add LazyWorkspace::read_latest. Reuse the existing no-follow inspection with fresh source lookup and the bounded, version-checked read engine. Authored content, shared hard-link shadows and tombstones retain precedence. The caller's original accounting and cancellation flow through the complete read. Fresh lookup resolves authored identity and shadows even after native unlink reduces the current link count to one.
Decisions
Freshness belongs in the filesystem provider's selected-view read: a snapshot deliberately preserves its earlier source facts. This API reads existing file data without a control file, new store, cache invalidation, directory enumeration or raw-host fallback. LocalHarness instruction capture will consume it in the next PR. No production synchronization or parser changes; existing path validation and version checking are reused.
Deletions
None: retained reads and current-source reads have different contracts. Net +295 lines: +42 production and +253 tests/fixture/module lines.
Tests run
- bb1 via bs.ps1: acyclic-fs --lib default-feature test build, then direct binaries: 16/16 focused tests passed. Fresh reads: 4 tests, 0.142s; lookup: 5, 0.008s; snapshot: 2, 0.007s; exactification: 5, 0.228s. Final build 2m51s, excluded from runtime.
- Shrinking property retains all 256 cases over arbitrary byte bodies, byte bounds, authored files, shared aliases and tombstones, including shrinking cases where native unlink reduces link count to one with either an authored record or only a retained shadow. Assert exact source lookup/body-read counts, no directory enumeration and unchanged snapshot identity. The old retained read remains a negative control after an unannounced edit.
- Native hard-link regression pins /b, authors /a, natively unlinks /a and edits /b; fresh reads retain the authored bytes both with a remaining authored alias and with only its shadow. Native regression edits and deletes AGENTS.md without opening a watcher; fresh reads see both changes while the original snapshot remains unchanged. Original-native-work regression checks retained body custody and rejects directory/symlink kinds before body reads.
- Windows via lb.ps1: cargo check -p acyclic-fs --lib --tests passed at the fixed head (7.24s after the build slot).
- rustfmt and git diff --check passed. No removed/renamed caller API.