Repository navigation
test(windows): prove one residual cleanup window from supervisor evidence - #459
Conversation
…ence The native residual regression bounded the time after profile unregistration to 9.5-18 s, to catch a window that was reopened or reset part-way through. Wall-clock time cannot do that: a restart at 8.8 s and one slow window both end near 18.8 s, and a slow windows-2025 runner failed #451 at 17.18 s and 18.80 s with nothing reset (#453). The supervisor now records the residual window's start, every start if it were ever reopened, the delete loop's duration, the moment the window expired and the window clock's own reading, and attaches them to the profile cleanup failure as `OpenCoven.ProfileResidualWindow`. The three full-window cases assert on that evidence: exactly one window opened, it ran to its 10 s deadline, and its clock agrees with its recorded start. The only wall-clock bound left is the existing 30 s total budget. The timing line now also prints the delete and window phases, so a slow run shows which phase was slow. A portable check round-trips the evidence through an exception graph and rejects invalid inputs. Deliberately broken supervisor copies (a describer that accepts no starts, a renamed key) fail that check. The workflow embed is regenerated from the source and the docs carry the new pinned sizes and digests. Closes #453 Coven-Harness: Claude Code / claude-fable-5-1
e8838af to
01332b0
Compare
Native Windows evidenceProbe run 38625228667 on
The restart case is the one the issue describes: 16.1 s after unregistration sits inside the old 9.5–18 s ceiling, so the previous test would have passed it. The reopen case ends at 24 s total, inside the 30 s budget, and is caught by the window count rather than by time. Across the three probe runs the real supervisor measured The PR's own Coven-Harness: Claude Code / claude-fable-5-1 |
Repin the harness authority to #459's merge commit
Closes #453
What changes
The native residual regression bounded the time after profile unregistration to 9.5–18 s to catch a window that was reopened or reset part-way through. Wall-clock time cannot do that: a restart at 8.8 s and one slow window both end near 18.8 s, and a slow windows-2025 runner failed #451 at 17.18 s and 18.80 s with nothing reset.
Supervisor (
scripts/windows-job-supervisor.cs): the residual window's start is recorded when it opens, after theDeleteProfileWloop returns. A profile cleanup failure now carriesOpenCoven.ProfileResidualWindowin itsData: the delete loop's duration, every window start (a reopened window would show two), the moment the window expired, and the window clock's own reading, all asStopwatchticks. Production deadlines are unchanged.Native test (
scripts/windows-profile-residual-native.test.ps1): the three full-window cases (persistent,unauthorized,disabled-unregistered) assert on that evidence instead of the ceiling:The only wall-clock bound left is the existing 30 s total budget. The timing line now prints the delete and window phases, so a slow run shows which phase was slow. A portable check round-trips the evidence through an exception graph and rejects invalid inputs.
The workflow embed is regenerated from the source with
renderWindowsSupervisorSource, anddocs/phase1-conformance.mdcarries the new pinned sizes and digests. A repin PR follows the merge, sincewindows-job-supervisor.csis governed byharnessAuthority.Verification
-CompileOnlyand-PortableOnlypass locally (pwsh 7.6.6, macOS).vitest run src/windows-owned-profile.test.ts src/client-v1-conformance-workflow.test.ts src/windows-supervisor-source.test.ts: 126 passed, 19 skipped.ci:fullfor the real residual job. A scratch probe branch (probe/residual-window) also runs the native test against two regressed supervisors on windows-2025: a clock reset at 5 s (lands inside the old 9.5–18 s ceiling) and a reopened second window. Run links follow in a comment.Coven-Harness: Claude Code / claude-fable-5-1