Skip to content

Pipeline — Research Spec Kit (specify/clarify/plan/tasks) #246

Pipeline — Research Spec Kit (specify/clarify/plan/tasks)

Pipeline — Research Spec Kit (specify/clarify/plan/tasks) #246

name: Pipeline — Research Spec Kit (specify/clarify/plan/tasks)
on:
schedule:
- cron: '30 */4 * * *' # every 4 hours, offset 30min
workflow_dispatch:
permissions:
actions: write # workflow_dispatch to pages.yml
contents: write
issues: write
concurrency:
group: pipeline-research-speckit
cancel-in-progress: false
jobs:
run:
runs-on: ubuntu-latest
timeout-minutes: 35
env:
DARTMOUTH_CHAT_API_KEY: ${{ secrets.DARTMOUTH_CHAT_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v5
with: { ref: main }
- uses: actions/setup-python@v6
with: { python-version: "3.11", cache: pip }
- run: pip install -e ".[dev]"
- run: python -m llmxive preflight
- name: Run Spec Kit pass (idea-selector → specifier → clarifier → planner → tasker)
run: python -m llmxive run --max-tasks 8
- run: python -c "from llmxive.agents.status_reporter import regenerate_web_data; from pathlib import Path; regenerate_web_data(repo_root=Path('.'))"
- name: Commit + push
id: commit
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add state/ projects/ web/data/ || true
if git diff --cached --quiet; then echo "no changes"; echo "pushed=false" >> "$GITHUB_OUTPUT"; else
git commit -m "pipeline(speckit): 4h tick"
for i in 1 2 3 4 5; do
git pull --rebase origin main && git push && break
echo "push attempt $i failed; retrying..." >&2
sleep $((5 * i))
done
echo "pushed=true" >> $GITHUB_OUTPUT
fi
- name: Trigger Pages deploy
# GitHub suppresses workflow triggers from GITHUB_TOKEN pushes (to
# prevent infinite cron loops); workflow_dispatch invoked from another
# workflow DOES fire regardless. Without this, pages.yml never
# redeploys after a cron tick even though we touched web/data/.
if: steps.commit.outputs.pushed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh workflow run pages.yml --ref main