# Plan: Fold Michael Miller's review into the assurance skill

Source: 14 PDF comments on COM100-DEV-AB report+playbook (2026-06-29 draft).
Reconciled with TILT primary sources (Winkelmes; Lafayette CITLS; Indiana CITL).

## A. Recommendations: deprioritize proctoring/oral/synchronous; 3-part structure
`scripts/assurance_report_html.py` (recommendation rendering) + the narrative
recommendation shape.

Michael: proctoring, oral defense, and synchronous/observation are last-resort, not
first. Not AI-proof (deepfakes skirt video), unscalable for faculty, a barrier for
students, and they break the online-flexibility marketing promise.

Change: keep proctoring/peer-review as DETECTION signals (what counts as secured today;
unchanged). Change the REMEDIATION presentation only. Each assessment recommendation
renders in three parts, in this order:
  1. **Judgement** — e.g. "Secure: Exams (17.1%)".
  2. **AI-forward** — grade the judgment, not the output (folded in per-assessment).
  3. **AI-resistant** — process trails, authentic audience, identity-bearing artifacts;
     proctoring / oral defense / synchronous requirements listed LAST and labeled
     "last resort" where they appear at all.

Narrative `recommendations` items gain optional `ai_forward` and `ai_resistant` lists
(strings). Renderer shows the three parts when present; falls back to the existing flat
`text` when absent (older narratives still render).

Acceptance: rendered recommendation for each assessment shows Judgement, then AI-forward,
then AI-resistant; proctoring/oral/synchronous never appear above AI-forward; where listed
they carry a "last resort" qualifier.

## B. Bloom reconciliation (151110 narrative only; engine unchanged)
Re-read from prompt verbs: papers Apply (relate/explain/connect), exams+quizzes
Remember-Understand (objective recall), discussions Apply with an Evaluate thread
(ethics prompts). Update `courses/151110/reports/narrative.json` cognitive_demand.
No script/tier/coverage change. Format-inference caveat stays for bank-locked items.

## C. Playbook tone + TILT (`scripts/assessment_design_playbook.py`)
Michael: reframe less hostile ("goal is not to catch students or watch them fail");
open-AI-verify "can cause harm" without models — couple with annotated examples per TILT;
tool recs "not exactly right — confirm with TILT or Wes's incoming materials."

Changes:
- Strip adversarial framing (catch/watch-fail/bypass-as-threat) from all five categories.
- Every AI-forward move that asks students to verify/critique AI output carries a TILT
  pairing: provide the rubric AND several annotated models of excellence in advance
  (TILT Criteria component; cite Winkelmes/TILT Higher Ed). Reduces the equity harm TILT
  was built to close.
- Tool/technology lines reframed as "confirm against TILT-vetted or program-provided tools"
  rather than asserting specific products.

Acceptance: no "catch", "watch them fail", "bypass" (as threat framing) in the playbook;
each verify/critique move names the annotated-models requirement; a self-check test asserts
the forbidden-tone strings are absent and the TILT-models phrase is present.

## D. Skill house style (`skills/assurance-audit/SKILL.md`)
Document: the 3-part recommendation structure with proctoring/oral/synchronous as
last-resort; the TILT annotated-models pairing for AI-forward moves; neutral,
non-adversarial tone as the standing rule for recommendations and the playbook.

## Out of scope
- No tier / coverage / lane / detection math change. Presentation + narrative only.
- No new dependency. ponytail: reuse existing renderer + playbook data structures.

## Verify
- Full `pytest tests/ -q` green on clean checkout.
- 151110 re-render: recommendations show 3 parts, proctoring/oral last; cognitive_demand
  shows the reconciled Apply-weighted distribution; playbook tone test passes.
- Read the diff by hand before merge. Coder != reviewer.
