Task: Add compass pr create with conventions built in

Table of Contents

This page documents a task in the Add PR management support to compass story. It captures the goal, current status, acceptance, and any notes or results.

Goal

Opening a PR by hand has the most conventions to remember — title format, body sections, the Traceability table with full UUIDs and published-page links, recording the PR on the task. Build them into compass pr create: validated [component] title, Summary/Changes body from flags, Traceability derived from the branch's task doc and its parent story, branch pushed with -u when needed, PR recorded via pr record, and the journal stamped.

Status

Field Value
State DONE
Parent story Add PR management support to compass
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-06-05

Acceptance

  • compass pr create --title "[c] D" [--summary ...] [--change ...] [--draft] [--task ...] opens a PR whose body carries Summary, Changes, and a Traceability table with the story and task full UUIDs and site links.
  • Title convention validated; refuses to run from main.
  • The PR is recorded on the task doc and the journal is stamped without manual steps.
  • The create-PR recipe leads with the command.

Plan

(Transient implementation strategy. Written when work starts; distilled into the parent story's * Decisions and cleared when the task closes. Plans do not outlive their task.)

Notes

2026-06-05: first slice landed ahead of create itself — compass pr record [<pr>] finds the task by matching #+branch: against the current branch (or --task), sets #+pr:, and appends the * PRs row from the PR's live title; idempotent when already recorded. The create-PR recipe's record step is now one command. Shipped on the pr-checks branch (PR #1084).

PRs

PR Title
#1087 [ores.compass] Add pr create: open PRs with conventions built in

Review

# Comment summary File Decision Notes
1 Empty gh output → IndexError; pass parsed PR number to record compass_pr.py Accepted b54902d50
2 #+title: parsing should be case-insensitive (org spec) compass_pr.py Accepted b54902d50
3 :ID: search should be case-insensitive compass_pr.py Accepted b54902d50
4 Validate task/story :ID: present before Traceability compass_pr.py Accepted b54902d50

Result

Shipped across PRs #1084 (pr record) and #1087 (pr create, merged 2026-06-05): one command validates the title, builds the body with the Traceability table derived from the branch's task and story docs, pushes, opens the PR, records it on the task, and stamps the journal. PR #1087 was opened by the command itself; dogfooding caught the unreliable pre-push @{u} check.

Emacs 29.1 (Org mode 9.6.6)