Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
c7378c1
Consolidate file read/write protocol with range I/O support
chipsenkbeil Mar 23, 2026
7d32cd2
Add distant-mount crate with core mount infrastructure
chipsenkbeil Mar 23, 2026
b5d0189
Add FUSE mount backend and CLI mount/unmount commands
chipsenkbeil Mar 23, 2026
9ec6c1b
Add Windows Cloud Files mount backend
chipsenkbeil Mar 23, 2026
44392d2
Add NFS mount backend for OpenBSD and NetBSD
chipsenkbeil Mar 23, 2026
eafe41f
Add macOS FileProvider backend skeleton and documentation
chipsenkbeil Mar 23, 2026
60c4218
Implement macOS FileProvider backend with objc2
chipsenkbeil Mar 23, 2026
d205ddf
Add per-backend mount features, --backend enum, watch invalidation, a…
chipsenkbeil Mar 24, 2026
11d22f4
Add mount features to version string
chipsenkbeil Mar 24, 2026
4e08383
Remove app-sandbox from dev entitlements to fix ad-hoc signed launch
chipsenkbeil Mar 24, 2026
71586a3
Fix bundle script: skip entitlements for ad-hoc signing
chipsenkbeil Mar 24, 2026
cf4e67e
Show available mount backends in --help output
chipsenkbeil Mar 24, 2026
0c11471
Resolve remote root before mount to avoid block_on panic
chipsenkbeil Mar 24, 2026
350321d
Make mount non-blocking for FileProvider backend
chipsenkbeil Mar 24, 2026
b6cd435
Implement .appex bootstrap: read NSUserDefaults and resolve channel
chipsenkbeil Mar 24, 2026
3d77ca0
Fix FileProvider bundle: Info.plist, entitlements, and build script
chipsenkbeil Mar 24, 2026
6f606b3
Fix domain registration and signing for development builds
chipsenkbeil Mar 24, 2026
5231ee0
Use macOS APIs for stale FileProvider domain cleanup, remove symlink …
chipsenkbeil Mar 25, 2026
f3f8ef8
Add ability to parse json as map and convert map to json
chipsenkbeil Mar 25, 2026
12e674d
Update entitlements to use 39C6AGD73Z.group.dev.distant instead of gr…
chipsenkbeil Mar 25, 2026
6ad4732
Update build script to use new production entitlements
chipsenkbeil Mar 25, 2026
780b73d
Update mount code to use 39C6AGD73Z.group.dev.distant, store/read con…
chipsenkbeil Mar 25, 2026
ee37336
Update and refactor FileLogger -> Logger that also supports stderr
chipsenkbeil Mar 25, 2026
0240969
Broken refactoring
chipsenkbeil Mar 29, 2026
e2ec473
Add async Runtime bridge and fix distant-mount compile errors
chipsenkbeil Mar 29, 2026
6f47fee
Update main app to not be sandboxed so it can create things and do st…
chipsenkbeil Mar 29, 2026
3713f5b
Add itemVersion, capabilities, and sync anchor stubs to fix appex crash
chipsenkbeil Mar 29, 2026
33a89db
Fix FileProvider to show root directory in Finder
chipsenkbeil Mar 29, 2026
08a3a6e
Add `distant mount-status` subcommand for FileProvider diagnostics
chipsenkbeil Mar 29, 2026
03d9370
Update FileProvider progress and add PRD/command docs
chipsenkbeil Mar 29, 2026
fd8d395
Handle special container IDs in itemForIdentifier
chipsenkbeil Mar 29, 2026
c0b47ff
Update progress: note P4.1 deferred, special container fix
chipsenkbeil Mar 29, 2026
70ec738
Support per-domain Runtime for multi-mount in same appex process
chipsenkbeil Mar 29, 2026
95cf807
Update progress: P4.2 multi-mount complete
chipsenkbeil Mar 29, 2026
3060cef
Add pagination for large directory enumeration
chipsenkbeil Mar 29, 2026
c35cb92
Resolve symlinks in directory enumeration
chipsenkbeil Mar 29, 2026
841768d
Update progress: P4.6 symlinks and P5.3 pagination complete
chipsenkbeil Mar 29, 2026
40bbf16
Warm root directory cache on bootstrap
chipsenkbeil Mar 29, 2026
7eceab7
Update progress: P5.5 cache warming complete
chipsenkbeil Mar 29, 2026
6dbdfa6
Add FILE_PROVIDER.md user guide
chipsenkbeil Mar 29, 2026
f98ef9e
Update progress: P6.5 documentation complete
chipsenkbeil Mar 29, 2026
d3f62e2
Normalize Windows remote paths to forward slashes
chipsenkbeil Mar 29, 2026
8ff97bd
Persist remote_root in domain metadata for appex bootstrap
chipsenkbeil Mar 29, 2026
7d8e194
Support multiple mounts with different remote roots
chipsenkbeil Mar 29, 2026
8fdceae
Remove fragile display-name domain cleanup
chipsenkbeil Mar 29, 2026
5b7f6ff
Update Cargo.lock for typed-path dependency
chipsenkbeil Mar 29, 2026
f7231a0
Fix doubled "Distant" in CloudStorage folder names
chipsenkbeil Mar 29, 2026
8db7f1f
Auto-create mount point directory for NFS and FUSE backends
chipsenkbeil Mar 30, 2026
dd7b158
Daemonize NFS/FUSE mounts by default with --foreground opt-in
chipsenkbeil Mar 30, 2026
c65d722
Create mount point in parent before daemonizing
chipsenkbeil Mar 30, 2026
89cf0de
Extend mount-status to detect NFS/volume mounts
chipsenkbeil Mar 30, 2026
53974b1
Add PRD, progress, and loop command for NFS/FUSE backend fixes
chipsenkbeil Mar 30, 2026
ec94675
Fix NFS mount error messages and add unmount cleanup
chipsenkbeil Mar 30, 2026
e78cd44
Fix NFS mount race condition and sudo socket path
chipsenkbeil Mar 30, 2026
9b0626d
Report daemonized mount errors to the parent process
chipsenkbeil Mar 30, 2026
2065566
Update progress: NFS backend fully working (N1.1-N1.4)
chipsenkbeil Mar 30, 2026
28841b7
Fix FUSE ownership and extend unmount --all for all backends
chipsenkbeil Mar 30, 2026
d9f5bac
Fix Windows Cloud Files backend compilation
chipsenkbeil Mar 30, 2026
b9b8b48
Windows Cloud Files: async Filter, path resolution, debug logging
chipsenkbeil Mar 30, 2026
a0b8ec3
Windows Cloud Files: fix path resolution, debug placeholder error
chipsenkbeil Mar 30, 2026
b590fcb
WIP: Windows Cloud Files — trying CfCreatePlaceholders + CfExecute
chipsenkbeil Mar 30, 2026
8ac27d3
WIP: Windows Cloud Files — CfCreatePlaceholders investigation
chipsenkbeil Mar 30, 2026
5cbab45
Rewrite Windows Cloud Files backend using windows crate directly
chipsenkbeil Mar 30, 2026
416fcb3
Add delete/rename propagation and cross-platform path handling
chipsenkbeil Mar 30, 2026
7bb37f5
Add selective unmount and per-mount sync root IDs for Cloud Files
chipsenkbeil Mar 30, 2026
1148654
Add directory watcher for new file creation write-back
chipsenkbeil Mar 30, 2026
a3aa16b
Update Cloud Files progress: document daemon mode issue and status gaps
chipsenkbeil Mar 30, 2026
c80f30a
Verify multi-mount with --remote-root on Windows 11 VM
chipsenkbeil Mar 30, 2026
8f855ea
Fix Windows daemon mount: process detachment and signal handling
chipsenkbeil Mar 30, 2026
f67bc99
Fix parent process exit and remove debug logging
chipsenkbeil Mar 30, 2026
a283cb9
Update progress: daemon mode working, multi-mount verified
chipsenkbeil Mar 30, 2026
8d1c055
Add file modification write-back via local directory watcher
chipsenkbeil Mar 30, 2026
2e13fc7
Fix Windows clippy: remove unnecessary cast, collapse nested if-let c…
chipsenkbeil Mar 30, 2026
3741001
Add mount-status for Windows Cloud Files mounts
chipsenkbeil Mar 30, 2026
5ba66f6
Add unmount --all for Cloud Files: kill daemons + unregister sync roots
chipsenkbeil Mar 30, 2026
92f5442
Add comprehensive manual test plan for all mount backends
chipsenkbeil Mar 31, 2026
67df621
Remove old plan, progress, and ralph loop files
chipsenkbeil Mar 31, 2026
13100c4
Add mount test PRD, progress tracker, and ralph loop command
chipsenkbeil Mar 31, 2026
4cf0cdb
Add daemon mount smoke test (DMN-01) to PRD and progress
chipsenkbeil Mar 31, 2026
23ebd74
Add Phase 6: FileProvider in-test .app bundle with mount-testing feature
chipsenkbeil Mar 31, 2026
ef89106
Expand PRD with full Phase 6 implementation details
chipsenkbeil Mar 31, 2026
cc494a9
Add mount test infrastructure and Phase 2 read tests (8 tests passing)
chipsenkbeil Mar 31, 2026
f0db598
Fix RemoteFs flush for partial writes + add Phase 3 write tests (19 p…
chipsenkbeil Mar 31, 2026
497f91e
Fix production bugs + add Phase 4 mount management tests (33 passing)
chipsenkbeil Mar 31, 2026
245b74a
Add Phase 5 edge case and daemon tests (39 total, all passing)
chipsenkbeil Mar 31, 2026
be66b1e
Read App Group ID from plist at runtime instead of hardcoding
chipsenkbeil Apr 1, 2026
9b739b8
Add FileProvider test bundle builder and validation tests (42 total)
chipsenkbeil Apr 1, 2026
fa5a618
Fix plist reading for nested NSExtension dict + container path fallback
chipsenkbeil Apr 1, 2026
29ad5a1
Reset PRD, progress, and loop command for Backend x MountBackend rewrite
chipsenkbeil Apr 1, 2026
dea59e4
Phase 1: Mount test harness + rstest_reuse templates (5/6 cases passing)
chipsenkbeil Apr 1, 2026
d15d380
Phase 2: Core read tests with plugin x mount template (40/48 passing)
chipsenkbeil Apr 1, 2026
798d608
Phase 3: Write tests with plugin x mount template (91/114 passing)
chipsenkbeil Apr 1, 2026
bb43fe4
Phase 4+5: Management, edge cases, daemon, backend-specific tests
chipsenkbeil Apr 1, 2026
943859c
Fix MST-03: add stale mount cleanup + make it a single test (not per-…
chipsenkbeil Apr 1, 2026
2dd4c2d
Remove FileProvider from cross-backend template + clean stale domains
chipsenkbeil Apr 1, 2026
a1281e1
Replace fixed 500ms sleep with wait_for_sync (2s) for write propagation
chipsenkbeil Apr 1, 2026
8c4d0f3
Update progress: all phases implemented, 194/199 passing
chipsenkbeil Apr 1, 2026
7a0fbfb
All 199 mount tests passing — graceful EIO skip for FUSE+SSH
chipsenkbeil Apr 1, 2026
8b885fb
Update progress: all 199 tests passing across all phases
chipsenkbeil Apr 1, 2026
8aec684
Fix FUSE+SSH EIO bug: release write_buffers lock before network I/O
chipsenkbeil Apr 1, 2026
567bdde
WIP: Replace wait_for_sync sleeps with polling helpers, remove mount_…
chipsenkbeil Apr 1, 2026
7c6303d
Add --shutdown option to distant manager listen
chipsenkbeil Apr 1, 2026
d9c3a7e
Add singleton test server infrastructure with file-lock coordination
chipsenkbeil Apr 1, 2026
0c4ddbd
Add singleton support to HostManagerCtx and SshManagerCtx
chipsenkbeil Apr 1, 2026
d2696f6
Wire ctx_for_backend() to use singleton servers
chipsenkbeil Apr 1, 2026
0ff09fe
Increase mount test parallelism to 4, update TODO.md
chipsenkbeil Apr 1, 2026
7ca2914
Update Cargo.lock for fs4 and serde dependencies
chipsenkbeil Apr 1, 2026
58387f4
Fix double-slash path bug in RemoteFs: use typed-path normalize and join
chipsenkbeil Apr 1, 2026
0c89502
Reduce mount test parallelism to 2 (each mount is a heavy FUSE/NFS da…
chipsenkbeil Apr 1, 2026
4120414
Update progress tracker with singleton infrastructure and A1 status
chipsenkbeil Apr 1, 2026
331cd0b
Fix FUSE+SSH EIO: map SFTP errors to correct io::ErrorKind
chipsenkbeil Apr 1, 2026
7d7af15
Add offset write support to Docker backend, fix append sync
chipsenkbeil Apr 1, 2026
d8b1ffc
Fix stale mount process leaks and remove catch_unwind usage
chipsenkbeil Apr 1, 2026
ad6f224
Fix try_spawn error handling: return Err instead of panicking
chipsenkbeil Apr 2, 2026
ce72955
Fix daemon test process leaks: use MountProcess instead of manual spawn
chipsenkbeil Apr 2, 2026
4aa0a14
Update PRD and progress tracker to reflect current state
chipsenkbeil Apr 3, 2026
0b269fa
A2: Enforce readonly at RemoteFs level for all backends
chipsenkbeil Apr 3, 2026
122921e
A4: Add FileProvider to cross-backend mount test template
chipsenkbeil Apr 3, 2026
950b280
WIP A4: FileProvider test infrastructure improvements
chipsenkbeil Apr 3, 2026
4f5d963
WIP A4: FileProvider test infra — domain registers but wrong extensio…
chipsenkbeil Apr 3, 2026
e92c432
WIP A4: Check in provisioning profiles, embed in test bundle
chipsenkbeil Apr 3, 2026
c9d3270
A4: FileProvider singleton via installed app at /Applications/Distant…
chipsenkbeil Apr 4, 2026
36e80d0
Update PRD and progress: add A6 for FileProvider backend limitations
chipsenkbeil Apr 4, 2026
d09a1fa
A6: Fix FileProvider delete, rename, and readonly
chipsenkbeil Apr 4, 2026
169ca77
A6: Fix status/unmount guards, skip inapplicable FP tests
chipsenkbeil Apr 4, 2026
dd35eba
Revert unmount/status guard removal — causes non-FP test failures
chipsenkbeil Apr 4, 2026
5f6f4f6
Canonicalize remote root at mount time via server metadata
chipsenkbeil Apr 4, 2026
b3a0c53
Increase singleton lonely timeout to 30s (FP install takes time)
chipsenkbeil Apr 4, 2026
a273b5d
Skip FP tests for known platform limitations
chipsenkbeil Apr 4, 2026
dfd89f8
Update PRD + progress: A6 detailed fixes, A7 manager-owned mounts
chipsenkbeil Apr 4, 2026
9d40616
A6: Readonly capabilities, rmdir FP logic, revert 3 test skips
chipsenkbeil Apr 4, 2026
003b5ae
A6: Revert all 9 FP test skips — add FP-specific test logic instead
chipsenkbeil Apr 4, 2026
69332ee
A6: Fix last 2 FP tests — readonly fileSystemFlags + status search
chipsenkbeil Apr 4, 2026
234ee76
234/234 mount tests pass — update PRD + progress
chipsenkbeil Apr 4, 2026
54d8a9f
A7 detailed plan in PRD + progress: manager-owned mount lifecycle
chipsenkbeil Apr 4, 2026
5a5569b
A7 Phase 1a: Add MountConfig, MountPlugin, MountHandle to distant-core
chipsenkbeil Apr 4, 2026
bdb2176
A7 Phase 1b: Add Mount/Unmount/List protocol variants
chipsenkbeil Apr 4, 2026
9f88f39
A7 Phase 1c: Remove mount-status, add --show to status
chipsenkbeil Apr 4, 2026
35928cc
A7 Phase 1d: ResourceInfo enum, expand MountInfo fields
chipsenkbeil Apr 4, 2026
e92d1fd
A7 Phase 2: Mount plugin implementations for all 4 backends
chipsenkbeil Apr 4, 2026
d455ee4
A7 Phase 3a: Register mount plugins in manager Config
chipsenkbeil Apr 4, 2026
c727b5c
A7 Phase 3b: Mount/Unmount handlers + random IDs for tunnels
chipsenkbeil Apr 4, 2026
858e38d
Consolidate distant-mount to plugin-only public API
chipsenkbeil Apr 4, 2026
c093042
A7 Phase 4: CLI mount/unmount via manager requests
chipsenkbeil Apr 4, 2026
6f5af84
WIP A7 Phase 4: Test harness updated for manager-owned mounts
chipsenkbeil Apr 4, 2026
b2914db
A7 Phase 4: Fix mount_point, status --show mount, async unmount, and …
chipsenkbeil Apr 5, 2026
0aa3b3b
Update PRD and progress for A7 Phases 1-4 completion
chipsenkbeil Apr 5, 2026
e5f15bd
Update TODO.md for A7 Phase 1-4 completion
chipsenkbeil Apr 5, 2026
5478ef1
Fix force unmount and nonexistent mount ID error reporting
chipsenkbeil Apr 5, 2026
1fd7484
Add singleton mount for shared tests — 16x speedup for mount test suite
chipsenkbeil Apr 5, 2026
f1b39dc
Add nobrowse to NFS mount options on macOS
chipsenkbeil Apr 5, 2026
9bb5e2b
Add nobrowse to FUSE mount options on macOS
chipsenkbeil Apr 5, 2026
6b2749f
Fix NFS unmount hangs: soft mount, proper shutdown ordering, timeouts
chipsenkbeil Apr 5, 2026
1a58672
Format: reflow anyhow::anyhow! call
chipsenkbeil Apr 5, 2026
c16ebb2
Fix singleton mount resilience, FP app staleness, and unmount_all iso…
chipsenkbeil Apr 5, 2026
68ce37d
Increase mount test parallelism from 2 to 8 threads
chipsenkbeil Apr 5, 2026
24b73f6
Fix FP app staleness check: compare size + mtime, not just mtime
chipsenkbeil Apr 5, 2026
4c013ce
Fix FP mount (inject extra metadata) + add Docker singleton
chipsenkbeil Apr 5, 2026
7b148ae
Fix FP mount singleton liveness check
chipsenkbeil Apr 5, 2026
2f20f30
Restore pub on plugin_x_mount template (required by rstest_reuse)
chipsenkbeil Apr 5, 2026
04d7c7f
Update PRD and progress: 219/228 tests passing, 9 FP remaining
chipsenkbeil Apr 5, 2026
8f6620c
Hold FP singleton handle in MountSingletonHandle to prevent lonely ti…
chipsenkbeil Apr 5, 2026
fdcddb3
Add manual CLI benchmarks to PRD and document FP root cause
chipsenkbeil Apr 5, 2026
4c0a370
Update PRD: FP confirmed working manually, document stale domain root…
chipsenkbeil Apr 5, 2026
8232a59
Fix FP mount_point discovery, socket mismatch, and stale domain cleanup
chipsenkbeil Apr 5, 2026
b07d3dd
Update progress: 11/37 FP tests pass, 26 fail on appex connectivity
chipsenkbeil Apr 5, 2026
05f9685
FP unmount now removes domain from macOS (was a no-op)
chipsenkbeil Apr 6, 2026
ba2987c
Add FileProvider disconnect/reconnect migration and ghost entries to …
chipsenkbeil Apr 6, 2026
9f0c834
Fix FP mount_point discovery, socket mismatch, and stale domain cleanup
chipsenkbeil Apr 6, 2026
b6b07d6
Update progress: 20/37 FP tests pass, appex connectivity fixed
chipsenkbeil Apr 6, 2026
df782cd
Signal enumerator on bootstrap, wait for FP mount readiness
chipsenkbeil Apr 6, 2026
5b5dcb9
FP: working set polling, configurable poll_interval, --extra CLI flag
chipsenkbeil Apr 6, 2026
86d794d
All 37 FP tests pass: wait_for_path + working set polling
chipsenkbeil Apr 6, 2026
eb0747b
docs: move mount PRD/progress to repo root, embed network resilience …
chipsenkbeil Apr 7, 2026
b6ea29c
feat(core): add TCP keepalive on all sockets via TcpTransport::set_ke…
chipsenkbeil Apr 7, 2026
063a1f6
feat(core): terminate connections after consecutive heartbeat failures
chipsenkbeil Apr 7, 2026
2b1a2bf
fix(test-harness): gate FileProvider singleton on the mount feature
chipsenkbeil Apr 7, 2026
5e1d1ee
feat(core,host,ssh,docker): add Plugin::reconnect and reconnect_strategy
chipsenkbeil Apr 7, 2026
1cab529
feat(core,ssh,docker): backend health detection with server self-term…
chipsenkbeil Apr 7, 2026
ce7cccd
feat(core): manager connection health monitoring via ConnectionWatcher
chipsenkbeil Apr 7, 2026
52ab230
feat(core): generic Subscribe/Event protocol for manager push notific…
chipsenkbeil Apr 7, 2026
eba8509
feat(core): manager-driven plugin reconnection orchestration
chipsenkbeil Apr 7, 2026
543f013
feat(cli): generic event subscription + manual reconnect command
chipsenkbeil Apr 7, 2026
2234acb
feat(cli): add --no-reconnect and server heartbeat CLI flags
chipsenkbeil Apr 7, 2026
ae850c5
feat(core): MountStatus enum + Event::MountState
chipsenkbeil Apr 7, 2026
d8efb62
feat(core): MountHandle::probe trait extension
chipsenkbeil Apr 7, 2026
46caad5
feat(core): per-mount monitor task + ManagedMount restructure
chipsenkbeil Apr 7, 2026
9ff6cd0
feat(mount): MountHandle::probe implementation for all backends
chipsenkbeil Apr 7, 2026
9e8e5ea
test(core,cli): Phase 5 health monitoring tests
chipsenkbeil Apr 7, 2026
6de03b1
docs: roll up Network Resilience + Mount Health completion
chipsenkbeil Apr 7, 2026
5f0cb34
docs: post-mortem + Phases E–K for Test Quality & Stability
chipsenkbeil Apr 7, 2026
9924b5c
docs: revised test architecture diagrams + Phases E–L (research-driven)
chipsenkbeil Apr 7, 2026
cb4ca00
feat(core): custom Deserialize for Msg<T> preserves inner errors
chipsenkbeil Apr 9, 2026
4629160
feat(core): include target type and byte length in deserialize errors
chipsenkbeil Apr 9, 2026
7198146
feat(core): log payload hex preview on server-side decode failures
chipsenkbeil Apr 9, 2026
6c84af0
feat(core): log payload hex preview on client-side decode failures
chipsenkbeil Apr 9, 2026
3af7ffc
docs: wire-protocol error visibility interlude
chipsenkbeil Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions .claude/commands/mount-test-loop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Mount Backend Fix & Test Loop

Iteratively fix production bugs, improve test infrastructure, and achieve
a fully green mount test matrix with zero workarounds.

## Context Files

Read these at the start of every iteration:

1. `PRD.md` — architecture, phases, dependencies, active plan
2. `PROGRESS.md` — current completion status
3. `docs/MANUAL_TESTING.md` — full test case descriptions
4. `docs/TESTING.md` — naming conventions

## Phase Order & Dependencies

```
A1 (FUSE+SSH fix) ──→ B2 (remove skip macro) ──→ C1 (cross-backend)
A2 (readonly) ──→ C1
A3 (TTL CLI) ──→ C2 (TTL tests)
A4 (FP template) ──→ B4 (FP fixture) ──→ C1
A5 (TODOs) → D3
B1 (polling) → C1
B3 (test hacks) → C1
B5 (Windows script) — independent
```

## Key Patterns

### Agent Usage

Use custom agents from `.claude/agents/` per CLAUDE.md:
- **rust-explorer** for investigating bugs (A1, A2)
- **rust-coder** for production fixes (A1-A4) and test infra (B1-B5)
- **code-validator** after any production code change (BLOCKING)
- **test-implementor** for test rewrites (C1-C2)
- **test-validator** after test changes (BLOCKING)

### MountProcess + Template

All tests use `#[apply(super::plugin_x_mount)]` with `skip_if_no_backend!`.
See PRD for full pattern.

### Polling Helpers (Phase B1)

Replace `wait_for_sync()` (2s sleep) with:
```rust
mount::wait_until_exists(&ctx, &path); // polls 200ms, 10s timeout
mount::wait_until_content(&ctx, &path, expected);
mount::wait_until_gone(&ctx, &path);
```

## Iteration Protocol

### Step 1: Select Next Item
Pick the first `[ ]` item in progress.md whose dependencies are met.
`[-]` items take priority.

### Step 2: Implement
- Production fixes: use rust-explorer → rust-coder → code-validator pipeline
- Test changes: use test-implementor → test-validator pipeline
- `cargo fmt --all` + `cargo clippy --all-features --workspace --all-targets`

### Step 3: Test
```bash
cargo nextest run --all-features -p distant -E 'test(mount::)'
```

### Step 4: Update Progress
Mark `[x]` when done. Mark `[-]` with notes if partial.

### Step 5: Report
```
== Mount Fix Loop Iteration ==
Item: A1 — Fix FUSE+SSH EIO bug
Status: [x] Complete
Details: Root cause was X, fixed by Y
Next: A2 — Enforce readonly on WCF + FP
```

## Rules

- **One item per iteration** (unless items are trivially small)
- **Always update progress.md**
- **Respect dependency order**
- **All tests must pass** before moving on
- **Use nextest** (not `cargo test`)
- **Commit after each phase milestone** (A complete, B complete, etc.)
- **Use custom agents** per CLAUDE.md pipeline
8 changes: 8 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ max-threads = 4
[test-groups.pty-tests]
max-threads = 4

[test-groups.mount-integration]
max-threads = 8

[profile.default]
fail-fast = false
leak-timeout = { period = "500ms", result = "fail" }
Expand Down Expand Up @@ -53,3 +56,8 @@ test-group = 'ssh-integration'
filter = 'test(shell::) | test(spawn::)'
test-group = 'pty-tests'

# Mount tests use singleton servers that outlive individual test processes
[[profile.default.overrides]]
filter = 'test(mount::)'
test-group = 'mount-integration'
leak-timeout = { period = "1s", result = "pass" }
Loading
Loading