nightly improvement: make live usage accounting atomic #153
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "proposal/nightly-20261028-atomic-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?
Nightly-Improvement-Vorschlag — nur PR, kein Merge/Deployment
Erster ausdrücklich gekennzeichneter Nightly-Vorschlag aus NIGHT 2026-10-28, Records 8 + 9 (0-basiert):
snape-live-usage-atomicundsnape-live-cost-atomic. Kein Sammelimport anderer Nachtarbeiten; Renderer und Default-Worker sind nicht enthalten. Die ursprünglichenimproved-Receipts sind Herkunftsnachweise, kein unabhängiger Evaluator-PASS.Problem und Nutzen
Live-Usage-Events konnten bisher Zähler bereits verändern, bevor ungültige weitere Token-/Kostenwerte auffielen: negative oder gebrochene Tokens, NaN/Infinity, nichtnumerische Werte und Überläufe konnten Verbrauchsanzeigen und Metadaten inkonsistent machen.
Dieser kleine Patch prüft alle vier Token-Deltas samt Summen und Kosten samt Kostensumme vor jeder Mutation. Ein ungültiges Usage-Event wird vollständig verworfen: keine teilweise beschädigten Zähler, keine vorgezogenen Modellmetadaten, keine neue Usage-Sequenz. Gültige Folgeevents und Text-/Abschlussverarbeitung bleiben möglich.
Beispiele vorher → nachher:
inputTokens: 5, aberoutputTokens: -1: zuvor teilweise/falsche Verbrauchszählung möglich → gesamtes Usage-Update ohne Zustandsänderung verworfen.costUsd: NaNoder überlaufende Kostensumme: zuvor Tokens bereits addiert und Kosten beschädigt → weder Tokens noch Kosten noch Metadaten werden übernommen.costUsd: 0bzw. Bruchkosten bleiben gültig; bisherige Summen werden nicht zurückgesetzt.Exakter geprüfter Umfang
86053ba8d0507ba5055930a808884845078ced2ee4ebb7bbd622016aabaf646130e0ddb87be43337925a71aab4559ac87d53b5ea03d69050300c0406972ed8af68488f8a6bfa8400d596887ffc99eb323302c3882d4dbf591e894799src/api/runs.ts,test/live-cost-atomic.test.ts,test/live-usage-atomic.test.ts,test/usage-atomic-regression.test.ts.Unabhängiges Exact-Review (ee2): keine offenen P0/P1 für genau diesen Commit/Tree/Patch. Review-Artefakt, SHA256
308df0e8e89603a78eb207168fa4267ff46acf4b519e876c7fd9da45ce021236. Vollpatch, Manifest, Handoff. Diese lokalen Evidence-Links sind keine öffentlich erreichbaren Forgejo-Artefakte; Pfade und Hashes dienen der exakten Zuordnung im Operator-Workspace.Das Review-Plugin wurde auf seinen tatsächlichen Status geprüft, ist jedoch weiterhin an den fremden Dirty-Core-Changeset
cbeaa734…gebunden. Kein Kandidaten-PASS dieses Plugins wird behauptet; weder Reviewbudget noch Schutz/Gates wurden verändert. Veröffentlichung erfolgt über den normalen Branch-/PR-Weg.Tests — reale Ergebnisse, kein grünes Vollsuite-Etikett
timeout 300 npm testDie drei expliziten Vollsuitefehler betreffen cron archive (
promptsundefined), scheduled worker (running statt completed) und dedicated review (pending statt passed). Baseline-Vergleiche reproduzieren Archive-/Reviewprobleme; der Workerfehler ist zeitabhängig und ebenfalls auf Base dokumentiert.Timeout-A/B-Evidenz: Base und Kandidat wurden unabhängig mit demselben begrenzten 45s-Lauf (result-orchestration, result-tool-hook, usage-atomic-regression, seriell) geprüft. Beide Exit 124, jeweils 14 pass / 0 fail / 2 cancelled. Der globale Timeout bricht laufende und noch wartende Dateien ab; Hook allein ist auf beiden Seiten 2/2 grün, eine größere Kandidatenstichprobe ebenfalls grün. Das belegt den Abbruchmechanismus, nicht, dass alle 49 abgebrochenen Tests isoliert bestehen. Die genaue Durchsatzursache der Vollsuiteüberschreitung bleibt offen. Kein nachgewiesener P0/P1 dieses Kandidatendeltas, aber weiterhin kein erfolgreicher Vollsuiteabschluss.
Grenzen und Publikationsstatus
Keine Reparatur bereits beschädigter Records, kein allgemeiner Event-Decoder, keine neue Diagnose verworfener Events.
costUsd: numberist Pflicht im Usage-Event; fehlende/null/String-Kosten sind keine gültigen optionalen Kosten. Shared node_modules ist nur ein ungetrackter lokaler Symlink, nicht im Commit.Vor Veröffentlichung wurden sämtliche 152 vorhandenen offenen/geschlossenen PRs sowie Remote-Branches und main abgeglichen: kein passender bestehender PR/Branch, main entspricht obiger Base. Die vorhandenen Repository-Labels konnten mangels
read:issue(HTTP 403) nicht gelesen werden; deshalb kein geratenes Label angelegt oder zugewiesen. Die Nightly-Kennzeichnung erfolgt ausdrücklich in Titel und diesem Text. Nur Vorschlag; kein Merge, kein Deployment, kein Image-Workflow.severus-snape referenced this pull request2026-10-29 05:55:20 +00:00