|
| 1 | +--- |
| 2 | +'@objectstack/cli': patch |
| 3 | +--- |
| 4 | + |
| 5 | +`collect-docs.ts` records what the `docs/duplicate-name` refusal rests on now that ADR-0048 §3.4 retired its older justification (#19248) |
| 6 | + |
| 7 | +`docs/duplicate-name` refuses two owners declaring one doc name. The claim it |
| 8 | +was once explained by — *"one registration overwrites the other"* — was retired |
| 9 | +by ADR-0048, and a refusal whose stated justification no longer exists is worth |
| 10 | +examining rather than inheriting second-hand. #19248 examined it. |
| 11 | + |
| 12 | +**The verdict is that no wording change was warranted**, and the ADR text is |
| 13 | +quoted into the rule's own docblock so the next reader does not have to |
| 14 | +re-derive it. §3.4 retires a RUNTIME throw and nothing else — *"The |
| 15 | +cross-package **throw is retired**; two distinct packages coexist on the same |
| 16 | +bare name by construction."* — while keeping, in the same clause, the class |
| 17 | +this lint belongs to: *"Authoring-time hygiene — an author shipping two |
| 18 | +`page/home` in one package — stays covered by the `naming/namespace-prefix` |
| 19 | +lint in `os lint`."* Both sentences are quoted verbatim, checked against |
| 20 | +`docs/adr/0048-cross-package-metadata-collision.md` on this branch's base |
| 21 | +(`13d52947d8`) rather than recalled. |
| 22 | + |
| 23 | +The message already said `for authoring hygiene` and already declined the |
| 24 | +retired claim by name, so what shipped was correct and stays byte-identical. |
| 25 | +What the docblock gains is the ADR's own words, the card number the standing |
| 26 | +**severity** disagreement is filed under, and the boundary between the two |
| 27 | +questions: §3.4 hands authoring hygiene to a warning-only lint while this one |
| 28 | +is `severity: 'error'`, which is a live question about the level and not about |
| 29 | +the reason. |
| 30 | + |
| 31 | +⛔ No behaviour changes. No rule, message, severity or accept set moves; the |
| 32 | +only edited bytes are inside one docblock comment. |
| 33 | + |
| 34 | +**This ships, which is why it carries a changeset rather than |
| 35 | +`skip-changeset`.** `@objectstack/cli`'s published `files[]` is |
| 36 | +`["dist","README.md","CHANGELOG.md"]` and the package builds with plain `tsc` |
| 37 | +(`tsc -p tsconfig.build.json`, no `removeComments`), so the comment is emitted |
| 38 | +into the tarball — measured on the rebuilt artifact: the new clause is present |
| 39 | +in `dist/utils/collect-docs.js` (1 occurrence), the replaced spelling is absent |
| 40 | +from all of `dist` (0), and `dist/**/*.d.ts` carries 0 of it because the block |
| 41 | +sits above a non-exported helper. The rule's own runtime message resolves to |
| 42 | +that same file as the positive control. So the published JS bytes move while |
| 43 | +the declaration surface does not. |
0 commit comments