|
| 1 | +# Issue tracker: GitHub |
| 2 | + |
| 3 | +Issues and specs for this repo live as GitHub issues. Use the `gh` CLI for all |
| 4 | +operations. |
| 5 | + |
| 6 | +## Repository ownership |
| 7 | + |
| 8 | +All work present in this monorepo is tracked in `cipherstash/stack`, including |
| 9 | +the absorbed EQL source under `packages/eql` and protect-ffi under |
| 10 | +`packages/protect-ffi`. Their former upstream repositories are historical |
| 11 | +sources, not active issue trackers. Never create, move, or update an issue in |
| 12 | +`cipherstash/encrypt-query-language` or `cipherstash/protectjs-ffi` for work in |
| 13 | +this tree. Create it in `cipherstash/stack` and link historical upstream issues |
| 14 | +only as provenance. |
| 15 | + |
| 16 | +## Conventions |
| 17 | + |
| 18 | +- **Create an issue**: `gh issue create --title "..." --body "..."`. Use a |
| 19 | + heredoc for multi-line bodies. |
| 20 | +- **Read an issue**: `gh issue view <number> --comments`, filtering comments by |
| 21 | + `jq` and also fetching labels. |
| 22 | +- **List issues**: `gh issue list --state open --json number,title,body,labels,comments --jq '[.[] | {number, title, body, labels: [.labels[].name], comments: [.comments[].body]}]'` |
| 23 | + with appropriate `--label` and `--state` filters. |
| 24 | +- **Comment on an issue**: `gh issue comment <number> --body "..."`. |
| 25 | +- **Apply/remove labels**: `gh issue edit <number> --add-label "..."` or |
| 26 | + `--remove-label "..."`. |
| 27 | +- **Close**: `gh issue close <number> --comment "..."`. |
| 28 | + |
| 29 | +Use `--repo cipherstash/stack` explicitly. Do not infer ownership from subtree |
| 30 | +history, package names, old issue links, or additional git remotes. |
| 31 | + |
| 32 | +## Pull requests as a triage surface |
| 33 | + |
| 34 | +**PRs as a request surface: no.** Set this to `yes` if this repository starts |
| 35 | +treating external pull requests as feature requests. |
| 36 | + |
| 37 | +When enabled, use the corresponding `gh pr` commands. GitHub shares one number |
| 38 | +space across issues and pull requests, so resolve an ambiguous `#42` with |
| 39 | +`gh pr view 42` and fall back to `gh issue view 42`. |
| 40 | + |
| 41 | +## Skill operations |
| 42 | + |
| 43 | +- When a skill says **publish to the issue tracker**, create a GitHub issue. |
| 44 | +- When a skill says **fetch the relevant ticket**, run |
| 45 | + `gh issue view <number> --comments`. |
| 46 | + |
| 47 | +## Wayfinding operations |
| 48 | + |
| 49 | +The map is one issue labelled `wayfinder:map`; its tickets are child issues. |
| 50 | + |
| 51 | +- Create child tickets as GitHub sub-issues through `gh api`. If sub-issues are |
| 52 | + unavailable, use a task list in the map and add `Part of #<map>` to each |
| 53 | + child. |
| 54 | +- Label children `wayfinder:<type>` where type is `research`, `prototype`, |
| 55 | + `grilling`, or `task`. |
| 56 | +- Represent blocking with GitHub's native issue dependencies. Fall back to a |
| 57 | + `Blocked by: #<n>` line only when dependencies are unavailable. |
| 58 | +- Claim work with `gh issue edit <n> --add-assignee @me`. |
| 59 | +- Resolve work by commenting with the result, closing the child, and adding its |
| 60 | + context pointer to the map's Decisions-so-far section. |
0 commit comments