docs(tasks): 移除 P3+P4 active 重复副本并同步索引 #398
Workflow file for this run
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: tech-graph | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| # 当前集成开发分支;合并入 main 后可删 | |
| - agent-v3 | |
| jobs: | |
| manifest_check: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - name: Tech Graph checks (manifest · drift · export · equivalence) | |
| run: bash scripts/verify-tech-graph.sh | |
| task_validate: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - name: Detect task file changes | |
| id: tasks | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| BASE="${{ github.base_ref }}" | |
| git fetch origin "$BASE" --depth=1 2>/dev/null || true | |
| CHANGED="$(git diff --name-only "origin/${BASE}...HEAD" -- 'docs/tasks/' || true)" | |
| else | |
| CHANGED="$(git diff --name-only HEAD~1 HEAD -- 'docs/tasks/' || true)" | |
| fi | |
| if [ -n "$CHANGED" ]; then | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| echo "Task paths changed:" | |
| echo "$CHANGED" | |
| else | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| echo "No docs/tasks/ changes; skipping task_validate." | |
| fi | |
| - name: Harness task validate (changed task files) | |
| if: steps.tasks.outputs.changed == 'true' | |
| run: | | |
| set -euo pipefail | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| BASE="${{ github.base_ref }}" | |
| FILES="$(git diff --name-only --diff-filter=ACMR "origin/${BASE}...HEAD" -- 'docs/tasks/active/*.md' 'docs/tasks/done/*.md' || true)" | |
| else | |
| FILES="$(git diff --name-only --diff-filter=ACMR HEAD~1 HEAD -- 'docs/tasks/active/*.md' 'docs/tasks/done/*.md' || true)" | |
| fi | |
| if [ -z "$FILES" ]; then | |
| echo "No task .md to validate (no Added/Copied/Modified/Renamed on HEAD)." | |
| exit 0 | |
| fi | |
| for f in $FILES; do | |
| if [[ "$f" == *_AGENT_PROMPT* ]]; then | |
| continue | |
| fi | |
| if [ ! -f "$f" ]; then | |
| echo "Skip missing path (deleted-only in diff): $f" | |
| continue | |
| fi | |
| echo "Validating $f" | |
| python tools/harness_task_validate.py "$f" | |
| done |