Parent tracker: #62
Spec: docs/superpowers/specs/2026-05-21-edge-case-hardening-design.md
Milestone: P4
Goal
Fire a finding when a logout handler is detected for an app that issues JWTs but no evidence of denylist/blocklist/revocation-store insertion is linked.
Acceptance criteria
New check IDs
jwt_denylist_absent_on_logout_review
Files touched
crates/sessionscope-classifier/src/lifecycle.rs
Fixture expectations
Audit-then-decide
- Category:
lifecycle_gap, severity medium.
- Feed into the consolidated P4.8 audit.
Doc-update checklist
Parent tracker: #62
Spec:
docs/superpowers/specs/2026-05-21-edge-case-hardening-design.mdMilestone: P4
Goal
Fire a finding when a logout handler is detected for an app that issues JWTs but no evidence of denylist/blocklist/revocation-store insertion is linked.
Acceptance criteria
jwt_denylist_absent_on_logout_reviewfires when:redis.set,denyList.add,revokedTokens.insert, named helpers likerevokeToken,addToBlocklist) is linked in the same scope or via classifier-linked helpersNew check IDs
jwt_denylist_absent_on_logout_reviewFiles touched
crates/sessionscope-classifier/src/lifecycle.rsFixture expectations
Audit-then-decide
lifecycle_gap, severitymedium.Doc-update checklist
docs/USAGE.mdcheck catalog.docs/COVERAGE_MATRIX.mdrow.CHANGELOG.mdunreleased entry.