Final tranche 01 · Post-fix result
Diagnostic accuracy corpus
This versioned study measures ZemDomu's default source diagnostics against manually reviewed public-repository findings, targeted seeded defects, and a bounded rendered-DOM comparison with axe-core. The published result is reproducible evidence for this tranche, not a claim of perfect accuracy on every project.
Post-fix precision
407/407
100% in this bounded tranche
Seeded recall
37/37
Reviewed defects at recorded anchors
Public repositories
10
538 selected files
Pending axe disagreements
0
All 12 mapped results dispositioned
Scope and pinned versions
The final run scanned lexicographically selected source files from 10 full-commit-pinned public repositories. It used ZemDomu 1.3.19 plus the checked-in Unreleased accuracy fixes, default rule configuration, and isolated source analysis. Cross-component analysis was disabled for this corpus, so these numbers must not be used as evidence for composed-page behavior.
- HTML files
- 250
- React/TSX files
- 227
- Vue files
- 61
- axe-core
- 4.13.0 · Google Chrome headless
How the precision denominator was built
The natural scan emitted 402 diagnostics: 399 were retained as true positives, 3 Liquid-highlight observations were excluded because they rendered as code examples, and 0 remained unresolved. Another 8 reviewed targeted observations covered default rules without an eligible natural candidate. That produces the published 407/407 precision denominator across all 21 default rules.
Observation syntax counts are 386 HTML, 7 TSX, 14 Vue, and 0 JSX. The absence of a JSX observation is a disclosed sample limitation; it does not establish JSX accuracy.
| Rule | True positives | Reviewed denominator | Tranche precision |
|---|---|---|---|
Section headingrequireSectionHeading | 22 | 22 | 100% |
Heading orderenforceHeadingOrder | 18 | 18 | 100% |
Single H1singleH1 | 6 | 6 | 100% |
Image alt textrequireAltText | 37 | 37 | 100% |
Form-control labelsrequireLabelForFormControls | 47 | 47 | 100% |
List nestingenforceListNesting | 1 | 1 | 100% |
Link textrequireLinkText | 1 | 1 | 100% |
Table captionsrequireTableCaption | 10 | 10 | 100% |
Empty inline tagspreventEmptyInlineTags | 1 | 1 | 100% |
Anchor hrefrequireHrefOnAnchors | 6 | 6 | 100% |
Button namesrequireButtonText | 22 | 22 | 100% |
Iframe titlesrequireIframeTitle | 12 | 12 | 100% |
Document languagerequireHtmlLang | 12 | 12 | 100% |
Image-input alt textrequireImageInputAlt | 2 | 2 | 100% |
Navigation linksrequireNavLinks | 1 | 1 | 100% |
Unique IDsuniqueIds | 1 | 1 | 100% |
Positive tabindexnoTabindexGreaterThanZero | 1 | 1 | 100% |
ZemDomu placeholderspreventZemdomuPlaceholders | 1 | 1 | 100% |
Document titlerequireDocumentTitle | 5 | 5 | 100% |
Single main landmarkrequireSingleMain | 200 | 200 | 100% |
ARIA valuesariaValidAttrValue | 1 | 1 | 100% |
Denominators are intentionally uneven. Nine rules have only one or two reviewed observations, while requireSingleMain has 200. A 100% result with a denominator of one is not comparable to 200/200 and must not be generalized beyond this tranche.
Seeded recall
A seed counted only when its expected rule reported the reviewed defect at the recorded source anchor. Nearby unrelated findings did not count.
- accessible-name
- 10/10
- language
- 10/10
- image-alt
- 10/10
- other
- 7/7
axe-core comparison
axe-core 4.13.0 ran in google chrome headless on three pinned static pages. The mapping recorded 8 agreements, 1 ZemDomu-only result, and 3 axe-only results.
The four differences were documented scope differences: source-level section-heading guidance, a missing-H1 check not present in the measured ZemDomu rule set, and two rendered landmark-containment checks. None remained pending. This is a comparison of selected mapped results, not a claim that the tools are interchangeable.
Pinned repository sample
| Repository | Syntax | Selected files | Natural candidates | Pinned commit |
|---|---|---|---|---|
| 50projects50days | html | 50 | 94 | c92b0bc3a87f |
| mdn-dom-examples | html | 100 | 156 | 72c9e5c6fc61 |
| googlechrome-samples | html | 100 | 133 | 1eef1eeb6048 |
| nextjs-postgres-auth-starter | tsx | 7 | 0 | fde8ecf1da93 |
| shadcn-taxonomy | tsx | 75 | 0 | 298a8857c712 |
| vercel-commerce | tsx | 45 | 4 | 3761e52e60df |
| bulletproof-react | tsx | 100 | 2 | 9506629ed003 |
| vuejs-docs | vue | 10 | 6 | b75d188ab16b |
| antfu-vitesse | vue | 10 | 1 | 8a01bc9283fe |
| nuxt-movies | vue | 41 | 6 | c1abf704762c |
Reproduce the evidence checks
From packages/ZemDomu-Core, prepare the pinned public repositories, rerun the reviewed seeds, supply an installed Chrome executable for the rendered comparison, and regenerate the study. Network access is required for the repository preparation step.
npm ci
npm run accuracy-corpus:prepare
npm run accuracy-corpus:seed
npm run accuracy-corpus:axe -- --workspace <prepared-workspace> --chrome <absolute-chrome-path>
npm run accuracy-corpus:study
npm run test:accuracy-corpusThe evidence records the axe-core version but not the exact Chrome build number. That missing browser pin is a reproducibility limitation and should be corrected in a future corpus version rather than inferred here.
Download the raw evidence
- Aggregate summary
- Adjudicated study
- Pinned repository manifest
- Natural candidate bundle
- Seeded recall evidence
- axe-core evidence
- Candidate bundle SHA-256
d16f8ac59aa075987ee8b9dfd2f8764a4747d11d063a2f9bee3e6554c2737046- Seed evidence SHA-256
a2f53c97921ab8512e8b892a62f6ec01121f44ff2fcd497da4d49ec130de8084- axe evidence SHA-256
c2595dec2a6e84fcac6db3fe2f16e7ac5981c3df3ad760ab6a21d379594de8ad
For composed-source behavior, inspect the separate cross-component fixture benchmark.