PR 1234: keep the ignore rule name valid when the check has spaces

Your PR, reviewed twice at 7c93719: Cody's process (codyrancher/ai-skills 5f9619b) and ours, then merged and re-checked. Nothing was posted to GitHub.

Preview: harvesterrulenamer, built from 7c93719, backend Harvester .105 (v1.10.0-rc1 with the resource health controller). Baseline: harvester-main at aa6d11a, same backend.

Where it stands: ready for review, nothing to change

Both passes found nothing to fix, and Copilot's automatic review agrees. CI is green (7 checks), and Cody and houhoucoop are requested.

How the two passes compare

Pass A (Cody's process)Pass B (our process)
VerdictNo comments to fileApprove
Findings00 blockers, 0 suggestions, 0 nits, 0 questions
Checked by bothThe 422 on main, the rule created and applied on the PR against .105, View, Edit and Delete from the row menu, one-word names unchanged, the controller matching spec.checkKey.
Only one pass didBefore/after demo videos. Five acceptance criteria from the issue, each with a verdict. A side-effects walk over both callers, earlier rules, the controller, the docs sentence and the backport label.All 35 check names the controller can write, run through main's and the PR's function: only the 3 schedule names change, and no two collide. 100,000 random names. Both new tests fail against main's function. UpgradeFailed's request captured on both builds. A coverage grid.
Left outThe docs sentence about rule names, which you decided to keep.The ⋮ menu over the dialogs (same on main; see below) and the summary's few seconds of lag.
OutputNotes per pass, acceptance files, 2 videosreview.md, coverage.md, checked.md, draft.md, 17 screenshots
CostIn this sessionA separate agent: 92 tool calls, about 240k tokens, 26 minutes

Dropped after checking

Pass A: Cody's process

Followed my-pr-full-review in this session, mapped to our setup: the PR preview for his dev server, harvester-main (rebuilt at aa6d11a) for his master build, local files instead of his harness, our recorder for the demos. The before demo's save was a dry run; the after demo used a real rule of mine, deleted on camera. .105 has no rules left.

Before this change: main, the 422.
With this change: created, ignored, found from the row menu, deleted.

Acceptance, from issue 12220

CriterionVerdictHow
AC1Create Ignore Rule works on Proactive Schedule SuspendMetSeen on the PR: 201, the dialog closes, “created”. Main shows the 422.
AC2The rule ignores the checkMetSeen: ignored by the rule in 0.3s, errors 2 → 1, hidden, “(Ignored)” under Show ignored.
AC3The other two schedule checks work the sameMetBy test and reading: .105 has no schedule in those states.
AC4One-word checks keep their namesMetBy test, and Pass B saw UpgradeFailed send the same name on both builds.
AC5View, Edit and Delete work on that ruleMetSeen: read-only View, Save only after a change, Delete brings the check back.

His passes

Pass B: our process

A separate agent that didn't see Pass A. Verdict: approve, 0 blockers, 0 suggestions, 0 nits, 0 questions. What could have blocked and didn't: an earlier rule losing its menu (only the three schedule names change, and those rules were refused before), and the controller not applying the new name (it marked the check ignored with ignoredBy set to it). Its own rule was deleted through the UI.

Coverage

Dimensioncomponent-health.jshealth.test.js
correctnessclearedcleared
testscleared: both new tests fail without the fixcleared
a11yn-an-a
i18nn-a: the rule name is never shownn-a
conventionscleared: lint passescleared
errorscleared: an unusable name still shows in the dialog's error bannern-a
perfclearedn-a

What I'd post

Nothing. Neither pass has a comment, and it's your own PR, so the reviewers are the next step. If you want Pass A's videos in the PR, I can add them to the description, with the URL bar cropped off as usual.

Not checked by either pass