From ca794a541b817a501b4edd37aafc13317d2477ce Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 9 Oct 2026 14:52:46 +0000 Subject: [PATCH] CI: the pipeline chains to the lowest open task above the merged one; note PR #120 under T30 [skip ci] After #113 (T23) merged, the pipeline chained T24 with the task text that main still carried before #114 renumbered the tasks (PR #120, closed). The "Start the next task" step looked for exactly T(NN+1) and stopped when that id was closed, so T22 -> T24 would have needed a manual label once T22 merges. It now takes the lowest open task issue above the merged one and applies the same on-hold/external and triage checks. TASKS.md: note under T30 that the closed PR's branch holds a first draft. STATE.md section 8: what happened and how the chain resumes (label #22 claude:implement). Refs #120. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_014NfiFN5Ukdcnbh87uff2Dg --- .github/workflows/claude-pipeline.yml | 10 +++++++--- STATE.md | 8 ++++++++ TASKS.md | 7 +++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/workflows/claude-pipeline.yml b/.github/workflows/claude-pipeline.yml index aab9bcb..bafff4f 100644 --- a/.github/workflows/claude-pipeline.yml +++ b/.github/workflows/claude-pipeline.yml @@ -238,11 +238,15 @@ jobs: gh workflow run claude-triage.yml || true exit 0 fi - next=$(printf 'T%02d' $((10#${task#T} + 1))) + # next task: the lowest open TNN issue above the merged one. Usually T(NN+1); when + # that id is already closed (a task done out of order, or tasks renumbered), the + # chain continues with the next open id instead of stopping. issue=$(gh issue list --state open --label task --limit 100 --json number,title,labels \ - --jq '[.[] | select(.title | startswith("'"$next"' — "))][0]') - if [ -z "$issue" ] || [ "$issue" = "null" ]; then echo "No open task issue for $next."; exit 0; fi + --jq --argjson nn "$((10#${task#T}))" \ + '[.[] | select(.title | test("^T[0-9]{2} — ")) | . + {id: (.title[1:3] | tonumber)} | select(.id > $nn)] | sort_by(.id) | .[0]') + if [ -z "$issue" ] || [ "$issue" = "null" ]; then echo "No open task issue after $task."; exit 0; fi n=$(jq -r .number <<<"$issue") + next=$(printf 'T%02d' "$(jq -r .id <<<"$issue")") if jq -e '.labels | map(.name) | index("on-hold") or index("external")' <<<"$issue" >/dev/null; then echo "Issue #$n ($next) is on-hold or external; not chaining."; exit 0 fi diff --git a/STATE.md b/STATE.md index e8ab98e..8d3528d 100644 --- a/STATE.md +++ b/STATE.md @@ -178,3 +178,11 @@ kernels; the §5 item 5 recommendation is withdrawn). GitHub: issues #22–#27 renamed to the new titles, #22 loses `on-hold`, new task issues for T28–T31; #96, #108–#110 and #112 labelled `triaged` (#108 → T22, #109/#110 → T26, #112 → T31). The chain resumes with T22 once PR #113 (T23) has merged. + +What happened instead: the issues were renamed before #114 reached `main`, +and the pipeline chains `T(NN+1)` from the merged PR's title, so #113 (T23) +started T24 with the old task text (PR #120, closed; branch kept, note under +T30). The pipeline now continues with the lowest open task id above the +merged one, so T22 → T24 works once T23 is closed; T22 itself has no +predecessor merge to chain from and is started by labelling #22 +`claude:implement`. diff --git a/TASKS.md b/TASKS.md index 957dc12..7097ffc 100644 --- a/TASKS.md +++ b/TASKS.md @@ -3187,6 +3187,13 @@ feature, not a performance one. The ordering cache (analysis under a stored permutation ran in 3.6 s against 12 s for a fresh METIS analysis) is the part MadNLP benefits from. +**Owner note (PR #120)**: a pipeline run chained after T23 implemented this +task under its former number before the renumbering reached `main`; the PR +was closed, but its branch `task/T24-nd-tree-ordering-cache` holds twenty +minutes of work (`src/symbolic/ndtree.jl` with the tree export/import and a +canonical supernode postorder, `test/test_ndtree.jl`), unreviewed and without +CI. Start from it or from scratch; it was not checked against this text. + ### T31 — oneAPI and Metal extensions, allocation-free KA dense fallbacks (issues #112, #53) `[ ]` The remainder of T23, split off by owner decision when PR #113 delivered the