6.2 KiB
6.2 KiB
07. Testing, Observability, And Release Gates
1) QA Strategy
The redesign is policy-heavy. Testing must validate:
- Functional correctness
- Policy compliance
- Audit completeness
- Role-based access integrity
- Operational resilience under load and deadline pressure
2) Test Pyramid
2.1 Unit Tests
Target modules:
- context resolver
- policy resolver
- assignment policy evaluator (hard/soft/buffer/category-bias weighting)
- round bundle lock evaluator
- final confirmation rule evaluator
2.2 Integration Tests
Target flows:
- stage transitions with purpose validation
- filtering outcomes + override
- assignment run + unassigned queue + manual assignment
- document upload/edit lock transitions
- mentor promotion pipeline
- live voting -> confirmation -> result lock
2.3 End-to-End Tests
Target user journeys:
- applicant R1 -> eligibility -> Jury1 -> R2 -> Jury2 -> finals prep -> finals -> result
- admin stage manager live finals operations
- award mode A and mode B paths
- admin invite -> onboarding -> jury assignment materialization
- team invite -> accept invite -> team collaboration
3) Monaco Flow Test Matrix
| Flow Step | Required Test Cases |
|---|---|
| Submission R1 | open/close behavior, late policy modes, required docs enforcement |
| Eligibility filter | deterministic pass/fail, AI banding, manual queue, admin override trail |
| Jury1 | cap modes, category-bias preference behavior (suggestive only), deadline reminder triggers, score submission |
| Submission R2 | R1 read-only for applicants, R2 editable, admin full override |
| Jury2 | visibility of R1+R2 docs, finalist recommendation and override |
| Awards | separate pool, dual track, admin-confirmed pull-out behavior, jury overlap, single-judge decision mode |
| Mentoring | private file sharing, comments, promotion to official slot with provenance |
| Jury3 live | stage manager controls, voting windows, notes, audience vote mode |
| Final confirmation | unanimous jury agreement on active quorum (or configured rule), juror replacement/absence handling, single-judge award exception flow, admin finalize, admin override path, result lock |
4) Invite/Member/Onboarding Test Matrix (Critical)
| Workflow | Must Validate |
|---|---|
Admin member invite (/admin/members/invite) |
creates user + jury membership + selected pre-assignment mode (intent and/or direct policy-validated assignment); respects role authorization |
| Bulk invite CSV | invalid rows, duplicate handling, unauthorized role attempts, staged pre-assignment mode selection and materialization |
Invite acceptance (/accept-invite) |
token validity, role-context preview, routing to correct onboarding path |
| Jury onboarding | cap/bias override onboarding when enabled, including explicit disclosure that category bias is a suggestion not a rule |
Team invite (/applicant/team) |
lead-only invite/remove, account setup vs existing account behavior |
| Cross-context conflict | same user invited as jury and team member still resolves correct permissions by context |
5) Regression Coverage Extension Against Existing Test Suite
Current suite already has useful coverage (tests/unit/*, tests/integration/*). Extend with:
tests/unit/assignment-policy-hard-soft.test.tstests/unit/final-confirmation-rules.test.tstests/integration/invite-jury-membership-intent.test.tstests/integration/submission-bundle-locking.test.tstests/integration/mentor-promotion-provenance.test.tstests/integration/award-mode-routing.test.tstests/integration/live-to-final-lock.test.ts
6) Audit Completeness Checks
Add automated assertions that every critical operation emits both domain event and audit record:
- eligibility override
- assignment exception
- stage advancement override
- award winner override
- promotion event
- final confirmation finalize/lock
Failure to emit required audit evidence should fail tests.
7) Observability Blueprint
7.1 Metrics
Competition Lifecycle Metrics
projects_submitted_totalby category and stageeligibility_pass_ratemanual_review_rateassignment_coverage_percentunassigned_projects_countover_cap_exception_countsubmission_late_ratementor_promotion_countlive_vote_completion_ratefinal_confirmation_duration_seconds
Reliability Metrics
- API latency by router
- background job success/failure rates (filtering/assignment/award jobs)
- reminder send success/failure
- invitation send success/failure
7.2 Logs And Tracing
- Correlation id per operation across router -> service -> DB writes
- Structured logs include
programId,stageId,stagePurposeKey,juryId,projectId,userId
7.3 Alerts
- assignment run leaves residual without queue record
- final confirmation attempted without satisfied quorum requirement
- result lock write failure
- result unlock attempted by non-super-admin
- invite acceptance failures spike
- live voting session state mismatch (open with no active project)
8) Release Gates (Must Pass)
Gate A: Schema + Backfill Readiness
- all migrations idempotent in staging
- no unresolved backfill anomalies
Gate B: Policy Engine Correctness
- hard/soft cap test pass
- ratio policy test pass
- access resolver test pass
Gate C: End-To-End Flow Simulation
- full Monaco dry run with seeded data and mixed categories
- award mode A/B dry runs
Gate D: Invite/Onboarding Stability
- admin invite + team invite + acceptance flows pass under load
Gate E: Finals And Confirmation Integrity
- live voting and final confirmation produce correct lock artifacts
- super-admin unlock/relock path preserves complete audit integrity
Gate F: Operational Readiness
- runbooks approved
- dashboards and alerts active
- support playbooks distributed
9) Performance And Capacity Scenarios
- Large intake window close with bulk late submissions
- Filtering and assignment jobs across high project volume
- Live finals peak voting concurrency (jury + audience)
- Bulk invitation campaigns with email retries
10) Sign-Off Criteria
Release is approved only when:
- All phase gates pass.
- No Sev-1/Sev-2 defects remain open in critical competition flows.
- Audit completeness checks pass for all critical operations.
- Operators can execute runbook drills successfully.