{"_id":"mandrel-platform","_rev":"72-fd99ef162fe60673e03c1e1b1c096a48","name":"mandrel-platform","dist-tags":{"latest":"1.15.1"},"versions":{"0.2.1":{"name":"mandrel-platform","version":"0.2.1","license":"MIT","_id":"mandrel-platform@0.2.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"e4a1c4285326979e7a38a5a2aeb8012364a5377c","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.2.1.tgz","fileCount":12,"integrity":"sha512-Ah3kNE61yoibMmQWiCdD+G5cC2G+ma2jOCd2sUCTuGRlDzCdzrWQNbgwfAKSLEoYrDHjdcMurC9xufA9VvjPEQ==","signatures":[{"sig":"MEYCIQCXe5i6dKTVTnpYz65xqPbMN4CTWwTEkZCeI+ZkC1Z4awIhALxZgzuD8t5CR6L/95IWs0q5O9z+2TmZPjOuV1gNllWu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38631},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.2.1_1782678097311_0.733222802045522","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"mandrel-platform","version":"0.2.2","license":"MIT","_id":"mandrel-platform@0.2.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"8d7c62a4eda2a915760743d4ba07936955fee0c8","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.2.2.tgz","fileCount":12,"integrity":"sha512-A5H+jM5ftRijAM7gge0yQbLQDphFr56UZupUULBasxLGTS5iaIYhYFOCcqUoVHO55XBJ5mc6emitgu/IbqgqPg==","signatures":[{"sig":"MEYCIQC10Is8bGHssqD5V3g+qBnuDwNRnSnwImqvMgy+/G7ZqwIhAK5ZfCaodR4w25ss0x+5qOpSEvYKo42lYCdKSytYzeSt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38631},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.2.2_1782693749262_0.5945297543916026","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"mandrel-platform","version":"0.2.3","license":"MIT","_id":"mandrel-platform@0.2.3","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"d6ebcf699a36cd76e55bb076af51b5f9b0415682","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.2.3.tgz","fileCount":12,"integrity":"sha512-Fy8H70uIvgSKz9G/oH0xJK0oTxLIGKDXE5i32H3o4pdBLUwP24mR5/+rXxxTq/BR0vWY4zj7ZMUXGzQFAwe+1A==","signatures":[{"sig":"MEUCIHhin4F/AY5RAbeoLMEOmIJsy0n8017M4zPQy8Ic5+IyAiEAhOgRwpZGi1N/cAu7DIhYgmxJtaLbNtz+19y6GjurZkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38631},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.2.3_1782694380773_0.3987221875814484","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"mandrel-platform","version":"0.2.4","license":"MIT","_id":"mandrel-platform@0.2.4","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"d146c975a80173fba311e1169cd86d84adbbed65","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.2.4.tgz","fileCount":12,"integrity":"sha512-DIavd+15aydN3CfnyA0cwPqzJWELQujayc7kAh+gEBvRme9iIxNOgxL1vH1flNhmcERqwDz09ue/ZadOK3EUkw==","signatures":[{"sig":"MEQCIFcQ2xfjYzN0rDaLu3abtXuNR49JYfctkRK5SbtlflhNAiB15EKPRjwROmZLZ7yJV++EMlzgFFek/SWpK4tRUdLl6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38631},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.2.4_1782695943256_0.8745413257716017","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"mandrel-platform","version":"0.2.5","license":"MIT","_id":"mandrel-platform@0.2.5","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"73ec8acf5e575bc7dd3e7191d43eb9855cea4d43","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.2.5.tgz","fileCount":12,"integrity":"sha512-HsV6pVjBJgiJlHxSc1cQ0Oto3OVYGQrbQqY/uXN1FbCEv6VI4LnNhAbMRGJ39RVysc9dLijVlaHMhFJdRE33gg==","signatures":[{"sig":"MEQCICSVCFK27ZYmcBFhpHmvQUJkHUphbRbMk+qoM4QZPsC2AiACtDDlAaDdi9HA1C3LKSZlUHQsRT26eMMQI35E1DaA1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38631},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.2.5_1782696799540_0.49394920418556554","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"mandrel-platform","version":"0.3.0","license":"MIT","_id":"mandrel-platform@0.3.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"c292ad8a593dd8a05d4f8ce41f5b2618994bf8fc","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.3.0.tgz","fileCount":13,"integrity":"sha512-28oGlmyi8AwUhNaDV1WLoZl0lmhVetnLQSO10KM2t1aBOJ+8GQkl6rjH/n37+i68bJNgeqXpCbeLZ0MtLmkilw==","signatures":[{"sig":"MEYCIQC9OnOP1nrP7czIgMazX6DOLFGs2/2yPIjuFJr1WnuZpwIhAN8Ty16kaZRWals/hd1Z8EldqtipvRvgsqiTP86MKIw3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50847},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.3.0_1782697912030_0.2590800295270872","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"mandrel-platform","version":"0.3.1","license":"MIT","_id":"mandrel-platform@0.3.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"ff0de7e28ebf0b420fab552ee2c0f3a486c66b4f","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.3.1.tgz","fileCount":13,"integrity":"sha512-8BXHEyW7V3Xu5Iy5jUTOkYpyQ7cB/lwvRKA5RLqTVDvf9O5V9jV5ebQWGdC8sCEkgeZWN5Pho7SoXY3w9y4a+w==","signatures":[{"sig":"MEUCIQDmzq3/hKup7JQbZYoaGmDVA+ntBeoFkZ0MWK2aQ56idQIgfM0tZidoeofiKAcRpz4refnCsD/WXOGSM04BktOVhmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56319},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.3.1_1782698436598_0.8350087612834234","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"mandrel-platform","version":"0.4.0","license":"MIT","_id":"mandrel-platform@0.4.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"315b16e60fd882b381042a7e00578c3d4cc3ad8f","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.4.0.tgz","fileCount":21,"integrity":"sha512-nrFQy4A/a9DUuSITYVdFJdJFDf3S68860vL/LVgMW2YXzUYH77lOZdzR0lhdI8+P/E0FohHDRAcx+zu1Qr/p+Q==","signatures":[{"sig":"MEYCIQDH8JVp2zKde2pGSG5L/CIIub9lQVWyqks5rsJh+n3qkAIhANdXP95c4w+VtwLjC1T7vpYpAdc6FliyvKid/DPp+oYJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.4.0_1782734948216_0.07723025469112521","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"mandrel-platform","version":"0.5.0","license":"MIT","_id":"mandrel-platform@0.5.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"e5caaf014a5e5b9a5599e3f3fc9635b31ab589a2","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.5.0.tgz","fileCount":21,"integrity":"sha512-kkEot6h4w9Hcl6TmPMZRO6YpRNF6SUW7LCrppL4vPxNoVXaYN/rFn3N2k5T2lJ9bXy6dcMMereh+uDQQTZcYBA==","signatures":[{"sig":"MEUCIQCglhevQEdqpZk383F4ioxLFU81eTiEgKfLvdoROEWpLwIgA4uBQov+/ZjRmZc3gUlQjTp4iXmrxxbAEsnnpTJ9ubU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.5.0_1782736782301_0.1483229733986493","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"mandrel-platform","version":"0.5.1","license":"MIT","_id":"mandrel-platform@0.5.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"dbe9772d0456b9d057ec0f9a57e8e9f221d95dc4","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.5.1.tgz","fileCount":21,"integrity":"sha512-IT8gprI393+FD/ZRgWReS6EG+p2qnlDeSw7LLD1nSCBee5DuGN8O9D0QcYTRqUl0z9wfpVCnhP2Fpuk9zye96Q==","signatures":[{"sig":"MEYCIQDwHx6XC6/zdeOAz8NOEpeRDRVu/87laDlHRtbJwPaxNQIhAMmrS9jv+NCNacgDS2exEKZuiQUN84pufcOcf5hhg2GB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.5.1_1782738125789_0.18243898312060192","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"mandrel-platform","version":"0.6.0","license":"MIT","_id":"mandrel-platform@0.6.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"b962b01ba329499ae41d144a2dcaf8d79ad1a1d5","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.6.0.tgz","fileCount":21,"integrity":"sha512-lhObzoROuqdYTbo8diPzTBaeMgrd/j3cIFScKr+qodOiYHGVQ51H4DB1MehyDwfJ+vzHNM2JwYNOP/5am7keLQ==","signatures":[{"sig":"MEQCIGMCBGeo6BOfCNgMGr3i3dCYoju+M4HQUHLZEFnJMIIYAiAIgkjGw8dgTzUNXmCdHnn/vMmubP82uKCMdT5dr/MQRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.6.0_1782741359991_0.3787189297547162","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"mandrel-platform","version":"0.7.0","license":"MIT","_id":"mandrel-platform@0.7.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"cf76743a79dc4d3ad69b433d6f1102da4ca338bc","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.7.0.tgz","fileCount":21,"integrity":"sha512-ADKTqIJIRgw6me14OIvn7YIgWHS1AcU3bchhNs/dq54C5yijQUi69J9kZlF3QzBBXu/GhZO3fhVDyVxY+NZBBQ==","signatures":[{"sig":"MEUCIQCGBqJabTl1lEpDEdcO4oJROhIE/UI95u5F5e/sUNg9XQIgDR+3c01QQYdsAG1pd268nmHkfyZffcUrE1kTcATtHZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.7.0_1782742769858_0.04829913389776719","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"mandrel-platform","version":"0.8.0","license":"MIT","_id":"mandrel-platform@0.8.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"c2414e926d7c526183cd224d4734f86ccf63c5d6","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.8.0.tgz","fileCount":21,"integrity":"sha512-nu6kmYKdTEuK0lJnTZAdi/aQttK7vhTmVhHdEbTr1LiPoHrrQAede0ZDZy8XXXhuEfLrdY638zA3lxWcCNLwrA==","signatures":[{"sig":"MEUCIQDTTkMTgFgTixlpG8SJIPo4TISOG9Hw9FmZHyJysWK0XAIgbKFCop0YDV4B7hAYOmU72il3c4Gx4wgVwACZ0OhaN2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.8.0_1782745019511_0.08716642326686985","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"mandrel-platform","version":"0.9.0","license":"MIT","_id":"mandrel-platform@0.9.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"4ded9dc65ef325718bf88b5df893877acaacc35c","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.9.0.tgz","fileCount":21,"integrity":"sha512-EPmQFqsHQMmz2EMhyZHP7U5R4c33MvZZmlfoa3/De+pRnTPdIK8nWP5qF5W6BJwlBy4CE8MSoL+jG2R0vitOlw==","signatures":[{"sig":"MEUCIGxwazjOaauF08ZJcWW/ZxWPc8jofvYl9Q0+ua5zeZiBAiEA52zoNWZtH+30k8swwZWQDzTjrr9zH8ezSDVbVY6MMT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70032},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.9.0_1782745753258_0.4481469693613893","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"mandrel-platform","version":"0.10.0","license":"MIT","_id":"mandrel-platform@0.10.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"1875639d3d5fe14e511a56a38ec40385a0a87bae","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.10.0.tgz","fileCount":21,"integrity":"sha512-ptpD6KnA+rUGvHC+0dzbQm4GZ0wQg0Tqlv0dgIrQ9ILOzh6/YwAz4h4KYJDhf/g97Xh4q9x1Sbc8QXy9zNi7Hw==","signatures":[{"sig":"MEUCIQDxSFKF/H4Y0vgzj6FrzwZN24du0+pZFiPm72GzfeA4LAIgPFE4SYPDJkufUHlbApIeztZTuLh/9siommdWAgH+w2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70033},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --input-type=module --eval 'process.exit(0)'","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.10.0_1782759684883_0.9348738766046754","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"mandrel-platform","version":"0.11.2","license":"MIT","_id":"mandrel-platform@0.11.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"37616f001da209e8f79f332fcd65904e7b84be5d","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.2.tgz","fileCount":25,"integrity":"sha512-Wm+z1Th5+kKBuRWyt61bmC1gaXujZEyAq/NFworpfHb4XCFrjsNMz1A8xgAh+uTvAbgjEFhh4xaA+Gli51Siag==","signatures":[{"sig":"MEYCIQCKiaRVVtWsCJPgeN9gAH6H86uFT47q3u62GTyH//8CeAIhANvN1n4LJigjseDmeVlIqzfpObL33k4y74GYluYEv6jn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117299},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.2_1782767773258_0.21702536284544238","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"mandrel-platform","version":"0.11.3","license":"MIT","_id":"mandrel-platform@0.11.3","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"a3edc7b6b33a320dd0db74503539c32c4407a42c","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.3.tgz","fileCount":25,"integrity":"sha512-BIj1KvJcf9RLIr1ZCYlDpXu8UAyjanT3hLVu6R1jBkGSqJhAl8bo26Ii7SHUX5mpUj37IgRzOeOGUA2l00zG/w==","signatures":[{"sig":"MEQCID9ebVaa0jjEWWEXW2poJ1exRqh6FNs6Z4zNkAB8T40WAiBEpWGk9PGanjpLlL/f09e2nt+xIx7xEHGtwq7DS8B9bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117299},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.3_1782773737042_0.5096690505837069","host":"s3://npm-registry-packages-npm-production"}},"0.11.4":{"name":"mandrel-platform","version":"0.11.4","license":"MIT","_id":"mandrel-platform@0.11.4","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"0e1dd43aa1b55f589f10240e6a14bc317e435e94","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.4.tgz","fileCount":25,"integrity":"sha512-pvXlfJnhzaw0X0c99ZAdpCLxO3neD6F+/20oRioiORg8SRY0gNxxIttXl31VO9H5SfJSnsZ/qe27LWhdTYouCA==","signatures":[{"sig":"MEUCIBgT7pQJ3wZVyZKBMHzsX4r+ZdpBQuvvKTdVduuBHZz+AiEApd30fyJWc38ll0rJtGTP+j99Q3AcoSAOi0dDe03iN4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117299},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.4_1782775935324_0.5416162105711","host":"s3://npm-registry-packages-npm-production"}},"0.11.5":{"name":"mandrel-platform","version":"0.11.5","license":"MIT","_id":"mandrel-platform@0.11.5","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"5e698f8145dcbf7e2ce85a40bb85c9fe01ed688a","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.5.tgz","fileCount":25,"integrity":"sha512-0tv1XSyx18kU2fT6lvk0x8yIpfxW/O8emGB7pUCalBkxjk3Yn2zVKLxuai5PIy0QAUIu0iAULapuxEBVbNcoww==","signatures":[{"sig":"MEUCIEPxi5UMzyUuGx/uF/eiSMHvuCukHTM3Ju/Vu5SnHcxYAiEAhm7KAbYcxr08sbdirG57j7N3lqvfJo6Qs+Gn5ikv9LY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117299},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.5_1782776274805_0.40058375285114467","host":"s3://npm-registry-packages-npm-production"}},"0.11.6":{"name":"mandrel-platform","version":"0.11.6","license":"MIT","_id":"mandrel-platform@0.11.6","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"aa566cb727821dfc8e589467ae9effb2576d5786","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.6.tgz","fileCount":25,"integrity":"sha512-PhrvwMXWkIED6pl1n59UZXnO4ZURxi6bf8PtGy7l4/a9jQLAuhRIcNWkMRlF7zTg2u24pJcV8bqn5TZDK6SD+Q==","signatures":[{"sig":"MEUCIQDkkgVPjNQs+joXnITO/X7WrzSU4UHxTJPKiW2ThlE7fgIgfKngaJitLyWjrDmAvFkbLL60dXRlXgJSduun2npFT9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117299},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.6_1782778372696_0.21901690944988284","host":"s3://npm-registry-packages-npm-production"}},"0.11.7":{"name":"mandrel-platform","version":"0.11.7","license":"MIT","_id":"mandrel-platform@0.11.7","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"89f327fedb0c1c468f1314383b2eb59c3bc8998f","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.11.7.tgz","fileCount":25,"integrity":"sha512-7Vq4g1jjWQS25gQs36aCXK5vGvWGL0im6SGDgB+4yixcUGNkRP1pQHZCc6QPl3lL+nCsDZ8lSCJDUY42EKiRBQ==","signatures":[{"sig":"MEQCIGfS7Q3O+oxQ1l3G+Hth7STZIzfVeGkllNtdVHKVSTpvAiBy6Vvgk5dQI7H2Mvtu0x78BFLKB7LtMKQ4JtlTjZqKww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117811},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.11.7_1782780100199_0.9937745733771324","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"mandrel-platform","version":"0.12.0","license":"MIT","_id":"mandrel-platform@0.12.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"ed96ea57b5ba387a8677002684ab1a94fe8e9890","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.12.0.tgz","fileCount":26,"integrity":"sha512-+IGG5Rq8eRATjvNj/R8KVMO1kM4p58mASAWMbStiGW9vKE/cNCPmwaMhSW1RhwIu3nOPmMqBDd4H3Eq7YYKqIQ==","signatures":[{"sig":"MEQCIGE6W5UpUX1J87Jmd4G7zjURmM7He/wgNXrEU1sNDHx1AiA1SlkCCFV7L8d9hs6OYSa0wC1DDEQaIqytITvbOYNLEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140157},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.12.0_1782822393522_0.10979742649950697","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"mandrel-platform","version":"0.13.0","license":"MIT","_id":"mandrel-platform@0.13.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"dist":{"shasum":"8a1abb570fb7888495d92bb5d70856e0babebb2b","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.13.0.tgz","fileCount":26,"integrity":"sha512-i7QSKjKjWMMG9pPoGERDCrd1hfuT+lM8uec1cJUCdqki8T/urv29MpGI5AdGdHHXLRX+ZgqP/0Rf9qyhYNJv6A==","signatures":[{"sig":"MEQCIHk8OHt0U/2X/1bfxyExj2qJX8yy6hRGXStqmzSnWKjfAiAskm0Ji3AJGn0yM15WpuCHScZuBZfzOCcCi1t9Z+UJbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140157},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./biome.base.json":"./config/biome.base.json","./tsconfig.base.json":"./config/tsconfig.base.json"},"scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.13.0_1782828356077_0.4966321360217807","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"mandrel-platform","version":"0.14.2","license":"MIT","_id":"mandrel-platform@0.14.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"0455ed3b032b9c1c951f907dc32cf23d7c838586","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.14.2.tgz","fileCount":46,"integrity":"sha512-KNH/AQUP9Oa1HpaChkjPZusvRjqitZhdmG3Tu7eXFzyHM63KBWbUoRYlObVSTdsPI/wrl5lC2ESZCQd9HtMBoQ==","signatures":[{"sig":"MEQCIDPiVnfWZgfhmVEi02n+U6rTDcthDJNIBjiD6ka+UmuHAiBSm0TSBW5V7uNyI9QwPYDlSgrUJ0OIUaLW9nCmv4sF7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":331748},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json"},"gitHead":"559ad20eacce5c76cdf934f05e3a80d09a3f2752","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.14.2_1782849346957_0.07948325490932784","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"mandrel-platform","version":"0.15.0","license":"MIT","_id":"mandrel-platform@0.15.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"a5ea2a23bff971772af480b2bf24bf8b399fbab4","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.15.0.tgz","fileCount":49,"integrity":"sha512-gbUmPwjwY5QUCi2yMIUhqfajAX0WWH4F2vY0AMbNXI1gDG0eTuBY36Pxeb2/eOX/hRCsTRQsAxYCThWIgKASCg==","signatures":[{"sig":"MEYCIQC3t/jSYpDwvmsdVZ5syWKAMVmokxB24AmnSvLlDBHEFwIhAL2Dfxiy/P1aIMYS6X7zaMiyLRDSQ87SPsoPe48xfI3M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352260},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"438e7cbdb52499df97bd46bf399024a335aa5be0","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.15.0_1782859273176_0.7782769895316894","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"mandrel-platform","version":"0.15.1","license":"MIT","_id":"mandrel-platform@0.15.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"db938cdb12fb00ed581248f72fe90951027e342a","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.15.1.tgz","fileCount":49,"integrity":"sha512-vmVx0R9sM0P5Bioe/XWBoUm+8QssbQ0Xaq64A5PFUnQv6bqzOS0dqWmAJVZdQon05a+AedjFTnAi0kAe54WCaw==","signatures":[{"sig":"MEYCIQD/tGS20saIzMh3halgHF6+6sIs4EYyb+jrfHmjAEdFkwIhAIB0ZQQGbQODkG+z0J/fo8eJH5SFo8RbEuObrWyTY9//","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352260},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"17cef59d003380b9e417a8f2d984f531abc616eb","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.15.1_1782863634899_0.9281310028887635","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"mandrel-platform","version":"0.16.0","license":"MIT","_id":"mandrel-platform@0.16.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"eda0ad45e53284e5ecbef9e8d18dab587e9760ad","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.16.0.tgz","fileCount":49,"integrity":"sha512-ZJcz+fDuieSzuC+xGUuoSBz9V/v1LNpdALjycGJO0HNg4sPCy30lebKSnQYMENjzkgyAza7o7BM07I6NVByHGw==","signatures":[{"sig":"MEQCIDpXWE4KarKforQXtBbJMlehWz/4X5eOGR1xqsLBbS8IAiBWJSeDZUL8TwR0rhAA5e4gn03xfNkZ3ac8nEO4i9Wtpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352260},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"c8313f46ce507bb4729e90b8acc47415daddd103","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.78.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.16.0_1782865106332_0.4169106300579488","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"mandrel-platform","version":"0.17.0","license":"MIT","_id":"mandrel-platform@0.17.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"313de2a36624a5a78ebd4750c0d56dd88d13241d","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.17.0.tgz","fileCount":50,"integrity":"sha512-54kL3vBhhwLVqwDhK/rBc7+iGJEOvTWRAO8y6rStSwP2IBLksEUV+aTRks8RB9pLoLUsL5Tp7ogEji9E1qtYNQ==","signatures":[{"sig":"MEUCIBlVekiHy5652BLMYFAJqJ3y/zQ/wc7bTmOnqj0jGpdBAiEA3OX7OjUurpK1K+QFhAeAOcZFYHHtsx3uHN3XNX8EBwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357453},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"05f8a846267d35581875e5de5a3bb1c1f969267a","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.17.0_1782876032807_0.7386161907070252","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"mandrel-platform","version":"0.17.1","license":"MIT","_id":"mandrel-platform@0.17.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"01139d672820bc147b4cf71e820914c09a43282c","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.17.1.tgz","fileCount":50,"integrity":"sha512-MDmk9uU5uZZ3qMSm8rdyT9WRS66dQ3pE1WTiqTRI74esYhvmp1ZIvhKMX1bYhVTz02mTFeMo3yMeva3vTP0Srw==","signatures":[{"sig":"MEUCIEWm64I6nyM6AjPEf1vAU43BHmdAWJMJXtSk/BKPk7BBAiEA+aCx6dbr/cauc5EOO9vQu9uJVV70FdEChx6Q80vicPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":364620},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"55240581f9dd7e6f38c99950052c18d32fbe770d","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.17.1_1782906975879_0.36597267707371794","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"mandrel-platform","version":"0.17.2","license":"MIT","_id":"mandrel-platform@0.17.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"a2c4d15c172301776b5d203c2a5740f5321d03c4","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.17.2.tgz","fileCount":50,"integrity":"sha512-ou/uCniGZLUcVGJE/+tBnvZvbpNyxp+VusiOG/5/laiqVXdNWL1o0NWsSFHiVWPku1NxONZOW3t7e32VE0yUhQ==","signatures":[{"sig":"MEQCIG6uLbCBiHGA3+0zEFcHUjzDbsnF1RWP3D99wuR3qIPwAiAUvIL3H8yHHieHVKCq9tYfRVB0VtcC/1KIQtPUbHE+TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":364620},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"5e4b977cb2a5d44810262a1277b0c1e9975675ef","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.17.2_1782929143067_0.026652788082152545","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"mandrel-platform","version":"0.18.0","license":"MIT","_id":"mandrel-platform@0.18.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"9959f8c2c5aec5863f665b192a9a9371cd78f8ba","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.18.0.tgz","fileCount":63,"integrity":"sha512-KijuzDISxbUFn6gilWrydefsTTu4pVu+n/fcC1i+kffbzExYiWEUHvIFnpy2j5mKIIkmyWaNyOhG+ZSlAqHlyQ==","signatures":[{"sig":"MEUCIFnDhs3A80P3V9qLkp3qiDaBuNMReMasfyvvL4XoPq3kAiEA0xt4haxqD+cQ+wPJc9m9pZU1Qs/Q7qQ6VLgUkfEuhAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":563679},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"1dadb1d7716f1fa57bf2592a6acbbfa9404a6eef","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.18.0_1782957982611_0.882319349603855","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"mandrel-platform","version":"0.19.0","license":"MIT","_id":"mandrel-platform@0.19.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"d6104e3e09294532ec861dd76851cf42489f7d40","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.19.0.tgz","fileCount":73,"integrity":"sha512-fkqeqtM4IF+qlb11PIvLQlJ6hmmQjMaNKoCUdtwpZ6Z1a/S43csZesdKCBU7fum97Aw377RKwJ9X1olkSqsD+w==","signatures":[{"sig":"MEQCIGzBlLV1COLaancS1WlfHYn4DDMX7nxjd45JgCFo3vVdAiAwl4gsx0qZ5EdG5vzHWOsz4lK4y9SgOyq2AYd045H0cQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":652241},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"cdeac8328e3f0b6803dcced49b374a04bcaf9b9f","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.19.0_1783000639409_0.9806564360394212","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"mandrel-platform","version":"0.19.1","license":"MIT","_id":"mandrel-platform@0.19.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"5640af2e999c9c396d5df67de8cd7773d05190be","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.19.1.tgz","fileCount":73,"integrity":"sha512-+Ub1/YCHKaZ36MA0HjP4xpC8SC0l9vB1KhdY0JAhav4QLUkH+spQRcZczk+FayDc0a0kJrnDGawTbCFB8ZqA/Q==","signatures":[{"sig":"MEYCIQCNYFmLWeXDi7QN9H12NS+ephU3++p4nrz/NHDl+ONNXgIhAODaYAtDzOHf+0/GV8yBEqVzXGdHEqeOlvssHXkRZ30o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":652241},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"6564534957d99b7448019741afc6bc0f85b26b05","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.19.1_1783004445790_0.44584497165465886","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"mandrel-platform","version":"0.19.2","license":"MIT","_id":"mandrel-platform@0.19.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"cb76db247067359504675b068ead312e7ccf56ff","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.19.2.tgz","fileCount":73,"integrity":"sha512-WhkUJwGNqekRMlQAR/5mq30QnKZJueT8rjACNpzC2i1keTANakE0zS7sZO5lL+U6MOzginSoJFf8c2r64TI6XA==","signatures":[{"sig":"MEQCIBIvoh86hvVHrPQml+hqf14eyfYaNZkWisl0qwTPoE55AiBDepqpbnkaht9d1wLC/70s9JG9FKbwrcrz+qbdz8h8wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":652241},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./size-limit.base.json":"./config/size-limit.base.json","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"f953fba1122cf46166e5ead4131befaeaf7102ff","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.19.2_1783012440246_0.6331382611181102","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"mandrel-platform","version":"0.20.0","license":"MIT","_id":"mandrel-platform@0.20.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"cf83b796f79ada05c9b399e682e2fc3abea12e4f","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.20.0.tgz","fileCount":75,"integrity":"sha512-+TC2leP6ctc6gDX4Gtcf9xyLdh9pymLsMsnAzM1Z9vQHYR/zLzd7dyHFklgppl5Pr6XTX050z5KGk8VJi9UovA==","signatures":[{"sig":"MEQCIGH0vlX6v6YIlePQcM7vY8k0oRtSGkbd3NXhAyxIs5I5AiAg6a6nQKKIPkHBBIBmkUOnAq2sUxg0zq3IfV/nztDNtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":659790},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"5c80f4044bf1a2dc67a1152bb09f43ba1ea8392d","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.20.0_1783014758547_0.033424565245674165","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"mandrel-platform","version":"0.20.1","license":"MIT","_id":"mandrel-platform@0.20.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"bca869a9248531e2325186fb1d3a106f2c9b9bfb","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.20.1.tgz","fileCount":75,"integrity":"sha512-LfNe10gkyyRW54Eg/85a5psJaXCcVj4eNRQ5MsH9gcgEC+Uca5gucNZ0SKjA38E34rhtIzQ6JDTFd53bsxkDBA==","signatures":[{"sig":"MEQCICgHv7EPs6YGNPsuTl93cq6Wo1RTv0LkgAXlSu4mGiY5AiB5HeJDydQrEEcii8AwH5eeRE9uAKN8KYuRG1vHnDiE+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":659790},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"32e0232f0b727cff3a1d2a2c58b668aaa7971954","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.20.1_1783084603195_0.9726840568729112","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"mandrel-platform","version":"0.21.0","license":"MIT","_id":"mandrel-platform@0.21.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"e94579b343c0d02dee2de6072550b0d0f1a2870b","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.21.0.tgz","fileCount":83,"integrity":"sha512-7NjqksShTVK+U4cNmA8rpQ3GEaHtmv4LoMODor81roHEnp/nOdkgyz8q1iJn/zLBiaMM3xmTFxLX7JVqBqXIPA==","signatures":[{"sig":"MEUCIQDYKusoG9J68RYG/vH+FbQXLUFxdEfZnPoUmv/ZMEXIGgIgdWkGGPgFGHXEmxeWO48hlXgiXWYxJ4pA4Gbeoo7qk8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":735595},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"5f25f200b144eb332401d0eeb32de8f40240ad4f","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.21.0_1783100654937_0.8354706894076469","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"mandrel-platform","version":"0.24.0","license":"MIT","_id":"mandrel-platform@0.24.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"58034120d9be1126fef04f1121e94ee0b38d634b","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.24.0.tgz","fileCount":88,"integrity":"sha512-9XZQZK2pKa46mA/l8gOR3e+EfeGa5HpQg20bair2BeRoRLlRtQ2nxijnVrjGLsilT0kz7JiMlsPgzred5GkkyQ==","signatures":[{"sig":"MEQCIB4sBgK6FRUKBut/uZ6oKSXEhVhFfuxCURICKuGX3rFiAiBzcfrMcN41Ybswlcb2MMNDblgp80NkPsz/1X68sU9gOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":779373},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"bed46856e34a778d7b98bd342deed7a7549aa7b1","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.81.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.24.0_1783250240141_0.0766370721276799","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"mandrel-platform","version":"0.25.0","license":"MIT","_id":"mandrel-platform@0.25.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"c7d6e0502f5efced9f17dc8c58f4a12713f40d7c","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.25.0.tgz","fileCount":89,"integrity":"sha512-+JtNXNiDrk2CMG1RyTyX63TeIkaJAJ+FPk8u9nBcggJ8+ypP8Wd2sMvq7MMpEdR2A3XAPiECH/wgJaPOkaCfzQ==","signatures":[{"sig":"MEUCIQChgLIsNzrW4n9CYAZia1tSnlk1jCeVDmEg8ucLstm51AIgGXNWH9OWWu6vy2x9FNiIZ/pjqyAR72Mr8rCHuhLV7Tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":813558},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"3c86247936e8b793468c21e6945b6d2367712bef","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.83.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.25.0_1783273596249_0.08347790586331705","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"mandrel-platform","version":"0.26.0","license":"MIT","_id":"mandrel-platform@0.26.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"285d68f648342a820aa97702eaee79e8dd98cb78","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.26.0.tgz","fileCount":91,"integrity":"sha512-9NnW5l65h2iV7bwZWljPmVdi0oBclm7F6hELHJJCQRT66ygLlGSpXSb2rZ6Dhk/4YXw10Y4Q0c0KQ/ASaqtYEw==","signatures":[{"sig":"MEUCIAzKVBMZi5LjTqdzz6IT6U/Z41tfulzr8JWlPvFphrviAiEAqYqoHVXmYn6CabNAiXItugeBDir5NOnbpww5awyZ7RY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":823441},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"2dc7b29622af75ed19e163b7f06050e043a728a6","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.83.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.26.0_1783275124963_0.10507102537720892","host":"s3://npm-registry-packages-npm-production"}},"0.26.1":{"name":"mandrel-platform","version":"0.26.1","license":"MIT","_id":"mandrel-platform@0.26.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"dc857f8e60ad4dd221594f46a9c07124490309cb","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.26.1.tgz","fileCount":91,"integrity":"sha512-ZlrtFVrLfbi24lphcccWHdFhNtzd4R5j0n47OxbR12sfiQv9guKChQIfdoRJNfWHjqUVGs3U8AKsF2+6qCyZvA==","signatures":[{"sig":"MEUCIQCqb+LTmfmtnOpqpPpqjRVLHKIu83Ne5ODHAMr5OJRrLgIgGGnaCb9hVTINfH2SydqMK6WvES0sFnUqQI73/6s6SNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.26.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":823441},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"e1a61fc0f9cc7e8dd0962b04f590d4dd91ec740c","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.83.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.26.1_1783513247262_0.40399459192796416","host":"s3://npm-registry-packages-npm-production"}},"0.26.2":{"name":"mandrel-platform","version":"0.26.2","license":"MIT","_id":"mandrel-platform@0.26.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"689b5bbb89036f9449f30b081e38c485247b55e5","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.26.2.tgz","fileCount":91,"integrity":"sha512-YPDm1XafT98jca0+PpjijKGC6wdBZIsTXfbX1j2AUlWf7JkRL1dpSN1tlGgy2ALqIH9vmtqe6bnj618EA4lbOg==","signatures":[{"sig":"MEYCIQCbaytiePmXKHDtog8ry9ITTlv+0kOyfgESKsnSp/torwIhAL/PG8JbeF/fgeO3sS2T9CkTXtC85iUJ8vJPOsqIbyYH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.26.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":823441},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"4f7473ce35c1fd24f4642a9d781b8643e4b16e59","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.83.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.26.2_1783518555420_0.968197403057522","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"mandrel-platform","version":"0.27.0","license":"MIT","_id":"mandrel-platform@0.27.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"5d6792ccfc5bae8c5f56515528da12681b1027fe","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.27.0.tgz","fileCount":91,"integrity":"sha512-osve+eLYLQRCHfvwhve73bLCVEpIwU/KGFdm9ub/tr6XKfQpkFHxZ+yT+wykr34oc/JD9i+o/1ssISOkzKzsRw==","signatures":[{"sig":"MEUCIQCQBh7AT7H7t8SGf2xc8itQb5swSJbj920DAxvuJ67oawIgb805IZw5eypQIFVW2yQ6aM62mvcPGIvA0blAkLd8QCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":823441},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"3a4e0b5cdefbd8fa2a70246eb7ca5812d6a040d2","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^1.83.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.27.0_1784206374702_0.5632797668593246","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"mandrel-platform","version":"0.27.1","license":"MIT","_id":"mandrel-platform@0.27.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"b48340b99a530b01766bd8cf861e85dc69b326fe","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.27.1.tgz","fileCount":91,"integrity":"sha512-GOnc2LlEto2j6FqGTa5ooPu+P/9sKt8OnUxcdRGdRUv0baT+lj+We4W5aTtCAzysLD1EkxpIbb1gfXtULJASWQ==","signatures":[{"sig":"MEUCICCyL3pcKUSozGVps3Ca7AH4zn/gKnGn7iqemB+hQA0UAiEAoeQj526a/WWTXekm8kLrbZzpCEjiuw2Qbdl8c3NQ/YE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":823440},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"e2195d7d8f384ba0cab0c13ab6fd601db466c6cb","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.27.1_1784654049295_0.22459793949128315","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"mandrel-platform","version":"0.28.0","license":"MIT","_id":"mandrel-platform@0.28.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"25e9f8a01333fce6036b547ecc750fe265dd8743","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.28.0.tgz","fileCount":93,"integrity":"sha512-B21cY1c05+9hXZdUoBXsY0lzIToGlyU+5E/akc0Zm1//+ugQVhPYHo8f85xoqDIBx09RgzDIxfBcH8L2JyQCnA==","signatures":[{"sig":"MEUCIQDRpmZ+uDjG9TlycOClORcAvFIOGgGCFg60rPCXqqGKiwIgPB1UfWDaNwJ+X6qYUyFRde+WpxmGYThOhGrxsa0mFXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":835420},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"398be7967622f1259cbed43af3697475ec116bfa","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.28.0_1784662573550_0.5410556515050167","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"mandrel-platform","version":"0.29.0","license":"MIT","_id":"mandrel-platform@0.29.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"e8d501fcfc2fb8f15ec4cc6f074f9458dfdd92af","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.29.0.tgz","fileCount":95,"integrity":"sha512-ulO8HvT7mGc8sFutESoekHCuF70I2H72RmFyBbHlFSSHEjgcazoRKbZ5ZjYwm02qqRvUO7wBOHeJclnud+fLQA==","signatures":[{"sig":"MEYCIQCUm+KsNCnchY4trOJTJ5b6Iw9sGwYN4lrXg2hkpX6hRgIhANWQNZYrIoRvEpwRyw6rhjQj9cimLjndM3E0zkwthNiB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":846018},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"e0113193837c936ae79b52d2301610621db152e5","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.29.0_1784680070019_0.46896637489044557","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"mandrel-platform","version":"0.29.1","license":"MIT","_id":"mandrel-platform@0.29.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"936a32d053d82223cee37ee9b8babcfaaa761546","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-0.29.1.tgz","fileCount":96,"integrity":"sha512-TgM+nitk2tt1xDci+izSIn3J79937JzzoLlOWQ0NQ0cwth8zWQQ5hVI32gW+Fq747uoT/b6cmQexhJCz6EUOWQ==","signatures":[{"sig":"MEYCIQC6hi6oKPIz8BgF88RmT+WtILdjeIenhff9QooqOT3dWAIhAKmw+5rqzVXMVsAyhypSg3tGSt+8sjF13WafwiCkT6WH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@0.29.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":858262},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"c79814c3f3cbd9558e5bdaa720aa4e1c101c949c","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_0.29.1_1784744868124_0.33077526920573863","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"mandrel-platform","version":"1.0.0","license":"MIT","_id":"mandrel-platform@1.0.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"d673586379ce11615d186cad9938ba0119a5b541","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.0.0.tgz","fileCount":97,"integrity":"sha512-1WVe6zYLisxlEUj8xO6tsAagdM4wS9go2/ompTErNVU5Fe3pxgrAFfXwlFFzpyoJOTTLOuayVAgqX+XV1UVndg==","signatures":[{"sig":"MEQCIEc47b4wB/i9pVrRN3HQa13HVLWZ89CAJ1q6Ai7/6JeEAiANL5ZXOwBB+4bz4d8tfGwpsnT7fQzLP38bEU4cvV4kPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":890613},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"6e3d444775b601ebdabb5cd9cb715e56e06c1518","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.0.0_1784944777783_0.19586455669955982","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"mandrel-platform","version":"1.0.1","license":"MIT","_id":"mandrel-platform@1.0.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"0de88e6bec4b57005af2db219e6786abd53d2145","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.0.1.tgz","fileCount":99,"integrity":"sha512-PfLgnDMyEmwDE8FBCwP3wyr3qz9Y8ZCnR+euPQJv16JqUN/eRREBdFCq+85hXK3KVNnNH+QWzVytjpuXtDjh5Q==","signatures":[{"sig":"MEQCICJ1vsxluByJkdr1XdHiHOzG0DyBhUzUBuH6gY7MUQx6AiA9QoYCmoZ7dEeSUjLBIs1d5T4qBFCzEQ3+JCwAtKO4zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":940284},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"8e2f989779126612500313aa80d032868e6b9e7c","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.0.1_1785029455989_0.3955114067161045","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"mandrel-platform","version":"1.1.0","license":"MIT","_id":"mandrel-platform@1.1.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"5b1b4d94693138b18cebb6544db283ac4c998177","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.1.0.tgz","fileCount":100,"integrity":"sha512-VAbBuFfMoTDP0W50SWSvcwqkW9U4txNgfv9X7GqV4VazGX7LNCp2E4SHwIBcHwYCAAYpIcU0R7INbB3iYFZSZg==","signatures":[{"sig":"MEUCIAhrhw6TRp4h7IqVc0/g9pU8SsgRrWgEqkpxOJuqdOgyAiEA5u2WGxx+2ufiWdA6l5xGbjff/oxrdC9T1wR6L1kGl3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":991518},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"71403dd6886633cc4831a8b0e621d32d832dcb32","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.1.0_1785067020766_0.1153603249194537","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"mandrel-platform","version":"1.2.0","license":"MIT","_id":"mandrel-platform@1.2.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"fd161e3976e097f06154c96ab7a3cd3d166d1cb5","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.2.0.tgz","fileCount":104,"integrity":"sha512-qkdHYDxGKf/vb48eqgdVW9oFNnd7AEfokBO31EzIgZhHV9o7Hrh7UIniA67/v8dAfTWAxqRQph3VUuQchG5XnQ==","signatures":[{"sig":"MEUCIAbEoih5+B0xgmaW/VKMMJhf9GyoVwpgFWen8Jdz4oDHAiEA5X37lTd2MCoPlTAzrNEPjLKQmR5g2DMfJRvs2bC4OKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1072376},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"204dd33419629296ffb45c3ff30edcce14898a52","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.2.0_1785171012100_0.34910344993477627","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"mandrel-platform","version":"1.3.0","license":"MIT","_id":"mandrel-platform@1.3.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"639eb12a7a4d47cd1c2f147cd65786de12e3780f","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.3.0.tgz","fileCount":114,"integrity":"sha512-BfU1Zog2xVHozcgMC7yY1GShKBmxjl2gYGWnK/G7tOrIEptaZ3ayawySd5doCaOPBwvCTo7cw25Cc4Vnat1hnw==","signatures":[{"sig":"MEUCIQCHYoRFx6Ufid8NDJMB1TxiQy8hL9edtFgvTB1sNJx+TAIgX6n7fY21AtAse2oGuqpq0IFbnH4R1rdZFu5ZsheGsio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1282397},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"512a47ee191d3b6883c264d6d07b8ef2a2d2277f","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.3.0_1785626464214_0.8277725351602565","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"mandrel-platform","version":"1.4.0","license":"MIT","_id":"mandrel-platform@1.4.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"307e5d07ccb48f0d5cc33846858d4c9cd3052639","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.4.0.tgz","fileCount":115,"integrity":"sha512-+f5JZd5kZgUYJ0InpouVu/4gPbn8GTGjIl2nXSu74ybAGr/up2qaUeOSH5ppyIctGysYcBZK6TxcZl//NiX74Q==","signatures":[{"sig":"MEYCIQD0T+7YXg3/FcdXGpKnZV+hemPtHsdgmkOwrFfTwxLpDAIhAICdhYbb5F7Nc8GB7yvulUC3VH/r6L5tX8qZ2Y96+bND","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1314418},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"fe462d0742cd3f2d9f3ef62e4220b9ce8ab72e2a","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.31.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.4.0_1786011489837_0.7623860070168269","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"mandrel-platform","version":"1.4.1","license":"MIT","_id":"mandrel-platform@1.4.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"2f9ff477af4c3e1cb7204fba5394d41b5e7736a1","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.4.1.tgz","fileCount":116,"integrity":"sha512-QO3w58hNTveh1+M4t4spIRg/q/1WC//Ywz3jtsh9VQwQH3eYDmBrG4z2SHDzQYClnUwVv5qDeh7edQ//Gc3d9g==","signatures":[{"sig":"MEQCIGvyBJ23WZVtHeuWtNycEJ2DAISQTK9bcwLtfo7kV2GoAiBj+qzUm1eLWnHYhaQ7Wkm/OqU1E4UlPqYKOrb5NfVfkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1334208},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"c5bd9188ac69927b0163d1d26ed6fea1b8a7163d","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.31.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.4.1_1786118180581_0.42806083816175455","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"mandrel-platform","version":"1.4.2","license":"MIT","_id":"mandrel-platform@1.4.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"d1fbefe7ad1d57d1742ed0fdb0bade9ad25c0ee7","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.4.2.tgz","fileCount":116,"integrity":"sha512-Mt/myATwsSeGb+xI+IneGTuDDKUa/0M7KJIcHea8jnmg5Of+kIGS8FwWUq3PnL05xJ+0oR8zioiCFuanJH2GZQ==","signatures":[{"sig":"MEUCIQCbXCxZj3ILVRlPaGH1MnePWbHJI6Lbus2X3at8Zn8qVQIgRws7p0mIJLasvGWC1xV2P2py1pdgMEc5cS3vLhx3yYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1346552},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"7203ff26c5594375f6aad09035ff521d735d6816","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.31.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.4.2_1787571450270_0.34292694142899793","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"mandrel-platform","version":"1.5.0","license":"MIT","_id":"mandrel-platform@1.5.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"cabb061dfe225f06c0d6655c5854add2e4853b1a","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.5.0.tgz","fileCount":120,"integrity":"sha512-4YwnRMIAzxIPkIAqgRnD8F8BAGvSUhUdtOFpWOYds0uvcnZHSxypZjBuCAP66BqjKqxrzubEtqOCqJmNQILEBA==","signatures":[{"sig":"MEUCIQCvNVfqDCYkdapXByRT1T+Tnzw3Q8Pt5oZR11cqvz+T+gIgBs7KLpJ7we7qJq5ooecGjeie8JK0rKVy9cMylM6S1jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1412875},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"57b3e39384fff38b25abe8e627b7b27b77236081","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.35.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.5.0_1788023965159_0.6414402651271123","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"mandrel-platform","version":"1.5.1","license":"MIT","_id":"mandrel-platform@1.5.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"e5201c671b82d5afc52c4ca1bbe3d5caaff6e27e","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.5.1.tgz","fileCount":123,"integrity":"sha512-XsMyADlXGwOwuRwvFSmpCc1bhdr4f6CKBJ6vIbvcZ/oZU+VpZyhp3Cn/f4Lrn2FOPBYbqda9hofzsCO8/go9tw==","signatures":[{"sig":"MEUCIDchbeg6vD5Ty2mjdoNXbquf8YiJXTuk3SM2m+vu0IacAiEA2GMbH9ViTTnCg9eNnlwSR0dbWsLTadIRChBnFkRVIhs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1432928},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"2a095f6692c6be096d047e885ad0f2b84c86e46e","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.38.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.5.1_1788568244499_0.40749104836152594","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"mandrel-platform","version":"1.6.0","license":"MIT","_id":"mandrel-platform@1.6.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"01a5ea3ebc7b8dc621fd3acceaed96c0d82864e4","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.6.0.tgz","fileCount":125,"integrity":"sha512-++7j3xgPzoIhCUsZLPHD80S4sPLD4REKPF9lKzcSzVXk7HgLBJiY2JE6hqq623sr2nuS1Lv8PrUhfx8QyaHfzw==","signatures":[{"sig":"MEUCIHzXSOfVJvD/IaQgxsBuloqeadAdi91DNFQpB/vty+8nAiEA4VCFcp2qjKQy3CpMcSQo/7KgppS0DI8hOb1tyzYExuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1463062},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"e32f8de462dd56a0c87291badc077c8c86fb3222","scripts":{"lint":"node --input-type=module --eval 'process.exit(0)'","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.38.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.6.0_1788658182396_0.6703890522189628","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"mandrel-platform","version":"1.7.0","license":"MIT","_id":"mandrel-platform@1.7.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"16d57d8d3ada3b06fd737e9b2ab573cdeff88df0","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.7.0.tgz","fileCount":125,"integrity":"sha512-2LUzL6jRVUop6J1cGtdTWfQYYSFwYIK9a4sWzfzRB/zSYCQlnzPpEk0e/xRTpnYf8ag/SaQHk5hHL5tBA1kjXA==","signatures":[{"sig":"MEUCIQCdRLeG5TnLOGb/71qhpLhn+hsdL8BnranE0FFV/YsyfwIgQU6Nyvr3GAUv7BgYpBQ5X/Q/uy4omVk6i6Ojtre97YU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1463578},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"745fd345b4e9a24cf8db703edca8b19cd6927bcb","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.45.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.7.0_1788793271487_0.7403536696781927","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"mandrel-platform","version":"1.8.0","license":"MIT","_id":"mandrel-platform@1.8.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"2865a64743bd553e747d496119b3e9059c17d651","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.8.0.tgz","fileCount":128,"integrity":"sha512-hHTIebSPNtKjHXf5DquZbsEHCoMW5YLcEiFGZfHkNRjPI/viQ7VxhSwVx+7zG2CdSXCqIxHr3xPnnLlxQ9fC9Q==","signatures":[{"sig":"MEUCIQDW7OY5vVonqLSSDQXpcvTi9zm7Pxd3R6f8UtMEMgrtqAIgJd1yXqUMwwZ5BhH/amk0z4/JHL1Sz+C0a5390A69ZW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1550765},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"87852eee3846ac2238fc853b5fdbeb4fd6e0bd56","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.8.0_1788832211478_0.369413336124798","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"mandrel-platform","version":"1.8.1","license":"MIT","_id":"mandrel-platform@1.8.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"1ce3ba073a36effef7e038a3cb1a34a44787a538","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.8.1.tgz","fileCount":128,"integrity":"sha512-gJa0ekZPHYFXjkDJjlnGbYTNLE2dOnU/h/67SLDoRDsDe/ZtsNThD7vyM/cSWP8J0wxj2l1AjmZCBoaObY1nKQ==","signatures":[{"sig":"MEUCIQCMqZF46cQBU0YwmAbVhml+r0yoHQuvBt+DkE5aqUZz/gIgEMMZ8eP9aDLIolOSsY42riUGysBLLNEDbpC+mJjbmgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1564593},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"af7ee1385985f5a2d4c95290adb8d32abcfa4b78","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.8.1_1788865137397_0.8079262341126381","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"mandrel-platform","version":"1.9.0","license":"MIT","_id":"mandrel-platform@1.9.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"777bf9247b0c06ee6a5f432161852eb9278747f2","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.9.0.tgz","fileCount":128,"integrity":"sha512-QxdSX3v5pZkdexsLWxabZyR2jAiL5sa2w1ZqX8qtjadE3zFNkpRr6OYAr3ZTsDF9xdyZQfR/dW+elpmcP34qQA==","signatures":[{"sig":"MEYCIQDRM7SvWcH46j6Zn3gMrMn8Yvj1flsIzRx++dWy6RwNlQIhALNkEQiT24Q3CHIyNjtywBpWEydeYgjgD3wAhR58v9lj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1582133},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"7a78d0ad0cbe3cced00d5213e00dfb34c006fa6b","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.9.0_1788867816983_0.733888482574022","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"mandrel-platform","version":"1.10.0","license":"MIT","_id":"mandrel-platform@1.10.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"11246898d39170c7db9a1b79431de964c5daddc3","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.10.0.tgz","fileCount":128,"integrity":"sha512-plb9Ok67KLCckpiG0AdDIDile2TEZBtexF1Qkam7gwdx6UAr+Dy3rdCdz6Hqe6bh2R4pdj99BiE8rqVnKBo8FA==","signatures":[{"sig":"MEQCIAHhe6trXySaQbHU9VDRinOtvbYl3rTr1kNtz6Sm4pPLAiBR1MhinHMQ9zic0CgxipUu2U/Eb9r+6CWfmfusIH+bCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1608776},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"8eab1332d7d02459c98d9ab9fcd0397627f789b1","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.10.0_1788882575321_0.686473152915339","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"mandrel-platform","version":"1.11.0","license":"MIT","_id":"mandrel-platform@1.11.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"96daa39787a7ea498a4a9db0ee82965469f7d63a","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.11.0.tgz","fileCount":128,"integrity":"sha512-PnoZgkqdHJNBSk6ZcXBOYpIhhKawMwPSGPlFB10QNLatD4+YmWkhNIU9wmHtcNUuAKch28I2WlxyqiS8lVptdA==","signatures":[{"sig":"MEQCIGoMjrBAebkVgJt4JO8pw4jaMOY3nAK/XixDYwKW4uSMAiAJYwy6MlrvQ20ylOze037qTJgx6R0AQjZPL1imPde8OA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1629098},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"9aa91790017ae383ce9b42062c1b84841fef80b0","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.11.0_1788894651381_0.09360044743751872","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"mandrel-platform","version":"1.12.0","license":"MIT","_id":"mandrel-platform@1.12.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"8e5858e006929fc0aa1b510c4d6f7f3065a4e1fc","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.12.0.tgz","fileCount":130,"integrity":"sha512-2cACIGMDkpwSy7BplBEi0TuV5ugNE8WAL00sJzDk1T1HKGhVY7OWKHTXJk2edgwrAklGDNHfEZWbJbBsBvuZ6w==","signatures":[{"sig":"MEQCIB8Df669lLzhWQSnZyYnjGzgPm6kPevxkw5P5R1gYfOfAiBdfuZO7SlOK2cyAHs5vzymbqs45gJopmBFrC08QnpFNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1671286},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"623a02eb1b3f6809e3364d328f4b04342597fb2d","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.12.0_1788981005565_0.42923151798080705","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"mandrel-platform","version":"1.13.0","license":"MIT","_id":"mandrel-platform@1.13.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"d886c779a1ea3a4bfb705a7cbc7542c50f653dea","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.13.0.tgz","fileCount":132,"integrity":"sha512-TuEzuh08jxzrwhClk+MMSptBvCIMduMOrk2qIFdlnbwRFdsFX3srzdryCMiZCQIroPBxwYuukBA00eMOscvWFA==","signatures":[{"sig":"MEQCICIGzVE7JQDeLsv2rdoIHDXtH33BhCL8GdETO7OrDcAjAiA5oN94/CrvSLDDPjvgi3VnzepNG6Z1bko+bkzZ+jaJhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1710697},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"cf9fd7bbb5436455d02f40c8b34a2ed98b58763a","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","markdownlint-cli2":"0.23.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.13.0_1789045546005_0.38768977213898626","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"mandrel-platform","version":"1.13.1","license":"MIT","_id":"mandrel-platform@1.13.1","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"9536d3f3637f29e6e6b671e8f7a119c781a914a7","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.13.1.tgz","fileCount":137,"integrity":"sha512-xwveJkO3i7S7rvuA10BIwd7Ey4bOLSewL1ldyVZeL5hrMWj9I/Z25PlikdbiSxBoQmKyZHhVaa5H+Ifl4ESb6g==","signatures":[{"sig":"MEUCIQDUf3UAFTSUoZwo3UuZ8BEaaKWLzjhzgBmS35qFX54FdAIgNqEimj9X7CuvvQGv6LQ1zhXtxlOBdyY2o2RTSQFKfCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1915148},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"a928b90189bbed3054ba78e092882f43842bbd01","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","markdownlint-cli2":"0.23.2","@commitlint/config-conventional":"21.2.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.13.1_1789085273133_0.29401162419208826","host":"s3://npm-registry-packages-npm-production"}},"1.13.2":{"name":"mandrel-platform","version":"1.13.2","license":"MIT","_id":"mandrel-platform@1.13.2","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"d56eef6e36e086cadb9f974b4fa8f4c0aa321883","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.13.2.tgz","fileCount":137,"integrity":"sha512-TQf7c5qH1DZyaxAw0+lDD5SgkmIMxQV8dunyqgnVQJmyS9yEpHsZ9IN//KRNSR9l0dUhM0L93ZH1TlutB5e6Uw==","signatures":[{"sig":"MEYCIQDhZMXsi2jWaIdGZDK4c5mYxRudCsPhlFBsTRAut372NwIhAOsZEvHvgSP34pNsx6p0j9ntbIQFA+JKqha9IhhywLvJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.13.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1918132},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"fd276c498d1cff4aa71b41bda8bde81f3d1a66ef","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","markdownlint-cli2":"0.23.2","@commitlint/config-conventional":"21.2.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.13.2_1789135976587_0.6720984912429222","host":"s3://npm-registry-packages-npm-production"}},"1.13.3":{"name":"mandrel-platform","version":"1.13.3","license":"MIT","_id":"mandrel-platform@1.13.3","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"b913f79fee7fe7b447f1ec8aa39a964861e5c777","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.13.3.tgz","fileCount":137,"integrity":"sha512-I1ikvVp8ePHhvQWjZFQqbEX35iHkmuqAF3tbcd9vGYyi6Nxt4wztiefZcEjTvZajT3Mrde+fAIUIQGF2KmhXpw==","signatures":[{"sig":"MEUCIFNC1/zmHnP2GWEavBDDXNqXs8HUC/fU9oER3qpw4J3iAiEAhb7qYBzhMdHxGX9V/Xjwz1cam3QPDuOuW2SFY6jW70E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.13.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1918132},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"d6213706e84bb1a70d1255893e9d9c2b82a199f2","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","markdownlint-cli2":"0.23.2","@commitlint/config-conventional":"21.2.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.13.3_1789137109019_0.5108351077653548","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"mandrel-platform","version":"1.14.0","license":"MIT","_id":"mandrel-platform@1.14.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"5a7cb44d77a5dd9d23e682bb2da9478c31519b2a","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.14.0.tgz","fileCount":141,"integrity":"sha512-U4gg2puY0doF8inIrvGXMg0Bu3tn7qH2safP1nVJJI0U9DlwbTA+qU2WdXobzTvGtvW6O3jREy9BwK2kEbfnfQ==","signatures":[{"sig":"MEUCIC3XoqJhBytk/MygWsG2sckAKbP8Jua6HDVLsYlGy1pwAiEAnFaB3+4ybqxGGPFPv4IAX1JwKW6cnLVY1aTX5733vB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1977457},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"f6cb42c90609b21f207bd337df1eb4f5fa0ec1a9","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","markdownlint-cli2":"0.23.2","@commitlint/config-conventional":"21.2.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.14.0_1789406161857_0.6134369529960033","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"mandrel-platform","version":"1.15.0","license":"MIT","_id":"mandrel-platform@1.15.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"dist":{"shasum":"72946b504d318c7c966067333168eacf9c0d5d5e","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.15.0.tgz","fileCount":142,"integrity":"sha512-25bqboL220fbURiPl8+HS65R3Yp+5c0TSg6eiB7+pTPAhp6uP0p1DSeftCU51JgVurrsvEPXygei+TV2NRBEVA==","signatures":[{"sig":"MEUCIHBrHVQ0fJar8LP8p6hA4Q/D3hNbdJJGzmP3ond5/tbyAiEAgOYDeewQDJ5Ygc1ieY9MOciOVqt17x9EZ8YEAbmcpuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2004638},"engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./scripts/*":"./scripts/*","./edge-security":"./config/edge-security/index.mjs","./knip.base.json":"./config/knip.base.json","./biome.base.json":"./config/biome.base.json","./edge-security/*":"./config/edge-security/*","./stryker.base.json":"./config/stryker.base.json","./tsconfig.base.json":"./config/tsconfig.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./lighthouse.base.json":"./config/lighthouse.base.json","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml"},"gitHead":"1148395fae4ac5af0cd154223e51dc443c20cfd9","scripts":{"lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","typecheck":"node --input-type=module --eval 'process.exit(0)'","platform:sync":"node scripts/platform-sync.mjs","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node .agents/scripts/sync-claude-commands.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"overrides":{"smol-toml":"~1.7.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel-platform.git","type":"git"},"_npmVersion":"11.13.0","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mandrel":"^2.48.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.2","devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","markdownlint-cli2":"0.23.2","@commitlint/config-conventional":"21.2.2"},"_npmOperationalInternal":{"tmp":"tmp/mandrel-platform_1.15.0_1789417076206_0.5391054737432854","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"mandrel-platform","version":"1.15.1","description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/dsj1984/mandrel-platform.git"},"homepage":"https://github.com/dsj1984/mandrel-platform#readme","bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"packageManager":"pnpm@11.5.2","engines":{"node":"24.16.0","pnpm":">=11.5.2"},"exports":{"./tsconfig.base.json":"./config/tsconfig.base.json","./biome.base.json":"./config/biome.base.json","./knip.base.json":"./config/knip.base.json","./stryker.base.json":"./config/stryker.base.json","./commitlint.base.mjs":"./config/commitlint.base.mjs","./dependency-cruiser.base.json":"./config/dependency-cruiser.base.json","./markdownlint.base.jsonc":"./config/markdownlint.base.jsonc","./secretlint.base.json":"./config/secretlint.base.json","./size-limit.base.json":"./config/size-limit.base.json","./lighthouse.base.json":"./config/lighthouse.base.json","./lighthouse-thresholds.base.json":"./config/lighthouse-thresholds.base.json","./pnpm-workspace.supply-chain.yaml":"./config/pnpm-workspace.supply-chain.yaml","./edge-security":"./config/edge-security/index.mjs","./edge-security/*":"./config/edge-security/*","./scripts/*":"./scripts/*"},"publishConfig":{"access":"public","provenance":true},"dependencies":{"mandrel":"^2.48.0"},"scripts":{"typecheck":"node --input-type=module --eval 'process.exit(0)'","lint":"node scripts/run-lint.mjs","test":"node --test \"scripts/**/*.test.mjs\"","platform:sync":"node scripts/platform-sync.mjs","sync:commands":"node .agents/scripts/sync-claude-commands.js","prepare":"node .agents/scripts/sync-claude-commands.js && node scripts/install-git-hooks.mjs","bootstrap":"node .agents/scripts/bootstrap.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD","quality:watch":"node .agents/scripts/quality-watch.js"},"devDependencies":{"@biomejs/biome":"2.5.0","@commitlint/cli":"21.2.2","@commitlint/config-conventional":"21.2.2","markdownlint-cli2":"0.23.2"},"overrides":{"smol-toml":"~1.7.1"},"gitHead":"fdf020f42c9a3cb3120446717cae3152f8f42e57","_id":"mandrel-platform@1.15.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-VyGt9o7cXffaPdER4jGbCQ+YEZc73Rpoezv9I0DMfXb56/Fiq++r/4V8dRI2ediis99hGRp3SQl1BRHHiAO8qg==","shasum":"cc51b43401b192f661a65a8b1faa739ceaef5606","tarball":"https://registry.npmjs.org/mandrel-platform/-/mandrel-platform-1.15.1.tgz","fileCount":142,"unpackedSize":2006915,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel-platform@1.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICfQSkEdPVZukRRXbpPynOfrSEsgwGYVSc8IGnJidIADAiBovHt5s0d0n2uvOZjVFAQoytfjncHnyUvhs0kLui0Rtw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f6aaffb0-321a-41db-b9b1-925b8eb93be2"}},"directories":{},"maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mandrel-platform_1.15.1_1789419010821_0.014844030836744349"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-28T20:21:37.171Z","modified":"2026-09-14T20:50:11.314Z","0.2.1":"2026-06-28T20:21:37.448Z","0.2.2":"2026-06-29T00:42:29.411Z","0.2.3":"2026-06-29T00:53:00.911Z","0.2.4":"2026-06-29T01:19:03.396Z","0.2.5":"2026-06-29T01:33:19.714Z","0.3.0":"2026-06-29T01:51:52.167Z","0.3.1":"2026-06-29T02:00:36.754Z","0.4.0":"2026-06-29T12:09:08.359Z","0.5.0":"2026-06-29T12:39:42.443Z","0.5.1":"2026-06-29T13:02:06.176Z","0.6.0":"2026-06-29T13:56:00.137Z","0.7.0":"2026-06-29T14:19:30.021Z","0.8.0":"2026-06-29T14:56:59.655Z","0.9.0":"2026-06-29T15:09:13.385Z","0.10.0":"2026-06-29T19:01:25.028Z","0.11.2":"2026-06-29T21:16:13.387Z","0.11.3":"2026-06-29T22:55:37.210Z","0.11.4":"2026-06-29T23:32:15.456Z","0.11.5":"2026-06-29T23:37:54.951Z","0.11.6":"2026-06-30T00:12:52.860Z","0.11.7":"2026-06-30T00:41:40.337Z","0.12.0":"2026-06-30T12:26:33.682Z","0.13.0":"2026-06-30T14:05:56.246Z","0.14.2":"2026-06-30T19:55:47.101Z","0.15.0":"2026-06-30T22:41:13.339Z","0.15.1":"2026-06-30T23:53:55.077Z","0.16.0":"2026-07-01T00:18:26.504Z","0.17.0":"2026-07-01T03:20:33.026Z","0.17.1":"2026-07-01T11:56:16.048Z","0.17.2":"2026-07-01T18:05:43.225Z","0.18.0":"2026-07-02T02:06:22.783Z","0.19.0":"2026-07-02T13:57:19.595Z","0.19.1":"2026-07-02T15:00:45.968Z","0.19.2":"2026-07-02T17:14:00.422Z","0.20.0":"2026-07-02T17:52:38.795Z","0.20.1":"2026-07-03T13:16:43.401Z","0.21.0":"2026-07-03T17:44:15.121Z","0.24.0":"2026-07-05T11:17:20.302Z","0.25.0":"2026-07-05T17:46:36.410Z","0.26.0":"2026-07-05T18:12:05.138Z","0.26.1":"2026-07-08T12:20:47.465Z","0.26.2":"2026-07-08T13:49:15.555Z","0.27.0":"2026-07-16T12:52:54.841Z","0.27.1":"2026-07-21T17:14:09.464Z","0.28.0":"2026-07-21T19:36:13.704Z","0.29.0":"2026-07-22T00:27:50.242Z","0.29.1":"2026-07-22T18:27:48.307Z","1.0.0":"2026-07-25T01:59:37.987Z","1.0.1":"2026-07-26T01:30:56.157Z","1.1.0":"2026-07-26T11:57:00.923Z","1.2.0":"2026-07-27T16:50:12.266Z","1.3.0":"2026-08-01T23:21:04.373Z","1.4.0":"2026-08-06T10:18:10.046Z","1.4.1":"2026-08-07T15:56:20.765Z","1.4.2":"2026-08-24T11:37:30.430Z","1.5.0":"2026-08-29T17:19:25.310Z","1.5.1":"2026-09-05T00:30:44.655Z","1.6.0":"2026-09-06T01:29:42.605Z","1.7.0":"2026-09-07T15:01:11.663Z","1.8.0":"2026-09-08T01:50:11.748Z","1.8.1":"2026-09-08T10:58:57.554Z","1.9.0":"2026-09-08T11:43:37.127Z","1.10.0":"2026-09-08T15:49:35.472Z","1.11.0":"2026-09-08T19:10:51.516Z","1.12.0":"2026-09-09T19:10:05.675Z","1.13.0":"2026-09-10T13:05:46.152Z","1.13.1":"2026-09-11T00:07:53.333Z","1.13.2":"2026-09-11T14:12:56.754Z","1.13.3":"2026-09-11T14:31:49.187Z","1.14.0":"2026-09-14T17:16:02.031Z","1.15.0":"2026-09-14T20:17:56.412Z","1.15.1":"2026-09-14T20:50:11.022Z"},"bugs":{"url":"https://github.com/dsj1984/mandrel-platform/issues"},"license":"MIT","homepage":"https://github.com/dsj1984/mandrel-platform#readme","repository":{"type":"git","url":"git+https://github.com/dsj1984/mandrel-platform.git"},"description":"Shared CI/deploy workflows, composite toolchain action, npm config package, Renovate preset, and operator runbook templates.","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"readme":"# mandrel-platform\n\nThe **single source of truth (SSOT)** for CI/CD, security, and configuration\nacross the Mandrel fleet. A consumer repo adopts this platform once and inherits\na converged, hardened baseline — reusable GitHub Actions workflows, a composite\ntoolchain action, importable config bases, guardrail scripts, edge-security\nmiddleware, a Renovate preset, and operator runbook templates — instead of\nhand-maintaining its own copies and drifting apart over time.\n\n## What's in scope\n\n| Pillar | What it provides |\n| ------ | ---------------- |\n| **Reusable workflows** | `workflow_call` CI, deploy, secret-scan, release, and CodeQL pipelines, consumed by tag/SHA pin. |\n| **Composite action** | `setup-toolchain` — pnpm + Node + frozen install in one step. |\n| **Config bases (npm)** | `extends`-able baselines: TypeScript, Biome, Knip, Stryker, commitlint, dependency-cruiser, secretlint, size-limit, Lighthouse. |\n| **Edge-security middleware (npm)** | Per-env closed-allowlist CORS, security headers, and app-layer rate limiting for Astro + Hono. |\n| **Guardrail scripts (npm)** | Dependency-free policy checks: CVE gate, action-pin ratchet, coverage floor, destructive-migration guard, workflow-portability, required-contexts, docs-staleness. |\n| **Renovate preset** | Shared dependency-update policy, including auto-bumping this repo's own `uses:` pins. |\n| **Supply-chain config** | pnpm-native hardening fragment (`blockExoticSubdeps`, `trustPolicy`, 7-day `minimumReleaseAge`). |\n| **Adoption & drift control** | `platform-sync` (adopt/repair) plus a scheduled cross-consumer pin-drift dashboard and auto-repair-PR loop. |\n| **Runbook templates** | Copyable thin-stub operator runbooks that link back to the canonical process docs. |\n\n**Out of scope.** mandrel-platform is not an application and ships no runtime\nservice — it deploys nothing of its own beyond its release train. Consumers keep\nevery project-specific knob (entrypoints, budgets, score floors, deploy targets)\nlocal: the platform sets the floor, the consumer sets the ceiling. The `.agents/`\ntree in this repo is the Mandrel agent framework used to *develop* the platform\n(sourced from the separate `mandrel` CLI) — it is dev-time only and is **not**\npart of the published npm package, whose `files` allowlist ships only `config/`,\n`default.json`, `scripts/`, and `templates/`.\n\n**Docs:** [reusable-workflows.md](docs/reusable-workflows.md) (the `workflow_call`\ncontract) · [decisions.md](docs/decisions.md) (decision log). Status, the\nconsumer convergence matrix, and the forward roadmap are tracked privately.\n\n---\n\n## Reusable workflows\n\nFive workflows expose a stable `workflow_call` contract and are consumed by\ntag/SHA pin. Configure your callers from\n**[docs/reusable-workflows.md](docs/reusable-workflows.md)** — the authoritative\nreference for input types, defaults, when-to-override, the frozen\n`{CLOUDFLARE_*, TURSO_*}` deploy-secret allowlist, the single `ci-required`\naggregator context, and the pin-by-tag/SHA versioning model.\n\n| Workflow | Purpose |\n| -------- | ------- |\n| [`pr-quality.yml`](docs/reusable-workflows.md#pr-qualityyml) | Tiered PR gate — lint/format → typecheck → unit → contract → e2e/smoke → migration-guard → security → osv-scan, each tier independently toggled, behind one `ci-required` aggregator. |\n| [`deploy-cloudflare.yml`](docs/reusable-workflows.md#deploy-cloudflareyml) | Defence-in-depth Cloudflare deploy with a frozen deploy-secret allowlist. |\n| [`secret-scan-push.yml`](docs/reusable-workflows.md#secret-scan-pushyml) | Full-history gitleaks secret scan on push to the default branch. |\n| [`release-automation.yml`](docs/reusable-workflows.md#release-automationyml) | Conventional-commit release lifecycle (version bump + `CHANGELOG.md` + tag) via release-please. |\n| [`codeql.yml`](docs/reusable-workflows.md#codeqlyml) | CodeQL SAST analysis — dual-mode: runs on this repo's weekly schedule **and** is `workflow_call`-consumable (this repo's `ci.yml` calls it as a merge-blocking `code-scanning` job). |\n\n> `smoke-dispatch.yml` is a **platform-internal** cross-repo smoke trigger\n> (`push` / `workflow_dispatch`, not `workflow_call`). It appears in the\n> reference for completeness but is not part of the consumer caller surface.\n\n`release-automation.yml` extends the platform from CI/deploy into the **full\nrelease lifecycle**: a thin caller gets conventional-commit-driven version\nbumps, a `CHANGELOG.md`, and tags via release-please — the same convention the\nplatform's own release train uses. It does not publish to a registry (consumers\ndeploy to Cloudflare, not npm); see its section in the reference for the\nout-of-scope boundary and the `release_created` / `tag_name` outputs a\npublish/deploy job keys off.\n\n---\n\n## Shared Composite Actions\n\n### `setup-toolchain`\n\nInstalls pnpm (version sourced from the consuming repo's `packageManager` field), Node.js (version sourced from `.nvmrc`), and project dependencies via `pnpm install --frozen-lockfile`.\n\n**Reference by SHA** to pin an exact version:\n\n```yaml\n- name: Setup toolchain\n  uses: dsj1984/mandrel-platform/.github/actions/setup-toolchain@<sha>\n  with:\n    cache: 'true'   # omit or pass 'false' on self-hosted runners with a warm pnpm store\n```\n\n**Inputs:**\n\n| Input   | Required | Default | Description                                                                                  |\n| ------- | -------- | ------- | -------------------------------------------------------------------------------------------- |\n| `cache` | No       | `true`  | Enable pnpm store caching via `actions/setup-node`. Pass `false` on self-hosted runners. |\n\n**When to pass `cache: 'false'`:** Self-hosted runners that maintain their own warm pnpm store do not need the `actions/setup-node` pnpm cache layer. Ubuntu runners on `ubuntu-latest` benefit from the default `cache: 'true'`.\n\n---\n\n## Published npm package\n\nThe `mandrel-platform` npm package exports shared configuration baselines and\nutility scripts so all consumer repos extend the same SSOT instead of\nhand-syncing copies.\n\n### `tsconfig.base.json`\n\nA strict TypeScript base config — `strict`, `noUncheckedIndexedAccess`,\n`noImplicitOverride`, `verbatimModuleSyntax`, `isolatedModules`,\n`moduleResolution: Bundler`, `target: ES2022` — intended to be extended by\nevery consumer.\n\n**Consumer usage (`tsconfig.json`):**\n\n```jsonc\n{\n  \"extends\": \"mandrel-platform/tsconfig.base.json\",\n  \"compilerOptions\": {\n    // repo-specific overrides only\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src\"]\n}\n```\n\n### `biome.base.json`\n\nA Biome base config with the recommended linter rule set, import organizer,\nand standard formatter defaults (2-space indent, 100-char line width).\n\n**Minimum Biome version: 2.0.** The base targets the **Biome v2 schema**\n(`$schema: https://biomejs.dev/schemas/2.5.0/schema.json`, `assist.actions.\nsource.organizeImports`, `linter.rules.preset`). Biome v1 consumers cannot\n`extends` this base — the v2 config shape is a hard configuration error on\nBiome 1.x. There is no dual v1/v2 export; consumers on Biome 1.x must\nupgrade to 2.x before adopting this base (refs #153).\n\n**Consumer usage (`biome.json`):**\n\n```jsonc\n{\n  \"extends\": [\"mandrel-platform/biome.base.json\"],\n  \"files\": {\n    \"ignore\": [\"dist/\", \".wrangler/\"]\n  }\n}\n```\n\n### Code-quality tooling base configs\n\nThe package also ships shared base configs for the code-quality /\nhygiene tools every consumer runs — **Knip**, **Stryker**,\n**dependency-cruiser**, **markdownlint**, **secretlint**, **size-limit**,\nand **Lighthouse**. Each is the best-of-breed union of the consumers'\npreviously hand-maintained configs.\nAdoption is opt-in via `extends` (or a spread / deep-merge where the tool\nhas no native `extends`), and every project-specific knob — entrypoints,\nmutate globs, bundle paths, score floors, and budgets — stays\n**consumer-tunable** locally.\n\n#### `knip.base.json`\n\nShared Knip defaults (`ignoreExportsUsedInFile`, the `mandrel` binary +\n`mandrel-platform` dependency ignores). Knip has **no native top-level\n`extends`** to an npm-package config, so consumers import the base JSON in a\n`knip.config.ts` (or `.js`) module and spread it, layering their own `entry`\n/ `project` globs on top:\n\n```ts\n// knip.config.ts — import the base and spread it\nimport type { KnipConfig } from \"knip\";\nimport base from \"mandrel-platform/knip.base.json\" with { type: \"json\" };\n\nconst config: KnipConfig = {\n  ...base,\n  entry: [\"src/index.ts\", \"scripts/*.ts\"],\n  project: [\"src/**\", \"scripts/**\"],\n};\n\nexport default config;\n```\n\n#### `stryker.base.json`\n\nShared Stryker mutation-testing defaults: pnpm package manager, `perTest`\ncoverage analysis, HTML + clear-text + progress reporters, `ignoreStatic`,\n`disableBail: true`, `concurrency: 1`, the timeout budget a bail-free run needs\n(`timeoutMS: 120000` — 120 s — plus `timeoutFactor: 3` and\n`dryRunTimeoutMinutes: 15`), and high/low/break thresholds.\n\nStryker has **no `extends` option at all** — its config reader loads exactly\none config file and merges CLI arguments over it, and `extends` is not among\nthe top-level properties its schema accepts, so a config that declares one is\nreported as an unknown option and otherwise ignored. The working mechanism is\ntherefore a `stryker.config.mjs` (or `.js` when `\"type\": \"module\"`) module\nthat imports the base JSON **by package specifier** and spreads it, then pins\nthe test runner and mutate set:\n\n```js\n// stryker.config.mjs — import the base and spread it\nimport base from \"mandrel-platform/stryker.base.json\" with { type: \"json\" };\n\n/** @type {import('@stryker-mutator/api/core').PartialStrykerOptions} */\nexport default {\n  ...base,\n  testRunner: \"vitest\",\n  mutate: [\"src/**/*.ts\", \"!src/**/*.test.ts\"],\n};\n```\n\n`concurrency: 1` is a cap, not a recommendation for every host. Stryker's own\ndefault is `n-1` logical cores (`n` when `n <= 4`), so a scope that spreads this\nbase and names no `concurrency` of its own would take one worker per core — the\nunsafe direction to inherit by omission, because on a runner host shared between\nrepos those cores are billed to a neighbouring tenant as a failed required\ncheck. Raising it is one line, either in the spread (a later key wins) or on the\nCLI:\n\n```js\nexport default {\n  ...base,\n  concurrency: 4, // dedicated CI — no other tenant on this host\n};\n```\n\n```bash\n# CLI wins over the config file: it completely replaces the value, not supplements it\nnpx stryker run --concurrency 4\n```\n\nAdopting the base is not a drop-in bump: `disableBail: true` changes what the\nmutation score *means*, so any baseline captured under bail has to be\nre-derived, and the base's `break: 50` is a fleet floor of last resort rather\nthan a calibrated target. Both are covered in\n[Adopting the bail-free Stryker base](docs/patterns.md#4a-adopting-the-bail-free-stryker-base).\n\n#### `commitlint.base.mjs`\n\nSingle-sources the conventional-commit **type-enum** — the eleven types\n(`feat`, `fix`, `perf`, `refactor`, `revert`, `docs`, `style`, `chore`,\n`test`, `build`, `ci`) documented in\n[`.agents/rules/git-conventions.md`](.agents/rules/git-conventions.md) — so\nconsumers stop hand-copying the list into their own\n`commitlint.config.js`. Extends `@commitlint/config-conventional` for\neverything else (header casing/length, body/footer blank-line rules) and\nnarrows `type-enum` to the fleet list. commitlint supports a native\n`extends`, so a consumer's local config reduces to the extend plus any\nrepo-specific scope enforcement (`commitlint.config.js`):\n\n```js\nexport default {\n  extends: [\"mandrel-platform/commitlint.base.mjs\"],\n  // repo-specific scope-enum, etc. — optional\n};\n```\n\nKeep this base's `type-enum`, the git-conventions.md prose list, and\n`release-please-config.json`'s `changelog-sections` in sync when adding a\ntype — all three must agree.\n\n#### `dependency-cruiser.base.json`\n\nShared dependency-cruiser rule set (no-circular, no-orphans,\nnot-to-unresolvable, no-non-package-json, not-to-dev-dep,\nno-deprecated-core, and the dep-type hygiene rules) plus resolver\noptions. dependency-cruiser supports a native `extends` to a JSON path —\nresolve the package export and add repo-specific rules\n(`.dependency-cruiser.json`):\n\n```jsonc\n{\n  \"extends\": \"mandrel-platform/dependency-cruiser.base.json\",\n  \"forbidden\": [\n    // repo-specific layering rules only\n  ]\n}\n```\n\n#### `markdownlint.base.jsonc`\n\nShared markdownlint **content** rule base — the union of the fleet's three\npreviously per-repo configs, which had diverged only by accretion (~90%\nidentical). Ships the common core (`default: true`) narrowed by `MD013: false`\n(line-length — Prettier owns wrap), `MD024: { siblings_only: true }`\n(duplicate headings allowed under different parents), `MD033: false` (inline\nHTML), `MD041: false` (first-line-heading), and `MD060: false` (GFM table\nstyle — Prettier owns table reflow).\n\n**Canonical runner: `markdownlint-cli2`.** It is the maintained, recommended\nrunner and two of the three consumers already run it; new adopters standardize\non it (classic `markdownlint` consumes the same `MDxxx` rule IDs, so the base\nis compatible either way). markdownlint-cli2 resolves `extends` to a package\npath, so a consumer's local config reduces to the extend plus repo-specific\n**ignore globs** — which stay local, since generated/vendored trees differ per\nrepo (`.markdownlint.jsonc`):\n\n```jsonc\n// .markdownlint.jsonc — extend the shared content base\n{\n  \"extends\": \"mandrel-platform/markdownlint.base.jsonc\"\n  // ...repo-specific rule overrides (rare)\n}\n```\n\n```jsonc\n// .markdownlint-cli2.jsonc — ignore globs stay consumer-local\n{\n  \"ignores\": [\"CHANGELOG.md\"]\n}\n```\n\nThe base carries **content rules only, never `ignores`**. Excluding the\nrelease-please-generated `CHANGELOG.md` is a mandatory per-consumer ignore\ndocumented in\n[`docs/reusable-workflows.md`](docs/reusable-workflows.md). markdownlint gates\ncontent rules Prettier does not — the two are **complementary**, not\nsubstitutes: keep both.\n\n#### `secretlint.base.json`\n\nThe single source of truth for the **local pre-commit secret-scan mirror**\nof the CI gitleaks tiers — the shift-left dev-experience twin that catches\na secret at `git commit` time before it ever reaches the CI gitleaks gate.\nThe ruleset ships the recommended preset\n(`@secretlint/secretlint-rule-preset-recommend`); single-sourcing it here\nmeans a rule change lands fleet-wide in one place instead of drifting across\neach consumer's hand-copied `.secretlintrc.json`.\n\nsecretlint's `.secretlintrc` has **no native file-level `extends`**, so\nconsumers adopt this base one of two ways. The **husky hook *wiring* stays\nconsumer-local** either way — only the *ruleset* is single-sourced.\n\n**Reference the base directly from the husky hook (simplest — no local\nconfig file).** Point the pre-commit hook's `--secretlintrc` at the package\nexport; there is no `.secretlintrc.json` to maintain:\n\n```sh\n# .husky/pre-commit — scan staged files against the shared ruleset\nnpx secretlint --secretlintrc node_modules/mandrel-platform/config/secretlint.base.json --maskSecrets \"$(git diff --cached --name-only)\"\n```\n\n**Or import + spread into a JS-module `.secretlintrc.mjs`** when the repo has\ngenuine, explicitly-listed local overrides (an extra rule, an\n`allowMessageIds` suppression). Keep the local file to the base plus **only**\nthe deltas:\n\n```js\n// .secretlintrc.mjs — spread the shared ruleset, layer repo-specific deltas only\nimport base from \"mandrel-platform/secretlint.base.json\" with { type: \"json\" };\n\nexport default {\n  ...base,\n  // repo-specific overrides ONLY — e.g. an additional rule, or an\n  // allowMessageIds suppression for a known-safe fixture. Leave empty\n  // to inherit the shared ruleset verbatim.\n};\n```\n\n> **Local mirror, not a CI replacement.** This base is the *local* shift-left\n> scanner; the blocking secret-scan gate remains the shared CI gitleaks\n> tiers (see [reusable-workflows.md](docs/reusable-workflows.md)). Swapping\n> the local tool for a local↔CI gitleaks-parity scan is a deliberate separate\n> question, out of scope for this base.\n\n#### `size-limit.base.json`\n\nsize-limit's own config is a per-entry **array** whose paths and limits\nare inherently repo-specific, so the base ships the shared *check\noptions* (gzip sizing, `running: false`). A JSON config can't `import` the\nbase, so use a JS-module config (`.size-limit.js`) that imports the base\nJSON and spreads it into each entry:\n\n```jsonc\n// .size-limit.js — spread the base into each entry\nimport base from \"mandrel-platform/size-limit.base.json\" with { type: \"json\" };\n\nexport default [\n  { ...base, path: \"dist/index.js\", limit: \"10 kB\" },\n  { ...base, path: \"dist/cli.js\", limit: \"25 kB\" }\n];\n```\n\n#### `lighthouse.base.json` / `lighthouse-thresholds.base.json`\n\nLighthouse has **two runner mechanisms** in the fleet — `@lhci/cli`\n(`lighthouserc`) and a bespoke puppeteer + baseline-drift script (collect a\nLighthouse result programmatically, diff category scores against a checked-in\nbaseline JSON). Neither can consume the other's config shape natively, so the\npackage ships **two bases**:\n\n- **`lighthouse-thresholds.base.json`** — the **mechanism-neutral** score\n  floors (`categories.performance` / `.accessibility` / `.best-practices` /\n  `.seo`, each a bare `0.0`–`1.0` number). This is the shared source of\n  truth both mechanisms read. Runner-agnostic on purpose: it has no LHCI\n  `ci.assert` wrapper and no puppeteer-script wiring, just the floors.\n- **`lighthouse.base.json`** — the **LHCI wrapper**. Ships the shared `ci`\n  block (collect settings + the four category assertions on the\n  `lighthouse:recommended` preset) for `@lhci/cli` consumers. Its\n  `categories:*` `minScore` values are sourced from\n  `lighthouse-thresholds.base.json` — keep the two in sync when a floor\n  changes.\n\n**LHCI consumers** (`@lhci/cli`) deep-merge `lighthouse.base.json` and add\nrepo-specific `ci.collect.url` / `ci.collect.staticDistDir`:\n\n```jsonc\n// lighthouserc.js — deep-merge the base, add repo-specific collect targets\nimport base from \"mandrel-platform/lighthouse.base.json\" with { type: \"json\" };\n\nexport default {\n  ci: {\n    ...base.ci,\n    collect: {\n      ...base.ci.collect,\n      staticDistDir: \"./dist\"\n    }\n  }\n};\n```\n\n**Puppeteer / baseline-drift consumers** (no `@lhci/cli`, no `lighthouserc`)\nextend `lighthouse-thresholds.base.json` directly — read the bare category\nfloors and gate the collected result against them, independent of any LHCI\nconfig shape:\n\n```jsonc\n// scripts/lighthouse-baseline.mjs — read the shared floors, gate the collected result\nimport thresholds from \"mandrel-platform/lighthouse-thresholds.base.json\" with { type: \"json\" };\n\nfor (const [category, minScore] of Object.entries(thresholds.categories)) {\n  const score = lighthouseResult.categories[category].score;\n  if (score < minScore) {\n    throw new Error(`${category} score ${score} below floor ${minScore}`);\n  }\n}\n```\n\n> **Budgets stay consumer-tunable.** These bases standardize *which*\n> tools run and their shared defaults — not *what each tool gates on*\n> per consumer. Override any threshold, score floor, or budget locally;\n> the base provides the floor, the consumer sets the ceiling.\n\n### Edge-security middleware units\n\nThe package ships reusable **per-env edge-security middleware** so the next\nconsumer inherits the closed-allowlist CORS, security-header, and app-layer\nrate-limit invariants instead of re-deriving them. They are distributed through\nthe **npm package-export channel** (the same channel as the base configs and\n`scripts/*`), under `mandrel-platform/edge-security`:\n\n| Sub-path                                              | Unit                                                                 |\n| ----------------------------------------------------- | -------------------------------------------------------------------- |\n| `mandrel-platform/edge-security`                      | Barrel — re-exports every unit below.                                |\n| `mandrel-platform/edge-security/cors-astro.mjs`       | `createAstroCors()` — closed-allowlist CORS as Astro middleware.     |\n| `mandrel-platform/edge-security/cors-hono.mjs`        | `createHonoCorsOptions()` — closed-allowlist options for `hono/cors`.|\n| `mandrel-platform/edge-security/security-headers.mjs` | `buildSecurityHeaders()` / `applySecurityHeaders()` — CSP/HSTS/XFO/XCTO/Referrer-Policy. |\n| `mandrel-platform/edge-security/rate-limit.mjs`       | `createRateLimiter()` + Astro/hono adapters — fixed-window app-layer limiter. |\n| `mandrel-platform/edge-security/allowlist.mjs`        | `createAllowlist()` — the shared closed-allowlist origin resolver.   |\n\n**Two CORS variants, by design.** CORS code legitimately differs by\narchitecture: domio drives an Astro `(context, next)` middleware, while\nathportal / swarm-os use `hono/cors`. Both variants ship — the divergence is\npreserved, not flattened into one form. Both inherit the same closed allowlist\nand the **no-wildcard-with-credentials invariant, enforced by construction**:\nbuilding either unit with `['*']` + `credentials: true` throws at construction\ntime (before a request is ever served), so a consumer cannot mis-configure the\nforbidden `Access-Control-Allow-Origin: *` + `Access-Control-Allow-Credentials: true`\nshape.\n\n**Per-env allowlist.** Each unit takes the allowed-origin set for the current\ndeployment environment, so the same code path applies in production and preview:\n\n```ts\n// Astro — src/middleware.ts\nimport { defineMiddleware, sequence } from \"astro:middleware\";\nimport { createAstroCors } from \"mandrel-platform/edge-security/cors-astro.mjs\";\nimport { applySecurityHeaders } from \"mandrel-platform/edge-security/security-headers.mjs\";\nimport { createAstroRateLimit } from \"mandrel-platform/edge-security/rate-limit.mjs\";\n\nconst cors = createAstroCors({\n  allowedOrigins: import.meta.env.PROD ? [\"https://godomio.com\"] : [\"http://localhost:4321\"],\n  credentials: true,\n});\nconst rateLimit = createAstroRateLimit({ limit: 100, windowMs: 60_000 });\n\nexport const onRequest = sequence(\n  defineMiddleware(cors),\n  defineMiddleware(rateLimit),\n  defineMiddleware(async (_ctx, next) => {\n    const res = await next();\n    applySecurityHeaders(res.headers);\n    return res;\n  }),\n);\n```\n\n```ts\n// hono — app entry\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { createHonoCorsOptions } from \"mandrel-platform/edge-security/cors-hono.mjs\";\nimport { createHonoRateLimit } from \"mandrel-platform/edge-security/rate-limit.mjs\";\n\nconst app = new Hono();\napp.use(\"*\", cors(createHonoCorsOptions({ allowedOrigins: [\"https://athportal.com\"], credentials: true })));\napp.use(\"*\", createHonoRateLimit({ limit: 100, windowMs: 60_000 }));\n```\n\n> **Headers / rate-limit are framework-agnostic.** `buildSecurityHeaders()`\n> returns a plain `Record<string,string>` you can spread onto any response, and\n> `createRateLimiter()` exposes a `check(request)` decision function with a\n> pluggable store (swap the default in-memory store for a Cloudflare KV /\n> Durable Object store in production). The Astro/hono adapters are thin wrappers\n> over those cores.\n\n---\n\n### `scripts/audit-check.mjs`\n\nDependency gate script with **two independent blocking conditions**. It exits\nnon-zero when *either* fires — a clean CVE scan does not excuse an unbounded\noverride, and vice versa:\n\n1. **CVE gate.** Detects the package manager from the committed lockfile —\n   `pnpm-lock.yaml` means pnpm, `package-lock.json` means npm — runs that\n   manager's audit over the production graph, and blocks on any\n   **unsuppressed** High or Critical vulnerability in it. This is the stricter\n   athportal/swarm-os policy: all unsuppressed High/Critical are blocking, not\n   just fixable ones. The two managers report in different schemas (a legacy\n   `advisories` map; npm v7+ nests advisories under `vulnerabilities`), and\n   both are read — a report matching **neither** fails the gate closed rather\n   than reading as clean, as does output that does not parse as JSON at all\n   (an audit that never ran exits 0 with an empty stdout, which is not a\n   clean graph).\n2. **Unbounded-override lint.** Blocks on any dependency override written\n   without an upper bound — **independently of the CVE scan, and with zero\n   CVEs present**. It runs *first*, before any audit is invoked at all.\n\n> Neither lockfile present, or both, is a configuration error the gate reports\n> and exits non-zero on. It will not guess which dependency graph its verdict\n> is about.\n\nKnown/accepted CVEs are suppressed via a **dated, self-expiring allowlist**\n(`audit-allowlist.json` in the project root). Expired entries are treated as\nun-suppressed and cause the script to exit non-zero — forcing teams to\nperiodically re-evaluate accepted risk. Advisory ids compare\ncase-insensitively, so the canonical `GHSA-7w5x-hrqm-74c2` form GitHub renders\nsuppresses under either package manager.\n\n**Consumer usage (`package.json`):**\n\n```jsonc\n{\n  \"scripts\": {\n    \"audit:check\": \"node node_modules/mandrel-platform/scripts/audit-check.mjs\"\n  }\n}\n```\n\nOr copy the script into your repo's `scripts/` directory when you need\nlocal customization (and pin a semver range on `mandrel-platform` so drift\nis detected by Renovate).\n\n**Flags:**\n\n| Flag | Default | Purpose |\n| ---- | ------- | ------- |\n| `--allowlist <path>` | `audit-allowlist.json` in the invoking directory | Where to read the dated CVE allowlist from. An absent file means \"no suppressions\". |\n| `--package-json <path>` | `package.json` in the invoking directory | Which manifest the unbounded-override lint reads. Point it at a workspace member's manifest to lint that package instead of the root. An absent file skips the lint (the audit still runs). |\n\n**Unbounded-override lint:**\n\nAn override *rewrites* a transitive dependent's declared range, so whatever is\nwritten there is the only thing standing between your tree and the next release\nof that package. Written open-endedly, the committed lockfile becomes the sole\npin — and the moment anything re-resolves (a fresh install, a lockfile-less CI\nleg, a dependent's own bump) the newest release wins and can cross a major.\nNothing else in the toolchain lints for this, so the gate names each offending\noverride and its bound, then exits 1.\n\nEvery override field is checked — `overrides`, `resolutions`, and\n`pnpm.overrides` — including dependent-scoped nested objects, which are\nreported by their full path (`overrides.some-dep.left-pad`).\n\n| Bound | Verdict | Why |\n| ----- | ------- | --- |\n| `1.2.3`, `=1.2.3` | ✅ bounded | Exact pin. |\n| `^1.2.3`, `~1.2.3` | ✅ bounded | Cannot cross a major on its own. |\n| `1.2.x`, `1.*` | ✅ bounded | The major is fixed; only lower positions float. |\n| `>=1.2.3 <2.0.0`, `1.2.3 - 2.0.0` | ✅ bounded | Carries an explicit upper bound. |\n| `npm:other-pkg@^1.2.3` | ✅ bounded | An alias is judged on the range it carries. |\n| `>=1.2.3`, `>1.2.3` | ❌ blocking | A bare lower bound; the next major satisfies it. |\n| `*`, `x`, `x.x`, `x.x.x`, `*.*.*` | ❌ blocking | npm reads a wildcard major as \"any version\". |\n| `latest`, `next` | ❌ blocking | A dist-tag pins nothing. |\n| `github:owner/repo`, `git+https://…`, `workspace:*`, `file:../pkg` | ❌ blocking | Non-registry specifiers re-resolve to whatever the source holds at install time. A git URL carrying an explicit `#semver:<range>` fragment is judged on that range instead. |\n| `^1.0.0 \\|\\| >=2.0.0` | ❌ blocking | A `\\|\\|` union is only as bounded as its loosest arm. |\n\nTo fix a blocking override, give the bound an upper limit — `\"^1.2.3\"`,\n`\"~1.2.3\"`, or `\">=1.2.3 <2.0.0\"`. There is no allowlist for this check: the\nallowlist suppresses CVEs only.\n\n**Allowlist format (`audit-allowlist.json`):**\n\n```jsonc\n[\n  {\n    \"id\": \"GHSA-xxxx-xxxx-xxxx\",\n    \"reason\": \"No fix available; mitigated by X\",\n    \"expires\": \"2026-12-31\"\n  }\n]\n```\n\n- `id` — GitHub Security Advisory ID (`GHSA-*`) or CVE ID (`CVE-*`).\n- `reason` — Human-readable explanation of why this CVE is accepted.\n- `expires` — ISO 8601 date (`YYYY-MM-DD`). **Required.** Entries whose\n  expiry date is in the past cause the script to exit non-zero.\n\n---\n\n### Guardrail & policy-check scripts\n\nBeyond the CVE gate, the package ships a set of **dependency-free guardrail\nlints** (`node`-only, nothing to install) that enforce cross-repo CI and\nsecurity invariants. Several are already wired into the reusable workflows, so a\nconsumer that adopts those inherits the check for free; each is also runnable\nstandalone (`node node_modules/mandrel-platform/scripts/<name>.mjs`) or copyable\ninto a repo's own `scripts/`.\n\n| Script | Enforces | Wired into |\n| ------ | -------- | ---------- |\n| `check-coverage-threshold.mjs` | Coverage floor (lines/statements/functions/branches) read from `coverage-summary.json`; threshold `0` disables the gate. | `pr-quality.yml` (unit tier) |\n| `check-destructive-migration.mjs` | Blocks `DROP` / `TRUNCATE` / `ALTER … DROP` (and Drizzle `.dropTable()`) in migration files unless a reviewer applies the override label. | `pr-quality.yml` (migration-guard tier, opt-in) |\n| `check-workflow-portability.mjs` | Catches cross-repo footguns in reusable workflows / composite actions: relative `uses:` paths, `${{ }}` in `workflow_call` input metadata, and lagging first-party pins. | `pr-quality.yml` + `ci.yml` |\n| `check-action-pins.mjs` | Ratchet requiring every third-party Action to be pinned to a full 40-char commit SHA (tag-swap defence); local and first-party refs are exempt. | `ci.yml` |\n| `check-required-contexts.mjs` | Validates that every branch-protection required check in `main-protection.json` maps to a real CI job — no phantom required checks. Also **warns** (never blocks) when the caller file / display `name:` / caller job id diverge from the canonical `ci.yml` / `CI` / `ci` triplet ([details](docs/reusable-workflows.md#canonical-caller-naming-the-ciyml--ci--ci-triplet)). | `ci.yml` |\n| `check-docs-staleness.mjs` | Lints markdown/JSON docs for known staleness patterns (stale URLs, expired dates, dead runbook paths); suppressible per-rule. | standalone |\n| `check-repo-settings.mjs` | Cross-consumer dashboard for the GitHub-side repo-settings baseline (merge methods, squash source, auto-merge, Actions default token permissions, PR-approval-by-Actions) — see below. | standalone / `platform-sync --check-settings` |\n\n> **`config/main-protection.schema.json`** is the JSON Schema for the\n> branch-protection contract (`docs/runbooks/main-protection.json`) — required\n> status checks, the aggregator job, upstream jobs, and enforcement flags.\n> `check-required-contexts.mjs` validates the contract against the actual\n> workflow job graph; see the\n> [branch-protection runbook](docs/runbooks/branch-protection-setup.md).\n\n> **`config/repo-settings.schema.json`** is the JSON Schema for the\n> repo-settings baseline contract (`docs/runbooks/repo-settings.json`),\n> sibling to `main-protection.schema.json` — merge methods, squash-commit\n> source, auto-merge/delete-branch-on-merge, Actions default workflow token\n> permissions, and whether Actions can approve pull requests. Fleet baseline\n> decided 2026-07-01 (see `docs/decisions.md`): squash-only merges, squash\n> source `PR_TITLE`/`PR_BODY`, auto-merge + delete-branch-on-merge on, Actions\n> default token permissions `read`, `can_approve_pull_request_reviews` off.\n>\n> **Because `squashMergeCommitMessage` is `PR_BODY`, PR templates must stay\n> commit-body-safe.** The PR description becomes the literal squash-commit\n> body on `main`, which `release-please` and `commitlint` then parse — a\n> template that injects checklist boilerplate, HTML comments, or\n> non-conventional-commit prose into that body will land in commit history and\n> can break changelog generation or commitlint's body rules. Keep PR templates\n> to short, commit-message-safe prose, or put checklists in sections authors\n> delete before merge.\n>\n> **Check + apply.** `scripts/check-repo-settings.mjs` is the GitHub-side\n> drift dashboard (mirrors `check-pin-drift.mjs`'s shape: data-driven consumer\n> registry — reuses `scripts/pin-drift-consumers.json` — injectable `gh`\n> runner, `--json`/`--strict`). `scripts/platform-sync.mjs` gained a\n> settings mode for the per-consumer check/apply flow:\n>\n> ```bash\n> # Report drift for one consumer against the baseline — never mutates, never\n> # fails the exit code unless the read itself errors (standing decision #10).\n> node scripts/platform-sync.mjs --check-settings --consumer-repo dsj1984/domio\n>\n> # Same read, then PATCH the drifted fields to match the baseline.\n> node scripts/platform-sync.mjs --apply-settings --consumer-repo dsj1984/domio\n>\n> # Preview what --apply-settings would PATCH without mutating anything.\n> node scripts/platform-sync.mjs --apply-settings --dry-run --consumer-repo dsj1984/domio\n> ```\n>\n> Both commands accept `--baseline <path>` (default:\n> `docs/runbooks/repo-settings.json`) and `--json` for a machine-readable\n> envelope. **Non-blocking by design** (standing decision #10, same posture as\n> the pin-drift dashboard and `check-ruleset.mjs`): drift is reported, not a\n> hard gate — it never fails CI on a consumer's `main`. Branch-protection\n> ruleset drift is out of scope here (see the companion `check-ruleset.mjs`\n> story); this contract covers repo-settings only.\n\n---\n\n## Renovate preset\n\nThe shared Renovate preset (`default.json`, also exposed at\n`config/renovate.json`) is consumed by extending it from a consumer's\n`renovate.json`:\n\n```jsonc\n{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"github>dsj1984/mandrel-platform\"]\n}\n```\n\nIt sets a weekly Monday schedule, a 3-day `minimumReleaseAge`, patch/minor\nauto-merge with major updates gated behind the Dependency Dashboard, and\ngrouping rules for the common dependency families (Cloudflare, Sentry, Clerk,\nESLint, Vitest, Playwright, Astro).\n\n### Auto-bumping `mandrel-platform` `uses:` pins\n\nThe preset ships a `github-actions` manager rule that bumps SHA-pinned\nreferences to this repo's reusable workflows and composite actions —\n`uses: dsj1984/mandrel-platform/...@<sha>` — so consumers stop drifting on\nstale pins (e.g. `pr-quality.yml@v0.3.1` while `deploy-cloudflare.yml@v0.9.0`).\nThe bumps are grouped into a single **\"mandrel-platform workflows\"** PR and\nride the preset's weekly window + 3-day `minimumReleaseAge`.\n\n**Required:** Renovate only updates a **bare-SHA** pin when the consumer adds a\nversion comment after it. Pin with a trailing `# <tag>` comment so Renovate can\nresolve the current release and open the bump PR:\n\n```yaml\n# ✅ Renovate will bump this pin\n- uses: dsj1984/mandrel-platform/.github/actions/setup-toolchain@869bbbf21faa2cdf6045d64a9c3347b928e196fe # v0.10.0\n\n# ❌ Bare SHA without a version comment — Renovate leaves it alone\n- uses: dsj1984/mandrel-platform/.github/actions/setup-toolchain@869bbbf21faa2cdf6045d64a9c3347b928e196fe\n```\n\nSee the [Dependency Update runbook](docs/runbooks/dependency-update.md) for the\noperator-facing review flow.\n\n---\n\n## pnpm supply-chain config\n\n`config/pnpm-workspace.supply-chain.yaml` is the canonical pnpm-native\nsupply-chain hardening block: `blockExoticSubdeps`, `trustPolicy`, and\n`minimumReleaseAge`. Unlike the JSON config bases above, `pnpm-workspace.yaml`\nhas no whole-file `extends`, so this ships as a copy-merge fragment rather\nthan an importable module — merge its three keys into your consumer's\n`pnpm-workspace.yaml` alongside any existing `packages:`/catalog entries:\n\n```yaml\n# pnpm-workspace.yaml\npackages:\n  - \"apps/*\"\n  - \"packages/*\"\n\n# Merged from mandrel-platform/pnpm-workspace.supply-chain.yaml\nblockExoticSubdeps: true\ntrustPolicy: no-downgrade\nminimumReleaseAge: 10080\n```\n\n`minimumReleaseAge` here is **7 days (10080 minutes)** — intentionally\nstricter than the platform's 3-day Renovate `minimumReleaseAge` gate (see\n[Renovate preset](#renovate-preset) above). Renovate's value governs when a\nbump *PR* is raised; pnpm's value governs when `pnpm install` will *resolve*\na version at all, and 7 days is also the floor the Semgrep `p/default`\nruleset enforces. See\n[`docs/reusable-workflows.md`](docs/reusable-workflows.md#pnpm-supply-chain-config-vs-renovate-minimumreleaseage)\nfor the full reconciliation rationale.\n\n---\n\n## Adoption CLI (`platform-sync`)\n\n`scripts/platform-sync.mjs` is the operator-facing analogue of `mandrel sync`:\na single idempotent command a **consumer** repo runs to adopt mandrel-platform\nor to repair the three drift states the founding audit flagged (split pins,\nlocal-copy runbooks, un-simplified config). Run it from the consumer repo root:\n\n```bash\n# Pin every first-party `uses:` to a release and reconcile config + runbooks\nnode node_modules/mandrel-platform/scripts/platform-sync.mjs --ref mandrel-platform-v0.10.0\n\n# Preview the plan without touching disk\nnode node_modules/mandrel-platform/scripts/platform-sync.mjs --ref mandrel-platform-v0.10.0 --dry-run\n```\n\nWhat it does (each step is idempotent — a re-run on an already-synced repo\nreports `already in sync`):\n\n1. **Pins workflow SHAs.** Resolves `--ref` (a release tag or branch) to its\n   commit SHA via\n   `git ls-remote`, then rewrites every\n   `uses: dsj1984/mandrel-platform/...@<sha>` reference in the consumer's\n   `.github/workflows/` and `.github/actions/` to that single SHA. External\n   actions (`actions/checkout`, …) are left untouched. The trailing\n   `# <ref>` comment is refreshed so the pin stays human-auditable and the\n   Renovate auto-bump rule above can track it.\n2. **Checks CI-caller naming** (advisory only, Story #173). Reports whether\n   `.github/workflows/ci.yml` matches the canonical caller triplet — file\n   `ci.yml`, display name `CI`, caller job id `ci` (required context\n   `ci / ci-required`; see\n   [reusable-workflows.md § \"Canonical caller naming\"](docs/reusable-workflows.md#canonical-caller-naming-the-ciyml--ci--ci-triplet)).\n   Never renames or rewrites anything — a caller rename must land atomically\n   with its own branch-protection ruleset context update, which is a\n   deliberate per-consumer Story, not an automatic sync side-effect.\n3. **Materializes runbook reference stubs** (§2.2 *link, don't copy*). Copies\n   the thin stubs from `templates/runbooks/` into the consumer's\n   `docs/runbooks/` **only when absent** — an already-adopted stub is skipped,\n   and a full local copy (no stub marker) is surfaced as a warning to\n   reconcile by hand, never silently overwritten.\n4. **Materializes workflow caller templates.** Copies canonical callers from\n   `templates/workflows/` (e.g. `deploy-staging.yml`, the one-paved-road\n   `workflow_run` caller for `deploy-cloudflare.yml`'s CI-green guard — see\n   [`docs/reusable-workflows.md`](docs/reusable-workflows.md#deploy-cloudflareyml))\n   into the consumer's `.github/workflows/` — same link-don't-copy semantics:\n   only when absent, and a hand-authored file without the template marker is\n   surfaced as a warning rather than overwritten.\n5. **Reconciles `extends`.** Prepends `github>dsj1984/mandrel-platform` to the\n   consumer's Renovate `extends` and `mandrel-platform/tsconfig.base.json` to\n   its `tsconfig.json` `extends`. The SSOT goes first so the consumer's own\n   later entries continue to override it.\n\n**Flags:** `--ref <ref>` (required), `--dry-run`, `--sha <40-hex>` (skip\nnetwork ref resolution — offline/test mode), `--consumer <dir>` (default:\ncwd), `--templates <dir>`, `--repo <owner/repo>`, `--json` (machine-readable\nresult envelope on stdout).\n\n---\n\n## Drift control & auto-repair\n\nThe platform actively keeps consumers converged rather than trusting them to\nstay in sync by hand. Two scheduled workflows run this loop against the consumer\nregistry in\n[`scripts/pin-drift-consumers.json`](scripts/pin-drift-consumers.json):\n\n- **Detect** — [`pin-drift.yml`](.github/workflows/pin-drift.yml) (weekly +\n  `workflow_dispatch`) runs `check-pin-drift.mjs`, a cross-consumer dashboard\n  that flags split pins (multiple mandrel-platform SHAs in one repo), release\n  lag, npm lag, and npm-vs-workflow surface skew. Advisory by default; `--strict`\n  turns drift into a failure. See the\n  [pin-drift dashboard runbook](docs/runbooks/pin-drift-dashboard.md).\n- **Repair** — [`platform-sync-repair.yml`](.github/workflows/platform-sync-repair.yml)\n  runs `platform-repair.mjs`, which clones each drifting consumer, runs\n  `platform-sync`, and opens (or updates) an **idempotent** repair PR on a stable\n  head branch. Requires a fine-grained `PIN_REPAIR_TOKEN` scoped to the consumer\n  repos' contents + pull-requests.\n\n`update-semgrep-rules.mjs` is a related maintenance script that vendors Semgrep's\n`p/default` ruleset — filtered to the languages actually in-repo — into\n`.semgrep/rules.json` against a pinned Semgrep version, so the SAST step in\n`pr-quality.yml` scans deterministically. Run it deliberately when bumping the\nruleset, not on every CI run.\n\n---\n\n## Runbook templates\n\n`templates/runbooks/` ships **copyable thin-stub** operator runbooks — one per\ncanonical runbook in [`docs/runbooks/`](docs/runbooks). The adoption model is\n*link, don't copy*: each stub links to the canonical process doc (the source of\ntruth) and carries only `<PLACEHOLDER>` slots for project-specific values, so an\nupstream process change is picked up by re-reading the link rather than\nre-authoring the stub. `platform-sync` materializes them for you — link-only, and\nnever clobbering a stub you have already filled in.\n\n| Stub | Canonical runbook |\n| ---- | ----------------- |\n| `deploy-promotion.md` | staging → production promotion |\n| `incident-response.md` | severity, escalation, postmortem |\n| `database-backup-restore.md` | backup, PITR, restore/rollback |\n| `observability.md` | logs, Sentry, uptime, metrics |\n| `post-deploy-smoke.md` | boot-smoke gate + diagnosis |\n| `environments-provisioning.md` | env model + provisioning steps |\n| `dependency-update.md` | Renovate, CVE gate, catalog |\n| `branch-protection-setup.md` | aggregator required-check model |\n\n---\n\n## Development\n\n```bash\n# Install dependencies (packageManager: pnpm@11.5.2)\npnpm install\n\n# Bootstrap agent scaffolding\npnpm run bootstrap\n\n# Run the guardrail-script test suite (node:test)\npnpm test\n```\n\nEvery script under `scripts/` (the guardrail lints, `platform-sync`,\n`platform-repair`, `update-semgrep-rules`) carries a colocated `*.test.mjs`\nsuite run by `pnpm test`. The `.agents/` tree is the Mandrel agent framework this\nrepo is developed with — dev-time only, and not shipped in the npm package.\n\n---\n\n## Package exports\n\n| Export                                          | Path                                  |\n| ----------------------------------------------- | ------------------------------------- |\n| `mandrel-platform/tsconfig.base.json`           | `config/tsconfig.base.json`           |\n| `mandrel-platform/biome.base.json`              | `config/biome.base.json`              |\n| `mandrel-platform/knip.base.json`               | `config/knip.base.json`               |\n| `mandrel-platform/stryker.base.json`            | `config/stryker.base.json`            |\n| `mandrel-platform/commitlint.base.mjs`          | `config/commitlint.base.mjs`          |\n| `mandrel-platform/dependency-cruiser.base.json` | `config/dependency-cruiser.base.json` |\n| `mandrel-platform/markdownlint.base.jsonc`      | `config/markdownlint.base.jsonc`      |\n| `mandrel-platform/secretlint.base.json`         | `config/secretlint.base.json`         |\n| `mandrel-platform/size-limit.base.json`         | `config/size-limit.base.json`         |\n| `mandrel-platform/lighthouse.base.json`         | `config/lighthouse.base.json`         |\n| `mandrel-platform/lighthouse-thresholds.base.json` | `config/lighthouse-thresholds.base.json` |\n| `mandrel-platform/pnpm-workspace.supply-chain.yaml` | `config/pnpm-workspace.supply-chain.yaml` |\n| `mandrel-platform/edge-security`                | `config/edge-security/index.mjs`      |\n| `mandrel-platform/edge-security/*`              | `config/edge-security/*`              |\n| `mandrel-platform/scripts/*`                    | `scripts/*`                           |\n","readmeFilename":"README.md"}