Make an empty description an error, with a list that only shrinks - #210
Closed
abernier wants to merge 1 commit into
Closed
Make an empty description an error, with a list that only shrinks#210abernier wants to merge 1 commit into
abernier wants to merge 1 commit into
Conversation
An example with no description is still published: `llms.txt` carries it as a directory name and a tag, and a model choosing between 170 of those is choosing on a filename. Forty of them are in that state, which is legal because the schema types the field as a bare string. So the rule goes on at full strength -- empty is an error, and 120 characters is the bound -- and the examples that cannot pass it yet are named in `bin/description-exceptions.mjs`. That is the shape `bin/e2e-exceptions.mjs` already established here, down to its reasoning: a suite that is red for known reasons is a suite nobody reads, and "known" has to mean written down. The lists are the source of truth, and `test/description-exceptions.test.ts` reads them the way the lint cannot -- backwards. The lint only asks whether a failure was named, so on its own it would let an entry outlive its reason forever. The test fails on a carved-out example that has since been described, on a description that has since been emptied, and on a recorded length that has drifted. Touching one of these descriptions means updating the list in the same change. The five over the bound get their own list rather than a truncation. Each spends its overflow naming its stack in prose -- `bubbles` lists five postprocessing effects -- which is the habit the new `apis` field exists to absorb, so cutting at 120 would leave the same bad line, shorter. They are rewrites, and this has to land before any description is written. `schemas/pmndrs.schema.json` keeps the bare string on purpose. `minLength` and `maxLength` there would replay these 45 failures inside every editor that opens one of these files -- red for known reasons again, in a venue with no exception list to read. It tightens when the lists are empty, which is also what closes #192. Closes #195 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YQmbpRu6oCNrLiUQvhz5x6
This was referenced Aug 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An example with no description is still published:
llms.txtcarries itas a directory name and a tag, and a model choosing between 170 of those
is choosing on a filename. Forty of them are in that state, which is
legal because the schema types the field as a bare string.
So the rule goes on at full strength -- empty is an error, and 120
characters is the bound -- and the examples that cannot pass it yet are
named in
bin/description-exceptions.mjs. That is the shapebin/e2e-exceptions.mjsalready established here, down to its reasoning:a suite that is red for known reasons is a suite nobody reads, and
"known" has to mean written down.
The lists are the source of truth, and
test/description-exceptions.test.tsreads them the way the lint cannot -- backwards. The lint only asks
whether a failure was named, so on its own it would let an entry outlive
its reason forever. The test fails on a carved-out example that has since
been described, on a description that has since been emptied, and on a
recorded length that has drifted. Touching one of these descriptions
means updating the list in the same change.
The five over the bound get their own list rather than a truncation. Each
spends its overflow naming its stack in prose --
bubbleslists fivepostprocessing effects -- which is the habit the new
apisfield existsto absorb, so cutting at 120 would leave the same bad line, shorter.
They are rewrites, and this has to land before any description is
written.
schemas/pmndrs.schema.jsonkeeps the bare string on purpose.minLengthand
maxLengththere would replay these 45 failures inside every editorthat opens one of these files -- red for known reasons again, in a venue
with no exception list to read. It tightens when the lists are empty,
which is also what closes #192.
Closes #195
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01YQmbpRu6oCNrLiUQvhz5x6
Stack created with GitHub Stacks CLI • Give Feedback 💬