# Plan: Playbook revision from Michael Miller's second review (20 PDF comments)

**Spec/review:** Opus · **Coder:** Sonnet · **Skills:** ponytail, karpathy, honey
**File:** `scripts/assessment_design_playbook.py` (+ its test). Source: Michael's 20 annotations on the rendered playbook PDF. User confirmed: (1) tech back per-category page, (2) AI-Resistant before AI-Forward, (3) drop The Anchor.

## A. Structural changes (all 5 categories)
1. **Reorder each `.category-block`'s subsections to:** Where It Is Substitutable -> **AI-Resistant Moves** -> **AI-Forward Moves** -> **Technologies That Help** (per-category) -> **Two-Lane & TILT Considerations**. (AI-Resistant now first.)
2. **Drop "The Anchor"** section entirely (remove the `anchor` render line; the `anchor` data key may be deleted). Preserve its function: make the FIRST AI-Resistant move a "Start here:" lead naming the single highest-leverage securing move for that type (author below).
3. **Revert the consolidated grid (#273): put tech back on each category page.** Remove `_TECH_GRID`, `_TECH_GRID_NOTE`, the `<section id="technologies">`, and the `.tech-grid*` standalone usage. Restore a per-category `tech` list (content = the #272 per-category mappings; see `git show` of the commit before #273, or re-author from §D). Render it on each page under a "Technologies That Help" subheading as a compact grid of tool cards (reuse `.tech-cell` styling per card; one small grid per page).
4. **Add a "Two-Lane & TILT Considerations" callout** per category (styled like `.anchor-callout`, maroon): one or two lines naming (a) which lane secures the grade for this assessment type (the secured anchor) and (b) the TILT pairing -- any verify/critique-the-AI move ships with the rubric + annotated models up front. Author per category in §D.
5. Each category must still fit **one page** (page-break per category already in CSS). Dropping The Anchor + compact tech grid buys the room.

## B. Tone edits (Michael: less harsh to faculty/students)
- **Discussions / Where It Is Substitutable:** "generic prompts" -> "prompts that result in generic responses". Use "reusable prompts" phrasing to mirror the end-of-page language.
- **Discussions / AI-Resistant:** the bullet ending "a response that skips the named material fails on its face" -> "...will not meet the assignment criteria."
- **Papers / Where It Is Substitutable:** replace "A final-upload-only model with a reusable prompt gives a student nothing to do but paste, edit, and submit." with Michael's wording: **"A final, upload-only model with a reusable prompt presents the easiest avenue for students to substitute critical thinking with AI-generated content."**

## C. Content fixes
- **Quizzes / AI-Forward:** *Open-AI exams* and *Meta-items* are indistinguishable (Michael). Merge into ONE move: **"Open-AI verification: give students an AI-generated answer or analysis; they find and correct its errors and explain what it missed, graded on the correction and reasoning, not recall."** Keep *Two-stage exams* as-is.
- **Quizzes / AI-Resistant:** rephrase *"Parameterize where possible: vary the numbers, parties, or jurisdictions so no two items are identical."* in plain language: **"Auto-vary the details: the same question with different numbers, names, or dates for each student, so a shared answer does not transfer."**
- **Papers / citation moves:** merge *Citation hallucination hunt* (AI-Forward) and *Teach source verification* (AI-Resistant) into ONE AI-Forward move: **"Source generation and verification: students use an LLM to draft a bibliography, then independently verify every source, report the hallucinated or misattributed ones, and keep only what holds -- graded on the verification judgment."** Remove the two originals.
- **Projects:** the moves are all framed as teams (Michael). Reframe throughout as **"individual students or teams"** / "each contributor" rather than "teams" / "each member".
- **Async/sync accuracy:** ensure no remaining text claims proctoring or time-boxing pose *asynchronous* problems -- they are async-compatible; only synchronous requirements (live oral exams) break async flexibility. (The offending line was in The Anchor, now dropped; verify none remains elsewhere.)

## D. Presentations -- larger rewrite (Michael gave explicit content)
Replace the **AI-Resistant Moves** list (currently four near-identical synchronous bullets) with, in order:
1. **Start here: Ground the work in a unique context** -- tie the task to the student's own work, organization, or a personal setting a generic response cannot fit.
2. **Require process-oriented work** -- submit in pieces (outline, draft, revision) with a short decision log.
3. **Incorporate targeted reflection** -- not "What did you learn?" but, e.g., *"Identify one recommendation you changed after receiving peer feedback. Explain why you changed it and cite the specific feedback that influenced your decision."*
4. **As a last resort, make it live** -- a single combined bullet (merges the old Make-it-live / unscripted-questions / defend-specifics into one): *"As a last resort for the highest-stakes work, make it a live synchronous check with unscripted follow-up questions where the student defends specific choices on the spot."* Remove the "randomly selected students per module" phrasing (equity/discrimination risk); if sampled, apply it systematically and transparently, not by singling out individuals.

Move "make it live" to LAST (done by the ordering above). Keep AI-Forward Moves after AI-Resistant per §A.

## E. Per-category content to author (Two-Lane/TILT callout + tech grid)
Tech grid content per category = the Wes-approved mappings already shipped in #272 (Discussions, Quizzes & Exams, Papers, Projects, Presentations). Restore those tool lists; render as the per-page grid.

Two-Lane & TILT callout (author ~2 lines each):
- **Discussions:** Secured lane = explicit references to cohort-specific content a reusable prompt cannot predict; the AI-forward critique move ships with a rubric + annotated model posts up front (TILT).
- **Quizzes & Exams:** Secured lane = application items from a large randomized or auto-varied pool; if an open-AI verification move is used, provide a worked model of a strong correction first (TILT).
- **Papers:** Secured lane = documented process (staged drafts, version history); the source-generation-and-verification move ships with a rubric + annotated example of a strong verification log (TILT).
- **Projects:** Secured lane = milestone check-ins + a process/decision log (individual or team); any grade-the-AI-judgment move ships with models of a strong AI-use log (TILT).
- **Presentations:** Secured lane = process evidence (staged pieces, decision log) plus, only for the highest stakes, a live unscripted check; any critique-the-AI move ships with an annotated model (TILT).

## Acceptance criteria
1. Each category renders in order: Substitutable, AI-Resistant, AI-Forward, Technologies That Help (per-page grid), Two-Lane & TILT Considerations. No "The Anchor" anywhere.
2. First AI-Resistant move in each category is a "Start here:" lead.
3. No standalone `<section id="technologies">` / `_TECH_GRID` remains; each category has its own tech grid.
4. All §B/§C/§D text edits applied verbatim; the merged moves replace the originals (no leftover Open-AI exams+Meta-items pair, no separate citation-hunt + source-verification, no "randomly selected students").
5. Only Wes-approved tools + Honorlock/Respondus appear; none of Examity/Perusall/Hypothesis/Turnitin/Canvas Studio/Flip/Mobius/WeBWorK/GitHub/Zoom/Padlet.
6. No em/en dashes (use `--`); dash-lint green.
7. Full suite green: `.venv/bin/python3 -m pytest tests/ -q`. Update `tests/test_assessment_design_playbook.py`: it now asserts the consolidated grid + facet order + `tech` key absence -- rewrite those to the new per-category structure (tech present again, order AI-Resistant before AI-Forward, no Anchor, Two-Lane/TILT present). Do not weaken tone/TILT-substance assertions.

## Verify (reviewer, Opus)
Regenerate; confirm order, per-page tech grids, dropped Anchor, the specific text merges, no discrimination phrasing, one page per category. Read the diff; re-run the suite. Coder != reviewer.

## Workflow
Branch `feat/playbook-michael-review2` -> implement -> full suite green -> PR against `main`, do NOT merge. ponytail/karpathy/honey. Report branch, PR#, verbatim pytest line, files changed, a grep confirming §C/§D merges landed and the removed items are gone, any criterion unmet.
