From 6d3576a57d1f0be5359aab2d740281bacb7c30f9 Mon Sep 17 00:00:00 2001 From: Remon Panman <228601219+Tradebaas@users.noreply.github.com> Date: Sat, 1 Aug 2026 16:12:33 +0200 Subject: [PATCH] docs(explainer,readme): the page says what Groundwork does, including the proof Audited both front doors against the repo rather than against memory: all 21 skill cards, the gate cards, the six reason tabs, the lifecycle phases and the "what lives where" table. Three things did not match, and the direction of the mismatch matters: two understated what is there, and the third left out the strongest thing in v0.2.0 entirely. The copy route was the omission. Every push already unpacks a fresh copy, walks it to a first guarded commit and throws it away again, which is exactly the claim both documents open with, and neither mentioned it in any wording. It is a gate card now, next to the self-test card whose logic it extends, and one sentence in the README beside the same idea. Both say the build turns red on the commit that broke the route, and neither says the merge is blocked, because the drill is not a required status check: gate and trace are. code-review was wrong, not merely thin. The card said "two axes", which was true before the security axis landed and survived the rebuild that made this page English. It now names the gate-weakening scan, the two always-on axes and the conditional security axis, which is the one a reader on the Safe tab is being promised elsewhere on the same page. comply listed four regimes where the register carries nine, so the card now names the product and cyber security duties too and says the dates are verified against the source. Verified in the rendered page, not in the source: ten gate cards, every icon resolving, the grid landing on five even rows instead of four and an orphan, and both corrected skill cards wrapping inside their card. Counts on the page are derived and unchanged: 21 skills, 21 checks, 19 decisions. Traces-to: SC-11 --- README.md | 5 ++++- index.html | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 789dc7c..846c3b0 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,10 @@ records the reasoning. serves, so a sha resolves back to a requirement instead of to someone's memory. The checks test themselves: every gate has to prove it fails on a violation before it is trusted, and `.github/workflows/ci.yml` runs those suites ahead of the checks, because a gate - that isn't tested is false confidence. The same directory holds `node checks/progress.mjs`: a read-only, plain-language + that isn't tested is false confidence. The copy route is tested the same way: on every push, + `node checks/drill.mjs` unpacks a fresh copy, walks it to a first governed commit and throws it + away again, so the promise at the top of this file is checked by machine instead of asserted + (runbook: [docs/operations/evidence-drill.md](docs/operations/evidence-drill.md)). The same directory holds `node checks/progress.mjs`: a read-only, plain-language answer to "what is done and what is left", derived from the brief, the specs and the handoff, with `--all` covering every project you have started this way. Add `--serve` and the same answer opens as a page on this machine only: the goal, the stand, the next step, which file diff --git a/index.html b/index.html index 715a025..99c7179 100644 --- a/index.html +++ b/index.html @@ -770,6 +770,7 @@

Look

['code','Dead code','Commented-out blocks of code are cleaned up. Git remembers the history.'], ['history','Trace to the goal','Every commit names the goal it serves, so later you can still find out why a piece of code is there.'], ['scale','Self-test','The checks test themselves: a check that cannot prove it works does not count.'], + ['anchor','The copy route','Every push unpacks a fresh copy, walks it to a first guarded commit and throws it away again. Break that route and the build turns red on the commit that broke it.'], ['wrench','And the rest','Structure, tickets, symlinks and deferred choices: the smaller agreements have their own check too.'], ].map(function(a){ return '
'+ic(a[0])+'

'+a[1]+'

'+a[2]+'

'; @@ -844,7 +845,7 @@

Look

['scope-guard','The last check before work is called "done": was nothing extra built that nobody asked for?'], ['design-guard','The last check on screens and texts before they go out the door.'], ['verify','Proves that a change really works, end to end. Green tests alone are not proof.'], - ['code-review','Reviews the change with fresh eyes along two axes: does the code meet the standards, and does it do exactly what the spec asked?']]], + ['code-review','Reviews the change with fresh eyes, one axis at a time: did this diff weaken a check, does the code meet the standards, does it do exactly what the spec asked. Around logins, payments or personal data a security axis comes on top.']]], ['Delivering and running','out the door, and after',[ ['deliver','Ships a release in a controlled, repeatable way. Nothing goes out that has not been verified.'], ['maintain','Keeps a live product healthy: updates, incidents, accumulated debt and periodic audits.'], @@ -853,7 +854,7 @@

Look

['Tools','for everything around it',[ ['debug','Finds the real cause of a stubborn fault: reproduce first, then test hypothesis by hypothesis, and fix the cause once with a test as proof.'], ['skill-author','Writes a new skill, but only when the project genuinely needs one again and again.'], - ['comply','Tests against Dutch and European law: privacy, the AI Act, accessibility and licensing.'], + ['comply','Tests against Dutch and European law: privacy, the AI Act, accessibility, product and cyber security duties, and licensing. Every date is verified against the official source, never from memory.'], ['ingest','Turns PDF, Office files and images into compact text, so tokens go to content.'], ['calibrate','Picks the right model and the right thinking effort before a session starts: as cheap as it can be, as heavy as it has to be.']]] ];