3838(defconst rg/trace-feedback--buckets
3939 '(" tbd" " submitted" " noResult" " not_applicable" ))
4040
41+ (defconst rg/trace-feedback-monitor-category
42+ " Monitor / Subagent Task / Background Task Issues" )
43+
44+ (defconst rg/trace-feedback-categories
45+ (list rg/trace-feedback-monitor-category
46+ " Intent Understanding / Instruction Following"
47+ " Code Correctness"
48+ " Code Scope"
49+ " Code Quality"
50+ " Regression Safety"
51+ " Dangerous Actions"
52+ " Laziness - Unnecessary Ask"
53+ " Laziness - Task Incomplete"
54+ " Laziness - Self verification"
55+ " Tool Call Inefficiencies"
56+ " Hallucination"
57+ " Transparency"
58+ " Reject Premise / Bullshit Actions"
59+ " Presentation"
60+ " Other" ))
61+
4162(defun rg/trace-feedback--require-root ()
4263 " Return the configured trace root or raise a user error."
4364 (unless (and rg/trace-feedback-vault-root
@@ -310,7 +331,7 @@ Signal a user error and display the output when xait exits nonzero."
310331(defvar rg-trace-feedback-rank-mode-map
311332 (let ((map (make-sparse-keymap )))
312333 (set-keymap-parent map special-mode-map)
313- (define-key map (kbd " g" ) #'rg/trace-feedback-rank )
334+ (define-key map (kbd " g" ) #'rg/trace-feedback-refresh )
314335 (define-key map (kbd " q" ) #'quit-window )
315336 (define-key map (kbd " /" ) #'rg/trace-feedback-rank-search )
316337 map)
@@ -319,6 +340,9 @@ Signal a user error and display the output when xait exits nonzero."
319340(define-derived-mode rg-trace-feedback-rank-mode special-mode " xait-rank"
320341 " Major mode for xait trace queue output." )
321342
343+ (defvar-local rg/trace-feedback--queue-args nil
344+ " xait argument list used to populate the current queue buffer." )
345+
322346(defun rg/trace-feedback-rank-search ()
323347 " Search the rank buffer with Consult when available."
324348 (interactive )
@@ -335,19 +359,50 @@ Signal a user error and display the output when xait exits nonzero."
335359 (erase-buffer )
336360 (insert output)
337361 (goto-char (point-min ))
338- (rg-trace-feedback-rank-mode)))
362+ (rg-trace-feedback-rank-mode)
363+ (setq rg/trace-feedback--queue-args (copy-sequence args))))
339364 (display-buffer buffer)
340365 buffer))
341366
342- (defun rg/trace-feedback-rank ()
343- " Open the ranked trace feedback queue ."
367+ (defun rg/trace-feedback-refresh ()
368+ " Refresh the current queue with the arguments that opened it ."
344369 (interactive )
370+ (unless rg/trace-feedback--queue-args
371+ (user-error " This buffer has no saved xait queue arguments" ))
345372 (rg/trace-feedback--queue-buffer
346- " *xait trace rank*"
373+ (buffer-name ) rg/trace-feedback--queue-args))
374+
375+ (defun rg/trace-feedback--rank-args (&optional category )
376+ " Return ranked-queue arguments, optionally filtered by CATEGORY."
377+ (append
347378 (list " db" " trace" " rank" " --model"
348379 (or rg/trace-feedback-default-model
349380 (user-error " Set the default trace model" ))
350- " --spread" )))
381+ " --spread" )
382+ (when category (list " --category" category))))
383+
384+ (defun rg/trace-feedback-rank ()
385+ " Open the ranked trace feedback queue."
386+ (interactive )
387+ (rg/trace-feedback--queue-buffer
388+ " *xait trace rank*"
389+ (rg/trace-feedback--rank-args)))
390+
391+ (defun rg/trace-feedback-filter-category (category )
392+ " Open the ranked trace queue filtered by CATEGORY."
393+ (interactive
394+ (list (completing-read " Trace category: "
395+ rg/trace-feedback-categories nil nil )))
396+ (when (string-empty-p (string-trim category))
397+ (user-error " A category filter is required" ))
398+ (rg/trace-feedback--queue-buffer
399+ (format " *xait trace rank: %s * " category)
400+ (rg/trace-feedback--rank-args category)))
401+
402+ (defun rg/trace-feedback-monitor ()
403+ " Open the ranked monitor and background-task findings queue."
404+ (interactive )
405+ (rg/trace-feedback-filter-category rg/trace-feedback-monitor-category))
351406
352407(defun rg/trace-feedback-status ()
353408 " Open the xait trace status output."
@@ -373,6 +428,8 @@ Signal a user error and display the output when xait exits nonzero."
373428 rg/trace-feedback-mark-not-submitted)]
374429 [" Queue"
375430 (" r" " Ranked queue" rg/trace-feedback-rank)
431+ (" f" " Filter category" rg/trace-feedback-filter-category)
432+ (" m" " Monitor queue" rg/trace-feedback-monitor)
376433 (" t" " Status" rg/trace-feedback-status)]]))))
377434
378435(defun rg/trace-feedback-dispatch ()
@@ -387,7 +444,8 @@ Signal a user error and display the output when xait exits nonzero."
387444 " Trace command: "
388445 '(" rg/trace-feedback-new" " rg/trace-feedback-lint-export"
389446 " rg/trace-feedback-submit" " rg/trace-feedback-mark-not-submitted"
390- " rg/trace-feedback-rank" " rg/trace-feedback-status" )
447+ " rg/trace-feedback-rank" " rg/trace-feedback-filter-category"
448+ " rg/trace-feedback-monitor" " rg/trace-feedback-status" )
391449 nil t )))))
392450
393451(defun rg/trace-feedback-install-keybindings ()
@@ -405,6 +463,8 @@ Signal a user error and display the output when xait exits nonzero."
405463 " s" #'rg/trace-feedback-submit
406464 " c" #'rg/trace-feedback-mark-not-submitted
407465 " r" #'rg/trace-feedback-rank
466+ " f" #'rg/trace-feedback-filter-category
467+ " m" #'rg/trace-feedback-monitor
408468 " t" #'rg/trace-feedback-status )))
409469
410470(defun rg/trace-feedback-load-private-settings ()
0 commit comments