docs(sync): backfill the four missing port logs and guard the pairing - #518
Merged
Conversation
The ledger's log convention starts one entry in, at `d50c121c`, so the four commits before it — `2799fa6f`, `631f5dc5`, `6102a87b`, `007b136a` (#68-#72) — had a `processed` entry and no `.sync/log/<sha>.md`. #515 deferred both these and the guard that would have caught them, on the grounds that writing a rationale months later is reconstruction rather than record. The record turned out to still exist. Both commits are readable on both sides, and three of the four fork commits carry contemporaneous reasoning in their own messages, so each log is derived from `git show` on the upstream commit and on ours, and says at the top that it was backfilled and from what. Nothing is recalled. Re-deriving them was worth more than the tidiness. It surfaced an omission nobody had recorded: `2799fa6f` added an autocomplete-mode row to upstream's InputMenu playground, the port dropped it, and neither playground has one today, so the mode cannot be exercised by hand. It also made two ports legible that the one-line summaries had flattened — `631f5dc5` must NOT copy upstream's prop list verbatim, because ours omits `loadingIcon` on purpose, and `007b136a` had to move a cap between slots rather than add one, which is why it is breaking here and is not upstream. The guard now asserts the pairing in both directions plus a floor on file size: a missing log is the obvious failure, an orphaned log is what a mistyped SHA in a filename looks like, and an empty file satisfies pairing while documenting nothing. Three mutations verified. The heading format is deliberately not guarded — it varies across the 280 files, and a rule there would be invented rather than enforced. Gate: lint, typecheck, build (3.86 MB), test (322 files, 7502 passed).
IgorShevchik
added a commit
that referenced
this pull request
Aug 31, 2026
…ssing (#520) Upstream's `2799fa6f` — the commit that renamed InputMenu's `autocomplete` boolean to `mode: 'combobox' | 'autocomplete'` — added a row exercising the new mode to its own playground. The port (#68) dropped that line, and nothing has added one since, so the mode has never been reachable by hand in either playground. No snapshot covers it either: the render is identical and only the prop spelling differs, which is why the port could report "snapshots unchanged" and be right. The row takes its own ref rather than reusing one above it. In autocomplete mode `modelValue` is the input text, a string, where every other row on the page binds a selected item — which is the point of the mode and the thing a person is there to look at. Found by backfilling that commit's `.sync/log/` entry in #518, which is also where the omission is recorded; the log is updated to say the gap was closed here rather than leave a claim that is no longer true.
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.
Closes the finding left open by #515.
The ledger's log convention starts one entry in, at
d50c121c, so the four commits before it had aprocessedentry and no.sync/log/<sha>.md. #515 deferred both the backfill and the guard that would have caught them, on the grounds that writing a rationale months later is reconstruction rather than record.The record turned out to still exist. Both commits are readable on both sides, and three of the four fork commits carry contemporaneous reasoning in their own messages. Each log is derived from
git showon the upstream commit and on ours, plus the fork commit's message, and says at the top that it was backfilled and from what. Nothing is recalled.What the four are
2799fa6f—fix(InputMenu)!: rename autocomplete prop to mode081a9799name:stays valid) and one a real gap631f5dc5—fix(ContentSearch/DashboardSearch): proxy missing CommandPalette propse92fdc356102a87b—docs(design-system): Tailwind v4 cursor change77314c8e007b136a—fix(components)!: constrain popper content to viewport height5da53b6bWhat re-deriving them turned up
An omission nobody had recorded.
2799fa6fadded<UInputMenu placeholder="Autocomplete" mode="autocomplete" … />to upstream's nuxt playground. The port dropped that line, and re-checking now, neitherplaygrounds/nuxtnorplaygrounds/demohas an autocomplete-mode row for InputMenu. Small, but it is the only place the mode can be exercised by hand. Recorded in the log, not fixed here — that is a change to a playground, not bookkeeping.Two ports the one-line summaries had flattened.
631f5dc5reads as "copy upstream's prop list", and doing that would have been wrong: upstream's list containsloadingIconand ours must not, because this fork does not carry the prop at all —CommandPalette.vue:93says@memo not use loadingIcon. Taking the list verbatim would have added a name to areactivePickfor a prop that does not exist, forwardingundefinedsilently rather than failing.007b136adiverges structurally. Upstream adds a popper cap to acontentslot that already hadflex flex-col; here the equivalent cap sat onviewport, so applying upstream's hunks verbatim would have left two caps fighting — an unconditional40vhinside a content bounded by the available height. The port moves the cap instead, keeps the fork's own ceilings rather than upstream's15rem, and adds avar(…, 100vh)fallback upstream's baremax-h-(--reka-…)form does not need: insidemin(), an unset variable invalidates the whole declaration instead of merely not capping, which is exactlySelectwithposition="item-aligned", where reka never publishes the height. Two transform-origin namespace bugs fixed in that commit were ours alone. That is why it is marked breaking here and is not upstream.The guard
test/utils/sync-ledger.spec.tsgains two assertions:Three mutations verified, each failing the assertion it should: delete a log (entry without log), add a
deadbeef…md(log without entry), truncate a log to# stub(thinness).Deliberately not guarded: the heading format. It varies across the 280 files —
# no-op — nuxt/ui@<sha>and# Port: <subject>both occur — and a rule there would be invented rather than enforced.Verification
Each log ends with a re-check against today's
main, not against the commit it describes — the ports are all four still intact, and007b136a's literal40vh/40remhave since been tokenised by #430 (--max-height-popup-menu/--max-height-popup-list) with themin()shape and fallbacks unchanged.Full gate:
lint·typecheck·build(3.86 MB) ·test— 322 files, 7502 passed, 6 skipped.Generated by Claude Code