# Re-review: Hermes Agent Support Audit & Modernization

- **Reviewer**: `reviewer-creator-grok-01` (role: reviewer)
- **Job**: `e46a3590` (follow-up to `53ad6a4b` `[VERDICT: NOT PASS]`)
- **Branch**: `support-hermes`
- **Prior blocking issue**: F1 — `started_at >= herdr_session_epoch` rejected the session just created, because epoch was stamped after `wait_for_tui_ready`.

## Disposition of prior findings

| ID | Prior severity | This round |
|---|---|---|
| **F1** epoch stamped after TUI ready | **Blocking** | **Fixed.** `create_session.sh` now captures `HERDR_EPOCH=$(date +%s)` immediately before `spawn()`. Verified: single assignment, `spawn` follows epoch (65 chars later), after the dry-run early-exit. |
| **F2** `discover()` still `LIMIT 1` | Non-blocking leftover | **Fixed.** Epoch-filtered `LIMIT 20` (or unfiltered `LIMIT 20` when `ctx.epoch` is 0), then `verify_artifact` per row. |
| **F3** C-ambiguous test inlines SQL, does not run `reconcile.sh` | Non-blocking quality | **Partially addressed.** New `test_hermes_reconcile_full_block_integration` covers sibling exclusion with the same gather loop. Still does not exec the embedded Python in `reconcile.sh`. Acceptable residual. |
| **F4** resume `SKILL.md` missing flags | Docs nit | **Fixed.** Example now matches `resume_session.sh`. |

New regression test `test_hermes_verify_artifact_spawn_epoch_timing_f1` encodes the intended contract: pre-spawn epoch + `started_at = epoch + 0.1` verifies; `started_at = epoch - 3600` does not; `discover()` returns only the fresh id.

## What remains correct (unchanged from first pass)

- `--yolo --accept-hooks` on spawn; `--no-restore-cwd --yolo --accept-hooks` on materialized resume — matches installed hermes CLI.
- TUI facts: `ready_tokens`, `input_prompt='❯'`, `input_rule_pattern='─{10,}'`.
- `verify_artifact` uses per-row `started_at REAL` (confirmed on live `~/.hermes/state.db`).
- `reconcile.sh` hermes drift-C: `LIMIT 20` + `started_at >= ?` + sibling-claim skip — C-ambiguous is reachable.
- Create fallback `CMD_FULL` and create `SKILL.md` `hermes)` spawn example.

## Residual nits (do not block PASS)

1. **Create SKILL.md illustrative workflow** still shows `HERDR_EPOCH=$(date +%s)` after `sleep 6`. The real script is correct; the example would reintroduce F1 if copied. Follow-up docs only.
2. **`cmd_full` table** in create SKILL.md still lists only claude/agy.
3. **F3** does not drive `reconcile.sh --once --dry-run` against a fixture. The adapter + gather-loop tests are enough for this change.
4. **`find_workspace_uuid`** still constructs `DiscoveryContext` with `epoch=0`, so the resume on-disk fallback can return multiple cwd matches and emit the newest unclaimed. Running-session pinning goes through reconcile (epoch set). Not a create-path pin failure.

None of these reintroduce silent mis-pin or unattended-flag gaps.

## Tests

```
pytest tests/test_a4_adapter_contract.py tests/test_tier1_unit.py \
       tests/test_c1_tui_readiness.py tests/test_orc_onboard.py
→ 140 passed
```

Earlier-epoch capture for all agents is the right semantic for transcript mtime guards (artifacts appear after spawn). No fail-closed regression observed.

No `[ESCALATE: PLANNER]`.

---

[VERDICT: PASS]
