@mcptoolshop/a11y-evidence-engine 0.3.3 → 1.0.0

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.
@@ -7,6 +7,7 @@ on:
7
7
  - "src/**"
8
8
  - "bin/**"
9
9
  - "fixtures/**"
10
+ - "test/**"
10
11
  - "package.json"
11
12
  - "package-lock.json"
12
13
  - ".github/workflows/**"
@@ -16,6 +17,7 @@ on:
16
17
  - "src/**"
17
18
  - "bin/**"
18
19
  - "fixtures/**"
20
+ - "test/**"
19
21
  - "package.json"
20
22
  - "package-lock.json"
21
23
  - ".github/workflows/**"
@@ -53,6 +55,13 @@ jobs:
53
55
  node bin/a11y-engine.js scan fixtures/bad --out test-results || test $? -eq 2
54
56
  test -d test-results
55
57
 
58
+ - name: Upload coverage
59
+ if: matrix.node-version == '22.x'
60
+ uses: codecov/codecov-action@v4
61
+ with:
62
+ token: ${{ secrets.CODECOV_TOKEN }}
63
+ flags: engine
64
+
56
65
  lint:
57
66
  runs-on: ubuntu-latest
58
67
 
@@ -62,7 +71,7 @@ jobs:
62
71
  - name: Use Node.js
63
72
  uses: actions/setup-node@v4
64
73
  with:
65
- node-version: '20.x'
74
+ node-version: '22.x'
66
75
  cache: 'npm'
67
76
 
68
77
  - name: Install dependencies
@@ -70,3 +79,13 @@ jobs:
70
79
 
71
80
  - name: Check for syntax errors
72
81
  run: node --check bin/a11y-engine.js src/cli.js
82
+
83
+ dep-audit:
84
+ runs-on: ubuntu-latest
85
+ steps:
86
+ - uses: actions/checkout@v4
87
+ - uses: actions/setup-node@v4
88
+ with:
89
+ node-version: 22
90
+ - run: npm ci
91
+ - run: npm audit --omit=dev
package/CHANGELOG.md ADDED
@@ -0,0 +1,48 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/).
7
+
8
+ ## [1.0.0] — 2026-02-27
9
+
10
+ ### Added
11
+
12
+ - Structured error handling with typed codes (INPUT_MISSING, INPUT_UNKNOWN_COMMAND, SCAN_FAILED)
13
+ - Verify script: test + CLI smoke + pack in one command
14
+ - Dependency audit job in CI
15
+ - Codecov upload in CI (Node 22.x)
16
+ - Threat model paragraph in README (Security & Data Scope)
17
+ - Shipcheck compliance: SHIP_GATE.md, SCORECARD.md
18
+
19
+ ### Changed
20
+
21
+ - Bumped to v1.0.0 — production-stable
22
+ - SECURITY.md updated with real data scope
23
+ - CLI errors now emit structured `[CODE] message` format with hints
24
+
25
+ ## [0.3.3] — 2026-02-25
26
+
27
+ ### Added
28
+
29
+ - Landing page via @mcptoolshop/site-theme
30
+ - 7 translations (ja, zh, es, fr, hi, it, pt-BR)
31
+ - Brand logo in README
32
+
33
+ ## [0.3.0] — 2026-02-24
34
+
35
+ ### Added
36
+
37
+ - CI pipeline with Node 20/22 matrix, syntax check, CLI verification
38
+ - npm publish workflow (release-triggered)
39
+
40
+ ## [0.1.0] — 2026-02-22
41
+
42
+ ### Added
43
+
44
+ - Initial release
45
+ - HTML scanning with 4 rules: missing_lang, missing_alt, missing_label, missing_name
46
+ - prov-spec provenance records (record, digest, envelope)
47
+ - Deterministic finding IDs
48
+ - CLI with scan command and exit codes (0, 2, 3)
package/README.es.md CHANGED
@@ -1,43 +1,44 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/a11y-evidence-engine/readme.png" alt="a11y-evidence-engine" width="400">
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
10
  <a href="https://github.com/mcp-tool-shop-org/a11y-evidence-engine/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/a11y-evidence-engine/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11
11
  <a href="https://www.npmjs.com/package/@mcptoolshop/a11y-evidence-engine"><img src="https://img.shields.io/npm/v/@mcptoolshop/a11y-evidence-engine" alt="npm"></a>
12
+ <a href="https://codecov.io/gh/mcp-tool-shop-org/a11y-evidence-engine"><img src="https://codecov.io/gh/mcp-tool-shop-org/a11y-evidence-engine/branch/main/graph/badge.svg" alt="Coverage"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow" alt="MIT License"></a>
13
14
  <a href="https://mcp-tool-shop-org.github.io/a11y-evidence-engine/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
14
15
  </p>
15
-
16
- **Motor de análisis de accesibilidad sin interfaz que genera registros de trazabilidad según la especificación [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec).**
17
-
18
- Diseñado para funcionar en conjunto con **a11y-assist**: este motor identifica problemas y recopila evidencia verificable; a11y-assist transforma esos hallazgos en soluciones.
19
-
16
+
17
+ **Motor de análisis de accesibilidad sin interfaz que genera registros de trazabilidad según la especificación [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec).**
18
+
19
+ Diseñado para funcionar en conjunto con **a11y-assist**: este motor identifica problemas y recopila evidencia verificable; a11y-assist transforma esos hallazgos en soluciones.
20
+
20
21
  ---
21
-
22
- ## Características
23
-
24
- - **Resultado determinista**: la misma entrada siempre produce los mismos resultados y trazabilidad.
25
- - **Compatible con prov-spec**: cada hallazgo incluye evidencia verificable criptográficamente.
26
- - **Amigable para CI**: códigos de salida diseñados para la automatización.
27
- - **No requiere navegador**: análisis estático de HTML puro.
28
-
22
+
23
+ ## Características
24
+
25
+ - **Resultado determinista:** la misma entrada siempre produce los mismos resultados y trazabilidad.
26
+ - **Compatible con prov-spec:** cada hallazgo incluye evidencia verificable criptográficamente.
27
+ - **Amigable para CI:** códigos de salida diseñados para la automatización.
28
+ - **No requiere navegador:** análisis estático de HTML puro.
29
+
29
30
  ---
30
-
31
- ## Instalación
32
-
31
+
32
+ ## Instalación
33
+
33
34
  ```bash
34
35
  npm install -g @mcptoolshop/a11y-evidence-engine
35
36
  ```
36
-
37
+
37
38
  ---
38
-
39
- ## Uso
40
-
39
+
40
+ ## Uso
41
+
41
42
  ```bash
42
43
  # Scan a file or directory
43
44
  a11y-engine scan ./path/to/html --out ./results
@@ -45,11 +46,11 @@ a11y-engine scan ./path/to/html --out ./results
45
46
  # View help
46
47
  a11y-engine --help
47
48
  ```
48
-
49
+
49
50
  ---
50
-
51
- ## Salida
52
-
51
+
52
+ ## Salida
53
+
53
54
  ```
54
55
  results/
55
56
  ├── findings.json # All findings with metadata
@@ -59,51 +60,59 @@ results/
59
60
  ├── digest.json # integrity.digest.sha256
60
61
  └── envelope.json # adapter.wrap.envelope_v0_1
61
62
  ```
62
-
63
+
63
64
  ---
64
-
65
- ## Códigos de salida
66
-
67
- | Code | Significado |
68
- | ------ | --------- |
69
- | 0 | No se encontraron problemas con la severidad "error". |
70
- | 2 | Se encontró al menos un problema con la severidad "error". |
71
- | 3 | Fallo interno del motor / entrada inválida. |
72
-
65
+
66
+ ## Códigos de salida
67
+
68
+ | Código | Significado |
69
+ |------|---------|
70
+ | 0 | No se encontraron problemas con la severidad "error". |
71
+ | 2 | Se encontró al menos un problema con la severidad "error". |
72
+ | 3 | Fallo interno del motor / entrada inválida. |
73
+
73
74
  ---
74
-
75
- ## Reglas (v0.1.0)
76
-
77
- | ID de la regla | Descripción |
78
- | --------- | ------------- |
79
- | `html.document.missing_lang` | El elemento `<html>` no tiene el atributo "lang". |
80
- | `html.img.missing_alt` | El elemento `<img>` no tiene el atributo "alt". |
81
- | `html.form_control.missing_label` | Un control de formulario no tiene una etiqueta asociada. |
82
- | `html.interactive.missing_name` | Un elemento interactivo no tiene un nombre accesible. |
83
-
75
+
76
+ ## Reglas (v0.1.0)
77
+
78
+ | ID de la regla | Descripción |
79
+ |---------|-------------|
80
+ | `html.document.missing_lang` | Elemento `<html>` sin el atributo `lang`. |
81
+ | `html.img.missing_alt` | Elemento `<img>` sin el atributo `alt`. |
82
+ | `html.form_control.missing_label` | Elemento de control de formulario sin etiqueta asociada. |
83
+ | `html.interactive.missing_name` | Elemento interactivo sin nombre accesible. |
84
+
84
85
  ---
85
-
86
- ## Trazabilidad
87
-
88
- Cada hallazgo incluye tres registros prov-spec:
89
-
90
- 1. **record.json**: Extracción de evidencia utilizando `engine.extract.evidence.json_pointer`.
91
- 2. **digest.json**: Hash SHA-256 de la evidencia canónica utilizando `integrity.digest.sha256`.
92
- 3. **envelope.json**: Resultado encapsulado utilizando `adapter.wrap.envelope_v0_1`.
93
-
94
- Estos registros se pueden verificar de forma independiente sin confiar en el motor.
95
-
86
+
87
+ ## Trazabilidad
88
+
89
+ Cada hallazgo incluye tres registros prov-spec:
90
+
91
+ 1. **record.json**: Extracción de evidencia utilizando `engine.extract.evidence.json_pointer`.
92
+ 2. **digest.json**: Hash SHA-256 de la evidencia canónica utilizando `integrity.digest.sha256`.
93
+ 3. **envelope.json**: Resultado encapsulado utilizando `adapter.wrap.envelope_v0_1`.
94
+
95
+ Estos registros se pueden verificar de forma independiente sin confiar en el motor.
96
+
96
97
  ---
97
-
98
- ## Relacionado
99
-
100
- - [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec) - Especificación de trazabilidad.
101
- - [a11y-mcp-tools](https://github.com/mcp-tool-shop-org/a11y-mcp-tools) - Herramientas MCP para accesibilidad.
102
- - [a11y-assist](https://github.com/mcp-tool-shop-org/a11y-assist) - Asesor de corrección.
103
- - [a11y-demo-site](https://github.com/mcp-tool-shop-org/a11y-demo-site) - Demostración con flujos de trabajo de CI.
104
-
98
+
99
+ ## Relacionado
100
+
101
+ - [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec) - Especificación de trazabilidad.
102
+ - [a11y-mcp-tools](https://github.com/mcp-tool-shop-org/a11y-mcp-tools) - Herramientas MCP para accesibilidad.
103
+ - [a11y-assist](https://github.com/mcp-tool-shop-org/a11y-assist) - Asistente de corrección.
104
+ - [a11y-demo-site](https://github.com/mcp-tool-shop-org/a11y-demo-site) - Demostración con flujos de trabajo de CI.
105
+
105
106
  ---
106
-
107
- ## Licencia
108
-
109
- [MIT](LICENSE)
107
+
108
+ ## Seguridad y alcance de datos
109
+
110
+ **Datos accedidos:** archivos HTML pasados como argumentos de línea de comandos (solo lectura), resultados y trazabilidad escritos en el directorio `--out`. **Datos NO accedidos:** ningún archivo fuera de los argumentos especificados y el directorio de salida, ninguna credencial del sistema operativo, ningún dato del navegador. **No hay salida de red:** todo el análisis se realiza localmente. **No se recopilan ni se envían datos de telemetría.**
111
+
112
+ ## Licencia
113
+
114
+ [MIT](LICENSE)
115
+
116
+ ---
117
+
118
+ Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
package/README.fr.md CHANGED
@@ -1,43 +1,44 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/a11y-evidence-engine/readme.png" alt="a11y-evidence-engine" width="400">
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
10
  <a href="https://github.com/mcp-tool-shop-org/a11y-evidence-engine/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/a11y-evidence-engine/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11
11
  <a href="https://www.npmjs.com/package/@mcptoolshop/a11y-evidence-engine"><img src="https://img.shields.io/npm/v/@mcptoolshop/a11y-evidence-engine" alt="npm"></a>
12
+ <a href="https://codecov.io/gh/mcp-tool-shop-org/a11y-evidence-engine"><img src="https://codecov.io/gh/mcp-tool-shop-org/a11y-evidence-engine/branch/main/graph/badge.svg" alt="Coverage"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow" alt="MIT License"></a>
13
14
  <a href="https://mcp-tool-shop-org.github.io/a11y-evidence-engine/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
14
15
  </p>
15
-
16
- **Moteur d'analyse de l'accessibilité sans interface utilisateur, qui génère des enregistrements de traçabilité au format [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec).**
17
-
18
- Conçu pour fonctionner en complément de **a11y-assist** : ce moteur identifie les problèmes et collecte des preuves vérifiables ; a11y-assist transforme ces résultats en corrections.
19
-
16
+
17
+ **Moteur d'analyse de l'accessibilité sans interface utilisateur, qui génère des enregistrements de traçabilité au format [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec).**
18
+
19
+ Conçu pour fonctionner en tandem avec **a11y-assist** : ce moteur détecte les problèmes et collecte des preuves vérifiables ; a11y-assist transforme ces résultats en corrections.
20
+
20
21
  ---
21
-
22
- ## Fonctionnalités
23
-
24
- - **Résultats déterministes** : les mêmes entrées produisent toujours les mêmes résultats et la même traçabilité.
25
- - **Compatible avec prov-spec** : chaque résultat inclut des preuves vérifiables cryptographiquement.
26
- - **Adapté aux environnements CI** : codes de sortie conçus pour l'automatisation.
27
- - **Aucun navigateur requis** : analyse statique pure du code HTML.
28
-
22
+
23
+ ## Fonctionnalités
24
+
25
+ - **Résultats déterministes** : les mêmes entrées produisent toujours les mêmes résultats et la même traçabilité.
26
+ - **Compatible avec prov-spec** : chaque résultat inclut des preuves vérifiables cryptographiquement.
27
+ - **Adapté aux environnements CI** : codes de sortie conçus pour l'automatisation.
28
+ - **Aucun navigateur requis** : analyse statique pure du code HTML.
29
+
29
30
  ---
30
-
31
- ## Installation
32
-
31
+
32
+ ## Installation
33
+
33
34
  ```bash
34
35
  npm install -g @mcptoolshop/a11y-evidence-engine
35
36
  ```
36
-
37
+
37
38
  ---
38
-
39
- ## Utilisation
40
-
39
+
40
+ ## Utilisation
41
+
41
42
  ```bash
42
43
  # Scan a file or directory
43
44
  a11y-engine scan ./path/to/html --out ./results
@@ -45,11 +46,11 @@ a11y-engine scan ./path/to/html --out ./results
45
46
  # View help
46
47
  a11y-engine --help
47
48
  ```
48
-
49
+
49
50
  ---
50
-
51
- ## Sortie
52
-
51
+
52
+ ## Sortie
53
+
53
54
  ```
54
55
  results/
55
56
  ├── findings.json # All findings with metadata
@@ -59,51 +60,59 @@ results/
59
60
  ├── digest.json # integrity.digest.sha256
60
61
  └── envelope.json # adapter.wrap.envelope_v0_1
61
62
  ```
62
-
63
+
63
64
  ---
64
-
65
- ## Codes de sortie
66
-
67
- | Code | Signification |
68
- | ------ | --------- |
69
- | 0 | Aucune anomalie détectée avec la sévérité "erreur". |
70
- | 2 | Au moins une anomalie détectée avec la sévérité "erreur". |
71
- | 3 | Erreur interne du moteur / entrée invalide. |
72
-
65
+
66
+ ## Codes de sortie
67
+
68
+ | Code | Signification |
69
+ |------|---------|
70
+ | 0 | Aucun résultat avec la sévérité "erreur". |
71
+ | 2 | Au moins un résultat avec la sévérité "erreur". |
72
+ | 3 | Erreur interne du moteur / entrée invalide. |
73
+
73
74
  ---
74
-
75
- ## Règles (v0.1.0)
76
-
77
- | Identifiant de la règle | Description |
78
- | --------- | ------------- |
79
- | `html.document.missing_lang` | L'élément `<html>` est dépourvu de l'attribut `lang`. |
80
- | `html.img.missing_alt` | L'élément `<img>` est dépourvu de l'attribut `alt`. |
81
- | `html.form_control.missing_label` | Un élément de formulaire est dépourvu de son étiquette associée. |
82
- | `html.interactive.missing_name` | Un élément interactif est dépourvu de son nom accessible. |
83
-
75
+
76
+ ## Règles (v0.1.0)
77
+
78
+ | Identifiant de la règle | Description |
79
+ |---------|-------------|
80
+ | `html.document.missing_lang` | L'élément `<html>` est dépourvu de l'attribut `lang`. |
81
+ | `html.img.missing_alt` | L'élément `<img>` est dépourvu de l'attribut `alt`. |
82
+ | `html.form_control.missing_label` | Un élément de formulaire est dépourvu de l'étiquette associée. |
83
+ | `html.interactive.missing_name` | Un élément interactif est dépourvu d'un nom accessible. |
84
+
84
85
  ---
85
-
86
- ## Traçabilité
87
-
88
- Chaque anomalie inclut trois enregistrements au format prov-spec :
89
-
90
- 1. **record.json** : Extraction des preuves à l'aide de `engine.extract.evidence.json_pointer`.
91
- 2. **digest.json** : Hachage SHA-256 des preuves canoniques à l'aide de `integrity.digest.sha256`.
92
- 3. **envelope.json** : Résultat encapsulé à l'aide de `adapter.wrap.envelope_v0_1`.
93
-
94
- Ces enregistrements peuvent être vérifiés indépendamment, sans avoir à faire confiance au moteur.
95
-
86
+
87
+ ## Traçabilité
88
+
89
+ Chaque résultat inclut trois enregistrements au format prov-spec :
90
+
91
+ 1. **record.json** : Extraction des preuves à l'aide de `engine.extract.evidence.json_pointer`.
92
+ 2. **digest.json** : Hachage SHA-256 des preuves canoniques à l'aide de `integrity.digest.sha256`.
93
+ 3. **envelope.json** : Résultat encapsulé à l'aide de `adapter.wrap.envelope_v0_1`.
94
+
95
+ Ces enregistrements peuvent être vérifiés indépendamment, sans avoir à faire confiance au moteur.
96
+
96
97
  ---
97
-
98
- ## Liens connexes
99
-
100
- - [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec) - Spécification de la traçabilité.
101
- - [a11y-mcp-tools](https://github.com/mcp-tool-shop-org/a11y-mcp-tools) - Outils MCP pour l'accessibilité.
102
- - [a11y-assist](https://github.com/mcp-tool-shop-org/a11y-assist) - Assistant de correction.
103
- - [a11y-demo-site](https://github.com/mcp-tool-shop-org/a11y-demo-site) - Démonstration avec des flux de travail CI.
104
-
98
+
99
+ ## Liés
100
+
101
+ - [prov-spec](https://github.com/mcp-tool-shop-org/prov-spec) - Spécification de la traçabilité.
102
+ - [a11y-mcp-tools](https://github.com/mcp-tool-shop-org/a11y-mcp-tools) - Outils MCP pour l'accessibilité.
103
+ - [a11y-assist](https://github.com/mcp-tool-shop-org/a11y-assist) - Assistant de correction.
104
+ - [a11y-demo-site](https://github.com/mcp-tool-shop-org/a11y-demo-site) - Démonstration avec des flux de travail CI.
105
+
105
106
  ---
106
-
107
- ## Licence
108
-
109
- [MIT](LICENSE)
107
+
108
+ ## Sécurité et portée des données
109
+
110
+ **Données consultées :** fichiers HTML passés en arguments de ligne de commande (lecture seule), résultats et traçabilité écrits dans le répertoire `--out`. **Données NON consultées :** aucun fichier en dehors des arguments spécifiés et du répertoire de sortie, aucune information d'identification du système d'exploitation, aucune donnée de navigateur. **Aucune communication réseau sortante** : toutes les analyses sont locales. **Aucune télémétrie** n'est collectée ou envoyée.
111
+
112
+ ## Licence
113
+
114
+ [MIT](LICENSE)
115
+
116
+ ---
117
+
118
+ Développé par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>