{"_id":"@geonosis/doctor","_rev":"27-4690bd96f35737487c5d496c1a1bfb29","name":"@geonosis/doctor","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@geonosis/doctor","version":"1.0.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@1.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"4ab1dc3e94b11b5b430fae00bb1b639f958aa1ab","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-1.0.0.tgz","fileCount":8,"integrity":"sha512-prjlumqnSCj72aLFBkSyvjCcuo91M2HE9geDPdbYpDK4fNZ6Ah+RcH4WWFQcbQiMuf8P+lDdkZt9shPiNUH5yQ==","signatures":[{"sig":"MEYCIQDASRIkts4I6THnXxy5t+vh0SvMNUxS2Atec0hVLiPfogIhAPrzp7eTAx1ZSnF7mK/KdDFQ07YdXdhcew6X08mLiNY7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76532},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/index.js"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_1.0.0_1788106382801_0.8583112584061767","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@geonosis/doctor","version":"1.1.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@1.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"6c40e8f4f214920d895793334823a1c3dc750485","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-1.1.0.tgz","fileCount":8,"integrity":"sha512-Yr3GGaSv/4Jt2PcyF2vIW6VzX1y8zK874CQmhOfmvSZtfdixMCE1BVf43bU3q+yXN+rlmUr9pPZNkOMqA4oVpw==","signatures":[{"sig":"MEUCIQD46oMZGdW+WXL1DMx1fBg/dL8+Qm6TkTa+XJOe7uTBiQIgDOH0e0onQU3fas+6+Sz507d+d0hyVv3OA5by2mpRc4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96585},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_1.1.0_1788114854302_0.6460159084432893","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@geonosis/doctor","version":"1.2.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@1.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"1fcf9ed56ba8765aa9555e27741b9e643dcc905b","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-1.2.0.tgz","fileCount":8,"integrity":"sha512-o2hTEDCLlQzBMdCgtq7Snyqs/BpTzhVqvWyhJ+neM72zSyhFe78WnHdtZvTBFxVz+E3PNzRwpoIS9wOBU6CBCg==","signatures":[{"sig":"MEQCIBfxpM+zqDkttxfpavYEIWXYoxhnw5MzHmfE8WRI/R+zAiBTJTFcG0LX4+53N/RXmLR6xKyNCUahXFgcx+5RYdLJDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98715},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_1.2.0_1788119040467_0.86370591266246","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@geonosis/doctor","version":"1.3.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@1.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"1bddf8447fddff352845d7812f08e5673d5137ec","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-1.3.0.tgz","fileCount":8,"integrity":"sha512-uTpj3p4HJ9BhrOyeG8/4KChUnx7un9auzN2GpYqA7nhwqeDVe3j4OszktwpHIwLGwG4DMRhFSQBKld82sUoriQ==","signatures":[{"sig":"MEUCIQCuygQDjWgSTSIp6rELJHjjxA7gPEw1EB8+O64rGVInQAIgW8j4pgNZD6Do0FptXp0GrRtnfTy5vojSFfuT3dldsmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129358},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_1.3.0_1788254761282_0.6942802907066199","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@geonosis/doctor","version":"1.4.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@1.4.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"89b20f40d1155aefe124024a25699df3394c8f35","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-1.4.0.tgz","fileCount":8,"integrity":"sha512-9FPqgkg85x2ZD43fPs/adZFXqR/MGiC4QxidhyU9/HTfUIgYvXL9zKaXKeUCJofm3Q5BFv1VfvvThGH87/M1xA==","signatures":[{"sig":"MEQCIFbr06dam9wZ2bij0QCjxjCKXEO/x9V6gPFmjkPSg1fLAiAYFjvTkRAwJioh4G3i1TIDc1hhHMgx0zQXjjmwYwomzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137915},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_1.4.0_1788268911161_0.5102114447411423","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@geonosis/doctor","version":"2.0.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"20d60dbc77f70a658763cdfb6c657df23b795b52","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.0.0.tgz","fileCount":8,"integrity":"sha512-1D6zIXuvcIWK93Vq25RvsO6aSSSyAaRAKwEg+X2n2CI5q/PmbzBn/v7DfhRblhSOOK5J2ozJiGu+NPbOiV0uOg==","signatures":[{"sig":"MEUCIEe8ET4GpGjykw4BH8tgzPPY921NNPJoSezidSP3MahzAiEA7smqc67WzFwHg3SEMq/cyFFNtHLgJ1ok9aC7vALB7tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176552},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.0.0_1788332155096_0.8798879158196746","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@geonosis/doctor","version":"2.1.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"459478c692d292033dd6e747ae4f045f7abe8ea4","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.1.0.tgz","fileCount":8,"integrity":"sha512-PBmGPnwaEal1DmUf6fsQJ3pTQimpHpNxkelbWzbZYh7A7FIynx5IErMPC2xrKn0TN0UG6pAKwRQ06IyuUL23Fg==","signatures":[{"sig":"MEUCICYrd0doHUVnstnt3BchqGCig7Eg1wVwjUyxhRI15oY/AiEAq2z5Z3zmjg8IGY4E+wpONrqtDijVEqTF/tKRasDEdLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184759},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.1.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.1.0_1788357162174_0.16676345378735036","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@geonosis/doctor","version":"2.2.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"470eb4798aebd5a987c71413c0b55583ab9c7e0d","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.2.0.tgz","fileCount":8,"integrity":"sha512-+J7SXIetHlEvzEqxpiLJ1RiRSTe2T58kh3PxryJ5Q0Tj1COtbFzeLN6+bSOTrVGg3p4ytRFo57TgmyPDYIZw9w==","signatures":[{"sig":"MEYCIQDIZSins/i0ZZUVK546Z2BvQsJgRydS4khHvDmlylE3JQIhAIoyjxdDxI3rfSHSTxfkoURbr5OOPqBZNib27w6URHIy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191196},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.2.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.2.0_1788369604310_0.8794882011799199","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@geonosis/doctor","version":"2.3.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"a4e8a7bd8e5ec05df8bc4e46b98fd375dc969706","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.3.0.tgz","fileCount":8,"integrity":"sha512-qrK+7W8SrKMbDGs5fVXbfFYnBNu0hFOtKyTcoILOhJ+2tr/8JlNHgpLSdUQ2Ge9JSTsWCJ2I9xGeoua4OzEkWw==","signatures":[{"sig":"MEQCIBJMH0/T6nt4t7zEVPbs6RvD9HDfyrvqOtyu6/gYu73gAiAzHOWC3IGuEOYI1jfJD9jDZ+IBwPZ70UsizWmjM6t6Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202654},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.3.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.3.0_1788419930570_0.46325477827269146","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@geonosis/doctor","version":"2.3.1","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.3.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"2243ab8fce7482d3d1cccc92cf1cea423a831193","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.3.1.tgz","fileCount":8,"integrity":"sha512-r2LWMKgGJJG0NdE3o7KpzCvBhR297ICq5S0K9fWp4wLn6r5PQZU4cfBkS1w722a79Bv/Y6paS4MLZfL1Urcz4Q==","signatures":[{"sig":"MEUCIBmPQ1hIM3UNwQjvJSsZrrAulFFUuYpldsfzRtUP1EwnAiEAkVfjTn/QmoIJSqdRM3nKpBof83FrXdzo/aif/3wMtNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202654},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.3.1"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.3.1_1788435302392_0.8221400792980347","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@geonosis/doctor","version":"2.4.2","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.4.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"fb87eab3b2137a1d4dbfbb613f4e50cd59f626b4","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.4.2.tgz","fileCount":9,"integrity":"sha512-UHiAgK0f1IlJxaxQWUddnzzncAZUqbCDXkdZZKoZxL7vvNIW6j8XFY8z28+IRXAyAZ8dRcg4xIGVeC/tt/IiGQ==","signatures":[{"sig":"MEYCIQDsp1uAwj3XSjDzrlNNhXxu0fDNzkxVwX6nSgK5avHWJQIhAOe7JLG06DSi1ezFKEOdxwIGtLRoo2ejuGMwapkX34d1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269347},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.4.2"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.4.2_1788444814269_0.3149553295386216","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@geonosis/doctor","version":"2.4.3","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.4.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"5f571fcdf8067dc3284a8dcac8710a966ee6bf5b","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.4.3.tgz","fileCount":9,"integrity":"sha512-aI6rce7wajJskV3V0cPn9AFS8kp9nwhAjpWAQFBDk5lsZFDG1Ix+ySbeCUN5fl/BozceS2WB2A4kzokKPjMpfQ==","signatures":[{"sig":"MEYCIQC9InF1kFbAhLOV7V4ojd2Q808zbLio/8CC3t6J12oTuAIhANR1rrZ4RNIHKyDe+RB6aRzvBd3FZU0eOViUcroj7cq5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270255},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.4.3"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.4.3_1788566003796_0.7469254736834716","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@geonosis/doctor","version":"2.5.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.5.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"13d320910e6ae67ab1e22aa56db296b23912bdc6","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.5.0.tgz","fileCount":9,"integrity":"sha512-ezl/X2EQmZbOlkBN/RHNCf9Q/FuXLhQ0FA2goA+YlR0caq34ugSWoyvNDniKk4tVkNmcvZbqJVy3U7fDM+Oj7g==","signatures":[{"sig":"MEYCIQD0Rpql1C6gAtIg+R9e5GRu3SgQmpQUcAJoglosuLi1BQIhAKYc1e30jb2tQ3K6WS/tBMRLOiSMWpvXCfQHm1/0agae","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270315},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.5.0_1788595395153_0.286862599894677","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@geonosis/doctor","version":"2.5.1","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.5.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"e45a87ae140e469b826ad99bd08b224f68949f17","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.5.1.tgz","fileCount":9,"integrity":"sha512-B8863d7YEI6Rmz70nrckA1C2JLUa37c56rIUAKyPYkcm25hvndSg0qyH48OL3AvGkZlg9Oakz+5Z6S8Akn9W5g==","signatures":[{"sig":"MEUCICNovYuPZLTV6aLT0ySWjdeMxZQfGjGiYzStj5zERh7cAiEAnm8V5iMKqpgPvnwGWTABz5LXEEJgZ5zKT6+gCFct7tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272302},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.1"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.5.1_1788685758983_0.6804557008726526","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@geonosis/doctor","version":"2.5.2","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.5.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"18d00c58eddad9a47f337f0cce91552497a9f044","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.5.2.tgz","fileCount":9,"integrity":"sha512-a1MnLmwd1T3spPmch+cPCzZ0EitH2l/U+o+r5LwR2WnnPpiucLb7oCzb9JT1Q3o9bCCDQt3KYH3nKkrrMAw55w==","signatures":[{"sig":"MEUCIFwjS0VAjZMmk+eb/k0HbthhQMrhgbYis5EqHT+rujCzAiEAzrbkJJ7kadQqkRuUtXRIm/YarBddMVErfPV3kEaF8pI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272362},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.2"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.5.2_1788701277305_0.22189087886928727","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@geonosis/doctor","version":"2.5.3","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.5.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"8feb87c4118b5cd21f38871bd1c5cef12ee5897b","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.5.3.tgz","fileCount":9,"integrity":"sha512-Mi9Pq1gh8og0bNdKeWS2Lfq9jINtRMgqHAxXNIWOW66F9/rNXHO6IOyZR5a6a+3IFCVKEGz2iSuVE9KH6x1ihg==","signatures":[{"sig":"MEUCIQC1eQPL0mpWF8Rx46SDrRy2McHfpZpPXqxpmI86JKAHegIgQGdzmqds3LIT3D7j64P6QJZ+tvhww33HOOSC+5dBH1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272422},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.3"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.5.3_1788712653120_0.6453589674611244","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@geonosis/doctor","version":"2.6.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.6.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"49334f8fb8161f95299992d5d349044f0f2b4ba1","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.6.0.tgz","fileCount":9,"integrity":"sha512-G3c1XXuNA1ud7WYIF4c/nhgkm6DZXFSz8bIdxAoZYtscLEzbmooQjOm39l1kb7G7LitSxYaMsFDTPszIrkGOCQ==","signatures":[{"sig":"MEUCIEyuCibdcC1uqePceknp5662NS49xdKuYbQuZCRNJhKmAiEAojGxO8cW2odoxjPO2Z7PUZvUwNtFuaj7fdjy9cchSzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273915},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.6.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.6.0_1788776155673_0.0011503444679423769","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@geonosis/doctor","version":"2.6.1","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.6.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"75b429db368b1d2fb59bad292d6c10aeba033411","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.6.1.tgz","fileCount":9,"integrity":"sha512-H7kptUHoe7Xjl4xRZ+rysueO6u0ezQO9zcrnOIQzXpBXQLBjLQWXIUpVYezkzr5sfFX9rElt7KDa8M5jKVmeNQ==","signatures":[{"sig":"MEUCIC6sn6GEoDLbUKMqn2DWrkeBghjuHX6hUqMPXnTGHXG6AiEA30F5BhruDX/P2nQ49yM7fRXoGFSTQD9OmTQNr5nyDvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273975},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.6.1"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.6.1_1788803818985_0.0012331755590591076","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@geonosis/doctor","version":"2.7.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.7.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"29bcbf2579bd763aeef440a91dd44574703ffea3","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.7.0.tgz","fileCount":9,"integrity":"sha512-bORnl8kaTafZQ8NHpBWYB7KdIr1tlkINtUuj++j44IWZNnEtH7/qCzUEYFkvTGv/5eVav4CG8ovxPx/H9RsgCw==","signatures":[{"sig":"MEQCIAcK7jbGeQwgRqmvNKqFz87cTeZiOhW+bszXrwLpSqNhAiATzsIeeoI4c3jWioSrCN921NiOLnOXTUHedF3lIeBEIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279577},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.7.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.7.0_1789209389279_0.6685298897891356","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@geonosis/doctor","version":"2.8.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.8.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"72003e95e00c6f7f0de9f983a7696a17e3d0c176","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.8.0.tgz","fileCount":9,"integrity":"sha512-95rFH39CjRBvqT3fLu1Fxu8xn/JYKYrWaLDv7+SsFrFbvjYke3+MTHU32d6avhDefBFghKGmF6gxn/jiQM4DLQ==","signatures":[{"sig":"MEUCIA1BR8zv2O+596GrPlK66YdGGfD4c/xpbLJ7+sWE5jmAAiEA+CEjUu5Xqm+IDQ6tRDUYrWIfFpTv7YeZKTJsF+9Tv0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCYIyEM42Wrp8oZVjiGaikRIjU/fv8SxLbiRwJPPx8B+gIhAK80NEyXvHQkW6RqAePrXVjYopti8cSq7URqRQ/5x2U2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.8.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.8.0_1789421550382_0.44863793973585087","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@geonosis/doctor","version":"2.9.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.9.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"8a8cb5c4bdbc854a7be6e6de6b33a1125da9bec7","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.9.0.tgz","fileCount":9,"integrity":"sha512-nYAGk4F/G2RTkb8IApFaHuZFnbX6gsUgmFTRNuKMyG/so+NJyDluvb13oNfvgFX2fuvMoEsVrcg6z3fUPAgRdA==","signatures":[{"sig":"MEYCIQCBfwg8tyCvzm2i0LNEHHXsad4bKTfg5Bs0XSYWslNjMgIhAMpnhZBEFvqDPUcJ3nI6HLdAw/YNLrs7JozHmwS4FqYZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEmx3RP8ced309jUq4jJQByYbYAwpALIeyQvSScNkOUjAiAHDpPC+1GxNEr3gv3CkW88sBLAuJMNPui9RkXG1jMIow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279613},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.9.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.9.0_1789468604212_0.13358583533821866","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@geonosis/doctor","version":"2.10.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.10.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"a627cc28f44a1fcc3f61ed28b6fd1f82f7ffc7f0","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.10.0.tgz","fileCount":9,"integrity":"sha512-fKxna0Zj5uxOUeQjYzh+Dl+8k4QcjjtY8IFF9mZXXaqwjpe9pKbR4dyX96LzbR4g2yAc5lVvq1g8C2nKRYfrcQ==","signatures":[{"sig":"MEQCIEbq/vF4JH2f9fvyMKO6k5jvPk5o+elQaFXXUqtODt2JAiA0ti26tYIV7y9r5ThuDNg8+eLj1djiTvVB+r9tn4Jskg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCxKcRVkUprbptmKfqFWSPlLzYsRQWBxkfD/Lvn6KOk1gIgVFuPFXk97fKD3HQ3n2EgPj4S0Nd6JPZGZ3LfXrkDzDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279713},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.10.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.10.0_1789489779901_0.911660452949709","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@geonosis/doctor","version":"2.11.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.11.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"9ee55e194f8b132ebf61997cc47d1691d2047dbb","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.11.0.tgz","fileCount":9,"integrity":"sha512-3ZWY4rLKIgJZypXn/Gh1plHyoJHASXU/+TSk8wn2YZp+OeKJcZf0J+MkSZ0nM+AwZHImKdLjHfFCp1rm9BDuNg==","signatures":[{"sig":"MEUCIQD+x4QQ1JeaUWuNQIjYkmcKtre0nrdZ9LXQS2MNio0PkgIgIU1Wv2kA1YMXj4FE63FtCBrGop3Ucmmx3gZOgGRsPjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQY+aNu/Ztl0yfwguwre5hXawDSH1/ZWshzp/Zj9XvnwIhAObcoRkHbOwLhpLGncX/g9Ql+HpGyr4NKgfRsi3Ye8lS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327276},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.11.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.11.0_1790271845970_0.5280173386972811","host":"s3://npm-registry-packages-npm-production"}},"2.11.1":{"name":"@geonosis/doctor","version":"2.11.1","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.11.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"accd038c9e93e23c74793d9f614c08ffad334f2d","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.11.1.tgz","fileCount":9,"integrity":"sha512-WbJi0IZmAG2pCnQbFdANoQYqWIkMwHCqJXyLSSWNg8PqYAkMI+jw/8vFF01pRU8rgZZNo2OnLSz5KZF3WAAJ+g==","signatures":[{"sig":"MEYCIQCxiAPI/V73ORbf4qTvgkupC5cujzrpeKnlWISDO2/EmAIhANQvbyWDHSNfu+DS9ZhOai4Cq02qP0lhRvQDv1CmkdSZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICWzgHcL2VTv/7kgIg2rfiIvqpKDgagecPjpqF9+OpzEAiEA0j59DtCbrXRK164Z+hr1MqEu/Kpji3H4mWHKZPQxV8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327883},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.11.1"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.11.1_1790351386510_0.849773964492937","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@geonosis/doctor","version":"2.12.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.12.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"2b6cf633bcf44ce21207cc7c789e3d0440712269","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.12.0.tgz","fileCount":9,"integrity":"sha512-pD6MawLRuYWgriywons431RmntbkWpm81Ysi27PuFG9XWm1fUE8VUCX3jKHvLw4cj9QhJaO96iBxVsCAXF1o/g==","signatures":[{"sig":"MEUCIQDcE2O7lKZLjuyOtbjPDq/0v15qihURdXLOXJzokKlyLwIgQ9wVGeV/zjHLNjO67nEdSLzm9ZlVBnzc9LvBGY1bj1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5Kz3+QyP414Rv92AqdBt65dOuZNtkK8vbdSft9diWMAIhAP8GGFqUcnyKIXsq7XJRQQV+oakw6CF6gFJc8asHaA+A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327945},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/lint-parity":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.12.0"},"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.12.0_1790356170662_0.40145177128235066","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@geonosis/doctor","version":"2.13.0","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"license":"Apache-2.0","_id":"@geonosis/doctor@2.13.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"c516a04492b678dd4fd4943a9951ae19b9519cd7","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-2.13.0.tgz","fileCount":9,"integrity":"sha512-LEs9ahGUIzmRRv/9G2wAYXehTs/ZmF++Br3Bt+RxR0cINhHvNYTQitJDHQOEbqCX81kBR6gfDgf6s70XcTidxw==","signatures":[{"sig":"MEUCIQCWXijgGYcqWpxbF671JSuqAPmyutbGkQP/4Fru+wpRPwIgR8Pl1Kl4jMvxcX67TkQl/9bdlgrT54R9AntJtf89+kw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBSRugz982N8v05ARO2Z9DDDb8YR8mHEM3y+FYUMl6UkAiEAsOhW4Dc01/qlxW/jafedOjkyMXEJTFETRcnthiETZqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310854},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/ratchet":"2.13.0","@geonosis/release":"2.13.0","@geonosis/lint-parity":"2.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"tmp":"tmp/doctor_2.13.0_1790432674944_0.121675443205435","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@geonosis/doctor@3.0.0","bin":{"geonosis-doctor":"bin/geonosis-doctor.mjs"},"dist":{"shasum":"5cd973907c34ce77353250ca487624d7932d7ad8","tarball":"https://registry.npmjs.org/@geonosis/doctor/-/doctor-3.0.0.tgz","fileCount":70,"integrity":"sha512-+CvmjciY8Y+7hTB/N2RenYgT0qmp5yVjTP3dw+JEPQeUlTcUwCgkyZesFbH67+lF4wmR6XGgG1mHtpDNKEtm7A==","signatures":[{"sig":"MEUCIQCiFf/wWGjiJnojjTM5UV+BqFyt9Y7aihj6wPveR7cZsgIgYlrYN4kKyoXL1+1Kw8/z+6WIjbMMLMPluEWmTGC1QAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDfYce6DOn33y3wSFAvFAfKIQ2hQICZMBf2SkiQCUWB8wIgCog3mda/IqDaP4KjBu2eatNpBFcBAyvJFYpB5ICq2qY="}],"unpackedSize":336939},"main":"dist/index.js","name":"@geonosis/doctor","type":"module","types":"./dist/index.d.ts","engines":{"bun":"^1.4.2","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"bun ../../tooling/build-step.ts bun ../../tooling/bundle.ts","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"version":"3.0.0","_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","directories":{},"maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"dependencies":{"@geonosis/ratchet":"3.0.0","@geonosis/release":"3.0.0","@geonosis/lint-parity":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"oxlint":">=1.77"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/doctor_3.0.0_1790529079627_0.31458684255508707"}}},"time":{"created":"2026-08-30T16:13:02.628Z","modified":"2026-09-27T17:11:19.868Z","1.0.0":"2026-08-30T16:13:02.966Z","1.1.0":"2026-08-30T18:34:14.419Z","1.2.0":"2026-08-30T19:44:00.597Z","1.3.0":"2026-09-01T09:26:01.486Z","1.4.0":"2026-09-01T13:21:51.279Z","2.0.0":"2026-09-02T06:55:55.263Z","2.1.0":"2026-09-02T13:52:42.287Z","2.2.0":"2026-09-02T17:20:04.460Z","2.3.0":"2026-09-03T07:18:50.794Z","2.3.1":"2026-09-03T11:35:02.530Z","2.4.2":"2026-09-03T14:13:34.438Z","2.4.3":"2026-09-04T23:53:23.957Z","2.5.0":"2026-09-05T08:03:15.297Z","2.5.1":"2026-09-06T09:09:19.122Z","2.5.2":"2026-09-06T13:27:57.473Z","2.5.3":"2026-09-06T16:37:33.271Z","2.6.0":"2026-09-07T10:15:55.804Z","2.6.1":"2026-09-07T17:56:59.126Z","2.7.0":"2026-09-12T10:36:29.447Z","2.8.0":"2026-09-14T21:32:30.467Z","2.9.0":"2026-09-15T10:36:44.297Z","2.10.0":"2026-09-15T16:29:40.042Z","2.11.0":"2026-09-24T17:44:06.062Z","2.11.1":"2026-09-25T15:49:46.587Z","2.12.0":"2026-09-25T17:09:30.764Z","2.13.0":"2026-09-26T14:24:35.037Z","3.0.0":"2026-09-27T17:11:19.705Z"},"license":"Apache-2.0","homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/doctor","keywords":["oxlint","lint","doctor","monorepo","adoption","ratchet","ci"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/doctor"},"description":"The adoption doctor — declared ≠ loaded, enabled ≠ exercised, a baseline that grew, a runner whose exit code is the only verdict.","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"readme":"# @geonosis/doctor\n\nThrough the front door: `geonosis doctor` — the metapackage pins this and every other kit tool at\nONE version, and passes the exit code through unchanged.\n\nThe questions a version bump is not finished until something has asked. Most are ways enforcement\nhas reported **green while measuring nothing** — in real repos, for weeks at a time. `drift` asks\nwhether the gate is still there at all; `observability` and `deployed` ask the same question one\nlayer out, whether what a pipeline reported is what actually happened; `exams` and `seams` ask\nwhether an adoption can see the floors it took. `geonosis-doctor --help` lists every one.\n\n```bash\npnpm add -D @geonosis/doctor\nnpx geonosis-doctor\n```\n\nRun it **after every bump** and **in CI**. It exits 1 when any line is a FAIL or an UNJUDGED — a\nquestion it could not ask is not a pass — and 2 when the run could not be made at all.\n\n**A directory that is not a project is a 2, not a pass.** With no `package.json` and no\n`.oxlintrc.json` anywhere under the root there is nothing here to examine, and every line it would\nprint is about a gate that is not there. It used to answer `doctor PASS` at exit 0 off six SKIPs and\nthree vacuous OKs — from the tool whose thesis is that a SKIP is not a pass.\n\n```\ngeonosis-doctor [--root <dir>] [--only <check,…>] [--json] [--strict] [--baseline-against [<ref>]] [--oxlint <path>]\n```\n\n## One check, asked alone\n\n`geonosis-doctor --only loaded` runs that check and no other, in well under a second: a manifest read and a resolution per config. It exists because the doctor subsumed a consumer's own declared-vs-loaded script that lived in a 2.5 s local gate, and eleven seconds for every check cannot live there — so the question that catches a stale nested copy earliest had fallen out of the gate that runs most often (measured in a consumer, 2026-08-30: a per-workspace `bun add` left one workspace loading 1.0.0 against configs written for 1.1.0, and the script about to be deleted caught it). `--only loaded,runner` takes a list; a name the doctor does not have is refused with the ones it does. A `loaded` FAIL names the remedy: `geonosis update --to <version>`, which removes the nested copies and reinstalls.\n\n## The checks\n\n### `loaded` — declared ≠ loaded\n\noxlint resolves a `jsPlugins` specifier from the **config file's** directory, not the working\ndirectory. A nested `apps/<ws>/node_modules/@scope/plugin` left behind by a per-workspace install\ntherefore runs while every `package.json` and the lockfile say a different version. One consumer\nmeasured a whole bug report against 0.3.0 on a repo pinned to 0.4.0, and nothing in either repo\ncould have told them.\n\nSo for every `.oxlintrc.json` in the tree that names a `@geonosis/*` plugin, this resolves that\nplugin **from the config's own directory**, imports it, reads `meta.version`, and compares it to\nthe version the nearest manifest up from there declares:\n\n```\nOK   apps/web/.oxlintrc.json: @geonosis/… loaded 0.6.0 = declared 0.6.0 (apps/web/package.json)\nFAIL apps/web/.oxlintrc.json: @geonosis/… loaded 0.3.0, declared 0.6.0 (apps/web/package.json)\n     — a nested copy at apps/web/node_modules/@geonosis/…\n```\n\nIt then lists every copy **resolution** reaches, one question per workspace directory. Never a\n`find`: on pnpm the entries under `node_modules/@scope/` are symlinks into `.pnpm/`, which keeps\nevery version ever installed, so counting directories answers 7 on a tree that is perfectly correct\nand 0 with the store excluded. Resolution is the only form of the question that is true on bun,\nnpm and pnpm alike.\n\nA declared range this check cannot read is a **FAIL**, not a pass. A version it cannot judge is a\nrefusal.\n\n#### A geonosis bin a git hook cannot start\n\nEvery committed hook — `lefthook.yml`, `.husky/*`, `.githooks/*` — is read, and a line running a\ngeonosis bin through `pnpm`, `npx`, `bunx` or `yarn` is a **FAIL** naming the direct call that\nreplaces it.\n\nA git hook's PATH is not the shell's: no nvm shim, no corepack shim, nothing a version manager put\nthere. A Medusa storefront's first hooked commit was \"refused\" on 2026-08-30 and the ledger never ran — `pnpm`\nwas not found, and the sentence its author read was a version manager's failure wearing a gate's\nrefusal costume. That is the worst shape a gate has, because it is indistinguishable from the gate\nworking. `node_modules/.bin/<bin>` is linked by every package manager and needs nothing on PATH.\n\nA hook file naming no geonosis bin is a **SKIP** with the sentence, never a vacuous OK.\n\nThe FAIL names what the fix costs elsewhere: knip's lefthook plugin does not resolve\n`node_modules/.bin/<bin>` back to the package that ships it, so taking this refusal makes knip call\nthat dependency unused. The line carries the `ignoreDependencies` entry that answers it, to be added\nin the same commit — a consumer told to do one thing by one gate and undo it by another does\nneither (#176).\n\nIt is a `loaded` line, not a `drift` one: it reads a committed file and nothing else, and\na Workers + D1 app's fast tier runs `--only loaded`, so as a drift line it fired in CI and never locally.\n\n### `group` — one version, one copy\n\nThe packages published on ONE version, asked of every workspace: one copy repo-wide, and one number\nper workspace. A consumer carried `@geonosis/visual-diff` at 1.1.0 and 1.4.0 in one tree while\nevery other line read green, because they are all scoped to the plugin a config names (#158).\nMembership ships with the kit; a repo declares its OWN held-together sets under `doctor.groups` in\n`geonosis.json`. Asked of the resolver, never of `find`, and a SKIP when the tree installs none of\nthe group.\n\nIt also reads what the ROOT declares: the door (`@geonosis/cli`, or the `geonosis` metapackage)\nplus the bins its own scripts, hooks, script files, workflows and tiers call by name — and WARNs a\ndeclaration the door already brings that nothing calls (#177).\n\n## The options a rule actually runs under\n\nEvery reader here that consumes a rule's configuration reads `overrides[]` as well as `rules`, and\nresolves them the way oxlint does — **measured**, not assumed, against oxlint 1.80:\n\n- an override entry naming a rule again **replaces** its options for the files its `files` globs\n  claim; nothing is deep-merged into the base;\n- when several overrides claim one file, the **last** of them wins outright;\n- a rule an override names and the base block never mentions is **enabled**, on those files.\n\nReading `rules` alone is one config with two answers. A Medusa storefront registers its Medusa providers from\nthree files — a base `medusa-config.ts` and two carrier registries — and declares that exactly\nwhere oxlint reads it, in overrides naming the carrier directories. The rule resolved it; `drift`\nread the base object and reported two working carriers as directories the registry \"never names\";\n`exercised` would have called a rule enabled only in an override \"not enabled here\" and skipped it.\n\nThe glob subset understood is `**` across segments, `*` and `?` within one, and `{a,b}`; a pattern\nwith no separator matches a basename anywhere. Like `pathMatching` in the rule plugin, it is a\nsubset that says so rather than a dependency that would have to be right about everything.\n\n### `exercised` — enabled ≠ exercised\n\nA rule at `\"error\"` over a tree with no violation of it, and a rule at `\"error\"` that can never\nfire at all, produce the identical green. One consumer ran `no-raw-html-atoms` that way for months\nwith 136 raw elements in the tree.\n\nFor each config, every rule it enables is run against the **corpus the loaded plugin ships**, under\nthat config's own options — because the options are usually where the reach went:\n\n```\nOK   .oxlintrc.json: 31 enabled, 31 exercised\nFAIL .oxlintrc.json: 2 enabled rules fire nowhere in the corpus: bio/no-brand-names, bio/…\n```\n\nThe reach engine is [`@geonosis/lint-parity`](https://www.npmjs.com/package/@geonosis/lint-parity)'s\n`corpusOf`, and the corpus is found on the **loaded** plugin, at `corpus/manifest.json`. A plugin\nthat ships no corpus is a SKIP: it never claimed to be evidence about anything.\n\nA rule enabled without the options it needs judges nothing and reports only that it is missing\n(D-084). Here that is a **FAIL** — its one finding is the refusal, and a refusal is not reach — and\n`loaded` names the option.\n\n#### The probe a rule declares for itself\n\nA rule whose REACH is an option can never fire on a fixed corpus. The fixtures say `acme` and\n`corpus/workflows/`; a repo says its own brand and `packages/workflows/src/`, and the rule reads as\nfiring nowhere in a tree that enforces it on every file. Both source repos reported exactly that\nagainst themselves on 2026-08-30, and both were right about the fact.\n\nSo an option-gated rule declares a `probe(options)` beside its `fixShape`, returning the smallest\nsource that must fire it under the options it was handed, at a path that lands where it looks. When\na rule fires nowhere, this writes that probe into a **copy of the corpus** — beside the fixtures,\nbecause a rule that reads a sibling off disk is answering about a tree — and runs it again:\n\n```\nOK       .oxlintrc.json: 17 enabled, 17 exercised — 1 through its declared probe under this repo's options\nFAIL     .oxlintrc.json: 1 enabled rule fires nowhere in the corpus and nothing through the probe it\n         declares either: bio/no-unregistered-plugin-dir under [{\"roots\":…,\"registry\":…}]\nUNJUDGED .oxlintrc.json: bio/atom-no-deps declares no probe, so its scope does not reach the corpus\n```\n\n**It does not soften the check.** A probe that was PLACED under this repo's options and still fired\nnothing is a FAIL naming the option VALUES — the question was asked and the answer was no, and the\nvalues are what a reader has to go and look at.\n\nA rule with no probe, or one whose options admit no constructible path, is **UNJUDGED**: the\nquestion could not be ASKED. That is not a pass — the run still exits non-zero — and it is not a\nfailure either, because a FAIL over a rule a repo is enforcing on every file reads as an invitation\nto delete the rule, and one consumer names exactly such a rule as live enforcement in its own law.\nThe sentence says why the corpus cannot answer instead.\n\nThe probes are read off the plugin the config LOADS, the way `loaded` reads its version — this\npackage still depends on no rule plugin. A plugin too old to declare any answers with none, and the\ncheck behaves exactly as it did before they existed.\n\nThe probe's PATH is half of it. `step-opens-its-own-cell` records zero findings against the shipped\ncorpus not because its source is wrong but because the fixture is at `corpus/workflows/` and the\nconsumer's `within` says `packages/workflows/src/` — the same bytes at the second path fire. So a\nprobe derives its path from the option, never from a fixed corpus location, and\n`lib/probe.ts`'s `pathMatching` builds one back out of the regex and then tests it against that\nregex, refusing with a sentence rather than placing a file the rule will never look at.\n\nA probe declares FILES, not a file. `no-unregistered-plugin-dir` reports a directory its registry\ndoes not name and reads that registry off disk, returning silently when it is not there — so one\nfile could never exercise it, and a Medusa storefront, enforcing it at error over four registries, read as a\npermanent FAIL for a gate that was working. Its probe now declares the directory AND the registry,\nand every file a probe declares is mounted into the copy. A probe declaring only `{ path, source }`\nis the one-file case of the same thing and is read unchanged, which matters: this reads probes off\nthe plugin build the consumer has INSTALLED, and every build published before this shape existed\nanswers in the bare form.\n\n#### The corpus a shipped one cannot be\n\nA rule whose reach is a **repo's own vocabulary** cannot be answered by the plugin's corpus at all —\n`layer-walls` fires on the layers this config declares, `no-brand-names` on the brands it names,\n`plugin-route-namespaced` on its package root, `step-opens-its-own-cell` on its `within` — and the\nshipped corpus says `acme` and `layers/core`. Both source repos hit exactly this: a Medusa storefront's `no-brand-names` and a Workers + D1 app's\n`step-opens-its-own-cell` read as firing nowhere in trees that enforce them correctly.\n\nSo a repo may ship its own, and point at it:\n\n```jsonc\n// geonosis.json\n{ \"doctor\": { \"corpus\": \"lint-corpus\" } }\n```\n\nThe directory holds fixtures in **this** repo's vocabulary, at paths that mirror this repo's own\n(the layer patterns are path patterns), and a `manifest.json` naming exactly the rules it is\nevidence about. A rule is exercised when it fires in **either** corpus. Two refusals guard it: a\ndeclared corpus that is not there is a FAIL, and a rule the repo's own manifest names that fires\nnowhere in it is a FAIL — claiming evidence and shipping none is worse than claiming none.\n\nIt is read for the config beside `geonosis.json` and no other: a nested config sets different\noptions, and asking one config's fixtures to answer for another's would report firing nowhere.\n\n#### The engine a rule presumes (#159)\n\nA rule that reaches ONE engine carries it in its own metadata — `presumes: { engine, packages }` —\nand this asks every manifest the config governs — its own, the ones above it up to the root, and the\nworkspaces underneath — whether any of those packages is declared, naming the ones it read. A\nbackend one directory BELOW a root config declares the engine for the rules that config enables over\nit (#227). A Workers + D1 app ran three Medusa rules at `error` over sagaflow trees: the default step\nfactory is `createStep`, sagaflow has none, and the possible findings were zero. Enabled-with-no-\nengine and clean are the identical green.\n\nA **WARN**, because which rules a repo enables is the repo's decision and the two actions — drop the\nrule from that config, or install the engine — are the reader's. A plugin too old to declare any\npresumption answers with none, and says nothing.\n\n#### What the number is evidence about (#160)\n\nThe `exercised` line says, on the same line as its number, that the firing happened in the corpus\nand in the probes and **says nothing about this tree**. \"17 enabled, 17 exercised\" was read as\nliveness in a consumer; three of those 17 could never fire on the surface that repo writes, and its\nown `--prove` plant was green in a spelling its code does not use. Nobody goes looking for the\ndenominator of a green, so it goes where the green is.\n\n### `baseline` — a number that may only shrink, against another ref\n\nA ratchet lowers its **own** baseline whenever a number shrinks; that is what locks a win in, and it\nis also what lets a branch write any number it likes and stay green on every gate it runs. Nothing\ninside one checkout can tell the difference. Only the same file at another ref can:\n\n```bash\ngeonosis-doctor --baseline-against          # origin/main, if the repo has one\ngeonosis-doctor --baseline-against main\n```\n\n```\nFAIL gate-baseline.json: oxlintErrors 12 → 135 (grew against origin/main)\n```\n\n**Off unless asked for.** It is the only check that runs git, and this tool gets pointed at repos\nother people are working in.\n\n### `runner` — an exit code is not a verdict\n\n`@cloudflare/vitest-pool-workers` exited 0 over suites it had just reported as failing, for weeks,\nin a consumer, so every gate that trusted the status read green over red. A workspace whose `test`\nscript runs **vitest** without asking for a JSON report, and which no `testFailures` counter in\nreport mode covers, gets a WARN. `--strict` makes it a FAIL.\n\n`bun test` is a different answer, because it is a different runner and it was measured: on bun 1.4.0\na planted failing assertion exits 1, so does an awaited one, so does a throw in `afterAll`, and an\nall-passing run exits 0. Its exit code IS the verdict, so a bun workspace is OK and the line says so\nnaming bun. It used to be warned with vitest's sentence — eight lines of it in one consumer's\nreport, each blaming a runner the check had not read, which is how a reader learns to skim the\nsection and miss the vitest lines beside them that are true.\n\nA workspace whose test script runs a runner over **zero test files** is a SKIP, not a warning: one\nconsumer has a config-only workspace that runs `vitest run` over nothing, so there is no\nresult for an exit code to be wrong about. The message says what was counted.\n\nThe message names the runner it read. What it does not do is see through a wrapper: a script that\nruns `bun ./scripts/vitest-strict.ts` reads as neither, and that consumer's wrapper is in fact the\nexemplary fix — it spawns vitest with `--reporter=json`, reads the report, and fails on a missing\none. The verdict is right and the sentence understates it.\n\n#### A falsification nothing runs\n\n`geonosis-ratchet --prove` plants each counter's known-bad input and requires the counter to read\nit — a gate that has never been seen red has not been shown to measure (D-029). The ratchet is\nstrict about this where the flag runs, and until now nothing asked whether the flag is ever run: a\nprove that lives in the release ritual is run by the release that remembers it, and a counter can\nspend a release reading zero off a mis-escaped match (#140, measured in a consumer).\n\nA repo with counters and no `--prove` in any verify tier, script or workflow is a **WARN** naming a\ntier it already declares. A repo with no ratchet configured gets no line at all.\n\n### `envelope` — every gate read as many things as it was handed\n\nFor each `.geonosis/envelopes/<tool>.json` a gate wrote, `considered === read + refused + excused`.\nFour denominator bugs landed in one day and every one was green — a migrations run that reported on\nthree of four files, a plan check that printed `PASS — 0 plan(s)` over a directory of twenty-one, a\nparity run over a tree the second config ignored. Each published a numerator and no denominator.\nReads the files and imports nothing of the tools that wrote them; no envelopes at all is a SKIP with\nthe sentence.\n\n### `drift` — the gate that is no longer there\n\nThe checks above ask whether a gate measures what it names. This one asks whether it still runs.\n\n| Line | Verdict | What it is |\n|---|---|---|\n| `.github/workflows/*.yml` | FAIL | a job or step switched off by a condition that can never be true. One consumer carried 90 tests, a pgvector container and an E2E suite and ran none of it, the disablement documented as \"TEMPORARY\" in a comment. It is \"never downgrade a rule\", one level up |\n| test files | FAIL | a `*.test.*` file with no `test` script in any workspace from it up to the root. A monorepo that runs one vitest over the whole tree has no orphan in it, and this says so |\n| script paths | FAIL | a `scripts` entry that hands `bun`, `node` or `tsx` a file that is not on disk. A Workers + D1 app's `bun run fast` began `bun scripts/check-plugin-version.ts && …` and the script had been deleted: the 2.5 s gate had failed at its first command for as long as nobody looked. Only a word with a file extension is asked about, so `bun test`, `bun run lint` and `node --version` are not paths |\n| generated files | FAIL | a file carrying `geonosis:gated-by: <gate>` that nothing here runs the gate for — checked against every manifest script, every ratchet counter command and every workflow, because what matters is that SOMETHING runs it. A file that names its **writer** and no gate at all fails on that alone: a Workers + D1 app's AGENTS.md is a 1,117-line byte-copy of its own law, written by `geonosis sync`, and nothing ever ran `sync --check` — the doctor stood beside it warning about the shorter original |\n| `NODE_OPTIONS` | WARN | a manifest script preloading through `NODE_OPTIONS` beside a ratchet counter whose command shells to `pnpm`. The nested pnpm inherits the option: a Medusa storefront's ts5 shim sent it looking for a `.pnpmfile.mjs` that is not there, the counter died, the ratchet refused correctly, and nothing in the message was near the cause. Both halves must be present, and the line names the script and the counter |\n| workspace bins | FAIL | a script calling a bin THIS repo's own workspaces declare, with no `node_modules/.bin/<name>` at the root. pnpm links a workspace bin only for the packages that depend on it: a Medusa storefront's `@shop/gate-tools` had to become an explicit root devDependency before the gate scripts could find it, and naming that took a debugging session. External commands are not judged — that would be a guess |\n| plugin directories | FAIL | a manifest directory under the roots `no-unregistered-plugin-dir` names that the registry never mentions. SKIP when the rule is not configured — the roots are the repo's, read from the rule it already wrote, never a list invented here |\n| `publicHoistPattern` | FAIL / SKIP | a pattern in `pnpm-workspace.yaml` with no root `node_modules` link for a workspace package it matches. pnpm dropped one during an **unrelated** `add`, then answered \"Already up to date\" to every install afterwards over a clean `git status` — the tree was fixed only by deleting `.modules.yaml` and `.pnpm-workspace-state-v1.json`, which the line carries verbatim. Only workspace packages are judged, because one exists on disk by construction and a missing link for it cannot be \"the install never ran\"; the root package is never asked about, since no package manager puts a repo's root inside its own `node_modules`. A pattern matching no workspace package is SKIP, never a pass |\n| `@geonosis/observability` | WARN | it is declared in a manifest here and **no source file imports it** — installed is not composed. The kit ships the sink adapter and the reference consumer sent production errors nowhere, because nothing at its composition root ever built one; from outside the process that reads exactly like a project with nothing to report (#165). No line at all in a repo that never installed it |\n| an `allowBuilds` entry | WARN | a platform-split package allowed by ONE platform name. pnpm 11.5.1 writes this file itself when it refuses a build script, and what it writes is the platform of the machine that ran the install — so every other platform refuses the install by the name that is missing, on somebody else's machine (#188, measured here). How many a family publishes is the registry's answer, so the line names the family and the shape rather than a count it would have to guess |\n| the tool runtime | WARN | an installed kit package declares `engines.bun` — from 3.0.0 every kit bin starts on bun — and the root neither runs on bun (`packageManager: bun@…`) nor names it in `devEngines.runtime`. On a laptop bun is usually on PATH and every gate runs; the first machine without it, CI as a rule, fails with `env: bun: No such file or directory`, which names no package and no fix. The line carries the `devEngines` block to add; pnpm 12 installs what it names |\n| a workspace's `lint` script | WARN / SKIP | the file set the script covers, against the one a committed hook lints. One consumer's app script covered its source directory and not its test one, so the pre-commit hook — which lints whatever is STAGED — was the first door ever to read a moved test file, and it found violations the package gate had never seen (#172). The line names the globs left to the hook alone. SKIP when no committed hook lints staged files: there is no second file set to be narrower than |\n| the law | WARN / SKIP | its measured length against `geonosis.json` → `law.maxLines`. **SKIP when the repo declares no ceiling** — a consumer read \"1,104 lines against a ceiling of 200\" for a number it never chose, which is unactionable in both directions. The length is still printed, because that is the number a repo declares against |\n| `.claude/settings.json` | WARN | nothing under `enabledPlugins` enables the kit's plugin, so the gates run and the method does not (D-041). The **user-scope** `~/.claude/settings.json` is read too and acknowledged as \"installed elsewhere — not this repo's to declare\": both source repos got this WARN while the plugin was installed machine-wide. The key is read, never the word `geonosis` appearing somewhere in the file |\n| `geonosis.json` blocks | WARN | a block whose package **no manifest declares** — nothing reads it, and a stale `node_modules` copy is named as what a previous install left behind; a block whose package is declared and does not resolve — run the install; or a **declared** package with no block, running on defaults nobody chose |\n\nThe two directions do not read the same source. Whether a repo still *chose* a package is a question\nfor the **manifests**: a `release` block whose package had been removed from every manifest, with a\nstale `node_modules` directory still present, resolved perfectly and the check said nothing (#78).\nWhether a tool will actually load is the forward question, and that one is resolution's.\n\nThe \"installed with no block\" direction is scoped to **direct** dependencies. `@geonosis/review` and\n`@geonosis/testbed` arrive transitively through `@geonosis/cli`, and asking a consumer to configure\na package they never installed is noise — which is how a reader learns to skip the section (#61). A\ntransitive presence gets an OK line naming where it came from, and no demand.\n\n### `observability` — a sink nobody can reach\n\nThe exporter named by the `observability` block in `geonosis.json`: is a sink configured, is its\nendpoint reachable, and did an event arrive inside `maxAgeSeconds`. Read from the `lastEventFile`\nthe sink writes — never by importing the library being checked, because a check that needs the\nlibrary cannot run in the tree where the library is missing.\n\n### `deployed` — declared ≠ deployed\n\n`wrangler versions upload` applies no triggers. A cron or a route edited in the config is therefore\nsilently ignored in production for ever, with a green pipeline; `wrangler secret put` creates AND\ndeploys a version outside the gate entirely. Nothing in either source repo measured any of it.\n\n`.geonosis/deployed.json` is what the consumer's pipeline writes **after promote** — the versions,\nthe crons and routes it applied, the secret names and the binding names. This line compares it\nagainst what the tree declares: the wrangler configs `geonosis.json` → `release.wrangler` names\n(JSON or JSONC, with `release.wranglerEnv` selecting an environment block, because named\nenvironments inherit nothing per binding) and `release.secrets`.\n\n| | |\n|---|---|\n| the file is absent | **SKIP**, with the sentence: it is written by the pipeline after promote, and its absence is not a pass |\n| `release.wrangler` and `release.secrets` are both empty | **SKIP** — this repo has declared nothing a deployment is supposed to carry |\n| a config it was told to read cannot be read | **FAIL** — a config nobody can parse is a finding, never a skip |\n| anything declared is not deployed, or anything deployed is not declared | **FAIL**, naming each |\n\nIt reads the file, and imports nothing of `@geonosis/release` — the same wall `observability` keeps,\nheld by the kit's own `layer-walls` config, so a repo can install either package alone.\n\n### `rails` — the egress a run is bounded by, in the settings that load\n\nThe hosts `geonosis.json` → `rails.egress.allow` declares, read back out of the settings that\nactually LOAD rather than the file this repo rendered. Claude Code merges\n`sandbox.network.allowedDomains` across the managed, user, project and local scopes; a settings file\nthat fails validation is silently ignored under `-p`, and a managed `allowManagedDomainsOnly` makes\nevery other scope's list ignored. `deniedEgress` in `.geonosis/rails-run.json` is a **gate at zero**\n(D-025), asked whether or not an allowlist is declared: one denied attempt fails.\n\n### `exams` — a floor adopted and never examined\n\nA floor bump that breaks search is invisible to a tier that never runs the search exam. A verify\ntier declares COMMANDS, not globs, so \"the exam runs in the fast tier\" is not a claim anything can\ncheck — but whether a test file importing the exam exists at all is.\n\nFor every `@geonosis/*` package a manifest in the tree declares, this reads the declarations that\npackage ships and takes every export ending in `Conformance` as its exam. The exams are read off\nthe installed floor, never off a list held here: a table in this package would be a second source\nfor a fact the floors already state, and wrong the day a floor adds one.\n\n| | |\n|---|---|\n| no declared package ships an exam | **SKIP** — nothing here to ask about |\n| a test file imports an exam | **OK** for that exam, naming the file |\n| the floor is declared and no test file imports an exam it ships | **WARN** for that exam — one line per exam, never one per package (#353) |\n\nIt WARNs rather than FAILs: the check cannot tell a floor adopted last week from one whose exam\nsomebody deleted, and a FAIL on every fresh install is the shape that teaches a reader to skim.\n\n### `seams` — a declared seam that names nothing\n\n`adoption.seams` in `geonosis.json` is what `geonosis update` measures a floor's adoption by:\nlines deleted against lines added in the files a consumer says hold a floor's shape. A glob whose\nfile was deleted and never undeclared measures nothing, and every bump report reads `0 deleted,\n0 added` over it — a Workers + D1 app carried three of eight that way for a month.\n\n| Seen                                            | Line                                                |\n| ----------------------------------------------- | --------------------------------------------------- |\n| no `adoption.seams`                             | **SKIP**, naming the key                            |\n| every glob names a file (never in node_modules) | **OK**, with the count                              |\n| a glob names no file                            | **WARN** per glob, saying to drop or replace it      |\n\n### `formatter` — the kit's rules, out of the formatter's reach\n\nA consumer links or copies the plugin's rule files into `.claude/rules/geonosis`, and `tiers.md`\nthere is generated. `oxfmt --migrate=prettier` writes `ignorePatterns: []`, so the first `format` of\na repo that migrated rather than scaffolded rewrote them. The repo's own oxfmt is asked with\n`--list-different`, so its ignore rules are read by the tool that applies them: WARN, naming the\nentry to add, when the files are within its reach; UNJUDGED when oxfmt could not be asked.\n\n## What `--format=unix` does not tell you\n\nMeasured on oxlint 1.80: a JS plugin rule that throws from `create()` is reported **once per file**,\nand the unix formatter renders each of those as\n\n```\n:0:0:  [Warning]\n```\n\n— no path, no rule id, no sentence. The default formatter carries the whole message, including\nwhich rule refused and which option it is missing. So when a config's corpus run is refused, this\ntool asks oxlint a second time, over one trivial file, in the format that answers.\n\nA tool that only ever read `--format=unix` would report that something went wrong and be unable to\nsay what.\n\n## `--json`\n\nThe whole report, for a CI step to read:\n\n```json\n{\n  \"counts\": { \"FAIL\": 1, \"OK\": 12, \"SKIP\": 2, \"UNJUDGED\": 0, \"WARN\": 0 },\n  \"findings\": [{ \"check\": \"loaded\", \"message\": \"…\", \"subject\": \"apps/web/.oxlintrc.json\", \"verdict\": \"FAIL\" }],\n  \"ok\": false,\n  \"ran\": [\"loaded\", \"group\", \"exercised\"],\n  \"root\": \"/repo\"\n}\n```\n\n## What it does not depend on\n\nNot the rule plugin. This tool asks which plugin a config loads; a copy of that plugin in its own\ndependency tree would be one more copy for the question to be wrong about. Not\n`@geonosis/observability` and not `@geonosis/release` either: both of those lines read a FILE the\nconsumer wrote. It depends on `@geonosis/lint-parity` for the reach engine and on nothing else, and\nthe kit's own `layer-walls` config holds every one of those walls.\n\nApache-2.0.\n","readmeFilename":""}