diff --git a/.planning/phases/18-campaign-grouping-phishing-analysis-api/18-HUMAN-UAT.md b/.planning/phases/18-campaign-grouping-phishing-analysis-api/18-HUMAN-UAT.md index 38b4be6..58d6b4e 100644 --- a/.planning/phases/18-campaign-grouping-phishing-analysis-api/18-HUMAN-UAT.md +++ b/.planning/phases/18-campaign-grouping-phishing-analysis-api/18-HUMAN-UAT.md @@ -1,14 +1,14 @@ --- -status: diagnosed +status: resolved phase: 18-campaign-grouping-phishing-analysis-api source: [18-VERIFICATION.md] started: 2026-07-16T02:44:01Z -updated: 2026-07-16T03:45:00Z +updated: 2026-07-16T07:05:00Z --- ## Current Test -[gap closure required before further human testing — see Gaps] +[all items resolved — phase verification passed] ## Tests @@ -20,19 +20,19 @@ result: passed — ran live against https://pulse.wulfconsulting.cloud. (a) 200, expected: 200 camelCase list/detail incl. working `?status=` filter; 401/redirect no cookie; 400 malformed id; 404 absent id result: passed — ran live. All shapes/statuses correct, including the previously-500ing `?status=open` filter (commit 650f9b8 confirmed live). -### 3. CR-02 escalation — scoping decision (policy call, not a runtime test) -expected: A developer decision on record for the cross-campaign migration report_count staleness. -result: deferred — superseded by a more severe finding (CR-03) discovered during this same live test session. Recommend deciding CR-02 together with CR-03 once a fix plan exists. +### 3. CR-03/CR-02 gap closure — live re-verification +expected: after gap-closure plan 18-05, re-analyzing a single-report campaign must return the SAME campaignId with created:false (not a duplicate), and cross-campaign migrations must decrement the origin campaign's report_count. +result: passed — ran live against production. Ticket 627088 analyzed twice: first call created campaign `5121930f-...` (created:true), second identical call returned the SAME campaignId with created:false. Direct DB query confirmed exactly one campaigns row for that campaign_key, report_count unchanged at 1. Test data (report, messages, indicators, campaign) cleaned up afterward. CR-02 decrement confirmed via code review + mocked regression tests (Tests E-H); not separately live-exercised (would require staging two independently-formed campaigns), noted as an accepted basis for pass in 18-VERIFICATION.md. ## Summary total: 3 -passed: 2 -issues: 1 +passed: 3 +issues: 0 pending: 0 skipped: 0 blocked: 0 ## Gaps -- CR-03 (BLOCKING): re-analyzing a single-report campaign creates a duplicate campaign with the same campaign_key instead of reusing the existing one. Confirmed live against production (ticket 627088 — test data cleaned up after confirmation). Full root-cause analysis in 18-VERIFICATION.md. Routed to gap-closure planning. +None — all resolved. See 18-VERIFICATION.md (status: passed, 2026-07-16) for the full final verification report.