How do I refine the backlog?

Table of Contents

Backlog refinement operates on the product backlog — the next/=|=deferred and next/=|=deferred/ capture buckets under doc/agile/product_backlog/. For automated orchestration, use the agile-refine-backlog skill (its deep mode also audits inbox/, verifies each capture against the live codebase, and writes a report). For sprint selection specifically, use How do I plan a sprint?.

Question

How do I tidy the product backlog — pruning stale captures, sharpening vague ones, and re-prioritising between next/=|=deferred and next/=|=deferred/?

Answer

  1. List both buckets:

    ./projects/ores.compass/compass.sh next
    ./projects/ores.compass/compass.sh deferred
    
  2. For each capture, apply the VBCD checklist:
    • V — Valid? Is the need still real? If the work shipped or the idea's need has gone away, move the file to discarded/ (git mv, :ID: unchanged) with a reason line citing what closed it. Captures have no #+todo state field — the bucket is the state.
    • B — Bucket? Does it belong in next/=|=deferred (next version) or next/=|=deferred/ (longer horizon)? Move by renaming the file; :ID: stays unchanged.
    • C — Clear? Is the title a complete thought and the description specific enough to act on? Sharpen both in place if not.
    • D — Duplicate? Is a similar capture already in the backlog? Merge by absorbing content into the richer one and moving the absorbed one to discarded/ with a "Duplicate, merged into" reason line; repoint any inbound id: links at the survivor.
  3. File new captures that surface during the review:

    projects/ores.compass/compass.sh add capture \
      --parent-dir doc/agile/product_backlog/next \
      --slug <slug> \
      --title "<title>" --description "<one-liner>"
    

    Use --parent-dir doc/agile/product_backlog/deferred for longer-horizon items.

  4. Move items between buckets:

    git mv doc/agile/product_backlog/next/<slug>.org \
           doc/agile/product_backlog/deferred/<slug>.org
    
  5. Commit the sweep:

    git add doc/agile/product_backlog/
    git commit -m "[agile] Backlog refinement — next/deferred housekeeping"
    

Healthy backlog heuristics

  • Next bucket ≤ 20 items. More than that signals drift — push low-priority items to deferred.
  • Every next capture has a one-line #+description a newcomer could act on.
  • No capture has been untouched for more than two sprints without a decision.

Script

No single script — the agile-refine-backlog Claude Code skill orchestrates this procedure interactively.

Tested by

Manual. Run at the start of each sprint planning cycle or whenever the next bucket exceeds 20 items.

See also

Emacs 29.3 (Org mode 9.6.15)