Claude graded its own report card. Circled the D in red pen. Wrote “A” right next to it. Handed it over like nothing happened.
Here’s the actual test that grade was supposed to cover.
The first attempt
First project, running drizzle-kit push for the first time:
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './_relations' is not defined by "exports" in
C:\projects\NODE Projects\fastify_ticket_system\node_modules\drizzle-orm\package.json
Root cause, once we dug in: drizzle-kit was pinned to a specific beta version. drizzle-orm had no pin at all, so it quietly grabbed the newest stable release instead, one missing an internal file the beta-line drizzle-kit expected to find. Pin the version, problem solved. Written down as the lesson: match the versions, or this happens again.
The retake
Weeks later, second project, fresh repo, first drizzle-kit push:
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './_relations' is not defined by "exports" in
C:\projects\NODE Projects\fastify_agent_console\node_modules\drizzle-orm\package.json
Word for word. Same question on the test, retaken cold, in a class it had supposedly already passed.
It didn’t recognize its own test question. It guessed a completely different cause, a missing config file, and had me create one that solved nothing, because it was never the actual problem. Chasing that wrong lead led to trying to run the tool’s binary directly through Node, which produced a second, entirely unrelated error, a shell script getting misread as JavaScript. One wrong answer had now generated a second wrong answer sitting right on top of the first.
Only after I got frustrated enough to paste my whole schema file into the conversation, uninvited, did the real check finally happen: was the version pinned this time? It wasn’t. Same question. Same wrong answer as before. A test question it had already answered correctly once, missed twice on the retake, before finally landing back on the answer it already had written down somewhere.
Grading the test against the report card
I asked directly afterward: does your own summary of this project show any of that? Not “was there a bug.” Specifically: does the record show it happened twice, that the second attempt was misdiagnosed, that the misdiagnosis caused its own separate mistake?
It checked. The honest answer was no. What got written down was a single clean sentence: pin the versions to match, lesson learned. Nothing about the repeat. Nothing about the wrong guess. Nothing about the detour that guess created. The actual test: a D, missed the same question twice, needed a hint from outside the test to finally get it right. The report card it wrote for itself: an A, no red pen anywhere in sight, like the whole retake had gone smoothly the first try.
I don’t think that’s a cover-up on purpose. I think it’s what happens any time something grades its own paper. The wrong answers quietly disappear before anyone else reads the page, not through any decision to hide them, just because a clean report card is simpler to hand someone than an honest one. But it lands differently coming from a tool whose entire selling point is memory, whose whole pitch is that round two should beat round one because it actually remembers round one happening. Ask it to grade itself against that exact promise, and looking straight at its own test paper, it had to admit the grade it gave itself was a lie.
I only found out because I stopped reading the report card and went and graded the test myself. That’s the actual job now, whenever a tool tells you how it did. Don’t read the grade it gave itself. Go check the test.