docs: add VERSIONS.md, resolve C-6 stop_session usage/comments drift, and prune LOG.md

This commit is contained in:
2026-08-17 09:39:21 +09:00
parent 5ed39f899b
commit ac97550e13
8 changed files with 856 additions and 186 deletions
+42
View File
@@ -691,3 +691,45 @@ d['herdr_sessions'] = [{
row = conn.execute("SELECT status FROM sessions WHERE name='test-autorecovery-creator-claude'").fetchone()
assert row[0] == "terminated"
conn.close()
def test_comp_stop_usage_matches_parser(mam_sandbox):
"""C-6: help text and parser must not drift apart."""
script = mam_sandbox / ".agents" / "skills" / "multi-agent-mux-stop" / "scripts" / "stop_session.sh"
# 에이전트 접미사 추론(:91-100)이 성립하는 이름 — rc=2 의 다섯 원인 중
# 'cannot infer agent'(:98)를 배제하기 위함 (Challenge 8b6b574f)
VALID = "test-project-creator-claude"
# 1) --help 는 성공하고, 폐지된 플래그를 광고하지 않는다
res = subprocess.run(["bash", str(script), "--help"], capture_output=True, text=True)
assert res.returncode == 0
for dead in ("--mode", "--capture-id", "--graceful"):
assert dead not in res.stdout, f"usage() still advertises {dead}"
# 1b) 검증기가 받는 에이전트는 전부 도움말에 나온다 (Rev.2 M3)
for agent in ("claude", "agy", "hermes", "cline"):
assert agent in res.stdout, f"usage() omits supported agent {agent}"
# 2) 도움말이 광고하는 플래그는 전부 파서가 받는다
# rc=2 는 5가지 원인을 공유하므로 stderr 메시지로 직접 지목한다
for flag, args in (("--reason", ["--reason", "x"]),
("--purge-conversation", ["--purge-conversation"]),
("--yes", ["--yes"]),
("--agent", ["--agent", "hermes"])):
r = subprocess.run(["bash", str(script), "--session", VALID] + args,
capture_output=True, text=True)
assert "unknown arg" not in r.stderr, f"usage() advertises {flag} but parser rejects it: {r.stderr}"
assert "deprecated" not in r.stderr, f"usage() advertises deprecated {flag}: {r.stderr}"
assert r.returncode != 2, f"{flag} -> rc=2: {r.stderr}"
# 3) 폐지된 플래그는 전용 메시지와 함께 rc=2 로 거부된다 (특별 취급 유지)
for dead in ("--mode", "--capture-id", "--graceful"):
r = subprocess.run(["bash", str(script), "--session", VALID, dead, "hard"],
capture_output=True, text=True)
assert r.returncode == 2
assert "deprecated" in r.stderr
# 4) 헤더 주석도 폐지 플래그를 사용법으로 광고하지 않는다
head = "".join(script.read_text().splitlines(keepends=True)[:35])
assert "--mode soft|hard" not in head