Skip to content

[compass] Clean up tests: quick-check waits and key names (about 2.4 s faster) - #46

Merged
skulitom merged 1 commit into
mainfrom
compass/tests-2026-10-15
Oct 15, 2026
Merged

skulitom merged 1 commit into
mainfrom
compass/tests-2026-10-15

Conversation

@skulitom

@skulitom skulitom commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Makes selftest --quick about 2.4 s (10%) faster and merges one check into another, with no lost assertion that something else doesn't already cover. Checks only: no product code changes.

What changed

Check Change Why it's safe What still covers it
display changes A stand-in that ignores live changes (Live = null) waits 30 ms instead of 300 ms before the fallback Its screen never changes, so a longer wait can't change the outcome. Stand-ins that apply a change, late (60 ms, 120 ms) or otherwise, keep 300 ms The same cases and asserts; the late-change case still proves the live wait (mutation D1)
RDP listener probe Probes the live port and a separate closed port together instead of one after the other Each probe waits out its 1 s connect timeout on the loopback family nothing listens on The same asserts, on the closed port's number
key names → key names and chords Merged: the 15 everyday names join InputChecks.KeyChords' table; the inline check is gone Its one unknown name (definitely-not-a-key) runs the same refusal path as that check's nine unknown names, which also check the error text KeyChords' unknown names (grav, vk_nosuch, -_-, …), mutation K1

Before and after (main b0ed067 vs this branch)

main branch
Checks 109 pass 108 pass (one merged)
selftest --quick wall time, interleaved runs 25.19, 25.03, 24.95 s 22.72, 22.64, 22.62 s
Sum of check times 24.96, 24.85, 24.78 s 22.47, 22.47, 22.44 s
display changes 1,961 ms 588–605 ms
RDP listener probe 2,036 ms 1,013–1,027 ms
Product line coverage (Debug, dotnet-coverage 18.11.2) 6,468 of 10,989 (58.86%) the same 6,468 lines exactly

Mutations

Nine product mutations, each built in Debug and run against the whole quick suite (the Compass fixer's mutate.py, byte-exact restore). All nine are caught with this branch's checks, by the check named, and main's checks catch the same nine (control, in a worktree of main).

Mutation Caught by (branch) main
K1 an unknown key name resolves to 0 instead of being refused key names and chords caught (key names or key chords)
K2 esc maps to the wrong code key names and chords caught (key names or key chords)
K3 win maps to the right Windows key key names and chords caught (key names or key chords)
R1 the listener needs both loopback families (Any → All) RDP listener probe caught
R2 a missing listener doesn't name its port RDP listener probe caught
R3 only IPv6 loopback is probed RDP listener probe caught
D1 a live display change isn't waited for display changes (the 60 ms late-change case), display restored after a lease caught
D2 a display Windows chose differently is reconnected display changes caught
D3 an ignored live change is reported as applied, with no reconnect (only the 30 ms stand-ins see it) display changes caught

Second review

Codex is out of weekly usage until 20 Oct, so a fresh Claude subagent reviewed the diff read-only, asked specifically whether any removed assertion was the only coverage of a behaviour. Verdict: no credible problem.

  • Display: with Live null the stand-in never changes its screen, so the wait length can't change any outcome. The uncertain stand-ins' later lease-end restore keeps working at 30 ms, because their late change applies inside the daemon call. Restore() and the 60 ms late-change stand-in keep 300 ms.
  • Listener: CheckAsync is stateless, so a just-stopped port and a different closed port take the same path. Port-reuse risk is unchanged from before.
  • Key names: definitely-not-a-key takes exactly the branches grav takes. The only mutation the dropped assertion alone would catch is a far-fetched one: a fallback that accepts a hyphenated name if any part resolves. One side effect: a wrong code among the 15 everyday names now stops the rest of that check, which can hide a later failure in the same check. The suite still fails. Nothing in docs, scripts or CI names either old check.

Merged by compass-test-cleanup in this run once its tests and second review pass (RULES.md, Pull requests).

🤖 Generated with Claude Code

… (about 2.3 s faster)

- display changes: a stand-in that ignores live changes (Live = null) waits 30 ms
  instead of 300 ms before the fallback it is there to test; stand-ins that apply a
  change, late or otherwise, keep the 300 ms wait.
- RDP listener probe: the live and closed ports are probed together. Each probe
  waits out the 1 s connect timeout on the family nothing listens on, so running
  them one after the other cost 2 s.
- key names: merged into "key names and chords". Its 15 names join that check's
  table; its one unknown name ("definitely-not-a-key") is the same refusal path
  as that check's nine unknown names, which also check the error text.

Checks only; no product code changes. Second-review question: is any removed
assertion the only coverage of a behaviour?

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-15T04:18:24.718852Z 815079b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@skulitom
skulitom merged commit 64ec824 into main Oct 15, 2026
2 checks passed
@skulitom
skulitom deleted the compass/tests-2026-10-15 branch October 15, 2026 04:22
skulitom added a commit that referenced this pull request Oct 15, 2026
… registry off 0.11.0 (#47)

* [compass] Anode 0.11.3 release candidate (C-058)

- Version 0.11.3 in Anode.csproj, server.json, the MCPB manifest and the
  Claude Code plugin, and in INSTALL.md's pinned installer example.
- CHANGELOG: Unreleased becomes 0.11.3, with one line for the docs and
  release-tooling changes (#35, #40, #43, #45, #46).
- .github/RELEASE_NOTES.md: what's new in 0.11.3 (#34, #36 to #44),
  known issues and upgrade.
- docs/RELEASE-READINESS.md: a 0.11.3 section with the scope, the checks
  run without a seat, and a place for the owner's release-check summary.

Package manifests (Scoop, winget) change after the release, as before.

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

* [compass] 0.11.3 candidate: .NET 10.0.13, and review fixes

- RuntimeFrameworkVersion and System.ServiceProcess.ServiceController
  move to 10.0.13, Microsoft's security update of 2026-10-13
  (CONTRIBUTING: the current patch before each release). CHANGELOG,
  release notes and the readiness record say so.
- The log-times entries say exactly what changed: log lines read
  2026-10-13 23:34:16; screenshot names and backup dates use the
  Gregorian calendar.
- RELEASE-READINESS 0.11.3: scope by group, including #19 (the Business
  licence terms, first released here); the live-check summary is recorded
  on main after the run; coverage limits and known issues.
- RELEASE_NOTES links the 0.11.3 section of the validation record.

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

* [compass] 0.11.3 candidate: B-040's known issue covers only a display change that reconnects the viewer

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

---------

Co-authored-by: Claude Opus 5.5 <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.

1 participant