- Add plan-c107763c (Rev 1 & Rev 2 with creator critique and refinements) - Add report-b11cf3b2 (planner-reviewer-claude-01 PASS) - Add report-c9796d8c (reviewer-creator-grok-01 PASS) - Add report-8e6b346e (reviewer-opencode-01 PASS)
3.5 KiB
3.5 KiB
Cross-review: v4.1.2 pane-resolution / idle-reuse PATCH
- Reviewer:
reviewer-creator-grok-01 - Job:
c9796d8c - Source:
bug-report/mam_upstream_bug_fix_report.mdplus livelib.sh/opencode.py/ tests /VERSIONS.md(working tree vsa18f9f8) - Method: each of the four report items was re-derived from source, not from the field report or
plan-c107763c.mdat face value.
The four reported issues
| # | Report | Independent finding | Landed? |
|---|---|---|---|
| 1 | _resolve_herdr_pane_id generic agent_kind fallback misattributes an unrelated same-kind pane |
Real. YAML-derived kind + len(matching)==1 returns a foreign pane (e.g. live orchestrator agy for dead creator-agy-01). has-session then skips restore. |
Fixed. Kind fallback gated on tn == agent_kind or tsa == agent_kind. Exact-match loop no longer keys on 'agent', so a bare-kind search cannot skip the R-1 multi-match fail-closed. Tests: test_r2_*, test_r3_*. |
| 2 | opencode.py::resume_spec should drop the materialized gate |
Not a defect of that form. __main__.py resume-spec sets mat = adapter.verify_artifact(uuid, ctx) when workspace+uuid are present; resume_session.sh always passes $WORKSPACE. Stripping the gate would send --session for unverified ids. |
Correctly not applied. Changelog documents the rejection. |
| 3 | ready_tokens ASCII banner |
Already fixed in v4.1.1. Live string is already 'OpenCode|Chat|Ask anything|tab agents|ctrl\\+p|Build auto|commands'. |
No action (stale report). |
| 4 | new-session never reuses an idle pane |
Real. Existing-ws path always split. | Fixed. First idle (not p.get('agent')) pane becomes target_pane; otherwise existing layout/split/overflow. Finding A: $env_flags + HERDR_WORKSPACE_ID replayed via env prefix on $final_cmd so reuse does not drop documented KEY=VAL tokens. Tests: test_h24_*, test_h25_*. |
Issue 2 — extra note (does not change the reject)
The plan/changelog line that all five adapters share the same if materialized and session_uuid shape is slightly overstated: claude.py and grok.py still attach the uuid on a non-materialized path (--session-id). agy / hermes / opencode do not. That does not make the proposed opencode-only gate removal the right PATCH; it means a later diagnostic of a real resume miss should log verify_artifact, not delete the gate.
SemVer v4.1.2 PATCH
Correct class (internal reliability; no public --agent / flag / YAML own-key change). Lockstep:
lib.sh:32MAM_VERSION="4.1.2"VERSIONS.mdheaderv4.1.2, matrix prosev4.1.2, 8 rows, changelog### 🛠️ \v4.1.2`` (v4.1.1 section preserved)- 8×
SKILL.mdversion: 4.1.2
Tests (this reviewer)
pytest tests/test_c1_tui_readiness.py tests/test_herdr_shim_contract.py \
tests/test_version_consistency.py tests/test_a4_adapter_contract.py \
tests/test_b19_headless_reconcile_fixes.py tests/test_tier2_component.py -q
→ 123 passed in 218.97s
bash -n .agents/skills/lib.sh clean.
Residual nits (do not block)
${env_flags//--env /}+ unquotedenv $idle_env $final_cmdstill word-splits; same class of quoting the split path already had. Out of PATCH scope as the plan states.- Current-release overview dropped the v4.1.1 architecture bullets (changelog for 4.1.1 remains).
commands/Chatremain generic strong tokens (v4.1.1 leftover).
No [ESCALATE: PLANNER].
[VERDICT: PASS]