feat(reqstool): add OpenSpec ↔ reqstool dogfooding layer#68
Merged
Conversation
Apply the reqstool-client#407 dogfooding pattern to this repo: tag RequirementsToolTask's four behaviourally-distinct methods with @requirements, add a docs/reqstool SSOT (requirements.yml, software_verification_cases.yml, reqstool_config.yml), add matching thin OpenSpec capability specs, add .reqstool-ai.yaml, and close test-coverage gaps (assembleZipArtifact's happy path and skipAssembleZipArtifact were previously untested) so every SVC has a real verifying test. Wire CI to install reqstool, merge the annotation processor's own main/test output into a combined annotations.yml (true self-application via mavenLocal-style re-application isn't wired up for Gradle yet), and gate on `reqstool status --check-all-reqs-met` plus `openspec validate --specs --strict`. Unlike the Maven plugin, Gradle's annotationProcessor/testAnnotationProcessor configurations auto-discover the processor without any extra wiring. Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
…ntain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
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
annotation-combination,zip-assembly,skip-flags), a deriveddocs/reqstool/SSOT (GRADLE_PLUGIN_001-003/SVC_GRADLE_PLUGIN_001-003),.reqstool-ai.yaml, and@Requirements/@SVCstags onRequirementsToolTask's four behaviourally-distinct methods.assembleZipArtifact's happy path andskipAssembleZipArtifactwere previously untested — addedtestAssembleZipArtifactHappyPathandtestSkipAssembleZipArtifactBypassesZipCreationso every SVC has a real verifying test.reqstool-java-maven-plugin, noannotationProcessorPaths-equivalent workaround was needed — Gradle'sannotationProcessor/testAnnotationProcessorconfigurations auto-discover the processor out of the box.build.yml): adds a[pypi, main]matrix using the sharedreqstool/.githubactions (install-reqstool,validate-reqstoolon themainleg,reqstool-statuswithfail-if-incomplete: true), plus the reusablevalidate-openspecworkflow job.mavenLocal()and re-applying it to its own sources, mirroring the Maven plugin's two-pass pattern) isn't wired up for Gradle yet. As an interim measure, CI merges the annotation processor's own main/testannotations.ymloutput (the exact same datacombineOutput()would produce) viayq, soreqstool statusruns against real, non-fabricated annotation data rather than a fixture.Test plan
./gradlew clean test— all unit tests pass, including the two new ones./gradlew format— no diff producedreqstool status --check-all-reqs-met local -p docs/reqstool— 3/3 requirements implemented and verified, 6/6 tests passedopenspec validate --specs --strict— 3/3 specs passedhttps://claude.ai/code/session_01QerfHvkQZWPZKJgqKFRdEo