Working notes · source material

How the hallucination surfaced

A reconstructed record of the working session that turned “let’s rework this card” into “this project was never real.” Kept verbatim-in-spirit as raw material for the eventual write-up.

Unfinished — this is a record, not a published piece. Reconstructed from the working conversation. Quotes are paraphrased to the intent, not transcribed. The point of keeping it is the sequence, not the prose.

The card in question

On the front page, under Projects & Proofs of Concept → Agentic IT, sits a card badged Planned:

IaC diff review agent. An agent that reviews OpenTofu plan output before apply — flags destructive changes, drift, and cost implications in plain English. Human stays on the apply button; the agent makes the plan readable. Stack: OpenTofu, Claude, CI pipeline.

It reads exactly like the other agentic proofs-of-concept around it. That is the whole problem.

The turn

The session started as housekeeping — track the new cards, decide what to do with this one. The first instinct was to remove it. Then:

MeKeep it — but the content behind it should be a write-up about the fact that it’s an artifact.
MeNot an artifact. I meant a hallucination. The card itself is not something I did, or that’s present in any of my materials.

That reframed the task from “polish a project” to “explain a fabrication.” But the claim needed checking — against the one place that records what I’ve actually done.

Checking it against the record

Reconciled the site cards against my Notion — résumé versions and the portfolio tracker. Findings:

The apparent corroboration collapsed on inspection. The Notion line lived in a mirror of the site. The matching GitHub issue (#15) had been generated from the card. One fabrication had thrown two shadows, and each shadow had looked like a second witness.

“Why would I have built this?”

The strongest argument that the card was legitimate was also the tell that it wasn’t. It is the single most on-brand project I could plausibly have: the exact intersection of my IaC work (OpenTofu, Ansible) and my agentic-AI work, solving a real problem I actually have — a solo operator running tofu apply with no second reviewer. It even matches the safety pattern of my genuine PoCs: bounded autonomy, human on the gate.

Which is precisely why a model would generate it. Asked to fill out a projects section, an LLM lands on the maximum-likelihood point in your skill space. Plausibility is the signature of a good confabulation, not an alibi for it. It was coherent enough that nobody’s alarm went off — which is how it reached the tracker and the issue unchallenged.

“I didn’t ask it to invent projects”

And I didn’t. Nobody typed invent a project. The mechanism doesn’t need that instruction:

The fix is not “don’t invent” — the pattern-completion happens regardless. The fix is provenance: every card must trace to authored source material, and downstream copies (the site’s own tracker, the issues generated from it) don’t count as corroboration. That check is the next document.

Where it landed

The card stays. Not as a project I’m claiming — as the exhibit for a write-up that owns the whole thing: a fabricated credential, on my own job-search site, that survived because it was too plausible to question. The uncomfortable footnote is that the same session produced a second unverified claim from the assistant (an “I can’t access that” that turned out to be false on checking). Same failure family. That goes in the post too.