From 479b0fdd8910aa3d5db6964a0065e2893a5f809a Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 4 Sep 2026 04:56:19 +0700 Subject: skills, docs: address review on the harness audit The WCH lock header path sat across a code-span line break and rendered with a space in it. The pool-check reporting list had dropped the scan-mode disclosure the same file requires. The pr3840 handoff still described the no-boards bullet as unfixed; it now records the doc half as landed and keeps only the missing test. --- .claude/skills/hil-pool-check/SKILL.md | 5 +-- .claude/skills/rtt/SKILL.md | 9 ++--- .../followup/pr3840-skill-md-no-boards-drift.md | 40 +++++++--------------- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/.claude/skills/hil-pool-check/SKILL.md b/.claude/skills/hil-pool-check/SKILL.md index bb0d8ad04..dd128f755 100644 --- a/.claude/skills/hil-pool-check/SKILL.md +++ b/.claude/skills/hil-pool-check/SKILL.md @@ -130,8 +130,9 @@ removes VBUS, so there is nothing further to try. The user-facing answer to a pool check IS the tool's summary table: paste the complete per-board table (and footer counts) verbatim — never truncate rows or reduce it to a prose digest like -"27/27 healthy". Commentary below it covers only what the table cannot show: the escalation -note below, a board that needs a physical replug. +"27/27 healthy". Commentary below it covers only what the table cannot show: which mode ran +and why when it was not the full check, the escalation note below, a board that needs a +physical replug. When an escalation above was needed, add a short note under the table naming: which boards needed it, which root port was cycled (or that a replug was needed instead), which siblings bounced, and diff --git a/.claude/skills/rtt/SKILL.md b/.claude/skills/rtt/SKILL.md index ef315e8c7..58d7312a3 100644 --- a/.claude/skills/rtt/SKILL.md +++ b/.claude/skills/rtt/SKILL.md @@ -171,10 +171,11 @@ then `savebin `.) - Non-ARM ports must supply `SEGGER_RTT_LOCK/UNLOCK`: the vendored generic RISC-V lock uses `mstatus` CSRs that trap (mcause=2) on WCH QingKe. A working WCH port exists but is unmerged (maintainer branch - `claude/add-systemview-debug`, not on master): `hw/bsp/ch583/ - sysview_rtt_lock_wch.h` (brace-scoped save/restore of CSR 0x800), and the - shared `hw/bsp/sysview_rtt_conf_wch.h` that ch32v20x/ch32v30x family.cmake - force-include to win the include-guard race against the vendored conf. + `claude/add-systemview-debug`, not on master): + `hw/bsp/ch583/sysview_rtt_lock_wch.h` (brace-scoped save/restore of CSR + 0x800), and the shared `hw/bsp/sysview_rtt_conf_wch.h` that + ch32v20x/ch32v30x family.cmake force-include to win the include-guard race + against the vendored conf. ## Common mistakes diff --git a/docs/superpowers/followup/pr3840-skill-md-no-boards-drift.md b/docs/superpowers/followup/pr3840-skill-md-no-boards-drift.md index a039a8c12..840d2a074 100644 --- a/docs/superpowers/followup/pr3840-skill-md-no-boards-drift.md +++ b/docs/superpowers/followup/pr3840-skill-md-no-boards-drift.md @@ -1,35 +1,19 @@ -# `SKILL.md` contradicts the code on no-boards tables +# `SKILL.md` no-boards bullet: the regression test is still missing **Origin:** split out of PR #3840, surfaced by its second review round. Delete this file when its own PR lands. -`.claude/skills/hil/SKILL.md:150-151` tells the reading agent: - -> `**HIL run selected no boards.**` — the filters intersected to nothing, so there is **no -> table at all**. Report that (and the filter shown), never `"pass": true`. - -That was true when the no-boards exit wrote a bare notice. It no longer is. An -`--accumulate` no-boards run keeps the accumulated rows — deliberately, because wiping them -destroyed real results — so the artifact now reads: - -``` -**HIL run selected no boards.** filters emptied - -**✅ 1 passed · ❌ 0 failed · ⚪ 0 skipped · blank not run** - -| Board | t | duration | -... -``` - -The behaviour is correct; the documentation is wrong, and wrong in the direction that -matters. An agent is told to expect no table, sees one, and has no rule for whether those -rows are reportable. **They are not this run's** — they are a previous attempt's, carried -forward. - -**What remains:** update that bullet to describe both cases — a fresh run has no table, an -`--accumulate` run shows the previous attempt's rows under the notice and they must not be -reported as this run's. Add a test asserting the fresh case renders no matrix, so the two -halves cannot drift again. +The documentation half landed in PR #3881. `.claude/skills/hil/SKILL.md`'s +`**HIL run selected no boards.**` bullet (under "Reporting") now describes both cases: a +fresh run renders no table, and an `--accumulate` run keeps the previous attempt's rows +under the notice, which are not this run's and must not be reported as such. That matches +the code, which deliberately preserves accumulated rows on a no-boards exit because wiping +them destroyed real results. + +**What remains:** a test asserting that the fresh no-boards case renders no matrix while +the `--accumulate` case keeps the prior rows under the notice, so the two halves cannot +drift again. The behaviour lives in `test/hil/helper/hil_report.py`'s no-boards exit +(`accumulate_report` with `fresh`); `test/hil/test/test_hil_report.py` is the suite. ## Why it was split out -- cgit v1.3.1