Repository navigation
feat(aidd-dev): require effective tests and disciplined test doubles - #1082
Open
BlandineRdl wants to merge 6 commits into
Open
BlandineRdl wants to merge 6 commits into
BlandineRdl wants to merge 6 commits into
Conversation
The test action now defines its quality criteria: assert observable behavior, keep the subject real, place doubles only at seams, justify interaction mocks, reject tautological mock-return assertions, and confirm each test fails under a named break before calling it done. Closes ai-driven-dev#952 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eria Observable behavior and no-tautology now carve out the call that is the behavior itself, the subject keeps its own logic real while its boundaries follow the seam rule, and each test records whether its break was run or only reasoned, with a rerun after the revert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Doubles are split by role, stubs never asserted and mocks asserted as the command they receive. A boundary with no seam leaves the behavior pending instead of patching the subject. Critical behaviors must run their break, with the restore checked against a copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A seam is a module with no domain logic or the framework's own interception, a missing seam is skipped only with the user's word, scores are approved with the list, a break must keep the subject running, and a convention that overrides a criterion is noted. Mocks of in-process collaborators stay allowed when the interaction is the behavior. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The doubles criterion is now a first-match decision list: the subject, an outgoing command, a seamed boundary, a missing seam, then everything real. A domain collaborator could previously be both mocked and kept real; the order settles it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stall A seamed boundary may use an isolated real resource instead of a double, so a behavior goes pending only when neither fits. The ban on installing a dependency now covers mocking and coverage tools, not only mutation testing. A tautology is judged by whether the test can fail, so a stubbed value routed into a command stays testable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BlandineRdl
marked this pull request as ready for review
October 23, 2026 11:30
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.
🎯 What & why
aidd-dev:06-testtold the agent to check a passing test "against the quality criteria" without defining them. A green test that only echoes a mock's return value, or only asserts a mock was called, satisfied the contract while protecting nothing.🛠️ How it works
plugins/aidd-dev/skills/06-test/actions/01-test.mdgains a## Quality criteriasection, language-independent:pendingwithmissing seam at <dependency>once the user agrees; everything else, domain collaborators included, stays real.runit (apply, watch it fail, restore and compare against a copy, rerun green); below 4 areasonedcheck with its reason is accepted. Mutation testing only if the project already configures it; nothing is installed.List and Approve now show and approve each behavior's score, since the score decides
runvsreasoned.SKILL.mdand02-test-journeyare untouched.🧪 How to verify
pnpm exec lefthook run pre-commit: green on every commit (doc-duplication, markdown-links, referenced-paths, scripts-tests, recipe-validity, commitlint).🔗 Linked issue
Closes #952
✅ I certify
🤖 Generated with Claude Code