Files
launchpad/docs/agents/issue-tracker.md
T
2026-08-01 12:10:50 +02:00

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 API GET /api/v1/repos/Forte/launchpad/issues/<number>
  • List issues: tea issue list or API GET /api/v1/repos/Forte/launchpad/issues?state=open
  • Comment on an issue: tea issue comment <number> "..." or API POST /api/v1/repos/Forte/launchpad/issues/<number>/comments
  • Apply labels: API POST /api/v1/repos/Forte/launchpad/issues/<number>/labels with {"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/issues with {"title":"...","body":"...","labels":[<wayfinder:map label id>]}
  • Child ticket: an issue carrying Part of #<map> at the top of its body and a wayfinder:<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 with Part of #<map>. Drop any with an open issue in their Blocked by line, 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 (PATCH with {"state":"closed"}), then append a context pointer (gist + link) to the map's Decisions-so-far by editing the map issue body.