A deterministic check for acceptance criteria that no test covers #855
guillaume-flambard
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone,
09-for-surecarries a rule I keep coming back to: "never setstatus: implementeduntil the success condition genuinely passes". Same spiritin
03-assertand06-test. It is the right rule. It is also an instructionaddressed to a model, and nothing outside the model checks it.
So I spent a day asking a smaller question: which acceptance criteria in a
repository actually have a test behind them? Not "is the test good", just "is
there one, and which".
I ran the measurement on this repository, at
f6c61cf, because it is thelargest public corpus of AIDD task documents and it is written by the people who
designed the format. Reading every document under
aidd_docs/tasks:Done-whenbullets, 241 checkboxes)Three honest caveats before anyone reads that as an accusation:
review.md. A box there means "I read this",not "this behaviour is guaranteed". My tool leaves review documents out of its
default scope for exactly that reason; the number is here because you asked
for nothing and I would rather show the whole measurement than the flattering
half.
of a candidate: every single one shares vocabulary with some test title in the
repository. What is missing is not tests. It is the link between a criterion
and the test that covers it, and that link is one line.
#### Acceptance criteriasection that nobodyfills. Zero such headings in the repository; plans carry
## Guardsand## Proofprose instead. That is a fact about the template, not about anyone'sdiscipline, and it matters for anything built on top.
The tool is here, MIT, working, CI green, 161 tests:
https://github.com/guillaume-flambard/aidd-guard
It reads
## Done-whenbullets and- [ ]checkboxes, reads Vitest and Jesttest titles from the TypeScript syntax tree, and matches the two. Never runs a
test, never imports your code, never calls a model, and gives identical bytes for
identical input. A criterion is linked to a test with an HTML comment, never a
heading, so your own parsers and
spec-validator.ymlsee nothing new:It specifies itself in that format and gates its own build on it: 27 criteria,
26 linked by an explicit selector, one declared non-testable with a written
reason.
Two questions for you, and I genuinely do not have a preference:
aidd-dev, ahook, or nothing at all and it stays a companion tool people can install.
check is checking a section people are not writing today.
Happy to do the work whichever way you want it, and happy for it to live under
the
ai-driven-devorg rather than mine if that makes more sense. If the answeris "interesting, but not in the framework", that is a perfectly good answer and I
will say so in the README.
All reactions