Add full-chain (100k block) import stats to the perf graph#119
Conversation
The Picofuzz Full Chain workflow already emits full_chain.csv in the same stats format as the other charts, but its artifact lives in a separate workflow that never triggers the deploy, so it was never shown on the page. - perf-graph: render a dedicated "Full chain import (100k blocks)" chart; add an optional `title` prop to Chart (existing charts unchanged). - Seed perf-graph/public/full_chain.csv with the accumulated history (artifacts retain only 90 days; the repo copy is the long-term base). - deploy-perf-graph.yml: also trigger on "Picofuzz Full Chain", and always fetch that workflow's latest successful picofuzz-csv-full_chain artifact so the chart stays fresh regardless of what triggered the deploy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe perf graph adds a titled full-chain import chart and deployment support for retrieving ChangesFull-chain performance graph
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Workflow as deploy-perf-graph workflow
participant API as GitHub Actions API
participant Artifact as Picofuzz Full Chain artifact
participant Graph as perf-graph
Workflow->>API: Resolve latest successful full-chain run
API-->>Workflow: Return run ID
Workflow->>Artifact: Download picofuzz-csv-full_chain
Artifact-->>Workflow: Provide full_chain.csv
Workflow->>Graph: Include CSV in existing merge and deployment
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/deploy-perf-graph.yml:
- Around line 65-75: Update the workflow step resolving WORKFLOW_ID and RUN_ID
to validate the curl HTTP responses and ensure both jq results are non-empty and
not null before writing run-id to GITHUB_OUTPUT. When resolution fails or no
successful run exists, explicitly fail the deployment or skip artifact download
with a warning, and prevent subsequent commands from continuing with seeded or
stale CSV data.
In `@docs/superpowers/specs/2026-07-13-full-chain-perf-graph-design.md`:
- Around line 12-14: Update the perf page CSV format description near the Chart
reference to state the correct 20-field total, or explicitly identify that the
count excludes projectName. Keep the listed field names and Chart.tsx parser
aligned so consumers retain every CSV field.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 348bcf45-d0b5-4e53-aeb3-1b0cc6f4de3b
⛔ Files ignored due to path filters (1)
perf-graph/public/full_chain.csvis excluded by!**/*.csv
📒 Files selected for processing (5)
.github/workflows/deploy-perf-graph.ymldocs/superpowers/specs/2026-07-13-full-chain-perf-graph-design.mdperf-graph/src/App.cssperf-graph/src/App.tsxperf-graph/src/components/Chart.tsx
…lution - spec: "19-column" -> "20-field" and expand p1..p99 to the full list; the tuple (projectName..p99) is 20 fields, matching the Chart.tsx parser. - deploy-perf-graph.yml: validate the resolved Picofuzz Full Chain run id. `// empty` keeps a literal "null" out of the step output; on an unresolved or missing run the step now emits a ::warning:: and the download is skipped (guarded by a non-empty run-id) instead of attempting a `run-id: null` fetch. Kept deliberately non-fatal: the deploy still ships the other charts with the committed/seeded full_chain.csv rather than failing wholesale. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What
Adds the picofuzz full-chain (100k-block) import stats to the performance stats page ("typeberry import stats"), as a dedicated chart alongside the existing per-scenario ones (conformance, fallback, safrole, storage, storage_light).
The
Picofuzz Full Chainworkflow already emitsfull_chain.csvin the exact same 19-column stats format as the other charts, but its artifact lives in a separate workflow that never triggers the deploy — so it was never rendered. This wires it in.Changes
Frontend (
perf-graph/)Chart.tsx— optionaltitleprop; heading renderstitle ?? name(existing charts unchanged).App.tsx— new dedicated section:<Chart name="full_chain" title="Full chain import (100k blocks)" />.App.css—.full-chain-sectionspacing (mirrors.conformance-section).Seed data
perf-graph/public/full_chain.csv— 10-row accumulated history from the latestpicofuzz-csv-full_chainartifact (v0.9.x–v0.11.x,count=100051). Artifacts retain only 90 days, so the repo copy is the long-term base the deploy merges onto — same pattern as the other committed CSVs.Deploy wiring (
deploy-perf-graph.yml)"Picofuzz Full Chain"too → same-day redeploy when a fresh result lands.actions: readpermission.picofuzz-csv-full_chainartifact into./csv-artifacts/, regardless of trigger, so the chart stays fresh on every deploy.merge-csvs.tsglobs it automatically — no merge-script change. Both downloads arecontinue-on-error, mirroring the existing step.Verification
npm run build(perf-graph) passes;full_chain.csvis served indist/.npm run lint(eslint) clean;biome checkon changed source files clean.Notes
Get previous run IDpattern inpicofuzz.yml; sameARTIFACTS_PAT). First deploy after merge is the real proof.docs/superpowers/specs/2026-07-13-full-chain-perf-graph-design.md(design doc) is included for context — happy to drop it if you'd rather not track it.🤖 Generated with Claude Code