About ValidateYAML
A layered YAML validation workbench. Everything runs in your browser: no backend, no account, no uploads.
Engines and budgets
Engine 1.0.0. YAML parsing: yaml (eemeli) 2.9.1. JSON Schema: @cfworker/json-schema 4.1.3 (interpreter, no code generation). Validation runs in a Web Worker that is terminated after 5 seconds; a terminated run is reported as incomplete. Input limit 10 MB; alias expansion limited to 100,000 extra nodes; projection to 1,000,000 nodes; findings list capped at 5,000 (truncation makes the run incomplete).
Performance numbers are targets, not measured guarantees. In the unit-test environment a 1 MiB file with a schema validates in roughly 1–2.5 seconds on a shared container.
Feature status
Requirement IDs follow the product specification. Labels: NATIVE (implemented in-browser), EXPLAIN (explanatory content), APPROX (deliberately partial or heuristic), UNSUPPORTED (not available).
| ID | Requirement | Status | Label | Notes |
|---|---|---|---|---|
VY-001 | Source import/encoding | Done | NATIVE | UTF-8/16 with BOM detection, invalid-byte offsets, printable-set checks; original bytes kept for download. UTF-32 reported as unsupported. |
VY-002 | YAML version/schema choice | Done | NATIVE | 1.2 core/JSON/failsafe and 1.1; merge-key toggle; %YAML directive overrides surfaced; Types tab shows effective resolution. |
VY-003 | Syntax validation | Done | NATIVE | eemeli/yaml document API errors and warnings with exact ranges; multiple findings per file. |
VY-004 | Duplicate key checks | Done | NATIVE | Every occurrence listed; reviewed keep-last fix. |
VY-005 | Tag/alias safety | Done | NATIVE | No constructors; language tags flagged; unresolved/cyclic aliases; alias expansion bounded (100k extra nodes). |
VY-006 | Multi-document validation | Done | NATIVE | Per-document statuses in syntax and schema layers; empty docs reported as not assessed. |
VY-007 | Type inspection | Done | NATIVE | Style, tag, resolved type and other-version reading for each scalar. |
VY-008 | Local schema import | Done | NATIVE | JSON/YAML schema paste/open; dialect detection 2020-12/2019-09/07/06*/04. |
VY-009 | Local reference resolver | Done | NATIVE | Remote $ref never fetched; URI → local schema mapping prompt. |
VY-010 | Required/type/enum/range rules | Done | NATIVE | Published vocabulary; $dynamicRef/$dynamicAnchor and unknown keywords yield incomplete. |
VY-011 | Array/object constraints mapped to spans | Done | NATIVE | Pointer→range map incl. alias and merge provenance; lossy projection stops the layer. |
VY-012 | Findings dashboard | Done | NATIVE | Layer/severity/document filters, muted/suppressed toggles, explicit totals. |
VY-013 | Explanation panel | Done | EXPLAIN | Self-written catalogue; deterministic vs heuristic shown. |
VY-014 | Safe fix preview | Done | NATIVE | Diff preview, risk level, revision-bound apply, undo, automatic revalidation; overlap detection for bundles. |
VY-015 | Report export | Done | NATIVE | JSON with hashes and versions; source inclusion opt-in; reproducible report id. |
VY-016 | Private local history | Done | NATIVE | IndexedDB snapshots, compare, re-run, delete/clear, memory-only mode. |
VY-017 | Invalid-source export | Done | NATIVE | Downloads as .draft.yaml; report labels it not validated. |
VY-018 | Domain schema packs | Partial | APPROX | Three small self-authored subsets (Compose, GitHub Actions, K8s Deployment) with version/date/scope; not official schemas. |
VY-019 | Custom declarative rules | Done | NATIVE | Allowlisted DSL; no JS; worker-bounded. |
VY-020 | Cross-file reference checks | Not done | UNSUPPORTED | Roadmap. Batch validates files independently. |
VY-021 | Rule severity policy | Done | NATIVE | default/strict/advisory + per-rule overrides; muted kept in reports. |
VY-022 | Suppressions/baselines | Partial | NATIVE | Rule+scope+reason+expiry, expired/unmatched visible. Bulk baseline import not built. |
VY-023 | Schema authoring/testing | Done | NATIVE | Editor, meta-schema subset check, capability report, fixtures. |
VY-024 | Schema inference | Done | APPROX | Labelled draft with uncertainty notes. |
VY-025 | Batch/ZIP validation | Done | NATIVE | Multi-file and bounded ZIP; complete/partial/invalid aggregate. |
VY-026 | Diff-aware findings | Done | NATIVE | New/resolved/existing by fingerprint. |
VY-027 | CI-compatible report files | Partial | APPROX | SARIF 2.1.0-shaped adapter; not validated against the official SARIF schema. |
VY-028 | Regex safety | Done | NATIVE | ECMAScript u-flag dialect, length budgets, worker termination → incomplete. |
VY-029 | Secret-pattern hints | Done | APPROX | Heuristic, redacted, disclosed false positives/negatives. |
VY-030 | Local explanation assistant | Not done | UNSUPPORTED | R3 roadmap; no model is downloaded. |
VY-031 | Large schema/data profiles | Partial | NATIVE | 10 MB input limit, 5 s worker budget, node/alias budgets. No per-dialect benchmark published. |
VY-032 | Guaranteed downstream acceptance | Not done | UNSUPPORTED | Excluded by design. |
VY-101 | Vocabulary capability report | Done | NATIVE | Before running, in Schema tab and schema editor. |
VY-102 | Reference dependency graph | Partial | NATIVE | Ref list with states and document cycles; no visual graph. |
VY-103 | Policy severity profiles | Done | NATIVE | |
VY-104 | Fix collision detection | Partial | NATIVE | Overlapping edits skipped and listed; no interactive resolution plan. |
VY-105 | Rule unit-test workbench | Done | NATIVE | Embedded pack tests. |
VY-106 | Schema version migration review | Not done | UNSUPPORTED | Roadmap; use /yaml-diff with two schemas manually. |
VY-107 | Required coverage dashboard | Partial | NATIVE | Per-layer coverage lines and per-doc statuses; no path-level coverage map. |
VY-108 | Finding fingerprint baseline | Done | NATIVE | Stable local fingerprints used by suppressions, diff, history. |
VY-109 | Suppression expiry review | Done | NATIVE | |
VY-110–115 | R3 backlog (cross-file identity, assertion packs, reproducibility, support bundle, incremental, pack certification) | Partial | UNSUPPORTED | Re-run reproducibility check exists in Reports; the rest is roadmap. |
Known limits
Multi-tab editing is detected (a notice appears when another tab saves the same draft) but not fenced. Local storage is not a backup and can be evicted by the browser. Columns are UTF-16 code units, so an emoji counts as two.