Files
multi-agent-mux/.agents/reports/creator-agy-01/report-155f5092.md
T
Godopu 47640e2fd7 fix(codex): resolve peer-review findings R1-R6 and T1-T2
- R1: use herdr send-keys C-c for graceful stop
- R2: preserve JSONL fallback discovery when database is empty
- R3: apply workspace-scoped SQLite query before bounding results
- R4: tighten artifact validation to fail closed on missing/invalid metadata
- R5: verify actual rollout presence before reporting resumable in status
- R6: remove unconditional drift-B backend command fallback
- T1: parameterize artifact metadata regression with verified finder fixture
- T2: seed unmanaged and managed sessions in mock herdr for drift-B testing
- Add final loop review reports (100% PASS)
2026-09-06 00:18:19 +09:00

61 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Job 155f5092 Final Report: Resolution of Follow-Up Findings T1 & T2
- **Job ID**: 155f5092
- **Reviewer Target**: `planner-reviewer-codex-01` (`ff721ed1`)
- **Status**: Completed (Both regression test findings T1 and T2 resolved and mutation-verified)
---
## 1. Summary of Changes
### T1 (P2): Invalid-metadata assertions only exercise "file not found"
- **Problem**: In `test_codex_verify_artifact_metadata_fail_closed`, the fixture file was placed outside the discovery path without the finder override being active for cases 1–5. Consequently, `verify_artifact` returned `False` on file existence before reaching metadata parsing, which allowed the old buggy verifier (from commit `76f10b2`) to pass the test.
- **Fix**:
- In `tests/test_a4_adapter_contract.py`, updated `test_codex_verify_artifact_metadata_fail_closed` to use pytest `monkeypatch`.
- Installed `adapter._find_rollout` monkeypatch override *before* running all assertions.
- Added an explicit assertion verifying that `adapter._find_rollout(uuid, ctx)` resolves the fixture file before evaluating malformed contents.
- Parameterized invalid metadata cases:
- `{}` (empty dict - R4 defect)
- `{"payload": {"cwd": ws}}` (missing `payload.id`)
- `{"payload": {"id": uuid}}` (missing `payload.cwd`)
- `{"payload": {"id": "other-id", "cwd": ws}}` (mismatched session ID)
- `{"payload": {"id": uuid, "cwd": "/wrong/path"}}` (mismatched workspace cwd)
- `"not-valid-json"` (malformed JSON syntax)
- `[]` (non-dict JSON)
- `{"payload": "not-a-dict"}` (non-dict payload)
- Added database/transcript metadata inconsistency test: DB has conflicting cwd, asserting fail-closed behavior even if rollout matches workspace.
- Retained a valid control case with matching DB cwd and transcript cwd, asserting `True`.
- **Mutation Verification**:
- Bound `old_verify_artifact` from commit `76f10b2` in memory: test **FAILED** with `AssertionError: Expected False for payload: {} (assert True is False)`.
- With current implementation: test **PASSED**.
### T2 (P2): Unmanaged-session test never supplies a session to drift-B
- **Problem**: `test_reconcile_drift_b_unmanaged_session_ignored` used a minimal custom mock script that did not support the `herdr ls -F "#{session_name}|#{session_created}"` or `herdr list-panes -F` query shapes used by `reconcile.sh`, meaning drift-B was never evaluated for the session.
- **Fix**:
- In `tests/test_tier1_unit.py`, updated `test_reconcile_drift_b_unmanaged_session_ignored` to use the contract-compatible `mock_herdr` fixture.
- Seeded `mock_herdr_state.json` with two sessions running `codex` in the workspace:
1. Unmanaged candidate: `"personal-session"` (unmanaged name, no `MAM_MANAGED` env marker).
2. Managed positive control: `"test-proj-creator-codex"` (standard managed name pattern).
- Asserted that both sessions are discoverable via `herdr ls -F "#{session_name}|#{session_created}"` and `herdr list-panes -t <name> -F "#{pane_pid}|#{pane_current_path}|#{pane_current_command}"` before running reconcile.
- Ran `reconcile.sh --once --emit-diff`.
- Asserted that `"personal-session"` is ignored (not present in `drifts` as class B, not in `agent-sessions.yaml`).
- Asserted that `"test-proj-creator-codex"` is registered as drift class B and added to `agent-sessions.yaml`.
- **Mutation Verification**:
- Temporarily restored the old fallback (`if not agent: if pm_check and pm_check.get("cmd") in ...: agent = ...`): test **FAILED** with `AssertionError: assert not any(d.get("name") == "personal-session" for d in drifts)` (because `"personal-session"` was incorrectly registered).
- With current implementation (fallback removed): test **PASSED**.
---
## 2. Validation & Verification
1. `git diff --check`: Clean (exit code 0).
2. T1 Mutation Check:
- Against `76f10b2` `verify_artifact`: FAILED (`AssertionError: Expected False for payload: {}`).
- Against current `verify_artifact`: PASSED.
3. T2 Mutation Check:
- Against `76f10b2` fallback in `reconcile.sh`: FAILED (`assert not True` on personal-session registration).
- Against current `reconcile.sh`: PASSED.
4. Focused Test Execution:
- `pytest tests/test_a4_adapter_contract.py tests/test_tier1_unit.py -q -k "codex or adapter or facts_bridge or delegate_agent or cli_bridge"`: **39 passed, 61 deselected in 46.23s**.
- `pytest tests/test_tier1_unit.py::test_reconcile_drift_b_unmanaged_session_ignored tests/test_version_consistency.py tests/test_tier2_component.py::test_comp_codex_create_and_reconcile_and_stop -q`: **4 passed in 40.15s**.