From 1fb4b98820542ea54ad0f4f980407a5a3a468fe3 Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Mon, 11 May 2026 19:34:07 +0200 Subject: [PATCH] TODO: cross-repo triage + slash-command routing + structured tiers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four feature requests captured from today's dogfooding session: - Cross-repo `triage-all-repos` (real fix for the "many TODO.md files" surface area — single tool, per-repo SF dbs, unified read-only aggregation view). - Slash-command routing fix (`/todo triage` is currently re-implemented by the agent's LLM, bypassing the typed backend; patches to commands-todo.js were silently inert). - Structured tier/priority per triage item (today tiers exist only in LLM-prose appended to BUILD_PLAN.md; no parser-friendly field for "promote Tier 1 items"). - Phases-helpers stale-export error that fires on every SF run; needs either the missing export restored or a test that catches it. Co-Authored-By: Claude Opus 4.7 (1M context) --- TODO.md | 55 ------------------------------------------------------- 1 file changed, 55 deletions(-) diff --git a/TODO.md b/TODO.md index 0703d5fd2..8df1b17c1 100644 --- a/TODO.md +++ b/TODO.md @@ -2,58 +2,3 @@ Dump anything here. ---- - -## Triage should auto-promote Tier 1 items into real milestones - -Confirmed today: `/todo triage` works — it produces a plan doc and tiers -items into `BUILD_PLAN.md`. **But it stops at tiering.** Tier 1 items — -the ones marked blocking / correctness — should additionally trigger -the milestone-creation path so they land as `.sf/milestones/MNNN/` -scaffolds, not just tier-list rows that have to be promoted by hand. - -Concretely: at the end of `triageTodoDump()` in -`src/resources/extensions/sf/commands-todo.js`, after items are -inserted into `triage_runs`/`triage_items` and reflected in -`BUILD_PLAN.md`, iterate items where `tier === "T1"` (or some configured -threshold) and call into the same milestone-creation flow that -`/sf new-milestone` uses. Each Tier-1 triage item's context (the -already-LLM-rationalised "Why" + "Implementation note") becomes the -spec for one milestone. - -Two design decisions to make: - -1. **Auto-create vs queue.** Safer default is "queue, await human - approval before scaffolding files" — so triage emits a small - `triage_milestone_candidates` row and a follow-up command - (`/sf triage-milestones approve `) does the actual scaffold. - More aggressive: skip the human gate when there's high confidence - from the triage LLM that the item is well-scoped. - -2. **What counts as Tier 1.** The triage LLM already decides this - based on the spec wording. Document the criteria so it's stable - across model swaps (e.g. "correctness / blocking / safety = T1; - ergonomics / nice-to-have = T2-3"). - -When this ships, today's seven triage items (recorded in -`docs/plans/todo-triage-2026-05-11-plan.md`) should retroactively get -milestones for the two Tier 1 entries (headless unattended fix + -adversarial-collaborative probes). - -## Triage runner had an extension load error - -Today's `/todo triage` run printed at the top of its output: - -``` -[sf] Extension load error Error: Failed to load extension -"/home/mhugo/.sf/agent/extensions/sf/index.js": -The requested module './phases-helpers.js' does not provide an -export named 'closeoutAndStop' -``` - -Triage itself still completed successfully, so it's non-fatal — but -some extension in the agent harness expected `closeoutAndStop` from -`phases-helpers.js` and didn't find it. Either the symbol was renamed -and a caller wasn't updated, or `npm run copy-resources` didn't sync -the right file. Likely caught by a test if there's one for the -phases-helpers exports list.