Use for federal Title IV compliance — the last-date-of-academic-engagement / unofficial-withdrawal audit (course_engagement_audit), the cached Title IV snapshot (update_title_iv_snapshot), and AI-engagement classification. Load this when the task mentions Title IV, R2T4, unofficial withdrawal (UW/UF), last date of attendance/engagement, or "who stopped participating." This is a compliance domain, distinct from general course auditing — the classifications carry federal-aid consequences.
Installs into .claude/skills of the current project.
Are you the author of Title Iv?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chaz-clark-title-iv-f902650d)
---
name: title-iv
description: Use for federal Title IV compliance — the last-date-of-academic-engagement / unofficial-withdrawal audit (course_engagement_audit), the cached Title IV snapshot (update_title_iv_snapshot), and AI-engagement classification. Load this when the task mentions Title IV, R2T4, unofficial withdrawal (UW/UF), last date of attendance/engagement, or "who stopped participating." This is a compliance domain, distinct from general course auditing — the classifications carry federal-aid consequences.
---
# Title IV engagement & unofficial-withdrawal compliance
Federal financial-aid compliance (34 CFR 668.22 / R2T4): determine each student's
**last date of academically related activity** and flag unofficial withdrawals. This
is a **compliance** domain, not a general course audit — a wrong classification has
federal-aid consequences, so the tool surfaces candidates and the registrar/financial-
aid office makes the determination.
> The **constitution** (AGENTS.md) binds you: named reports are written OUTSIDE the
> repo (never a cloud-synced or git-tracked path), and console output is
> de-identified (user_id, never names).
## The classifier — `course_engagement_audit.py`
Classifies enrolled students:
- **NEVER_PARTICIPATED** — no engagement on record (logging in ≠ engagement; there
must be a submission, quiz attempt, or discussion entry).
- **UW** (Unofficial Withdrawal) — last engagement before the UF cutoff, passing-or-
unknown grade.
- **UF** (Unofficial Fail) — UW *and* a failing grade → R2T4 candidate.
- **INACTIVE_ENROLLMENT** — dropped/concluded in Canvas; surfaced for review, **not**
auto-classified (may be an already-processed *official* withdrawal — the registrar/
FA office decides).
## Key behaviors
- **UF cutoff auto-derives from Canvas.** No `--uf-date`? It uses the course's Canvas
end date, falling back to the term end date (`--uf-date end` / `term-end` / an
explicit `YYYY-MM-DD`). The resolved date + its source print in the header, so the
classification date is auditable.
- **Inactive students are included by default** — the exact population an engagement
audit exists to review. `--active-only` excludes them.
- **FERPA output discipline:** the named report is written to `~/Downloads/`, never
inside the repo. Re-identification happens only at the final write step, keyed, to a
file outside any cloud-synced / git-tracked location.
```
course_engagement_audit.py # cutoff = Canvas course end date
course_engagement_audit.py --uf-date 2026-07-25 # explicit cutoff
course_engagement_audit.py --active-only # skip the inactive-review section
```
## Supporting tools
- `update_title_iv_snapshot.py` — fetch + cache the canonical Title IV snapshot for a
course (the reference state a report is computed against).
- `ai_engagement_classifier.py` — pluggable engagement-taxonomy over a student↔AI
transcript, for courses that count AI-tutor interaction as academically related
activity.
## Regulatory note
The distance-education R2T4 final rules took effect **2026-07-01**. Re-verify the
tool's classification rules against the then-current FSA Handbook (Vol. 5, Ch. 1) if
you're reading this well after that date — federal definitions of "academic
engagement" evolve.