Skip to content

fix(ci): 修正 W2 Summary 的精度取数、缺失结果和算子统计 - #107

Merged
jizhenjun merged 1 commit into
ScratchV-Compiler:ci/w2-summaryfrom
yuki-328:codex/pr106-summary-fixes
Oct 12, 2026
Merged

jizhenjun merged 1 commit into
ScratchV-Compiler:ci/w2-summaryfrom
yuki-328:codex/pr106-summary-fixes

Conversation

@yuki-328

Copy link
Copy Markdown
Contributor

基于 #106 修复三处 Summary 问题:IR 精度改为读取正常运行的最终输出,避免被诊断版本的结果遮住;缺失或未完成的测试保留在统计中,防止误显示全部通过;算子统计只计入确认解析成功的记录,并补记基础测试中的 Div、Sub。保留原有算子表名称、注释和 QEMU 对比范围,不改变模型计算及误差要求。

本 PR 目标分支为 ci/w2-summary,包含 1 个修复提交、12 个源码及测试文件,合并后会更新 #106。本地预览、输出文件和模型文件未提交。

验证:

  • Summary 相关 78 项测试、探测脚本相关 182 项测试通过;恢复原有名称和注释后,54 项 Summary 测试复查通过。
  • 使用 CI 38154033466 的同一份原始报告生成前后对比,IR 三项精度数值和 QEMU 整行结果保持不变;解析统计由 23 类补到 25 类。
  • 现有 CI 仅监听目标为 main 的 PR,本 PR 不会自动触发;维护者合入后,PR106 更新时再运行远端 CI。

IR precision now uses ordinary final outputs. Keep missing comparisons in the planned counts and count frontend operators only after successful parsing and IR verification, including backend probe graphs.

Preserve the original operator table labels and note, QEMU comparison scope, model calculations and accuracy thresholds. Add focused regression tests for missing results and parse failures.

Validation: 78 summary tests and 182 probe tests passed; 54 summary tests passed again after restoring the original labels. Existing CI reports render with unchanged IR and QEMU precision values.
@jizhenjun
jizhenjun merged commit 6c76480 into ScratchV-Compiler:ci/w2-summary Oct 12, 2026
jizhenjun added a commit that referenced this pull request Oct 13, 2026
* feat(w2): validate full Qwen3 frontend and runtime contracts

* fix(w2): clean up owned gates on acceptance cancellation

* docs: standardize deployment reproduction on Linux

* docs: align shared setup guide with Linux reproduction

* fix(w2): backport compact probe summaries to acceptance CI

* docs: disambiguate the kernel architecture guide

* docs: make architecture command examples valid Bash

* ci: consolidate PR validation and summaries into one workflow

* ci: limit the W2 summary to operators, precision and timing

The W2 Actions page mixed four per-job report dumps with step outcomes and
scope disclaimers, and still could not answer the three questions it exists
for. Answer them in one place and send the rest to the step log.

* The four per-job summarize steps print to stdout again; the Actions page is
  written once, by the w2-acceptance job. Reporting still never changes a
  probe's exit code.
* scripts/summarize_w2_ci.py renders three tables from the six probe reports:
  which operators each layer supports and which were exercised this run, the
  worst recorded deviation from ORT and NumPy per chain, and the seconds each
  chain took plus a total. A missing or malformed report stays explicit and
  never reads as a pass; the script always exits 0.
* The operator lists and the two new files are read with ast, so the job needs
  no dependencies beyond the standard library and probes.numeric_summary.
* scripts/ci_scopes.json routes a PR that only touches the new script through
  the LLM checks.

Co-Authored-By: Claude Code <noreply@anthropic.com>

* reports: drop the redundant word from the comparison status column

The status column already says whether the comparisons passed, so
"门槛通过(2/2)" spent a word twice. Say "通过(2/2)" and "未通过(…)"
instead. The empty case stays "未测(0 条比较)".

This table is shared with the W3 summary and the HTML reports, so their
wording follows.

Co-Authored-By: Claude Code <noreply@anthropic.com>

* ci: say how each W2 precision row was produced

The table said "IR vs ORT" and "QEMU vs NumPy" without saying what those four
are, which left the page readable only to whoever wrote it. Add one line each:
ORT runs the official CPU kernels on the same ONNX model; IR is our frontend's
IR executed by the IR interpreter on the host; QEMU is the same graph compiled
to an RV64 ELF and run in emulation; NumPy is the hand-written formula that
only the operator probe has; the qwen3-small row takes the final checkpoint
named logits.

Co-Authored-By: Claude Code <noreply@anthropic.com>

* ci: fold the Linux reproduction check into the unconditional test job

The Documentation checks job and the docs scope behind it were redundant.
Its `check_linux_repro_docs.py --check-bash` step ran the same command that
llm-deploy already ran, and its pytest step was already covered by the
`pytest tests/` run in the test job.

The check now lives in the test job, which has no path filter, so it runs on
every push and pull request instead of only when the docs scope was selected.
That removes the need for the scope entirely.

- delete .github/workflows/linux-reproduction-docs.yml and the docs job
- drop the duplicated docs:linux-reproduction step from llm-deploy
- select only the llm and w4 scopes, and summarize only jobs that exist

Verified with tests/test_ci_routing.py, tests/test_ci_workflows.py,
tests/test_linux_repro_docs.py, tests/test_w2_actions_summary.py,
tests/test_w2_acceptance_summary.py, tests/test_numeric_summary.py and
tests/test_compare_peephole.py (253 passed).

Co-Authored-By: Claude Code <noreply@anthropic.com>

* ci: drop the hand-written kernel row from the W2 operator table

W2 never executes scratchv/backend/kernels, so a row that lists those files
and then says "not executed" only invites the reader to look for them. The
table now answers for the two layers W2 actually covers.

- remove the kernels row and the now-unused KERNEL_BODIES / kernel_bodies()
- pin the removal in the operator test instead of asserting the row's text

Co-Authored-By: Claude Code <noreply@anthropic.com>

* ci: drop the test job's step summary

The block restated the step's own outcome, which the run page already shows,
and pointed at an artifact that is listed in the run anyway. The JUnit XML and
the text log are still produced and uploaded.

- delete the "Summarize Topic 04 PassManager results" step and the step id it
  was the only reader of
- pin the job's silence in test_ci_workflows.py

Co-Authored-By: Claude Code <noreply@anthropic.com>

* ci: move the W1 deliverable table from the summary into the step log

The table restated five step outcomes the run page already shows per step,
under a job named "W1 + W2" while it only covered W1. The block now prints
into the step log, which is where the W2 gate summaries already go.

- drop the last >> "$GITHUB_STEP_SUMMARY" from the W1 + W2 job
- pin the job's silence, leaving full-model validation as the only writer

Co-Authored-By: Claude Code <noreply@anthropic.com>

* fix(ci): correct W2 summary results and operator coverage (#107)

IR precision now uses ordinary final outputs. Keep missing comparisons in the planned counts and count frontend operators only after successful parsing and IR verification, including backend probe graphs.

Preserve the original operator table labels and note, QEMU comparison scope, model calculations and accuracy thresholds. Add focused regression tests for missing results and parse failures.

Validation: 78 summary tests and 182 probe tests passed; 54 summary tests passed again after restoring the original labels. Existing CI reports render with unchanged IR and QEMU precision values.

---------

Co-authored-by: yuki-328 <yukidrop328@gmail.com>
Co-authored-by: jizhenjun <25874228+jizhenjun@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
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.

2 participants