Files
multi-agent-mux/.agents/reports/planner-reviewer-codex-01/report-eb60f37d.md
T

3.7 KiB
Raw Blame History

Review report — PR #73 / Issue #71

Reviewed validation snapshot /var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/mam-review/loop-20261026T133440Z-c8961b/2: head 5f6065344f800c2c5ad6f802e95e9e8ff5cc7b26, tree 98d57bdc60920238c115ece90c90cc694f2744bc, base 29cc4fd90478936f15387a7665e2c95d13a3f14c. The snapshot was clean; git diff --check reported no whitespace errors. No source files were changed.

Findings

No blocking or non-blocking defects found in this pass.

The earlier rowless-stop finding about HERDR_SESSION_NAME=default was re-adjudicated in job f40aa3bd and withdrawn. That environment value is treated as unset by create: create_session.sh:179-187,251-256 chooses the workspace server unless the caller supplies --herdr-session. Rowless stop follows the same resolution (stop_session.sh:109-130; lib.sh:1681-1712). The prior probe put an agent on default without the explicit option, a state that invocation of create would not produce. Deliberate default-server selection remains possible with --herdr-session default and the stop command accepts the same explicit option.

Review checks

  • attach_command is centralized in lib_py/agents/sanitize.py and used by create (create_session.sh:512,566), resume (update_yaml_resumed.sh:119,151,161), and reconcile (reconcile.sh:569,676). Coverage checks default server rendering, shell quoting, normalized names, and attach argument forwarding.
  • Runtime references to removed start_command and kill_command fields are gone; only migration compatibility docs/code and assertions remain. The shim’s new-session and kill-session routes are still needed by the lifecycle scripts. Cleanup guidance now directs to the stop skill (create_session.sh:364, lib_py/agents/id_order.py:342-345).
  • Rowless stop validates strict registry readability (stop_session.sh:169-173), refuses purge without a row (124-126), resolves cwd/root canonically before checking containment (145-154), and leaves registry bytes untouched (156-164). The safety and exit-code cases are covered by the new tests and the stop skill table (SKILL.md:58-67).
  • The bash sanitizer is defined once (lib.sh:44-82), uses verified hash fallbacks, and errors when no conversion/hash tool is available. On macOS Bash 3.2, names containing İ, -n, and a trailing newline matched Python under LC_ALL=C and LC_ALL=C.UTF-8.
  • Registry migration updates all named rows and format metadata (registry_format.py:35-66) before caller mutation under BEGIN IMMEDIATE (atomic_yaml.py:78-88); stale YAML is repaired from DB state (127-138). atomic_dump_yaml is the only sanctioned registry YAML writer. Future versions are not downgraded. The migration entry point’s output/error contract is documented and implemented in registry_format.py:17-25,69-88.
  • StallWatch computes the normalized herdr name once and passes it to its source (stall_watch.py:229); its unchanged test passes.
  • S11’s baseline 0fc162e exists and is an ancestor of this head. Python 3.9.6 and Bash 3.2.57 are the host versions used. The scope excludes Issue #72’s update skill.

Verification

Commands used the required PYTHONDONTWRITEBYTECODE=1, -p no:cacheprovider, and --basetemp outside the validation checkout.

  • Head combined review run (all requested focused and adjacent suites): 461 passed, 1 skipped in 1295.97s. This included test_issue71_herdr_names.py, test_issue66_stall_watch_sanitized_name.py, tier 1/2/3, Issues 23/24, 50, 21, 63, 60, layout, and skill blocks.
  • Base Issue #71 regression run from the temporary base snapshot: 68 failed, 2 passed in 121.85s, matching the expected base behavior.
  • Unicode/name parity probe under C and C.UTF-8: outputs matched Python.
  • git diff --check: clean.

[VERDICT: PASS]