[{"data":1,"prerenderedAt":1962},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:KlrBGEH8fhJGOMOp--t_dNIMbwGW_GCaAf_m4n2USM0":72,"content-page-surround:docs:KlrBGEH8fhJGOMOp--t_dNIMbwGW_GCaAf_m4n2USM0":1953,"i-lucide:terminal":1956,"i-lucide:clipboard":1960},[4,12,18,24,30,36,42,48,54,60,66],{"title":5,"id":6,"canonicalKey":7,"locale":8,"draft":9,"icon":10,"path":11},"Overview","content:docs:1.overview.md","1","en",false,"lucide:compass","\u002Fdocs\u002Foverview",{"title":13,"id":14,"canonicalKey":15,"locale":8,"draft":9,"icon":16,"path":17},"Checklist","content:docs:2.checklist.md","2","lucide:list-checks","\u002Fdocs\u002Fchecklist",{"title":19,"id":20,"canonicalKey":21,"locale":8,"draft":9,"icon":22,"path":23},"Set up a repository","content:docs:3.set-up-a-repository.md","3","lucide:folder-plus","\u002Fdocs\u002Fset-up-a-repository",{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":9,"icon":28,"path":29},"Migrate a repository","content:docs:4.migrate-a-repository.md","4","lucide:arrow-right-left","\u002Fdocs\u002Fmigrate-a-repository",{"title":31,"id":32,"canonicalKey":33,"locale":8,"draft":9,"icon":34,"path":35},"Releasing","content:docs:5.releasing.md","5","lucide:rocket","\u002Fdocs\u002Freleasing",{"title":37,"id":38,"canonicalKey":39,"locale":8,"draft":9,"icon":40,"path":41},"Write library docs","content:docs:6.writing-docs.md","6","lucide:book-open","\u002Fdocs\u002Fwriting-docs",{"title":43,"id":44,"canonicalKey":45,"locale":8,"draft":9,"icon":46,"path":47},"Dependencies","content:docs:7.dependencies.md","7","lucide:package-search","\u002Fdocs\u002Fdependencies",{"title":49,"id":50,"canonicalKey":51,"locale":8,"draft":9,"icon":52,"path":53},"Security reports and incidents","content:docs:8.security.md","8","lucide:shield-alert","\u002Fdocs\u002Fsecurity",{"title":55,"id":56,"canonicalKey":57,"locale":8,"draft":9,"icon":58,"path":59},"Adding tooling","content:docs:9.adding-tooling.md","9","lucide:hammer","\u002Fdocs\u002Fadding-tooling",{"title":61,"id":62,"canonicalKey":63,"locale":8,"draft":9,"icon":64,"path":65},"Maintain the fleet","content:docs:10.maintain-the-fleet.md","10","lucide:calendar-check","\u002Fdocs\u002Fmaintain-the-fleet",{"title":67,"id":68,"canonicalKey":69,"locale":8,"draft":9,"icon":70,"path":71},"Troubleshooting","content:docs:11.troubleshooting.md","11","lucide:wrench","\u002Fdocs\u002Ftroubleshooting",{"title":25,"description":73,"icon":28,"body":74,"type":1941,"id":26,"canonicalKey":27,"draft":9,"partial":9,"locale":8,"collection":1942,"navigationFile":9,"file":1943,"route":1948,"resolution":1950},"Move an existing library to the current standard in one pull request, in an order that never breaks a release - agent steps, settings, the maintainer's npm step, the first release and cleanup, with every known edge case.",{"type":75,"children":76,"toc":1928},"root",[77,85,92,105,138,143,435,441,446,1012,1025,1051,1069,1098,1104,1109,1127,1182,1201,1207,1300,1306,1355,1361],{"type":78,"tag":79,"props":80,"children":81},"element","p",{},[82],{"type":83,"value":84},"text","A migration is one pull request plus a few settings. An agent does almost all\nof it. The maintainer does the npm steps in step 3 below and\napproves the first publish. Follow the order below; most failed migrations\ncome from a step done too early or too late.",{"type":78,"tag":86,"props":87,"children":89},"h2",{"id":88},"before-you-start",[90],{"type":83,"value":91},"Before you start",{"type":78,"tag":79,"props":93,"children":94},{},[95,97,103],{"type":83,"value":96},"Run the audit and read every ",{"type":78,"tag":98,"props":99,"children":100},"code",{},[101],{"type":83,"value":102},"FAIL",{"type":83,"value":104}," before you change anything:",{"type":78,"tag":106,"props":107,"children":110},"pre",{"language":108,"class":109},"bash","shiki shiki-themes light-plus dark-plus dark:dark-plus",[111],{"type":78,"tag":98,"props":112,"children":114},{"class":113},"language-bash",[115],{"type":78,"tag":116,"props":117,"children":120},"span",{"class":118,"style":119},"line","display: inline",[121,127,133],{"type":78,"tag":116,"props":122,"children":124},{"style":123},"color:#795E26;--shiki-dark:#DCDCAA",[125],{"type":83,"value":126},"pnpm",{"type":78,"tag":116,"props":128,"children":130},{"style":129},"color:#A31515;--shiki-dark:#CE9178",[131],{"type":83,"value":132}," audit:repos",{"type":78,"tag":116,"props":134,"children":135},{"style":129},[136],{"type":83,"value":137}," OWNER\u002FREPO",{"type":78,"tag":79,"props":139,"children":140},{},[141],{"type":83,"value":142},"Then answer these questions from the repository and npm. The answers change\nthe steps below.",{"type":78,"tag":144,"props":145,"children":146},"table",{},[147,171],{"type":78,"tag":148,"props":149,"children":150},"thead",{},[151],{"type":78,"tag":152,"props":153,"children":154},"tr",{},[155,161,166],{"type":78,"tag":156,"props":157,"children":158},"th",{},[159],{"type":83,"value":160},"Question",{"type":78,"tag":156,"props":162,"children":163},{},[164],{"type":83,"value":165},"How to check",{"type":78,"tag":156,"props":167,"children":168},{},[169],{"type":83,"value":170},"Why it matters",{"type":78,"tag":172,"props":173,"children":174},"tbody",{},[175,222,262,290,328,366,410],{"type":78,"tag":152,"props":176,"children":177},{},[178,184,203],{"type":78,"tag":179,"props":180,"children":181},"td",{},[182],{"type":83,"value":183},"Which workflow publishes today?",{"type":78,"tag":179,"props":185,"children":186},{},[187,189,194,196],{"type":83,"value":188},"The workflow files that run ",{"type":78,"tag":98,"props":190,"children":191},{},[192],{"type":83,"value":193},"npm publish",{"type":83,"value":195},", and the trusted publisher in each package's settings on ",{"type":78,"tag":197,"props":198,"children":200},"a",{"href":199},"https:\u002F\u002Fwww.npmjs.com",[201],{"type":83,"value":202},"npmjs.com",{"type":78,"tag":179,"props":204,"children":205},{},[206,208,213,215,220],{"type":83,"value":207},"The trusted publisher must name ",{"type":78,"tag":98,"props":209,"children":210},{},[211],{"type":83,"value":212},"release.yml",{"type":83,"value":214}," before the first new release. An ",{"type":78,"tag":98,"props":216,"children":217},{},[218],{"type":83,"value":219},"NPM_TOKEN",{"type":83,"value":221}," secret must be deleted.",{"type":78,"tag":152,"props":223,"children":224},{},[225,237,247],{"type":78,"tag":179,"props":226,"children":227},{},[228,230,235],{"type":83,"value":229},"Is the version on ",{"type":78,"tag":98,"props":231,"children":232},{},[233],{"type":83,"value":234},"main",{"type":83,"value":236}," already on npm?",{"type":78,"tag":179,"props":238,"children":239},{},[240,245],{"type":78,"tag":98,"props":241,"children":242},{},[243],{"type":83,"value":244},"npm view @lupinum\u002FPACKAGE@VERSION version",{"type":83,"value":246}," for every package",{"type":78,"tag":179,"props":248,"children":249},{},[250,254,256,260],{"type":78,"tag":98,"props":251,"children":252},{},[253],{"type":83,"value":212},{"type":83,"value":255}," offers to publish every version on ",{"type":78,"tag":98,"props":257,"children":258},{},[259],{"type":83,"value":234},{"type":83,"value":261}," that npm does not have, right after the merge.",{"type":78,"tag":152,"props":263,"children":264},{},[265,270,285],{"type":78,"tag":179,"props":266,"children":267},{},[268],{"type":83,"value":269},"Is the library in a prerelease?",{"type":78,"tag":179,"props":271,"children":272},{},[273,278,280],{"type":78,"tag":98,"props":274,"children":275},{},[276],{"type":83,"value":277},"npm view @lupinum\u002FPACKAGE dist-tags",{"type":83,"value":279},", ",{"type":78,"tag":98,"props":281,"children":282},{},[283],{"type":83,"value":284},".changeset\u002Fpre.json",{"type":78,"tag":179,"props":286,"children":287},{},[288],{"type":83,"value":289},"The prerelease line must continue, not jump to a stable or an older version.",{"type":78,"tag":152,"props":291,"children":292},{},[293,305,323],{"type":78,"tag":179,"props":294,"children":295},{},[296,298,303],{"type":83,"value":297},"Does Changesets exist, and which format is ",{"type":78,"tag":98,"props":299,"children":300},{},[301],{"type":83,"value":302},"pre.json",{"type":83,"value":304},"?",{"type":78,"tag":179,"props":306,"children":307},{},[308,310,315,317,321],{"type":83,"value":309},"A ",{"type":78,"tag":98,"props":311,"children":312},{},[313],{"type":83,"value":314},"changesets",{"type":83,"value":316}," array in ",{"type":78,"tag":98,"props":318,"children":319},{},[320],{"type":83,"value":302},{"type":83,"value":322}," is the Changesets 2 format",{"type":78,"tag":179,"props":324,"children":325},{},[326],{"type":83,"value":327},"Changesets 3 ignores that list and repeats every released change in the next changelog.",{"type":78,"tag":152,"props":329,"children":330},{},[331,343,351],{"type":78,"tag":179,"props":332,"children":333},{},[334,336,341],{"type":83,"value":335},"Are the packages in ",{"type":78,"tag":98,"props":337,"children":338},{},[339],{"type":83,"value":340},"packages\u002F*",{"type":83,"value":342}," or the root?",{"type":78,"tag":179,"props":344,"children":345},{},[346],{"type":78,"tag":98,"props":347,"children":348},{},[349],{"type":83,"value":350},"pnpm-workspace.yaml",{"type":78,"tag":179,"props":352,"children":353},{},[354,358,360,364],{"type":78,"tag":98,"props":355,"children":356},{},[357],{"type":83,"value":212},{"type":83,"value":359}," and the changeset lint only look there, and ",{"type":78,"tag":98,"props":361,"children":362},{},[363],{"type":83,"value":212},{"type":83,"value":365}," cannot be changed.",{"type":78,"tag":152,"props":367,"children":368},{},[369,374,391],{"type":78,"tag":179,"props":370,"children":371},{},[372],{"type":83,"value":373},"How do the packages depend on each other?",{"type":78,"tag":179,"props":375,"children":376},{},[377,382,384,389],{"type":78,"tag":98,"props":378,"children":379},{},[380],{"type":83,"value":381},"dependencies",{"type":83,"value":383}," and ",{"type":78,"tag":98,"props":385,"children":386},{},[387],{"type":83,"value":388},"peerDependencies",{"type":83,"value":390}," that name a package of the same repository",{"type":78,"tag":179,"props":392,"children":393},{},[394,396,401,403,408],{"type":83,"value":395},"A fixed range such as ",{"type":78,"tag":98,"props":397,"children":398},{},[399],{"type":83,"value":400},"workspace:^0.1.0",{"type":83,"value":402}," changes when versions bump, so the Version packages pull request fails its frozen install. Use ",{"type":78,"tag":98,"props":404,"children":405},{},[406],{"type":83,"value":407},"workspace:^",{"type":83,"value":409},".",{"type":78,"tag":152,"props":411,"children":412},{},[413,418,430],{"type":78,"tag":179,"props":414,"children":415},{},[416],{"type":83,"value":417},"Does the library need a docs site?",{"type":78,"tag":179,"props":419,"children":420},{},[421,423,428],{"type":83,"value":422},"Its size and who reads it (",{"type":78,"tag":197,"props":424,"children":426},{"href":425},"\u002Fdocs\u002Fwriting-docs#docs-site-or-readme-only",[427],{"type":83,"value":37},{"type":83,"value":429},")",{"type":78,"tag":179,"props":431,"children":432},{},[433],{"type":83,"value":434},"Without a site, delete the docs parts of the starter instead of copying them.",{"type":78,"tag":86,"props":436,"children":438},{"id":437},"_1-the-migration-pull-request-agent",[439],{"type":83,"value":440},"1. The migration pull request (agent)",{"type":78,"tag":79,"props":442,"children":443},{},[444],{"type":83,"value":445},"Generate the matching starter into a temporary directory with the library's\nreal name, package names, repository and domain, and copy from it. Do not edit\nthe old workflows into shape.",{"type":78,"tag":447,"props":448,"children":449},"ol",{},[450,590,627,722,759,819,891,908,925,982],{"type":78,"tag":451,"props":452,"children":453},"li",{},[454,539],{"type":78,"tag":79,"props":455,"children":456},{},[457,463,465,469,471,476,477,482,483,488,489,494,495,500,502,507,508,513,514,519,520,525,526,531,533,537],{"type":78,"tag":458,"props":459,"children":460},"strong",{},[461],{"type":83,"value":462},"Copy",{"type":83,"value":464}," the files the standard owns (FILE-10): ",{"type":78,"tag":98,"props":466,"children":467},{},[468],{"type":83,"value":212},{"type":83,"value":470},",\n",{"type":78,"tag":98,"props":472,"children":473},{},[474],{"type":83,"value":475},"preview.yml",{"type":83,"value":279},{"type":78,"tag":98,"props":478,"children":479},{},[480],{"type":83,"value":481},"scripts\u002Frelease.mjs",{"type":83,"value":279},{"type":78,"tag":98,"props":484,"children":485},{},[486],{"type":83,"value":487},"scripts\u002Flint-changesets.mjs",{"type":83,"value":470},{"type":78,"tag":98,"props":490,"children":491},{},[492],{"type":83,"value":493},"scripts\u002Faudit-deps.mjs",{"type":83,"value":279},{"type":78,"tag":98,"props":496,"children":497},{},[498],{"type":83,"value":499},"scripts\u002Fagent-docs.mjs",{"type":83,"value":501}," (only with a docs site),\n",{"type":78,"tag":98,"props":503,"children":504},{},[505],{"type":83,"value":506},".changeset\u002Fconfig.json",{"type":83,"value":279},{"type":78,"tag":98,"props":509,"children":510},{},[511],{"type":83,"value":512},".github\u002Frenovate.json",{"type":83,"value":279},{"type":78,"tag":98,"props":515,"children":516},{},[517],{"type":83,"value":518},".claude\u002FCLAUDE.md",{"type":83,"value":470},{"type":78,"tag":98,"props":521,"children":522},{},[523],{"type":83,"value":524},".github\u002FISSUE_TEMPLATE\u002F",{"type":83,"value":279},{"type":78,"tag":98,"props":527,"children":528},{},[529],{"type":83,"value":530},".github\u002Fpull_request_template.md",{"type":83,"value":532}," and the\nquarantine block of ",{"type":78,"tag":98,"props":534,"children":535},{},[536],{"type":83,"value":350},{"type":83,"value":538},". Also take the starter's ESLint\nconfig unless yours already lints the TypeScript sources.",{"type":78,"tag":540,"props":541,"children":542},"ul",{},[543,548,560],{"type":78,"tag":451,"props":544,"children":545},{},[546],{"type":83,"value":547},"Keep action pins that are newer than the starter's; the audit ignores pins.",{"type":78,"tag":451,"props":549,"children":550},{},[551,553,558],{"type":83,"value":552},"If a formatter checks ",{"type":78,"tag":98,"props":554,"children":555},{},[556],{"type":83,"value":557},"scripts\u002F",{"type":83,"value":559},", exclude the copied scripts from it.",{"type":78,"tag":451,"props":561,"children":562},{},[563,568,570,575,577,582,584,588],{"type":78,"tag":98,"props":564,"children":565},{},[566],{"type":83,"value":567},"ci.yml",{"type":83,"value":569}," does not have to match: it must pass FILE-02. Copy the starter's,\nor keep yours, for example one ",{"type":78,"tag":98,"props":571,"children":572},{},[573],{"type":83,"value":574},"ci",{"type":83,"value":576}," job that runs ",{"type":78,"tag":98,"props":578,"children":579},{},[580],{"type":83,"value":581},"pnpm verify",{"type":83,"value":583},", or extra\njobs that the final ",{"type":78,"tag":98,"props":585,"children":586},{},[587],{"type":83,"value":574},{"type":83,"value":589}," job needs.",{"type":78,"tag":451,"props":591,"children":592},{},[593,598,600,605,606,611,613,617,619,625],{"type":78,"tag":458,"props":594,"children":595},{},[596],{"type":83,"value":597},"Delete",{"type":83,"value":599}," what the standard replaces: other release, publish, preview,\nCodeQL and policy workflows, ",{"type":78,"tag":98,"props":601,"children":602},{},[603],{"type":83,"value":604},"MAINTAINING.md",{"type":83,"value":279},{"type":78,"tag":98,"props":607,"children":608},{},[609],{"type":83,"value":610},"dependabot.yml",{"type":83,"value":612},", release\nledgers, certification and verifier scripts, skill folders that repeat the\ndocs, and the package scripts only they used. Aim for about 20 package\nscripts and 1,500 lines in ",{"type":78,"tag":98,"props":614,"children":615},{},[616],{"type":83,"value":557},{"type":83,"value":618}," (",{"type":78,"tag":197,"props":620,"children":622},{"href":621},"\u002Fdocs\u002Fadding-tooling#budget",[623],{"type":83,"value":624},"budget",{"type":83,"value":626},").",{"type":78,"tag":451,"props":628,"children":629},{},[630,635,636,641,643,648,649,654,655,660,662,667,668,673,675,679,681,686,688,693,694,699,701,706,708,713,715,720],{"type":78,"tag":458,"props":631,"children":632},{},[633],{"type":83,"value":634},"Use the shared layout",{"type":83,"value":618},{"type":78,"tag":197,"props":637,"children":639},{"href":638},"\u002Fdocs\u002Foverview#what-a-standard-repository-looks-like",[640],{"type":83,"value":5},{"type":83,"value":642},"):\n",{"type":78,"tag":98,"props":644,"children":645},{},[646],{"type":83,"value":647},"CONTRIBUTING.md",{"type":83,"value":279},{"type":78,"tag":98,"props":650,"children":651},{},[652],{"type":83,"value":653},"SECURITY.md",{"type":83,"value":383},{"type":78,"tag":98,"props":656,"children":657},{},[658],{"type":83,"value":659},"renovate.json",{"type":83,"value":661}," move to ",{"type":78,"tag":98,"props":663,"children":664},{},[665],{"type":83,"value":666},".github\u002F",{"type":83,"value":470},{"type":78,"tag":98,"props":669,"children":670},{},[671],{"type":83,"value":672},"CLAUDE.md",{"type":83,"value":674}," to ",{"type":78,"tag":98,"props":676,"children":677},{},[678],{"type":83,"value":518},{"type":83,"value":680}," (it imports ",{"type":78,"tag":98,"props":682,"children":683},{},[684],{"type":83,"value":685},"..\u002FAGENTS.md",{"type":83,"value":687},"),\n",{"type":78,"tag":98,"props":689,"children":690},{},[691],{"type":83,"value":692},"DECISIONS.md",{"type":83,"value":674},{"type":78,"tag":98,"props":695,"children":696},{},[697],{"type":83,"value":698},"internals\u002Fdecisions.md",{"type":83,"value":700},". Merge other notes such as\n",{"type":78,"tag":98,"props":702,"children":703},{},[704],{"type":83,"value":705},"ARCHITECTURE.md",{"type":83,"value":707}," into ",{"type":78,"tag":98,"props":709,"children":710},{},[711],{"type":83,"value":712},"AGENTS.md",{"type":83,"value":714},", the docs or ",{"type":78,"tag":98,"props":716,"children":717},{},[718],{"type":83,"value":719},"internals\u002F",{"type":83,"value":721},", and delete\nconfiguration that no tool reads.",{"type":78,"tag":451,"props":723,"children":724},{},[725,730,732,737,739,744,746,751,753,757],{"type":78,"tag":458,"props":726,"children":727},{},[728],{"type":83,"value":729},"Set up versioning.",{"type":83,"value":731}," Without Changesets, add ",{"type":78,"tag":98,"props":733,"children":734},{},[735],{"type":83,"value":736},".changeset\u002F",{"type":83,"value":738}," from the\nstarter; the existing ",{"type":78,"tag":98,"props":740,"children":741},{},[742],{"type":83,"value":743},"CHANGELOG.md",{"type":83,"value":745}," stays and new sections go on top. Each\n",{"type":78,"tag":98,"props":747,"children":748},{},[749],{"type":83,"value":750},"package.json",{"type":83,"value":752}," version on ",{"type":78,"tag":98,"props":754,"children":755},{},[756],{"type":83,"value":234},{"type":83,"value":758}," must equal the newest version on npm, or the\nmerge offers that version for publication.",{"type":78,"tag":451,"props":760,"children":761},{},[762,767,769,774,776,781,783,787,789,793,795,800,802,806,807,812,813,818],{"type":78,"tag":458,"props":763,"children":764},{},[765],{"type":83,"value":766},"Keep the prerelease line.",{"type":83,"value":768}," For a library in a prerelease, run\n",{"type":78,"tag":98,"props":770,"children":771},{},[772],{"type":83,"value":773},"pnpm changeset pre enter TAG",{"type":83,"value":775}," with its current tag (for example ",{"type":78,"tag":98,"props":777,"children":778},{},[779],{"type":83,"value":780},"beta",{"type":83,"value":782},").\nIf ",{"type":78,"tag":98,"props":784,"children":785},{},[786],{"type":83,"value":302},{"type":83,"value":788}," lists released changesets in a ",{"type":78,"tag":98,"props":790,"children":791},{},[792],{"type":83,"value":314},{"type":83,"value":794}," array, move those\nfiles into ",{"type":78,"tag":98,"props":796,"children":797},{},[798],{"type":83,"value":799},".changeset\u002Fpre\u002F",{"type":83,"value":801}," and reduce ",{"type":78,"tag":98,"props":803,"children":804},{},[805],{"type":83,"value":302},{"type":83,"value":674},{"type":78,"tag":98,"props":808,"children":809},{},[810],{"type":83,"value":811},"mode",{"type":83,"value":383},{"type":78,"tag":98,"props":814,"children":815},{},[816],{"type":83,"value":817},"tag",{"type":83,"value":409},{"type":78,"tag":451,"props":820,"children":821},{},[822,827,829,834,836,841,843,848,850,855,857,862,864,869,871,876,878,883,885,889],{"type":78,"tag":458,"props":823,"children":824},{},[825],{"type":83,"value":826},"Ship the docs for agents",{"type":83,"value":828}," (DOC-03, only with a docs site): add the ",{"type":78,"tag":98,"props":830,"children":831},{},[832],{"type":83,"value":833},".\u002Fagent-docs",{"type":83,"value":835}," export to\nevery public package, the ",{"type":78,"tag":458,"props":837,"children":838},{},[839],{"type":83,"value":840},"Agent setup",{"type":83,"value":842}," section to every package README,\nand ",{"type":78,"tag":98,"props":844,"children":845},{},[846],{"type":83,"value":847},"node scripts\u002Fagent-docs.mjs",{"type":83,"value":849}," after the docs build in ",{"type":78,"tag":98,"props":851,"children":852},{},[853],{"type":83,"value":854},"pnpm build",{"type":83,"value":856},". A\nbuild that uses unbuild or the Nuxt Module Builder warns that\n",{"type":78,"tag":98,"props":858,"children":859},{},[860],{"type":83,"value":861},"dist\u002Fagent\u002FAGENTS.md",{"type":83,"value":863}," is missing, because the docs are written after it;\ncopy the ",{"type":78,"tag":98,"props":865,"children":866},{},[867],{"type":83,"value":868},"build:done",{"type":83,"value":870}," hook from the ",{"type":78,"tag":98,"props":872,"children":873},{},[874],{"type":83,"value":875},"nuxt-module",{"type":83,"value":877}," starter's\n",{"type":78,"tag":98,"props":879,"children":880},{},[881],{"type":83,"value":882},"build.config.ts",{"type":83,"value":884},". A packed-package test must pack the output of\n",{"type":78,"tag":98,"props":886,"children":887},{},[888],{"type":83,"value":854},{"type":83,"value":890},", not rebuild without the docs.",{"type":78,"tag":451,"props":892,"children":893},{},[894,899,901,906],{"type":78,"tag":458,"props":895,"children":896},{},[897],{"type":83,"value":898},"Link the Discord",{"type":83,"value":900}," at ",{"type":78,"tag":98,"props":902,"children":903},{},[904],{"type":83,"value":905},"https:\u002F\u002Fdiscord.lupinum.com",{"type":83,"value":907},", as in the starter:\nthe badge in the README header, the README's support section, and one line\nat the end of the docs Get started page. Replace older invite links.",{"type":78,"tag":451,"props":909,"children":910},{},[911,916,918,923],{"type":78,"tag":458,"props":912,"children":913},{},[914],{"type":83,"value":915},"Keep generated changelogs out of the formatter.",{"type":83,"value":917}," If the formatter checks\nMarkdown, ignore ",{"type":78,"tag":98,"props":919,"children":920},{},[921],{"type":83,"value":922},"**\u002FCHANGELOG.md",{"type":83,"value":924},"; the version job runs no formatter.",{"type":78,"tag":451,"props":926,"children":927},{},[928,933,935,939,941,945,947,952,954,959,961,966,968,973,975,980],{"type":78,"tag":458,"props":929,"children":930},{},[931],{"type":83,"value":932},"Write",{"type":83,"value":934}," ",{"type":78,"tag":98,"props":936,"children":937},{},[938],{"type":83,"value":712},{"type":83,"value":940}," (commands, hard rules, library principles) and\n",{"type":78,"tag":98,"props":942,"children":943},{},[944],{"type":83,"value":698},{"type":83,"value":946},": ",{"type":78,"tag":98,"props":948,"children":949},{},[950],{"type":83,"value":951},"D1",{"type":83,"value":953}," for the adoption, and one entry per kept\nexception that names the check as ",{"type":78,"tag":98,"props":955,"children":956},{},[957],{"type":83,"value":958},"(ID: key)",{"type":83,"value":960},", for example\n",{"type":78,"tag":98,"props":962,"children":963},{},[964],{"type":83,"value":965},"(FILE-08: lean)",{"type":83,"value":967},". The audit prints the key in brackets. Rewrite older bare\n",{"type":78,"tag":98,"props":969,"children":970},{},[971],{"type":83,"value":972},"(ID)",{"type":83,"value":974}," exceptions: they work only for an item with a single check.\nA migration that changes no published code needs no changeset. One that\nremoves an export or a ",{"type":78,"tag":98,"props":976,"children":977},{},[978],{"type":83,"value":979},"files",{"type":83,"value":981}," entry needs one, although the changeset lint\ndoes not ask for it.",{"type":78,"tag":451,"props":983,"children":984},{},[985,990,992,997,999,1003,1005,1010],{"type":78,"tag":458,"props":986,"children":987},{},[988],{"type":83,"value":989},"Check",{"type":83,"value":991},", in this order: ",{"type":78,"tag":98,"props":993,"children":994},{},[995],{"type":83,"value":996},"node scripts\u002Faudit.mjs --local .",{"type":83,"value":998}," until no item\nfails, ",{"type":78,"tag":98,"props":1000,"children":1001},{},[1002],{"type":83,"value":581},{"type":83,"value":1004},", and ",{"type":78,"tag":98,"props":1006,"children":1007},{},[1008],{"type":83,"value":1009},"pnpm changeset version",{"type":83,"value":1011}," in a scratch copy. The\nscratch run must produce the expected next version, and its changelog\nsection must list only unreleased changes.",{"type":78,"tag":86,"props":1013,"children":1015},{"id":1014},"_2-settings-agent-with-gh-before-the-merge",[1016,1018,1023],{"type":83,"value":1017},"2. Settings (agent with ",{"type":78,"tag":98,"props":1019,"children":1020},{},[1021],{"type":83,"value":1022},"gh",{"type":83,"value":1024},", before the merge)",{"type":78,"tag":79,"props":1026,"children":1027},{},[1028,1030,1036,1038,1043,1045,1049],{"type":83,"value":1029},"Apply everything in ",{"type":78,"tag":197,"props":1031,"children":1033},{"href":1032},"\u002Fdocs\u002Fset-up-a-repository#github-settings",[1034],{"type":83,"value":1035},"GitHub settings",{"type":83,"value":1037},"\nexcept the required check: auto-merge off, Actions token read-only and allowed\nto create pull requests, Dependabot security updates off, the ",{"type":78,"tag":98,"props":1039,"children":1040},{},[1041],{"type":83,"value":1042},"npm",{"type":83,"value":1044},"\nenvironment without administrator bypass and for ",{"type":78,"tag":98,"props":1046,"children":1047},{},[1048],{"type":83,"value":234},{"type":83,"value":1050}," only, the tag\nruleset, and CodeQL default setup. Read each setting back.",{"type":78,"tag":79,"props":1052,"children":1053},{},[1054,1056,1061,1063,1068],{"type":83,"value":1055},"The tag ruleset covers all tags (",{"type":78,"tag":98,"props":1057,"children":1058},{},[1059],{"type":83,"value":1060},"~ALL",{"type":83,"value":1062},"). Replace an older tag ruleset that\nlists prefixes such as ",{"type":78,"tag":98,"props":1064,"children":1065},{},[1066],{"type":83,"value":1067},"refs\u002Ftags\u002Fv*",{"type":83,"value":409},{"type":78,"tag":79,"props":1070,"children":1071},{},[1072,1074,1078,1080,1084,1086,1090,1092,1096],{"type":83,"value":1073},"Change the required check of the ",{"type":78,"tag":98,"props":1075,"children":1076},{},[1077],{"type":83,"value":234},{"type":83,"value":1079}," ruleset to ",{"type":78,"tag":98,"props":1081,"children":1082},{},[1083],{"type":83,"value":574},{"type":83,"value":1085}," last, right before the\nmerge: the old checks no longer report, and the new ",{"type":78,"tag":98,"props":1087,"children":1088},{},[1089],{"type":83,"value":574},{"type":83,"value":1091}," does not exist on\n",{"type":78,"tag":98,"props":1093,"children":1094},{},[1095],{"type":83,"value":234},{"type":83,"value":1097}," until the merge.",{"type":78,"tag":86,"props":1099,"children":1101},{"id":1100},"_3-npm-maintainer",[1102],{"type":83,"value":1103},"3. npm (maintainer)",{"type":78,"tag":79,"props":1105,"children":1106},{},[1107],{"type":83,"value":1108},"Do this right before the merge, also for a package whose first version was\npublished by hand: npm drops a new trusted-publisher connection that is not\nused for a publish within about two days.",{"type":78,"tag":79,"props":1110,"children":1111},{},[1112,1114,1118,1120,1125],{"type":83,"value":1113},"For every package, on ",{"type":78,"tag":197,"props":1115,"children":1116},{"href":199},[1117],{"type":83,"value":202},{"type":83,"value":1119}," under ",{"type":78,"tag":458,"props":1121,"children":1122},{},[1123],{"type":83,"value":1124},"Settings",{"type":83,"value":1126},":",{"type":78,"tag":540,"props":1128,"children":1129},{},[1130,1172],{"type":78,"tag":451,"props":1131,"children":1132},{},[1133,1138,1140,1145,1147,1151,1153,1157,1159,1164,1166,1170],{"type":78,"tag":458,"props":1134,"children":1135},{},[1136],{"type":83,"value":1137},"Trusted publishing:",{"type":83,"value":1139}," repository ",{"type":78,"tag":98,"props":1141,"children":1142},{},[1143],{"type":83,"value":1144},"OWNER\u002FREPO",{"type":83,"value":1146},", workflow ",{"type":78,"tag":98,"props":1148,"children":1149},{},[1150],{"type":83,"value":212},{"type":83,"value":1152},",\nenvironment ",{"type":78,"tag":98,"props":1154,"children":1155},{},[1156],{"type":83,"value":1042},{"type":83,"value":1158},", allowed to publish directly. Remove the old record for ",{"type":78,"tag":98,"props":1160,"children":1161},{},[1162],{"type":83,"value":1163},"publish.yml",{"type":83,"value":1165}," once the first\nrelease through ",{"type":78,"tag":98,"props":1167,"children":1168},{},[1169],{"type":83,"value":212},{"type":83,"value":1171}," worked.",{"type":78,"tag":451,"props":1173,"children":1174},{},[1175,1180],{"type":78,"tag":458,"props":1176,"children":1177},{},[1178],{"type":83,"value":1179},"Publishing access:",{"type":83,"value":1181}," require two-factor authentication and disallow\ntokens.",{"type":78,"tag":79,"props":1183,"children":1184},{},[1185,1187,1192,1194,1199],{"type":83,"value":1186},"Record the date as NPM-01 evidence in ",{"type":78,"tag":98,"props":1188,"children":1189},{},[1190],{"type":83,"value":1191},"fleet\u002Flibraries.json",{"type":83,"value":1193},". Without this\nstep the first publish fails with ",{"type":78,"tag":98,"props":1195,"children":1196},{},[1197],{"type":83,"value":1198},"E403",{"type":83,"value":1200},"; nothing is published, and a re-run\nafter the fix succeeds.",{"type":78,"tag":86,"props":1202,"children":1204},{"id":1203},"_4-merge-and-the-first-release",[1205],{"type":83,"value":1206},"4. Merge and the first release",{"type":78,"tag":447,"props":1208,"children":1209},{},[1210,1215,1227,1258,1269],{"type":78,"tag":451,"props":1211,"children":1212},{},[1213],{"type":83,"value":1214},"Merge the migration pull request.",{"type":78,"tag":451,"props":1216,"children":1217},{},[1218,1220,1225],{"type":83,"value":1219},"Cancel release or publish runs of the old workflows that still wait for an\napproval: ",{"type":78,"tag":458,"props":1221,"children":1222},{},[1223],{"type":83,"value":1224},"Actions → the run → Cancel",{"type":83,"value":1226},". A waiting run holds the publish\nslot and blocks the new one.",{"type":78,"tag":451,"props":1228,"children":1229},{},[1230,1232,1236,1238,1243,1245,1249,1251,1256],{"type":83,"value":1231},"With changesets pending, ",{"type":78,"tag":98,"props":1233,"children":1234},{},[1235],{"type":83,"value":212},{"type":83,"value":1237}," opens the ",{"type":78,"tag":458,"props":1239,"children":1240},{},[1241],{"type":83,"value":1242},"Version packages",{"type":83,"value":1244}," pull\nrequest. Its ",{"type":78,"tag":98,"props":1246,"children":1247},{},[1248],{"type":83,"value":574},{"type":83,"value":1250}," run can wait for approval (\"action_required\"), because a\nworkflow pushed the branch. Approve that run under ",{"type":78,"tag":458,"props":1252,"children":1253},{},[1254],{"type":83,"value":1255},"Actions",{"type":83,"value":1257},"; it only runs\ntests and is not the npm approval.",{"type":78,"tag":451,"props":1259,"children":1260},{},[1261,1263,1267],{"type":83,"value":1262},"Read the whole Version packages diff: versions, the changelog sections and\n",{"type":78,"tag":98,"props":1264,"children":1265},{},[1266],{"type":83,"value":736},{"type":83,"value":1268},". Merge it.",{"type":78,"tag":451,"props":1270,"children":1271},{},[1272,1274,1278,1280,1284,1286,1291,1293,1298],{"type":83,"value":1273},"Approve the deployment to ",{"type":78,"tag":98,"props":1275,"children":1276},{},[1277],{"type":83,"value":1042},{"type":83,"value":1279},". Check the result: ",{"type":78,"tag":98,"props":1281,"children":1282},{},[1283],{"type":83,"value":277},{"type":83,"value":1285},", provenance on the new version, the Git tag and\nthe GitHub release. The first publish through a new trusted publisher can\ntake half an hour to show on npm (\"Your package is being processed\");\n",{"type":78,"tag":98,"props":1287,"children":1288},{},[1289],{"type":83,"value":1290},"npm view",{"type":83,"value":1292}," answers ",{"type":78,"tag":98,"props":1294,"children":1295},{},[1296],{"type":83,"value":1297},"E404",{"type":83,"value":1299}," until then. Wait; do not publish again.",{"type":78,"tag":86,"props":1301,"children":1303},{"id":1302},"_5-clean-up",[1304],{"type":83,"value":1305},"5. Clean up",{"type":78,"tag":540,"props":1307,"children":1308},{},[1309,1327,1332,1337],{"type":78,"tag":451,"props":1310,"children":1311},{},[1312,1314,1318,1320,1325],{"type":83,"value":1313},"Delete Actions secrets the old setup used: ",{"type":78,"tag":98,"props":1315,"children":1316},{},[1317],{"type":83,"value":219},{"type":83,"value":1319}," first, then\ndeployment tokens such as ",{"type":78,"tag":98,"props":1321,"children":1322},{},[1323],{"type":83,"value":1324},"VERCEL_TOKEN",{"type":83,"value":1326},". The standard needs none.",{"type":78,"tag":451,"props":1328,"children":1329},{},[1330],{"type":83,"value":1331},"Delete merged and abandoned branches; close pull requests that only touch\ndeleted files.",{"type":78,"tag":451,"props":1333,"children":1334},{},[1335],{"type":83,"value":1336},"Check that Renovate's Dependency Dashboard issue exists (GH-08).",{"type":78,"tag":451,"props":1338,"children":1339},{},[1340,1342,1346,1348,1353],{"type":83,"value":1341},"Add the repository to ",{"type":78,"tag":98,"props":1343,"children":1344},{},[1345],{"type":83,"value":1191},{"type":83,"value":1347}," if it is new there, and run\n",{"type":78,"tag":98,"props":1349,"children":1350},{},[1351],{"type":83,"value":1352},"pnpm audit:repos OWNER\u002FREPO",{"type":83,"value":1354}," until it answers \"Follows the standard: yes\".\nAdvice that is left is fine; fix it when it is cheap.",{"type":78,"tag":86,"props":1356,"children":1358},{"id":1357},"edge-cases",[1359],{"type":83,"value":1360},"Edge cases",{"type":78,"tag":144,"props":1362,"children":1363},{},[1364,1380],{"type":78,"tag":148,"props":1365,"children":1366},{},[1367],{"type":78,"tag":152,"props":1368,"children":1369},{},[1370,1375],{"type":78,"tag":156,"props":1371,"children":1372},{},[1373],{"type":83,"value":1374},"Situation",{"type":78,"tag":156,"props":1376,"children":1377},{},[1378],{"type":83,"value":1379},"Do this",{"type":78,"tag":172,"props":1381,"children":1382},{},[1383,1421,1454,1479,1510,1536,1572,1623,1643,1669,1694,1719,1732,1763,1816,1841,1860,1884,1915],{"type":78,"tag":152,"props":1384,"children":1385},{},[1386,1403],{"type":78,"tag":179,"props":1387,"children":1388},{},[1389,1391,1395,1397,1402],{"type":83,"value":1390},"A public package lives outside ",{"type":78,"tag":98,"props":1392,"children":1393},{},[1394],{"type":83,"value":340},{"type":83,"value":1396}," (for example ",{"type":78,"tag":98,"props":1398,"children":1399},{},[1400],{"type":83,"value":1401},"layer\u002F",{"type":83,"value":429},{"type":78,"tag":179,"props":1404,"children":1405},{},[1406,1408,1413,1415,1419],{"type":83,"value":1407},"Move it to ",{"type":78,"tag":98,"props":1409,"children":1410},{},[1411],{"type":83,"value":1412},"packages\u002F",{"type":83,"value":1414},". ",{"type":78,"tag":98,"props":1416,"children":1417},{},[1418],{"type":83,"value":212},{"type":83,"value":1420}," must match the starter (FILE-10), so it cannot learn another path.",{"type":78,"tag":152,"props":1422,"children":1423},{},[1424,1429],{"type":78,"tag":179,"props":1425,"children":1426},{},[1427],{"type":83,"value":1428},"Packages version independently",{"type":78,"tag":179,"props":1430,"children":1431},{},[1432,1434,1439,1441,1445,1447,1452],{"type":83,"value":1433},"Leave them out of a ",{"type":78,"tag":98,"props":1435,"children":1436},{},[1437],{"type":83,"value":1438},"fixed",{"type":83,"value":1440}," group; ",{"type":78,"tag":98,"props":1442,"children":1443},{},[1444],{"type":83,"value":212},{"type":83,"value":1446}," then tags ",{"type":78,"tag":98,"props":1448,"children":1449},{},[1450],{"type":83,"value":1451},"name@X.Y.Z",{"type":83,"value":1453}," per package. The tag ruleset on all tags covers them.",{"type":78,"tag":152,"props":1455,"children":1456},{},[1457,1468],{"type":78,"tag":179,"props":1458,"children":1459},{},[1460,1462,1466],{"type":83,"value":1461},"The version on ",{"type":78,"tag":98,"props":1463,"children":1464},{},[1465],{"type":83,"value":234},{"type":83,"value":1467}," was bumped but never published",{"type":78,"tag":179,"props":1469,"children":1470},{},[1471,1473,1477],{"type":83,"value":1472},"Either publish it through the new flow on purpose, or set ",{"type":78,"tag":98,"props":1474,"children":1475},{},[1476],{"type":83,"value":234},{"type":83,"value":1478}," back to the published version in the migration pull request.",{"type":78,"tag":152,"props":1480,"children":1481},{},[1482,1487],{"type":78,"tag":179,"props":1483,"children":1484},{},[1485],{"type":83,"value":1486},"The library is in a prerelease but never used Changesets",{"type":78,"tag":179,"props":1488,"children":1489},{},[1490,1494,1496,1501,1503,1508],{"type":78,"tag":98,"props":1491,"children":1492},{},[1493],{"type":83,"value":773},{"type":83,"value":1495}," with the current tag continues the line: ",{"type":78,"tag":98,"props":1497,"children":1498},{},[1499],{"type":83,"value":1500},"1.0.0-beta.4",{"type":83,"value":1502}," becomes ",{"type":78,"tag":98,"props":1504,"children":1505},{},[1506],{"type":83,"value":1507},"1.0.0-beta.5",{"type":83,"value":1509}," for any bump. Check it in the scratch copy.",{"type":78,"tag":152,"props":1511,"children":1512},{},[1513,1525],{"type":78,"tag":179,"props":1514,"children":1515},{},[1516,1518,1523],{"type":83,"value":1517},"Changesets 2 (",{"type":78,"tag":98,"props":1519,"children":1520},{},[1521],{"type":83,"value":1522},"@changesets\u002Fcli",{"type":83,"value":1524}," below 3)",{"type":78,"tag":179,"props":1526,"children":1527},{},[1528,1530,1534],{"type":83,"value":1529},"Update to the starter's version in the migration pull request, then move released prerelease changesets into ",{"type":78,"tag":98,"props":1531,"children":1532},{},[1533],{"type":83,"value":799},{"type":83,"value":1535}," (step 5).",{"type":78,"tag":152,"props":1537,"children":1538},{},[1539,1555],{"type":78,"tag":179,"props":1540,"children":1541},{},[1542,1547,1549,1553],{"type":78,"tag":98,"props":1543,"children":1544},{},[1545],{"type":83,"value":1546},"changelog: false",{"type":83,"value":1548}," in ",{"type":78,"tag":98,"props":1550,"children":1551},{},[1552],{"type":83,"value":506},{"type":83,"value":1554},", or changelogen",{"type":78,"tag":179,"props":1556,"children":1557},{},[1558,1560,1565,1567,1571],{"type":83,"value":1559},"Use the starter's ",{"type":78,"tag":98,"props":1561,"children":1562},{},[1563],{"type":83,"value":1564},"config.json",{"type":83,"value":1566},"; remove changelogen. Keep the existing ",{"type":78,"tag":98,"props":1568,"children":1569},{},[1570],{"type":83,"value":743},{"type":83,"value":409},{"type":78,"tag":152,"props":1573,"children":1574},{},[1575,1599],{"type":78,"tag":179,"props":1576,"children":1577},{},[1578,1579,1584,1585,1590,1592,1597],{"type":83,"value":309},{"type":78,"tag":98,"props":1580,"children":1581},{},[1582],{"type":83,"value":1583},"prepack",{"type":83,"value":279},{"type":78,"tag":98,"props":1586,"children":1587},{},[1588],{"type":83,"value":1589},"prepublishOnly",{"type":83,"value":1591}," or ",{"type":78,"tag":98,"props":1593,"children":1594},{},[1595],{"type":83,"value":1596},"postpack",{"type":83,"value":1598}," script builds, checks or blocks publishing",{"type":78,"tag":179,"props":1600,"children":1601},{},[1602,1604,1608,1610,1615,1617,1622],{"type":83,"value":1603},"Remove it. ",{"type":78,"tag":98,"props":1605,"children":1606},{},[1607],{"type":83,"value":212},{"type":83,"value":1609}," builds before it packs, ",{"type":78,"tag":98,"props":1611,"children":1612},{},[1613],{"type":83,"value":1614},"pnpm pack",{"type":83,"value":1616}," would run the script again, and the publish job uses ",{"type":78,"tag":98,"props":1618,"children":1619},{},[1620],{"type":83,"value":1621},"--ignore-scripts",{"type":83,"value":409},{"type":78,"tag":152,"props":1624,"children":1625},{},[1626,1638],{"type":78,"tag":179,"props":1627,"children":1628},{},[1629,1631,1636],{"type":83,"value":1630},"The old publish workflow runs on ",{"type":78,"tag":98,"props":1632,"children":1633},{},[1634],{"type":83,"value":1635},"workflow_run",{"type":83,"value":1637}," or on a push",{"type":78,"tag":179,"props":1639,"children":1640},{},[1641],{"type":83,"value":1642},"Delete it in the migration pull request, and after the merge cancel any run it still started.",{"type":78,"tag":152,"props":1644,"children":1645},{},[1646,1651],{"type":78,"tag":179,"props":1647,"children":1648},{},[1649],{"type":83,"value":1650},"Scheduled workflows (dependency canaries, drift checks, nightly CI)",{"type":78,"tag":179,"props":1652,"children":1653},{},[1654,1656,1660,1662,1667],{"type":83,"value":1655},"Delete them, or keep one with a reason in ",{"type":78,"tag":98,"props":1657,"children":1658},{},[1659],{"type":83,"value":698},{"type":83,"value":1661},", for example ",{"type":78,"tag":98,"props":1663,"children":1664},{},[1665],{"type":83,"value":1666},"(FILE-01: upstream-drift.yml)",{"type":83,"value":1668},". Renovate and the weekly routine replace them.",{"type":78,"tag":152,"props":1670,"children":1671},{},[1672,1689],{"type":78,"tag":179,"props":1673,"children":1674},{},[1675,1680,1682,1687],{"type":78,"tag":98,"props":1676,"children":1677},{},[1678],{"type":83,"value":1679},"latest",{"type":83,"value":1681}," points at an old version and ",{"type":78,"tag":98,"props":1683,"children":1684},{},[1685],{"type":83,"value":1686},"next",{"type":83,"value":1688}," at the prerelease",{"type":78,"tag":179,"props":1690,"children":1691},{},[1692],{"type":83,"value":1693},"Expected until the first stable release. The audit warns; nothing to do.",{"type":78,"tag":152,"props":1695,"children":1696},{},[1697,1702],{"type":78,"tag":179,"props":1698,"children":1699},{},[1700],{"type":83,"value":1701},"The newest published version has no provenance and is not the first version",{"type":78,"tag":179,"props":1703,"children":1704},{},[1705,1707,1711,1713,1717],{"type":83,"value":1706},"NPM-02 fails until the next release through ",{"type":78,"tag":98,"props":1708,"children":1709},{},[1710],{"type":83,"value":212},{"type":83,"value":1712},". Release a patch, or record an exception in ",{"type":78,"tag":98,"props":1714,"children":1715},{},[1716],{"type":83,"value":698},{"type":83,"value":1718}," until then.",{"type":78,"tag":152,"props":1720,"children":1721},{},[1722,1727],{"type":78,"tag":179,"props":1723,"children":1724},{},[1725],{"type":83,"value":1726},"The docs build needs a secret or a token",{"type":78,"tag":179,"props":1728,"children":1729},{},[1730],{"type":83,"value":1731},"Move it to the Vercel project's environment variables. CI and Actions need none.",{"type":78,"tag":152,"props":1733,"children":1734},{},[1735,1745],{"type":78,"tag":179,"props":1736,"children":1737},{},[1738,1743],{"type":78,"tag":98,"props":1739,"children":1740},{},[1741],{"type":83,"value":1742},"pnpm audit",{"type":83,"value":1744}," fails on advisories in the docs site or dev tools",{"type":78,"tag":179,"props":1746,"children":1747},{},[1748,1750,1755,1757,1762],{"type":83,"value":1749},"Replace it with ",{"type":78,"tag":98,"props":1751,"children":1752},{},[1753],{"type":83,"value":1754},"node scripts\u002Faudit-deps.mjs",{"type":83,"value":1756}," from the starter: only advisories in the published packages' production dependencies block. See ",{"type":78,"tag":197,"props":1758,"children":1760},{"href":1759},"\u002Fdocs\u002Fdependencies#audit",[1761],{"type":83,"value":43},{"type":83,"value":409},{"type":78,"tag":152,"props":1764,"children":1765},{},[1766,1780],{"type":78,"tag":179,"props":1767,"children":1768},{},[1769,1774,1776],{"type":78,"tag":98,"props":1770,"children":1771},{},[1772],{"type":83,"value":1773},"docs:build",{"type":83,"value":1775}," calls ",{"type":78,"tag":98,"props":1777,"children":1778},{},[1779],{"type":83,"value":854},{"type":78,"tag":179,"props":1781,"children":1782},{},[1783,1785,1790,1792,1796,1798,1803,1805,1810,1811,1815],{"type":83,"value":1784},"Remove that call. In the starter, ",{"type":78,"tag":98,"props":1786,"children":1787},{},[1788],{"type":83,"value":1789},"build",{"type":83,"value":1791}," runs ",{"type":78,"tag":98,"props":1793,"children":1794},{},[1795],{"type":83,"value":1773},{"type":83,"value":1797},"; the old direction builds forever. A Nuxt module whose docs read the root ",{"type":78,"tag":98,"props":1799,"children":1800},{},[1801],{"type":83,"value":1802},".nuxt\u002Ftsconfig.json",{"type":83,"value":1804}," keeps ",{"type":78,"tag":98,"props":1806,"children":1807},{},[1808],{"type":83,"value":1809},"nuxt-module-build prepare",{"type":83,"value":1548},{"type":78,"tag":98,"props":1812,"children":1813},{},[1814],{"type":83,"value":1773},{"type":83,"value":409},{"type":78,"tag":152,"props":1817,"children":1818},{},[1819,1824],{"type":78,"tag":179,"props":1820,"children":1821},{},[1822],{"type":83,"value":1823},"Tests need the built package",{"type":78,"tag":179,"props":1825,"children":1826},{},[1827,1829,1834,1835,1840],{"type":83,"value":1828},"Build before the tests in ",{"type":78,"tag":98,"props":1830,"children":1831},{},[1832],{"type":83,"value":1833},"test",{"type":83,"value":1661},{"type":78,"tag":98,"props":1836,"children":1837},{},[1838],{"type":83,"value":1839},"nuxt-module-build build && vitest run",{"type":83,"value":409},{"type":78,"tag":152,"props":1842,"children":1843},{},[1844,1849],{"type":78,"tag":179,"props":1845,"children":1846},{},[1847],{"type":83,"value":1848},"A committed file contains the package version (a report, a snapshot)",{"type":78,"tag":179,"props":1850,"children":1851},{},[1852,1854,1858],{"type":83,"value":1853},"Remove the version from it. The Version packages pull request changes the version, so its ",{"type":78,"tag":98,"props":1855,"children":1856},{},[1857],{"type":83,"value":574},{"type":83,"value":1859}," fails on the stale file.",{"type":78,"tag":152,"props":1861,"children":1862},{},[1863,1868],{"type":78,"tag":179,"props":1864,"children":1865},{},[1866],{"type":83,"value":1867},"The library leaves its prerelease",{"type":78,"tag":179,"props":1869,"children":1870},{},[1871,1876,1878,1882],{"type":78,"tag":98,"props":1872,"children":1873},{},[1874],{"type":83,"value":1875},"pnpm changeset pre exit",{"type":83,"value":1877}," in a pull request, then merge it. ",{"type":78,"tag":98,"props":1879,"children":1880},{},[1881],{"type":83,"value":212},{"type":83,"value":1883}," opens the Version packages pull request with the stable versions.",{"type":78,"tag":152,"props":1885,"children":1886},{},[1887,1898],{"type":78,"tag":179,"props":1888,"children":1889},{},[1890,1892,1896],{"type":83,"value":1891},"A custom ",{"type":78,"tag":98,"props":1893,"children":1894},{},[1895],{"type":83,"value":212},{"type":83,"value":1897}," guard or step",{"type":78,"tag":179,"props":1899,"children":1900},{},[1901,1903,1907,1909,1914],{"type":83,"value":1902},"Drop it. Behavior that a library needs goes into ",{"type":78,"tag":98,"props":1904,"children":1905},{},[1906],{"type":83,"value":481},{"type":83,"value":1908}," with an exception ",{"type":78,"tag":98,"props":1910,"children":1911},{},[1912],{"type":83,"value":1913},"(FILE-10: release.mjs)",{"type":83,"value":409},{"type":78,"tag":152,"props":1916,"children":1917},{},[1918,1923],{"type":78,"tag":179,"props":1919,"children":1920},{},[1921],{"type":83,"value":1922},"Code review bots comment on the migration pull request",{"type":78,"tag":179,"props":1924,"children":1925},{},[1926],{"type":83,"value":1927},"Every review thread must be resolved before the merge. Answer each one with the fix or the reason, then resolve it.",{"title":1929,"searchDepth":1930,"depth":1930,"links":1931},"",4,[1932,1934,1935,1937,1938,1939,1940],{"id":88,"depth":1933,"text":91},2,{"id":437,"depth":1933,"text":440},{"id":1014,"depth":1933,"text":1936},"2. Settings (agent with gh, before the merge)",{"id":1100,"depth":1933,"text":1103},{"id":1203,"depth":1933,"text":1206},{"id":1302,"depth":1933,"text":1305},{"id":1357,"depth":1933,"text":1360},"markdown","docs",{"source":1944,"path":1945,"stem":1946,"dir":1942,"extension":1947},"content","docs\u002F4.migrate-a-repository.md","docs\u002F4.migrate-a-repository","md",{"requestedPath":29,"resolvedPath":29,"alternates":1949},[],{"requested":1951,"resolved":1952,"usedFallback":9},{},{"locale":8},{"previous":1954,"next":1955},{"title":19,"id":20,"canonicalKey":21,"locale":8,"draft":9,"path":23},{"title":31,"id":32,"canonicalKey":33,"locale":8,"draft":9,"path":35},{"left":1957,"top":1957,"width":1958,"height":1958,"rotate":1957,"vFlip":9,"hFlip":9,"body":1959},0,24,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 19h8M4 17l6-6l-6-6\"\u002F>",{"left":1957,"top":1957,"width":1958,"height":1958,"rotate":1957,"vFlip":9,"hFlip":9,"body":1961},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1791448770626]