Windows 11 Release Guard

Troubleshooting

Use this when a check fails, a source degrades, or a local Windows result looks surprising.


CHECK_INCOMPLETE

CheckWhat to do
source_statusConfirm whether live remote, cache, bundled, or unavailable source was used.
source_problemsRead exact fetch, parse, signature, hash, or freshness problem.
policy_signature_statusVerify signature and key trust.
Strict modeConfirm live signed remote JSON is fresh enough.
python -m win11_release_guard --check-policy-source
python -m win11_release_guard --diagnose-config

Public Pages Check Fails

CheckWhat to do
Landing pageVerify dashboard URL returns expected static HTML.
Policy/signatureVerify policy bytes and signature metadata.
Manifest hashCompare manifest hash with policy bytes.
API aliasesConfirm /api/v1 files exist and match expected contract.
FreshnessCheck generated epoch and 14/45-day thresholds.
python -m win11_release_guard --check-public-pages

Local Device Label Looks Wrong

CheckWhat to do
Build familyTrust build-family mapping over display label.
Raw labelsKeep raw ProductName, Caption, and DisplayVersion for admin review.
Conflict flagsLook for LOCAL_PRODUCT_NAME_STALE, LOCAL_CAPTION_STALE, or display-version conflict flags.
Policy mapConfirm signed policy knows the build family.
python -m win11_release_guard --json-pretty --no-wua

WUA Does Not Offer Target Feature Update

CheckWhat to do
Policy verdictKeep the signed policy verdict.
WUA availabilityEnable WUA only for diagnostics.
WUfB / WSUSCheck target-release pins, WSUS/SCCM source, deferrals.
Pending rebootReview read-only pending reboot evidence.
Panther/setup logsReview fixed-path, bounded setup diagnostic tails; collection also has a generous total guard.

Panther/setup logs are administrator troubleshooting evidence only. They never decide compliance or override the signed public policy verdict. Default JSON keeps raw Panther content compacted; raw bounded tails are restored only with --include-raw-local-diagnostics.

python -m win11_release_guard --json-pretty --wua --include-raw-local-diagnostics

Generator Fails After Microsoft Page Change

CheckWhat to do
Parser eventInspect source_diagnostics.events.
HeadersCompare Release Health table headings with fixtures.
26H1 noteConfirm special/new-devices-only text is still detected.
B baselineConfirm broad target has a B-release baseline.
Atom support hrefUse only safe Atom alternate links to https://support.microsoft.com article paths. Safe :443, query, or fragment variants canonicalize to scheme/host/path; unsafe ports, feed/API/search/download/static/traversal paths, and non-support hosts reject. If an Atom KB row lacks a safe Support article href, keep the Source Diagnostic evidence; do not add a /help/<KB> fallback resolver.
Atom row matchingIf the same KB appears more than once, confirm Release History enrichment selected a row-build match before accepting KB-only metadata. Ambiguous KB-only fallbacks should be skipped rather than silently choosing the first entry.
Support article mismatchIf Support article KB, build, URL, or parseable Applies to evidence disagrees with Atom, trust Atom KB/build/release and exact MSRC KB evidence; treat Support-derived summary/security wording as untrusted. Use applies_to_releases when present to see which release values were parsed.
Security classificationUse exact MSRC CVRF KB-token evidence or validated explicit Support article wording; do not infer security status from generic Atom title text or KB substrings embedded in larger tokens. Exact-KB remediations count even when optional CVE/severity/product fields are absent.
pytest -q tests/test_remote_policy.py tests/test_policy_generator.py

Latest Observed Is Newer Than Latest Build

CheckWhat to do
latest_buildTreat it as the Release Health Current Versions table value.
latest_observed_buildTreat it as informational public Microsoft evidence, often from Atom-linked Support articles.
required_baseline_buildKeep this as the signed quality baseline used for verdicts.

A newer latest-observed build can explain why a local machine is ahead of the normal fleet baseline. It does not make the device noncompliant and does not raise the required baseline unless the policy baseline rules select that build. When Release Health has caught up and the baseline rules select that same build, all three fields can legitimately show the same build number.

Baseline Update Notice Appears

CheckWhat to do
Required baseline sourceConfirm the row is a real non-preview, non-OOB Release Health B-release.
Notice timingCheck official_release_date, official_release_precision, visible_from_utc, and visible_until_utc; date-only Microsoft evidence is intentionally labeled date-only.
Evidence statusIf Support or MSRC evidence is degraded/unknown, keep the notice but do not treat Support text as security proof.
Expired noticeExpired or inactive notice metadata should not fetch optional Support/MSRC enrichment just to decorate stale history. A stale static page hides the notice and reflows the operational panels.
Issue syncLeave it dashboard-only; the required_baseline_matched_latest_observed notice must not create or reopen GitHub Issues.

The notice explains that the compliance floor has caught up to already observed public Microsoft evidence. It is informational UI generated from local policy facts and validated public evidence; it does not change signed verdicts, required-baseline selection, runtime client behavior, or /api/v1 aliases.

Home | Source Diagnostics | Agent Chokepoints