﻿PASS: blank delay defaults to five minutes
PASS: whitespace delay defaults to five minutes
PASS: hours minutes seconds combined
PASS: one second accepted
PASS: 24 hours accepted
PASS: more than 24 hours accepted
PASS: explicit zero delay rejected
PASS: invalid minute component rejected: -1
PASS: invalid minute component rejected: NaN
PASS: invalid minute component rejected: Infinity
PASS: invalid minute component rejected: 60
PASS: invalid minute component rejected: oops
PASS: invalid minute component rejected: 1e2
PASS: invalid minute component rejected: 1,2
PASS: invalid minute component rejected: 0.1
PASS: invalid minute component rejected: +1
PASS: invalid minute component rejected: ١
PASS: seconds limited to 59
PASS: 1000 hours with minutes and seconds accepted
PASS: large hour count uses 64-bit arithmetic
PASS: unrepresentable hour count rejected without overflow
PASS: shutdown uses trusted Windows executable
PASS: shutdown is immediate only after monitored delay and never forced
PASS: 96746 duration boundary combinations checked
PASS: active agent prevents countdown
PASS: stable inactivity required
PASS: delay starts after all agents are idle
PASS: does not fire before deadline
PASS: fires exactly at deadline
PASS: popup fires once
PASS: cancel clears timer
PASS: new activity resets timer
PASS: full delay restarts after resumed work ends
PASS: unknown state suspends countdown
PASS: incomplete inventory blocks countdown
PASS: error-bearing snapshot blocks countdown even if marked complete
PASS: null snapshot blocks countdown
PASS: empty list cannot trigger test
PASS: provisional time includes delay and inactivity verification
PASS: provisional time moves while work remains active
PASS: countdown fixes the shutdown time
PASS: fixed shutdown time does not slide during countdown
PASS: resumed work makes shutdown time provisional again
PASS: cancellation clears estimated time
PASS: fractional-minute test works
PASS: real task_started event sets active
PASS: no new data preserves active status
PASS: unfinished task start cannot reuse an earlier idle event
PASS: unfinished completion keeps proven active status and blocks shutdown
PASS: completed JSON line marks idle
PASS: no new data preserves idle status
PASS: error does not imply inactive
PASS: aborted turn becomes idle
PASS: truncated file invalidates previous state
PASS: missing rollout is unknown
PASS: malformed rollout blocks scheduling
PASS: extended Windows path format supported
PASS: active state before history rewrite
PASS: rewritten larger history clears stale active state
PASS: restarted work after history rewrite remains active
PASS: active marker beyond 8 MB still detected
PASS: large active history becomes idle after completion
PASS: unfinished write preserves proven active status
PASS: quota follows returned plan and real window: free
PASS: quota follows returned plan and real window: go
PASS: quota follows returned plan and real window: plus
PASS: quota follows returned plan and real window: pro
PASS: quota follows returned plan and real window: prolite
PASS: quota follows returned plan and real window: business
PASS: quota follows returned plan and real window: enterprise
PASS: quota follows returned plan and real window: edu
PASS: quota follows returned plan and real window: future_plan
PASS: missing quotas and tokens remain unavailable
PASS: all returned quota buckets preferred to legacy bucket
PASS: short and weekly restrictions preserved without hardcoded plan ceilings
PASS: 64-bit official token statistics and UTC day parsed
PASS: absent current day is unavailable rather than invented zero
PASS: window labels match service duration and language
PASS: out-of-range reset date handled
PASS: unknown future plan displayed without guessed limits
PASS: over-quota usage preserved with zero remaining
PASS: null percentage never becomes zero usage
PASS: numeric version comparison handles double digit releases
PASS: current application version centralized
PASS: malformed update version rejected: 
PASS: malformed update version rejected: v0.4.1
PASS: malformed update version rejected: 0.3
PASS: malformed update version rejected: 0.4.1-beta
PASS: malformed update version rejected: -1.0.0
PASS: malformed update version rejected: 0.4.1.0
PASS: malformed update version rejected: 999999999.0.0
PASS: valid package digest and length accepted
PASS: tampered update rejected
PASS: truncated update rejected
PASS: release metadata parsed
PASS: invalid release metadata rejected
PASS: invalid release metadata rejected
PASS: invalid release metadata rejected
PASS: invalid release metadata rejected
PASS: invalid release metadata rejected
PASS: invalid release metadata rejected
PASS: verified package extracts required files
PASS: wrong version folder rejected
PASS: unsafe or unexpected ZIP path rejected: ../escape.exe
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/../escape.exe
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/source/../../escape.cs
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/C:evil.exe
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/source\evil.cs
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/evil.exe
PASS: unsafe or unexpected ZIP path rejected: WorkMonitor-0.4.1/WORKMONITOR.exe
PASS: missing required update asset rejected
PASS: installation failure handled
PASS: failed update restores previous executable and configuration
PASS: rollback removes newly added managed files
PASS: locked executable prevents installation
PASS: locked file failure preserves old executable
PASS: successful installation replaces executable exactly
PASS: update preserves unrelated user files
PASS: update installs bed icon
PASS: no scope selector remains
PASS: web connector button removed
PASS: web sign-in button removed
PASS: manual update button displayed in French
PASS: Quota dashboard displays quota and token cards
PASS: Quota dashboard thresholds distinguish remaining capacity
PASS: French quota controls display remaining percentage
PASS: Minecraft bed icon loads
PASS: no demonstration button exists
PASS: no popup test button exists
PASS: active rows sorted first
PASS: up-to-date button is muted without highlighting
PASS: new release highlights update button in gold
PASS: failed update check does not highlight button
PASS: checking does not highlight button
PASS: current release clears prior highlight
PASS: arming locks all delay fields
PASS: provisional shutdown time displayed
PASS: manual update button translated into English
PASS: English quota controls preserve official token scope
PASS: update status follows language switch
PASS: translation preserves pending shutdown
PASS: cancel clears countdown and unlocks fields
PASS: UI schedules 1000 hours
PASS: distant estimate handled without overflow
PASS: invalid minutes prevent arming
PASS: display filter preserves monitored inventory
PASS: deadline dispatches exactly one shutdown action
PASS: shutdown action never repeats
PASS: activity at deadline prevents shutdown dispatch
PASS: cancel at final second prevents shutdown dispatch
PASS: minimum window size keeps conversation list visible
PASS: shutdown errors visible and schedule cancelled
PASS: visible scrollbar has gold thumb
PASS: scrollbar follows programmatic and wheel-style scrolling
PASS: dragging gold thumb scrolls conversations
PASS: clicking scrollbar track scrolls one page

156 tests passed.
