Coverage in CI

    Gate pull requests on requirements coverage. The action calls the single source of truth endpointGET /api/coverage/project/:projectId/status.

    name: Requirements Coverage
    
    'on':
      pull_request: {}
    
    jobs:
      coverage:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Check requirements coverage
            env:
              NODURA_BASE_URL: ${{ secrets.NODURA_BASE_URL }}
              NODURA_API_TOKEN: ${{ secrets.NODURA_API_TOKEN }}
              NODURA_PROJECT_ID: ${{ secrets.NODURA_PROJECT_ID }}
            run: |
              STATUS=$(curl -sS -H "Authorization: Bearer $NODURA_API_TOKEN" \
                "$NODURA_BASE_URL/api/coverage/project/$NODURA_PROJECT_ID/status" | jq -r '.data.status')
              echo "status=$STATUS"
              if [ "$STATUS" != "pass" ] && [ "$STATUS" != "pass_with_override" ]; then
                echo "Requirements coverage failed"
                exit 1
              fi

    Set the three secrets in your repository settings. Optionally require this job in Branch Protection.