Files
multi-agent-mux/.agents/reports/reviewer-agy-01/report-3f82b402.md
T
GodopuandClaude Opus 5.5 bf8a583afb docs(v4.8.5): archive PR #48 reviews (three rounds) and record the merge-workspace review
PR #48 already carries the 4.8.5 lockstep bump. Merge-workspace review:
round 1 (@35935f9) claude agy grok NOT PASS (test portability: tomllib on
Python 3.9, /proc and /tmp on macOS), codex no verdict (model at capacity,
budget spent); fixed in 36f0b8d and e8d9151. Round 2 (@e8d9151) codex NOT
PASS (unrunnable config check passed an unchecked merge, odd pids closed a
pane, nan dropped the user's settings); fixed in ab93776. Round 3
(@ab93776) 4/4 PASS. Full suite at ab93776 on macOS / Python 3.9: 1456
passed / 0 failed / 38 skipped. Reports and the round-3 identity sidecars
go to .agents/reports/<session>/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
2026-10-05 18:56:38 +09:00

7.5 KiB

PR #48 (fix/issue-45, Closes #45) Round 2 Delta Review Report

  • Reviewer Agent: agy (session: herdr:reviewer-agy-01)
  • Job ID: 3f82b402
  • Verification Directory: /var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/mam-review/loop-20261005T081844Z-e92124/1
  • Base Commit: c5c7eff6f758c76ac37a138dbc3c301f3f7e10cf (main, v4.8.4)
  • Head Commit: e8d9151226d8139c7b5688e83d035a3a747aeb2d (v4.8.5)
  • Delta Under Inspection: 35935f9..e8d9151 (commits 36f0b8d and e8d9151)

1. Executive Summary

In Round 1 (f3699a96), the review concluded with [VERDICT: NOT PASS] strictly due to cross-platform and environment compatibility issues on macOS under Python 3.9 (missing tomllib in Python < 3.11, /proc/{pid}/environ absence on macOS, and /tmp vs /private/tmp symlink divergence causing test assertion failures).

The Creator has applied targeted, high-quality fixes across commits 36f0b8d and e8d9151. The changes are strictly confined to test suites and documentation, leaving production code (lib.sh, lib_py/herdr_config.py, lib_py/herdr_restore.py, resume_session.sh) stable and untouched.

All 5 issues identified during Round 1 by agy have been completely and cleanly resolved. The test suite passes cleanly both under the host's Python 3.9 environment (152 passed, 30 skipped) and Python 3.11 (51 passed, 0 skipped).


2. Round 1 Findings Resolution Matrix

# Round 1 Finding (Job f3699a96) File & Line Round 2 Resolution (Commits 36f0b8d, e8d9151) Verification Status
1 Unconditional import tomllib crashing pytest collection under Python 3.9 tests/test_issue45_herdr_config.py:16 Wrapped import tomllib in a try...except ImportError block; defined @needs_tomllib decorator skipping tests requiring TOML parsing when tomllib is None (22 passed, 29 skipped under 3.9; 51 passed under 3.11). CLOSED (Verified)
2 Hardcoded import tomllib causing execution failure in test_bootstrap_hands_the_server_a_no_restore_config under Python 3.9 tests/test_issue9_server_env.py:154 Removed inline import tomllib. Replaced with a dynamic subprocess parser invoking the active python3 binary on PATH. Verifies full JSON parsed output when tomllib is present, or asserts fallback to minimal config and stderr warning when absent. CLOSED (Verified)
3 Linux-specific /proc/{pid}/environ path causing FileNotFoundError on macOS tests/test_issue45_restore.py:227 Added helper function _process_env(pid) that detects /proc/{pid}/environ existence, falling back gracefully to ps -E -ww -o command= -p <pid> on macOS / BSD environments. CLOSED (Verified)
4 macOS /tmp vs /private/tmp symlink mismatch causing failure in assert cwd == str(rig.root) tests/test_issue45_restore.py:263 In fixture rig, resolved the temporary directory with .resolve() (root = Path(tempfile.mkdtemp(prefix="m45", dir="/tmp")).resolve()), ensuring canonical /private/tmp alignment with herdr's reported cwd. CLOSED (Verified)
5 macOS /tmp vs /private/tmp symlink mismatch causing StopIteration during pane cwd search tests/test_issue45_restore.py:325 Resolving root via Path(...).resolve() resolved the cwd mismatch for next(p for p in ... if p.get('cwd') == str(rig.root)). CLOSED (Verified)

3. Delta Code Review Details (35935f9..e8d9151)

3.1. tests/test_issue45_herdr_config.py (Commit 36f0b8d)

  • Import Guarding: Gracefully handles missing tomllib standard library on Python < 3.11.
  • Skipping Strategy: 29 unit tests asserting deep AST / dictionary equivalence of merged TOML configs are decorated with @needs_tomllib. Tests testing paths, file naming, collision avoidance, and permissions continue to execute under Python 3.9.
  • Verification: Under Python 3.9, 22 tests pass and 29 skip without errors. Under Python 3.11, all 51 tests pass.

3.2. tests/test_issue45_restore.py (Commit e8d9151)

  • Canonical Root Resolution: root = Path(tempfile.mkdtemp(prefix="m45", dir="/tmp")).resolve() resolves macOS symlinks cleanly.
  • Cross-Platform Process Inspection: _process_env(pid: int) cleanly splits /proc/{pid}/environ by \0 when present, or extracts environment variables from ps -E -ww -o command= -p <pid>.

3.3. tests/test_issue9_server_env.py (Commit e8d9151)

  • Seamlessly validates dual behavior:
    • If python3 on PATH has tomllib, confirms full configuration merge {"ui": {"confirm_close": False}, "session": {"resume_agents_on_restore": False}}.
    • If python3 lacks tomllib, confirms minimal config fallback (resume_agents_on_restore = false), absence of unmerged user keys (confirm_close), and emission of the "no tomllib" warning on stderr.

3.4. Documentation (SKILL.md & VERSIONS.md)

  • multi-agent-mux-create/SKILL.md:121 explicitly documents the runtime requirement:

    "Building that file needs tomllib (Python 3.11+) in the python3 on PATH; with an older python3 (macOS ships 3.9) restore is still off, but the file holds only that key, so the MAM server runs without your other herdr settings and the bootstrap prints a warning saying so."

  • VERSIONS.md under v4.8.5 changelog reflects both the Python 3.11+ requirement and the test suite portability improvements across macOS and Linux.

4. Verification & Test Execution Results

All verification was conducted strictly inside the designated review worktree (/var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/mam-review/loop-20261005T081844Z-e92124/1).

4.1. Primary Test Suite (Python 3.9 Host Environment)

AGENT_PYTHON_BIN=/Users/godopu16/PuKi/laa/canary_projects/multi-agent-mux-wt/pr-48/.venv/bin/python \
PYTHONDONTWRITEBYTECODE=1 \
/Users/godopu16/PuKi/laa/canary_projects/multi-agent-mux-wt/pr-48/.venv/bin/python \
  -m pytest -p no:cacheprovider -q --basetemp=/tmp/pytest-pr48-r2 \
  tests/test_issue45_herdr_config.py \
  tests/test_issue45_restore.py \
  tests/test_issue9_server_env.py \
  tests/test_issue23_24_startup_path.py \
  tests/test_issue42_skill_blocks.py \
  tests/test_version_consistency.py

Result:

  • Exit Code: 0
  • Output: 152 passed, 30 skipped in 211.50s (0:03:31)

4.2. Python 3.11 Compatibility Sanity Check

PYTHONPATH=.agents/skills:/Users/godopu16/PuKi/laa/canary_projects/multi-agent-mux-wt/pr-48/.venv/lib/python3.9/site-packages \
/opt/homebrew/bin/python3.11 \
  -m pytest -p no:cacheprovider -q --basetemp=/tmp/pytest-pr48-py311 \
  tests/test_issue45_herdr_config.py

Result:

  • Exit Code: 0
  • Output: 51 passed in 0.40s

5. Non-Blocking Architectural Note

  • Python < 3.11 Config Merging: In Round 1, grok suggested bundling a tomli backport for environments with Python < 3.11. The project decision to rely on standard library tomllib (Python 3.11+) and fall back to minimal config with an explicit warning is well-founded:
    1. Multi-Agent-Mux relies on zero extra external runtime dependencies for core shell shims.
    2. On hosts running macOS default Python 3.9, the default user herdr configuration is minimal, and restoring without extra settings safely satisfies Issue #45.
    3. The behavior is fully documented in create/SKILL.md and VERSIONS.md. Therefore, this design choice is accepted as complete and non-blocking.

6. Final Verdict

All Round 1 blockers have been resolved with precision. No regressions or unintended mutations were introduced.

[VERDICT: PASS]