fix(queue): leid de 'as'-enum af uit QUEUE_MODELS in plaats van hem over te typen #107
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/queue-kimi-enums"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
T-125: de vier
as-enums in de queue-tools afleiden uitQUEUE_MODELS, plus de submodule-bump diekimibinnenhaalt.Het gat dat dit dicht.
src/queue/identity.tsvalideerde al netjes tegen de runtime-array, maar de vier tool-schema's hadden de lijst overgetypt. Gevolg:S4M_MODEL=kimiwerkte, terwijlas: 'kimi'door Zod geweigerd werd vóórdat identity-code ooit draaide. En omdatsrc/queue/types.tsalleen het type importeert en niet de array, bleef de typecheck bij die drift gewoon groen — de stille faalmodus die dit vocabulaire kenmerkt.Zod 4 doet dit uit zichzelf. Ik verwachtte de mutable-tuple-cast (
[...QUEUE_MODELS] as [...]) nodig te hebben; dat is de Zod-3-workaround. Deze repo draait Zod 4.3.6, waar_enumeenreadonly string[]accepteert, dusz.enum(QUEUE_MODELS)volstaat. Beide vormen zijn langstscgehaald en leveren hetzelfde outputtype; de cast is weggelaten omdat hij zou suggereren dat er iets te repareren viel.Vier losse imports in plaats van één gedeelde constante —
src/queue/types.tslegt in zijn header expliciet vast dat het gedeelde vocabulaire daar bewust niet opnieuw ge-exporteerd wordt, zodat de herkomst per bestand leesbaar blijft, enqueue-next.tsdeed dit al zo voorQUEUE_REQUEST_TYPES.Een vijfde plek die de greps niet vonden. De
descriptionvanqueue_pushsomde de modellen met de hand op ("models: claude, codex, jp"). Geen quotes rond de losse waarden, dus onvindbaar met de voorgeschreven zoekopdracht — en juist die tekst is wat een agent leest om te weten welke waarden bestaan. Nu afgeleid uitQUEUE_SERVERS/QUEUE_MODELS.De tests bewijzen iets, en dat was niet vanzelfsprekend. Het mock-serverpatroon in deze repo roept handlers rechtstreeks aan en slaat Zod dus over; een test die enkel
server.call({as:'kimi'})doet was óók onder de oude hardcoded lijst groen geweest. De nieuwe tests trekken daarom hetinputSchemauit de gecaptureerderegisterTool-meta en parsen daar tegenaan, plus een negatieve assertie opas:'gpt'zodat een sluipendez.string()ze niet groen houdt. Mutatie bevestigd: enums terugdraaien naar de oude lijst laat exact vier tests vallen, één per tool.Verificatie. 1339 passed (was 1335), 29 skipped, typecheck exit 0. Submodule op
9812ae5;git diff --stat prisma/schema.prismaleeg en 39 modellen — de generatie-val uit eerdere uitrollen is gecontroleerd, niet aangenomen.Nog open, bewust buiten scope:
queue-push.ts:14heefttype: z.enum(['task','info','review_request'])terwijlQUEUE_REQUEST_TYPESbestaat — dezelfde klasse drift, ander vocabulaire. Belegd in T-129, samen met de pariteitsgate.🤖 Generated with Claude Code