# Issue tracker: Gitea Issues and specs for this repo live in Gitea Issues. Use the `tea` CLI from this clone. Authenticate to `https://git.bongbetic.com` with `tea login add` before using it. ## Conventions - Create: `tea issues create --title "..." --description "..."` - Read an issue and its comments: `tea issues --comments` - List open issues: `tea issues --state open` - List all issues: `tea issues --state all` - Get machine-readable output: `tea issues --output json` - List comments: `tea comments list ` - Add a comment: `tea comments add "..."` - Add/remove labels: `tea issues edit --add-labels "..."` / `--remove-labels "..."` - Assign: `tea issues edit --add-assignees ""` - Close: `tea issues close ` Use `--remote origin` if `tea` needs to select the Gitea login associated with this repo's remote. ## Pull requests as a triage surface **PRs as a request surface: no.** Triage applies to Gitea issues only. ## When a skill says "publish to the issue tracker" Create a Gitea issue. ## When a skill says "fetch the relevant ticket" Run `tea issues --comments`. ## Wayfinding operations The **map** is a Gitea issue with the Notes / Decisions-so-far / Fog sections. - **Map**: create one issue labelled `wayfinder:map`. - **Child ticket**: create one issue per ticket, with `Part of []()` at the top of its description, an HTML comment `` for exact membership filtering, and a `wayfinder:` label (`research`/`prototype`/`grilling`/`task`). Refer to maps and tickets by linked titles in human-facing text. - **Blocking**: use Gitea's native issue dependencies, enabled on this repository. Add a blocker with `tea api --remote origin --method POST -f owner=xavierk -f repo=odin -F index= repos/xavierk/odin/issues//dependencies`. Inspect blockers with a GET to the same endpoint. A ticket is unblocked when every blocker is closed. Fall back to a body convention only on an instance where native dependencies are unavailable. - **Frontier**: list open issues through `tea api`, paginating until exhausted, and filter by the map's membership marker. Skip any with an open native dependency or an assignee; first by issue creation order wins. Never claim an assigned issue. - **Claim**: assign yourself to the issue with `tea issues edit --add-assignees ""`. This is the session's first tracker write. - **Resolve**: add the answer with `tea comments add "..."`, close the issue, then add a context pointer to the map's Decisions-so-far. For multiline issue bodies and comments, send JSON through `tea api --data @` or `--data @-`; preserve literal text and newlines. For map edits, read the latest issue and PATCH its body with the returned `content_version`. On HTTP 409, reread and merge so another session's updates are preserved.