chore(v0.242.1): release — field-receipt fixes for v0.242.0 #205
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
| name: CI | |
| # Workflow uses no untrusted github.event.* inputs (no issue/PR/comment data | |
| # flows into run: blocks). Triggered by push/pull_request on the repo only. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| smoke-test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: ['22', '24'] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: CLI smoke tests | |
| run: bash scripts/smoke-test.sh | |
| manifest-version-coherence: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Verify VERSION matches plugin.json | |
| run: | | |
| VFILE=$(cat VERSION | tr -d '[:space:]') | |
| VPLUGIN=$(node -e "console.log(require('./.claude-plugin/plugin.json').version)") | |
| echo "VERSION=$VFILE plugin.json=$VPLUGIN" | |
| if [ "$VFILE" != "$VPLUGIN" ]; then | |
| echo "Version drift: VERSION and plugin.json must agree" | |
| exit 1 | |
| fi | |
| - name: Verify CHANGELOG has section for current VERSION | |
| run: | | |
| VFILE=$(cat VERSION | tr -d '[:space:]') | |
| if ! bash scripts/extract-changelog.sh "$VFILE" >/dev/null; then | |
| echo "CHANGELOG.md is missing a section for version $VFILE" | |
| exit 1 | |
| fi | |
| token-report-regression: | |
| # Soft-fail gate: reports regressions but doesn't block releases. | |
| # Drop continue-on-error to promote to a required gate once soak telemetry | |
| # confirms zero false-positives on the regression heuristic. | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: '22' | |
| - name: Token-report regression check (cache-friendliness invariant) | |
| run: node bin/devt-tools.cjs token-report --regression --since=7d --fail-on-regression | |
| workflow-type-registry: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: '22' | |
| - name: Verify VALID_WORKFLOW_TYPES has resume routing in next.md AND status.md | |
| run: | | |
| node -e " | |
| const { VALID_WORKFLOW_TYPES } = require('./bin/modules/state.cjs'); | |
| const fs = require('fs'); | |
| const next = fs.readFileSync('workflows/next.md', 'utf8'); | |
| const status = fs.readFileSync('workflows/status.md', 'utf8'); | |
| const missingNext = [], missingStatus = []; | |
| for (const t of VALID_WORKFLOW_TYPES) { | |
| if (t === null) continue; | |
| if (!next.includes(t)) missingNext.push(t); | |
| if (!status.includes(t)) missingStatus.push(t); | |
| } | |
| if (missingNext.length) { console.error('Missing in next.md:', missingNext); process.exit(1); } | |
| if (missingStatus.length) { console.error('Missing in status.md:', missingStatus); process.exit(1); } | |
| console.log('All', [...VALID_WORKFLOW_TYPES].filter(Boolean).length, 'workflow types covered in both next.md and status.md'); | |
| " |