14 KiB
Cross-Code Review Report — Job 7cc8f208
- Reviewer: cline (session:
herdr:canary-projects-multi-agent-mux-creator-cline) - Date: 2026-08-13
- Commit reviewed: Working tree changes (uncommitted, diff against HEAD
29f3a33) - Diff scope: 6 production files, +108/-35 lines
- Task: Cross-code review of multi-agent abstraction layer interfaces — lint, behavior, lossage perspectives
- Prior review: Job
2ac5b3dfidentified 5 findings (F-1 through F-5). This review verifies fixes and checks for regressions.
1. Changeset Overview
| # | File | Lines Changed | Summary |
|---|---|---|---|
| 1 | .agents/skills/lib.sh |
+47/-35 | kind detection refactored to case with role-based suffixes; derive_session_name adds [role] parameter with lowercasing; verify_session_uuid adds CWD verification for hermes/cline |
| 2 | .agents/skills/multi-agent-mux-create/scripts/create_session.sh |
+7/-1 | Agent validation; role passed to derive_session_name; CMD_FULL fix for wrapper path |
| 3 | .agents/skills/multi-agent-mux-monitor/scripts/reconcile.sh |
+43/-7 | Agent detection loop over roles+agents with MAM_MANAGED env fallback; role field added to entry |
| 4 | .agents/skills/multi-agent-mux-orc-onboard/scripts/orc_onboard.sh |
+3/-0 | Hermes case in detect_nearest_agent |
| 5 | .agents/skills/multi-agent-mux-status/scripts/status.sh |
+35/-6 | resume_on_disk refactored to role-aware agent detection loop with endswith patterns; hermes DB query; cline per-session file check |
| 6 | .agents/skills/multi-agent-mux-stop/scripts/stop_session.sh |
+8/-4 | Agent inference extended to planner/reviewer roles |
Key difference from prior review (job 2ac5b3df): This changeset includes fixes for F-1 (CRITICAL), F-2 (Low), and F-4 (Low) identified in the prior review. The status.sh changes are substantially expanded (+35 lines vs +14 in prior) with a proper agent detection loop and hermes/cline support.
2. Syntax Validation
| File | Check | Result |
|---|---|---|
lib.sh |
bash -n |
PASS |
create_session.sh |
bash -n |
PASS |
stop_session.sh |
bash -n |
PASS |
orc_onboard.sh |
bash -n |
PASS |
reconcile.sh |
bash -n |
PASS |
status.sh |
bash -n |
PASS |
tests/conftest.py |
py_compile |
PASS |
.mam/shim/herdr |
kind detection sync with lib.sh |
Verified identical (diff empty) |
All syntax checks pass. The shim (.mam/shim/herdr) kind detection code is byte-identical to lib.sh — sync is maintained.
3. Test Results
| Test File | Tests | Result |
|---|---|---|
test_herdr_shim_contract.py |
5 | 5/5 PASS |
test_tier1_unit.py |
29 | 29/29 PASS |
test_o2_race_free_lock.py |
22 | 22/22 PASS |
test_orc_onboard.py |
22 | 22/22 PASS |
test_o1_rebuttal.py + test_o3_scoped_guard.py + test_deploy_layout.py |
39 | 39/39 PASS |
test_sanity.py |
2 | 2/2 PASS (includes previously failing test_create_session_full) |
test_tier2_component.py |
— | Previously failing test_comp_create_sqlite_tables_created confirmed PASS individually; full suite timed out (tmux/reconcile overhead) |
test_tier3_integration.py |
— | Timed out (tmux overhead; uses --role Creator — expected PASS with F-1 fix) |
test_tier4_e2e.py |
— | Not run (tmux overhead; uses --role Creator — expected PASS with F-1 fix) |
test_uuid_target.py |
— | Timed out (tmux overhead; uses --role creator lowercase — expected PASS) |
Total confirmed: 99 PASS, 0 FAIL
Critical test verification
The two tests that FAILED in the prior review (2ac5b3df) due to F-1 (role casing bug) now PASS:
tests/test_sanity.py::test_create_session_full PASSED
tests/test_tier2_component.py::test_comp_create_sqlite_tables_created PASSED
2 passed in 28.18s
This confirms the F-1 fix (role=$(echo "$role" | tr '[:upper:]' '[:lower:]')) resolves the role casing mismatch.
4. Prior Findings Resolution (Job 2ac5b3df)
| Finding | Severity | Status | Details |
|---|---|---|---|
| F-1 | CRITICAL | FIXED | derive_session_name now lowercases role via tr '[:upper:]' '[:lower:]' (lib.sh:990). Previously failing tests now PASS. |
| F-2 | Low | FIXED | status.sh hermes branch now queries SELECT 1 FROM sessions WHERE id=? instead of just checking state.db existence (status.sh:87). Per-session verification. |
| F-3 | Low | ACCEPTED | kind detection fallback still doesn't check for "cline". Deemed acceptable trade-off in prior review — more correct than defaulting to "cline". No fix needed. |
| F-4 | Low | FIXED | status.sh now uses proper endswith loop: any(name.endswith(f'-{r}-{a}') for r in ('creator', 'planner', 'reviewer')) as primary check (status.sh:57). Fallback uses f"-{a}" in name (more precise than previous 'claude' in name). |
| F-5 | Info | ACCEPTED | reconcile.sh env marker fallback still uses macOS-specific ps eww. No impact on target platform (macOS). No fix needed. |
Summary: 3 of 5 findings fixed (F-1 CRITICAL + F-2/F-4 Low). 2 findings accepted as-is (F-3/F-5 — no fix needed).
5. Detailed Review by File
5.1 lib.sh — derive_session_name (lines 988-999) — F-1 FIX VERIFIED
Change: Added [role] parameter (default "creator") with lowercasing via tr '[:upper:]' '[:lower:]' before use in printf.
derive_session_name() {
local workspace="${1:-$PWD}" agent="${2:-}" role="${3:-creator}"
role=$(echo "$role" | tr '[:upper:]' '[:lower:]') # <-- FIX for F-1
...
printf '%s-%s-%s' "$slug" "$role" "$agent"
}
Assessment: The fix is correct and complete. The tr '[:upper:]' '[:lower:]' is POSIX-compliant and works on macOS. With this fix:
--role Creator->role="creator"-> session name...-creator-claude(correct)--role Planner->role="planner"-> session name...-planner-claude(correct)--role creator->role="creator"-> session name...-creator-claude(unchanged, backward compatible)- 2-arg calls (no role) -> default
"creator"->...-creator-claude(unchanged, backward compatible)
No new issues introduced.
5.2 lib.sh — kind detection (lines 268-283)
Change: case statement with role-based suffixes, grep fallback for non-standard names.
Assessment: Same as prior review. F-3 (fallback doesn't check "cline") is accepted as a trade-off. The case patterns correctly handle all standard session names produced by derive_session_name (which now always produces lowercase roles). No new issues.
5.3 lib.sh — verify_session_uuid CWD verification (lines 1510-1539)
Change: Hermes: SELECT cwd FROM sessions WHERE id=? + CWD comparison. Cline: found_cwd from JSON + CWD comparison.
Assessment: Security improvement. The workspace_key() normalization ensures path comparison is robust. The if found_cwd and ... guard maintains backward compatibility with older session formats. No issues.
5.4 create_session.sh — Agent validation + role passing + CMD_FULL (lines 85-88, 121, 175)
Change: Agent validation preflight; "$ROLE" passed to derive_session_name; CMD_FULL override for wrapper path.
Assessment: All three changes are correct. The agent validation catches invalid agent names early. The role is now passed through derive_session_name which lowercases it (F-1 fix). The CMD_FULL fix correctly removes --session-id when using the wrapper. No issues.
5.5 status.sh — resume_on_disk refactor (lines 55-98) — F-2/F-4 FIX VERIFIED
Change: Replaced single endswith('-creator-claude') check with a comprehensive agent detection loop:
agent = None
for a in ('claude', 'agy', 'hermes', 'cline'):
if any(name.endswith(f'-{r}-{a}') for r in ('creator', 'planner', 'reviewer')) or name.endswith(f'-{a}'):
agent = a
break
if not agent:
for a in ('claude', 'agy', 'hermes', 'cline'):
if f"-{a}" in name or f"_{a}" in name:
agent = a
break
F-2 fix: Hermes branch now queries SELECT 1 FROM sessions WHERE id=? (line 87) — per-session verification instead of just checking file existence.
F-4 fix: Primary check uses endswith with role-agent suffixes — precise matching. The fallback (lines 60-64) uses f"-{a}" in name which is more precise than the previous 'claude' in name (requires hyphen/underscore prefix).
New: cline branch (lines 93-97): Per-session file check {u}/{u}.json — correct.
Assessment: The refactor is well-structured. The primary endswith loop handles all standard session names. The fallback handles legacy/non-standard names. The name.endswith(f'-{a}') check (line 57) handles sessions without a role suffix (backward compatibility). No new issues.
5.6 reconcile.sh — Agent detection loop + env fallback (lines 494-526)
Change: Nested loop over roles x agents with endswith; MAM_MANAGED env marker fallback using ps eww; role field in entry.
Assessment: The loop correctly handles all role-agent combinations. Role is extracted and stored (line 555). The env fallback is a good defensive measure. F-5 (macOS-specific ps eww) is accepted. No new issues.
5.7 orc_onboard.sh — Hermes detection (lines 125-127)
Change: Added hermes) case matching (--resume|--session)[[:space:]=]+[^[:space:]]+.
Assessment: Correct regex. Consistent with resume_session.sh. No issues.
5.8 stop_session.sh — Agent inference (lines 93-97)
Change: Extended case patterns to include planner/reviewer for each agent.
Assessment: Correct. With F-1 fixed, session names always have lowercase roles, so the lowercase case patterns will match. No issues.
6. New Issues Check
Reviewed all changes for regressions or new issues introduced by the fixes:
-
trportability:tr '[:upper:]' '[:lower:]'is POSIX-compliant and works on macOS (BSD tr) and Linux (GNU tr). No portability issue. -
status.shfallback residual broadness: The fallbackf"-{a}" in name or f"_{a}" in name(lines 61-63) could still match workspace slugs containing agent-like substrings (e.g.,my-claude-project-creator-agywould match-claudein the fallback). However, this is only a fallback — the primaryendswithcheck (lines 56-59) handles all standard session names correctly. The fallback only activates for non-standard names where precise detection is inherently ambiguous. Acceptable — no fix needed. -
status.shname.endswith(f'-{a}')check: Line 57 checks for names ending with just-claude,-agy, etc. (without a role). This handles legacy sessions without role suffixes. Sincederive_session_namealways includes a role, new sessions won't match this, but it's correct for backward compatibility. No issue. -
reconcile.shenv markersplit()on spaces:env_output.split()could break ifMAM_MANAGEDvalue contains spaces. Edge case, unlikely in practice (workspace paths with spaces are rare in this context). Acceptable — noted but no fix needed.
No new issues or regressions found.
7. Positive Findings
- F-1 fix is correct and complete —
tr '[:upper:]' '[:lower:]'inderive_session_nameensures all session names have lowercase roles, matching all downstream pattern matching. - F-2 fix improves hermes status precision —
SELECT 1 FROM sessions WHERE id=?provides per-session verification instead of just checking file existence. - F-4 fix improves agent detection —
endswithloop with role-agent suffixes is precise; fallback is more targeted than previous'claude' in name. status.shcline support — New cline branch with per-session file check{u}/{u}.jsoncompletes agent coverage.status.shbackward compatibility —name.endswith(f'-{a}')check handles legacy sessions without role suffixes.verify_session_uuidCWD verification — Security improvement preventing cross-workspace session hijacking.create_session.shagent validation — Defensive preflight check.create_session.shCMD_FULLwrapper fix — Correct removal of--session-idfor wrapper path.orc_onboard.shhermes detection — Correct regex matching.reconcile.shrole extraction — Correct nested loop androlefield in entry.reconcile.shenv fallback — Good defensive measure for non-standard session names.- Shim sync —
.mam/shim/herdrkind detection is byte-identical tolib.sh. - Backward compatibility —
derive_session_name2-arg calls still work (default role"creator").
8. Summary
This changeset addresses all actionable findings from the prior review (job 2ac5b3df):
- F-1 (CRITICAL): Fixed.
derive_session_namenow lowercases the role parameter, ensuring session names always use lowercase roles. The two previously failing tests (test_sanity.py::test_create_session_fullandtest_tier2_component.py::test_comp_create_sqlite_tables_created) now PASS. - F-2 (Low): Fixed.
status.shhermes branch now queries the database for per-session verification. - F-4 (Low): Fixed.
status.shuses preciseendswithpatterns for agent detection. - F-3 (Low) and F-5 (Info): Accepted as-is — no fix needed (acceptable trade-offs).
The changeset also adds new positive features:
- Cline support in
status.shresume_on_disk - Hermes support in
orc_onboard.sh - CWD verification in
verify_session_uuidfor hermes and cline - Agent validation in
create_session.sh CMD_FULLfix for wrapper path- Role extraction in
reconcile.sh
No new issues or regressions found. All 99 confirmed tests PASS (including the 2 that previously failed). Syntax validation passes for all 6 modified files. Shim sync is maintained.
The changeset is ready for commit.
[VERDICT: PASS]