chore(shared): record what the outage actually cost, and lock the ratchet - #49
Merged
Merged
Conversation
…chet
Adoption of `ai-kit` went 2 -> 5 — fleetcrown, aoz-housing, truthseeker,
botsmann and this repo. All of it as a side effect of repairing the outage
rather than as a migration project, which is the only way adoption has ever
moved here.
Three repos deliberately did NOT adopt, and the reason is the same in each:
kivvi, orangecat and evig already own model REGISTRIES carrying context windows,
tool and vision support, and per-token cost — none of which `ai-kit` models.
Installing it beside one of those adds a second source of model truth to a repo
whose problem was having two. They were repaired in place and left pointing at
the daily audit. Merging a registry into `ai-kit` is a real design question and
belongs to a human, not to an outage.
The `AI provider client` row is re-priced. The first count said five repos and
six pins; it was seven repos, and inside a repo the id was written down two to
FOUR times. Kivvi needed three PRs to remove one retired id — provider registry,
an app's inline fetch body, the fallback chain, and a client hook's
`FALLBACK_MODEL` — because each pass only found the copies the tooling could
see. That is the cost of duplication measured rather than argued.
The audit row now says what it learned about itself. Repairing seven repos with
it exposed nine faults in both directions, and the blind spots were not random —
they mirrored the shapes people write (`GROQ_MODELS = {` defeats `\bmodels?\b`,
`models: AIModel[] = [` defeats an array pattern, `modelId` is not `model`). It
also read ids out of comments, reporting a retired id in the very commit that
removed it. The note that matters for whoever touches it next: never trust its
first clean run after widening — re-run the live sweep and read every line,
because tightening the matcher to kill a false positive silently deleted a real
finding once already.
Also: `--update` locks in rate-limit 14 -> 13. A ratchet that only ever gets
checked never falls, and this one fell on somebody's work.
Version bumped to v0.4.0, which is breaking: form filling moved off the root
export to `ai-kit/forms`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
chore(shared): record what the outage actually cost, and lock the ratchet
Adoption of
ai-kitwent 2 -> 5 — fleetcrown, aoz-housing, truthseeker,botsmann and this repo. All of it as a side effect of repairing the outage
rather than as a migration project, which is the only way adoption has ever
moved here.
Three repos deliberately did NOT adopt, and the reason is the same in each:
kivvi, orangecat and evig already own model REGISTRIES carrying context windows,
tool and vision support, and per-token cost — none of which
ai-kitmodels.Installing it beside one of those adds a second source of model truth to a repo
whose problem was having two. They were repaired in place and left pointing at
the daily audit. Merging a registry into
ai-kitis a real design question andbelongs to a human, not to an outage.
The
AI provider clientrow is re-priced. The first count said five repos andsix pins; it was seven repos, and inside a repo the id was written down two to
FOUR times. Kivvi needed three PRs to remove one retired id — provider registry,
an app's inline fetch body, the fallback chain, and a client hook's
FALLBACK_MODEL— because each pass only found the copies the tooling couldsee. That is the cost of duplication measured rather than argued.
The audit row now says what it learned about itself. Repairing seven repos with
it exposed nine faults in both directions, and the blind spots were not random —
they mirrored the shapes people write (
GROQ_MODELS = {defeats\bmodels?\b,models: AIModel[] = [defeats an array pattern,modelIdis notmodel). Italso read ids out of comments, reporting a retired id in the very commit that
removed it. The note that matters for whoever touches it next: never trust its
first clean run after widening — re-run the live sweep and read every line,
because tightening the matcher to kill a false positive silently deleted a real
finding once already.
Also:
--updatelocks in rate-limit 14 -> 13. A ratchet that only ever getschecked never falls, and this one fell on somebody's work.
Version bumped to v0.4.0, which is breaking: form filling moved off the root
export to
ai-kit/forms.🤖 Generated with Claude Code