feat(stagecraft): short work-item ids: a tracker prefix plus a counter, the ticket's id for external trackers, and -2 for later work (swamp-club #2966) #443

Merged
seth merged 3 commits from cue/2966-stagecraft-short-work into main 2026-10-02 17:22:21 +00:00
Owner

Closes swamp-club #2966.

Short work-item ids that people can say and type, instead of <factory or ticket id>-<title slug>-<4 random chars>.

What changes

  • Built-in tracker numbers its tickets: <prefix>-1, <prefix>-2, … from a counter kept in the tracker's own data, one per prefix. A new or recreated tracker starts above the highest number the repository's tickets and work items already carry. Names already taken (a key started by hand, for example) are passed over.
  • A key is the ticket's id: claim uses the ticket's own id, lowercased. Linear ABC-12 gives abc-12, and a number-only id takes the instance's prefix (#2711 gives lab-2711).
    • Later work items on the same ticket add a number: abc-12-2.
    • On a collision (two trackers with one prefix, or a key started by hand), the key gets the tracker instance's name, abc-12-linear, and the ticket keeps it. If that is taken too, claim refuses and says why.
    • Ids too long for a key, including old 64-character ones, are cut to fit rather than refused.
  • prefix on every tracker model (built-in, Linear, swamp-club): optional, at most 12 characters, defaulting to the instance's name cut to 12. Duplicates are allowed.
  • The factory's new_key is removed. Work starts from a ticket (create, then claim), or under a name typed by hand.
  • Titles beside keys: status's first line and the summary heading show the work's title.
  • Docs:
    • DESIGN.md has a new decision-log entry that replaces #2744's key rules, including the counter's limits.
    • REFERENCE, README and the skill (driving, authoring, getting started) are updated, and the worked example now runs the create → claim → start flow. Getting started asks for the prefix.

Old keys and records keep working: a key is only a model name. Model versions are bumped (stagecraft is unpublished).

Verification

  • Commit fa78910, attestation 7cdbd66a-79bc-471e-bc27-9f558b494681.
  • verify-build passed: stagecraft check, lint, fmt, 880 unit tests and 54 real-engine integration tests.
  • verify-reviews: code-review and adversarial-review both passed.

🤖 Generated with Claude Code

Closes swamp-club #2966. Short work-item ids that people can say and type, instead of `<factory or ticket id>-<title slug>-<4 random chars>`. ## What changes - **Built-in tracker numbers its tickets**: `<prefix>-1`, `<prefix>-2`, … from a counter kept in the tracker's own data, one per prefix. A new or recreated tracker starts above the highest number the repository's tickets and work items already carry. Names already taken (a key started by hand, for example) are passed over. - **A key is the ticket's id**: `claim` uses the ticket's own id, lowercased. Linear `ABC-12` gives `abc-12`, and a number-only id takes the instance's prefix (`#2711` gives `lab-2711`). - Later work items on the same ticket add a number: `abc-12-2`. - On a collision (two trackers with one prefix, or a key started by hand), the key gets the tracker instance's name, `abc-12-linear`, and the ticket keeps it. If that is taken too, `claim` refuses and says why. - Ids too long for a key, including old 64-character ones, are cut to fit rather than refused. - **`prefix` on every tracker model** (built-in, Linear, swamp-club): optional, at most 12 characters, defaulting to the instance's name cut to 12. Duplicates are allowed. - **The factory's `new_key` is removed.** Work starts from a ticket (`create`, then `claim`), or under a name typed by hand. - **Titles beside keys**: `status`'s first line and the summary heading show the work's title. - **Docs**: - DESIGN.md has a new decision-log entry that replaces #2744's key rules, including the counter's limits. - REFERENCE, README and the skill (driving, authoring, getting started) are updated, and the worked example now runs the create → claim → start flow. Getting started asks for the prefix. Old keys and records keep working: a key is only a model name. Model versions are bumped (stagecraft is unpublished). ## Verification - Commit `fa78910`, attestation `7cdbd66a-79bc-471e-bc27-9f558b494681`. - verify-build passed: stagecraft check, lint, fmt, 880 unit tests and 54 real-engine integration tests. - verify-reviews: code-review and adversarial-review both passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A work item's key is now its ticket's id. The built-in tracker numbers its
tickets <prefix>-<n> (blog-12) from a counter per prefix in its own data,
seeded above the highest number the repository's tickets and work items
carry, so a recreated tracker never reuses an id. A key claimed from an
external ticket is the ticket's id as-is (Linear ABC-12 gives abc-12); an id
that is only a number takes the tracker instance's prefix (lab-2711). Later
work items on the same ticket add -2, -3. When another work item already has
the name, the tracker instance's name qualifies it (abc-12-linear), and the
ticket keeps the qualifier.

Every tracker model has an optional prefix (at most 12 characters, default
the instance's name). The factory's new_key is removed: work starts from a
ticket (create, then claim) or under a name chosen by hand. status and the
summary show the title beside the key. DESIGN.md records the decision,
replacing #2744's key rules, and the skill, README, REFERENCE and the worked
example use the new form; getting started asks for the prefix.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fix(stagecraft): a long or old ticket id is cut to fit a key, not refused, and the counter scan ignores long digit runs (swamp-club #2966)
All checks were successful
CI / Review Integrity (pull_request) Successful in 50s
CI / Validate Attestation (pull_request) Successful in 53s
fa78910a01
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit dc6f12e278 into main 2026-10-02 17:22:21 +00:00
seth deleted branch cue/2966-stagecraft-short-work 2026-10-02 17:22:21 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!443
No description provided.