Pre-tracker backlog shaping
The permissive staging layer upstream of Jira. Partial candidates accumulate. Agents and humans split, dedupe, estimate, rank. Only fully-formed entries commit downstream — the logbook is authoritative during shaping, the tracker takes over at execution.
candidate_id (UUID)Schema
| Column | Meaning |
|---|---|
| candidate_id | Stable UUID — survives renaming, reordering, and commit. |
| epic | Parent epic. null for orphans that still need grouping. |
| task_name | Short title. Rewritten freely during shaping. |
| description | One paragraph. Expanded as the team learns more. |
| component | Which subsystem: auth, billing, ui-web, etc. |
| dependency | List of candidate_ids this blocks on. |
| risk | low, medium, high, or unknown. |
| estimate | Story points. null until estimation pass. |
| priority | p0–p3. Business priority, not urgency. |
| split_merge_action | null, split:<ids>, merge-into:<id>. |
| commit_decision | pending, approved, dropped. |
| ticket_id | Patched back after commit. null before commit. |
Sample data
Common queries
# Rows that are approved but can't commit — missing required fields
filter commit_decision=approved AND estimate=null
# Orphans still needing an epic
filter epic=null AND commit_decision=pending
# What's blocking auth?
filter component=auth AND commit_decision=pending
group_by dependency
Actions
Commit to Jira. The signature action. The logbook's commit_decision=approved + all required Jira fields populated → create ticket via API → patch ticket_id back onto the row. Entries missing required fields surface in a gaps query before commit, not as Jira validation failures after. Dry-run prints what would be created.
Generate report. Weekly candidate-health brief grouped by component for the tech lead.
After commit, Jira is authoritative for the row — don't sync ticket status changes back into the logbook. Patch ticket_id once; let the tracker own it from there. Keeping both editable creates the "second place to update" failure mode.