← EnergyViewEnergyView — auditresultaat
Uitgangspunt: v266 / c2d0742. Tariefdata en golden-referentie zijn niet herijkt. Alle wijzigingen staan in afzonderlijk terugdraaibare Git-commits.
| Fase | Resultaat | Volledige tests | Golden |
|---|
| 1 — structuur | src/ gescheiden, Prettier/CI, gedeelde escaping, statische regressiepoorten, korte README | 175/175 | 8/8 |
| 2 — laden | Gebundelde eager-graaf, hashes/caching, parallelle startdata, gas op aanvraag, HA-maandsplitsing | 178/178 | bron + gebouwde reportworker 8/8 |
| 3 — rekenen | Exact hergebruik, eerder vrijgeven van arrays/caches, gedeelde pool, CSV-worker | 181/181 | 8/8 |
| 4 — beveiliging | Requestgrenzen, rate limit zonder IP, JSON-fouten, HA-handshake, opt-in framebeleid | 184/184 | 8/8 |
| 5 — voorstellen | Promotiebronrisico's en concrete privacytekst apart ter beslissing | Geen extra productcode | Geen rekenwijziging |
De audit noemde 171 tests. De ontvangen v266 bevatte al 172; geen bestaande test verwijderd of verzwakt. Nieuwe regressies verklaren de hogere aantallen. Definitieve gebundelde goldencontrole: 8/8 geslaagd, met de werkelijk gebouwde reportworker. Laatste bronrun aankoopplan 21,45 s / 1.175 MiB piek; gebundelde run 19,81 s / 1.190 MiB. De spreiding onderstreept dat de geheugen- en CPU-winst niet als garantie mag worden gelezen.
Wat de metingen wel aantonen
- Eager-brongraaf: circa 1,20 MB / 139 modules naar één hoofd-bundle van circa 475 kB (159 kB lokale gzip-schatting). Niet hetzelfde als gemeten bytes over 4G. SheetJS blijft alleen voor Excel-import geladen.
- HA-startdataset circa 18,1 MB canoniek naar 1,99 MB met exact dezelfde tariefhistorie op aanvraag. Gas circa 1,98 MB pas wanneer nodig.
- Dispatch-oproepen dalen: dynamisch EV 29.377 → 25.202; studie 10.614 → 9.516; aankoopplan 42.457 → 36.462. De volledige kandidaatset blijft behouden.
- Indicatieve Node-vergelijking fase 2 → 3: dynamisch EV 16,98 → 15,17 s; aankoopplan 22,30 → 19,47 s. Piek-RSS aankoopplan 1.239 → 1.092 MiB; heap na afloop 979 → 477 MiB. Studie ongeveer gelijk, geheugen in die run iets hoger. Eén run is geen statistische garantie. Ruwe compacte cijfers.
- Geen rekenregel, batterijgrootte, investering of analyse verborgen/verwijderd. Exacte bedragen, identifiers en rangorde blijven het vangnet bepalen.
Open beperkingen en doelen
| Doel | Status |
|---|
| Invoer <2 s op throttled mobiel | Niet gemeten; lokale Chromium executable ontbreekt |
| Contractresultaat <2 s | Niet in throttled browser gemeten |
| Geen hoofdthreadtaken >50 ms / blokkade >100 ms | Niet bewezen; CSV-parser verplaatst, maar o.a. samenvatten/renderen gebeurt nog op hoofdthread |
| Zware analyses op achtergrond met voortgang | Workerprotocol/pool/cancellation getest; bestaande voortgang behouden; geen volledige mobiele jaarflow in echte browser gemeten |
| Mobiel geheugen veilig | Niet gehaald/bewezen; circa 1,1 GiB blijft een risico |
| Statische code volledig schoon | Niet gehaald: 496 bestaande checkJs- en 751 ESLint-diagnoses zichtbaar gebaselined; nieuwe diagnosegroepen/aantallen blokkeren CI |
| HA-installatie end-to-end | Niet beschikbaar; kaartprotocol, paden en builds getest |
| Default framing beperkt tot self | Bewust niet algemeen geactiveerd: breekt onbekende cross-origin HA-origins. Strikte buildoptie beschikbaar |
Echte browserwaarneming: gebundelde startpagina opent, gas-tabblad toont na klikken het juiste formulier. Dit is geen FCP-/TTI-/Long-Tasks-meting. npm run perf:browser faalt duidelijk bij ontbrekende Chromium; die beperking wordt niet als geslaagde test geteld.
Herhalen
npm ci
npm run format:check
npm run lint
npm run typecheck
npm test
npm run perf:golden
npm run perf:assets
npm run perf -- --node-only
npm run perf:browser
node scripts/perf/count-calls.mjs purchase-plan
node scripts/perf/csv.mjs
npm run build:ha
npm run build:pages
npm run build:worker
Voor browserinstallatie/presets en bestaande regressiebudgetten: performance-handleiding. Budgetten zijn niet versoepeld. Op een passende Chromium-runner faalt npm run perf bij overschrijding; zonder browser faalt de volledige meting ook. Node-profielen bevatten de topfuncties, en de oorspronkelijke top-10 staat in baseline-top10.json. Geen browser-Fast-3G- of Lighthouse-resultaat verzonnen.