feat(reqstool): dogfood OpenSpec ↔ reqstool traceability (#166) #595
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
| on: | |
| workflow_call: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| types: | |
| - opened | |
| - reopened | |
| - synchronize | |
| permissions: | |
| contents: read | |
| jobs: | |
| linting: | |
| name: Check linting | |
| uses: ./.github/workflows/lint.yml | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| reqstool-source: [pypi, main] | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: "21" | |
| distribution: "temurin" | |
| - name: Build and run tests | |
| run: mvn clean verify | |
| - name: Install into local repository | |
| run: mvn -DskipTests install | |
| - name: Self-apply own annotation processor to own sources | |
| run: mvn compiler:compile compiler:testCompile -Pself-apply | |
| - name: Combine main/test annotation processor output | |
| # The processor's main/test annotation outputs land in separate | |
| # generated-sources directories (no shared mojo to combine them, unlike | |
| # the Maven/Gradle plugins) -- merge them the same way those plugins' | |
| # combineOutput() would, so reqstool status has real, non-fabricated data. | |
| run: | | |
| scripts/combine-annotations.sh \ | |
| target/generated-sources/annotations/resources/annotations.yml \ | |
| target/generated-test-sources/test-annotations/resources/annotations.yml \ | |
| target/reqstool/annotations.yml | |
| - name: Install reqstool | |
| uses: reqstool/.github/.github/actions/install-reqstool@9c6feaab046f4782f430dd2527fdb82c2a5cd926 # main 2026-06-22 | |
| with: | |
| reqstool-source: ${{ matrix.reqstool-source }} | |
| - name: Validate reqstool spec completeness | |
| # not yet available in the latest PyPI release | |
| if: matrix.reqstool-source == 'main' | |
| uses: reqstool/.github/.github/actions/validate-reqstool@9c6feaab046f4782f430dd2527fdb82c2a5cd926 # main 2026-06-22 | |
| - name: Run reqstool status | |
| uses: reqstool/.github/.github/actions/reqstool-status@9c6feaab046f4782f430dd2527fdb82c2a5cd926 # main 2026-06-22 | |
| with: | |
| fail-if-incomplete: "true" | |
| validate-openspec: | |
| uses: reqstool/.github/.github/workflows/common-validate-openspec.yml@9c6feaab046f4782f430dd2527fdb82c2a5cd926 # main 2026-06-22 |