docs(18-05): finalize summary after Task 3 live verification (approved)
This commit is contained in:
parent
c3ad292139
commit
b59d9c2071
1 changed files with 13 additions and 12 deletions
|
|
@ -37,15 +37,15 @@ key-decisions:
|
|||
requirements-completed: [CAMP-01, CAMP-02]
|
||||
|
||||
# Metrics
|
||||
duration: n/a (partial — Task 3 checkpoint pending)
|
||||
completed: null
|
||||
duration: n/a
|
||||
completed: 2026-07-16
|
||||
---
|
||||
|
||||
# Phase 18 Plan 05: Campaign-grouping gap closure (CR-03 + CR-02) Summary — PARTIAL (Tasks 1-2 complete, Task 3 checkpoint pending)
|
||||
# Phase 18 Plan 05: Campaign-grouping gap closure (CR-03 + CR-02) Summary
|
||||
|
||||
**Own-campaign revalidation guard closes CR-03 (duplicate campaigns on single-report re-analyze); shared decrementOriginCampaign() helper closes CR-02 (stale report_count on migration and signal-diverged create-new) — both proven by 8 new mocked vitest regression tests with confirmed RED on Tests A, B, E, H.**
|
||||
**Own-campaign revalidation guard closes CR-03 (duplicate campaigns on single-report re-analyze); shared decrementOriginCampaign() helper closes CR-02 (stale report_count on migration and signal-diverged create-new) — proven by 8 new mocked vitest regression tests (RED confirmed on Tests A, B, E, H) AND a live database re-verification against production.**
|
||||
|
||||
**STATUS: Tasks 1 and 2 are complete and committed. Task 3 (BLOCKING human-verify checkpoint — live database verification) has NOT yet run. This summary will be superseded/finalized once Task 3 resolves.**
|
||||
**STATUS: All 3 tasks complete. Task 3's live verification was run against `https://pulse.wulfconsulting.cloud` (production, rebuilt+redeployed from this plan's merged commits): ticket 627088 was 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` with `report_count` unchanged at 1. Test data (report, 2 messages, indicators, the campaign) was cleaned up afterward. Human approved.**
|
||||
|
||||
## Performance
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ Each task was committed atomically:
|
|||
|
||||
1. **Task 1: Own-campaign revalidation guard before create-new (CR-03)** — `633b48c` (fix)
|
||||
2. **Task 2: Decrement origin campaign report_count on migration AND signal-diverged create-new (CR-02)** — `6945591` (fix)
|
||||
3. **Task 3: Live database verification of no-duplicate-on-reanalyze** — NOT YET RUN (blocking human-verify checkpoint)
|
||||
3. **Task 3: Live database verification of no-duplicate-on-reanalyze** — human-verified against production 2026-07-16, approved
|
||||
|
||||
_Both Task 1 and Task 2 followed TDD RED-before-GREEN discipline: RED confirmed via `npx vitest run` for Tests A/B (Task 1) and Tests E/H (Task 2) against the pre-fix code, then GREEN confirmed after implementing the fix._
|
||||
|
||||
|
|
@ -106,15 +106,16 @@ None — no external service configuration required. Task 3 requires a human to
|
|||
|
||||
## Next Phase Readiness
|
||||
|
||||
**NOT READY — Task 3 (blocking human-verify checkpoint) has not run.** Per the plan's `coverage_caveat`: mocked-only unit coverage was proven insufficient last time (the 18-04 mocked regression test passed while CR-03 shipped and reproduced live in production), so this gap-closure plan is explicitly not considered closed until a human confirms, against a real database:
|
||||
**READY.** Task 3's live verification ran against production after merge + rebuild + redeploy:
|
||||
|
||||
1. A second consecutive `/analyze` on the same single-report ticket returns the same `campaignId` with `created:false` (not a new campaign, not `created:true`).
|
||||
2. A direct DB query shows exactly one `campaigns` row for that `campaign_key` with an unchanged `report_count`.
|
||||
3. Any test data created during verification is cleaned up.
|
||||
1. `POST /api/phishing/tickets/627088/analyze` → `{reportId, campaignId: "5121930f-272a-4ea8-971a-7bccf187e1bb", groupMethod:"message_id", created:true}`
|
||||
2. Immediate identical repeat call → same `campaignId`, `created:false` (no duplicate campaign).
|
||||
3. `SELECT * FROM campaigns WHERE campaign_key = ...` returned exactly one row, `report_count:1` (unchanged).
|
||||
4. Test data cleaned up (report, 2 messages, 12 indicators, 1 campaign) — production DB restored to pre-test state for ticket 627088.
|
||||
|
||||
This worktree's code (commits `633b48c` and `6945591`) is ready for that live verification. No further code changes are anticipated unless the live verification surfaces a divergence from the mocked tests' assumptions.
|
||||
CR-03 and CR-02 are confirmed closed both by mocked regression tests and live production verification. Phase 18 is ready for final re-verification.
|
||||
|
||||
---
|
||||
*Phase: 18-campaign-grouping-phishing-analysis-api*
|
||||
*Plan: 05*
|
||||
*Status: PARTIAL — Tasks 1-2 complete, Task 3 checkpoint pending human live-verification*
|
||||
*Status: COMPLETE*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue