{"_id":"@cosyte/vitest-config","_rev":"5-5dcebf15ae131287b75672e5973a782c","name":"@cosyte/vitest-config","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@cosyte/vitest-config","version":"0.0.1","keywords":["vitest","coverage","test","cosyte"],"author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"license":"MIT","_id":"@cosyte/vitest-config@0.0.1","maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","bugs":{"url":"https://github.com/cosyte/config/issues"},"dist":{"shasum":"edff4e763de7d78930e314fd04311bbf8cf87e2b","tarball":"https://registry.npmjs.org/@cosyte/vitest-config/-/vitest-config-0.0.1.tgz","fileCount":6,"integrity":"sha512-2WM1ZHv7kfCGOKc/1irKQ6RDfkYJ8W9ec1SRk80rK9H9m//+GAheKiYnxHxwnsvXrLiETAUZ4YmVoFP2HbZCEQ==","signatures":[{"sig":"MEUCIHsZZiQGeqOnEYr7ZLJvUJaEUvGEsybd26Yy2cFM8YGfAiEAregT+VwnAzxQd/aoF2epTwZmtC3vkbk0kAtB2wdQusI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5859},"main":"index.js","type":"module","_from":"file:cosyte-vitest-config-0.0.1.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"_npmUser":{"name":"cosyte","email":"noah@cosyte.com"},"_resolved":"/tmp/80227230def3d87386330c73b437ca8d/cosyte-vitest-config-0.0.1.tgz","_integrity":"sha512-2WM1ZHv7kfCGOKc/1irKQ6RDfkYJ8W9ec1SRk80rK9H9m//+GAheKiYnxHxwnsvXrLiETAUZ4YmVoFP2HbZCEQ==","repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"10.9.8","description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","directories":{},"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vitest":"^4.0.0","@vitest/coverage-v8":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_0.0.1_1782419589950_0.2616647413586999","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@cosyte/vitest-config","version":"0.0.2","keywords":["vitest","coverage","test","doctest","documentation","cosyte"],"author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"license":"MIT","_id":"@cosyte/vitest-config@0.0.2","maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","bugs":{"url":"https://github.com/cosyte/config/issues"},"dist":{"shasum":"1916ee110e6ff0e80f51a892d244aa0ed78a4b89","tarball":"https://registry.npmjs.org/@cosyte/vitest-config/-/vitest-config-0.0.2.tgz","fileCount":8,"integrity":"sha512-2LzDFAXlwjHGVhB1eE5zYyNsGITyGZqenuhZSFIuZ33BEjfIpQtZnpObGr1gXKkrvbtEM36f6Vz0Y3zhEUm7sA==","signatures":[{"sig":"MEQCIG4k/qpRJQj66FpvP/g/CT7qpWzODHffcPkgweWgXlVGAiAZeKbhk/88dkg93QMeEbxBFRgoCM9t3y/JO3eVPdu6yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26230},"main":"index.js","type":"module","_from":"file:cosyte-vitest-config-0.0.2.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./snippets":{"types":"./snippets.d.ts","default":"./snippets.js"}},"_npmUser":{"name":"cosyte","email":"noah@cosyte.com"},"_resolved":"/tmp/14f9b989b4d0603824189c238b1d944e/cosyte-vitest-config-0.0.2.tgz","_integrity":"sha512-2LzDFAXlwjHGVhB1eE5zYyNsGITyGZqenuhZSFIuZ33BEjfIpQtZnpObGr1gXKkrvbtEM36f6Vz0Y3zhEUm7sA==","repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"10.9.8","description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^4.0.0","@vitest/coverage-v8":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_0.0.2_1784169611355_0.0949250979336198","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@cosyte/vitest-config","version":"0.0.3","keywords":["vitest","coverage","test","doctest","documentation","cosyte"],"author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"license":"MIT","_id":"@cosyte/vitest-config@0.0.3","maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","bugs":{"url":"https://github.com/cosyte/config/issues"},"dist":{"shasum":"6ab548cebc6aabac3fada12d5b8c12a558344dc2","tarball":"https://registry.npmjs.org/@cosyte/vitest-config/-/vitest-config-0.0.3.tgz","fileCount":8,"integrity":"sha512-2QrhEXe1T5CMhff4XMD7/flSiI0uZFzhER2c4sdC6XLHI8XjdaVdHUXraBYjWKb8nT7s3LRyU42K0yahZygmKw==","signatures":[{"sig":"MEYCIQDK5MlfNM5ImOhdyIvADOpdbjA4KbPsruh6TkW747z4ywIhAJdWIIpXrDlPYdOaUxbRXPHon2eCFFK+LvYRAeZCIxTM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cosyte%2fvitest-config@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26296},"main":"index.js","type":"module","_from":"file:cosyte-vitest-config-0.0.3.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./snippets":{"types":"./snippets.d.ts","default":"./snippets.js"}},"_npmUser":{"name":"cosyte","email":"noah@cosyte.com"},"_resolved":"/tmp/f26b886561b8abbf4d6b2b0d194f448c/cosyte-vitest-config-0.0.3.tgz","_integrity":"sha512-2QrhEXe1T5CMhff4XMD7/flSiI0uZFzhER2c4sdC6XLHI8XjdaVdHUXraBYjWKb8nT7s3LRyU42K0yahZygmKw==","repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"10.9.2","description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^4.0.0","@vitest/coverage-v8":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_0.0.3_1785509612699_0.5932580430836905","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@cosyte/vitest-config","version":"0.0.4","keywords":["vitest","coverage","test","doctest","documentation","cosyte"],"author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"license":"MIT","_id":"@cosyte/vitest-config@0.0.4","maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","bugs":{"url":"https://github.com/cosyte/config/issues"},"dist":{"shasum":"5a21977bf81773ae35a8795f0e2c830b3ef2fc0f","tarball":"https://registry.npmjs.org/@cosyte/vitest-config/-/vitest-config-0.0.4.tgz","fileCount":8,"integrity":"sha512-/DD+UH3J72yrJluxs3e+0XoiZjLdOZo0mC5IOIjxH6gkqCQQp1msSEvpylxGUXDqKUf/mio30rvdkBMiUDGbpQ==","signatures":[{"sig":"MEUCIDtdItO0NHsStX8EJyJz5qNqa2vsSIBWKC6FGVTRpj0WAiEAmjYp0Rw3ArRzM36L/T9uv1wlWrpvfxkfCTlaUCifieM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cosyte%2fvitest-config@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26960},"main":"index.js","type":"module","_from":"file:cosyte-vitest-config-0.0.4.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./snippets":{"types":"./snippets.d.ts","default":"./snippets.js"}},"_npmUser":{"name":"cosyte","email":"noah@cosyte.com"},"_resolved":"/tmp/2d27bca0b0585678bc3d5173226d29b6/cosyte-vitest-config-0.0.4.tgz","_integrity":"sha512-/DD+UH3J72yrJluxs3e+0XoiZjLdOZo0mC5IOIjxH6gkqCQQp1msSEvpylxGUXDqKUf/mio30rvdkBMiUDGbpQ==","repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"10.9.2","description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^4.0.0","@vitest/coverage-v8":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_0.0.4_1785894672488_0.7858325163544406","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"_id":"@cosyte/vitest-config@0.1.0","bugs":{"url":"https://github.com/cosyte/config/issues"},"dist":{"shasum":"9b2629c49e05f764c3b2ba6573c3d36c98ff4b6e","tarball":"https://registry.npmjs.org/@cosyte/vitest-config/-/vitest-config-0.1.0.tgz","fileCount":8,"integrity":"sha512-A4PXw2fhft8Ta35LHygpmUk/DmfZdL0sMa8e3U1N5FEijfCDc5nQAIUeNE1a5G7w7DQxpOxu4IqjpiVYqPa5kg==","signatures":[{"sig":"MEUCIQCNRZ6DKdB47w4Rw8Jq2uV5iMgt1MTHFSuytJfxXXxFHAIgAaxlc1cSiC52RKDQqHTC38uNghmhKnUraX5jKKRD7Kg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGdCCMWccOBLFzve6uyGPdCOCpUCqwELjNp+PCPD1LMHAiATxoP+uIMamfLsJMbb2t7eG1k7Lkts1aKN827Vm5SR5A=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cosyte%2fvitest-config@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33783},"main":"index.js","name":"@cosyte/vitest-config","type":"module","_from":"file:cosyte-vitest-config-0.1.0.tgz","types":"index.d.ts","author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./snippets":{"types":"./snippets.d.ts","default":"./snippets.js"}},"license":"MIT","version":"0.1.0","_npmUser":{"name":"cosyte","email":"noah@cosyte.com"},"homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","keywords":["vitest","coverage","test","doctest","documentation","cosyte"],"_resolved":"/tmp/f954f5fc4b15d7cd2ba2f330c2a0925b/cosyte-vitest-config-0.1.0.tgz","_integrity":"sha512-A4PXw2fhft8Ta35LHygpmUk/DmfZdL0sMa8e3U1N5FEijfCDc5nQAIUeNE1a5G7w7DQxpOxu4IqjpiVYqPa5kg==","repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"10.9.2","description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","directories":{},"maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^4.0.0","@vitest/coverage-v8":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vitest-config_0.1.0_1789987782835_0.9722548808794669"}}},"time":{"created":"2026-06-25T20:33:09.785Z","modified":"2026-09-21T10:49:43.339Z","0.0.1":"2026-06-25T20:33:10.110Z","0.0.2":"2026-07-16T02:40:11.500Z","0.0.3":"2026-07-31T14:53:32.895Z","0.0.4":"2026-08-05T01:51:12.698Z","0.1.0":"2026-09-21T10:49:42.923Z"},"bugs":{"url":"https://github.com/cosyte/config/issues"},"author":{"url":"https://cosyte.com","name":"Cosyte","email":"hello@cosyte.com"},"license":"MIT","homepage":"https://github.com/cosyte/config/tree/main/packages/vitest-config#readme","keywords":["vitest","coverage","test","doctest","documentation","cosyte"],"repository":{"url":"git+https://github.com/cosyte/config.git","type":"git","directory":"packages/vitest-config"},"description":"Shared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/* packages.","maintainers":[{"name":"cosyte","email":"noah@cosyte.com"}],"readme":"<a href=\"https://cosyte.com\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cosyte.com/tile/cosyte-lockup-tile-on-dark-1200x300.png\">\n    <img alt=\"The Cosyte logo on its own white ground: the icon beside the word Cosyte.\" src=\"https://cosyte.com/tile/cosyte-lockup-tile-on-light-1200x300.png\">\n  </picture>\n</a>\n\n# @cosyte/vitest-config\n\n> Gating coverage thresholds by default, plus a suite that runs the examples in your docs.\n\n[![npm version](https://img.shields.io/npm/v/@cosyte/vitest-config.svg)](https://www.npmjs.com/package/@cosyte/vitest-config)\n[![CI](https://img.shields.io/github/actions/workflow/status/cosyte/config/ci.yml?branch=main&label=CI)](https://github.com/cosyte/config/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/cosyte/config/blob/main/LICENSE)\n[![Node](https://img.shields.io/badge/node-%3E%3D22.14-brightgreen.svg)](https://nodejs.org)\n\nShared Vitest config (v8 coverage, per-directory >=90 gates) for @cosyte/\\* packages.\n\n## Why this exists\n\nCoverage that is reported but not gated is a number nobody acts on, and a repo-wide threshold hides\nthe one directory that has none: a package can sit at 92% overall while its serializer is at 40%.\nThe cosyte baseline gates per directory, and it ships enabled rather than as a setting each repo\nremembers to switch on.\n\nThe nearest alternative is a hand-written `vitest.config.ts` per repository with `coverage.thresholds`\ncopied in. That is the drift this removes, and it is also where the second half of this package comes\nfrom: nothing in that alternative proves the examples in your documentation still work.\n\n## Status\n\n`@cosyte/vitest-config` is on the cosyte 0.1.x line: the public API is settled and bump types follow ordinary semver.\n\nStill moving: the coverage exclude list and the snippet-suite options (`runnableTag`, `resolve`,\n`requireSnippet`), which have changed shape as the first consumers adopted them. The 90 threshold and\nthe `cosyteVitest(options)` signature are the settled parts, and a change to either is recorded with\nthe bump type it deserves rather than absorbed into a patch.\n\n## Install\n\n```sh\npnpm add -D @cosyte/vitest-config vitest @vitest/coverage-v8 vite\n```\n\n`vitest`, `@vitest/coverage-v8`, and `vite` are peer dependencies. Install `vite` explicitly:\nVitest 4 requires major version 6 or later, and without a direct declaration the resolver will\nhappily keep an incompatible vite 5. Node `>=22.14`. ESM only.\n\n## Usage\n\n`vitest.config.ts` exports what the factory returns:\n\n```ts runnable\nimport { cosyteVitest } from \"@cosyte/vitest-config\";\n\nconst { thresholds } = cosyteVitest({ coverageDirs: [\"parser\", \"model\"] }).test.coverage;\nthresholds.lines; // => 90\nthresholds[\"src/parser/**\"].lines; // => 90\n```\n\nEach entry in `coverageDirs` adds a per-directory `src/<dir>/**` gate at >= 90 on top of the global\ngate, which is what stops a well-covered helper directory paying for an untested parser.\n\n## Entry points\n\n| entry point                      | what it is                                                          |\n| -------------------------------- | ------------------------------------------------------------------- |\n| `@cosyte/vitest-config`          | the `cosyteVitest(opts?)` factory, returning a Vitest config object |\n| `@cosyte/vitest-config/snippets` | the doc/code-agreement harness described under the API below        |\n\nThey are separate subpaths because they are separately adoptable, and importing the config never\nloads the harness. `extractRunnableSnippets` is the primitive that decides what runs, and it reports\neach block's 1-based first code line so a failure points at the snippet rather than at the fence:\n\n```ts runnable\nimport { extractRunnableSnippets } from \"@cosyte/vitest-config/snippets\";\n\nconst fence = \"`\".repeat(3);\nconst doc = [\"# Title\", \"\", fence + \"ts runnable\", \"const dose = 5;\", fence].join(\"\\n\");\nextractRunnableSnippets(doc).length; // => 1\nextractRunnableSnippets(doc)[0].line; // => 4\n```\n\n## Overrides\n\nBoth entry points are configured entirely through their arguments, and neither enforces anything a\nconsumer cannot reach:\n\n- `cosyteVitest` takes `coverageThresholds` to add or override specific coverage keys, and `test`\n  for any other Vitest option. Both are merged last, so a repo that genuinely cannot hold >= 90 in\n  one directory lowers that one key rather than abandoning the config.\n- `docSnippetSuite` takes `docsDir` or `files`, `include` (default `.md` and `.mdx`), `resolve`,\n  `runnableTag` (default `\"runnable\"`), `name`, `requireSnippet` and `tmpDir`.\n\nA package with no runnable snippets yields an empty, passing suite unless `requireSnippet` is set:\nabsence degrades quietly, a _wrong_ snippet fails loudly. Lowering a coverage threshold is the\noverride worth arguing about in review, because unlike the others it changes what CI will let\nthrough.\n\n## PHI and safety\n\nThis package is test configuration. It processes no patient data: it configures a test runner and,\nthrough `/snippets`, compiles and executes the code blocks you point it at.\n\nTwo consequences worth stating plainly, because `/snippets` does run code. It executes the snippets\nin your own documentation, in your own process, so a documentation example must never contain real\npatient data: it would then be executed, and it is already committed. And the transient module\n`runSnippet` writes is written under your project root, so a snippet's inputs land on disk exactly as\na test fixture's would. Use synthetic data in documentation, as in tests.\n\n## API\n\n### `cosyteVitest(options)`\n\nThe baseline config: v8 coverage with `text` / `html` / `lcov` reporters, the standard excludes\n(barrels, fixtures, generated code, declarations), and **enabled, gating** per-directory thresholds\nat **>= 90**.\n\n### Doc/code agreement: `@cosyte/vitest-config/snippets`\n\nThe `/snippets` subpath is the **documentation analog of the conformance runners**: it proves the\nexamples in a package's `docs-content/` still do what the prose claims. A copy-pasteable snippet that\nsilently returns the wrong field (a dose, a code, an identifier) is a clinical-harm failure mode\nwearing a documentation costume, so a green docs build carrying a wrong snippet is exactly what this\nprevents.\n\nMark a fenced block **opt-in** with ` ```ts runnable ` and assert its output inline with `// =>`:\n\n````md\n```ts runnable\nimport { parseHl7 } from \"@cosyte/hl7\";\n\nconst { warnings } = parseHl7(raw);\nwarnings.length; // => 0\n```\n````\n\n`docSnippetSuite()` walks a docs directory, turns each runnable block into a Vitest `test` labelled by\nfile and line, compiles it, and executes it: a line of the form `<expr>; // => <value>` becomes\n`expect(<expr>).toStrictEqual(<value>)`. A block tagged ` ```ts runnable throws ` must throw instead.\n\n```ts\n// test/docs-content.test.ts\nimport { join } from \"node:path\";\nimport { docSnippetSuite } from \"@cosyte/vitest-config/snippets\";\n\ndocSnippetSuite({\n  docsDir: join(import.meta.dirname, \"..\", \"docs-content\"),\n  // Point a snippet's `import ... from \"@cosyte/hl7\"` at what you want to prove against. This repo's\n  // source for a fast local gate, or `../dist/index.js` (after `pnpm build`) for artifact fidelity.\n  resolve: (spec) =>\n    spec === \"@cosyte/hl7\" ? join(import.meta.dirname, \"..\", \"src\", \"index.ts\") : undefined,\n});\n```\n\nOptions: `docsDir` / `files`, `include` (default `.md` / `.mdx`), `resolve` (import-specifier\nremapper), `runnableTag` (default `\"runnable\"`), `name`, `requireSnippet`, `tmpDir`. A package with no\nrunnable snippets yields an empty, passing suite: absence degrades quietly; a _wrong_ snippet fails\nloudly. The primitives (`extractRunnableSnippets`, `rewriteAssertions`, `remapImports`, `runSnippet`)\nare exported too, for bespoke wiring.\n\n> `runSnippet` writes a transient `.ts` module under `tmpDir` (default `.cosyte-doc-snippets/` in the\n> project root) and imports it so Vitest transforms the TypeScript: add `.cosyte-doc-snippets*/` to\n> `.gitignore`. It must stay inside the project root; files under `node_modules` are not transformed.\n\n## Contributing\n\nQuestions, bug reports and proposals go to\n[the issue tracker](https://github.com/cosyte/config/issues). Pull requests are welcome, in\n[cosyte/config](https://github.com/cosyte/config), where this package lives.\n\nA change has to clear the required `verify` job, and a change to the thresholds or the excludes needs\na changeset saying what moved: it can red a consumer that was passing.\n\n## License\n\nMIT, copyright Cosyte. See [LICENSE](https://github.com/cosyte/config/blob/main/LICENSE).\n","readmeFilename":"README.md"}