# Re-adjudication: Issue #3 analysis Rev. 3 (Class B reversal)

- **Reviewer**: `reviewer-creator-grok-01`
- **Job**: `1da8fd5c`
- **Target**: `.agents/reports/creator-agy-01/issue-3-analysis.md` (Rev. 3, job `6b391a80`)
- **Prior**: `1a4f5236` NOT PASS (mechanism); `9075a39f` PASS on Rev. 2. Rev. 3 retracts Class B as a defect.
- **Method**: read `verify_session.py:99-101` and `claude.py::resume_spec`; ran `pytest tests/test_uuid_target.py` myself. Did not take the Class B reversal at face value.

---

## Class B — `[ADJUDICATION: SUSTAINED]`

`1a4f5236` claimed assigned `claude`/`grok` ids fail `verify_session_uuid(..., mode="revalidate")` when no transcript exists. That skipped an early return that is live in source:

```99:101:.agents/skills/lib_py/verify_session.py
    if (mode == "revalidate" and row.get("session_id_source") == "assigned"
            and not row.get("session_id_verified")):
        return True
```

`stop_session.sh` never writes `session_id_source` / `session_id_verified`, so a 0-turn stop keeps `assigned` + `verified=false`. `find_workspace_uuid` therefore emits the YAML own-key. `resume_spec` for claude uses `--session-id` when `materialized` is false (`claude.py:99-100`).

Independent run: `pytest tests/test_uuid_target.py` → **13 passed in 114.74s** (includes `test_t8_resume_unmaterialized_assigned_id`). Class B 0-turn resume is **working as designed**. Rev. 3 is right to mark it **NOT A DEFECT**. §4 correctly says do not touch this hatch.

## Item 1 and Class A — still confirmed

Unchanged from `9075a39f` / live code:

- **Item 1:** `nohup`+`disown` at `lib.sh:211-213`; non-interactive `&` keeps the shim PGID; `SIGHUP` handled, `SIGTERM`/`SIGINT` to the group are not. Portable `Popen(..., start_new_session=True)` remains the right later fix.
- **Class A:** `agy`/`hermes`/`opencode` own-key stays empty; `resume_session.sh:54-57` hard-exits; create still requires `--role`. Automation recovery gap stands. Scope later work to Class A only.

## Residual nit

Rev. 3 says `tests/test_uuid_target.py` is **12/12**. This run collected **13** tests, all passing. Does not change the Class B conclusion.

No `[ESCALATE: PLANNER]`. Analysis-only; planning can proceed on Item 1 + Class A.

---

[VERDICT: PASS]
