Add support for Spain, France, Italy, and Netherlands + audit config defaults - #23
Merged
Merged
Conversation
The flag landed on the CLI and nowhere else. A build plugin and the GitHub Action are how most people run this in CI, and neither could reach the feature the changelog sells them — a plugin option that does not exist and an action input that is not there are not something a reader discovers before trying. IntegrationOptions gains `fast`, which is all five plugins: auditBuild spreads everything but its own two keys into the audit command, so naming the flag once is naming it everywhere. That pass-through was untested, and is the whole mechanism, so it is asserted now rather than rediscovered the next time a flag is added. The action gets a `fast` input threaded through EAA_FAST, built into the argument list the way allow-remote already is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF
The config file has served the statement alone since 0.2, so a project that audits with the same six flags on every run has had nowhere to write them down but the build script that repeats them. An `audit` block is that list, said once. Everything in it is a default and every typed flag beats it: the file is what a project usually wants, and a flag is what somebody wants on this run. A config nobody could override would make a one-off --browser check impossible without editing a committed file. Two things this needed. --fail-on and --format lose their commander defaults, because commander writes a default into the parsed options whether or not the flag was typed, and that would have silently overruled the file on the two flags most worth putting in it; both still default in the command, to the values the help text names. And the block is read by a schema of its own rather than through parseConfig, so a project wanting audit defaults does not have to write a whole statement config to get them — s.object drops what it does not know, so one file still serves both readers. `baseline` reads the keys that mean the same thing to it. `output` is the report's path for one command and the baseline's for the other, so it is never carried across; format, failOn and baseline describe a verdict baseline does not reach. The merge is a function rather than four lines in the action, because the precedence is the whole feature and commander's actions are the one part of this CLI a test cannot call. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF
Three countries was the DACH region and the tool is named after an EU
directive. These four are the largest markets it applies in, and each
one gets a document under its own law rather than a translation of the
Austrian one — the rule Switzerland already set here.
That means four more languages. site.locale now picks any of the six
rather than testing for a German prefix, and each has a region for its
dates, because a bare language tag leaves the format to whatever ICU
picks and these documents have always been dated the European way.
The matrix is sparse on purpose: a country has the language its law is
administered in, and English. Asking for a combination nobody wrote is
an error naming what that country does have, not a fall back to another
language — publishing somebody's legal document in a language their
readers may not have, quietly, is worse than stopping.
Where a national regime prescribes a declaration of its own, the
template says so rather than letting a generated file look like it
discharges the obligation: France's RGAA declaration and multi-year plan
under art. 47 of loi 2005-102, Italy's dichiarazione filed on AgID's
model by 23 September each year, and Spain's RD 1112/2018 statement for
the public sector. Where supervision is genuinely split — Spain between
the state and the autonomous communities, the Netherlands between six
authorities — the template says that too rather than naming one body and
sounding certain.
Statutes and authorities, verified against:
ES Ley 11/2023, de 8 de mayo (BOE-A-2023-11022)
FR ordonnance n° 2023-859; art. 47 loi n° 2005-102; Arcom
IT d.lgs. 82/2022 art. 21, amending l. 4/2004; AgID
NL Implementatiewet toegankelijkheidsvoorschriften producten en
diensten, in force 28 June 2025; ACM for services, RDI for products
Every template ships with a whole-document snapshot, and a test now
asserts the snapshot matrix covers the template directory, so a country
added without one cannot ship prose no reader has seen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF
v0.4.0 was tagged before PRs #21 and #22 merged, so master has carried three Unreleased sections since: the fingerprint fix that moves both file contracts to schemaVersion 2, --fast, the browser and start-up work, and six bugs found by using 0.4.0 on real builds. Folded into one section with this release's own three additions. The JSON report and baseline schemaVersions are the entry to read. docs/reports.md gets a "Coming from 0.4.0" note saying what refuses what and why, since a consumer that never touches fingerprint needs no change at all and should not have to work that out from the changelog. The Action example and the integrations doc pinned @v0.4.0; examples/ is regenerated so the version it stamps is the one being published. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
The reference docs were updated as each feature landed, and the front door was not: README opened by describing a DACH-only tool, its documentation table said "the three countries", and it mentioned neither the audit config block nor --fast anywhere. package.json — which is the first line anybody reads on npm — named the same three statutes. Someone arriving at the repo could not tell that Spain, France, Italy and the Netherlands are supported. README keeps the DACH origin, because that is who this was built for and those are the words people search, and names the reach beside it. The statement bullet leads with what the document is called in three of the seven countries, and says the thing worth knowing before somebody publishes one: a national regime may ask for more than this file. "Says it once" is the audit block's first mention outside docs/audit.md. npm keywords gain the terms somebody in the new markets would type. examples/ gains one French statement. One rather than four: the other three differ in their statute and their enforcement section, and four near-identical documents would be paid for in the diff of every release. It is generated from the same Austrian config as the rest, so it lists barriers written in German — the examples README now says why, because it reads as a bug and is the template refusing to translate somebody else's prose. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This release expands eaa-kit's geographic and linguistic coverage while introducing a new feature for managing audit defaults through the config file.
Key Changes
New Country Support
Audit Configuration Defaults
auditblock ineaa.configallows projects to specify default audit flags once instead of repeating them in build scriptsfailOn,browser,concurrency,fast,include,exclude,baseline, etc.Configuration Schema Updates
COUNTRIESfrom['AT', 'DE', 'CH']to['AT', 'DE', 'CH', 'ES', 'FR', 'IT', 'NL']STATEMENT_LOCALESfrom['de', 'en']to['de', 'en', 'es', 'fr', 'it', 'nl']AUDIT_FORMATSconstant tosrc/config/define.tsfor validationAuditConfigtype for the new audit block schemaImplementation Details
auditDefaults()function insrc/cli/command.tsloads audit defaults from configloadAuditConfig()function insrc/config/load.tsfor parsing the audit blockrenderStatement()to validate that requested language is available for the selected countryVersion Bump
https://claude.ai/code/session_013WKUrBVgwFFGLbsfN46MBF