Golden Status¶
Every quality gate in this repository, its most recently recorded result, and the CI job that enforces it. The page exists because the gates are spread across five workflows and report in isolation, which makes repository-wide health hard to read.
Summary¶
Snapshot of 1327bae, generated 2026-10-19.
| Metric | Count |
|---|---|
| Registered gates | 40 |
| ✅ Pass | 33 |
| ❌ Fail | 0 |
| ⚠️ Warn | 0 |
| ➖ Skipped | 7 |
Blocking gates pass, with gaps
No blocking gate failed in this snapshot, but 7 gate(s) reported findings, are unwired from CI, or could not run on the machine that generated this page. See Known Gaps.
pie title Quality Gate Outcomes
"Pass" : 33
"Skipped" : 7 Gate Results¶
These are locally executed results, not GitHub Actions statuses. Skipped means the machine that generated this page lacked the toolchain the gate needs. Warn means the gate reported findings its CI job would not fail on, either because the job is advisory or because the dashboard runs a wider scope than CI does. 22 of 40 gates are re-run and compared by the Validate Golden Status job, so a flip to Fail cannot sit here unnoticed.
| Gate | Severity | Status | Detail | Time |
|---|---|---|---|---|
| Validator doctests | Blocking | ✅ Pass | 11 modules checked, every doctest passed. | < 10s |
| Capture asset geometry | Blocking | ✅ Pass | Capture assets conform to the capture profile. | < 10s |
| Mermaid format | Blocking | ✅ Pass | Files checked: 246 · Files with errors: 0 | < 10s |
| Mermaid syntax | Blocking | ✅ Pass | Diagrams checked: 395 · Errors found: 0 | < 10s |
| Content sources | Blocking | ✅ Pass | Files with mermaid: 241 · Validation errors: 0 | < 10s |
| Content sources schema | Blocking | ✅ Pass | Files with content_sources schema drift: 0 · Parse errors: 0 | < 10s |
| Diagram ID parity | Blocking | ✅ Pass | mermaid blocks: 395 · diagram-id comments: 395 | < 10s |
| CLI explanation tables | Blocking | ✅ Pass | All Azure CLI code fences and Markdown tables are correctly terminated. | < 10s |
| Documented repository paths | Blocking | ✅ Pass | Documented repository path errors: 0 | < 10s |
| Document quality | Blocking | ✅ Pass | Documentation quality gate passed for 246 file(s). | < 10s |
| Frontmatter YAML style | Blocking | ✅ Pass | Files with style drift: 0 · Parse errors: 0 | < 10s |
| Microsoft Learn locale | Blocking | ✅ Pass | Files with locale drift: 0 | < 10s |
| Microsoft Learn URL reachability | Advisory | ➖ Skipped | Network gate; re-run with --include-network. | < 10s |
| Lab artifact PII | Blocking | ✅ Pass | [scan_lab_pii] scanned=618 skipped_binary=0 skipped_decode=0 findings=0 | < 10s |
| Documentation PII | Blocking | ✅ Pass | No blocking PII patterns detected! | < 10s |
| Documentation repetition | Blocking | ✅ Pass | Scanned 246 file(s): 0 error(s), 6 warning(s). | < 10s |
| Quick-triage causal claims | Blocking | ✅ Pass | Quick-triage causal-claim contract passed (7 files). · Scope is a phrase denylist only; technical review remains required. | < 10s |
| Visual content coverage | Advisory | ✅ Pass | full repo: 83/83 in-scope pages carry a visual aid (100.0%). Advisory gate — exit 0 regardless (see issue #388). | < 10s |
| Windows troubleshooting navigation | Blocking | ✅ Pass | Windows troubleshooting navigation: 2 entry points link all 5 required playbooks. | < 10s |
| Frontmatter schema | Blocking | ✅ Pass | Checked 246 files · Found 0 errors, 28 warnings: | < 10s |
| MkDocs strict build | Blocking | ✅ Pass | Site built with no strict-mode warnings. | 10-120s |
| App and Infra impact classifier tests | Blocking | ✅ Pass | OK | < 10s |
| Workflow YAML duplicate keys | Blocking | ✅ Pass | OK | < 10s |
| Guarded Azure E2E contracts | Blocking | ✅ Pass | OK | < 10s |
| Validation freshness calculation | Blocking | ✅ Pass | OK | < 10s |
| Tutorial validation contract | Blocking | ✅ Pass | Tutorial validation contract: PASS | < 10s |
| Retained Golden package immutability | Blocking | ✅ Pass | Retained Golden package immutability: PASS | < 10s |
| Golden evidence contracts | Blocking | ✅ Pass | OK | 10-120s |
| Absorbed evidence predicates | Blocking | ✅ Pass | undeclared absorbed predicates: 0 (declared: 0, stale: 0) | < 10s |
| Shell script syntax | Blocking | ✅ Pass | All shell scripts parse. | < 10s |
| ShellCheck | Blocking | ➖ Skipped | Executable shellcheck is not on PATH. | < 10s |
| Node.js dependency audit | Blocking | ✅ Pass | found 0 vulnerabilities | < 10s |
| Node.js app tests | Blocking | ➖ Skipped | apps/nodejs/node_modules does not exist. | < 10s |
| Node.js production install | Blocking | ✅ Pass | Production tree resolved from the lockfile. | < 10s |
| Node.js container smoke | Blocking | ➖ Skipped | Network gate; re-run with --include-network. | < 10s |
| Python app compile | Blocking | ✅ Pass | All modules compiled. | < 10s |
| Python app tests | Blocking | ➖ Skipped | Python module pytest is not importable; Python module flask is not importable. | < 10s |
| .NET app build | Blocking | ➖ Skipped | Executable dotnet is not on PATH. | < 10s |
| Java app tests | Blocking | ➖ Skipped | Executable mvn is not on PATH. | < 10s |
| Bicep template build | Blocking | ✅ Pass | Bicep templates built: 40 · Bicep parameter files built: 9 | > 120s |
Gate Inventory¶
Generated from the GATES registry in scripts/generate_golden_status.py. CI fails if a candidate validator script matching the registry discovery rules has no entry here, so this table cannot silently fall behind.
| Gate | Enforces | Severity | Command | Enforced by |
|---|---|---|---|---|
| Validator doctests | Executable specs inside the validators themselves still pass. | Blocking | python3 -m doctest scripts/lib/content_scope.py scripts/validate_content_sources.py scripts/validate_cli_explanations.py scripts/validate_pii.py scripts/detect_repetition.py scripts/check_quick_triage_claims.py scripts/validate_doc_quality.py scripts/validate_capture_assets.py scripts/validate_visual_content.py scripts/validate_windows_navigation.py scripts/generate_golden_status.py | Validate Content Source Metadata — validate-content-sources.ymlValidate CLI Explanation Tables — validate-content-sources.ymlValidate PII — validate-content-sources.ymlValidate Documentation Repetition — validate-repetition.ymlValidate Visual Content (advisory) — validate-visual-content.ymlValidate Golden Status — validate-golden-status.yml |
| Capture asset geometry | Committed Portal screenshots match the portal-desktop-v1 profile or are frozen historical exceptions; changed ones carry provenance; docs reference images only through the manifest or the frozen legacy registry, with captions on changed references. | Blocking | python3 scripts/validate_capture_assets.py | Validate Content Source Metadata — validate-content-sources.yml |
| Mermaid format | Mermaid fences are unindented and correctly delimited. | Blocking | python3 scripts/validate_mermaid_format.py | Validate Content Source Metadata — validate-content-sources.yml |
| Mermaid syntax | Every diagram parses as valid Mermaid. | Blocking | python3 scripts/validate_mermaid_syntax.py | Validate Content Source Metadata — validate-content-sources.yml |
| Content sources | Pages with Mermaid carry content_sources metadata with a valid source type. | Blocking | python3 scripts/validate_content_sources.py | Validate Content Source Metadata — validate-content-sources.yml |
| Content sources schema | content_sources blocks use the canonical mapping shape, not the legacy list form. | Blocking | python3 scripts/normalize_content_sources_schema.py --check | Validate Content Source Metadata — validate-content-sources.yml |
| Diagram ID parity | Mermaid fence count equals diagram-id comment count across docs/. | Blocking | python3 scripts/generate_golden_status.py --gate diagram-id-parity | Validate Content Source Metadata — validate-content-sources.yml |
| CLI explanation tables | Every az CLI fence has an explanation table, and Markdown tables in docs/ and repository-root contracts end with a blank line. | Blocking | python3 scripts/validate_cli_explanations.py | Validate CLI Explanation Tables — validate-content-sources.yml |
| Documented repository paths | Repository-local links, main-branch GitHub links, and registered command paths resolve in the checked-out tree. | Blocking | python3 scripts/validate_documented_paths.py | Validate Content Source Metadata — validate-content-sources.yml |
| Document quality | Canonical section templates, tail sections, long CLI flags, and masked identifiers. | Blocking | python3 scripts/validate_doc_quality.py --all | Validate Content Source Metadata — validate-content-sources.yml |
| Frontmatter YAML style | Frontmatter matches the canonical ruamel.yaml serialization. | Blocking | python3 scripts/normalize_yaml_frontmatter.py --check | Validate Content Source Metadata — validate-content-sources.yml |
| Microsoft Learn locale | Every learn.microsoft.com URL carries the en-us locale prefix. | Blocking | python3 scripts/normalize_mslearn_locale.py --check | Validate Content Source Metadata — validate-content-sources.yml |
| Microsoft Learn URL reachability | Cited Microsoft Learn URLs still resolve and have not been redirected away. | Advisory | python3 scripts/validate_mslearn_urls.py | Validate MSLearn URLs — validate-content-sources.yml |
| Lab artifact PII | Lab scripts and templates carry no real UUIDs, emails, hostnames, or public IPs. | Blocking | python3 scripts/scan_lab_pii.py | Validate Content Source Metadata — validate-content-sources.yml |
| Documentation PII | No leaked subscription, tenant, or object IDs and no real email addresses in docs/. | Blocking | python3 scripts/validate_pii.py | Validate PII — validate-content-sources.yml |
| Documentation repetition | No known scaffold marker is repeated within a single page. | Blocking | python3 scripts/detect_repetition.py docs | Validate Documentation Repetition — validate-repetition.yml |
| Quick-triage causal claims | Known categorical causal shortcuts stay out of quick-triage documentation surfaces. | Blocking | python3 scripts/check_quick_triage_claims.py | Validate Documentation Repetition — validate-repetition.yml |
| Visual content coverage | Factual-claim pages carry at least one diagram, screenshot, or image. | Advisory | python3 scripts/validate_visual_content.py --all | Validate Visual Content (advisory) — validate-visual-content.yml |
| Windows troubleshooting navigation | Both primary troubleshooting indexes directly link every intended Windows playbook. | Blocking | python3 scripts/validate_windows_navigation.py | Validate Content Source Metadata — validate-content-sources.yml |
| Frontmatter schema | Valid doc_type and section values, unique slugs, resolvable relationships, content_validation placement. | Blocking | python3 tools/validate_frontmatter.py | Validate Content Source Metadata — validate-content-sources.yml |
| MkDocs strict build | The site builds with no broken internal links and no navigation warnings. | Blocking | mkdocs build --strict | Build Documentation — validate-content-sources.yml |
| App and Infra impact classifier tests | PR, push, rename, deletion, executable Markdown, app, lab, shared-helper, workflow, and full-regression changes select the intended jobs. | Blocking | python3 -m unittest scripts/test_impact_classifier.py scripts/test_impact_ci.py | Classify App and Infra Changes — app-infra-ci.yml |
| Workflow YAML duplicate keys | Every GitHub Actions workflow parses with duplicate mapping keys rejected. | Blocking | python3 tests/golden/test_workflow_yaml.py | Validate Content Source Metadata — validate-content-sources.yml |
| Guarded Azure E2E contracts | Immutable target SHAs, required evidence, sanitized artifacts, run-owned cleanup, TTL ownership, and offline claim boundaries fail closed. | Blocking | python3 -m unittest tests/golden/test_azure_e2e_guard.py tests/golden/test_azure_cleanup.py tests/golden/test_legacy_startup_verifier.py tests/ci/test_azure_e2e_workflow.py | Validate Golden Contracts — validate-content-sources.ymlRun Golden Scenario A — e2e-azure.ymlVerify run-owned cleanup — e2e-azure.ymlSweep expired Golden E2E groups — e2e-azure.yml |
| Validation freshness calculation | Tutorial freshness is calculated from existing last_tested metadata without modifying capture or test dates. | Blocking | python3 tests/golden/test_freshness_report.py | Validate Golden Contracts — validate-content-sources.ymlReport Validation Freshness — validation-freshness.yml |
| Tutorial validation contract | Tutorial validation frontmatter uses a closed schema, retained references resolve canonically and securely (no traversal, symlinks, or path injection), and every new or changed pass adds a retained package reference. | Blocking | python3 scripts/golden/validate_tutorial_validation.py | Validate Golden Contracts — validate-content-sources.yml |
| Retained Golden package immutability | Existing retained run and lab Golden packages cannot be edited, renamed, or deleted relative to the base ref; new run directories remain allowed. | Blocking | python3 scripts/golden/check_retained_packages.py | Validate Golden Contracts — validate-content-sources.yml |
| Golden evidence contracts | Golden schemas, evaluator negative cases, inventory parity, vocabulary, and externally attested reproduction boundaries pass on Python 3.11. | Blocking | python3 -m unittest discover -s tests/golden -p test_*.py | Validate Golden Contracts — validate-content-sources.ymlLab Evidence Verifiers — app-infra-ci.yml |
| Absorbed evidence predicates | Weak fallback branches cannot bypass required strong evidence predicates in lab verifiers. | Blocking | python3 scripts/detect_absorbed_predicates.py labs --allowlist scripts/absorbed-predicate-allowlist.txt --repo-root . | Lab Evidence Verifiers — app-infra-ci.yml |
| Shell script syntax | Every tracked .sh file under apps/, labs/, and scripts/ parses. | Blocking | bash -c "find apps labs scripts -type f -name '*.sh' -print0 | xargs -0 -r bash -n" | Shell Scripts — app-infra-ci.yml |
| ShellCheck | Shell scripts pass ShellCheck static analysis. | Blocking | bash -c "find apps labs scripts -type f -name '*.sh' -print0 | xargs -0 -r shellcheck" | Shell Scripts — app-infra-ci.yml |
| Node.js dependency audit | The Express reference app has no moderate-or-worse production advisories. | Blocking | cd apps/nodejs && npm audit --package-lock-only --omit=dev --audit-level=moderate | Node.js App — app-infra-ci.yml |
| Node.js app tests | The Express reference app test suite passes. | Blocking | cd apps/nodejs && npm test | Node.js App — app-infra-ci.yml |
| Node.js production install | The Express reference app's production dependency tree resolves from its lockfile. | Blocking | cd apps/nodejs && npm ci --omit=dev --dry-run | Node.js App — app-infra-ci.yml |
| Node.js container smoke | The Node.js reference image builds, serves /health, and keeps sshd running. | Blocking | bash apps/nodejs/smoke-container.sh | Node.js Container Smoke — app-infra-ci.yml |
| Python app compile | The Flask reference app and its tests compile. | Blocking | python3 -m compileall -q apps/python-flask/src apps/python-flask/tests | Python Flask App — app-infra-ci.yml |
| Python app tests | The Flask reference app pytest suite passes. | Blocking | python3 -m pytest apps/python-flask/tests | Python Flask App — app-infra-ci.yml |
| .NET app build | The ASP.NET Core reference project builds. | Blocking | dotnet build apps/dotnet-aspnetcore/GuideApi/GuideApi.csproj | ASP.NET Core App — app-infra-ci.yml |
| Java app tests | The Spring Boot reference app Maven test phase passes. | Blocking | mvn -q -f apps/java-springboot/pom.xml test | Java Spring Boot App — app-infra-ci.yml |
| Bicep template build | Every .bicep template and .bicepparam profile under apps/ and labs/ compiles. | Blocking | az bicep build and build-params over apps/ and labs/ | Bicep Templates — app-infra-ci.yml |
Invocation notes¶
| Gate | Note |
|---|---|
| Validator doctests | CI runs these doctests one module per job; the dashboard runs them as one batch. |
| Capture asset geometry | Known historical violations are listed in scripts/capture/dimension-exceptions.yaml, which may only shrink. |
| Diagram ID parity | An inline shell step with no standalone script, so the dashboard re-runs the same comparison through its own --gate entry point. |
| Document quality | CI blocks on changed files only. The dashboard runs --all, so findings here may include historical debt and cannot be mapped onto the changed-only CI scope. |
| Microsoft Learn URL reachability | Network gate. CI runs it on push to main with continue-on-error to avoid rate limits. |
| Documentation PII | CI blocks on changed Markdown only. The dashboard scans the full documentation tree, so findings here may include historical debt that CI does not fail on. |
| Documentation repetition | Marker hits are errors; other repeated prose is reported as a non-blocking warning. |
| Quick-triage causal claims | A sentence-scoped phrase denylist; passing does not prove causal correctness, so technical review remains required. |
| Visual content coverage | Advisory by design; it always exits 0 and reports coverage as a tracked metric. |
| Frontmatter schema | Unresolved relationship slugs are warnings, so only hard schema errors fail the job. |
| MkDocs strict build | Builds into a temporary directory so a local mkdocs serve is left alone. Needs the full docs toolchain, so the Validate Golden Status job does not re-verify it. |
| Tutorial validation contract | CI compares pass entries with the exact pull-request base SHA. A retained package reference proves only canonical directory existence, not that the package executed the named tutorial or method. |
| Retained Golden package immutability | On pull requests CI supplies the exact base SHA. Local runs default to origin/main; archive retirement requires a separate reviewed change rather than an in-place rewrite. |
| Golden evidence contracts | The workflow executes each suite file separately after installing jsonschema and referencing; the lightweight Golden Status freshness job deliberately does not duplicate those dependencies. |
| Node.js dependency audit | --package-lock-only audits the lockfile, so the result cannot be skewed by a stale node_modules. CI audits the tree it just installed, which is equivalent. |
| Node.js app tests | Needs npm ci in apps/nodejs first; the dashboard never installs dependencies. |
| Node.js production install | Dry run, so it resolves from the lockfile without writing node_modules. |
| Node.js container smoke | Pulls the base image and runs npm ci during the build, so it is a network gate. |
| Python app tests | Needs apps/python-flask/requirements-dev.txt installed into the running interpreter. |
| Bicep template build | Both this gate and the workflow step redirect stdin per template; without that, az consumes the file list and the loop stops after the first file. |
Known Gaps¶
- Microsoft Learn URL reachability did not run here: Network gate; re-run with --include-network.
- ShellCheck did not run here: Executable
shellcheckis not on PATH. - Node.js app tests did not run here:
apps/nodejs/node_modulesdoes not exist. - Node.js container smoke did not run here: Network gate; re-run with --include-network.
- Python app tests did not run here: Python module
pytestis not importable; Python moduleflaskis not importable. - .NET app build did not run here: Executable
dotnetis not on PATH. - Java app tests did not run here: Executable
mvnis not on PATH.
How to Regenerate¶
python3 scripts/generate_golden_status.py
python3 scripts/generate_golden_status.py --include-network
python3 scripts/generate_golden_status.py --strict
python3 scripts/generate_golden_status.py --check
python3 scripts/generate_golden_status.py --gate mermaid-syntax
| Invocation | Purpose |
|---|---|
| (no flags) | Run every gate this machine can run and rewrite this page. |
--include-network | Also run gates that make outbound HTTP requests. |
--strict | Exit non-zero when a blocking gate fails. |
--check | Registry completeness, inventory freshness, and status freshness. This is what CI runs. |
--gate KEY | Run one gate, stream its raw output, and exit with its code. |