[{"data":1,"prerenderedAt":573},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:OWbJyydP4MZd7Pn-IxD17zSYyJMYwNkB5ezMvkAPoAI":223,"content-page-surround:docs:OWbJyydP4MZd7Pn-IxD17zSYyJMYwNkB5ezMvkAPoAI":564,"i-lucide:terminal":567,"i-lucide:clipboard":571},[4,25,83,141,168],{"title":5,"id":6,"canonicalKey":7,"locale":8,"draft":9,"icon":10,"path":11,"children":12},"Lupinum OSS handbook","content:docs:1.get-started:1.index.md","1","en",false,"lucide:book-open","\u002Fdocs\u002Fget-started",[13,19],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":9,"icon":17,"path":18},"Choose a repository profile","content:docs:1.get-started:2.choose-a-profile.md","1\u002F2","lucide:git-branch","\u002Fdocs\u002Fget-started\u002Fchoose-a-profile",{"title":20,"id":21,"canonicalKey":22,"locale":8,"draft":9,"icon":23,"path":24},"New project path","content:docs:1.get-started:3.new-project-path.md","1\u002F3","lucide:route","\u002Fdocs\u002Fget-started\u002Fnew-project-path",{"title":26,"page":9,"canonicalKey":27,"locale":8,"children":28},"Standards","2",[29,35,41,47,53,59,65,71,77],{"title":30,"id":31,"canonicalKey":32,"locale":8,"draft":9,"icon":33,"path":34},"Repository structure","content:docs:2.standards:1.repository-structure.md","2\u002F1","lucide:folders","\u002Fdocs\u002Fstandards\u002Frepository-structure",{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":9,"icon":39,"path":40},"Documentation ownership","content:docs:2.standards:2.documentation-ownership.md","2\u002F2","lucide:files","\u002Fdocs\u002Fstandards\u002Fdocumentation-ownership",{"title":42,"id":43,"canonicalKey":44,"locale":8,"draft":9,"icon":45,"path":46},"GitHub and contributions","content:docs:2.standards:3.github-and-contributions.md","2\u002F3","lucide:github","\u002Fdocs\u002Fstandards\u002Fgithub-and-contributions",{"title":48,"id":49,"canonicalKey":50,"locale":8,"draft":9,"icon":51,"path":52},"Dependency policy","content:docs:2.standards:4.dependencies.md","2\u002F4","lucide:package-search","\u002Fdocs\u002Fstandards\u002Fdependencies",{"title":54,"id":55,"canonicalKey":56,"locale":8,"draft":9,"icon":57,"path":58},"Release security","content:docs:2.standards:5.release-security.md","2\u002F5","lucide:shield-check","\u002Fdocs\u002Fstandards\u002Frelease-security",{"title":60,"id":61,"canonicalKey":62,"locale":8,"draft":9,"icon":63,"path":64},"Package previews","content:docs:2.standards:6.package-previews.md","2\u002F6","lucide:package-open","\u002Fdocs\u002Fstandards\u002Fpackage-previews",{"title":66,"id":67,"canonicalKey":68,"locale":8,"draft":9,"icon":69,"path":70},"Documentation sites","content:docs:2.standards:7.documentation-sites.md","2\u002F7","lucide:panel-top","\u002Fdocs\u002Fstandards\u002Fdocumentation-sites",{"title":72,"id":73,"canonicalKey":74,"locale":8,"draft":9,"icon":75,"path":76},"Analytics and feedback","content:docs:2.standards:8.analytics-and-feedback.md","2\u002F8","lucide:chart-no-axes-combined","\u002Fdocs\u002Fstandards\u002Fanalytics-and-feedback",{"title":78,"id":79,"canonicalKey":80,"locale":8,"draft":9,"icon":81,"path":82},"Security and agents","content:docs:2.standards:9.security-and-agents.md","2\u002F9","lucide:bot-message-square","\u002Fdocs\u002Fstandards\u002Fsecurity-and-agents",{"title":84,"page":9,"canonicalKey":85,"locale":8,"children":86},"Procedures","3",[87,93,99,105,111,117,123,129,135],{"title":88,"id":89,"canonicalKey":90,"locale":8,"draft":9,"icon":91,"path":92},"Create a repository","content:docs:3.procedures:1.create-a-repository.md","3\u002F1","lucide:folder-plus","\u002Fdocs\u002Fprocedures\u002Fcreate-a-repository",{"title":94,"id":95,"canonicalKey":96,"locale":8,"draft":9,"icon":97,"path":98},"First npm release","content:docs:3.procedures:2.first-npm-release.md","3\u002F2","lucide:package-plus","\u002Fdocs\u002Fprocedures\u002Ffirst-npm-release",{"title":100,"id":101,"canonicalKey":102,"locale":8,"draft":9,"icon":103,"path":104},"Normal release","content:docs:3.procedures:3.normal-release.md","3\u002F3","lucide:package-check","\u002Fdocs\u002Fprocedures\u002Fnormal-release",{"title":106,"id":107,"canonicalKey":108,"locale":8,"draft":9,"icon":109,"path":110},"Prerelease","content:docs:3.procedures:4.prerelease.md","3\u002F4","lucide:flask-conical","\u002Fdocs\u002Fprocedures\u002Fprerelease",{"title":112,"id":113,"canonicalKey":114,"locale":8,"draft":9,"icon":115,"path":116},"Hotfix","content:docs:3.procedures:5.hotfix.md","3\u002F5","lucide:ambulance","\u002Fdocs\u002Fprocedures\u002Fhotfix",{"title":118,"id":119,"canonicalKey":120,"locale":8,"draft":9,"icon":121,"path":122},"Rollback","content:docs:3.procedures:6.rollback.md","3\u002F6","lucide:undo-2","\u002Fdocs\u002Fprocedures\u002Frollback",{"title":124,"id":125,"canonicalKey":126,"locale":8,"draft":9,"icon":127,"path":128},"Dependency update","content:docs:3.procedures:7.dependency-update.md","3\u002F7","lucide:refresh-cw","\u002Fdocs\u002Fprocedures\u002Fdependency-update",{"title":130,"id":131,"canonicalKey":132,"locale":8,"draft":9,"icon":133,"path":134},"Documentation change","content:docs:3.procedures:8.documentation-change.md","3\u002F8","lucide:file-pen-line","\u002Fdocs\u002Fprocedures\u002Fdocumentation-change",{"title":136,"id":137,"canonicalKey":138,"locale":8,"draft":9,"icon":139,"path":140},"Credential incident","content:docs:3.procedures:9.credential-incident.md","3\u002F9","lucide:key-round","\u002Fdocs\u002Fprocedures\u002Fcredential-incident",{"title":142,"page":9,"canonicalKey":143,"locale":8,"children":144},"Checklists","4",[145,151,156,162],{"title":146,"id":147,"canonicalKey":148,"locale":8,"draft":9,"icon":149,"path":150},"Repository launch checklist","content:docs:4.checklists:1.repository-launch.md","4\u002F1","lucide:list-checks","\u002Fdocs\u002Fchecklists\u002Frepository-launch",{"title":152,"id":153,"canonicalKey":154,"locale":8,"draft":9,"icon":97,"path":155},"First release checklist","content:docs:4.checklists:2.first-release.md","4\u002F2","\u002Fdocs\u002Fchecklists\u002Ffirst-release",{"title":157,"id":158,"canonicalKey":159,"locale":8,"draft":9,"icon":160,"path":161},"Production acceptance checklist","content:docs:4.checklists:3.production-acceptance.md","4\u002F3","lucide:monitor-check","\u002Fdocs\u002Fchecklists\u002Fproduction-acceptance",{"title":163,"id":164,"canonicalKey":165,"locale":8,"draft":9,"icon":166,"path":167},"Quarterly audit checklist","content:docs:4.checklists:4.quarterly-audit.md","4\u002F4","lucide:calendar-check","\u002Fdocs\u002Fchecklists\u002Fquarterly-audit",{"title":169,"id":170,"canonicalKey":171,"locale":8,"draft":9,"icon":172,"path":173,"children":174},"Troubleshooting","content:docs:5.troubleshooting:1.index.md","5","lucide:wrench","\u002Fdocs\u002Ftroubleshooting",[175,181,187,193,199,205,211,217],{"title":176,"id":177,"canonicalKey":178,"locale":8,"draft":9,"icon":179,"path":180},"npm trusted publishing","content:docs:5.troubleshooting:2.npm-trusted-publishing.md","5\u002F2","lucide:shield-alert","\u002Fdocs\u002Ftroubleshooting\u002Fnpm-trusted-publishing",{"title":182,"id":183,"canonicalKey":184,"locale":8,"draft":9,"icon":185,"path":186},"GitHub Actions","content:docs:5.troubleshooting:3.github-actions.md","5\u002F3","lucide:workflow","\u002Fdocs\u002Ftroubleshooting\u002Fgithub-actions",{"title":188,"id":189,"canonicalKey":190,"locale":8,"draft":9,"icon":191,"path":192},"GitHub Action SHA errors","content:docs:5.troubleshooting:4.action-sha-errors.md","5\u002F4","lucide:git-commit-horizontal","\u002Fdocs\u002Ftroubleshooting\u002Faction-sha-errors",{"title":194,"id":195,"canonicalKey":196,"locale":8,"draft":9,"icon":197,"path":198},"Dependency quarantine","content:docs:5.troubleshooting:5.dependency-quarantine.md","5\u002F5","lucide:timer","\u002Fdocs\u002Ftroubleshooting\u002Fdependency-quarantine",{"title":200,"id":201,"canonicalKey":202,"locale":8,"draft":9,"icon":203,"path":204},"Vercel deployment","content:docs:5.troubleshooting:6.vercel.md","5\u002F6","lucide:triangle","\u002Fdocs\u002Ftroubleshooting\u002Fvercel",{"title":206,"id":207,"canonicalKey":208,"locale":8,"draft":9,"icon":209,"path":210},"Plausible analytics","content:docs:5.troubleshooting:7.plausible.md","5\u002F7","lucide:chart-no-axes-column-increasing","\u002Fdocs\u002Ftroubleshooting\u002Fplausible",{"title":212,"id":213,"canonicalKey":214,"locale":8,"draft":9,"icon":215,"path":216},"Package preview failures","content:docs:5.troubleshooting:8.package-previews.md","5\u002F8","lucide:package-x","\u002Fdocs\u002Ftroubleshooting\u002Fpackage-previews",{"title":218,"id":219,"canonicalKey":220,"locale":8,"draft":9,"icon":221,"path":222},"GitHub CLI authentication","content:docs:5.troubleshooting:9.github-cli-authentication.md","5\u002F9","lucide:terminal","\u002Fdocs\u002Ftroubleshooting\u002Fgithub-cli-authentication",{"title":94,"description":224,"icon":97,"body":225,"type":551,"id":95,"canonicalKey":96,"draft":9,"partial":9,"locale":8,"collection":552,"navigationFile":9,"file":553,"route":559,"resolution":561},"Bootstrap a new package once, then bind all later releases to trusted publishing.",{"type":226,"children":227,"toc":542},"root",[228,236,243,256,268,274,279,365,377,389,395,400,508,526,532,537],{"type":229,"tag":230,"props":231,"children":232},"element","p",{},[233],{"type":234,"value":235},"text","npm cannot configure a trusted publisher for a package that does not exist.\nStaged publishing also cannot create a new package. The first publication is a\ncontrolled, interactive bootstrap.",{"type":229,"tag":237,"props":238,"children":240},"h2",{"id":239},"certify-the-first-tarball",[241],{"type":234,"value":242},"Certify the first tarball",{"type":229,"tag":230,"props":244,"children":245},{},[246,248,254],{"type":234,"value":247},"Merge the release candidate to protected ",{"type":229,"tag":249,"props":250,"children":251},"code",{},[252],{"type":234,"value":253},"main",{"type":234,"value":255},". Run the complete release\ncertification workflow. Download the retained artifact from that exact commit.",{"type":229,"tag":230,"props":257,"children":258},{},[259,261,266],{"type":234,"value":260},"Verify the artifact digest and the release manifest. Do not run ",{"type":229,"tag":249,"props":262,"children":263},{},[264],{"type":234,"value":265},"npm pack",{"type":234,"value":267},"\nagain. Do not rebuild the package locally.",{"type":229,"tag":237,"props":269,"children":271},{"id":270},"publish-the-exact-tarball",[272],{"type":234,"value":273},"Publish the exact tarball",{"type":229,"tag":230,"props":275,"children":276},{},[277],{"type":234,"value":278},"Sign in to npm with the owning human account and two-factor authentication.\nPublish only the certified file:",{"type":229,"tag":280,"props":281,"children":284},"pre",{"language":282,"class":283},"bash","shiki shiki-themes light-plus dark-plus dark:dark-plus",[285],{"type":229,"tag":249,"props":286,"children":288},{"class":287},"language-bash",[289,318,320,338,339,356,357],{"type":229,"tag":290,"props":291,"children":294},"span",{"class":292,"style":293},"line","display: inline",[295,301,307,312],{"type":229,"tag":290,"props":296,"children":298},{"style":297},"color:#795E26;--shiki-dark:#DCDCAA",[299],{"type":234,"value":300},"npm",{"type":229,"tag":290,"props":302,"children":304},{"style":303},"color:#A31515;--shiki-dark:#CE9178",[305],{"type":234,"value":306}," publish",{"type":229,"tag":290,"props":308,"children":309},{"style":303},[310],{"type":234,"value":311}," .\u002Fcertified-package.tgz",{"type":229,"tag":290,"props":313,"children":315},{"style":314},"color:#EE0000;--shiki-dark:#D7BA7D",[316],{"type":234,"value":317}," \\",{"type":234,"value":319},"\n",{"type":229,"tag":290,"props":321,"children":322},{"class":292,"style":293},[323,329,334],{"type":229,"tag":290,"props":324,"children":326},{"style":325},"color:#0000FF;--shiki-dark:#569CD6",[327],{"type":234,"value":328},"  --access",{"type":229,"tag":290,"props":330,"children":331},{"style":303},[332],{"type":234,"value":333}," public",{"type":229,"tag":290,"props":335,"children":336},{"style":314},[337],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":340,"children":341},{"class":292,"style":293},[342,347,352],{"type":229,"tag":290,"props":343,"children":344},{"style":325},[345],{"type":234,"value":346},"  --tag",{"type":229,"tag":290,"props":348,"children":349},{"style":303},[350],{"type":234,"value":351}," latest",{"type":229,"tag":290,"props":353,"children":354},{"style":314},[355],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":358,"children":359},{"class":292,"style":293},[360],{"type":229,"tag":290,"props":361,"children":362},{"style":325},[363],{"type":234,"value":364},"  --ignore-scripts",{"type":229,"tag":230,"props":366,"children":367},{},[368,370,375],{"type":234,"value":369},"Use ",{"type":229,"tag":249,"props":371,"children":372},{},[373],{"type":234,"value":374},"--tag next",{"type":234,"value":376}," when the first version is a prerelease.",{"type":229,"tag":230,"props":378,"children":379},{},[380,382,387],{"type":234,"value":381},"Compare the registry's version, dist-tag, and ",{"type":229,"tag":249,"props":383,"children":384},{},[385],{"type":234,"value":386},"dist.shasum",{"type":234,"value":388}," with the certified\nmanifest. Stop if any value differs.",{"type":229,"tag":237,"props":390,"children":392},{"id":391},"configure-the-trusted-publisher",[393],{"type":234,"value":394},"Configure the trusted publisher",{"type":229,"tag":230,"props":396,"children":397},{},[398],{"type":234,"value":399},"Bind the published package to the exact repository, workflow file, and\nenvironment:",{"type":229,"tag":280,"props":401,"children":402},{"language":282,"class":283},[403],{"type":229,"tag":249,"props":404,"children":405},{"class":287},[406,432,433,450,451,468,469,486,487,499,500],{"type":229,"tag":290,"props":407,"children":408},{"class":292,"style":293},[409,413,418,423,428],{"type":229,"tag":290,"props":410,"children":411},{"style":297},[412],{"type":234,"value":300},{"type":229,"tag":290,"props":414,"children":415},{"style":303},[416],{"type":234,"value":417}," trust",{"type":229,"tag":290,"props":419,"children":420},{"style":303},[421],{"type":234,"value":422}," github",{"type":229,"tag":290,"props":424,"children":425},{"style":303},[426],{"type":234,"value":427}," @lupinum\u002Fpackage-name",{"type":229,"tag":290,"props":429,"children":430},{"style":314},[431],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":434,"children":435},{"class":292,"style":293},[436,441,446],{"type":229,"tag":290,"props":437,"children":438},{"style":325},[439],{"type":234,"value":440},"  --repo",{"type":229,"tag":290,"props":442,"children":443},{"style":303},[444],{"type":234,"value":445}," lupinum-dev\u002Frepository-name",{"type":229,"tag":290,"props":447,"children":448},{"style":314},[449],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":452,"children":453},{"class":292,"style":293},[454,459,464],{"type":229,"tag":290,"props":455,"children":456},{"style":325},[457],{"type":234,"value":458},"  --file",{"type":229,"tag":290,"props":460,"children":461},{"style":303},[462],{"type":234,"value":463}," publish.yml",{"type":229,"tag":290,"props":465,"children":466},{"style":314},[467],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":470,"children":471},{"class":292,"style":293},[472,477,482],{"type":229,"tag":290,"props":473,"children":474},{"style":325},[475],{"type":234,"value":476},"  --env",{"type":229,"tag":290,"props":478,"children":479},{"style":303},[480],{"type":234,"value":481}," npm",{"type":229,"tag":290,"props":483,"children":484},{"style":314},[485],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":488,"children":489},{"class":292,"style":293},[490,495],{"type":229,"tag":290,"props":491,"children":492},{"style":325},[493],{"type":234,"value":494},"  --allow-publish",{"type":229,"tag":290,"props":496,"children":497},{"style":314},[498],{"type":234,"value":317},{"type":234,"value":319},{"type":229,"tag":290,"props":501,"children":502},{"class":292,"style":293},[503],{"type":229,"tag":290,"props":504,"children":505},{"style":325},[506],{"type":234,"value":507},"  --yes",{"type":229,"tag":230,"props":509,"children":510},{},[511,513,518,520,524],{"type":234,"value":512},"List the trust record and confirm the repository, ",{"type":229,"tag":249,"props":514,"children":515},{},[516],{"type":234,"value":517},"publish.yml",{"type":234,"value":519},", ",{"type":229,"tag":249,"props":521,"children":522},{},[523],{"type":234,"value":300},{"type":234,"value":525},"\nenvironment, and publish permission. Repeat this step for every independently\npublished package in a monorepo.",{"type":229,"tag":237,"props":527,"children":529},{"id":528},"complete-the-public-record",[530],{"type":234,"value":531},"Complete the public record",{"type":229,"tag":230,"props":533,"children":534},{},[535],{"type":234,"value":536},"Create the matching GitHub tag and release from the release commit without\nrepublishing or rebuilding. Install the public package in a clean consumer.",{"type":229,"tag":230,"props":538,"children":539},{},[540],{"type":234,"value":541},"The bootstrap version does not have GitHub OIDC provenance. Record this known\nlimitation. Every later version must use the normal trusted workflow.",{"title":543,"searchDepth":544,"depth":544,"links":545},"",4,[546,548,549,550],{"id":239,"depth":547,"text":242},2,{"id":270,"depth":547,"text":273},{"id":391,"depth":547,"text":394},{"id":528,"depth":547,"text":531},"markdown","docs",{"source":554,"path":555,"stem":556,"dir":557,"extension":558},"content","docs\u002F3.procedures\u002F2.first-npm-release.md","docs\u002F3.procedures\u002F2.first-npm-release","procedures","md",{"requestedPath":98,"resolvedPath":98,"alternates":560},[],{"requested":562,"resolved":563,"usedFallback":9},{},{"locale":8},{"previous":565,"next":566},{"title":88,"id":89,"canonicalKey":90,"locale":8,"draft":9,"path":92},{"title":100,"id":101,"canonicalKey":102,"locale":8,"draft":9,"path":104},{"left":568,"top":568,"width":569,"height":569,"rotate":568,"vFlip":9,"hFlip":9,"body":570},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":568,"top":568,"width":569,"height":569,"rotate":568,"vFlip":9,"hFlip":9,"body":572},"\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>",1786663363124]