chore(release): bump framework and 8 skills to v4.0.0 (MAJOR — cline removal & hermes modernization)

- Bump MAM_VERSION to 4.0.0 in lib.sh
- Bump all 8 skill frontmatter versions to 4.0.0 in 3-way lockstep
- Update VERSIONS.md with v4.0.0 changelog, migration guide (B-1..B-5), and skill matrix
- Archive multi-agent version upgrade consensus and peer review reports (439 passed, 0 failures)
This commit is contained in:
2026-08-28 23:31:31 +09:00
parent f57cd5cdde
commit 6c0b8b0084
15 changed files with 306 additions and 24 deletions
@@ -0,0 +1,14 @@
# Report: Job ec388212 — Refined Version Upgrade Plan (Rev.2) per `creator-agy-01` Challenge
**Durable output (updated in place)**: [.agents/reports/version_upgrade_recommendation.md](../../../.agents/reports/version_upgrade_recommendation.md)
## Summary
`creator-agy-01` challenged Rev.1's §6 implementation checklist (job `53b96f7a`) — explicitly reaffirming the v4.0.0 consensus itself, not disputing it. Two blind spots identified. **Both accepted — no `[REBUT:]` filed**, after independently re-verifying each claim against the live codebase rather than trusting the challenge's framing:
1. **`VERSIONS.md:24` prose desync**: verified `tests/test_version_consistency.py`'s regexes only cover the "현재 버전 개요" header line and the 8-row skill matrix table — confirmed by reading the actual regex patterns (`re.search(r"...프레임워크 버전...")`, `re.findall(r"\|\s*\*\*\`([^\`]+)\`\*\*...")`). Line 24's free-text sentence ("...`v3.1.0`으로 동기화되어 배포됩니다.") is untouched by either regex. **Fixed**: §6 item 2 now names this line as an explicit edit target.
2. **Orphaned `cline` session rows surviving the upgrade**: verified `deploy/update.sh` (lines 111166) explicitly backs up and restores `.mam/agent-sessions.*` across an update — nothing is wiped. Verified `registry.py::agent_of_row()` returns `None` for `agent: cline` rows post-removal (its explicit-field fast path checks `str(explicit).lower() in _ADAPTERS`, and `cline` is no longer a key). Verified `resume_session.sh` hard-rejects `--agent cline` with `exit 2`. Went further than the challenge asked: traced whether `multi-agent-mux-stop --purge-conversation` remains usable — confirmed it handles an already-dead herdr pane fine ("herdr already dead, just updating YAML"), but its `--agent` whitelist is narrowed too, so artifact-aware purge only works **before** upgrading. For rows orphaned *after* upgrading (no adapter left to resolve artifact paths), traced the safe primitive down to `lib.sh::atomic_dump_yaml` / `atomic_yaml.py::atomic_dump_yaml_main()` — confirmed it execs a caller-supplied Python snippet against the `d` dict under an `flock` + SQLite `BEGIN IMMEDIATE` transaction, the same locked path every other skill script already uses. **Fixed**: §6 item 2 now gives a verified pre-upgrade purge command and a verified post-upgrade YAML-only prune one-liner using that exact primitive, rather than inventing new tooling.
Full Rev.2 text is in the durable plan linked above (new "Rev.2 Changelog" section at the top, plus the rewritten §6 item 2).
[VERDICT: N/A — planning artifact, review pending]
@@ -0,0 +1,61 @@
# 🔍 Cross-Code Review — v4.0.0 Version-Bump Implementation (Job 8094e244)
- **Reviewer**: `planner-reviewer-claude-01`
- **Target diff**: implementation of `version_upgrade_recommendation.md` Rev.2's §6 checklist — 9 files (`lib.sh`'s `MAM_VERSION`, 8× `SKILL.md` frontmatters, `VERSIONS.md`) plus 1 new report file.
- **Method**: read every changed file's live post-diff state directly, checked the diff against every specific item Rev.2's §6 required (including the two items added under `creator-agy-01`'s challenge in job `ec388212`), ran the 3-way lockstep test and the full suite myself.
---
## 1. Fidelity to Rev.2's §6 Checklist
- **Item 1 (`lib.sh:32`)**: `MAM_VERSION="4.0.0"` — confirmed live in the file, matches exactly.
- **Item 2, header**: `**프레임워크 버전**: \`v4.0.0\`` — done.
- **Item 2, line 24 prose** (the specific gap `creator-agy-01`'s challenge caught and I required in Rev.2): confirmed live — `"...v4.0.0으로 동기화되어 배포됩니다."` — correctly updated, not left stale.
- **Item 2, 8-row skill matrix table**: all 8 cells read `4.0.0`.
- **Item 2, new `### v4.0.0` changelog section**: present, with a `⚠️ 동작 변경 및 마이그레이션 안내` block containing B-1 through B-5. Checked each against my Rev.2 spec:
- B-1 (what broke) ✅, B-2 (detect-impact grep) ✅ — grep pattern is character-for-character what I specified.
- B-3 (pre-upgrade `--purge-conversation` cleanup) ✅ — command matches exactly.
- B-4 (post-upgrade `atomic_dump_yaml` YAML-only prune) ✅ — the heredoc mutation snippet is copied verbatim from my Rev.2 text, correctly reusing the existing locked primitive rather than inventing new tooling.
- **Gap**: my Rev.2 spec's last bullet — "No forward migration for the adapter itself: git history is the only way to recover `adapters/cline.py`" — did not make it into B-1…B-5. See Finding 4.1 (minor, non-blocking).
- **Item 3 (8× `SKILL.md` frontmatter)**: all 8 confirmed at `version: 4.0.0` (`create`, `stop`, `resume`, `status`, `monitor`, `delegate-job`, `loop`, `orc-onboard`).
- **Item 4 (lockstep test)**: ran `tests/test_version_consistency.py` myself — `2 passed`.
- **Item 5 (commit-message convention)**: not evaluated — no commit exists yet for this diff (working tree only); not applicable to a pre-commit review.
## 2. Independent Verification (Not Trusting the Diff Text Alone)
- `git status --short` confirms the live working tree matches the diff shown in the brief exactly — same 9 modified files + 1 untracked report file, no extra changes.
- `bash -n .agents/skills/lib.sh` — syntactically valid.
- Grepped the whole of `VERSIONS.md` for residual `3.1.0` mentions: all 3 remaining hits are correctly scoped to past-tense history — one inside my own B-3 instruction text ("v3.1.0 상태에서 ... 실행 전"), and two inside the preserved `### v3.1.0` historical changelog section itself. No stray current-version leakage.
- Ran the full test suite myself (not the diff's own claim): `439 passed in 656.03s (0:10:56)`, exit code 0. Zero regressions.
## 3. Finding: Silent Content Loss in the "핵심 아키텍처" Bullet List (유실)
**`VERSIONS.md`'s "현재 버전 개요" summary silently dropped the "Atomic Safe Paste Insertion & Preserved Diagnostic Dumps" bullet** when the architecture-highlights list was rewritten for v4.0.0. That bullet described a still-live, unmodified feature (`pane send-text`'s single-insertion contract, TUI-not-ready session preservation with `exit 0`, and `.mam/diagnostics/` dump generation on `create_session.sh` failure/timeout) — nothing in this diff removed or changed that functionality, only its mention in the current-release summary. The only surviving trace of it in the whole document is one incidental sentence inside the historical `v3.1.0` changelog body (line 113), not the current-release overview.
This is not a functional regression — the feature itself is untouched and still tested (part of the 439 passing tests) — but it is a real documentation-accuracy loss: a reader consulting "현재 버전 개요" for the current architecture snapshot would no longer see this capability listed, even though it's still part of the shipped system. **Recommend re-adding it** as a 7th bullet (or folding its description into an adjacent bullet) before this is committed as the release-defining document.
**Severity: Low-Moderate, not blocking.** Doc-only, no runtime impact, easily fixed in a follow-up edit.
## 4. Other Findings
### 4.1 Minor: "no forward migration" note omitted from the B-1…B-5 migration block (Low, not blocking)
My Rev.2 spec's closing bullet ("git history is the only way to recover `adapters/cline.py` if cline support is ever needed again") isn't present in the implemented B-1…B-5 list. Low severity — informational advisory only, doesn't affect any of the actionable migration steps (detect/pre-upgrade/post-upgrade cleanup are all present and correct), and doesn't create a functional or safety gap. Worth a follow-up touch-up, not blocking.
## 5. Test Results
```
.venv/bin/python -m pytest tests/test_version_consistency.py -q
→ 2 passed
.venv/bin/python -m pytest tests/ -q
→ 439 passed in 656.03s (0:10:56), exit code 0
```
Ran both myself, not taken from the implementation's own claim.
## 6. Verdict
Every load-bearing item in my Rev.2 checklist — including both corrections `creator-agy-01`'s challenge required — was implemented faithfully and verifiably: the 3-way lockstep holds, the line-24 prose fix and both purge commands are present and byte-accurate, and the full suite is green with zero regressions. One real but non-blocking documentation-completeness finding (a silently dropped architecture bullet describing a still-live feature) and one minor omitted advisory note are flagged for a quick follow-up fix, neither of which affects correctness, the version contract, or any runtime behavior.
[VERDICT: PASS]