Files
OmniRoute/config/quality/dependency-allowlist.json
Diego Rodrigues de Sa e Souza a94fe23e89 fix(release): drain the twelve reds every PR against release/v3.8.51 was born with (#11940)
* fix(release): drain the twelve reds every PR against release/v3.8.51 was born with

Measured on the cycle tip: fifteen unit files were red on every PR. Two came
from the v3.8.50 sync-back (fixed in #11929); the other thirteen predate it and
are the branch's own drift. This sweep clears all of them but the ESLint debt
(#11924), each with the smallest change that keeps the guard honest:

- .env.example + ENVIRONMENT.md: NEXT_PUBLIC_SW_BUILD_ID / OMNIROUTE_SW_BUILD_ID /
  SOURCE_VERSION (#11779 service-worker cache busting) documented — the env/docs
  contract gate was failing on every PR.
- stryker.conf.json: the six tests the mutation gate found covering mutated modules
  (four retirement runtime-block suites, combo connection-aware expansion, tunnel
  error sanitization) registered in tap.testFiles.
- dependency-allowlist: eslint-plugin-react-hooks 7.0.1 approved; its findings are
  tracked in #11924.
- i18n: the six combo.sort.* strings (d5dfcfff58) translated for vi (strict parity)
  and pt-BR.
- docs/providers/CHATGPT_WEB.md: the retirement test is migration-168, not 163.
- g4f gateways: authHint now says member key, which the discontinued-providers
  guard asserts.
- tests realigned to the catalog the branch actually ships: qwen-web (#11713) and
  chatgpt-web (#11720) are retired, so web-session-contract and
  token-health-check-webcookie use perplexity-web, grok-web and chatgpt-web-codex.
- db-core-init: the two minimal legacy fixtures gained the columns migrations 164-168
  UPDATE (error_code, last_error*, test_status) — they exist on every real legacy DB
  (base CREATE TABLE); the fixtures simply never declared them.
- no-js-extension guard: a .js specifier whose target is a genuine JavaScript file
  (open-sse/lib/deepseek-pow-hash.js, shared with a worker) is not the #10674
  defect; the test now skips targets that exist as .js.

All twelve files pass locally; docs-sync, docs-counts, env-doc-sync, the tap
drift gate and the fabricated-docs gates are green on the tree.

* test(release): move the deferred-finish translator test into a collected path

tests/unit/translator/ is not one of the unit collectors (package.json test:unit,
merge-train.sh, build-test-impact-map, check-test-discovery), so the suite that
dd35750e5f added there never ran — check:test-discovery flagged it as a new orphan
on every PR. Relocated next to its sibling openai-to-claude-trailing-usage-11817
under tests/unit/, where the root glob collects it (5/5 pass).

* fix(dashboard): type the four sort-method sites #11812 left red on the dashboard typecheck ratchet

d5dfcfff58 added the combo model sort and raised combos/page.tsx from 23 to 27
scoped TypeScript errors (TS2339 +1, TS2345 +2, TS2322 +1), which fails
check:dashboard-typecheck on every PR against release/v3.8.51:

- initialSortMethod: sanitizeComboRuntimeConfig() is untyped, so config.modelSort is
  unknown; narrow it before reading .method (normalizeSortMethod takes unknown anyway).
- handleAddModels: the batch path passes ComboBuilderDraftModelStep[] to the ComboStep[]
  sort helpers without the cast handleSortChange already uses; mirror it.
- ComboSortSelect expects a translate-with-fallback (k, f) => string, but received
  next-intl's Translator whose second argument is a values object. Pass the page's
  getI18nOrFallback adapter instead of the raw translator — that is also what makes
  the `has()` check and the fallback text actually work at runtime.

Baseline untouched (no widening). Scoped tsc: 0 new/regressed errors.
2026-08-28 18:18:33 -03:00

157 lines
3.5 KiB
JSON

{
"_comment": "Allowlist anti-slopsquatting (check-deps.mjs). Toda dep nova exige adicao EXPLICITA aqui apos verificar que e legitima.",
"_justifications": {
"@testing-library/dom": "Peer dep obrigatoria de @testing-library/react v16 (adicionada no PR #11224); Refs #9985.",
"@testing-library/user-event": "Utilitario oficial do ecossistema testing-library para testes de UI (adicionada no PR #11224); Refs #9985.",
"eslint-plugin-react-hooks": "React Hooks lint rules (set-state-in-effect, immutability, refs, purity) pinned at 7.0.1 by the release/v3.8.51 cycle; the 224 findings it raised are tracked in #11924. Refs #11924."
},
"allowed": [
"@atjsh/llmlingua-2",
"@aws-sdk/client-bedrock-runtime",
"@axe-core/playwright",
"@cyclonedx/cyclonedx-npm",
"@dnd-kit/core",
"@dnd-kit/sortable",
"@dnd-kit/utilities",
"@huggingface/transformers",
"@lobehub/icons",
"@modelcontextprotocol/sdk",
"@monaco-editor/react",
"@ngrok/ngrok",
"@opencode-ai/plugin",
"@playwright/test",
"@size-limit/file",
"@stryker-mutator/core",
"@stryker-mutator/tap-runner",
"@swc/helpers",
"@tailwindcss/postcss",
"@testing-library/dom",
"@testing-library/jest-dom",
"@testing-library/react",
"@testing-library/user-event",
"@toon-format/toon",
"@types/better-sqlite3",
"@types/bun",
"@types/mdx",
"@types/node",
"@types/react",
"@types/react-dom",
"@types/safe-regex",
"@types/ws",
"@vitejs/plugin-react",
"@xyflow/react",
"axios",
"bcryptjs",
"better-sqlite3",
"bottleneck",
"bun",
"c8",
"clsx",
"commander",
"concurrently",
"cron-parser",
"cross-env",
"csv-stringify",
"ctrf",
"dompurify",
"dpdm",
"electron",
"electron-builder",
"electron-updater",
"esbuild",
"eslint",
"eslint-config-next",
"eslint-plugin-react-hooks",
"eslint-plugin-sonarjs",
"express",
"fast-check",
"fetch-socks",
"fflate",
"fumadocs-core",
"fumadocs-mdx",
"fumadocs-ui",
"glob",
"http-proxy-middleware",
"https-proxy-agent",
"httpyac",
"husky",
"ink",
"ink-spinner",
"ink-text-input",
"ioredis",
"jose",
"js-tiktoken",
"js-yaml",
"jscpd",
"jsdom",
"jsonc-parser",
"junit-to-ctrf",
"keytar",
"knip",
"license-checker-rseidelsohn",
"lint-staged",
"lockfile-lint",
"lowdb",
"lucide-react",
"marked",
"marked-terminal",
"material-symbols",
"mermaid",
"monaco-editor",
"next",
"next-intl",
"next-themes",
"node-loader",
"node-machine-id",
"omniglyph",
"onnxruntime-node",
"open",
"opencode-ai",
"ora",
"parse5",
"pino",
"pino-abstract-transport",
"pino-pretty",
"playwright",
"playwright-ctrf-json-reporter",
"prettier",
"promptfoo",
"react",
"react-dom",
"react-is",
"react-markdown",
"react-reconciler",
"recharts",
"safe-regex",
"selfsigned",
"sharp",
"size-limit",
"smol-toml",
"socks",
"sql.js",
"sqlite-vec",
"tailwind-merge",
"tailwindcss",
"tls-client-node",
"tsup",
"tsx",
"turndown",
"turndown-plugin-gfm",
"type-coverage",
"typescript",
"typescript-eslint",
"undici",
"update-notifier",
"uuid",
"vitest",
"wait-on",
"wreq-js",
"ws",
"wtfnode",
"xxhash-wasm",
"yazl",
"zod",
"zustand"
]
}