P-H033 — Adapter-pattern tool gating (parent plan plan-2026-05-16-prelaunch-audit, sub-plan plan-stage-c-high-batch). This is the FINAL Stage C deferred-item release. With 1.10.5 (Ed25519 license signing), 1.10.6 (CSP hardening), 1.10.7 (config-driven SQL table names), and now 1.10.8, all 4 Stage C deferred items have shipped — Stage C reaches 38/38 P-H items SHIPPED. Closes the bug class where tools.ts:103,207,261 did direct config.framework.router === 'trpc' / config.framework.orm === 'prisma' comparisons that bypass the adapter pattern and make custom adapters' tool surfaces invisible to the dispatcher.
Added
packages/core/src/lib/framework-supports.ts—supportsRouter(name)+supportsOrm(name)helpers that consult BOTH the legacy top-levelframework.router/.ormfield AND the per-language v2 schemaframework.languages.<lang>.router/.ormentries. Future framework adapters can light up tool surfaces without hand-editingtools.ts.packages/core/src/tests/framework-supports-no-direct-comparison.test.ts— 2-case drift-guard: (1) scanspackages/core/src/*(excludinglib/framework-supports.ts+ tests +detect/+commands/*config-builders) and asserts zeroconfig.framework.router ===/config.framework.orm ===direct comparisons; (2) verifies both helpers return booleans.
Fixed
packages/core/src/tools.ts:103,207,261— 3 tool-gating decisions migrated from direct field comparisons tosupportsRouter('trpc')/supportsOrm('prisma')helper calls. Default behavior preserved (default-prefix tRPC repos still gettrpc_map, default-prefix Prisma repos still getschema); custom-adapter installs that setframework.languages.<lang>.router='trpc'instead of the legacy top-level field now ALSO activatetrpc_map(previously they wouldn't).packages/core/src/tests/sql-table-names-no-hardcoded.test.ts+framework-supports-no-direct-comparison.test.ts— walker hardened against transient tmp directories created+deleted by concurrent tests (-tmpsuffix skip + ENOENT-tolerant statSync). Prevents flake when running the full suite.
Stage C Final Summary
- 1.10.5 P-H019 Ed25519 license signing (operator-provisioned Supabase Edge Function secret)
- 1.10.6 P-H022 CSP partial hardening (3 new directives + JSON-LD sha256; full nonce migration deferred to
plan-csp-nonce-migration) - 1.10.7 P-H032 207 SQL substitutions → config-driven table names via
t()helper - 1.10.8 P-H033 adapter-pattern tool gating (THIS release)