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
7.6 KiB
Peer Review Report: Branch fix/issue-12-8-7 (Round 2 — Commits 0fedae2 & ea911d7)
- Reviewer: agy (session:
herdr:reviewer-agy-01) - Job ID:
3f5d1cd4 - Role: Reviewer
- Target Branch:
fix/issue-12-8-7 - Base Commit:
8a09e02(v4.4.3) - Evaluated Commits:
e629cc1—fix(issue-12,8,7): keep broker password out of records, keep fresh install stamps, pack sibling workspaces4176d75—release(v4.4.4): bump framework and eight skills to 4.4.4 in lockstep0fedae2—fix(issue-12): scrub-secrets selects only records with a stored passwordea911d7—fix(issue-8,7): harden install_state merge and pin sibling-workspace edge cases
1. Executive Summary
This Round 2 peer review evaluated the complete branch fix/issue-12-8-7 up to ea911d7, focusing specifically on the resolutions introduced in commits 0fedae2 (N1 fix from Claude's Round 1 review: value-based filtering in scrub-secrets) and ea911d7 (non-blocking hardening recommendations for update.sh install_state merge and two new edge-case tests for Issue #7 workspace packing).
Key verifications completed:
- Commit
0fedae2(N1 Resolution):_cmd_scrub_secretsnow strictly testsbroker.get("password")(value truthiness) rather than key presence. Unauthenticated records with"password": null(~900 in realistic registries) are ignored, preventing spurious rewrite churn and lock contention. Dry-run verified on live.mam/jobs(0 records reported). - Commit
ea911d7(Update Hardening):deploy/update.shensures trailing newline on preexistinginstall_state, skips lines missing=, and utilizesawkwith literal variable passing for exact key comparison ($1 == k). Failure recovery viarestore_on_failureis intact. - Commit
ea911d7(Issue #7 Workspace Edge Cases): Two new automated tests intest_issue7_workspace_packing.pyconfirm:- An idle pane in a subsequent candidate workspace is reused before attempting splits or workspace creation.
MAM_WS_LABELrename applies exclusively to the chosen target workspace.
- Version Lockstep v4.4.4: Maintained consistently across
lib.sh,eager.py, 8SKILL.mdmanifests,VERSIONS.md, and documentation files. - Test Suite Verification: 13/13 targeted tests and 231/231 regression tests passed cleanly with 0 job registry leaks.
2. Review of Commit 0fedae2 (Issue #12: Value-Based Password Scrubbing)
2.1 Value-Based Record Selection
- In
.agents/skills/lib_py/delegation/registry.py(_cmd_scrub_secrets):# Old: if not (isinstance(broker, dict) and "password" in broker): continue # New (0fedae2): if not (isinstance(broker, dict) and broker.get("password")): continue - Analysis:
- Legacy records created under previous versions without authentication stored
"password": null. - Testing
broker.get("password")ensures only truthy values (non-empty strings containing actual passwords) trigger migration. - Records with
None,"", or omitted"password"keys are untouched. - Verified on live workspace:
registry.py --registry-dir .mam/jobs scrub-secrets --dry-runreportswould scrub 0 record(s) under .mam/jobs, avoiding unnecessary rewrites.
- Legacy records created under previous versions without authentication stored
2.2 Documentation & Specification Alignment
registry.md: Clarifies thatscrub-secretsstrips stored passwords, leaving empty/null keys to be dropped naturally on the record's next write via_atomic_write_record.VERSIONS.md: Section 2 updated to emphasize that"password": nullis not treated as a secret and is neither reported nor rewritten.
2.3 Automated Test Coverage
- In
tests/test_issue12_registry_secrets.py,test_scrub_secrets_cli_migrates_a_registrywas expanded to create an unauthenticated job record with"password": None. - Verifies:
empty not in dry.stdout(dry run ignores null password).empty_path.read_text() == empty_before(file is not modified).- Only genuine leaked passwords are reported and scrubbed.
3. Review of Commit ea911d7 (Issue #8: update.sh Merge Hardening)
3.1 Install State Trailing Newline Guard
- In
deploy/update.sh:Guarantees that an existingif [ -s .mam/install_state ] && [ -n "$(tail -c1 .mam/install_state)" ]; then printf '\n' >> .mam/install_state fiinstall_statemissing a final newline does not concatenate appended keys onto the last line.
3.2 Non-KV Line Rejection
- Lines lacking
=are skipped safely:case "$line" in *=*) ;; *) continue ;; esac
3.3 Exact Key Matching without Regex Side-Effects
- Previously used
grep -q "^${key}=", which could interpret regex metacharacters in key names. - Now uses
awk:if ! awk -F= -v k="$key" '$1 == k { found = 1 } END { exit !found }' .mam/install_state; then printf '%s\n' "$line" >> .mam/install_state fi - Exact literal string equality
$1 == kprevents false matches and escapes. - Full cycle verified via
tests/test_issue8_update_state.py.
4. Review of Commit ea911d7 (Issue #7: Workspace Packing Edge Cases)
Two new regression tests were added to tests/test_issue7_workspace_packing.py:
test_idle_pane_in_a_later_workspace_is_reused:- Configures
w1as full (4 agents) andw2with 1 active agent and 1 idle pane (w2:p_idle). - Starts 7th agent: verifies the candidate traversal checks
w1, continues past overflow, checksw2, finds the idle pane, and starts the agent directly onw2:p_idlewithout splitting or creating a workspace.
- Configures
test_ws_label_rename_targets_only_the_chosen_workspace:- Configures
w1(4 agents, full) andw2(1 agent). - Starts 8th agent with
MAM_WS_LABEL="team-b". - Confirms that only the target workspace
w2is renamed:[["workspace", "rename", "w2", "team-b"]]. Preceding full candidate workspaces are untouched.
- Configures
Both tests pass and accurately pin critical edge-case behaviors.
5. Version Lockstep v4.4.4 Verification
All components remain strictly locked at 4.4.4:
.agents/skills/lib.sh:MAM_VERSION="4.4.4".agents/skills/lib_py/loop/eager.py:FRAMEWORK_VERSION = "4.4.4"- Frontmatter
version: 4.4.4across all 8 skills (create,stop,resume,status,monitor,delegate-job,loop,orc-onboard). VERSIONS.md: Current release v4.4.4, 8-row skills matrix, v4.4.4 changelog.- Badges and headers in
README.md,README.ko.md,BOOTSTRAP.md,BOOTSTRAP.ko.md, andMESSAGING.md. lib_py.loop.eager.verify_framework_version(): Verified OK.
6. Test Suite & Registry Integrity Audit
6.1 Targeted Test Execution
Command:
.venv/bin/python -m pytest tests/test_issue7_workspace_packing.py tests/test_issue8_update_state.py tests/test_issue12_registry_secrets.py tests/test_version_consistency.py
Result: 13 passed in 19.47s (100% success).
6.2 Regression Test Execution
Command:
.venv/bin/python -m pytest tests/test_herdr_shim_contract.py tests/test_layout.py tests/test_deploy_layout.py tests/test_issue5_phase1_delegation.py tests/test_issue5_phase2a_loop.py tests/test_loop_cli.py tests/test_issue5_phase4_runtime.py
Result: 231 passed in 128.99s (100% success).
6.3 Sandboxing & Leak Verification
- Baseline
.mam/jobsfile count before execution: 2405 - File count after full test execution: 2405
- Leak delta: 0 files created or modified in live registry.
7. Conclusion
The updates in 0fedae2 and ea911d7 cleanly resolve the N1 finding and further harden update and workspace packing operations. All verification criteria are fully satisfied.
[VERDICT: PASS]