[{"data":1,"prerenderedAt":511},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:UGYY3pvbq717MHJ5fuu4HRPacSVV0teLhfdzsfgeZLY":223,"content-page-surround:docs:UGYY3pvbq717MHJ5fuu4HRPacSVV0teLhfdzsfgeZLY":508},[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":42,"description":224,"icon":45,"body":225,"type":495,"id":43,"canonicalKey":44,"draft":9,"partial":9,"locale":8,"collection":496,"navigationFile":9,"file":497,"route":503,"resolution":505},"Protect the main branch and keep contribution paths focused.",{"type":226,"children":227,"toc":486},"root",[228,244,251,256,281,287,292,322,327,339,345,357,362,438,455,468,474],{"type":229,"tag":230,"props":231,"children":232},"element","p",{},[233,236,242],{"type":234,"value":235},"text","Use pull requests for changes to ",{"type":229,"tag":237,"props":238,"children":239},"code",{},[240],{"type":234,"value":241},"main",{"type":234,"value":243},". Keep rules strict enough to prevent an\nuncertified release, but small enough for a solo maintainer to operate.",{"type":229,"tag":245,"props":246,"children":248},"h2",{"id":247},"protect-main",[249],{"type":234,"value":250},"Protect main",{"type":229,"tag":230,"props":252,"children":253},{},[254],{"type":234,"value":255},"Require the repository's CI, security, and documentation deployment checks.\nRequire the branch to be current before merge when the change can affect a\nrelease artifact. Do not permit force pushes or branch deletion.",{"type":229,"tag":230,"props":257,"children":258},{},[259,261,266,268,272,274,279],{"type":234,"value":260},"Create a protected GitHub environment named ",{"type":229,"tag":237,"props":262,"children":263},{},[264],{"type":234,"value":265},"npm",{"type":234,"value":267}," for published libraries.\nAllow deployments only from ",{"type":229,"tag":237,"props":269,"children":270},{},[271],{"type":234,"value":241},{"type":234,"value":273},". Add at least one required reviewer. Do not\nstore an ",{"type":229,"tag":237,"props":275,"children":276},{},[277],{"type":234,"value":278},"NPM_TOKEN",{"type":234,"value":280}," in the environment.",{"type":229,"tag":245,"props":282,"children":284},{"id":283},"use-standard-templates",[285],{"type":234,"value":286},"Use standard templates",{"type":229,"tag":230,"props":288,"children":289},{},[290],{"type":234,"value":291},"Provide:",{"type":229,"tag":293,"props":294,"children":295},"ul",{},[296,302,307,312,317],{"type":229,"tag":297,"props":298,"children":299},"li",{},[300],{"type":234,"value":301},"a bug report,",{"type":229,"tag":297,"props":303,"children":304},{},[305],{"type":234,"value":306},"a documentation report,",{"type":229,"tag":297,"props":308,"children":309},{},[310],{"type":234,"value":311},"a focused feature request,",{"type":229,"tag":297,"props":313,"children":314},{},[315],{"type":234,"value":316},"private routing for security reports, and",{"type":229,"tag":297,"props":318,"children":319},{},[320],{"type":234,"value":321},"a pull request template.",{"type":229,"tag":230,"props":323,"children":324},{},[325],{"type":234,"value":326},"The pull request template asks for purpose, verification, documentation,\nrelease note or Changeset, and risk. Require an issue before non-trivial\nfeatures. Accept small, focused changes. State the project's contribution\ncapacity honestly and politely.",{"type":229,"tag":230,"props":328,"children":329},{},[330,332,337],{"type":234,"value":331},"Documentation feedback opens a prefilled GitHub issue and records the\n",{"type":229,"tag":237,"props":333,"children":334},{},[335],{"type":234,"value":336},"docs-feedback",{"type":234,"value":338}," event when analytics is active.",{"type":229,"tag":245,"props":340,"children":342},{"id":341},"give-actions-minimum-permission",[343],{"type":234,"value":344},"Give Actions minimum permission",{"type":229,"tag":230,"props":346,"children":347},{},[348,350,355],{"type":234,"value":349},"Set permissions explicitly. Use ",{"type":229,"tag":237,"props":351,"children":352},{},[353],{"type":234,"value":354},"contents: read",{"type":234,"value":356}," unless a job needs more. Give\nwrite permission only to the small job that performs the write.",{"type":229,"tag":230,"props":358,"children":359},{},[360],{"type":234,"value":361},"Use these workflow names where they apply:",{"type":229,"tag":363,"props":364,"children":365},"table",{},[366,385],{"type":229,"tag":367,"props":368,"children":369},"thead",{},[370],{"type":229,"tag":371,"props":372,"children":373},"tr",{},[374,380],{"type":229,"tag":375,"props":376,"children":377},"th",{},[378],{"type":234,"value":379},"File",{"type":229,"tag":375,"props":381,"children":382},{},[383],{"type":234,"value":384},"Responsibility",{"type":229,"tag":386,"props":387,"children":388},"tbody",{},[389,406,422],{"type":229,"tag":371,"props":390,"children":391},{},[392,401],{"type":229,"tag":393,"props":394,"children":395},"td",{},[396],{"type":229,"tag":237,"props":397,"children":398},{},[399],{"type":234,"value":400},"ci.yml",{"type":229,"tag":393,"props":402,"children":403},{},[404],{"type":234,"value":405},"Normal pull request and main-branch verification",{"type":229,"tag":371,"props":407,"children":408},{},[409,417],{"type":229,"tag":393,"props":410,"children":411},{},[412],{"type":229,"tag":237,"props":413,"children":414},{},[415],{"type":234,"value":416},"package-preview.yml",{"type":229,"tag":393,"props":418,"children":419},{},[420],{"type":234,"value":421},"Disposable package previews",{"type":229,"tag":371,"props":423,"children":424},{},[425,433],{"type":229,"tag":393,"props":426,"children":427},{},[428],{"type":229,"tag":237,"props":429,"children":430},{},[431],{"type":234,"value":432},"publish.yml",{"type":229,"tag":393,"props":434,"children":435},{},[436],{"type":234,"value":437},"Protected npm publication and GitHub release creation",{"type":229,"tag":230,"props":439,"children":440},{},[441,443,447,449,453],{"type":234,"value":442},"Release certification stays in the unprivileged first job of ",{"type":229,"tag":237,"props":444,"children":445},{},[446],{"type":234,"value":432},{"type":234,"value":448},".\nDo not add a second release workflow only to split the filename. The npm\ntrusted publisher targets ",{"type":229,"tag":237,"props":450,"children":451},{},[452],{"type":234,"value":432},{"type":234,"value":454},". Treat a rename as a security\nsetting migration. Update and verify the npm trust record before the next\npublication.",{"type":229,"tag":230,"props":456,"children":457},{},[458,460,466],{"type":234,"value":459},"If a workflow creates version pull requests, enable ",{"type":229,"tag":461,"props":462,"children":463},"strong",{},[464],{"type":234,"value":465},"Organization settings →\nActions → General → Workflow permissions → Allow GitHub Actions to create and\napprove pull requests",{"type":234,"value":467},". This setting does not permit arbitrary writes. The\nworkflow's own token permissions and branch rules still apply.",{"type":229,"tag":245,"props":469,"children":471},{"id":470},"keep-credentials-away-from-code",[472],{"type":234,"value":473},"Keep credentials away from code",{"type":229,"tag":230,"props":475,"children":476},{},[477,479,484],{"type":234,"value":478},"Use ",{"type":229,"tag":237,"props":480,"children":481},{},[482],{"type":234,"value":483},"persist-credentials: false",{"type":234,"value":485}," for checkout. Do not expose write credentials\nwhile repository code or dependency lifecycle scripts run. Never copy a token\nto a file to work around local keychain access.",{"title":487,"searchDepth":488,"depth":488,"links":489},"",4,[490,492,493,494],{"id":247,"depth":491,"text":250},2,{"id":283,"depth":491,"text":286},{"id":341,"depth":491,"text":344},{"id":470,"depth":491,"text":473},"markdown","docs",{"source":498,"path":499,"stem":500,"dir":501,"extension":502},"content","docs\u002F2.standards\u002F3.github-and-contributions.md","docs\u002F2.standards\u002F3.github-and-contributions","standards","md",{"requestedPath":46,"resolvedPath":46,"alternates":504},[],{"requested":506,"resolved":507,"usedFallback":9},{},{"locale":8},{"previous":509,"next":510},{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":9,"path":40},{"title":48,"id":49,"canonicalKey":50,"locale":8,"draft":9,"path":52},1786663361891]