# 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 111–166) 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]
