feat(providers): advertise free-tier capability in provider plugin manifest - #12786
Merged
diegosouzapw merged 1 commit intoSep 10, 2026
Conversation
maxmad64bis
force-pushed
the
feat/manifest-free-tier-capability
branch
from
September 5, 2026 09:48
af5eb22 to
b3edc78
Compare
This was referenced Sep 5, 2026
maxmad64bis
force-pushed
the
feat/manifest-free-tier-capability
branch
2 times, most recently
from
September 6, 2026 15:11
8787944 to
60222bd
Compare
maxmad64bis
force-pushed
the
feat/manifest-free-tier-capability
branch
from
September 10, 2026 11:51
60222bd to
067a714
Compare
diegosouzapw
merged commit Sep 10, 2026
0048be7
into
diegosouzapw:release/v3.8.51
9 of 16 checks passed
diegosouzapw
pushed a commit
that referenced
this pull request
Sep 10, 2026
…eights, quality gate and scoring diagram now covered (#12507) Estender o gate de contagens para headings, rankings, catálogo, pesos, quality gate e o diagrama de scoring é exatamente o tipo de trabalho que evita a classe inteira em vez de um caso. Falo por experiência desta campanha: o `check:docs-counts` caiu **duas vezes** hoje pela mesma causa — contagem de migration escrita à mão em três arquivos mais 41 mirrors, desatualizando a cada migration nova (#12970 e #13209). Cada superfície que este PR passa a cobrir é uma que deixa de virar base-red na mão de quem vier depois. Revalidei sobre o tip: **19/19**, `check:docs-counts-sync` com 0 drifts, `check:docs-all` PASS, `check:doc-links` PASS. **Integração:** dois conflitos. 1. `scripts/check/check-docs-counts-sync.mjs` — o bloco de leitura de fatos conflitou com os imports de free-tier que entraram pelo #12786/#12744 nesta campanha. Aditivo, os dois conjuntos ficaram. 2. `docs/diagrams/auto-combo-scoring.mmd` — o seu rótulo dizia `reliability (0.0000)`, mas o #12731 mergeou horas antes e passou a dar peso de reliability a todo mode pack. Ficou o rótulo do tip, `reliability (0.0000 DEFAULT, 0.03 packs, 0.04 reliable)`, que é o número real agora.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…nifest (diegosouzapw#12786) Validado numa worktree combinada com a onda de roteamento/free-tier desta leva sobre `release/v3.8.51`: typecheck:core limpo, check-api-typecheck OK (288), check-file-size OK após rebaseline, 84/85 nos testes focados no runner Node. Metadado de display derivado da mesma fonte da decisão, com um gate STRICT que quebra o CI se a contagem do manifesto divergir do catálogo — é o detalhe que impede a tag de virar mentira daqui a três meses. Registrar que 77 entradas de catálogo viram 76 no manifesto porque o `arcee-ai` ainda não tem entrada no registry é exatamente o tipo de discrepância que costuma virar bug fantasma.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…eights, quality gate and scoring diagram now covered (diegosouzapw#12507) Estender o gate de contagens para headings, rankings, catálogo, pesos, quality gate e o diagrama de scoring é exatamente o tipo de trabalho que evita a classe inteira em vez de um caso. Falo por experiência desta campanha: o `check:docs-counts` caiu **duas vezes** hoje pela mesma causa — contagem de migration escrita à mão em três arquivos mais 41 mirrors, desatualizando a cada migration nova (diegosouzapw#12970 e diegosouzapw#13209). Cada superfície que este PR passa a cobrir é uma que deixa de virar base-red na mão de quem vier depois. Revalidei sobre o tip: **19/19**, `check:docs-counts-sync` com 0 drifts, `check:docs-all` PASS, `check:doc-links` PASS. **Integração:** dois conflitos. 1. `scripts/check/check-docs-counts-sync.mjs` — o bloco de leitura de fatos conflitou com os imports de free-tier que entraram pelo diegosouzapw#12786/diegosouzapw#12744 nesta campanha. Aditivo, os dois conjuntos ficaram. 2. `docs/diagrams/auto-combo-scoring.mmd` — o seu rótulo dizia `reliability (0.0000)`, mas o diegosouzapw#12731 mergeou horas antes e passou a dar peso de reliability a todo mode pack. Ficou o rótulo do tip, `reliability (0.0000 DEFAULT, 0.03 packs, 0.04 reliable)`, que é o número real agora.
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.
Summary
Sidecars and dashboards can now filter free-capable providers straight from the plugin manifest. A provider with documented free models carries a
free-tiertag next to its existing capabilities (usage-fetch,usage-supported, ...), so consumers don't need to read the quota catalog. It's display metadata only — routing and quota logic are untouched.The tag is derived live from the free-model catalog (77 providers at this writing) and only lights up for providers the registry actually serves (76 — one catalog entry,
arcee-ai, has no registry entry yet). A STRICT docs gate fails CI if the manifest count ever drifts from the catalog.Related Issues
Validation
npm run lintTests Added Or Updated
tests/unit/free-tier-providers.test.ts(new) — leaf set derivation: known free provider, alias contract, non-string rejection,pollinationsdespitediscontinuedrows, unknown id excluded (5/5 pass)tests/unit/provider-plugin-manifest.test.ts(extended) — 5 new emission cases, all pass (5/5): id branch, alias-only branch (legacy-free/api-airforce), unknown id omitted,pollinations, capabilities stay sorted (whole file 15/15 with the 10 pre-existing cases)tests/unit/check-docs-counts-sync.test.ts(extended) — gate form pins +buildChecks()contains afree-tiercheck;node scripts/check/check-docs-counts-sync.mjsshowsmanifest 76 vs leaf∩registry 76 (leaf 77)greenCoverage Notes
open-sse/config/(new leaffreeTierProviders.ts, union +1 andcapabilitiesForbranch inproviderPluginManifest.ts) plus the docs-sync gate script. Covered by the three test files above; leaf is a pure derivation with no branches beyond the null-guard.service-provider-plugin-manifest4/4, manifest route 10/10). One pre-existing failure is inherited from the red base, not this branch: the "gate exits 0 on synced repo" test trips on the 169-vs-170 migrations doc drift (🔴 Release branch not green: release/v3.8.51 #12732).Reviewer Notes
arcee-aiis cataloged but has no registry entry yet. The raw size is logged in the gate detail line so the gap stays visible. Ifarcee-aigets registered, both numbers move together and the gate stays green.hasFreeTierProvidermatches exact ids only (noresolveProviderId—open-ssecan't import fromsrc/), unlikeproviderHasFreeModelswhich resolves aliases. An alias not declared in the entry'saliasfield is missed on the manifest side; callers must pass both id and alias (ascapabilitiesFordoes).