Files
multi-agent-mux/.agents/reports/reviewer-hermes-01/report-2562f9c9.md
T
Godopu f57cd5cdde feat(agent): deprecate and completely remove cline agent support
- Delete adapters/cline.py and unregister from registry.py
- Remove cline branches from lib.sh and all 8 skill scripts (create, resume, stop, status, reconcile, update_yaml_resumed, resolve_session_id, orc_onboard)
- Narrow own-key mapping dictionaries across lib_py core modules to 4 supported agents
- Delete cline-exclusive tests and retarget shared fixtures to grok/hermes/claude
- Update skills documentation and installation guides (439 passed, 0 failures)
- Archive cline deprecation consensus and review reports
2026-08-28 22:38:48 +09:00

8.2 KiB
Raw Blame History

📋 Code Review Report — Complete Removal of cline Agent Support (Job 2562f9c9)

  • Reviewer: reviewer-hermes-01 (role: reviewer)
  • Reviewed diff: 31 files, +135/411 — full cline removal per the GM's REMOVE decision, executed against .agents/reports/cline_deprecation_opinion.md §5 blast radius and plan .agents/reports/planner-reviewer-claude-01/plan-264c3b5d.md (Rev.2)
  • Baseline for comparison: merged HEAD e0c0c10 (hermes modernization, previously reviewed by me in jobs b45fb1d4/ca4539e8)
  • Method: full-diff read; framework-wide residual grep -i cline over .agents/skills/, tests/, deploy/, docs/; syntax checks on all 10 modified shell scripts + 11 Python files; test-count delta analysis; full suite execution. No code modified by this review.

1. Verification Evidence

# Check Result
1 Full test suite 439 passed, 0 failures (607.5 s)
2 Test-count sanity (plan §8 requirement) 441 → 439 collected (2 = exactly the two cline-only tests test_o31_cline_node_launcher_id_format and test_o39_cline_orchestrator_exclusion deleted per plan §5; all other retargeted tests preserved as renamed/redirected cases). Matches plan's "decreased by roughly the number deleted, not increased or unchanged" gate.
3 Residual cline references Zero matches for -i 'cline' across .agents/skills/, tests/, deploy/, docs/ (all file types) — the removal is total in live surface. (.agents/reports/** history correctly untouched per plan §6/§8 preservation constraint.)
4 Syntax: bash -n on all 10 modified/affected shell scripts; py_compile on registry/atomic_yaml/verify_session/workspace_uuid + 6 test files all clean
5 Adapter + registry cline.py deleted; registry.py no longer imports/registers it
6 4 lib_py core modules own-key tuples/dicts reduced to 4 agents in atomic_yaml.py, verify_session.py, workspace_uuid.py
7 lib.sh 5 mechanisms kind mapping case + 2 grep fallbacks removed; binary-strip tuple → 4-agent; comment ~/.cline dropped; send_keys_safe case arm removed; paste-skip list retains claude/agy/grok membership (mechanism preserved per plan §3); whitespace-normalization comment de-attributed from cline but mechanism kept
8 9 skill scripts all cline branches/cases/tuples removed exactly per plan §4 — spot-verified against the plan's line list: create (auth gate L122125, CMD_FULL L189, spawn dispatch L210, delegate_agent L319, child-PID L339, YAML entry L423), resume (RESOLVED_BIN branch L8991 collapsed correctly to a single command -v block), stop (own-id capture L291292), status (artifact check L9396), reconcile (drift-C block L785828 fully deleted, id_name tuple → agent == 'claude' per plan's style recommendation), orc_onboard (cline_re + argv parsing arm + env var + own-key list), run_loop (elif branch), update_yaml_resumed (PID capture + elif branch)
9 Docs 5 SKILL.md/README + deploy/INSTALL.md + implementation_plan.md + docs/NEW_AGENT_INTEGRATION_GUIDE.md (all 5 hardcoded sample sites fixed: diagram, _ADAPTERS dict, kind mapping, binary tuple, test-assertion sample)
10 Test retargeting fidelity (the plan's core preservation principle) verified concretely: test_c3 now uses a test-local mock_py facts-bridge shim with genuinely differentiated strong/weak tokens ('MockApp' vs 'Use arrow keys') and wait_for_tui_ready dummy-sess mocktiered — this keeps the real bridge call in the loop exactly as the plan's Rev.2 challenge-fix required (not raw env-var injection, which would have bypassed the [ -z … ] gate); test_c8b retargeted end-to-end to claude's real modal (Try the new fullscreen renderer?) with a claude session name, preserving the session-name→facts→modal→RC=2 path; test_o32 strengthened (cline-format IDs now asserted rejected: "1785635248957_fajon" added to the bad-list — correct since cline_re is gone); 2-tier round-trip assertions added to the facts-bridge contract test (STRONG=/WEAK= for all 4 remaining agents)
11 Unrelated-regression check on shared logic send_keys_safe's marker/paste/submit flow, wait_for_tui_ready's tier decision logic, and verify_session_uuid are structurally untouched apart from cline membership removal

2. Deviations from the plan (all assessed as acceptable or improvements)

  1. stop_session.sh usage() lost two lines not required by the plan ("Stop is always graceful and always captures the conversation id. / (idempotent: …)"). These lines were true before and after this change — their deletion is unrelated to cline removal. It is a small drive-by docs deletion; content is still true and was mildly useful. Low-impact; flag for the committer to either restore the two lines or confirm intentional.
  2. tests/test_o2_race_free_lock.py::acquire_bg reworked (fixed 0.3 s sleep → marker-file polling loop up to 2 s). Nothing to do with cline — this is a test-flakiness fix for a race between lock acquisition and the test's first assertion. Reasonable hardening, but it is an unrelated change riding in a cline-removal diff; it is defensible under "keep the suite green while removing cline" if the old timing proved flaky during this work (plausible — the lock script changed nothing, but sandbox timing may have). No action required; noted for change-transparency.
  3. implementation_plan.md team line (clinehermes, grok) and deploy/INSTALL.md agent list edits: the plan said "spot-check, don't blanket-edit" these docs for actively misleading mentions — an agent-listing that includes a now-removed agent qualifies as actively misleading, so these edits fall inside the plan's exception clause. Acceptable.
  4. test_a4_adapter_contract.py gained new assertions (2-tier default contract, STRONG/WEAK facts-bridge round-trip) — these implement plan §5's Rev.2 addition; verified present and passing.

3. Non-blocking observations

  1. [Low — pre-existing, now moot for cline] The claude drift-C block's missing sibling-exclusion (the Rev.3 consensus §6.1 item) is not addressed here — correctly, since the plan explicitly scoped it out as orthogonal to cline removal. It remains the one open modernization gap; recommend it be tracked as its own follow-up job rather than silently absorbed.
  2. [Info] docs/NEW_AGENT_INTEGRATION_GUIDE.md's ASCII diagram edit preserves alignment acceptably; no rendering breakage observed.
  3. [Info] test_tier2_component.py usage-text loops now assert grok instead of cline — consistent with the scripts' actual usage() output (verified by the passing suite).
  4. [Info] The consensus/plan/report artifacts (clline_deprecation_opinion.md, plan-264c3b5d, plan-a33a133e, report-073e27d4, report-d1fe1a99, report-2e6f01f4) are included in the diff as new tracked files under .agents/reports/ — consistent with the durable-promotion convention in MULTI_AGENT_RULES.md §4.

4. Risk Assessment

The three plan-flagged risk items are all addressed: (a) the reconcile.sh drift-C block deletion's boundaries were verified against live code (block fully gone, adjacent hermes block intact, result = { assembly intact); (b) orc_onboard's ancestor-walk mechanism was kept generically with only cline's case arm removed (plan §4 recommendation followed); (c) the test-count sanity check passes exactly. The suite's 439/439 green plus zero residual references means no cline path remains reachable, and the other four agents' coverage is demonstrably unchanged in structure.

5. Verdict

The removal is complete, surgical, and matches the planned blast radius with only two minor unrelated edits (stop_session.sh usage lines, o2 flakiness fix) that are individually defensible but worth the committer's awareness. All preservation constraints from the consensus doc §5 were honored: generic mechanisms (whitespace-normalized paste matching, paste-skip list, _pane_quiescent, 2-tier readiness, modal contracts) retained; generic-mechanism tests retargeted rather than deleted, with the facts-bridge genuinely still exercised; historical .agents/reports/** untouched.

[VERDICT: PASS]