3.1 KiB
TrustGraph TS Effect-Native Status
Current State
The TypeScript port on ts-port-effect-v4 is Effect-first across the production
runtime surfaces completed in Phases 0-6. The law baseline is empty:
scripts/effect-laws.allowlist.json has no baseline entries and one documented
host-boundary exemption. The native-class inventory reports zero blocking
production native classes.
The client package's public barrel exports the Effect RPC gateway surface and
shared data models. The legacy trustgraph-socket.ts Promise BaseApi shim is
kept out of the package barrel and remains only for direct client tests.
Workbench QA uses its own minimal mock API shape.
Adapted Effect Laws
- Data that crosses wires, persistence, or domain boundaries uses
S.Class,S.Struct, or tagged schema unions. Service contracts and option bags may remain interfaces. - Production code reads configuration through
Config, notprocess.env. - JSON encode/decode goes through Schema codecs such as
S.UnknownFromJsonString. - HTTP clients use
effect/unstable/httpwith platform layers. - Effects run at entrypoints through platform
runMain; libraries returnEffect,Stream,Layer, or service values. - Deterministic ordering uses
effect/Arrayand explicitOrders. - File/path work uses platform services rather than
node:fsornode:path. - Errors owned by TrustGraph code use tagged errors on the Effect channel.
Standing Exemptions
packages/workbench/src/main.tsxmay throw if#rootis missing. This is a browser host boundary and the app cannot render without the mount point.packages/flow/src/agent/mcp-tool/service.tsmay use the@modelcontextprotocol/sdkclient behind Effect wrappers. Effect v4 provides server-side MCP support here, not a replacement client.- Provider SDK integrations for OpenAI, Azure OpenAI, OpenAI-compatible,
Mistral, and Ollama stay behind
Effect.tryPromiseandmakeLanguageModelProvider. Claude already uses@effect/ai-anthropic. PubSubBackendremains a broker adapter contract. EffectPubSubis in-process only and is not a NATS replacement.- Tests and QA fixtures are excluded from production law checks.
Gate Commands
Phase 6 validation:
bun run check
bun run lint
bunx --bun turbo test build --force
git diff --check
Final Phase 7 acceptance, all no-cache where applicable:
bun run check:tsgo
bunx --bun turbo build lint test --force
bun run --cwd packages/mcp test
bun run workbench:qa
cd deploy && docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
bun run seed && bun run seed:flows && bun run seed:demo
SKIP_LLM=1 bun run test:pipeline
git diff --check
Final source audits:
bun scripts/check-effect-laws.ts
bun scripts/inventory-native-classes.ts
rg -n "fastify|@fastify/websocket|commander|zod" package.json packages scripts bun.lock
rg -n "@modelcontextprotocol/sdk" packages scripts package.json bun.lock
Expected result: no law baseline debt, zero blocking native classes, no Fastify, Commander, Zod, or server-side MCP SDK reintroduction. The MCP SDK client exemption remains documented above.