Wire orphaned Zig test files into WindowsShell.Tests.ps1 and add anti-drift guard - #426
Merged
Merged
Conversation
This was referenced Sep 23, 2026
coneilen
force-pushed
the
coneilen-microsoft-wire-orphaned-zig-tests
branch
from
September 23, 2026 03:07
b516e5a to
9032398
Compare
…nti-drift guard Fixes #424. WindowsShell.Tests.ps1 hand-maintained a list of zig test invocations that missed 17 files (Accessibility.zig was fixed separately by #421; GraphContextMenu.zig/MainWindow.zig are reserved for in-flight #418/ #422). Wires all 17 remaining orphaned files with per-file link flags verified against pinned Zig 0.15.2, and adds a structural guard that enumerates graphcode-windows\src\*.zig, detects files containing a est " block, and throws if any is missing from the wired-file list -- so this drift cannot recur silently. First-run triage: - WorktreeDialog.zig: one test used a stale fixture (dirty instead of locked) to exercise armConfirmation()'s fail-closed path; sweepSelectable() intentionally permits dirty rows. Fixed the test fixture, not the code. - App.zig: one test's App struct literal predated three fields (sidebar_state, declared_entry_ids, kept_worktree_paths) added since it last compiled. Fixed the test to match App.init()'s initialization. - Sidebar.zig: 3 real, pre-existing test failures traced to one root cause (layoutFor()/projectSectionHeight() count a recent_projects entry that is also the open project, but appendRows() correctly excludes it from rendered rows, desyncing row/scroll y-math). Per explicit instruction not to modify Sidebar.zig source, these are quarantined at the harness level with an explicit reason string, not fixed or deleted. Reported as a real product bug for separate follow-up. - App.zig transitively reruns the same 3 Sidebar failures (it imports Sidebar.zig); quarantined identically with a note explaining why. RED: WorktreeDialog and App.zig tests failed on first run -> both had stale fixtures, not product bugs; fixed the tests to match current code. GREEN: all 17 newly-wired files now execute; 90/93 Sidebar.zig and 228/231 App.zig tests pass -> the 3 residual failures are quarantined with cause. REGRESSION: full harness run end-to-end with pinned Zig 0.15.2 exits 0 and the anti-drift guard fails loudly on a real mutation removing a wired file -> guard verified functional, not merely asserted. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…vocation Moves the structural guard added for #424 to the end of WindowsShell.Tests.ps1, after all zig test invocations, instead of right after Resolve-TestZig. Placed first, the guard's expected failure (reserving GraphContextMenu.zig/MainWindow.zig for #418/#422) short-circuited the whole script in CI before any of the newly-wired tests ever ran on the actual runner, leaving only local verification as evidence. Placed last, CI now executes and reports every invocation for real before the guard's contract check runs, while the guard still fails the job overall until #418/#422 lands. RED: with the guard first, CI failed at the guard on the first push and never exercised a single newly-wired zig test -> no real CI signal existed for the wiring itself, only local runs. GREEN: relocated the guard after every Invoke-Native/Invoke-NativeQuarantined call and reran the full harness locally with pinned Zig 0.15.2 -> all 37 invocations execute (90/93 Sidebar.zig, 228/231 App.zig, everything else 100%), quarantines are tolerated correctly, and the guard still throws last naming exactly GraphContextMenu.zig and MainWindow.zig. REGRESSION: reran the same real-mutation guard check (removing a wired file name) after relocating the block -> guard still throws the identical not-wired message immediately, confirming the guard's detection logic is unchanged, only its position in the script moved. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The three Sidebar.zig quarantine entries pointed at #424 (this PR's own tracking issue) with the phrase "first-run finding" as a stand-in for a real bug report, since no dedicated issue existed yet for the Sidebar layout bug when it was first quarantined. The coordinating session filed #428 with the full root-cause writeup (layoutFor()/projectSectionHeight() vs appendRows()'s isProjectOpen skip, the 76px delta, and the hit-testing failure). Repointing the quarantine reason string at #428 so it resolves to the actual bug report instead of this wiring PR. RED: quarantine reason string referenced #424, which is this very PR and not a bug report -> anyone reading the quarantine message would have to guess where the real Sidebar.zig fix should land. GREEN: repointed both Sidebar.zig and App.zig quarantine reason strings to #428 and reran the full harness locally with pinned Zig 0.15.2 -> same 90/93 Sidebar.zig and 228/231 App.zig pass counts, guard still fails last on exactly GraphContextMenu.zig and MainWindow.zig, exit code unchanged. REGRESSION: confirmed Invoke-NativeQuarantined's known-failure matching is by test name string only, independent of the reason text -> the wording change cannot affect which failures are tolerated. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cherry-picked #420's NativeForms/UpdateOfferPresentation harness wiring (commit 775d77b) onto this branch: my branch point (68eabe5) predated that merge, so the reentrancy-guard Assert-Contract, the source-list entry, and the zig test invocation for UpdateOfferPresentation.zig were all absent here even though they exist on main. Restored via cherry-pick rather than a full rebase, per instruction to hold on rebasing until #422 lands. That cherry-pick alone was not sufficient: this PR's own anti-drift guard maintains a second, independent file list (\) that #420 never touched (the guard did not exist on main). Newly restoring the UpdateOfferPresentation.zig invocation without adding it to that list would have made the guard itself flag it as unwired. RED: after cherry-picking 775d77b, the guard's \ array still lacked "UpdateOfferPresentation.zig" -> a manual simulation of the guard's detection logic reported it as missing alongside the two entries correctly reserved for #422. GREEN: added "UpdateOfferPresentation.zig" to \ next to "NativeForms.zig" -> the same simulation now reports exactly and only GraphContextMenu.zig and MainWindow.zig as missing, matching the #422 reservation. REGRESSION: reran the full harness end-to-end locally with pinned Zig 0.15.2 and GRAPHCODE_WINGHOSTTY_ROOT set -> all 37 invocations execute (including the restored NativeForms 96/96 and UpdateOfferPresentation 1/1), the same 3 pre-existing Sidebar.zig failures are tolerated by name, and the guard still throws on exactly GraphContextMenu.zig, MainWindow.zig. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…422; correct Sidebar quarantine attribution Rebased onto origin/main after #422 (issue #418) merged as 06e092e, which wired GraphContextMenu.zig and MainWindow.zig into the harness's zig test invocations and source-list array. #422 never touched this PR's own \ guard array, because that array did not exist on main when #422 was authored -- it is this PR's own addition. Added both filenames to the list and updated the guard's explanatory comment, which was otherwise now stale (still described the two files as reserved and not-yet-landed). Also corrected the Sidebar.zig quarantine reason: an independent review determined that only 2 of the 3 quarantined failures are the real layoutFor()/appendRows() product bug (#428, fix in flight as #430); the third (sidebar scroll clamps overflow, shrink, and resize, expected 334 found 410) is a separate, stale test expectation -- the 76px delta is the Activity block height that contentBottom/paint() correctly account for and the test's oracle omitted. Left it quarantined (not fixed) since this PR must not modify Sidebar.zig source, but the reason string now attributes each failure accurately instead of lumping all three under one root cause. RED: mechanically diffed this branch's wired-file set against origin/main after rebasing -> main had 22 entries (20 plus #422's 2), this branch still reported only 38 in its own \ guard list, and running the guard's detection logic directly showed it still flagging GraphContextMenu.zig and MainWindow.zig as unwired despite their zig test invocations now existing in the script. GREEN: added both names to \ and reran the same detection logic -> zero missing files reported. REGRESSION: ran the complete harness end-to-end locally with pinned Zig 0.15.2 and GRAPHCODE_WINGHOSTTY_ROOT set -> all 39 invocations execute including the newly-landed GraphContextMenu.zig (8/8) and MainWindow.zig (6/6, appearing twice via App.zig's transitive import), the same 3 Sidebar.zig failures are tolerated by name with the corrected attribution text rendering intact, and the full script now exits 0 -- the guard no longer fires at all. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PR #430 (merged as ece5935) fixed the real Sidebar.zig layout/row-count desync structurally via a single shared predicate, projectIsVisibleInSection, so all three previously-quarantined tests now pass unconditionally. Landing the quarantine would have shipped a misleading tolerate-list for an already-fixed bug, so remove it entirely instead: - Delete Invoke-NativeQuarantined and its Get-FailingZigTestNames helper (Sidebar.zig/App.zig were their only consumers). - Delete the sidebarLayoutOpenProjectKnownFailures/-Reason variables. - Convert both call sites to plain Invoke-Native. Verified end-to-end locally with pinned Zig 0.15.2: exit 0, all 93 Sidebar.zig tests and the full 232-test App.zig suite pass unconditionally, zero quarantine output. Re-ran the guard's set-difference check against origin/main (ece5935): empty, with UpdateOfferPresentation.zig and the NativeForms Assert-Contract block both still intact. Signed-off-by: Colin Neilens <coneilen@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
coneilen
force-pushed
the
coneilen-microsoft-wire-orphaned-zig-tests
branch
from
September 23, 2026 04:40
9032398 to
43f4db3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #424.
Problem
Tools/windows/Tests/WindowsShell.Tests.ps1hand-maintained a list ofzig testinvocations that missed a growing set of files. Since #421 landed (addingAccessibility.zig), the remaining orphaned set was 17 files, not 20/95 as originally scoped in the issue -- corrected counts confirmed against mergedmain(68eabe5).GraphContextMenu.zigandMainWindow.zigare reserved for in-flight #418 (PR #422) and intentionally not wired here.What this PR does
zig testinvocations, flags verified against pinned Zig 0.15.2 (-target x86_64-windows-msvc -lcplus-luser32/-lgdi32/-lwinhttp/-loleaut32/-luiautomationcoreand"-I$include"as each file's actual link requirements dictated -- copied from the nearest comparable existing entry, not guessed).graphcode-windows\src\*.zig, regex-detects^test "blocks, and throws if any such file is absent from the harness's$wiredTestFileslist. Runs as part ofWindowsShell.Tests.ps1, which CI already invokes viavalidate.ps1 -Task windows-shell(.github/workflows/windows-shell.yml). Verified by actual mutation, not just asserted: removingWorktreeDialog.zigfrom the list reproduces the exact failure mode the guard exists to catch (Windows shell contract: ... not wired into any zig test invocation ...: WorktreeDialog.zig, exit 1). The guard also correctly reportsGraphContextMenu.zig, MainWindow.zigas missing right now -- that is the guard doing its job pending Windows UIA gate cannot open or inspect native context menus (TrackPopupMenu) #418/Windows: inspect native context menus in the UIA live gate #422, not a bug here.Sidebar.zigorGraphCanvas.zigsource.Sidebar.zig's existing 93 tests are wired in as-is.Coordination
GraphContextMenu.zig/MainWindow.zig: left to Windows UIA gate cannot open or inspect native context menus (TrackPopupMenu) #418/PR Windows: inspect native context menus in the UIA live gate #422 to avoid duplicate harness entries. Guard will pass once either PR lands.Accessibility.zig: not wired here -- Fix Windows UIA contract parity #421 already addedzig test src\Accessibility.zigto this same harness onmain. Rebased ontoorigin/main(68eabe5) and resolved the merge conflict by keeping Fix Windows UIA contract parity #421's invocation and folding it into$wiredTestFiles.Accessibility.zig,AccessibilityProvider.cpp,uia-live-gate.ps1, or any parity ledger row (Fix Windows UIA contract parity #421, Correct overclaimed Show in Graph parity evidence #423 territory).NativeForms.zig,App.zigproduction logic, orUpdateOfferPresentation.zig(Guard NativeForms modal reentrancy #420 territory) beyond the one stale-fixture test fix inApp.zigdescribed below.First-run test failures and how each was handled
WorktreeDialog.zig-- "multi-select requires explicit confirmation and fails closed": failed on first run. Root cause: the test used adirtyfixture entry to exercise the "unsafe selection" fail-closed path, butWorktreeStatus.sweepSelectable()intentionally permits dirty rows (confirmed by a siblingWorktreeDialogtest andWorktreeStatus's own passing tests). The test encoded a stale expectation, not a real bug. Fixed the test: swapped the fixture to alockedentry, and forced.selected = truedirectly (bypassingtoggle(), which already blocks unsafe rows from ever being selected) so the test independently provesarmConfirmation()'s own defense-in-depth check. All 13 tests in the file now pass.App.zig-- "edge drop source remains valid across synchronous capture cancellation": failed to compile on first run -- the test'sAppstruct literal predated three fields (sidebar_state,declared_entry_ids,kept_worktree_paths) added toAppsince the test last compiled. Fixed the test to initialize them the same wayApp.init()does, with matchingdeinit()defers. Not a product bug -- a stale test fixture.Sidebar.zig-- 3 real, pre-existing failures, quarantined (not fixed, not deleted, not weakened), all one root cause: when a project inrecent_projectsis also the currently-open project/graph,appendRows()correctly excludes it from rendered project rows (isProjectOpenfilter), butLayout.projectSectionHeight()and dependent offset math (loopTop(),sharedGraphTop,maxScroll()) still count it, desyncing computed y-coordinates/scroll bounds from actual rendered rows:inspection.entriesbecause the test's earlytrybails before its owndeinit()-- a side effect of the same failure, not independent)This is a real product bug in
Sidebar.zig, filed as Sidebar: layoutFor counts open recent projects as rendered rows, corrupting section height, scroll clamp, and hit testing #428 (with the exact root-cause writeup, the 76px delta, and the hit-testing failure). Per explicit instruction,Sidebar.zigsource is not modified in this PR -- these three are quarantined at the harness level (Invoke-NativeQuarantined), pointing its reason string at Sidebar: layoutFor counts open recent projects as rendered rows, corrupting section height, scroll clamp, and hit testing #428 rather than fixing it here.App.zigtransitively reruns these same 3 failures (it importsSidebar.zig) and is quarantined identically.90/93 Sidebar.zig tests and 228/231 App.zig tests pass; the only failures anywhere in the newly-wired set are the 3 (same-root-cause) Sidebar failures, surfacing twice.
What CI proves vs. what I verified locally
Verified locally against pinned Zig 0.15.2 (resolved via the
bootstrap.ps1SHA256 pin, not the ambient 0.16.0 toolchain, which is a different and misleading compiler): every individual newly-wired file compiles/runs standalone with the flags now in the harness, and the complete editedWindowsShell.Tests.ps1runs end-to-end (all 37zig testinvocations in sequence, guard included) with the correct pass/quarantine outcome. I could not run the fulluia-live-gate.ps1locally (pinnedzmxdoes not build against local Zig 0.16 here) -- CI is authoritative for any live-gate assertions; I am not implying local coverage of that path.RED: WorktreeDialog/App.zig fixtures failed to compile pre-fix, 3 Sidebar tests failed pre-#430 -> stale fixtures fixed, 2 real defects (product + test oracle) identified and left to #428/#430 rather than fixed in this harness PR.
GREEN: post-#430 rebase, full harness run with pinned Zig 0.15.2 -> exit 0, 93/93 Sidebar.zig and 232/232 App.zig tests pass unconditionally, quarantine mechanism fully removed with no residual tolerate-list.
REGRESSION: mechanical set-difference against origin/main (ece5935) and guard-mutation replay rerun after every rebase -> main-minus-mine empty every time, guard still throws exit 1 with the exact expected message when a wired file is removed, UpdateOfferPresentation.zig and the NativeForms Assert-Contract block both confirmed intact post-rebase.
Run vs. verified: tautology skim (post-#421 guidance)
Per the review guidance from the #421 session (whose merged fix corrected the pre-existing
Accessibility.zigtest that asserteddefaultContract()against itself -- producer and oracle were the same declaration -- and so would have passed regardless of correctness), I did a skeptical, per-test skim of all 17 newly-wired files, not just a "it ran green" check.16 of 17 files: no tautology found. Every sampled test compares production output against a literal/independent expected value (numeric constants, hard-coded strings, fixtures built via a separate path, or cross-checks between two different code paths such as layout math vs. hit-testing).
Sidebar.zigandApp.zigwere spot-checked across 15 representative tests each (out of 93 and ~231 respectively, the latter counting transitively pulled files) given their size, prioritizing tests whose names suggested a self-comparison risk; none were found.2 tests flagged, in files that otherwise pass real assertions elsewhere:
QuickChats.zig--"quick chat operations are available through the daemon controller":Availabilityis a single-variant enum (availableis its only member) andController.availability()/Controller.request()unconditionally return that one value. The test can only ever pass -- there is no code change toControllerthat could make it fail without also failing to compile. Not the same producer/oracle pattern asAccessibility.zig(no shared in-memory object), but equally unable to catch a regression. Flagging, not touching -- out of scope for this PR per your "flag, don't fix" guidance.UpdateOfferDialog.zig--"update offer keeps install unavailable while preserving explicit actions": literallyexpectEqual(Action.later, .later)for each of three enum values -- no production function is called at all. This one is a straightforward tautology. Flagging, not touching, for the same reason.Both are pre-existing tests being newly wired into CI, not something introduced by this PR; I'm surfacing them per the explicit request to report tautological-looking passes rather than silently checking the box.
Post-rebase update: #422 landed, guard now passes clean; corrected quarantine attribution
Rebased onto
origin/mainafter #422 (issue #418,GraphContextMenu.zig/MainWindow.zig) merged as06e092e. Clean rebase, no conflicts (my775d77bcherry-pick -- see below -- was recognized as already-applied and skipped). Mechanically re-verified rather than trusted by eye:mainnow has 22 wired files (20 + #422's 2), this branch has 39 (22 + this PR's 17), and the set difference (mainminus this branch) is empty.#422 wired the two files'
zig testinvocations and source-list entries, but never touched this PR's own$wiredTestFilesguard array -- that array didn't exist onmainwhen #422 was authored, since it's this PR's own addition. Added"GraphContextMenu.zig"and"MainWindow.zig"to that list and updated the guard's explanatory comment (previously described them as reserved/not-yet-landed, now stale). The complete harness now runs end-to-end locally with pinned Zig 0.15.2 and exits 0 -- the guard no longer fires at all, including the newGraphContextMenu.zig(8/8) andMainWindow.zig(6/6, twice viaApp.zig's transitive import) invocations.Corrected the Sidebar.zig quarantine attribution. An independent review determined only 2 of the 3 quarantined failures are the real
layoutFor()/appendRows()product bug (#428, fix in flight as #430):"shared sidebar layout routes every loop row after project rows and scroll"and"recent project rows exclude folders already open in the projects list". The third,"sidebar scroll clamps overflow, shrink, and resize"(expected 334, found 410), is a separate, stale test expectation, not a product defect -- the 76px delta is exactly the Activity block height thatcontentBottomreserves andpaint()renders, which the test's own oracle simply omitted. Left it quarantined alongside the other two (not fixed) since this PR must not modifySidebar.zigsource, including its test blocks -- but the quarantine reason string now attributes each failure accurately rather than lumping all three under one root cause.The guard caught this drop live in CI, not just in my local simulation
Before I opened this section above, my branch (base
68eabe5) predated #420's merge (775d77b, "Guard native form modal reentrancy"), soNativeForms.zig's reentrancy-guardAssert-Contract, theUpdateOfferPresentation.zigsource-list entry, and itszig testinvocation were all absent here even though they existed onmain-- caught by a reviewer diffing this branch's wired-file set againstmain. Restored viagit cherry-pick 775d77b(clean).The guard caught the resulting gap on its own, in the actual
windows-shellCI run on that commit, without anyone asking it to look:That's real accidental data loss caught by the mechanism this PR exists to build, not a synthetic demonstration. Fixed by adding
"UpdateOfferPresentation.zig"to$wiredTestFiles.Stated limitation, precisely scoped: the guard caught the test-invocation drop (1 of the 3 things #420 added). It did not and structurally cannot catch the dropped
Assert-Contractblock forNativeForms.isModalActive()/UpdateOfferPresentation.decide(...)-- the guard only enumeratessrc\*.zigfiles with atest "block against$wiredTestFiles; it has no visibility intoAssert-Contractcalls elsewhere in this same script. A future merge that silently drops a contract assertion would not be caught by this guard. That boundary is intentional and out of scope to close here -- an accurately-scoped guard is worth more than an overclaimed one.One more pre-existing-test repair, noted for completeness
The
App.zigtest-fixture fix described above (addingsidebar_state,declared_entry_ids,kept_worktree_pathsto the test'sAppstruct literal) turned out to be load-bearing beyond this PR:App.zig's test build does not compile on currentmainwithout it. The #430 session (fixing the real Sidebar.zig bug) hit the same compile failure independently and applied this same fix temporarily to verify its own work. WiringApp.ziginto the harness required repairing a test fixture that had silently rotted while nothing compiled it -- itself further evidence for why this PR's guard needs to exist.Final update: #430 merged (
ece5935); quarantine removed entirely, Sidebar/App.zig gate unconditionallyRebased onto
origin/mainatece5935(also includes #425). Re-verified the set difference mechanically against the new base --mainnow has 22 wired files (unchanged from the #422 rebase), this branch has 39-40 (the guard's own$wiredTestFileslist carries one extra bookkeeping alias beyond the raw invocation count), andmainminus this branch is still empty.UpdateOfferPresentation.zig's wiring and theNativeForms/decide(...)Assert-Contractblock are both confirmed still present after this rebase.#430 fixed the real
Sidebar.zigbug structurally, not with a point patch: a single shared predicate,projectIsVisibleInSection(Sidebar.zig:669), now drives row emission (:507,:518), heading presence (:655,:662), and the count feeding layout geometry (:681). Counter and renderer are the same code path now and can no longer independently drift. Because that fix landed onmainbefore this PR, I removed the quarantine mechanism from this PR entirely rather than landing it pre-fixed-and-obsolete:Invoke-NativeQuarantinedfunction and itsGet-FailingZigTestNameshelper outright -- theSidebar.zig/App.zigcall sites were their only consumers, so no dead quarantine machinery is left behind for a future change to quietly add a name to.$sidebarLayoutOpenProjectKnownFailures/$sidebarLayoutOpenProjectReasonvariables."Sidebar executable tests","App shell executable tests") to plainInvoke-Native, identical script blocks, no tolerate-list.Sidebar.zigtests pass unconditionally, the fullApp.zigsuite (232 tests, including the transitively-imported Sidebar tests) passes unconditionally, zero quarantine output anywhere in the run. All three previously-quarantined test names --"shared sidebar layout routes every loop row after project rows and scroll","recent project rows exclude folders already open in the projects list", and"sidebar scroll clamps overflow, shrink, and resize"-- now pass for real, confirmed by name in the harness output, not merely "no crash."Corrected attribution, now final and past-tense (#428, closed): of the three, two were the real product bug above; the third (
"sidebar scroll clamps overflow, shrink, and resize", old expectation 334 vs. actual 410) was never a product defect -- the 76px delta was exactly the Activity block height thatcontentBottomreserves andpaint()renders, which that test's oracle had simply omitted. #430 also caught and fixed a second, subtler defect in that same test while correcting its oracle: the clamp loop drives 10 iterations x 40px = 400px, which happened to exceed the old wrong 334 expectation but not the corrected 410 -- so a naive retune to "just past 410" would have made the test pass while silently no longer exercising clamping at all. #430 fixed this by having the loop overshoot more generously rather than retuning to the boundary. That is a test that ran, passed, and proved nothing -- the same class of defect as a test that never ran, and a second concrete instance (beyond theQuickChats.zig/UpdateOfferDialog.zigtautologies flagged earlier in this PR) of why "wiring a test in" and "that test actually asserting something real" are two different claims.This PR's central evidence, in full, three independent pieces:
zig build teststep exists (build.zigdeclares none), no file usesaddTest, andgit grep refAllDecls -- graphcode-windows/srcreturns zero matches repo-wide -- so nothing transitively pulled these files' tests into any invocation that did run.UpdateOfferPresentation.zig, lost from this very branch during a rebase across the file this PR hardens, reported by name by the mechanism this PR exists to add.Sidebar.ziglayout/row-count desync, Sidebar: layoutFor counts open recent projects as rendered rows, corrupting section height, scroll clamp, and hit testing #428, fixed by Windows: stop counting already-open recent projects as rendered sidebar rows #430) and a stale test oracle (Sidebar.zigscroll-clamp expectation, also corrected by Windows: stop counting already-open recent projects as rendered sidebar rows #430) -- plus, separately, the Windows: stop counting already-open recent projects as rendered sidebar rows #430 near-miss where retuning that same oracle would have left the test passing without testing anything.Scope, stated plainly and unchanged from earlier in this PR: the guard checks test wiring -- whether a
test "..."block in asrc\*.zigfile is reachable from somezig testinvocation in this harness -- notAssert-Contractcall sites elsewhere in the script. A future change that silently drops a contract assertion (as nearly happened withNativeForms/UpdateOfferPresentation.decide(...)above) stays invisible to this guard. That is an intentional, named boundary, not an oversight, and closing it is out of scope here.