Problem
The policy governing how work is split across tickets -- one ticket per pull request, an umbrella above two, native relationships where the forge has them -- reaches a session ambiently through williamthorsen-workflow-preferences but not at the steps that act on it. Ambient delivery puts the policy in the session; it does not put it where a split is decided or a relationship recorded.
The policy is personal, so writing it into the consuming skills is not an option: that imposes one user's ticketing practice on every consumer of the library.
Context
#1163 designs the guidance hook for exactly this shape: a named slot a skill declares in its body, filled at sync time with the bodies of the rulebooks a declaration binds to it, chosen per user rather than fixed at authoring time. #1172 applies the same adoption pattern to implementation preferences.
Blocked by #1251, which adds the hook delivery mode the new rulebook declares.
Proposed solution
Move ## Splitting work across tickets out of williamthorsen-workflow-preferences into a new williamthorsen-ticketing-preferences, delivery: hook. The deferral rule ("a ticket is a signal, not a boundary") stays behind as ambient, because it governs scope in every session rather than ticket creation alone.
hook is the whole of its delivery. skill would spend a standing skill-index line on three sentences, and ambient alongside hook is what sync reports as "Bound and ambient", since the session would then carry the text twice. The cost accepted is that a session that splits work without invoking one of the three skills no longer carries the policy.
Declare a ticketing-preferences guidance hook in the three bodies that act on the policy, and bind the new rulebook to it in ~/.agents/codeassembly.yaml (machine-local, not committed):
create-ticket -- records the relationships.
design-and-plan -- recognizes a design that needs more than one pull request.
respond-to-review -- files follow-up tickets.
wrap-up and plan-orchestrable-steps are not consumers: wrap-up batches follow-up findings rather than splitting planned work, and reaches the policy through create-ticket on the occasions it does create one; plan-orchestrable-steps works within a single ticket.
Place each declaration at a section boundary: a fill splices at ## level, so a directive between sibling ### steps orphans every step after it.
Name the hook per #1163's convention: concern rather than consumer, and no user or org prefix.
Acceptance criteria
Must have
Problem
The policy governing how work is split across tickets -- one ticket per pull request, an umbrella above two, native relationships where the forge has them -- reaches a session ambiently through
williamthorsen-workflow-preferencesbut not at the steps that act on it. Ambient delivery puts the policy in the session; it does not put it where a split is decided or a relationship recorded.The policy is personal, so writing it into the consuming skills is not an option: that imposes one user's ticketing practice on every consumer of the library.
Context
#1163 designs the guidance hook for exactly this shape: a named slot a skill declares in its body, filled at sync time with the bodies of the rulebooks a declaration binds to it, chosen per user rather than fixed at authoring time. #1172 applies the same adoption pattern to implementation preferences.
Blocked by #1251, which adds the
hookdelivery mode the new rulebook declares.Proposed solution
Move
## Splitting work across ticketsout ofwilliamthorsen-workflow-preferencesinto a newwilliamthorsen-ticketing-preferences,delivery: hook. The deferral rule ("a ticket is a signal, not a boundary") stays behind as ambient, because it governs scope in every session rather than ticket creation alone.hookis the whole of its delivery.skillwould spend a standing skill-index line on three sentences, andambientalongsidehookis whatsyncreports as "Bound and ambient", since the session would then carry the text twice. The cost accepted is that a session that splits work without invoking one of the three skills no longer carries the policy.Declare a
ticketing-preferencesguidance hook in the three bodies that act on the policy, and bind the new rulebook to it in~/.agents/codeassembly.yaml(machine-local, not committed):create-ticket-- records the relationships.design-and-plan-- recognizes a design that needs more than one pull request.respond-to-review-- files follow-up tickets.wrap-upandplan-orchestrable-stepsare not consumers:wrap-upbatches follow-up findings rather than splitting planned work, and reaches the policy throughcreate-ticketon the occasions it does create one;plan-orchestrable-stepsworks within a single ticket.Place each declaration at a section boundary: a fill splices at
##level, so a directive between sibling###steps orphans every step after it.Name the hook per #1163's convention: concern rather than consumer, and no user or org prefix.
Acceptance criteria
Must have
williamthorsen-ticketing-preferencescarries the ticket-splitting policy withdelivery: hook, andwilliamthorsen-workflow-preferenceskeeps the deferral rule, with nothing duplicated between them.create-ticket,design-and-plan, andrespond-to-revieweach declare aticketing-preferenceshook, positioned so no fill orphans a following section.~/.agents/codeassembly.yamlbindswilliamthorsen-ticketing-preferencesto that hook.williamthorsencollection.validatestays clean and the content-convention suites stay green.