From 6943445b89f637352585ead984a2fd63d4e4fe37 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 5 Nov 2026 19:11:35 +0000 Subject: [PATCH] docs(spec): the major-18 conversions docblock places the import, not the definition Since the per-entry split, a conversion is defined in its own module under `./entries/18/.ts` and `registry.ts` only imports it. The docblock's placement bullet still told an author to define the conversion above the next entry's definition, directly above `OrderedConversion`. It now says what `scripts/conversions-major18-merge.test.ts` enforces: the module named for the `id`, and the import directly above the import of the entry that follows in the list, or after every other `./entries/18/` import when it sorts last. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01L6bhgVugtCCwBs98FeR27P --- packages/spec/src/conversions/registry.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/spec/src/conversions/registry.ts b/packages/spec/src/conversions/registry.ts index 9c7802306e1..e4ed37b5226 100644 --- a/packages/spec/src/conversions/registry.ts +++ b/packages/spec/src/conversions/registry.ts @@ -178,11 +178,15 @@ function inApplicationOrder(entries: readonly OrderedConversion[]): readonly Met * take the same number; they then apply in `id` order. One that must apply * BEFORE an existing entry takes a number between its neighbours' (`23.5`) * instead of renumbering them. - * - DEFINE it directly above the definition of the entry that follows it in - * this list, so the conversion defined next after it is that entry. One that - * sorts last is defined after every other conversion, directly above - * `OrderedConversion`. The end of the definitions is one gap too: defining - * every new conversion there conflicts exactly as appending here did. + * - DEFINE it in a module of its own, `./entries/18/.ts`, the file named for + * the conversion's `id` and exporting it by name (`export { };`). + * A new file never conflicts. + * - IMPORT it directly above the import of the entry that follows it in this + * list, so the conversion imported next after it is that entry. One that + * sorts last is imported after every other `./entries/18/` import. The + * imports stand where the definitions stood before the split, and their end + * is one gap too: importing every new conversion there conflicts exactly as + * appending here did. * * `scripts/conversions-major18-merge.test.ts` holds both rules for every entry * added after this shape, and proves the merge.