TODO: cross-repo triage + slash-command routing + structured tiers
Some checks are pending
CI / detect-changes (push) Waiting to run
CI / docs-check (push) Blocked by required conditions
CI / lint (push) Blocked by required conditions
CI / build (push) Blocked by required conditions
CI / integration-tests (push) Blocked by required conditions
CI / windows-portability (push) Blocked by required conditions
CI / rtk-portability (linux, blacksmith-4vcpu-ubuntu-2404) (push) Blocked by required conditions
CI / rtk-portability (macos, macos-15) (push) Blocked by required conditions
CI / rtk-portability (windows, blacksmith-4vcpu-windows-2025) (push) Blocked by required conditions

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) <noreply@anthropic.com>
This commit is contained in:
Mikael Hugo 2026-05-11 19:34:07 +02:00
parent b818ae2c5a
commit 1fb4b98820

55
TODO.md
View file

@ -2,58 +2,3 @@
Dump anything here. 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 <id>`) 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.