diff --git a/TODO.md b/TODO.md index 16616f56c1..853497d227 100644 --- a/TODO.md +++ b/TODO.md @@ -115,6 +115,8 @@ Tasks with no open blockers - ready to work on. Use `/ready` to refresh this lis - [ ] t1985 test: extend stub-harness pattern from t1969 to issue-sync-lib.sh — t1983's P0 bug would have been caught on day one by a stub-based test covering add_gh_ref_to_todo. Same pattern as test-privacy-guard.sh (t1969), applied to issue-sync-lib.sh with ~10 tests covering 6 functions (add_gh_ref_to_todo, fix_gh_ref_in_todo, add_pr_ref_to_todo, strip_code_fences, _escape_ere, parse_task_line). Include explicit regression test for t1983. #test #auto-dispatch #interactive ~2h tier:standard ref:GH#18404 logged:2026-04-12 blocked-by:t1983 -> [todo/tasks/t1985-brief.md] +- [x] t1990 feat(pre-edit-check): canonical stays on main in interactive sessions — no main-branch planning exception for interactive. is_main_allowlisted_path() short-circuits FALSE when no headless env var is set (FULL_LOOP_HEADLESS / AIDEVOPS_HEADLESS / OPENCODE_HEADLESS / GITHUB_ACTIONS). Every interactive edit — TODO.md, todo/**, README.md, code — goes through a linked worktree. Headless sessions keep the allowlist for routine bookkeeping. Docs updated in AGENTS.md + build.txt. #enhancement #interactive ~45m tier:standard logged:2026-04-12 -> [todo/tasks/t1990-brief.md] pr:#18414 completed:2026-04-12 + - [ ] t1986 fix(pulse): systemic parent-task dispatch guard — closes 4 independent holes from the GH#18356 dispatch-loop incident observed during t1962 Phase 3. (1) add parent-task + meta to _is_protected_label allow-list so the label survives issue-sync reconciliation; (2) add #parent → parent-task alias in map_tags_to_labels; (3) add dispatch-time short-circuit in dispatch-dedup-helper.sh is_assigned() so any parent-task labeled issue blocks dispatch regardless of assignees; (4) new test-parent-task-guard.sh with 6+ assertions via gh stubbing. Without this fix, any parent task with tier:reasoning is a token bomb. #bug #pulse #auto-dispatch #interactive ~2h tier:standard ref:GH#18399 logged:2026-04-12 -> [todo/tasks/t1986-brief.md] - [ ] t1987 refactor(pulse): Phase 12 simplification sweep — split pulse-simplification.sh (1,990 lines, 29 fns) + pulse-prefetch.sh (1,668 lines, 26 fns) into 3-4 sub-modules each via call-graph analysis, then ratchet complexity thresholds back down. Three sequential PRs (Parts A, B, C). Deferred from t1962 parent. Byte-preserving extractions only — simplification out of scope. Requires reasoning-tier for sub-cluster boundary design (not mechanical). #simplification #pulse #auto-dispatch #interactive ~4.5h tier:reasoning ref:GH#18400 logged:2026-04-12 -> [todo/tasks/t1987-brief.md]