Skip to content

feat(xtest): decision-first benchmark report with provenance and artifact links - #661

Draft
dmihalcik-virtru wants to merge 1 commit into
DSPX-4372-s5-cifrom
DSPX-4372-s6-report
Draft

dmihalcik-virtru wants to merge 1 commit into
DSPX-4372-s5-cifrom
DSPX-4372-s6-report

Conversation

@dmihalcik-virtru

Copy link
Copy Markdown
Member

Stage 6 of the six-stage plan. Stacked on #660.

What it does

This brings back #621's report presentation, rebuilt on the structured result from stages 3–5:

  • perf/presentation.py is rendering only: it never decides a verdict, a correction family or a winner. It shows:
    • One status: PASS / REGRESSION / INCONCLUSIVE / PARTIAL / UNTRUSTWORTHY / NOTHING MEASURED / NEUTRAL.
    • Compared builds, with requested refs, commits and diff links taken from the installation manifest (the same record locally and in CI).
    • A warning when the budget was too small for the requested precision.
    • The attention table with the tail-compressed effect strip.
    • Candidate comparisons and winners from perf.conclusions.
    • Braille round traces, every measurement, skipped cells, and run facts.
  • perf/publish.py fills the artifact URL into the summary template once upload-artifact returns it, or drops those links locally. No placeholder survives either way.
  • Output files: pytest writes <sdk>.md (the summary), <sdk>-table.md (the plain table) and <sdk>.summary.md (the template). CI defers the step summary until the upload's URL is known.

Provenance links use tree/<sha>, commit/<sha> and compare/<a>...<b>. Those are correct whatever kind of ref an arm was, which #621's release/PR URL guessing wasn't.

Validation

  • 345 passed. ruff, ruff format and pyright are clean. actionlint reports no new findings.
  • Tests cover:
    • each status word;
    • partial coverage listing what was skipped;
    • winner text matching the conclusion;
    • commit and diff links;
    • "provenance unavailable" when the manifest is missing;
    • huge effects and unavailable intervals rendering legibly;
    • markdown-sensitive characters and long arm names;
    • publishing with and without a URL, and with no GitHub env;
    • rendering leaving every gate decision and winner unchanged.
  • Ran a real pytest session against a neutral manifest: the summary renders with NEUTRAL and no placeholder.
  • Not yet run: a CI dispatch to check that the artifact link resolves.

…fact links

Stage 6 of the DSPX-4372-t1 plan: the presentation from #621, rebuilt on the
structured result.

- perf/presentation.py (new): status (PASS, REGRESSION, INCONCLUSIVE,
  PARTIAL, UNTRUSTWORTHY, NOTHING MEASURED, NEUTRAL), compared builds with
  requested refs, commits and diff links from the installation manifest,
  an underpowered-budget warning, the attention table with the effect
  strip, candidate comparisons, Braille round traces, every measurement,
  skipped cells, and run facts. Rendering only: it never decides a verdict
  or a winner.
- perf/publish.py (new): fills the artifact URL into the summary template,
  or drops those links locally. No placeholder survives either way.
- conftest writes <sdk>.md, <sdk>-table.md and <sdk>.summary.md; CI defers
  the step summary until upload-artifact returns its URL.

Signed-off-by: Dave Mihalcik <dmihalcik@virtru.com>
@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant