Guide
The linter that keeps AI from writing a student's thesis
The rule said: scaffold the student's argument, never write their sentences. It held right up until a new kind of document appeared with no check watching it.
Key findings
- The bright line: AI may scaffold (the points a student must establish in their own words, plus coaching prompts) but never write the student's prose. A handed sentence collapses under committee questioning.
- The rule broke where conventions break: a newer artifact class. A research brief drafted a verbatim first-person 'defensible story,' and a grep of every check script found zero enforcement.
- The fix is a WARN-mode linter scanning every advisor-side artifact for prose-drafting tells, plus a self-test that proves the detector can actually fire.
My advising AI may scaffold: points a student must establish in their own words. It never writes their prose. The rule is now a linter, because the written version failed.
I advise graduate students through applied research, and AI does real work on the advisor side: prep notes, research briefs, feedback drafts. The linter (a small script that scans finished documents for banned patterns) exists because of a claim I now believe completely. A rule that governs what an AI produces, and exists only as written convention, is already broken. You just haven't found the artifact yet. Details of the practice are generalized here; no student identity appears on this page or in the records behind it.
Where is the line between scaffolding and writing?
Scaffolding is the set of points the student must establish in their own words, plus Socratic prompts: the questions an advisor asks to pull the argument out of the student. Prose is any sentence the student could paste into a chapter. The separating test is defensibility. A handed sentence collapses the moment a committee questions them on it. A point they articulated themselves, they can defend unaided.
The rule has a hard edge that matters in practice: even when the request is a version of "give them exactly what to say," the answer is still scaffolding. The request itself is the trigger. Ask a model for wording and it produces wording; nothing inside it volunteers that the wording is the problem.
How does a written rule break?
On 2026-06-01 I caught my own system violating it, and the catch was luck, not process. A research brief (a newer advisor-side artifact class) had drafted a verbatim first-person "defensible story" for a student and offered a passage they could drop straight into a chapter. Not guidance about the argument. The student’s prose, prewritten.
The root-cause analysis confirmed two failures, both mine. The rule had zero enforcement: a grep (a plain text search) across every check script in the domain found nothing that would flag drafted student prose. A rule breaking with no signal is the failure my silent-failure detector exists to catch elsewhere; this rule had nothing pointed at it. And the rule had never been propagated past the artifact class it was written for, the feedback path. A brief was a newer class: no rule text near it, no check reading it. The domain's own risk note had even predicted the blind spot, warning that a violation in a brief would be invisible to a verifier that only read feedback files.
The model did nothing surprising, and blaming it would be the comfortable move. It was asked to help with the paper, so it helped. This was a governance failure: I had written a rule with no way to lose.
What does the linter actually catch?
The fix had two parts. First, the violating brief was converted. The verbatim story became "Guidance provided: you must establish, in your own words, (1)… (2)…" plus coaching prompts, and the detector verified the converted file passes clean.
Second, the detector itself: _check-advisee-prose.sh, a read-only shell script that runs in WARN mode. It flags; a human decides. It scans every advisor-side artifact class this time: prep cards, progress-form drafts, briefs, feedback packs, correspondence. The targets are the framing tells of prose-drafting: "defensible sentence", "drop it straight into the chapter", "exactly what to say", "a passage she could use". Those tells are the check's own patterns, not quotes from any student's work. Its self-test fixture is the planted sentence "Here is a sentence she could copy into her paper."
That self-test matters more than the pattern list. On demand, the script plants the fixture in a throwaway folder and fails itself unless two things hold: the pattern still fires on the fixture, and the fixture's file name sits inside the scan scope. A detector you have never watched fire is a belief, not a check.
The check is a heuristic — a rule of thumb, not a proof — and it knows its limits. It targets the framing of handing prose over, never the advisor's own voice; feedback written in the advisor's words is the job and stays untouched. It's wired into the session ritual, so it reads the artifacts where they get made instead of waiting for a quarterly audit.
What generalizes beyond one advising practice?
The learning note states it in one line, and it's the most portable sentence in my whole system. Any rule that governs what the assistant produces needs a check on the produced artifact, propagated to every artifact class the rule covers. A convention that lives next to one artifact silently fails to cover the next artifact you invent. That shape — prose enforces nothing, detection does — is the spine of everything I've built for verifying AI work. This is its smallest instance: one banned output shape, one pattern scan, one self-test.
Honest limits, stated plainly: WARN mode blocks nothing, the pattern list is short, and a determined paraphrase would slip past it. I accept that, because the violation it exists to catch was not subtle. It announced itself in exactly these phrases, and the next one probably will too. When a paraphrase does slip through, it becomes a new pattern, a new fixture, and a rerun of the self-test.
So the question I'd put to anyone keeping rules about what their AI may produce: what's the newest artifact class in your workflow, and would anything except luck catch a violation inside it?
Method & data
Method: a university advising practice's scaffold-not-prose rule: the 2026-06-01 root-cause note, the WARN-mode advisee-prose check with its planted self-test fixture, and the domain rule they enforce; student, chapter subject, and institution generalizedData: patterns and methods only; no names, dollar figures, addresses, case identifiers, or confidential content · Last checked: 2026-08-14
How this was made
AI-drafted, adversarially checked, human-directed. My AI assistant wrote this from the system's own records: the 2026-06-01 root-cause note (scaffold-not-prose.md), the WARN-mode check script (_check-advisee-prose.sh) with its self-test fixture, and the domain rules file they enforce. A separate AI session then tried to break every claim against those records, and automated privacy and readability gates ran before publish. I direct this pipeline, own every boundary in it, and audit published pages on a rolling basis — if you find an error, tell me and it goes in the corrections log, dated, never silent.
I'm Ali — I run real life-and-work admin on AI agents, then check their work in the open. More at /about.
Published under my standards. Found an error? Tell me — corrections go in the corrections log, dated, never silent.
Cite this
@online{ali2026scaffoldnotprose,
author = {Ali},
title = {The linter that keeps AI from writing a student's thesis},
date = {2026-08-14},
url = {https://alidoes.ai/ai-scaffold-not-prose/}
}Caught something I got wrong? Send it directly. Confirmed corrections go in the corrections log.