# Integration test checklist

- [ ] App refuses to load when config is absent.
- [ ] Invalid credentials are rejected; inactive users cannot log in.
- [ ] Successful login regenerates session ID.
- [ ] Unauthenticated access redirects to login.
- [ ] Role without finance permission sees no harvested amount.
- [ ] Harvested amount includes confirmed NGN cash receipts only.
- [ ] Pipeline counts use canonical current_stage field.
- [ ] Overdue tasks honor status and grace_until.
- [ ] Pending approvals past SLA are counted.
- [ ] Budget warning threshold is configurable per opportunity.
- [ ] All output is HTML-escaped.
- [ ] All state-changing POST actions verify CSRF token.
- [ ] Task acceptance is separated from task completion.
- [ ] Database backup restore is tested before production.
- [ ] Screens B/C/D are schema-aligned before routing to them.
