Skip to content

0.8.0 — reach: zero-setup first run, four more countries, eaa-kit countries, audit --watch - #27

Merged
likeBloodMoon merged 7 commits into
masterfrom
claude/release-roadmap-0-8-0-v79592
Sep 23, 2026
Merged

likeBloodMoon merged 7 commits into
masterfrom
claude/release-roadmap-0-8-0-v79592

Conversation

@likeBloodMoon

@likeBloodMoon likeBloodMoon commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

The plan for 0.8.0 (and an outline of 0.9.0 → 1.0.0) is in ROADMAP.md, and this PR carries it out. The version number is not bumped yet: one release blocker is open (see below).

What's in it

Zero-setup first run: npx eaa-kit

  • Bare eaa-kit used to print the help and exit 2. Now, with no config and no flags, it:
    • finds the site (existing build → project build → project server → a folder of hand-written HTML);
    • audits it and prints the report;
    • writes .eaa-kit/report.html;
    • says what it detected (framework, page count, <html lang> → country, canonical address);
    • lists the next commands, chosen from what the project already has (init or statement, baseline, --watch, checklist).
  • .eaa-kit/ gets its own .gitignore. A folder with no site in it is left untouched. Exit codes stay audit's.
  • eaa-kit adit still gets "did you mean audit?".
  • A folder with no package.json and HTML at the top level is now audited where it stands.
  • init offers the built site's language, country and address as defaults. pl → Poland, fr-BE → Belgium; en and fr-CA suggest nothing. init still asks.

Four more countries: Belgium, Ireland, Poland, Portugal (seven → eleven countries, fourteen templates → twenty-two)

  • BE fr/nl/en, IE en, PL pl/en, PT pt/en. pl and pt are new --lang values.
  • Each is written under its own law, not translated from another country's. Belgium and Portugal say supervision is split instead of naming one body as if it owned the subject.
  • Snapshots for all eight new templates, plus per-country tests for the authority each one names and for the review sentence.

One registry per country: src/config/countries.ts

  • Holds name, languages, statute, authority and default site locale. init, the new command and a test all read it.
  • The test fails if a template exists with no registry entry, or an entry has no template.

eaa-kit countries (--json too)

  • Lists what a statement can be written for, from the terminal, instead of only in a docs table.

audit --watch

  • Re-audits the build directory on change. The page cache means only the pages that changed are audited again.
  • Refusals, as the roadmap set them:
    • --url is an error, not a poll.
    • Stopping the watch exits 0 whatever the last run found.
    • A change that lands mid-run starts another run; it is never dropped.

init stops guessing

  • An unrecognised country used to become AT silently. Now init asks again, accepts English names, and says so out loud if it falls back after three tries.

⚠️ Release blocker: citations need checking against primary sources

The session that wrote the four new templates could not reach the official gazettes (irishstatutebook.ie, isap.sejm.gov.pl, dre.pt, ejustice.just.fgov.be). Everything in them comes from several independent secondary sources that agree: regulators' own pages, government portals and law firms. To match that, they deliberately cite less than the older seven (no article numbers, no fine amounts). They are marked unverified in the registry, flagged in eaa-kit countries, and footnoted in docs/statement.md.

Before tagging 0.8.0, please check against the primary text:

  • BE
    • Law of 5 Nov 2023 amending the Code de droit économique (partial transposition: e-commerce and consumer banking).
    • SPF Économie / DG Inspection économique as the e-commerce supervisor.
  • IE
    • S.I. No. 636 of 2023.
    • CCPC for e-commerce and e-books, ComReg for electronic communications, Central Bank for consumer banking.
  • PL
    • Ustawa z 26 kwietnia 2024 r., Dz.U. 2024 poz. 731.
    • Prezes Zarządu PFRON receives reports and passes them on; the minister for digital affairs supervises e-commerce.
  • PT
    • Decreto-Lei n.º 82/2022.
    • ANACOM for e-commerce; Banco de Portugal for banking; supervisors report to INR.

The Polish and Portuguese texts were also written by me, not by a native speaker, so a language review is worth doing too.

Testing

  • pnpm lint, pnpm typecheck: clean.
  • pnpm test: 1328 passed. The only failing file is tests/audit/runners/playwright.test.ts, which fails identically on master in the authoring environment, whose Chromium doesn't match the pinned Playwright version. CI's own Chromium is fine.
  • pnpm smoke: green. pnpm examples: no drift.
  • Checked by hand:
    • The first run on a plain HTML folder, an Astro-style project and an empty folder.
    • audit --watch against the fixture site: adding a page re-audited 1 page and reused 5.

🤖 Generated with Claude Code

https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM

0.8.0 is reach: four more countries, one place a country is defined, a
command that lists them, init that stops turning a typo into Austria, and
audit --watch. 0.9.0 is the first ten minutes, 1.0.0 the contracts frozen.

The four countries' citations were established from secondary sources
only -- the official gazettes were not reachable from the session that
wrote them -- and checking them against the primary text is written in as
a release blocker rather than left implicit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
Four more countries, each written under its own law: BE in French, Dutch
and English; IE in English; PL in Polish and English; PT in Portuguese and
English. Belgium and Portugal say supervision is split rather than naming
one body as the whole of it, which is what the roadmap asked of Belgium.

What each country is now lives in one registry, src/config/countries.ts,
that init, the new `eaa-kit countries` command and a test read. The test
fails when a template exists without its entry or the other way round.

The four are marked unverified in the registry and in `eaa-kit countries`:
their citations come from regulators' pages and law firms, not from the
gazettes, and cite less than the older seven -- no article numbers, no
fine amounts -- for that reason.

init no longer turns an answer it does not recognise into AT without a
word. It asks again, accepts a country's English name, and when it does
fall back after three tries it says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
A run over an unchanged build costs about what starting the process does,
so it is worth repeating on every save. --watch runs once, then watches the
directory that run read and audits again when anything in it changes; the
page cache means only the pages whose markup moved are audited.

The refusals the roadmap set: --url is an error rather than a poll that
looks like a watch; the watch exits 0 on Ctrl-C whatever the last run found,
because failing a build is the one-shot run's job; and a change that lands
mid-run starts another run when that one ends instead of being dropped.

Later runs are pointed at the directory the first one found rather than
repeating auto-detection, which may run the project's build into the very
directory being watched. The page cache and an --output inside the build are
ignored for the same reason. A named directory that does not exist yet is
waited for, since a build in another terminal is the usual way it appears.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
The statement docs gain the four countries, with a note on each that its
citations come from secondary sources and cite less for that reason. The
audit docs describe --watch and its refusals, the README and the package
description say eleven, and the changelog opens 0.8.0 with what was given
up as well as what was added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
…enty-six

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM

Copy link
Copy Markdown
Owner Author

Two red checks on this PR, and neither comes from the diff:

  • check (ubuntu-latest, 22) died in actions/checkout, before any step of ours ran: server certificate verification failed while fetching the repo, three times. The other four matrix jobs pass on the same commit (Node 24 on Linux, macOS and Windows; Node 26 on Linux). I've re-run the failed job once. If it fails again, I'll treat it as a real failure.
  • github-advanced-security failed inside GitHub's Copilot code-scanning service: CAPIError: 400 The requested model is not supported. It never looked at the code. GitHub refuses a re-run of that run (403, "cannot be retried"), and nothing in this repository can fix it. It needs a fix on GitHub's side, or a change to the code-scanning setup in the repo settings.

Generated by Claude Code

`eaa-kit` with no command printed the help and exited 2, and it is the
first thing anybody types. Now it finds the site the way `audit` does,
audits it, writes the HTML report to .eaa-kit/report.html, and ends with
what it found out about the project and the command to run next: init
without a config, statement with one, baseline when there are findings
and no baseline, then --watch and checklist.

Detection closes two gaps on the way. A folder of hand-written HTML with
no package.json is the site, and is audited where it stands. init reads
<html lang> and the canonical link from the built site and offers them as
defaults, with the country a language tag points at: pl is Poland, fr-BE
is Belgium, en and fr-CA suggest nothing, because a site's language does
not settle whose law applies.

The first run writes nothing outside .eaa-kit/, gives that directory a
.gitignore of its own rather than editing the project's, leaves a folder
with no site in it untouched, and keeps audit's exit codes. It is decided
before commander sees the arguments, so `eaa-kit adit` still gets "did you
mean audit?" rather than "too many arguments".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
@likeBloodMoon likeBloodMoon changed the title 0.8.0 — reach: four more countries, eaa-kit countries, audit --watch 0.8.0 — reach: zero-setup first run, four more countries, eaa-kit countries, audit --watch Sep 23, 2026
CI forces colour, which puts an escape between "pl-PL" and the dimmed
"→ a statement under Poland's law", so the assertion looked for text that
was there but split. Reproduced with FORCE_COLOR=1; the test now strips
the codes before comparing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
@likeBloodMoon
likeBloodMoon marked this pull request as ready for review September 23, 2026 20:46
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@likeBloodMoon
likeBloodMoon merged commit 835b90b into master Sep 23, 2026
5 of 6 checks passed
likeBloodMoon pushed a commit that referenced this pull request Sep 24, 2026
Version, the changelog headings, the front page, the ROADMAP's Done-means and
the pinned action tag in docs/integrations.md and
.github/workflows/accessibility.yml. The examples move with it and nothing
else in them does: the tool version is stamped into four of them.

0.8.0 is not published. Its tag was on the merge of #27, where package.json
still said 0.7.0, and the release workflow stopped at its version check before
anything reached npm. Rather than publish it from an older commit, its changes
ship in 0.9.0, and the changelog says so under both headings.

The citation check ships open, as the changelog and ROADMAP now say: the eight
new countries keep the unverified marker, and the full check against the
primary text moves to 1.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BXnvSeRtgZoTXe4j753gM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants