Skip to content

feat(reqstool): add OpenSpec ↔ reqstool dogfooding layer#68

Merged
jimisola merged 2 commits into
mainfrom
feat/openspec-dogfooding
Jun 22, 2026
Merged

feat(reqstool): add OpenSpec ↔ reqstool dogfooding layer#68
jimisola merged 2 commits into
mainfrom
feat/openspec-dogfooding

Conversation

@jimisola

Copy link
Copy Markdown
Member

Summary

  • Applies the reqstool-client#407 dogfooding pattern to this repo: thin OpenSpec capability specs (annotation-combination, zip-assembly, skip-flags), a derived docs/reqstool/ SSOT (GRADLE_PLUGIN_001-003 / SVC_GRADLE_PLUGIN_001-003), .reqstool-ai.yaml, and @Requirements/@SVCs tags on RequirementsToolTask's four behaviourally-distinct methods.
  • Closed test-coverage gaps: assembleZipArtifact's happy path and skipAssembleZipArtifact were previously untested — added testAssembleZipArtifactHappyPath and testSkipAssembleZipArtifactBypassesZipCreation so every SVC has a real verifying test.
  • Unlike reqstool-java-maven-plugin, no annotationProcessorPaths-equivalent workaround was needed — Gradle's annotationProcessor/testAnnotationProcessor configurations auto-discover the processor out of the box.
  • CI (build.yml): adds a [pypi, main] matrix using the shared reqstool/.github actions (install-reqstool, validate-reqstool on the main leg, reqstool-status with fail-if-incomplete: true), plus the reusable validate-openspec workflow job.
  • True self-application (publishing the plugin to 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/test annotations.yml output (the exact same data combineOutput() would produce) via yq, so reqstool status runs 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 produced
  • reqstool status --check-all-reqs-met local -p docs/reqstool — 3/3 requirements implemented and verified, 6/6 tests passed
  • openspec validate --specs --strict — 3/3 specs passed
  • CI green on this PR (pypi + main matrix legs, validate-openspec job)

https://claude.ai/code/session_01QerfHvkQZWPZKJgqKFRdEo

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>
Comment thread .github/workflows/build.yml Fixed
…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>
@jimisola jimisola merged commit f6a370b into main Jun 22, 2026
7 checks passed
@jimisola jimisola deleted the feat/openspec-dogfooding branch June 22, 2026 14:47
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