Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
302 commits
Select commit Hold shift + click to select a range
d8b3675
docs: document PowerX article panels and timeline load filter
edwingao28 Sep 24, 2026
1672075
fix: localize PowerX comparison source labels
edwingao28 Sep 24, 2026
10dcb1b
test: pin concurrency view loads outside latency and cost limits
edwingao28 Sep 24, 2026
2ee539e
test: remove redundant PowerX tests and local DB harness
edwingao28 Sep 25, 2026
c476f0e
chore: merge PowerX db-ingest test cleanup
edwingao28 Sep 25, 2026
3582eef
test: remove redundant chart-coverage tests
edwingao28 Sep 25, 2026
81808cc
test: merge chart-coverage cleanup and remove redundant article tests
edwingao28 Sep 25, 2026
7759a8b
fix: space word values in topology labels
edwingao28 Sep 25, 2026
edd8a66
chore: merge topology label fix
edwingao28 Sep 25, 2026
995e008
fix: version PowerX digests and recover stale statistics
edwingao28 Sep 25, 2026
e6a55c8
chore: resolve PowerX skill integrity conflict with master
edwingao28 Sep 25, 2026
864a0c7
feat: simplify PowerX measured views
edwingao28 Sep 25, 2026
37a75d6
fix: explain missing measured power for chosen chip configs
edwingao28 Sep 25, 2026
238977a
test: update x-axis spec for concurrency and median labels
edwingao28 Sep 25, 2026
f6ede5d
fix: restore Best per SKU fallback for empty metrics
edwingao28 Sep 25, 2026
08c2189
fix: name comparison sources in exported images
edwingao28 Sep 25, 2026
d812b35
fix(db): drop .js suffix from PowerX stats imports so Turbopack resol…
claude Sep 25, 2026
a60061d
chore: merge powerx-db-ingest into article parity
edwingao28 Sep 25, 2026
12de0af
fix: keep unofficial runs, date toggles and concurrency in date compa…
edwingao28 Sep 25, 2026
581d765
test: expect concurrency in Chinese Agentic x-axis options
edwingao28 Sep 25, 2026
4181dfc
Merge master into feat/powerx-db-ingest
claude Sep 26, 2026
601f873
fix: offer View power trace on official date-comparison points
edwingao28 Sep 27, 2026
75334e2
chore: merge powerx-db-ingest into article parity
edwingao28 Sep 27, 2026
2c160b2
Merge master into feat/powerx-db-ingest
claude Sep 27, 2026
b07e1c7
chore: merge powerx-db-ingest into article parity
edwingao28 Sep 28, 2026
14b5bec
fix(powerx): persist run rulers, keep tooltip actions on mobile
edwingao28 Sep 28, 2026
53c47d9
docs: link draft PR #1229 in PowerX UX packet
edwingao28 Sep 28, 2026
20367a0
fix: key comparison sources by curve snapshot, not row run
edwingao28 Sep 29, 2026
fc53c63
chore: drop committed acceptance artifacts from the PowerX UX packet
edwingao28 Sep 29, 2026
a87ee3e
chore: add PowerX admin scripts and dependencies
edwingao28 Sep 29, 2026
8332be9
feat(db): add telemetry schema and stats version column
edwingao28 Sep 29, 2026
c7d683f
feat(etl): digest gpu_metrics and power_audit artifacts at ingest
edwingao28 Sep 29, 2026
c4ea4f2
feat(etl): publication receipts and required-power verification
edwingao28 Sep 29, 2026
422ef50
feat(db): telemetry backfill CLI, purge accounting and benchmark refresh
edwingao28 Sep 29, 2026
6651f84
feat(db): telemetry read queries with snapshot checks and paged samples
edwingao28 Sep 29, 2026
1ba550d
feat(ui): power boundary metrics, comparison overlays and role energy
edwingao28 Sep 29, 2026
f1422bd
ci: migrate before ingest and support Neon branch targets
edwingao28 Sep 29, 2026
9096c00
feat(ui): persist perf rulers in share links
edwingao28 Sep 29, 2026
61c3ac0
feat(api): DB-first gpu-metrics routes, point cache and views parity
edwingao28 Sep 29, 2026
10d9901
feat(ui): per-point PowerX view on the agentic detail page
edwingao28 Sep 29, 2026
875edcb
feat(ui): explorer smoothing controls and stored full-record statistics
edwingao28 Sep 29, 2026
38b2d3e
feat(ui): measured power timeline
edwingao28 Sep 29, 2026
7734516
docs: PowerX persistence runbook and telemetry pipeline notes
edwingao28 Sep 29, 2026
99841c9
docs: PowerX permanent view, power boundaries and state ownership
edwingao28 Sep 29, 2026
7be3d20
test: retry blog listing visits in E2E
edwingao28 Sep 29, 2026
a72b930
fix: light the base series when its comparison legend row is hovered
edwingao28 Sep 29, 2026
d10cdd0
fix: memoise timeline responses on a fixed-shape input
edwingao28 Sep 29, 2026
d314dae
test: stub optimized blog thumbnails in E2E
edwingao28 Sep 29, 2026
8800dc6
chore: integrate PowerX parent updates locally
edwingao28 Sep 29, 2026
12f382b
chore: integrate PowerX article changes locally
edwingao28 Sep 29, 2026
ca6899f
fix: simplify PowerX labels and explanations
edwingao28 Sep 29, 2026
db41df7
chore: record integrated PowerX article ancestry
edwingao28 Sep 29, 2026
45aa4be
feat: integrate NVL72 planning with consolidated PowerX UI
edwingao28 Sep 30, 2026
a659339
feat: integrate PowerX ruler sharing and mobile tooltip fixes
edwingao28 Sep 30, 2026
4360563
fix: synchronize NVL72 views with PowerX ruler and tooltip updates
edwingao28 Sep 30, 2026
2f982f8
test: capture power menu after selection assertions
edwingao28 Sep 30, 2026
cc86afd
test: synchronize NVL72 views with Chrome coverage
edwingao28 Sep 30, 2026
36ceb86
fix: trim profit power note and explain empty All in Measured charts
edwingao28 Sep 30, 2026
a42d881
fix: rename power-basis metric labels to the Boundary names (#1240)
edwingao28 Sep 30, 2026
d46b18e
fix: pin latest NVL72 reference revision
edwingao28 Sep 30, 2026
8e097f2
chore: merge curve-snapshot comparison source keys (#1236)
edwingao28 Sep 30, 2026
90ec8e8
chore: merge profit header trim and All in Measured empty state (#1239)
edwingao28 Sep 30, 2026
0861bdc
docs: split PowerX modeling guide into English and Chinese
edwingao28 Sep 30, 2026
8610123
docs: clarify telemetry contracts and model assumptions
edwingao28 Sep 30, 2026
9c15d60
fix: plot role panels on trace-derived P75/P90 axes
edwingao28 Sep 30, 2026
c2085d9
fix: pin the equal-service comparison pair once Compare is on
edwingao28 Sep 30, 2026
10fad53
test: match the measured power family by exact option text
edwingao28 Sep 30, 2026
989bb69
refactor: own PowerX models in InferenceX-app
edwingao28 Sep 30, 2026
ff989ca
fix: pin the comparison pair only when Compare is toggled
edwingao28 Sep 30, 2026
35d15b9
test: expect the app-owned system power model in the NVL72 CSV
edwingao28 Sep 30, 2026
fbf4193
chore: format the comparison component spec
edwingao28 Sep 30, 2026
03d76fd
chore: merge #1220 comparison fixes into NVL72 modeling
edwingao28 Sep 30, 2026
0effb5d
chore: add PowerX admin scripts and dependencies
edwingao28 Sep 29, 2026
afa7e86
feat(db): add telemetry schema and stats version column
edwingao28 Sep 29, 2026
96bcf06
feat(etl): digest gpu_metrics and power_audit artifacts at ingest
edwingao28 Sep 29, 2026
63d313b
feat(etl): publication receipts and required-power verification
edwingao28 Sep 29, 2026
9ced2ec
feat(db): telemetry backfill CLI, purge accounting and benchmark refresh
edwingao28 Sep 29, 2026
c2e8282
feat(db): telemetry read queries with snapshot checks and paged samples
edwingao28 Sep 29, 2026
039deba
ci: migrate before ingest and support Neon branch targets
edwingao28 Sep 29, 2026
41ec32d
feat(api): DB-first gpu-metrics routes, point cache and views parity
edwingao28 Sep 29, 2026
bcffada
feat(ui): explorer smoothing controls and stored full-record statistics
edwingao28 Sep 29, 2026
13fd98c
docs: PowerX persistence runbook and telemetry pipeline notes
edwingao28 Sep 29, 2026
2c44028
test: retry blog listing visits in E2E
edwingao28 Sep 29, 2026
f320e18
test: stub optimized blog thumbnails in E2E
edwingao28 Sep 29, 2026
1d1686d
chore: merge PowerX telemetry parent into article parity
edwingao28 Sep 30, 2026
a5a9cbf
chore: add PowerX admin scripts and dependencies
edwingao28 Sep 29, 2026
3125bdc
feat(db): add telemetry schema and stats version column
edwingao28 Sep 29, 2026
cb61b79
feat(etl): digest gpu_metrics and power_audit artifacts at ingest
edwingao28 Sep 29, 2026
aec8965
feat(etl): publication receipts and required-power verification
edwingao28 Sep 29, 2026
094ae55
feat(db): telemetry backfill CLI, purge accounting and benchmark refresh
edwingao28 Sep 29, 2026
93d1439
feat(db): telemetry read queries with snapshot checks and paged samples
edwingao28 Sep 29, 2026
1dba121
ci: migrate before ingest and support Neon branch targets
edwingao28 Sep 29, 2026
e81dad0
feat(api): DB-first gpu-metrics routes, point cache and views parity
edwingao28 Sep 29, 2026
e74a6ce
feat(ui): explorer smoothing controls and stored full-record statistics
edwingao28 Sep 29, 2026
c06f693
docs: PowerX persistence runbook and telemetry pipeline notes
edwingao28 Sep 29, 2026
2d4ef8b
test: retry blog listing visits in E2E
edwingao28 Sep 29, 2026
0181958
test: stub optimized blog thumbnails in E2E
edwingao28 Sep 29, 2026
a900e0d
chore: merge the rebased PowerX telemetry parent and drop the GPUGrap…
edwingao28 Sep 30, 2026
68e51c0
chore: sync NVL72 modeling with the rebased telemetry parent
edwingao28 Sep 30, 2026
55d4331
test: trim redundant PowerX modeling cases
edwingao28 Sep 30, 2026
75b6f61
fix: preserve stitched PowerX comparison sources
edwingao28 Sep 30, 2026
78bbbe7
chore: sync PowerX comparison fix into NVL72 modeling
edwingao28 Sep 30, 2026
b41c0e4
fix: align NVL72 chart explanations with measured inputs
edwingao28 Sep 30, 2026
d1728a9
refactor: remove PowerX service comparison panels
edwingao28 Sep 30, 2026
19b853c
fix(inference): remove agentic Latency Percentile control / 移除智能体延迟分位…
edwingao28 Sep 30, 2026
2f9b620
fix: synchronize PowerX API skill integrity
edwingao28 Sep 30, 2026
517145b
fix: synchronize NVL72 dashboard with updated parent
edwingao28 Oct 1, 2026
3278b48
fix: keep dense profit comparison charts readable
edwingao28 Oct 1, 2026
84b9d53
fix: distinguish unpriced profit estimates from missing power
edwingao28 Oct 1, 2026
c80f7f3
fix: retain AgentX estimates in all-in power views
edwingao28 Oct 1, 2026
78585ab
fix: retain measured rows without all-in estimates
edwingao28 Oct 1, 2026
cd07394
docs: clarify unavailable multi-node system estimates
edwingao28 Oct 1, 2026
9a62745
fix: remove unavailable estimate lists (#1249)
edwingao28 Oct 1, 2026
c5a86f7
fix: select power-valid curves for profit estimates
edwingao28 Oct 1, 2026
a840199
fix: preserve NVL72 CPU power during ingestion
edwingao28 Oct 2, 2026
99f21f9
fix: sync dashboard CPU ingestion contract
edwingao28 Oct 2, 2026
a3b4e1e
fix: sync NVL72 CPU ingestion contract
edwingao28 Oct 2, 2026
eb7bd0a
fix: synchronize PowerX telemetry with master
edwingao28 Oct 4, 2026
079b40f
refactor: separate live telemetry acquisition from route recovery
edwingao28 Oct 4, 2026
97703d9
refactor: assemble recovery failures in telemetry receipts
edwingao28 Oct 4, 2026
8fb3035
refactor: select AgentX power-audit windows through one owner
edwingao28 Oct 4, 2026
233234d
refactor: derive expected telemetry artifact names from the artifact …
edwingao28 Oct 4, 2026
299ec98
fix: fall back to a collected correlation metric in the GPU metrics view
edwingao28 Oct 4, 2026
647e4b1
fix: keep derived AgentX power_audit across benchmark upserts
edwingao28 Oct 5, 2026
8769187
refactor: own AgentX power-audit provenance in one window plan
edwingao28 Oct 5, 2026
132c501
test: cover native multinode receipts and JSON GPU identity evidence
edwingao28 Oct 5, 2026
3134bc7
test: pin the TypeScript curve projection to the SQL latest-curve que…
edwingao28 Oct 5, 2026
687d466
refactor: read benchmark artifacts once and hash evidence once
edwingao28 Oct 5, 2026
765db01
refactor: plan benchmark point overrides in one owner
edwingao28 Oct 5, 2026
c2757a1
refactor: derive PowerX workloads from one table
edwingao28 Oct 5, 2026
bbd5e40
fix: name the stage in required-power retention errors
edwingao28 Oct 5, 2026
9ae13da
refactor: load curve inputs through named owners
edwingao28 Oct 5, 2026
20b8a04
refactor: integrate telemetry acquisition and ETL ownership
edwingao28 Oct 5, 2026
80c746a
fix: reconcile PowerX telemetry with current master
edwingao28 Oct 5, 2026
610d798
fix: reconcile PowerX dashboard with telemetry parent
edwingao28 Oct 5, 2026
740eea5
fix: preserve dark themes in comparison charts
edwingao28 Oct 5, 2026
c1a5cce
fix: reconcile NVL72 estimates with dashboard parent
edwingao28 Oct 5, 2026
8204a0d
fix: carry chart theme correction into NVL72 branch
edwingao28 Oct 5, 2026
248ac9c
fix: preserve power sample gaps and deduplicate live telemetry
edwingao28 Oct 5, 2026
faf8f20
docs: shorten PowerX recovery runbook
edwingao28 Oct 5, 2026
1ada0c9
test: check active font state on mobile
edwingao28 Oct 6, 2026
5ad334d
test: resolve the generated Minecraft font family
edwingao28 Oct 6, 2026
7575065
test: handle lazy Minecraft font registration
edwingao28 Oct 6, 2026
892b809
chore: merge master into PowerX ingest branch
edwingao28 Oct 6, 2026
af772af
refactor: lend the ingest's one artifact read to the verifier and pre…
edwingao28 Oct 5, 2026
cbe2097
fix: fail the PowerX receipt for unmapped rows at every POWER_WORKLOA…
edwingao28 Oct 5, 2026
9207ff8
fix: map backfill sidecar rows with the source run id
edwingao28 Oct 5, 2026
c274b84
fix: label every telemetry error in the ingest receipt
edwingao28 Oct 5, 2026
b44aa1b
test: hold the curve equivalence test to the real stored-point loader
edwingao28 Oct 5, 2026
3f7cb23
test: colocate PowerX fixtures with their tests
edwingao28 Oct 6, 2026
c1c2cb1
fix: return empty telemetry for a stored run whose filter matches not…
edwingao28 Oct 6, 2026
e292816
fix: serve PowerX telemetry from one source per run
edwingao28 Oct 6, 2026
1428ac0
chore: remove the retired PowerX gpu-metrics page (#1284)
edwingao28 Oct 7, 2026
1c9dd4f
refactor: return a typed required-power scope from the verifier
edwingao28 Oct 7, 2026
7eb7660
fix: name the point-evidence phases and reject unknown telemetry kinds
edwingao28 Oct 7, 2026
aa7a3aa
refactor: let the stored telemetry query own prefix and source scoping
edwingao28 Oct 7, 2026
e154ce1
chore: merge master into PowerX ingest branch
edwingao28 Oct 8, 2026
ce60ed2
refactor: remove PowerX code with no caller in this PR
edwingao28 Oct 7, 2026
5c7dc9c
refactor: compute GPU statistics at read time and read stored series …
edwingao28 Oct 7, 2026
bf82378
fix: correct PowerX telemetry storage, backfill and receipt handling
edwingao28 Oct 7, 2026
67f0ccf
test: consolidate PowerX telemetry tests and restore missing checks
edwingao28 Oct 7, 2026
9ee25d4
docs: align PowerX telemetry docs with current behavior
edwingao28 Oct 7, 2026
ee1b912
chore: merge the slimmed PowerX telemetry parent into article parity
edwingao28 Oct 8, 2026
48bdec1
fix: keep temperature, utilization and AMD vendor from power samples
edwingao28 Oct 8, 2026
61285ce
feat: remove the modeled chassis AC power metric
edwingao28 Oct 8, 2026
8196cea
feat: remove the concurrency x-axis mode
edwingao28 Oct 8, 2026
e19fcce
feat: explain modeled components in the All in Measured boundary option
edwingao28 Oct 8, 2026
ac41046
chore: merge PowerX article parity into NVL72 provisioning
edwingao28 Oct 8, 2026
3889ccc
chore: reconcile NVL72 provisioning with updated PowerX base
edwingao28 Oct 8, 2026
33a0c4d
revert: drop duplicate power-sample parsing superseded by #1254 and #…
edwingao28 Oct 8, 2026
54851ee
fix: drop residue of removed chassis metric and concurrency mode
edwingao28 Oct 8, 2026
cc2ccad
fix: describe NVL72 and AgentX All in Measured coverage
edwingao28 Oct 8, 2026
11c9876
fix: expect four agentic x-axis options after concurrency removal
edwingao28 Oct 8, 2026
e74ee06
chore: merge PowerX article parity e2e fix into NVL72 provisioning
edwingao28 Oct 8, 2026
da5bc59
fix: keep producer power audits when attaching AgentX windows
edwingao28 Oct 9, 2026
7264a49
test: prune 2 slop cases from PR #1167 and sharpen 4 fixtures
edwingao28 Oct 9, 2026
e999d03
feat: default the measured-power tier filter to the measured power sc…
edwingao28 Oct 9, 2026
67f6b3f
feat: evaluate system power with the pinned InferenceX power model
edwingao28 Oct 9, 2026
3f75c52
feat: model system power for AgentX and every single_turn sequence
edwingao28 Oct 9, 2026
263d83d
feat: show the power model operating state in tooltips and copy
edwingao28 Oct 9, 2026
f8705b2
chore: merge master into PowerX ingest branch
edwingao28 Oct 9, 2026
9e590f7
chore: merge PowerX telemetry parent into article parity
edwingao28 Oct 9, 2026
02dcbab
test: reconcile normalized-axis power tests with article parity
edwingao28 Oct 9, 2026
8714286
test: align power-compare fixture with the interactivity roofline dir…
edwingao28 Oct 9, 2026
3c3eac1
chore: merge PowerX article parity into NVL72 provisioning
edwingao28 Oct 9, 2026
b6211f2
feat: evaluate NVL72 racks with the InferenceX power model
edwingao28 Oct 9, 2026
1e4426e
feat: register Grace rail power keys
edwingao28 Oct 9, 2026
c46735d
feat: model NVL72 tray power from measured GPU and Grace-socket watts
edwingao28 Oct 9, 2026
b203dab
docs: describe the NVL72 rack power model
edwingao28 Oct 9, 2026
79d77c7
chore: merge PowerX article parity roofline fixture into NVL72 provis…
edwingao28 Oct 9, 2026
6c54ee4
docs: correct NVL72 scale-out and PUE wording
edwingao28 Oct 9, 2026
afdaaf0
test: cover NVL72 tray provenance in overlay tooltips
edwingao28 Oct 9, 2026
e6a24c8
test: drop dead profit-power-unavailable check from NVL72 e2e
edwingao28 Oct 9, 2026
01f0ba1
chore: pin power_model to the measured Grace socket input
edwingao28 Oct 9, 2026
9f365d1
docs: qualify Grace socket sensor coverage as modeled
edwingao28 Oct 9, 2026
09be1ed
fix: report NVL72 loads outside the loss curves as model-domain
edwingao28 Oct 9, 2026
bb40bbe
fix: export Grace energy on NVL72 rows
edwingao28 Oct 9, 2026
af5d040
chore: pin power_model to the renamed measured socket input
edwingao28 Oct 9, 2026
e5650ee
chore: pin power_model to the #3887 merge commit
edwingao28 Oct 10, 2026
01668b8
chore: merge master and stabilize server-log retry E2E
edwingao28 Oct 10, 2026
b9d00a1
Merge origin/master into feat/powerx-db-ingest
Oct 12, 2026
a047ed0
[Chore] drop PowerX auto-migration and app-side PGlite; fix post-merg…
Oct 12, 2026
6b18c9e
Merge feat/powerx-db-ingest (with master #1330 layout) into article p…
Oct 12, 2026
c6f1cdc
[Fix] refresh the github-telemetry contract SHA after the import-path…
Oct 12, 2026
246d1ce
Merge branch 'feat/powerx-db-ingest' into feat/powerx-article-parity
Oct 12, 2026
d193384
Merge article parity (master #1330 layout) into NVL72 smart provisioning
Oct 12, 2026
e243e8b
Port the InferenceX power model to TypeScript, file for file
Oct 12, 2026
66c00c7
Run PowerX system power on the ported model; model NVL72 Grace withou…
Oct 12, 2026
fede633
Match the NVL72 caption check to the measured-or-modeled Grace wording
Oct 12, 2026
04b545f
chore: merge master into feat/powerx-db-ingest
edwingao28 Oct 13, 2026
b2bd5ce
test: retry the attempt counters in the log-retry spec
edwingao28 Oct 13, 2026
fe8caa4
fix: mirror pydantic instance checks and Python text in the power mod…
edwingao28 Oct 13, 2026
b69d674
test: add seeded random inputs to the power model parity fixture
edwingao28 Oct 13, 2026
adf46bf
chore: merge feat/powerx-db-ingest into feat/powerx-article-parity
edwingao28 Oct 13, 2026
23a6f9f
fix: raise when a PSU load fraction has no efficiency-curve bracket
edwingao28 Oct 13, 2026
872c360
chore: merge feat/powerx-article-parity into feat/powerx-nvl72-smart-…
edwingao28 Oct 13, 2026
2fdc84f
chore: compact power model parity fixture
edwingao28 Oct 13, 2026
1eb90a5
chore: merge master into feat/powerx-db-ingest
edwingao28 Oct 13, 2026
5edf102
[Power Model] port measured CPU socket inputs across systems / [Power…
edwingao28 Oct 14, 2026
c14283f
chore: merge master into feat/powerx-db-ingest
edwingao28 Oct 14, 2026
c428f4a
test: classify timeline buckets at sub-second window edges
edwingao28 Oct 14, 2026
67b2d34
fix: time power timeline buckets by their samples, not the second the…
edwingao28 Oct 14, 2026
778d8d2
fix: title the power timeline by measured GPU power, not per-chip ave…
edwingao28 Oct 14, 2026
c27d9af
docs: consolidate PowerX persistence guidance
edwingao28 Oct 14, 2026
fcef02a
test: cover native telemetry persistence
edwingao28 Oct 14, 2026
abf6f7c
fix: retain native telemetry fields and AMD identity
edwingao28 Oct 14, 2026
36e4ec5
chore: merge master into feat/powerx-db-ingest
edwingao28 Oct 14, 2026
99e11ad
fix: refresh profit-estimator API contract digest
edwingao28 Oct 14, 2026
1e991bc
test: align TCO basis toggle scope with Qwen3.5 AgentX
edwingao28 Oct 14, 2026
c8ff8b9
fix: close telemetry ingestion and coverage gaps
edwingao28 Oct 14, 2026
170116b
chore: resolve PowerX chart conflicts with master
edwingao28 Oct 14, 2026
1b2feef
chore: merge #1167 final head into feat/powerx-article-parity
edwingao28 Oct 14, 2026
efb39e5
chore: merge master into feat/powerx-article-parity
edwingao28 Oct 14, 2026
80cf554
feat: measure unofficial-run curves with the comparison perf ruler
edwingao28 Oct 14, 2026
6db97f0
test: cover missing and zero power readings in power series
edwingao28 Oct 14, 2026
4c80f5f
docs: list i_ptconc among client-only timeline share fields
edwingao28 Oct 14, 2026
7b4089d
docs: list includeHistory in the current image view selectors
edwingao28 Oct 14, 2026
9deb8d7
fix: resolve records import without .js suffix for Turbopack build
Oct 15, 2026
30fced1
chore: refresh power-audit-validations contract digest
Oct 15, 2026
cbd17c1
chore: merge verified #1167 resolution into feat/powerx-article-parity
edwingao28 Oct 15, 2026
57b8014
chore: merge feat/powerx-article-parity into feat/powerx-nvl72-smart-…
edwingao28 Oct 15, 2026
55e4706
chore: pin power model port to InferenceX 69f12085e
edwingao28 Oct 15, 2026
54bb0ea
chore: merge master into feat/powerx-article-parity
edwingao28 Oct 15, 2026
cec19e5
chore: merge final #1220 head into feat/powerx-nvl72-smart-provisioning
edwingao28 Oct 15, 2026
dbbdcfa
chore: merge #1360 into feat/powerx-nvl72-smart-provisioning
edwingao28 Oct 15, 2026
a02be08
chore: merge master (squashed #1220) into feat/powerx-nvl72-smart-pro…
edwingao28 Oct 15, 2026
8a04fb1
fix: keep table-only SKUs in Best per SKU when other SKUs are ranked
edwingao28 Oct 15, 2026
cd65abb
test: align NVL72 E2E expectations with modeled Grace sockets
edwingao28 Oct 15, 2026
fc1cd29
fix: keep table-only SKUs in views API best=true tableRows
edwingao28 Oct 15, 2026
2d19455
docs: note table-only SKUs in views API best=true tableRows
edwingao28 Oct 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@
packages/app/cypress/fixtures/api/collectivex-latest.json
packages/app/cypress/fixtures/api/collectivex-run-*.json
packages/app/cypress/fixtures/api/collectivex-runs.json
# The power-model parity fixture is upstream Python output, regenerated wholesale by
# packages/app/scripts/generate-power-model-parity.py; pretty-printed it is ~5x larger.
packages/app/src/lib/power/power-model.parity.json
63 changes: 50 additions & 13 deletions docs/dashboard-readonly-views.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,45 @@ artifacts.
Power boundary labels are GPU Level Measured, GPU Level Provisioned (TDP), All in
Provisioned, and All in Measured. The last combines measured GPU power with modeled
unmeasured components and PUE; it is not a wall-meter measurement. These labels and
collapsed power-assumption/availability notes do not change metric IDs, API selectors,
power-assumption notes do not change metric IDs, API selectors,
or calculations. Profit comparison `powerLabel` display text follows the same names.
GPU statistics include startup and warmup for all chips in the selected series,
regardless of chip visibility. They are separate from serving-window power and
J/token. Run telemetry comes from one source per run: stored series once the run is
ingested, otherwise its artifacts. Stored `coverage` describes the whole run, even
when one host is selected: `complete` means the recorded artifact/file inventory
is present, `partial` means recorded telemetry is missing, and `unknown` means a
complete inventory was not retained. `missingArtifacts` lists entirely missing
artifacts; it may be empty when only a file is incomplete.
GitHub `coverage` is `null` (unassessed). The public view returns private, no-store
responses and preserves upstream 503 failures.
All in Measured watts and energy accept validated `single_turn` and AgentX rows
through the shared chart/API transform, including historical and unofficial rows.
AgentX uses the power model's agentic workload state without independent workload
calibration. Telemetry and topology gates still apply; each NVL72 compute tray takes an
equal share of a modeled rack, with measured Grace-socket power when the row has complete
Grace-socket telemetry and the modeled Grace profile otherwise.

For All in Measured, `tableRows` retains every GPU-valid observation in the selected
scope and best-series selection, including axis-clipped and non-frontier points.
Missing system estimates use `y: null`, `status: "unavailable"`, and
`unavailableReason`; `measuredGpuWatts` remains available. CSV exports these rows
with blank missing values. Numeric `series` and `count` are unchanged. Each date
comparison and unofficial overlay has its own `tableRows`; latest does not pool history.

For GW-year profit, `modeled` selects valid system-power points before building the
curve at the same target, without extrapolation or another snapshot. `compare` uses
the same valid-curve throughput for both power budgets, retaining the original
provisioned estimate when no valid curve covers the target. Provisioned-only keeps
the original performance curve. Official, comparison and unofficial scopes remain
independent; both interpolation knots must share a power basis (including measured or modeled NVL72 Grace power), model revision and PUE.

Dense profit charts reserve readable space per bar and scroll within the plot on narrow
screens; captions and controls stay fixed. This is presentation-only: API selectors,
calculations, source identities and CSV rows are unchanged. PNG export includes the full
plot regardless of its current scroll position, so no API or skills contract change is needed.
Profit charts omit the per-configuration unavailable-estimate list. This is presentation-only;
the API retains skipped rows and reasons, and calculations and CSV exports are unchanged.
The GPU statistics table includes startup and warmup for all chips in the selected
series, regardless of chip visibility. It is separate from serving-window power,
J/token and selected-time-window calculations. Run telemetry comes from one source
per run: stored series once ingested, otherwise its artifacts. Stored `coverage`
describes the whole run, even when one host is selected: `complete` means the recorded
artifact/file inventory is present, `partial` means recorded telemetry is missing, and
`unknown` means a complete inventory was not retained. `missingArtifacts` lists entirely
missing artifacts; it may be empty when only a file is incomplete. GitHub `coverage` is
`null` (unassessed). The public view returns private, no-store responses and preserves
upstream 503 failures.

Run-specific recognition labels are also presentation-only. Runs `35879254139`
and `37181045340` display `UMBP MoRI SGLang` through October 9, 2026 in America/New_York
Expand Down Expand Up @@ -285,8 +312,7 @@ point identity. Fewer than three distinct output rates return `fit: null` with
power, and R² is null when power did not vary.

These analytical results are JSON-only: `format=csv` with any analysis enabled returns
400, rather than silently exporting only the primary chart. Ordinary CSV retains
its existing plotted-point contract.
400, rather than silently exporting only the primary chart. CSV exports plotted points except for All in Measured, which exports `tableRows`.

| Surface | Dashboard control / share parameter | Read-only API coverage |
| ---------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------- |
Expand Down Expand Up @@ -342,6 +368,17 @@ those properties.
@semianalysisai/inferencex-skills 包。所有仪表板路由(含隐藏和功能开关控制的
视图)均在覆盖表中登记;上表列出各只读接口接受的全部查询参数名。
接口复用现有计算函数,公开运行与非官方叠加数据保留各自来源。
整体实测指标的 `tableRows` 保留当前筛选范围和最优曲线选择内所有 GPU 遥测有效的观测点,
不按前沿或坐标轴显示范围裁剪。估算不可用时 `y` 为 null,`status` 为 `unavailable`,
`unavailableReason` 给出原因;`measuredGpuWatts` 保留实测 GPU 功耗。CSV 导出同一组行,缺失值留空。
`series` 和 `count` 保持不变,仍只包含可绘制的数值点;各日期对比和非官方叠加分别返回自己的 `tableRows`,
Latest 不会合并历史数据。

按 GW 年估算利润时,modeled 先筛选满足系统功耗要求的数据点,再在原目标值上构建曲线,
不外推,也不借用其他快照。compare 的两种功耗方案使用同一条有效曲线的吞吐量;
没有有效曲线覆盖目标时,保留原曲线的预配估算。provisioned 单独使用时沿用原性能曲线。
官方数据、日期对比和非官方叠加各自独立计算;NVL72 Grace socket 遥测要求以及模型版本/PUE 一致性要求同样不变。

私有上传、密钥、提示词、反馈及管理操作不作为公开读取接口。
OperatorX 的入口受功能开关控制,页面使用专属的 `/api/v1/operatorx/*`
接口;目前没有发布 `/api/v1/views/operatorx` 契约。
Expand Down
4 changes: 2 additions & 2 deletions docs/data-transforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ Returns `{ chartData: InferenceData[][], hardwareConfig: HardwareConfig }`.
| B4 utility modeled (measured → IT → PUE) | `modeledSystemPower.deploymentFacilityWatts ÷ modeledSystemPower.gpuCount` | `B1 J/out × (B4 W ÷ B1 W)` | `utilityModeledWatts`, `utilityModeledJPerOutputToken` |

- **N_alloc and total throughput** (`powerBasisNormalization`). Aggregate rows report output per allocated GPU, so `N_alloc` cancels and the builder uses `W ÷ output_tput_per_gpu` without trusting display counts (legacy ingest can encode TP × EP twice). Fixed-sequence disaggregated rows (`disagg && benchmark_type === 'single_turn'`) report output per decode GPU while the deployment also powers the prefill pool, so `total output tok/s = output_tput_per_gpu × num_decode_gpu` and `N_alloc = num_prefill_gpu + num_decode_gpu`; the article's 4P+4D counts eight GPUs, and B3 energy is `(P + D) / D` times `jOutput` on such rows. Other disaggregated benchmark types emit no provisioned energy because it is not verifiable in-app whether AgentX throughput already divides by all GPUs.
- **B4 source.** Reuses the `SystemPowerEstimate` that `rowToAggDataEntry` attached as `entry.modeledSystemPower`; nothing re-runs `modelSystemPower`. `deploymentFacilityWatts` is modeled IT power (chassis AC plus its scale-out network share) × PUE with PUE applied exactly once inside `estimateChassisPower`, divided by the physical measured GPU count (not `modeledGpuCount`, which over-counts partially allocated chassis: a 4P+4D deployment on two worker hosts models 16 GPUs while measuring 8, and the unit test pins that divisor). Modeled energy scales the producer's same-window `joules_per_output_token` by `B4 W ÷ avg_power_w`, so it inherits B1's token denominator and survives rows whose `output_tput_per_gpu` is missing (the provisioned energies do not; a per-basis point count cannot assume one shared denominator).
- **Null rules.** A value is emitted only when finite and positive; otherwise the key is omitted (never `{ y: 0 }`), because the metric filters drop points by `metricKey in point` and `remapInferencePoint` falls back to raw throughput when a key exists with an unusable value. B2/B3 W are absent for hardware without registry specs (`getGpuSpecs` returns zeros); their energies are also absent without output throughput or disaggregated counts. B4 requires `modeledSystemPower.status === 'supported'` and B1 watts (`avg_power_w` after `rowToAggDataEntry`'s `power_valid !== 0` admission); B4 energy additionally needs `joules_per_output_token`. Telemetry admission belongs to `modelSystemPower`, which accepts `power_valid === 1` with schema v2 or the validated unversioned single-node producer (`telemetryBasis: 'validated-unversioned-single-node'`), so B4 shares B1's telemetry admission; benchmark types without an upstream workload state (`reason: 'workload'`), unsupported hardware such as GB200/GB300 NVL72 (`reason: 'hardware'`), and telemetry/topology failures withhold it. The public API's `strictV2` row filter is not re-applied in the chart for B1, so it is not re-applied for B4 either (plan §3.1 describes B1 with that filter; the app's chart path is the authority here).
- **B4 source.** Reuses the `SystemPowerEstimate` that `rowToAggDataEntry` attached as `entry.modeledSystemPower`; nothing re-runs `modelSystemPower`. `deploymentFacilityWatts` is modeled IT power (chassis or rack AC plus its scale-out network share) × PUE with PUE applied exactly once inside `estimateChassisPower` or `estimateRackPower`, divided by the physical measured GPU count (not `modeledGpuCount`, which over-counts partially allocated chassis: a 4P+4D deployment on two worker hosts models 16 GPUs while measuring 8, and the unit test pins that divisor). Modeled energy scales the producer's same-window `joules_per_output_token` by `B4 W ÷ avg_power_w`, so it inherits B1's token denominator and survives rows whose `output_tput_per_gpu` is missing (the provisioned energies do not; a per-basis point count cannot assume one shared denominator).
- **Null rules.** A value is emitted only when finite and positive; otherwise the key is omitted (never `{ y: 0 }`), because the metric filters drop points by `metricKey in point` and `remapInferencePoint` falls back to raw throughput when a key exists with an unusable value. B2/B3 W are absent for hardware without registry specs (`getGpuSpecs` returns zeros); their energies are also absent without output throughput or disaggregated counts. B4 requires `modeledSystemPower.status === 'supported'` and B1 watts (`avg_power_w` after `rowToAggDataEntry`'s `power_valid !== 0` admission); B4 energy additionally needs `joules_per_output_token`. Telemetry admission belongs to `modelSystemPower`, which accepts `power_valid === 1` with schema v2 or the validated unversioned single-node producer (`telemetryBasis: 'validated-unversioned-single-node'`), so B4 shares B1's telemetry admission; benchmark types without an upstream workload state (`reason: 'workload'`), unsupported hardware (`reason: 'hardware'`), and telemetry/topology failures withhold it. GB200/GB300 NVL72 rows take an equal compute-tray share of `estimateRackPower`, the pinned `power_model` rack evaluated at the measured W/GPU and, when the row carries complete, matching Grace-socket telemetry from the same window, the measured W per Grace socket; otherwise the rack's modeled Grace profile (`unit: 'nvl72-tray'`, `cpuBasis: 'measured' | 'modeled'`). The public API's `strictV2` row filter is not re-applied in the chart for B1, so it is not re-applied for B4 either (plan §3.1 describes B1 with that filter; the app's chart path is the authority here).
- **Ordering invariant** (unit-tested on real B200 telemetry): B3 ≥ B4 ≥ B1 and B2 ≥ B1 for both W/GPU and J/out on the same point.
- **Reconstructed prefill energy** (`reconstructedPrefillJPerOutputToken`, `utils/role-energy.ts`). For validated (`power_valid === 1`, schema 2) disaggregated rows, `prefill_joules_per_input_token × (joules_per_output_token ÷ joules_per_input_token)` carries the prefill pool's energy onto the output-token axis: the ratio is the served input:output token count because schema-2 aggregate energy has one numerator. With `decode_joules_per_output_token` it sums back to the deployment's J/out. It feeds only the `i_pcompare=roles` comparison on the energy axis (PowerX Figure 7) and is never a y-axis of its own; aggregate rows and rows missing any of the four inputs omit it.
- Historical Trends substitutes `output_tput_per_gpu := tput_per_gpu` for legacy rows lacking output throughput; provisioned energies in trends inherit that fallback.
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Design rationale and non-obvious conventions. See [CLAUDE.md](../CLAUDE.md) for
- [Pareto Boundary API](./pareto-api.md): Query frontier and hinterland observations, preserve provenance, and distinguish API scope from chart highlights.

- [API Skill Examples](./inferencex-api-examples.md) — Install the public skill, query benchmarks, export measured PowerX data, and explain empty results
- [PowerX System Power](./powerx-system-power.md) — Pinned chassis model, measured-input guards, assumptions, and reproducible article exports
- [PowerX System Power](./powerx-system-power.md) — Pinned chassis and NVL72 rack models, NVL72 Grace-socket gate, measured-input guards, assumptions, and reproducible article exports
- [PowerX Permanent View](./powerx-permanent-view.md) — Power boundaries as gated Measured Energy metrics, `i_metric`/`i_rulers` share links, missing-value states
- [API Skill Releases](./inferencex-skills-release.md) — Prepare an immutable package, verify clean installations and agent exports, and publish through the package-specific workflow
- [API Skill Discovery](./inferencex-skills-discovery.md) — Accept or reject implicit skill discovery in fresh Codex and Claude Code projects
Expand Down
21 changes: 11 additions & 10 deletions docs/powerx-permanent-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,20 @@ group stays out of the selector otherwise. The boundary metrics are members of t

## Boundaries

| Basis (`PowerBasis`) | Selector label | W / GPU metric | J / output token metric | Source |
| --------------------- | ---------------------------- | -------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------- |
| `gpu-measured` | GPU measured | `y_measuredAvgPower` (+P75/P90, roles, %TDP) | `y_measuredJPerOutputToken` (+ input/total/query) | runner telemetry; existing metrics, unchanged |
| `gpu-provisioned` | GPU provisioned (TDP) | `y_gpuProvisionedWatts` | `y_gpuProvisionedJPerOutputToken` | `HW_REGISTRY.tdp` |
| `utility-provisioned` | Utility provisioned (all-in) | `y_utilityProvisionedWatts` | `y_utilityProvisionedJPerOutputToken` | `HW_REGISTRY.power` (all-in kW per GPU) |
| `utility-modeled` | Utility modeled (PUE) | `y_utilityModeledWatts` | `y_utilityModeledJPerOutputToken` | `modelSystemPower` IT power × PUE 1.3 (applied once), ÷ measured GPUs |
| Basis (`PowerBasis`) | Selector label | W / GPU metric | J / output token metric | Source |
| --------------------- | --------------------------- | -------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `gpu-measured` | GPU Level Measured | `y_measuredAvgPower` (+P75/P90, roles, %TDP) | `y_measuredJPerOutputToken` (+ input/total/query) | runner telemetry; existing metrics, unchanged |
| `gpu-provisioned` | GPU Level Provisioned (TDP) | `y_gpuProvisionedWatts` | `y_gpuProvisionedJPerOutputToken` | `HW_REGISTRY.tdp` |
| `utility-provisioned` | All in Provisioned | `y_utilityProvisionedWatts` | `y_utilityProvisionedJPerOutputToken` | `HW_REGISTRY.power` (all-in kW per GPU) |
| `utility-modeled` | All in Measured | `y_utilityModeledWatts` | `y_utilityModeledJPerOutputToken` | `modelSystemPower` IT power × system PUE (1.3 chassis, 1.1 NVL72; applied once), ÷ measured GPUs |

Formulas, the all-GPU normalization (`N_alloc` = prefill + decode GPUs for disaggregated
rows) and the null rules are specified in
[Data Transforms → Power boundaries](./data-transforms.md#power-boundaries); the chassis model
itself in [PowerX System Power](./powerx-system-power.md). The ungated `jOutput` keeps its
per-decode-GPU normalization; its labels and the boundary metric's `all GPUs` label keep the
two distinguishable in the selector, the availability list and CSV headers.
[Data Transforms → Power boundaries](./data-transforms.md#power-boundaries); the chassis and
NVL72 tray models themselves in [PowerX System Power](./powerx-system-power.md). The ungated
`jOutput` keeps its per-decode-GPU normalization; its labels and the boundary metric's
`all GPUs` label keep the two distinguishable in the selector, the availability list and CSV
headers.

Every boundary metric has `polarity: 'lower'`. Energy metrics therefore get the usual
lower-is-better Pareto frontier. The three watt keys are listed in `POWER_CURVE_METRICS`
Expand Down
Loading
Loading