close-ticket
Prove the ticket is done, then open a PR and update the ticket. Do not build more scope. Merge is the user's decision unless they explicitly ask to merge.
API calls: ../ticket-platform/PLATFORM.md. Backend = last-used, else ask.
After a successful close-ticket run, write a SESSION_TREE in chat (see the session-tree skill).
No ticket
If there is no GitHub issue / Jira key: say so. A PR is allowed. It cannot be "closed" against a ticket. Do not invent an id.
Fail-closed
Any required item red → no PR, unless the user explicitly overrides. Overrides and remaining gaps go in the PR body.
One ticket per PR
Always. Other work leaves the branch first (revert, stash, or a new ticket + later PR).
Checklist
Run in order. Label every acceptance line Observed / Inferred / Assumed. Code inspection is not Observed.
- Identify the ticket. Read its acceptance and out of scope.
- Diff vs ticket.
git diff/git statusmapped to acceptance. Files that do not belong → stop; split a new ticket or revert before PR. - Acceptance. Each box, with evidence (command, URL, what appeared). Unproven = fail.
- Tests. Run the relevant suite. New logic needs at least one test that would fail without the change. No harness → this item is fail (say so); do not silent-pass. User may override.
- Lint / types. Clean, or user-approved exception.
- Dual-pass review (if this workspace has a
reviewskill, use it on the diff; always do both passes):- Confirmation: what is correct and working
- Adversarial: what is missing, what breaks on edges. If the adversarial pass finds nothing, look again.
- UI / integration if the ticket touches UI or a user flow: exercise the path the ticket names, plus other surfaces that read the same state. If a browser is not available, this item is not Observed — state the gap and wait for the gate (user may override, same as fail-closed).
- Commits on the branch reference the ticket (
#norPROJ-123). Fix messages before opening the PR. - Gate. Show the filled checklist (pass/fail per item). Wait for yes, unless the user already said "öppna PR".
- PR against
mainordevelop. Body links the ticket. GitHub:Closes #n(closes on merge, not before). Jira: key in title and body. - CI. If the repo has CI, wait for
gh pr checks. If not, skip. - Ticket comment with what changed + PR URL.
- Jira transition: waiting-on-review (see platform file). Never Done. GitHub issue stays open until merge.
Gate output
Ticket: <id>
Acceptance: pass/fail (each line + Observed/Inferred/Assumed)
Tests: pass/fail (command + result)
Lint: pass/fail
Review: confirmation / adversarial
UI: pass/fail/gap
Scope extra: none / STOP
PR: <url or blocked>
Ticket update: <done or n/a>
Overrides: <none or list>