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
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# 📋 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 L122–125, CMD_FULL L189, spawn dispatch L210, delegate_agent L319, child-PID L339, YAML entry L423), resume (RESOLVED_BIN branch L89–91 collapsed correctly to a single `command -v` block), stop (own-id capture L291–292), status (artifact check L93–96), reconcile (drift-C block L785–828 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** (`cline` → `hermes`, `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]
|
||||
Reference in New Issue
Block a user