Files
multi-agent-mux/.agents/reports/canary-projects-multi-agent-mux-creator-cline/report-b6fc4e5a.md
T

7.8 KiB
Raw Blame History

Cross-Code Review Report — Job b6fc4e5a (Re-review after fix)

  • Job ID: b6fc4e5a
  • Target: multi-agent-mux-orc-onboard skill + orchestrator_uuids exclusion gate in lib.sh
  • Reviewer: cline
  • Context: Re-review of the same changeset reviewed in job e7c13ec2 (which returned NOT PASS). The implementer has since applied the fix recommended in that prior review.
  • Scope: lint, behavior (동작성), loss (유실) of the uncommitted working-tree changeset:
    • M .agents/skills/lib.sh
    • M .gitignore
    • M deploy/gitea-ci.yml, M deploy/remove.sh
    • ?? .agents/skills/multi-agent-mux-orc-onboard/ (SKILL.md + scripts/orc_onboard.sh)
    • ?? tests/test_orc_onboard.py
  • Baseline commit: 1e1ab8c (changes uncommitted, reviewed against working tree)

1. Executive Summary

The prior review (job e7c13ec2) returned NOT PASS for two reasons: (a) the orc-onboard test suite was non-deterministic — test_o19/test_o33 failed 2/40 when run as a descendant of an orchestrator agent (the skill's own deployment context), and (b) stale test-pollution artifacts (d.db*, d.update*) were ungitignored in the repo root. The implementer has now fixed both issues:

  1. MAM_AUTODETECT_FORCE_FAIL testability hook added to detect_nearest_agent() in orc_onboard.sh; test_o19/test_o33 now set it → the autodetect-failure path is exercised deterministically regardless of process ancestry.
  2. .gitignore now includes d.db* and d.update* patterns.
  3. Bonus: the prior review's minor "equals-form argv parsing" edge note (-r=<uuid>) is also resolved — the regex now uses [[:space:]=]+ (matches both space and = forms).

The full orc-onboard suite now passes 40/40 in both foreground and detached contexts (deterministic), and the lib.sh-dependent regression subset passes 69/69 (no regressions). The implementation logic — previously verified correct in e7c13ec2 — is unchanged in substance.


2. Fix Verification (delta from prior review e7c13ec2)

2.1 MAM_AUTODETECT_FORCE_FAIL hook — orc_onboard.sh:76-79

detect_nearest_agent() {
  if [ "${MAM_AUTODETECT_FORCE_FAIL:-0}" = "1" ]; then
    return 3
  fi
  ...

Correctly placed at the top of detect_nearest_agent, before the process-tree walk, returning 3 (the autodetect-failure exit code). The hook is opt-in (defaults to 0), so the real autodetect-success path is unaffected — confirmed by test_o25test_o31 still passing. This makes the autodetect-failure path testable without depending on live process ancestry.

2.2 Test updates — test_o19 (line 331), test_o33 (line 537)

Both now pass env={..., "MAM_AUTODETECT_FORCE_FAIL": "1"} and assert returncode == 3. This is the exact fix recommended in the prior report (one env hook + two test edits), applied surgically.

2.3 .gitignored.db* / d.update*

+ d.db*
+ d.update*

Addresses the prior review's hygiene recommendation. Verified no stray d.db*/d.update* files remain in the repo root after a clean test run.

2.4 Bonus: equals-form argv parsing (lines 120/123/126)

The prior review noted --id=<uuid> (equals form) parsed empty because the regex only handled the space form. The implementer widened it to [[:space:]=]+, handling both forms:

  • (-r|--session-id)[[:space:]=]+[^[:space:]]+ (claude)
  • --conversation[[:space:]=]+[^[:space:]]+ (agy)
  • (--id|--session-id)[[:space:]=]+[^[:space:]]+ (cline)

Low-impact robustness improvement, consistent with the SKILL.md auto-detection spec.


3. Lint

Check Tool Result
orc_onboard.sh syntax bash -n PASS
lib.sh syntax bash -n PASS
orc_onboard.sh shellcheck shellcheck ⚠️ Not installed locally; deploy/gitea-ci.yml adds the required shellcheck .../orc_onboard.sh line (covered by test_o35). CI gate covers it.
lib.sh shellcheck shellcheck ⚠️ Not installed locally (pre-existing, not introduced by this change).

4. Behavior (동작성) — Test Results

4.1 tests/test_orc_onboard.py — DETERMINISTIC

Run context Prior review (e7c13ec2) This review (b6fc4e5a)
Foreground (pytest descendant of cline orchestrator session) 38 passed, 2 failed 40 passed (6.27s)
Detached / reparented to PID 1 40 passed 40 passed (6.34s)

The two previously-flaky tests (test_o19_autodetect_failure_exits_3, test_o33_no_workspace_cache_fallback) now pass deterministically in both contexts via the MAM_AUTODETECT_FORCE_FAIL hook. The non-determinism root cause (live process-tree ancestry) is bypassed for the failure-path tests, and the success-path tests (test_o25test_o31) remain unaffected. Full suite: 40/40 PASS.

4.2 Regression (lib.sh-dependent suites) — PASS

tests/test_uuid_target.py tests/test_b4_session_created.py tests/test_o1_rebuttal.py tests/test_deploy_layout.py tests/test_deploy_freshness.py tests/test_deploy_registry_merge.py69 passed in 103.07s. The lib.sh changes (orchestrator_uuids gate, verify_session_uuid/find_workspace_uuid exclusion, atomic_dump_yaml/load_state_json touchpoints) introduced no regressions — identical to the prior review's result.


5. Implementation Review (unchanged in substance from e7c13ec2; re-confirmed)

5.1 lib.sh — exclusion gate (correct)

  • _validate orchestrator_uuids: list, non-empty strings, no duplicates. (test_o20test_o22)
  • get_all_sessions_status: __orchestrator_uuids__ sha256 entry for reconcile change detection.
  • mam_orchestrator_uuids(): cached; MAM_ORCHESTRATOR_UUIDS override (empty/JSON/comma) → MAM_STATE_JSON → sqlite DB → YAML; malformed → stderr warning + degrade to [] (open gate). (test_o40)
  • mam_row_own_uuid(row): first non-null *_own across agent families.
  • verify_session_uuid discover exclusion: if mode=="discover" and uuid in mam_orchestrator_uuids() and uuid != mam_row_own_uuid(row): return False + workspace_key() normalization. (test_o39)
  • find_workspace_uuid discovery: builds orchestrator_ids, discards target's own UUID, emit() skips running_ids orchestrator_ids. (test_o1test_o16)

5.2 orc_onboard.sh (correct)

  • Arg parsing, is_valid_id (UUID + cline ^[0-9]{10,}_[0-9A-Za-z]+$), --list, running-session conflict (exit 1), atomic_dump_yaml mutation. (test_o17/test_o18/test_o38)
  • detect_nearest_agent(): process-tree walk, family basename match, argv-then-env extraction, stop at nearest agent ancestor, return 3 on failure. MAM_AUTODETECT_FORCE_FAIL hook short-circuits to return 3.
  • SKILL.md frontmatter + auto-detection hierarchy docs. (test_o37)

5.3 Deploy wiring

deploy/gitea-ci.yml (+shellcheck line) and deploy/remove.sh (+fallback_assets entry). (test_o34/test_o35)


6. Loss / Hygiene (유실)

  • No orphaned call sites: verify_session_uuid/find_workspace_uuid signatures preserved; 69-test regression confirms backward compatibility.
  • Artifacts now gitignored: d.db*/d.update* added to .gitignore; no stray files in repo root after a clean run. Prior hygiene issue resolved.
  • No regressions: lib.sh changes are behavior-preserving for non-orchestrator-uuid paths.

7. Verdict

The prior review's two blockers are both resolved:

  1. Non-deterministic test suite → fixed via MAM_AUTODETECT_FORCE_FAIL hook + updated test_o19/test_o33; suite now passes 40/40 deterministically in both foreground and detached contexts.
  2. Ungitignored test-pollution artifacts → fixed via .gitignore d.db*/d.update* patterns.

A bonus robustness fix (equals-form argv parsing) was also applied. The implementation logic is correct, atomic, and regression-free (69/69). No design-level rework is needed.

[VERDICT: PASS] [VERDICT: PASS]