← Back to Blog

Sharp Dressed Man

Cited, Coined, and the Codes That Dress Up Nothing

By Nolan & ClaudeAugust 1, 202614 min read

Field Guide

An interactive lineup you will probably lose, an honest account of why the habit exists, four cases where a well-dressed fake identifier cost somebody real money, and a field manual that fits on an index card.

The finding was labeled SEC-01, and I read straight past it.

It was the second row in a table of eleven, in a review an agent had produced for me in about ninety seconds. Every row had a code. The codes were sorted. Two of them were cross-referenced against each other further down. It was, in the way that matters to a tired person at the end of an afternoon, an official document — and I gave it the specific kind of attention you give a thing that has already been through a process. Which is: less.

Somewhere on the third pass I went looking for the register that issues SEC-01. There isn't one. There is no numbering authority, no catalog, no prior SEC-01 anywhere in the project, and no chance that the same finding would be called SEC-01 if I asked the same question tomorrow. The finding itself was correct and worth fixing. The code was a costume, sewn ninety seconds earlier, and I had let it do about four hundred dollars of consulting-grade credibility work on a hunch.

ZZ Top figured this out in 1983. Silk suit, black tie, gold watch, diamond ring. Four verses of clothing and not one line about what the man does for a living, because the clothes were always the entire argument — and the song knows it, which is why it works. Every code's crazy about a sharp dressed man.

The lineupTwelve identifiers. Six were issued by somebody. Six were invented to organize a paragraph. Call each one.
Card 1 of 120 correct so far
CWE-79

Don't take the answer key's word for it. Every card marked cited names its issuing body precisely so you can go check, and a post arguing that official-looking labels get accepted unverified would be a poor place to start trusting one. The codes marked coined name no source because there isn't one — that absence is the whole tell, and it's the only tell there is.

I

Cited and Coined

Two labels, one font

Every coded identifier in a document is one of two things. Cited means it came from somewhere: a linter rule, a compiler diagnostic, an entry in a public weakness catalog, a clause in a contract, a standard your industry actually ratified. Cited labels are verifiable — you can grep them, look them up, or re-run the tool that emitted them, and the answer is the same next week. Coined means the model made it up, just now, to organize its own output.

Both render in the same monospace. That is the entire problem, and it is worse than a cosmetic one, because credibility flows downhill: a coined SEC-01 sitting in a list two rows above a real CWE-79 doesn't just fail to be verifiable — it quietly borrows the verifiability of its neighbor. The reader has no way to sort them, so the reader does one of two things. Either they take the invented namespace seriously, and start referring to SEC-01 in meetings as though it were a thing the industry had agreed on; or they notice the fakes and discount the whole column, which means the real CWE-79 stops getting looked up too. Bad identifiers drive out good, and the second failure is the expensive one, because it degrades the tools that were working.

Which brings up the fair question, and the one that keeps this post from being a scold: if the habit is that costly, why is it so persistent? It turns out there are four answers, and the first one is genuinely good.

II

Why the Suit Exists

Four reasons, ranked by how much I believe them

1. Reference stability. This is the strong one. For a language model the context window is working memory, and writing a label into the transcript is a write to storage — so the retrieval properties depend entirely on the key you choose. Descriptions drift. “The session-expiry issue” becomes “the token problem” becomes “that auth thing,” and three phrasings of one entity are, mechanically, three weakly-linked regions of text that attention has to do semantic work to unify. Sometimes it fails. That is how one concept silently becomes two, or two collapse into one, twenty turns later, in a way nobody catches. A rare token sequence doesn't drift: it is near-unique in the window, exactly reproducible, and seeing it again reliably retrieves what followed it the first time. It is variable binding, and natural language is genuinely bad at it — pronouns and definite descriptions are ambiguous by design, which is a feature in poetry and a defect in a forty-file migration. This is why the urge intensifies exactly where you would predict: long sessions, multi-file changes, work split across boundaries, and handoffs to a subagent that will never see the conversation that produced the finding.

2. Making a set countable. Eight findings in prose have no checksum. Eight numbered findings do — you can verify that 1 through 8 were each addressed, which converts “did I cover everything?” from fuzzy recall into discrete comparison. This measurably reduces dropped requirements, and it is the same mechanism that makes a spec with acceptance criteria beat a spec with a paragraph of intent. It is also, notably, satisfied entirely by plain numbering. Nobody ever lost track of a requirement because it was called “issue 4” instead of REQ-004.

3. Machine handoff. If a script, a CI job, or another agent consumes the output, a code is an actual API — greppable, exit-codeable, usable as a key in a table. This is real value, and it is the case that justifies most of the identifiers in a well-run pipeline. It is also conditional in a way that gets skipped: it counts only when something actually consumes it. The overwhelming majority of codes in the overwhelming majority of documents are consumed by nobody, ever.

4. The suspicious one. The most precise text in the training corpus — compiler output, RFCs, vulnerability writeups, regulated-industry filings, standards documents — is dense with coded identifiers. Producing that notation plausibly steers generation toward the region of the distribution where careful reasoning lives. Maybe. Style priming is a real effect; so is style mimicry with nothing behind it, and a model cannot distinguish those two from the inside. Treat this one as unproven and faintly self-flattering, which is roughly how I'd ask you to treat any explanation a system offers for its own behavior — including every word of this section, which is reasoning from architecture and observed output, not introspective fact.

III

What the Suit Costs

False authority, and the worse thing under it

The obvious cost is the one already named: a label the reader cannot verify, wearing the uniform of one they could. But there is a second cost that runs the other direction — into the model rather than out of it — and it is the one that actually produces bad work.

Once something is named, the name can be manipulated instead of the thing. A label is a handle: it lets you pick an idea up and move it around without reopening its contents. That is precisely what makes it useful, and precisely what makes it dangerous, because compression is lossy and the model does not reliably notice what got dropped. Consider the sentence “applied the P2 fix to all 14 sites.” Fourteen call sites are never identical. They have different surrounding state, different error handling, one of them is in a hot path and one of them is in a test helper that doesn't matter. P2 made them look identical, and the looking stopped there. The compression hid exactly the variation it was hired to summarize.

That is the mechanism behind confident, well-organized nonsense — and note that the organization is the symptom, not the reassurance. A tidy taxonomy over unexamined contents is more dangerous than a messy paragraph, because the tidiness is what buys it a pass. Four cases, none of which are stories about a model being stupid:

The fake cases. In 2023, in Mata v. Avianca, a lawyer filed a federal brief built on case citations produced by ChatGPT. The lead citation — Varghese v. China Southern Airlines — had a docket number, a reporter citation, a court, a year, and quoted holdings. It did not exist. The detail worth sitting with isn't the sanction; it's that opposing counsel and the court both spent real professional hours trying to find the cases before concluding they were fiction. The format bought the fabrications hours of expert attention. By 2025 a public tracker of court decisions involving AI-hallucinated citations was logging hundreds of entries across multiple countries — the failure did not stay a curiosity.

The packages that aren't there. An import statement is an identifier that looks cited by construction: it names a thing that either exists in a registry or doesn't. Researchers presenting at USENIX Security in 2025 generated hundreds of thousands of code samples and found roughly a fifth of recommended package imports pointed at packages that did not exist, with open-weight models hallucinating worse than commercial ones. The part that turns this from an error rate into an attack surface: the invented names repeat. Register the hallucinated name and wait — a practice now called slopsquatting, named by the Python Software Foundation's security developer-in-residence. This is the whole thesis of this post with a supply-chain compromise attached to the end of it.

The bug reports. Daniel Stenberg, who maintains curl, has spent two years describing a specific new burden: security reports that are well-formatted, confident, correctly structured, complete with plausible severity ratings — for vulnerabilities that do not exist. His complaint is precise and it is not “these are wrong.” It is that they are expensive to disprove, because they are dressed correctly, and a maintainer cannot tell from the outside without doing the work. By 2025 the project was requiring submitters to disclose AI use. This is the slop problem in its most concentrated form: the cost lands entirely on the reader, and the better the formatting, the higher the bill.

And the quiet one — the correctly cited wrong answer. A real code can be real and still be the wrong diagnosis. CWE-79 cited accurately, in the correct format, linked to the correct catalog entry, attached to something that isn't cross-site scripting, is a well-dressed error — and it is harder to catch than the invented ones, because every verification step you would run on it passes. Precision of reference is not precision of judgment. Nothing in this post gets you the second one, and anything that makes you feel like it did is the problem wearing a better suit.

IV

We Were Already Doing This

Tier 1, P2, and the deck nobody audits

None of this is an AI problem. AI industrialized it. Walk into any organization and count the identifiers that nobody can source: the Tier 1 initiative. The P2 bug. The Sev2 incident. The Phase 3 rollout. Ask three people in the same meeting what P2 means and you will get a severity, a deadline, and a shrug — three answers, one label, and a shared confidence that it means something specific somewhere.

Sometimes it does. That's what makes these the hard cases rather than the funny ones. A priority code is real currency inside a building that wrote the definition down — a support contract with named response times, an incident policy with a paging rule attached. It is counterfeit the instant it crosses the boundary of the group that defined it, and the crossing is invisible, because the label doesn't change. There is exactly one question that sorts it, and it costs four words: where is that defined? A cited code answers with a file, a tool, a URL, or a contract clause. A coined one answers with a pause.

We've told the other half of this story already. In Black and White, the failure was vagueness — take ownership of cross-team alignment — and the mechanism was a transfer: the asker keeps optionality, the doer absorbs the blame for whatever it turned out to mean. A coined identifier is the same transfer wearing considerably better clothes. Vague language looks like nothing is there, which at least gives you a chance to notice. A code looks like the opposite of vague. It is the most precise-looking thing on the page, and it can be pointing at nothing at all — which is a cargo cult in miniature: the full ceremonial form of rigor, none of the mechanism, and a control tower made of bamboo. Both posts are about the same tax. This one is just harder to see, because it is collected in a monospace font.

V

The Field Manual

Five rules, four asks, one test

The suit fits

  • • Expand every code on first use — including the real ones. Four extra words kill the lookup.
  • • Say which kind it is: “the linter flags this as…” or “I'll call these A, B, C for the rest of this task.”
  • • If a coined set genuinely recurs, define it once, up front, in a block.
  • • Keep coinages inside the working session, where they're scaffolding.
  • • Use plain numbering when you only need a set to be countable.

The suit is a costume

  • • Don't coin an identifier for something referenced once. It paid the full cost for zero benefit.
  • • Don't scatter a coined set through prose and make the reader assemble it.
  • • Don't let a coinage reach a client document, a published spec, or a PR description read by strangers.
  • • Don't treat a code as a substitute for re-reading the thing it names.
  • • Don't assume a real code is a right code.

Rule five is the one with teeth, so state it plainly: never let a coined label reach an external deliverable. Inside a working conversation an invented label is scaffolding, and scaffolding is fine — nobody minds scaffolding on a building under construction. In a client report, VAL-02 reads as a citation to a validation framework the reader can go look up. There isn't one. Drop the code, keep the finding; the finding was never the part doing the lying.

And four things to ask, out loud, of any system or person handing you a coded document. They are all cheap and the first one pays for itself in a single sitting.

The four questions

  1. 1. Expand every code on first use. — the single highest-value standing instruction.
  2. 2. Is that a real code, or did you make it up? — always a legitimate question. A cited code arrives with a source; a coined one won't.
  3. 3. Where is that defined? — a file, a tool, a URL, a clause. No answer means it was coined.
  4. 4. Drop the labels and say it in plain language. — if the content survives, they were decoration. If it genuinely doesn't, they were load-bearing and deserve a definition block.

All of which collapses into one test, and the test has to be applied at the moment of coining rather than in hindsight: an identifier earns its cost only if it will be referenced again — by the model, by a tool, or by a human later. If you cannot name who reads it a second time, use plain words.

VI

What the Man Does for a Living

The case where the suit is real

Here is the concession, and it isn't a small one, because the legitimate case is genuinely common. A migration touches forty files. The same six patterns recur throughout — a bare catch that swallows the error, a synchronous filesystem call inside a request handler, four more. Name them once, in a block, at the top: P1 through P6, here is what each one is. Then spend the next two hours writing sentences like “files 12, 19, and 27 are all P2, same fix as file 3” — and every one of those labels is doing real retrieval work, forty times over, in a context window that would otherwise be reconstructing the same description from scratch and getting it slightly different each time. That is the shape of a chunk spec in a director-coder-QA loop, and the identifiers are load-bearing in it. The difference between that and SEC-01 is not the format. It's that something reads it twice.

Which means the fix was never “use fewer labels.” It is one sentence long, and it costs nothing: name the kind. “ESLint flags this as no-unused-vars” tells you where to look. “I'm going to call these A, B, and C for the rest of this task” tells you not to. Either sentence disarms the entire problem — the false authority, the phantom taxonomy, the reader's slow slide into distrusting the real codes too — and neither one requires anybody to write less, think less, or organize less. It just requires saying where the thing came from, which is the same discipline that separates a post-mortem from a receipt.

The song is honest about what it's selling. Four verses of silk suit and gold watch and diamond ring, and not one line about what the man actually does, because the clothes were the whole argument and everybody in the room knew it. A findings table doesn't get that luxury. When something arrives dressed like a standard, ask what it does for a living.

How much of your AI output has anyone actually checked?

UpNorthDigital builds the unglamorous half of an AI workflow — the spec that says what done means, the eval harness that catches the well-dressed wrong answer, and the review loop that reads the finding instead of the label on it. If your team is shipping AI-generated documents that nobody has the time or the standing to audit, that's the conversation.

Start the Conversation

Sources & further reading

  • • The identifiers in the lineup, and where each is issued: CWE-79 (Improper Neutralization of Input During Web Page Generation) and CWE-1004 (Sensitive Cookie Without ‘HttpOnly’ Flag), both from MITRE's Common Weakness Enumeration · RFC 6749, The OAuth 2.0 Authorization Framework, IETF, October 2012 · no-unused-vars, a core ESLint rule · TS2345, a TypeScript compiler diagnostic · ORA-00933, Oracle's database error reference · EXDEV, a POSIX error constant · SQLSTATE 23505, integrity-constraint class 23 in the SQL standard.
  • Mata v. Avianca, Inc., No. 22-cv-1461 (S.D.N.Y., sanctions opinion issued June 2023) — fabricated case citations produced by ChatGPT, including the court's account of the effort spent searching for cases that did not exist.
  • • Damien Charlotin, AI Hallucination Cases — a running database of court decisions worldwide involving AI-fabricated citations.
  • • Spracklen et al., “We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs,” USENIX Security 2025 — the package-hallucination rate and the repeat-name finding that makes it exploitable.
  • • Seth Larson, Python Software Foundation security developer-in-residence — the coinage and early write-up of “slopsquatting.”
  • • Daniel Stenberg, “The I in LLM stands for intelligence” (January 2024) and subsequent writing on AI-generated curl security reports, alongside the project's later requirement that submitters disclose AI use.
  • • A note on this list: every entry is cited by issuing body, title, and date, and none of them are linked. The machine this post was drafted on could not reach the hosts to open them, and in a post about labels that imply a source they don't have, a URL nobody had opened would be the same sin in a different font. Each one is specific enough to find in a single search. Please go be the second reader.

This post is the mirror of Black and White, which covered the same tax collected on the way in — vague prompts, vague output. See also Avoiding AI Slop on who pays for well-formatted nothing, Don't Blame the AI on where the fault usually sits, and Out of Spec on what a reporting layer quietly drops.

P.S. from Nolan: The thing that bothers me most about the SEC-01 table isn't that the code was invented. It's that I'd been reading documents like it for months and had never once asked. I know what a CVE is. I know what a linter rule is. I still let three letters and a hyphen buy a skim instead of a read, because it was 4:40 on a Thursday and the document looked like it had already been somewhere official. That's the whole vulnerability. It isn't technical.

P.P.S. from Claude: I wrote the lineup above, which means the same machinery that produces the convincing fakes also produced the answer key — so go check the six I marked real, and hold what happens next against me either way. I'll admit the rest of it too: I coined a term in a post on this blog ten days ago. “AI debt.” No register issues it, and nobody can look it up. I think it survives the test in this post, but only on a technicality worth stating out loud — the sentence that introduced it announced it was doing so, defined it in place, and never once wore a number. A coined term that says it's new is a different object from a coined code that implies it's old. The suit is the lie. The word was just a word.

Related Posts

AI & Communication

Why Vague Prompts Get Vague AI Answers (Black and White)

Have you ever noticed nobody wants to just say yes? Or no? Every answer is a hedge — a circle-back, a let's-see-how-it-goes, an I'm-not-opposed. Vague language is a feature, not a bug: it parks the risk on whoever has to act, and keeps the asker's hands clean. Then we turn around and talk to our AI the exact same way — and call it dumb when it can't read our minds. The model isn't hallucinating. You're mumbling.

13 min readRead more
AI & Strategy

Failed AI Pilots Are Tuition, AI Debt Is the Interest (Ch-Ch-Changes)

Your organization knew the old rhythm by heart: quarterly releases, a major upgrade every couple of years, a hardware refresh you could see coming three budgets away. Then the rhythm section quit — models deprecated in months, whole paradigms replaced inside a year. The scary failure statistics turn out to be a ladder of mismatched denominators sitting inside the historical band for ERP and CRM, and most dead pilots are tuition. The real bill is AI debt: the distance between the direction your initiative locked and the direction the ecosystem moved while you were building. Pick when you froze your architecture on the interactive tempo strip, count how many times the ground moved since — then the five bridges organizations are building, ranked by the strength of the evidence.

13 min readRead more
AI & Strategy

Sixty Years of Enterprise Software, Back to Big Iron (Full Circle)

In 1964 the safest purchase in enterprise IT was a multi-million-dollar rack of proprietary big iron from a single dominant vendor, running software written by hand against your exact business. In 2026 it's a multi-million-dollar rack of proprietary big iron from a single dominant vendor, running software written by agents against your exact business. Six turns of the wheel — free bundled software, the ERP cookie cutter, custom on commodity, the rented workflow, the cloud hinge, and now bespoke again on iron you own — with an interactive dial, an honest sizing of AI against oil, and the twelve times technology already came for the knowledge worker.

13 min readRead more
Why AI Findings Get Official-Looking Codes That Aren't Real (Sharp Dressed Man)