feat(dispatch): usage van een poging meesturen met het resultaat (T-1972) #103
No reviewers
Labels
No labels
severity/s3
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-docker!103
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/t1972-dispatch-usage"
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?
Waarom (T-1972, PBI-175 / ST-1622)
QUEUE_REVIEW-dispatchjobs hadden geen usage-data op
claude_jobs. De gegevens staan wel in het transcript van het kind, maar niemand las ze daaruit. Hangt af van scrum4me-mcpfeat/t1972-dispatch-usage, die eerst live moet zijn.Wat
lib/dispatch-usage.ts:usageFromEvents(runtime, lines):turn.completed, net alsparseCodexJsonlUsagein mcp. De invoer telt zonder het deel uit de cache; cache writes blijven 0.result-regel:modelUsageover alle modellen (inclusief subagents), andersusage. Het model komt uitinit, met[1m]genormaliseerd naar-1m. Stream-json herhaalt de assistant-usage per contentblok, dus die regels tellen niet mee.parse_error; een ongeldig modeltoken wordtnull.readDispatchUsage: leesttranscript.jsonlmet de run-log-lezer (readTranscript, nu geëxporteerd), dus met dezelfde link- en groottegrenzen. Geen transcript geeftno_usage_events, een geweigerd transcriptparse_error; de functie gooit nooit.usage. Die wordt één keer gelezen nastageResult, vastgelegd in het journal naast het resultaat, en meegestuurd met elke submit van dat resultaat, ook bij een replay.DISPATCH_USAGE_FAILED.usagealleen mee als het er is. Het entrypoint bedraadt de port metconfig.outputRooten de profielruntime.Verificatie
npx vitest run: 1083 geslaagd. De 2 bestaande falers intranscript-retention(BSD-chmodop macOS) staan los hiervan.tsc -p tsconfig.dispatch.jsonis schoon.feat/t1972-dispatch-usage: 9 van 9;4f0bdb1: beide review-cases blijven oppending_receipt, want de oude route weigert het veld. Dus eerst mcp uitrollen.🤖 Generated with Claude Code
REQUEST_CHANGES
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
lib/dispatch-usage.ts:63(ook:52): afgekapt transcript wordt als volledige usage verwerkt. Zowelread.truncatedals de bestaande child-markerdispatch.transcript_truncatedwordt genegeerd. Vanaf de limiet van 16 MiB verdwijnen latere usage-events: Codex rapporteert eerdere turns alscapturedmet te lage totalen; Claude rapporteertno_usage_eventswanneer zijn afsluitenderesultwegvalt. Gereproduceerd met de echte transcript-writer en een kleinere limiet: twee turns met 100 + 200 inputtokens gevencapturedmet 100. Detecteer beide truncatievormen en rapporteer een expliciete fout/onvolledige status, of verzamel volledige usage onafhankelijk van de begrensde log. Voeg regressietests voor Codex en Claude toe.De normale resultaatroute, journal-replay en optionele transportparameter volgen de bestaande patronen. De productdocumentatie verlangt betrouwbare tokenregistratie en zichtbare diagnoses bij ontbrekende usage; bovenstaande stille ondertelling voldoet daar niet aan.
Verificatie op
d79e3060f0c25d189b58b6aa80e39b7ab07a420e: dispatch-typecheck geslaagd; vier gerichte suites geslaagd (92 tests). Volledige suite: 1065 geslaagd, 20 mislukt, 8 overgeslagen; deze omgeving heeft/tmp-uitvoeringsbeperkingen (onder meer esbuildEACCESen niet-uitvoerbare shellfixtures). De volledige suite is dus niet groen; deze failures zijn niet als bewezen PR-regressies aangemerkt. De real-service contracttests zijn overgeslagen zonder MCP-testservice.REQUEST_CHANGES
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
lib/dispatch-transport.ts:138: het nieuweusage-veld breekt het huidige servicecontract.bin/run-dispatch-attempt.ts:142schakelt capture altijd in en ook een ontbrekend transcript levert een usage-object. De huidigescrum4me-mcpmain (a6b3fe0b74140e987542fac301b0648c22fdd161,src/dispatch/routes.ts:338) accepteert met een strict schema uitsluitendproofenresult. De nieuwe payload wordt dus geweigerd; de supervisor blijftpending_receipten verstuurt bij retries opnieuw dezelfde payload. Maak de service-uitbreiding en vereiste deployversie expliciet beschikbaar en bewijs het contract, of onderhandel ondersteuning voordat dit veld wordt meegestuurd.Verificatie
De PR-head
17fe5f131d65b88331eef4c4bfceafeee5e0bebbis opgehaald en beoordeeld. Dispatch-typecheck geslaagd. De contractweigering is gereproduceerd met het service-schema: zonder usage geaccepteerd, met usage geweigerd. De toegevoegde tests behandelen parsing, transcripttruncatie en normale journal-retries. De testsuite kon in deze omgeving niet starten:/tmpweigert het laden van de native Rolldown-module; dit is geen aangetoonde testregressie. De cross-repo HTTP/Postgres-gate is niet uitgevoerd. Zonder bewezen compatibele service is goedkeuring niet verantwoord.Contract bewezen tegen gemergde service. scrum4me-mcp#179 is gemerged (
aaa52ce). De cross-repo contractgate van deze branch (d761774) tegen scrum4me-mcp mainaaa52ce: 9/9 geslaagd (review-cases inclusief usagekolommen op de job). De vereiste minimale serviceversie staat nu expliciet indocs/dispatch-runtime-operator.md› Service contract. Uitrolvolgorde: eerst de service opaaa52ce, dan dit supervisor-image.COMMENT
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
captured. Gereproduceerd metinput_tokens: "1200"enoutput_tokens: -1: resultaat iscapturedmet nulwaarden. Valideer aanwezige tellers, rapporteerparse_errorbij ongeldige waarden en voeg malformed-input-tests toe. Niet blokkerend voor geldige provider-events./tmp(Permission denied/failed to map segment). De dispatch-typecheck slaagt; geïsoleerde parserchecks voor cached input en truncatie slagen.De wijziging hergebruikt de bestaande transcriptreader, bewaart usage samen met het resultaat voor replay en bevat gerichte tests voor capture, replay, transport en truncatie. De vereiste serviceversie en uitrolvolgorde staan in de operatordocumentatie. Geen bewezen blokkerende finding; vanwege bovenstaande opmerking en verificatiebeperking geen goedkeuring.
REQUEST_CHANGES
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
lib/dispatch-supervisor.ts:227(recovery-pad:lib/dispatch-supervisor.ts:287, transport:lib/dispatch-transport.ts:152): usage wordt met het resultaat gejournalled, maar gaat verloren wanneer een mislukte submit via eenauthority: 'none'-receipt wordt hersteld.recoverNonLaunchAttemptgeeft alleen binding en resultaat door; het recovery-contract en transport hebben geen usage-parameter. Recovery kan daarna succesvol afsluiten en de transcript-output opruimen zonder de opgeslagen usage aan de service te leveren. Geef dezelfdej.usageook via de recovery-route door, stem het servicecontract daarop af en voeg een regressietest viarunManagedOncemetauthority: 'none'toe. Een tijdelijke reviewtest reproduceert dit: usage staat op schijf, recovery eindigt succesvol, maar de submit mist het derde argument.Verificatie
Beoordeeld op commit
7a6d9ae95efeafbd520cdd7b8ca7e0a5f6fe512a. De vier relevante testsuites slagen: 84 passed, 8 skipped; dispatch-typecheck slaagt. De cross-repo-servicegate is niet uitgevoerd. De volledige suite gaf 1072 passed, 20 failed en 8 skipped; de falende suites bevatten uitvoeringsproblemen door de reviewomgeving (/tmpisnoexec), die hier niet als PR-regressie zijn aangemerkt. De operator-documentatie beschrijft de benodigde serviceversie en uitrolvolgorde.Review #103 verwerkt. (1) Herstelpad:
recoverNonLaunchAttemptstuurt de journalled usage mee; het transport zetusageop/attempts/recovery/result(alleen als aanwezig). Regressietest viarunManagedOncemetauthority:'none'+ transporttest (beide eerst RED). De servicekant staat op main: scrum4me-mcp#180 (6b2a7a3). (2) Ongeldige tellers →parse_error(7a6d9ae). Contract: cross-repo gate van deze branch tegen scrum4me-mcp main6b2a7a3: 9/9. Vitest 1092 geslaagd (2 bestaande macOS-falers intranscript-retention),tsc -p tsconfig.dispatch.jsonschoon. Minimale serviceversie indocs/dispatch-runtime-operator.mdbijgewerkt naar6b2a7a3.COMMENT
geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
De diff behoudt usage in het journal en stuurt dezelfde snapshot mee bij gewone replay en non-launch recovery. De parser voorkomt dubbel tellen van Claude-events, splitst Codex cached input af en behandelt truncatie expliciet. De operator-documentatie beschrijft de vereiste serviceversie en uitrolvolgorde. Geen blokkerende codefinding vastgesteld.
Verificatie: PR-head gecontroleerd op
aedd9b4f7f91a7af72d37d7055ba81bcc910522e;typecheck:dispatchslaagt na initialisatie van het gepinde shared-submodule; vier geïsoleerde parserchecks slagen. De volledige Vitest-suite kon niet starten door de noexec-beperking op/tmp(native binding kan niet geladen worden). Dit is een omgevingsbeperking, geen aangetoonde PR-regressie. Vanwege de resterende test-/contractonzekerheid geen APPROVED.