trustgraph/ts/scripts/effect-laws.allowlist.json
elpresidank 0746d7ffd5 feat(ts): add real quality gates — Biome lint + effect-law ratchet + class inventory
- biome.json (2.4.16, linter-only) wired as "lint" in all six packages
- scripts/check-effect-laws.ts: Effect-native law enforcement encoding the
  adapted beep-effect effect-first/schema-first laws (no native JSON/switch/
  sort/fetch/timers, no process.env, no throw new, no Effect.run* outside
  boundaries, no Schema-suffixed constants, no node:fs/path, AST-based
  pure-data interface detection per law 38/39)
- ratcheting baseline allowlist (95 entries / 290 findings) that must shrink
  to documented exemptions only; stale counts fail the gate
- root lint chains turbo lint + law check + native-class inventory
- fix all 163 initial Biome findings: import-type style, templates, two `any`s,
  ten non-null assertions (librarian getService gate, A.matchRight in atoms,
  ensureNode returning nodes, main.tsx mount guard)

Gates: lint, check:tsgo, build, test (force, 11 tasks) all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 06:40:01 -05:00

1 line
7.9 KiB
JSON

{"exemptions":[],"baseline":[{"rule":"no-effect-run","path":"packages/base/src/processor/async-processor.ts","count":1},{"rule":"no-effect-run","path":"packages/client/src/socket/effect-rpc-client.ts","count":10},{"rule":"no-effect-run","path":"packages/client/src/socket/trustgraph-socket.ts","count":9},{"rule":"no-effect-run","path":"packages/flow/src/agent/mcp-tool/service.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/agent/react/service.ts","count":2},{"rule":"no-effect-run","path":"packages/flow/src/chunking/service.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/decoding/pdf-decoder.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/embeddings/ollama.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/extract/knowledge-extract.ts","count":4},{"rule":"no-effect-run","path":"packages/flow/src/librarian/service.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/azure-openai.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/claude.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/mistral.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/ollama.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/openai-compatible.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/model/text-completion/openai.ts","count":1},{"rule":"no-effect-run","path":"packages/flow/src/prompt/template.ts","count":1},{"rule":"no-effect-run","path":"packages/mcp/src/server-effect.ts","count":1},{"rule":"no-effect-run","path":"packages/workbench/src/atoms/workbench.ts","count":1},{"rule":"no-effect-run","path":"packages/workbench/src/components/error-boundary.tsx","count":1},{"rule":"no-effect-run","path":"packages/workbench/src/qa/mock-api.ts","count":1},{"rule":"no-error-throw","path":"packages/workbench/src/main.tsx","count":1},{"rule":"no-error-throw","path":"scripts/seed-config.ts","count":1},{"rule":"no-error-throw","path":"scripts/seed-demo.ts","count":4},{"rule":"no-error-throw","path":"scripts/seed-flows.ts","count":2},{"rule":"no-error-throw","path":"scripts/test-pipeline.ts","count":2},{"rule":"no-native-fetch","path":"scripts/seed-config.ts","count":1},{"rule":"no-native-fetch","path":"scripts/seed-demo.ts","count":11},{"rule":"no-native-fetch","path":"scripts/seed-flows.ts","count":1},{"rule":"no-native-fetch","path":"scripts/test-pipeline.ts","count":5},{"rule":"no-native-json","path":"scripts/seed-config.ts","count":6},{"rule":"no-native-json","path":"scripts/seed-demo.ts","count":6},{"rule":"no-native-json","path":"scripts/seed-flows.ts","count":3},{"rule":"no-native-json","path":"scripts/test-pipeline.ts","count":6},{"rule":"no-native-sort","path":"packages/client/src/socket/trustgraph-socket.ts","count":2},{"rule":"no-native-sort","path":"packages/flow/src/config/service.ts","count":3},{"rule":"no-native-sort","path":"packages/flow/src/cores/service.ts","count":1},{"rule":"no-native-sort","path":"packages/flow/src/flow-manager/service.ts","count":1},{"rule":"no-native-sort","path":"packages/flow/src/librarian/service.ts","count":1},{"rule":"no-native-sort","path":"packages/flow/src/retrieval/graph-rag.ts","count":1},{"rule":"no-native-sort","path":"packages/workbench/src/atoms/workbench.ts","count":2},{"rule":"no-native-sort","path":"packages/workbench/src/components/chat/explain-graph.tsx","count":1},{"rule":"no-native-sort","path":"packages/workbench/src/pages/graph.tsx","count":1},{"rule":"no-native-sort","path":"packages/workbench/src/qa/mock-api.ts","count":1},{"rule":"no-native-sort","path":"scripts/inventory-native-classes.ts","count":1},{"rule":"no-native-sort","path":"scripts/seed-demo.ts","count":1},{"rule":"no-native-sort","path":"scripts/seed-flows.ts","count":1},{"rule":"no-native-timers","path":"scripts/test-pipeline.ts","count":2},{"rule":"no-node-fs-path","path":"scripts/create-test-pdf.ts","count":1},{"rule":"no-node-fs-path","path":"scripts/inventory-native-classes.ts","count":2},{"rule":"no-process-env","path":"scripts/seed-config.ts","count":2},{"rule":"no-process-env","path":"scripts/seed-demo.ts","count":5},{"rule":"no-process-env","path":"scripts/seed-flows.ts","count":1},{"rule":"no-process-env","path":"scripts/test-pipeline.ts","count":11},{"rule":"no-schema-suffix","path":"packages/base/src/schema/primitives.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/backend/types.ts","count":2},{"rule":"schema-first-data","path":"packages/base/src/messaging/consumer.ts","count":2},{"rule":"schema-first-data","path":"packages/base/src/messaging/request-response.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/messaging/runtime.ts","count":4},{"rule":"schema-first-data","path":"packages/base/src/metrics/prometheus.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/processor/async-processor.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/processor/flow.ts","count":2},{"rule":"schema-first-data","path":"packages/base/src/runtime/config.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/runtime/messaging-config.ts","count":1},{"rule":"schema-first-data","path":"packages/base/src/schema/primitives.ts","count":2},{"rule":"schema-first-data","path":"packages/cli/src/commands/util.ts","count":1},{"rule":"schema-first-data","path":"packages/client/src/models/Triple.ts","count":6},{"rule":"schema-first-data","path":"packages/client/src/models/messages.ts","count":58},{"rule":"schema-first-data","path":"packages/client/src/socket/effect-rpc-client.ts","count":3},{"rule":"schema-first-data","path":"packages/client/src/socket/trustgraph-socket.ts","count":5},{"rule":"schema-first-data","path":"packages/flow/src/agent/react/tools.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/agent/react/types.ts","count":2},{"rule":"schema-first-data","path":"packages/flow/src/config/service.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/cores/service.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/embeddings/ollama.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/gateway/rpc-server.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/gateway/server.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/librarian/collection-manager.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/librarian/service.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/model/text-completion/common.ts","count":1},{"rule":"schema-first-data","path":"packages/flow/src/prompt/template.ts","count":2},{"rule":"schema-first-data","path":"packages/flow/src/qdrant/client.ts","count":4},{"rule":"schema-first-data","path":"packages/flow/src/query/embeddings/qdrant-doc.ts","count":3},{"rule":"schema-first-data","path":"packages/flow/src/query/embeddings/qdrant-graph.ts","count":3},{"rule":"schema-first-data","path":"packages/flow/src/query/triples/falkordb.ts","count":2},{"rule":"schema-first-data","path":"packages/flow/src/retrieval/document-rag.ts","count":2},{"rule":"schema-first-data","path":"packages/flow/src/retrieval/graph-rag.ts","count":4},{"rule":"schema-first-data","path":"packages/flow/src/storage/embeddings/qdrant-doc.ts","count":3},{"rule":"schema-first-data","path":"packages/flow/src/storage/embeddings/qdrant-graph.ts","count":3},{"rule":"schema-first-data","path":"packages/flow/src/storage/triples/falkordb.ts","count":2},{"rule":"schema-first-data","path":"packages/mcp/src/server-effect.ts","count":2},{"rule":"schema-first-data","path":"packages/workbench/src/atoms/workbench.ts","count":21},{"rule":"schema-first-data","path":"packages/workbench/src/lib/graph-utils.ts","count":3},{"rule":"schema-first-data","path":"packages/workbench/src/qa/initial-values.ts","count":1},{"rule":"schema-first-data","path":"packages/workbench/src/qa/mock-api.ts","count":1}]}