Consolidates the in-progress #146 work; valid-instances-rejected reaches 4 on the 2006-11-06 XSTS archive (buckets now 1/262/4/147). Regex: match Unicode scalars rather than grapheme clusters; the empty pattern matches only the empty string; pin the category repertoire to Unicode 3.2, the version the corpus is consistent at, so code points added in 3.2 (Tagalog, Cyrillic Komi) are word characters while later additions (the Tamil digit zero) stay unassigned and match \D. New XSDCategory and a 3.2 assignment table derived from DerivedAge, replacing the old Unicode31 files. Content model: assess each child against the particle the content automaton matched, not a by-name lookup (#180). Two same-named particles keep their own fixed values, and an element matching a skip wildcard is no longer validated against its global declaration. Selection is made reproducible when an ambiguous schema slips past the UPA check. XSTS runner: compile and merge every schemaDocument in a schemaTest, not just the first; this also surfaced one previously-masked invalid-instance acceptance (recorded in the baselines). Also folds in attribute-group anyAttribute inheritance, extension wildcard union, namespace-qualified type tables for multi-document xsi:schemaLocation, per-container elementFormDefault, strict and lax attribute wildcard validation, built-in type resolution, and xs:redefine simpleType overrides.
2.5 KiB
2.5 KiB
Roadmap
Living index of open work. Pin #167 on GitHub for the checklist view. Released v0.2.0 (2026-06-16); pre-1.0 until the production-readiness gates in docs/production-readiness.md are earned.
Current focus (priority order)
- #161: cross-document schema composition (
include/import/redefine): chameleon include + cross-container reference checks landed; attg/schZ XSTS burn-down still open. - #158 / #159: Particle Valid Restriction/Extension completion.
- #169: located schema diagnostics (line/column).
- #172–#174: instance-validation cluster tasks.
Parallel: #130 (XSLT suite), #139 (performance epic; tasks #175–#178).
M1 done: #171 schema differential harness (closed; opt-in; 231 XSTS oracle disagreements pinned) + generative fuzz + validation framework (#92).
XSTS gates (v0.2.0 baselines)
| Gate | Now | Issue |
|---|---|---|
| Valid schemas rejected | 1 | #148 |
| Invalid schemas accepted | 261 | #145 |
| Valid instances rejected | 99 | #146 |
| Invalid instances accepted | 147 | #147 |
Gates are metric trackers, not implementation tasks. Pick up task issues; ratchet baselines in Tests/XSTSSuiteTests.swift when counts fall.
Milestones
| Milestone | Exit criteria | Key issues |
|---|---|---|
| M1: Trust the oracle | Reference differential + fuzz | |
| M2: Schema compiles correctly | #145 to 0 | #161, #158, #159 |
| M3: Instances validate correctly | #146, #147 to 0 | #172, #173, #174 |
| M4: IDE-ready diagnostics | Located errors, proven bounds | #169 |
| M5: 1.0 | All gates at 0 | #148 (closed at floor), #130, #139 |
Labels
| Label | Meaning |
|---|---|
epic |
Grouping issue |
gate |
XSTS outcome metric |
task |
Implementation work |
area-schema / area-instance / area-infra / area-xslt / area-perf |
Subsystem |
priority-P0 / P1 / P2 |
Critical path vs parallel |
Related docs
docs/production-readiness.md: the bar for IDE authoritydocs/schema-validity-burndown.md: schema-side burn-down protocoldocs/xsts-deviations.md: deviation taxonomy and documented floors