Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/now/2026-08-21-triage-five-ordered-classes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# NOW -- triage tells blocked from actionable (2026-08-21)

## tri triage: five ordered classes, and blocked is tested before actionable (Closes #2156)

- `tri triage` had three classes and made `actionable` the default, so anything it did not recognise was counted as available work. Three kinds of issue cannot be picked up and finished -- blocked on hardware or a human, research with no checkable end, duplicate or obsolete -- and all three were being advertised. The reported count was an upper bound read as an estimate
- Now five classes matched in order: actionable, research, tracking, blocked, duplicate. `blocked` is tested before `actionable` on purpose, so no blocked item is offered as available. Measured over 241 open issues: 45 actionable, 0 research, 189 tracking, 7 blocked, 0 duplicate. The seven blocked items were previously inside the actionable count
- `research` scoring zero is a limitation of the signal, not a finding: the rule reads title form, and this tracker's titles are declarative sentences rather than questions. Reported as measured rather than tuned until the histogram looked plausible
- The tool prints and exits. Autoclose is forbidden: 80% of the tracker is journal record with no completion condition, and a title regex is not grounds to destroy it. The classification is a composition estimate, never a verdict on one issue, and the output says so
- Loop helpers now dispatch from `scripts/tri_loop/` via `tri <name>`, with `tri loop-help` listing them. They report and never mutate; keeping them out of `t27c` means a broken helper cannot take the compiler CLI down with it
- Entry migrated from `docs/NOW.md` to `docs/now/` (the layout #2298 introduced); the original entry was dated 2026-08-14. The branch's own commit had deleted the heading `# NOW -- BNF: the control that measures what ternary is worth (2026-08-09)` while keeping its body, orphaning it; `docs/NOW.md` is restored to master byte-for-byte, so that heading survives
20 changes: 20 additions & 0 deletions scripts/tri
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,26 @@ if [[ ! -x "$T27C" ]]; then
echo "tri: local commands still work -- see 'tri help'" >&2
exit 1
fi
# Loop helpers live in scripts/tri_loop/ as Python, and are dispatched before
# anything is forwarded to t27c. They are separate from the compiler on purpose:
# they measure and report on the repository, they do not compile it, and none of
# them mutates anything. Keeping them out of t27c means a broken helper cannot
# take the compiler's CLI down with it.
cmd="${1:-}"
LOOP_DIR="$SCRIPT_DIR/tri_loop"
if [[ "$cmd" == "loop-help" ]]; then
echo "tri loop helpers (report only, never mutate):"
for f in "$LOOP_DIR"/*.py; do
[[ -e "$f" ]] || continue
name="$(basename "$f" .py)"
printf ' %-12s %s\n' "$name" "$(sed -n '2s/^"""tri [a-z-]* -- //p' "$f")"
done
exit 0
fi
if [[ -n "$cmd" && -f "$LOOP_DIR/${cmd//-/_}.py" ]]; then
exec python3 "$LOOP_DIR/${cmd//-/_}.py" "${@:2}"
fi

# `t27c suite` is the only subcommand that accepts --repo-root.
# Map `tri test` to the suite subcommand; pass other commands through unchanged.
if [[ "$cmd" == "test" || "$cmd" == "suite" ]]; then
Expand Down
Loading