2.7 KiB
2.7 KiB
Issue tracker: Gitea
Issues for this repo live in Gitea at git.forteapps.net/Forte/launchpad. Use the Gitea API or tea CLI.
Conventions
- Create an issue:
tea issue create --title "..." --description "..."or via API:curl -X POST "https://git.forteapps.net/api/v1/repos/Forte/launchpad/issues" -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" -d '{"title":"...","body":"..."}' - Read an issue:
tea issue view <number>or APIGET /api/v1/repos/Forte/launchpad/issues/<number> - List issues:
tea issue listor APIGET /api/v1/repos/Forte/launchpad/issues?state=open - Comment on an issue:
tea issue comment <number> "..."or APIPOST /api/v1/repos/Forte/launchpad/issues/<number>/comments - Apply labels: API
POST /api/v1/repos/Forte/launchpad/issues/<number>/labelswith{"labels": [<label_id>]} - Close: API
PATCH /api/v1/repos/Forte/launchpad/issues/<number>with{"state": "closed"}
Infer the repo from git remote -v.
Pull requests as a triage surface
PRs as a request surface: no.
When a skill says "publish to the issue tracker"
Create a Gitea issue.
When a skill says "fetch the relevant ticket"
Fetch the issue via API or tea issue view <number>.
Wayfinding operations
Used by /wayfinder. The map is a single issue with child issues as tickets.
- Map: a single issue labelled
wayfinder:map, holding the Destination / Notes / Decisions-so-far / Fog body.- Create:
POST /api/v1/repos/Forte/launchpad/issueswith{"title":"...","body":"...","labels":[<wayfinder:map label id>]}
- Create:
- Child ticket: an issue carrying
Part of #<map>at the top of its body and awayfinder:<type>label (research/prototype/grilling/task). Once claimed, the ticket is assigned to the driving dev. - Blocking: Gitea does not have native issue dependencies. Fall back to a
Blocked by: #<n>, #<n>line at the top of the child body. A ticket is unblocked when every issue it lists is closed. - Frontier query: list the map's open children —
GET /api/v1/repos/Forte/launchpad/issues?state=open&labels=wayfinder:research,wayfinder:prototype,wayfinder:grilling,wayfinder:task— then filter to those whose body starts withPart of #<map>. Drop any with an open issue in theirBlocked byline, or with an assignee. First in map order wins. - Claim:
PATCH /api/v1/repos/Forte/launchpad/issues/<n>with{"assignees":["<username>"]}— the session's first write. - Resolve: post the answer as a comment (
POST .../comments), close the issue (PATCHwith{"state":"closed"}), then append a context pointer (gist + link) to the map's Decisions-so-far by editing the map issue body.