Second-round reports of the fix/issue-12-8-7 review loop on ea911d7:
planner-reviewer-claude-01 (b368210a), reviewer-agy-01 (3f5d1cd4) and
reviewer-grok-01 (cc059645), all [VERDICT: PASS]. The codex review is
deferred until its usage limit resets; the branch merges only after it.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
This commit is contained in:
1 parent
ea911d7842
commit
9d52bb7024
3 files changed
+357
No files matched your search
@@ -0,0 +1,62 @@
|
||||
# 🔍 Review Report — Job cc059645 (`fix/issue-12-8-7` 2회차 @ `ea911d7`)
|
||||
|
||||
- **Reviewer**: `reviewer-grok-01` (role: reviewer) · 2026-09-13
|
||||
- **범위**: `git log`/`git diff` **`8a09e02...HEAD`** (루프 수집 diff 는 비어 있음)
|
||||
- **HEAD**: `ea911d7` `fix(issue-8,7): harden install_state merge and pin sibling-workspace edge cases`
|
||||
- **1회차 HEAD**: `4176d75` (grok PASS). 이번 초점: `0fedae2` (claude N1) + `ea911d7` (비차단 권고)
|
||||
- **안전**: 실제 `.mam/jobs` 에 `scrub-secrets` 미실행. 실제 홈 purge 없음. 소스 무변경. codex 세션 미접촉.
|
||||
|
||||
커밋: `e629cc1` → `4176d75` → **`0fedae2`** → **`ea911d7`**. `git diff --check 8a09e02...HEAD` 클린.
|
||||
|
||||
## (1) `0fedae2` N1 — scrub-secrets 값 기준 선택
|
||||
|
||||
`_cmd_scrub_secrets` (`registry.py:360`): `"password" in broker` → `broker.get("password")`. JSON `null`·빈 문자열·키 없음은 모두 falsy 라 목록에도 재기록에도 안 넣음. 값이 있는 문자열만 pop 후 `_atomic_write_record`. lock 범위는 그대로 전체 순회지만 **쓰기는 비밀이 있는 레코드만**.
|
||||
|
||||
`test_scrub_secrets_cli_migrates_a_registry`: dirty(`"leaked-earlier"`) 1건만 dry-run/실제 대상. `password: null` 레코드는 stdout 에 id 가 없고 파일 바이트 불변. 키 없는 clean 레코드도 불변. `--dry-run` 은 dirty 파일의 유출 문자열을 그대로 둠. 4176d75 에서는 null 키까지 세어 `would scrub 2` 가 났을 테스트.
|
||||
|
||||
`_atomic_write_record` 의 `_scrub_record_secrets` 는 여전히 키만 보면 pop — null 키는 **다음 일반 쓰기** 때 정리. scrub 가 901건을 재기록하지 않는 분업과 맞음.
|
||||
|
||||
문서: `VERSIONS.md` v4.4.4 항목 2, `registry.md:60-62` 가 “저장된 값만 / null 은 다음 쓰기”로 정합.
|
||||
|
||||
## (2) `ea911d7` #8 — install_state 병합 보강
|
||||
|
||||
`deploy/update.sh:243-256`:
|
||||
- 비어 있지 않고 마지막 바이트가 개행이 아니면 (`tail -c1` + `$(…)` 가 trailing newline 을 지우는 관용) `printf '\n'` — 첫 병합 키가 마지막 줄에 붙지 않음.
|
||||
- `case *=*` 로 `=` 없는 줄 무시.
|
||||
- `awk -F= -v k="$key" '$1 == k'` 정확 문자열 비교. `grep -q "^${key}="` 의 정규식 해석 없음.
|
||||
- 실패 `restore_on_failure` (`:168-171`) 는 세 파일 `cp -f` 그대로. 성공 경로만 변경.
|
||||
|
||||
`test_issue8_update_state.py` 실제 install→stale stamps→`update.sh --force` 통과(아래 스위트).
|
||||
|
||||
## (3) `ea911d7` #7 테스트 2건 — 실제 경로
|
||||
|
||||
`test_idle_pane_in_a_later_workspace_is_reused`: w1=4(overflow) + w2=1 + `state["panes"]` 에 agent 없는 `w2:p_idle`. mock `pane list` 는 에이전트 pane 에 `agent` 를 넣고 extra pane 은 안 넣으므로, `lib.sh:771` `not p.get('agent')` 가 w2 에서 idle 을 고름. split/create 없음, `agent start … --pane w2:p_idle`. idle 우선이 깨지면 w2 split 으로 실패.
|
||||
|
||||
`test_ws_label_rename_targets_only_the_chosen_workspace`: 같은 4+1 에서 `MAM_WS_LABEL=team-b`. `lib.sh:854-856` 은 선택된 `existing_ws` 에만 `workspace rename`. 호출 로그가 정확히 `["workspace", "rename", "w2", "team-b"]` — w1 이나 생성 경로 `--label` 이 아님.
|
||||
|
||||
## (4) 1회차 PASS 회귀 + 락스텝
|
||||
|
||||
#12 `to_registry_block` password 제외, env 복원, G6 `_cmd_scrub_secrets` 예외, `auth_token` 유지. #7 후보 순회·overflow `continue`·단일 ws 동치. #8 성공 경로 version/hashes 비복원. 회귀 없음.
|
||||
|
||||
`lib.sh`/`eager.py`/8 SKILL.md/VERSIONS.md 개요·매트릭스 / README·BOOTSTRAP·MESSAGING = **4.4.4**. 릴리스 커밋 `4176d75` 제목 유지. `env -u MAM_VERSION` 아래 `verify_framework_version` 통과. 현재 버전 안내 문서에 잔여 `4.4.3` 없음.
|
||||
|
||||
Non-blocking (1회차와 동일): 락스텝이 v4.4.3 품질 문장을 24/17 → 26/19 로 고친 것은 `fae70c1` 작업이지 이 베이스가 아님. v4.4.4 품질 불릿은 아직 “테스트 8개/issue7 3개” — 이후 테스트 2건·N1 보강은 changelog 항목 2·코드에만 반영. 기능 결함 아님.
|
||||
|
||||
## (5) 테스트
|
||||
|
||||
```
|
||||
env -u MAM_VERSION .venv/bin/python -m pytest -q \
|
||||
tests/test_issue7_workspace_packing.py tests/test_issue8_update_state.py \
|
||||
tests/test_issue12_registry_secrets.py tests/test_issue5_phase1_delegation.py \
|
||||
tests/test_issue5_phase2a_loop.py tests/test_herdr_shim_contract.py \
|
||||
tests/test_layout.py tests/test_deploy_layout.py tests/test_loop_cli.py \
|
||||
tests/test_issue5_phase4_runtime.py tests/test_version_consistency.py
|
||||
```
|
||||
|
||||
**244 passed in 134.54s** (1회차 242 + #7 테스트 2). `bash -n` lib.sh/`update.sh` 클린. 전체 스위트 미실행.
|
||||
|
||||
## 종합
|
||||
|
||||
N1(null password 901건 재기록)은 값 기준으로 닫혔고, install_state 병합과 #7 idle/rename 경로가 테스트로 고정됐다. 1회차 PASS 항목 회귀 없음. 설계 재작업 불필요.
|
||||
|
||||
[VERDICT: PASS]
|
||||
Reference in new issue
Block a user