docs: close B-5 macOS NFS detection issue, update IMPROVEMENTS.md and VERSIONS.md

This commit is contained in:
2026-08-17 10:09:09 +09:00
parent ac97550e13
commit 7e21077ded
3 changed files with 131 additions and 25 deletions
@@ -0,0 +1,119 @@
# Cross-Code Review: B-5 macOS NFS Detection `df -P` Fallback Verification & Closure
- **Job ID**: `f20724aa`
- **Reviewer**: cline (session: `herdr:canary-projects-multi-agent-mux-creator-cline`)
- **Task**: Review and resolve B-5 backlog item — validate macOS NFS detection via `df -P` fallback in `_check_is_nfs`, close B-5 in IMPROVEMENTS.md, document in VERSIONS.md, run full tests for 100% PASS.
- **Date**: 2026-08-17
- **Base Commit**: `ac97550`
- **Changeset**: 2 files modified (`IMPROVEMENTS.md`, `VERSIONS.md`) — documentation-only, no production code changed.
---
## 1. Changeset Overview
### 1.1 Scope
| File | Status | Lines Changed | Nature |
|---|---|---|---|
| `IMPROVEMENTS.md` | Modified (tracked) | +12 / -25 | Backlog documentation: B-5 closure + stale-entry cleanup |
| `VERSIONS.md` | Modified (tracked) | +3 / -0 | Version history: B-5 closure entry under v2.0.0 |
**No production code modified.** The `df -P` fallback in `lib.sh:1184-1186` and the unit test `test_stop_check_is_nfs_local` in `tests/test_tier1_unit.py:126-130` already existed in prior commits (`ea36e81` and earlier). This changeset is a formal documentation closure of B-5.
### 1.2 IMPROVEMENTS.md Changes
1. **Header (line 3)**: Updated date to mention B-5 closure.
2. **Header (line 5)**: Open count `5건``4건` (아키텍처 1건, 엣지케이스 4→3건).
3. **Header (line 6)**: Completed count `20건``21건`; `B-5` added to the completed ID list.
4. **Section 2 (line 70)**: Header `4건``3건`.
5. **Section 2**: Removed B-5 (newly closed), B-6 (already completed, stale entry), B-12 (already completed, stale entry), and B-8 (already completed, stale entry — confirmed completed via roadmap row P1-2 at line 145).
6. **Section 5 (line 92)**: Header `20건``21건`; new B-5 detailed entry added at line 94-95.
7. **Roadmap (line 245)**: Row `종결 권고``종결` with test reference.
### 1.3 VERSIONS.md Changes
---
## 2. Review Perspectives
### 2.1 Lint (린트) — ✅ PASS
| Check | Method | Result |
|---|---|---|
| `lib.sh` syntax (unchanged, but referenced) | `bash -n lib.sh` | ✅ OK |
| IMPROVEMENTS.md header count consistency | `grep` header vs section counts | ✅ 4건 = 1 arch + 3 edge |
| Section 2 item count | `grep '^### \*\*'` in lines 70-82 | ✅ 3 items (B-13, B-9, B-10) = "3건" |
| Section 5 item count | `grep '^### \*\*'` in lines 92-250 | ✅ 21 items = "21건" |
| B-5 absent from section 2 | `grep 'B-5'` in lines 70-82 | ✅ NOT FOUND (correct) |
| B-5 present in section 5 | `grep 'B-5'` in lines 92-250 | ✅ Found (line 94 + roadmap line 245) |
| Line reference `lib.sh:1181-1192` | `sed -n '1181,1192p'` | ✅ `_check_is_nfs()` starts at 1181 |
| Test name reference | `test_tier1_unit.py::test_stop_check_is_nfs_local` | ✅ Exists at line 126 |
| VERSIONS.md entry formatting | `sed -n '71,73p'` | ✅ Well-formed under v2.0.0 |
### 2.2 Operability (동작성) — ✅ PASS
| Check | Method | Result |
|---|---|---|
| `df --output=target` fails on macOS | `df --output=target . 2>/tmp/df_err.txt; echo rc=$?` | ✅ **rc=64** — "df: unrecognized option `--output=target'" (confirms original B-5 issue) |
| `df -P` fallback works | `df -P . 2>/dev/null \| tail -1 \| awk '{print $6}'` | ✅ Returns `/System/Volumes/Data` |
| mount grep evaluates correctly | `mount \| grep -i -q -E "$mountpoint.*(nfs\|cifs\|smb\|sshfs)"` | ✅ IS_NFS=no (local filesystem, correct) |
| Unit test `test_stop_check_is_nfs_local` | `pytest tests/test_tier1_unit.py::test_stop_check_is_nfs_local -v` | ✅ **PASSED** (0.08s) — asserts rc=1 for local non-NFS |
| Full regression suite | `pytest tests/ -q --tb=short` (background) | ✅ **263 passed in 391.80s (0:06:31)** — 100% PASS |
**Runtime verification was performed on this actual macOS machine** (darwin platform), confirming:
1. The GNU-only `df --output=target` flag fails with rc=64.
2. The POSIX `df -P` fallback at `lib.sh:1186` correctly resolves the mountpoint.
3. The `mount | grep` check at `lib.sh:1188` correctly evaluates the filesystem type.
4. The unit test validates local non-NFS detection (rc=1).
### 2.3 Loss (유실) — ✅ PASS
| Check | Method | Result |
|---|---|---|
| B-5 fully removed from open section 2 | `grep 'B-5'` in section 2 | ✅ No B-5 entry remains in open section |
| B-5 in completed list (header) | `grep 'B-5'` in line 6 | ✅ B-5 present in 21-item completed list |
| B-5 detailed entry in section 5 | `sed -n '92,95p'` | ✅ Full entry with line refs and test name |
| B-11 (split-off residual) preserved | `grep 'B-11'` | ✅ Documented at line 313 (mount-point ERE interpolation recommendation) |
| Roadmap row updated | `grep -n 'B-5'` at line 245 | ✅ "종결" with `test_stop_check_is_nfs_local` reference |
| VERSIONS.md entry added | `sed -n '71,73p'` | ✅ Entry 6 under v2.0.0 |
| No production code lost | `git diff --stat` | ✅ Only 2 doc files changed (12 insertions, 25 deletions) |
| Stale entries cleaned (B-6, B-8, B-12) | Section 2 grep | ✅ All three were already completed; removal is correct cleanup |
---
## 3. Worker Report Cross-Check
The Worker (`agy`, Job `21c6a451`) reported:
- `df --output=target` fails on macOS (empty output) → ✅ Confirmed (rc=64)
- `df -P` fallback returns `/System/Volumes/Data` → ✅ Confirmed on this machine
- Unit test `test_stop_check_is_nfs_local` exits with code 1 for local → ✅ Confirmed PASS
- IMPROVEMENTS.md counts updated (4 open, 21 completed) → ✅ Confirmed
- VERSIONS.md entry added → ✅ Confirmed
- Worker ran 112/112 subset tests → ✅ Reviewer ran full 263/263 (superset)
All worker claims are independently verified and accurate.
---
## 4. Minor Non-Blocking Observations
1. **Pre-existing stale conclusion text (line 317)**: "남은 백로그 항목(아키텍처 2건, 엣지케이스 6건, 오케스트레이션 1건, 레거시 잔재 3건 — 총 12건)" — this conclusion-section text does not match the current header (4건). **Not introduced by this changeset**; pre-existing. No action required for B-5 scope.
2. **B-11 not formally tracked as an open item**: The B-5 residual (mount-point ERE interpolation without escaping) is documented as a "split-off recommendation" at line 313 but has not been added to section 2 as a formal tracked open item. This is a pre-existing situation (the old B-5 entry also only mentioned B-11 as a recommendation). Consider formalizing B-11 as a tracked item in a future task, but this is outside B-5's scope.
3. **Documentation-only changeset**: No production code was changed. The `df -P` fallback logic and unit test already existed. This is the correct approach — B-5 was a verification/closure task, not an implementation task.
---
## 5. Verdict
The B-5 backlog item has been correctly verified and closed:
- The `df -P` POSIX fallback in `_check_is_nfs` (`lib.sh:1186`) works correctly on macOS, as confirmed by live runtime measurement on this machine (rc=64 for `df --output=target`, `/System/Volumes/Data` via `df -P`).
- The unit test `test_stop_check_is_nfs_local` validates the local non-NFS path (rc=1).
- B-5 is properly moved from open section 2 to completed section 5 in IMPROVEMENTS.md with accurate line references and test names.
- VERSIONS.md documents the closure under v2.0.0.
- All counts are internally consistent (4 open, 21 completed).
- The full regression suite passes: **263/263 PASS (100%) in 391.80s**.
- No production code was modified — the changeset is purely documentation.
[VERDICT: PASS]