@@ -27,17 +27,24 @@ cargo check --workspace --all-targets --features "fastly cloudflare"
2727
2828If any gate fails, report the failure and stop — do not create a broken PR.
2929
30- ### 3. Draft PR content
30+ ### 3. Ensure a linked issue exists
31+
32+ Every PR should close a ticket. If no issue exists for this work:
33+
34+ 1 . Create one using the appropriate issue type (see Issue Types below).
35+ 2 . Reference it in the PR body with ` Closes #<number> ` .
36+
37+ ### 4. Draft PR content
3138
3239Using the ` .github/pull_request_template.md ` structure, draft:
3340
3441- ** Summary** : 1-3 bullet points describing what the PR does and why.
3542- ** Changes table** : list each crate/file modified and what changed.
36- - ** Closes** : link to related issue(s) if mentioned in commits or branch name .
43+ - ** Closes** : ` Closes #< issue-number> ` to auto-close the linked issue .
3744- ** Test plan** : check off which verification steps were run.
3845- ** Checklist** : verify each item applies.
3946
40- ### 4 . Create the PR
47+ ### 5 . Create the PR
4148
4249```
4350gh pr create --title "<short title under 70 chars>" --body "$(cat <<'EOF'
5562)"
5663```
5764
58- ### 5 . Report
65+ ### 6 . Report
5966
6067Output the PR URL and a summary of what was included.
6168
69+ ## Issue Types
70+
71+ This project uses GitHub issue ** types** (not labels) to categorize issues.
72+ Set the type via GraphQL after creating the issue:
73+
74+ ```
75+ gh api graphql -f query='mutation {
76+ updateIssue(input: {
77+ id: "<issue_node_id>",
78+ issueTypeId: "<type_id>"
79+ }) { issue { id title } }
80+ }'
81+ ```
82+
83+ | Type | ID | Use for |
84+ | ---------- | --------------------- | --------------------------------------- |
85+ | Task | ` IT_kwDOAAuvmc4BmvnE ` | Technical chores, refactoring, CI, deps |
86+ | Bug | ` IT_kwDOAAuvmc4BmvnF ` | Unexpected behavior or errors |
87+ | Story | ` IT_kwDOAAuvmc4BwVyg ` | User-facing capability (non-internal) |
88+ | Epic | ` IT_kwDOAAuvmc4BwVrF ` | Large multi-issue initiatives |
89+ | Initiative | ` IT_kwDOAAuvmc4BwVrJ ` | High-level product/tech/business goals |
90+
91+ Do ** not** use labels as a substitute for types.
92+
6293## Rules
6394
6495- Keep the PR title under 70 characters.
@@ -67,3 +98,4 @@ Output the PR URL and a summary of what was included.
6798- If the branch has many commits, group related changes in the summary.
6899- Never force-push or rebase without explicit user approval.
69100- Always base PRs against ` main ` unless told otherwise.
101+ - Do ** not** include any byline, "Generated with" footer, or ` Co-Authored-By ` trailer — in PR bodies or commit messages.
0 commit comments