docs(reports): archive phase 2b unanimous pass review reports (a665d729, 7e7eea07, a7f1ee0e)

This commit is contained in:
Godopu committed 2026-09-07 08:27:04 +09:00
1 parent 8d7e010f9f
commit e1203166d9
3 files changed
+143

No files matched your search

@@ -0,0 +1,50 @@
# Issue #5 Phase 2b Round 3 review (`8d7e010`)
- **Reviewer**: `reviewer-creator-grok-01`
- **Job**: `7e7eea07`
- **HEAD**: `8d7e010` (`fix(issue-5): record an accepted intent, not a refused one`)
- **Prior Grok residual**: `0d502d33` item 1 — `seen_intents` recorded before the seq check
- **Tests this turn**: `pytest tests/test_issue5_phase2b_autocomplete.py tests/test_issue5_phase2a_loop.py` → **156 passed**. Phase 2b file: **65 collected**. Collect-only **732**. `git diff --check 9a651cc..HEAD` clean.
The live callback was re-read and the stale-first probe from `0d502d33` was re-run against this tree.
---
## Adjudication
[ADJUDICATION: SUSTAINED]
`job_subscriber.py:143-179` now splits the two operations:
1. **Lookup** of `identity in seen_intents` still runs *before* the seq guard, so a replay with a fresh wire seq is dropped.
2. **`seen_intents.add`** runs *after* `seq > last_seq` and after `last_seq` is advanced. A refused packet does not mark its intent as accepted.
Malformed `notification_intent` (non-object, or unhashable field) is dropped inside defensive parsing with a warning; `TypeError` does not escape the MQTT callback.
Required regression `test_r4b_a_stale_packet_does_not_burn_the_intent_for_its_own_retry`: `last_seq=10`, seq=9 refused, same intent at seq=11 accepted, `qsize()==1`, a further replay stays at 1.
**Reproduced this turn** (same probe that failed on `9a651cc`):
```
stale seq=9 last=10 -> qsize=0 seen=set() last=10
retry seq=11 same intent -> qsize=1
replay seq=12 -> qsize=1
unhashable: raised=False qsize=0 last=0
```
Also covered: refused replay does not raise `last_seq` (`test_r4b_a_duplicate_intent_does_not_advance_the_sequence_floor`); end-to-end two `notifier.flush` attempts with distinct wire seqs land once on the real callback (`test_r4b_a_real_retry_is_deduplicated_by_the_real_consumer`).
---
## Residuals (unchanged, not this patch)
1. No production caller of `evaluate` / `recover` (Phase 3; §2-1).
2. `started` does not mint `dispatch_token`.
3. Bookkeeping may write any `pending_notification` value, not only `None`.
4. `pick_pending` split-lock.
No `[ESCALATE: PLANNER]`. This is the local order fix the residual asked for.
---
[VERDICT: PASS]