7.0 KiB
Review Report — Job 4fd933af
- Reviewer: cline (herdr session
reviewer-cline-01, role: reviewer) - Job ID: 4fd933af
- Reviewed branch:
main(1 commit ahead oforigin/main) - Scope: Cross code review (lint / operability / drift) of (a) the committed
layout-engine enhancement
f3ac68fand (b) the untracked roadmap document.agents/reports/new_agent_types_roadmap.md. Task goals: validate layout correctness, assess new-agent-extension roadmap feasibility, issue verdict.
1. Change Inventory
| Item | File(s) | Status |
|---|---|---|
| Layout relax | lib_py/layout.py, lib.sh:432, .mam.env.example, tests/test_layout.py, tests/test_tier1_unit.py |
Committed (f3ac68f) |
| New-agent roadmap | .agents/reports/new_agent_types_roadmap.md (new, 229 lines) |
Untracked |
Commit f3ac68f — "feat(layout): relax MAM_MIN_PANE_COLS to 15 and remove
vertical height constraints for scrollable terminal split":
compute_2xk_layoutdefaults:min_cols40→15,min_rows20→0.- CLI
--min-cols/--min-rowsargparse defaults: 15 / 0. lib.sh:432fallbacks:${MAM_MIN_PANE_COLS:-15}/${MAM_MIN_PANE_ROWS:-0}.- Both height-overflow guards now short-circuit on
min_rows > 0 and ...(single-pane and singleton-column paths), so defaultmin_rows=0disables vertical constraints while a positive env value re-engages them. .mam.env.exampleupdated (default 15 / 0, terminology aligned to tmux horizontal=side-by-side / vertical=top-bottom).- Tests rewritten to assert
min_cols=15boundary (30 split vs 29 overflow) andmin_rows=0behavior.
2. Lint / Syntax / Drift
python -m py_compile lib_py/layout.py→ OKbash -n .agents/skills/lib.sh→ OK- Stale-default sweep (
:-40,:-20,min_cols: int = 40,min_rows: int = 20,default=40,default=20) across.agents/tests→ clean (no orphans). All authoritative default sites are consistently 15 / 0. - Working-tree drift: only the roadmap file is untracked; no stray/dirty submodule or out-of-scope edits this round (cleaner than the prior review).
3. Layout Implementation — Operability Verification
Goal: dense tiling in compact viewports without premature overflow
- Column boundary (
width // 2 < min_cols, strict<): at width 30 →30//2 = 15,15 < 15False → splits right; at width 29 →29//2 = 14 < 15→column_width_overflow. CLI-confirmed: 30-col →right p1, 29-col →overflow p1. ✓ min_rows=0disables height checks: a single 80×3 pane →down p1(splits down; scrollback rationale holds). With an explicit positiveMAM_MIN_PANE_ROWS, themin_rows > 0 and ...guards re-engage thesingle_pane_height_constrained/singleton_height_overflowpaths — so the disable is opt-out, not a hard removal. Well-designed. ✓- Tiling progression (1→2 down, 2→3 right, 3→4 fill-singleton down, 4→5 overflow) unchanged in structure; only thresholds moved. The 54×23 / 90–100 col scenarios described in the roadmap now fit 4 panes per workspace where the old 60/20 defaults could not even open a 2nd column. ✓
Tests
tests/test_layout.py+tests/test_tier1_unit.py→ 85 passed in 9.11s.tests/test_a4_adapter_contract.py→ 13 passed in 0.47s.
4. New-Agent-Types Roadmap — Feasibility Assessment
The roadmap (new_agent_types_roadmap.md) is a planning/architecture document,
not executable code. Its value rests on the accuracy of its codebase references
and the soundness of its blueprint. Both verified:
| Roadmap claim | Verification | Result |
|---|---|---|
Adapter framework lib_py.agents with BaseAgentAdapter |
lib_py/agents/{base.py,registry.py,sanitize.py,input_region.py,adapters/} exist |
✓ |
BaseAgentAdapter interface (name, own_key, ready_tokens, exit_key, delegate_agent_key, identity_cache_fields, input_prompt, input_rule_pattern, artifact_path, verify_artifact, purge_artifacts, spawn_spec, resume_spec, auth_ok, discover) |
All symbols present in base.py at the cited lines |
✓ exact |
DiscoveryContext used in template code |
class DiscoveryContext at base.py:15 |
✓ |
Step 2: add 'newagent': NewAgentAdapter() to _ADAPTERS |
registry.py _ADAPTERS dict registers claude/agy/hermes/cline exactly this way |
✓ proven pattern |
Step 3.1: herdr kind mapping lib.sh:358-375 |
kind dispatch at lib.sh:357-371 (creator/planner/reviewer → kind) |
✓ (line off by ~4) |
Step 3.3: "automatic via agent_of_row()" |
agent_of_row() + matches_session_name() in registry.py |
✓ |
Step 5.1: contract tests test_agent_adapter_registry / test_adapter_required_properties / test_facts_bridge_eval_contract |
All three present in test_a4_adapter_contract.py (lines 28/58/79) |
✓ |
Step 5.2: tests/test_tier2_component.py |
File exists | ✓ |
Feasibility verdict: The 5-step blueprint (adapter class → registry →
lib.sh dispatch → herdr --kind → contract/lifecycle tests) is the correct
layering and is proven by the four existing adapters. The complexity matrix
(Tier 1 adapter ≈ 0.5 day; Tier 2 herdr-kind/lifecycle; Tier 3 TUI readiness)
is reasonable. The document is actionable as-is.
5. Findings (advisory, non-blocking)
F-1 (hygiene): Roadmap file is untracked
git status lists .agents/reports/new_agent_types_roadmap.md as untracked.
Since it is a deliverable referenced by this job's output contract, it should
be git add-ed and committed (e.g. docs(roadmap): new agent types extension blueprint) so the planning artifact persists. Content is fine; only tracking
state needs action.
F-2 (verification gap): Full-suite green not independently confirmed
The roadmap §1.1 asserts "all 371 tests across 18 suites pass." This review
confirmed 98 unit tests across all touched files plus the adapter-contract
suite, but did not re-run the full integration suite within the time budget.
Direction: confirm the full pytest tests/ is green in CI before merge;
no code change implied.
F-3 (doc wording nit): min_rows=0 is "disabled-by-default", not "removed"
Roadmap §1.1 says vertical constraints were "removed." Precisely, the guards
are min_rows > 0 and ..., so a positive MAM_MIN_PANE_ROWS env value
re-engages height checks. The doc slightly understates this opt-in
re-enablement. Direction: one-line wording fix ("disabled by default;
re-enabled by setting MAM_MIN_PANE_ROWS>0") for operator accuracy. Non-blocking.
6. Summary
The committed layout change correctly and consistently relaxes min_cols to
15 and defaults min_rows to 0 (disabled-by-default, re-engaged via env) with
matching, passing tests (98 verified green) and clean syntax. The new-agent
roadmap is a feasible, accurately-referenced blueprint grounded in the real
adapter framework (every cited file, symbol, and test verified to exist). The
three findings are commit-hygiene / verification-gap / wording nits that do
not affect correctness, operability, or feasibility, and require no redesign.
[VERDICT: PASS]