feat: the model registry and the grounding harness move into the engine - #19
Merged
Conversation
Phases 1–2 of the fleet AI-engine plan: ai-kit stops being only the transport layer and gains the two modules every adopter re-invented. ai-kit/registry — one SSOT for every callable model id. Two incidents, two invariants: a checker that does not enumerate its subjects cannot report the id it never knew about (eight days of model_not_found, 2026-08-18), so require() throws for anything unregistered and idsForVendor() IS the enumeration a catalog check walks; and three apps silently billed on fallback because a `:free` suffix was the whole paid/free boundary, so paid is a required FIELD and the validator refuses an entry whose flag contradicts its own price or id. freeOnly() is the platform-key guard (unregistered ids are dropped too — an unknown price spends someone's money only when a person decides it does); toolCapable() carries the probe verdicts (native / text / none / unprobed — five of nine probed free models only speak the text protocol). ai-kit/grounding — facts, contract, and the deterministic fabrication check, lifted from fleetcrown/src/lib/agent/core (the canonical copy of the FleetCrown↔OrangeCat mirror). The mirror's README called the duplication "deliberate and temporary" and named this extraction as the exit. Two mechanical deltas from verbatim: `.js` extensions on relative imports (pure ESM) and two null-guards under this package's noUncheckedIndexedAccess. Adopting apps delete their copies and the SHA-256 drift check with them. Both are subpath exports, not root re-exports — the v0.4.0 lesson (one import path per concern) and zero collision with the root export surface. verify green: lint, typecheck, build, 75/75 tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn
catomean
force-pushed
the
feat/registry-and-grounding
branch
from
August 29, 2026 08:43
41674d4 to
4cb2042
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phases 1–2 of the fleet AI-engine plan:
ai-kit/registry(enumeration + the paid/free boundary as a validated field + probe-verdict gating) andai-kit/grounding(the FleetCrown↔OrangeCat mirrored harness, extracted — the exit its own README committed to). Subpath exports only; root surface untouched (no collision with #18).verify green: lint · typecheck · build · 75/75.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn