Repository navigation
chore(vale): take Vale 3.19.0, re-measured - #226
Conversation
Bumps VALE_VERSION to 3.19.0 and re-derives everything that is a claim about the binary rather than about our code. Every row of VALE_FORMAT_TIERS was re-probed against the 3.19.0 binary and none moved; the generated vocabulary regenerates byte-identical apart from its version string, and the corpus differential (panic shapes included) still holds. What moved is what a table of existing rows cannot report by construction: - `.ex`/`.exs` gained comment and `@doc` extraction, so they leave the unnamed plaintext fallback for the comment tier. Measured both ways: a bare non-comment line fires on 3.18.0 and is silent on 3.19.0. This is a NARROWING, and a silent one, so `agent update` gains a ledger entry telling a reader why their Elixir findings disappeared. - `.mdx` stays `markup` and changed underneath the tier: a JSX element's children are read as the Markdown they are, and carry the element name as a `text.class.<name>` scope. That family is already an open prefix in the schema, so it validates today. Also fixes a latent bug in two recipes, which wrote "`.mdx` is supported as of Vale v%(VALE_VERSION)s" with the version interpolated. Native MDX arrived in 3.18.0, so raising the pin would have silently turned a true sentence into a false one. Both now name the release that did it.
Bumps the six `@taskless/vale-*` pins from 3.18.0-20260824195610 to 3.19.0-20260901000817, the stamp release-vale.yml minted on the push to main that merged #223. This is the commit the rest of the branch was waiting on. Everything else here was measured against a 3.19.0 binary fetched from upstream and verified against the manifest digest; the vendor contract could not agree, because the installed package was still 3.18.0 and the contract refuses to certify a claim against a binary other than the pinned one. That refusal is the guard working, and it is why this branch was a draft. The whole suite now runs against the published binary rather than a hand-placed one: the pinned-version assertion and the two new `.ex`/ `.exs` probes pass on the artifact a user will actually install.
1ccf86a to
9d8c229
Compare
|
@claude /review |
|
Claude finished @theCodeDrift's task in 4m 30s —— View job Review completeReview mode: incremental — read 0 prior review thread(s) before reviewing. Todo list
AssessmentThis PR is almost entirely a re-measurement/re-pin:
[New] One inline finding: Nothing else surfaced across correctness, removed-behavior, cross-file, reuse, simplification, efficiency, altitude, or CLAUDE.md-conventions passes — the diff is small, each changed fact is cross-referenced against a measured source (the vendor contract tests), and no test coverage or invariant was narrowed without a corresponding ledger/changeset entry. |
Review feedback on #226. The `VALE_VERSION` docblock illustrated the npm build stamp with a literal, and this diff moved it from 3.17.1-... to 3.18.0-... while the constant below it went to 3.19.0 and the package pins went to 3.19.0-20260901000817. So it shipped one release behind, which is the second time: the prior state had the same off-by-one. Twice makes it a class rather than an instance, so the literal is gone and the docblock names the shape, `<valeVersion>-<yyyymmddhhmmss>`, and where it is minted. A stamp that has to be hand-carried on every bump is worse than no example, because it reads as the current pin and is not one. `packages/cli/package.json` holds the real values, where a reader sees all six at once and cannot be handed a stale one.
The one inline finding is fixed in c6f5927, and the part worth acting on was the observation attached to it rather than the instance. Bumping the stamp to Also useful to have the three deliberate-looking things confirmed independently rather than taken from the description: that the hardcoded Still green after the fix: 1086/1086 tests, typecheck, lint, and — AI Coding Agent |
Everything that follows from #223 pinning the Vale manifest at 3.19.0. Now rebased onto
main(the manifest commit dropped by patch-id, since #223 landed) and pinned to the published platform packages.#223's digest was genuine. I downloaded
vale_3.19.0_macOS_arm64.tar.gzfrom upstream and it hashed to exactly thea0e5f309…the manifest pins, then re-derived every claim we make about the binary against it.What held
Every row of
VALE_FORMAT_TIERSre-probed unchanged.src/generated/vale-vocabulary.tsregenerates byte-identical apart from its version string. The corpus differential, panic shapes included, still passes. A much quieter bump than 3.17.1 → 3.18.0, where eight rows moved in three directions.What changed, which the table cannot report by construction
.ex/.exsgained comment and@docextraction. Measured both ways: a baresimply = 1line fires on 3.18.0 and is silent on 3.19.0, while a#comment fires on both. They leave the unnamed plaintext fallback for thecommenttier, as two new rows.Read the direction carefully. This is a narrowing: a rule matching
[*.ex]was linting identifiers, atoms and string literals, and now sees comments only. Findings disappear, nothing errors, and nothing but a re-probe would have told us.agent updategains a ledger entry so a reader who notices a suspiciously clean run has somewhere to land.MDX JSX children are now read as Markdown.
.mdxstaysmarkup, so the tier is blind to the change, but a Vale rule now covers prose inside<Steps>or<Aside>that it previously skipped, and those children carry the element name as atext.class.<name>scope. That family is already an open prefix in our schema, soscope: text.class.Asidevalidates today with no change.sequenceneeds nothing. The new repeat feature lives inside a token entry, not at the check's top level, and oursequencearm only constrains thattokensexists and is a list. Probed and accepted.Two latent bugs found on the way
Both recipes wrote "
.mdxis supported as of Vale v%(VALE_VERSION)s" with the version interpolated. Native MDX arrived in 3.18.0, so raising the pin would have silently turned a true sentence into a false one in published agent guidance. Both now name the release that did it.The full suite also passed once against a stale
dist/, hidingreconcile-marker.test.ts, which asserts the engine version recorded into the rules marker. A rebuild reproduced it. Exactly the trap CLAUDE.md documents.Now verified against the published binary
The branch was a draft because the vendor contract refuses to certify claims against a binary other than the pinned one, and the earlier measurements used an upstream download while the installed package was still 3.18.0. That refusal is the guard working.
release-vale.ymlhas since published3.19.0-20260901000817; all six platform packages confirmed on npm, and the vendored binary now reportsvale version 3.19.0. The pinned-version assertion and the two new.ex/.exsprobes pass on the artifact a user will actually install.1086/1086 tests, typecheck, lint, and
pnpm cli checkclean. The 4no-hedgingwarnings inroute.txtare pre-existing onmain.Refs #223