@piercebarney/whs-eleventy 2026.10.6 → 2026.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piercebarney/whs-eleventy",
3
- "version": "2026.10.6",
3
+ "version": "2026.10.7",
4
4
  "description": "The web house style's Eleventy + Netlify tooling — the compliance sweep, the infra doctor, the link/CSP integrity check, and the a11y scan, shared by every project on the stack.",
5
5
  "bin": {
6
6
  "whs": "cli.js"
@@ -21,6 +21,43 @@ enforced, new *opt-in* chapters/capabilities, tooling-only changes — is
21
21
 
22
22
  ---
23
23
 
24
+ ## 2026-10-07 [breaking]
25
+
26
+ ### core: a11y
27
+
28
+ `core.md#a11y`'s Contract never named a WCAG version/level as its
29
+ conformance target — only "WCAG AA" for contrast. It now declares **WCAG 2.1
30
+ Level AA** explicitly as the target, anchored to US law (the ADA Title II
31
+ rule and US web-accessibility litigation/settlements reference WCAG 2.1 AA;
32
+ Section 508's WCAG 2.0 AA is already covered by it) rather than WCAG 2.2 AA
33
+ — the upgrade trigger to 2.2 AA is recorded, not scheduled, for once US rules
34
+ reference it. **Breaking:** a project that was previously compliant by
35
+ meeting the checklist plus passing the automated scan must now conform to
36
+ all of WCAG 2.1 AA, including criteria the checklist and scan don't
37
+ individually name (e.g. captions, reflow, keyboard operability everywhere)
38
+ — a real added requirement, not just a clarification of an already-met bar.
39
+ No tooling change: Eleventy's `whs a11y` scan already runs `wcag2a`/
40
+ `wcag2aa`/`wcag21a`/`wcag21aa` — it already matched this target. SvelteKit's
41
+ and Phoenix's scan gaps (no automated a11y tooling yet) are pre-existing and
42
+ unrelated to this change. Decided by the owner in
43
+ `feedback/2026-09-26-external-standards-survey.md` ("Decisions (2026-09-26)"
44
+ item 1); see that file for the full WCAG-version rationale, including why
45
+ 2.1 and not 2.2.
46
+
47
+ ### core: styling
48
+
49
+ The contrast line in `#styling` now also says "WCAG 2.1 AA" (was "WCAG AA"),
50
+ matching the version now named in `#a11y`.
51
+
52
+ ### stacks/eleventy-netlify.md, stacks/phoenix.md, stacks/sveltekit-netlify.md
53
+
54
+ Each of `stacks/eleventy-netlify.md`, `stacks/phoenix.md`, and
55
+ `stacks/sveltekit-netlify.md`'s `#a11y` Core-contract pointer line now
56
+ mentions WCAG 2.1 AA alongside the existing checklist/scan pointer — no
57
+ change to any stack's own mechanism.
58
+
59
+ ---
60
+
24
61
  ## 2026-10-06 [breaking]
25
62
 
26
63
  ### packages/whs-eleventy
package/standard/core.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Web project house style — CORE (stack-agnostic)
2
2
 
3
- **Version:** 2026-10-06 · **Status:** active
3
+ **Version:** 2026-10-07 · **Status:** active
4
4
 
5
5
  This is the stack-agnostic contract every web project follows, regardless of
6
6
  framework, host, or CSS system. It says **what** must be true, with concrete
@@ -244,7 +244,7 @@ contrast-correct at the token level.
244
244
  - **Strict-CSP-safe:** no `style-src 'unsafe-inline'`, no inline `style=`
245
245
  attributes in templates, no per-page `<style>` blocks. Utility-class systems
246
246
  (Tailwind) are fine; inline style strings are not.
247
- - Contrast meets WCAG AA. When a pair fails, fix the **token**, not the usage.
247
+ - Contrast meets WCAG 2.1 AA. When a pair fails, fix the **token**, not the usage.
248
248
  - Theme is applied via a data attribute set before first paint (`#theme`).
249
249
  - A second stylesheet only for a genuinely separable widget, justified in a
250
250
  comment.
@@ -834,8 +834,11 @@ states.
834
834
 
835
835
  ## a11y — Accessibility checklist
836
836
 
837
- **Contract.** Every page meets the checklist below. An automated a11y scan over
838
- every page runs in the gate — and is understood to catch regressions, not
837
+ **Contract.** Every page conforms to **WCAG 2.1 Level AA** — the level US
838
+ accessibility law references (the ADA Title II rule; Section 508's WCAG 2.0 AA
839
+ is covered by it). The checklist below is the house's concrete mechanism for
840
+ the parts of AA most often missed, not the whole of it. An automated a11y scan
841
+ over every page runs in the gate — and is understood to catch regressions, not
839
842
  everything.
840
843
 
841
844
  **Specs.**
@@ -858,7 +861,7 @@ everything.
858
861
  keyboard button — don't re-bind Enter/Space or add `role`/`tabindex`.
859
862
  - **Icons:** decorative → `aria-hidden="true"`; meaningful → `<title>` in the
860
863
  SVG or `aria-label` on the control.
861
- - **Contrast** meets WCAG AA; fix failures at the token (`#brand-source`), not
864
+ - **Contrast** meets WCAG 2.1 AA; fix failures at the token (`#brand-source`), not
862
865
  with a one-off override.
863
866
  - **Focus visibility:** a visible focus ring on every interactive element; if
864
867
  you override the default, keep one.
@@ -1467,7 +1470,7 @@ governs it and follow that chapter — the slugs are the index (a `<script>` →
1467
1470
  - production-url: https://example.com
1468
1471
  - content-type: tool # tool | article (article => feeds)
1469
1472
  - publishing-rate: ~5 pages/week
1470
- - standard-version: 2026-10-06 # recommended — enables standard-version drift tracking (#compliance)
1473
+ - standard-version: 2026-10-07 # recommended — enables standard-version drift tracking (#compliance)
1471
1474
  ```
1472
1475
 
1473
1476
  If the section is absent, the assistant's first action is to run the flow above