chore(sync): record three upstream commits that do not apply - #361
Merged
Conversation
Bookkeeping only — no source, manifest or lockfile change. Advances the ledger cursor past three nuxt/ui commits with nothing to port, and records why, so the next reader does not re-derive it. - 094fb57 `chore(deps): release-it to v21 and @release-it/conventional-changelog to v12` — we release with release-please. Neither package appears in any manifest or workflow here, and there is no `.release-it.json`. - 10ec237 `fix(locale): correct slide placeholder casing in lb` — no `lb.ts` in this fork's locale set. Audited the bug class instead of shrugging: a placeholder whose casing does not match the interpolated key fails silently, so all 20 b24ui locales were grepped. Every placeholder is lower-case and the counts line up exactly with 20 files, so none is missing or mis-spelled. - 795c353 `fix(AuthForm): type submit payload with the schema output` — no `AuthForm` component here. The building blocks do exist (`FormData<S, T>`, `expectEmitPayloadType`), so the only component that emits a form submit was checked: `Form.vue` already declares `submit: [event: FormSubmitEvent<FormData<S, T>>]` — schema-derived, not `typeof state`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb
This was referenced Aug 11, 2026
IgorShevchik
pushed a commit
that referenced
this pull request
Aug 23, 2026
Review found six defects in the two checks this branch adds, three of them undermining the point of it. Every one was confirmed by running rather than reading. **The type check could be walked past.** `/^([a-z]+)/i` takes a letters-only prefix; the parser's type token runs to the first `(`, `!`, `:` or space. So `fix2(x):` read as `fix` and was accepted, `fix-perf(x):` as `fix`, and `2fix(x):` captured nothing at all — skipping the check and printing "type `undefined` has a section", next to a comment of mine calling that a case that could not happen. All three are types release-please would not match, which is the exact bypass this guard exists to close: a typo in letters was caught, a typo with a digit was not. The type now comes from the AST the parse already produced. The grammar has one implementation and it is not this file. Mutation then showed the fix had no test behind it — the original regex still passed all 75 cases, because every unconfigured type in the spec was letters. Four cases added. **The port check flagged commits that port nothing.** It keyed on any new entry in `processed`, but 70 of the ledger's entries are `no-op`, `noop`, `skip` or `n/a`. #442, #439 and #361 were all flagged — correct messages, on `main`, where they can no longer be fixed. The trigger is now a new entry whose `decision` is `port`. **The new tests would have failed every CI run.** They worktree'd onto real SHAs while this same branch sets `fetch-depth: 2`, so the objects are absent on CI; locally they passed only because a dev clone has the history. Rewritten against a synthetic two-commit repository, which also removes a race that bit this branch for real — a concurrent process restoring the same file twice discarded edits mid-review. Three smaller ones. A batch port was required to name every SHA it added, while §6 4b and this file's own docstring say naming one is enough. The ledger key was interpolated into `new RegExp`, so an entry keyed `(a+)+$` hangs the check — it is a substring test against a key checked to be a SHA now. And an unreadable ledger warned at HEAD^ but was silent at HEAD. Two coverage holes closed on review's evidence: disabling `isMergeCommit()` killed no test, and the "reads the type list from the config" test was a string-containment check that a hardcoded copy passes with the comment intact. It now stands the script beside a config naming a type this repository does not configure and requires it to be accepted. Docs corrected where they promised more than the code does. §7 said CI checks the upstream reference; it does, but only on `push` to `main` — the title job works from a title, which cannot say what a commit touched — so the reviewer owns both halves. `pr-title.yml` now says green there does not mean every rule is satisfied. `AGENTS.md` states both requirements, which until now were discoverable only by reddening CI. Nine mutations that previously killed nothing now each kill at least one case. Follow-up #472 covers the install cost of the title job. Refs #437 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012MsMuj8Fic9tjWVjyEyrxc
9 tasks
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.
Bookkeeping only — no source, manifest or lockfile change. Advances the ledger cursor past three
nuxt/uicommits with nothing to port, and records why, so the next reader does not re-derive it. Batched into one PR rather than three near-empty ones, as with #201, #209, #210 and #216.Each one was checked against the actual upstream diff, not the commit title.
094fb57—chore(deps): release-it to v21 and @release-it/conventional-changelog to v12Two lines in upstream's root
devDependenciesplus the lockfile. No config, no workflow, no source.We do not release with release-it — we use release-please (
release-please-config.json,.release-please-manifest.json,.github/workflows/release-please.yml), with publishing innpm-publish.yml. Confirmed rather than assumed: neither package appears in any manifest here, neither is referenced by any workflow, and there is no.release-it.jsonorrelease-itkey inpackage.json.10ec237—fix(locale): correct slide placeholder casing in lb(nuxt/ui#6822)One character in
src/runtime/locale/lb.ts:'Gitt op d\'Slide {Slide}'→{slide}. The interpolation key is case-sensitive, so{Slide}never matched and Luxembourgish users saw the literal{Slide}instead of a number.b24ui ships its own locale set (
ar, br, de, en, fr, id, in, it, ja, kz, la, ms, pl, ru, sc, tc, th, tr, ua, vn) — there is nolb.ts.Audited rather than shrugged off, because the interesting part is the bug class: a placeholder whose casing does not match the interpolated key fails silently — no error, no test failure — and we maintain 20 locales of our own where the same mistake could exist independently.
Every placeholder is lower-case, and the counts line up exactly with 20 locale files (
{label}twice per file, the rest once) — so no locale is missing or mis-spelling one either.795c353—fix(AuthForm): type submit payload with the schema output(nuxt/ui#6816)stateis assembled from thefieldsprop, so it describes what the form renders, not what the schema produces — anything the schema adds (a.default(), a transform, a coerced type) was missing or wrong in the emitted payload's type.We have no
AuthFormcomponent. Audited rather than shrugged off, because the building blocks do exist here —FormData<S, T>insrc/runtime/types/form.tsand theexpectEmitPayloadTypehelper intest/utils/types.ts(already used by theListbox,Select,SelectMenuandInputMenuspecs) — so the same mistake could have been made independently. The only component that emits a form submit isForm.vue, and it is already correct:Schema-derived, not
typeof state.Verify
lintgreen. Nothing else runs differently — the diff is three journal files under.sync/log/and three ledger entries.Ledger: cursor →
795c353; the18c231aentry is reconciled to PR #360 /27b4db3. This brings the fork level withnuxt/ui@v4HEAD.Generated by Claude Code