aki
The board

Rules

Every reason a task is on the board is a rule. Each rule can be turned off, moved to the other side, or reordered.

For each merge request, pull request and ticket you are involved in, aki looks at who spoke last in every thread, the state of reviews and approvals, the pipeline, the branch, and the ticket's status. Each fact that asks something of someone becomes a reason. A task is listed once, under its most pressing reason; the others show in the detail pane.

To do

The next step is yours.

LabelRulePriorityWhen
Reviewreview_requested10Your review is requested and you have not started.
Re-reviewre_review20You reviewed, and since then something moved (see Re-reviews).
Replyreply_needed30Someone waits for your answer in a thread, or mentioned you.
Mentionedticket_mentioned35Someone mentioned you on a ticket and you have not commented since.
Resolve threadsthread_to_resolve40A thread you opened was answered: check it and close it.
Fix checkschecks_failed50The pipeline of your change failed.
Fix conflictsconflicts55Your change conflicts with its target branch.
Rebaserebase57Your change is behind its target branch. Not shown when it already conflicts.
Mergeready_to_merge60Your change is approved, green, with no open thread, and you can merge it.
Assignedassigned65A change you neither wrote nor review is assigned to you.
Ask a reviewno_reviewer70Your change is ready and nobody was asked to review it.
In progressticket_in_progress75A ticket of yours is in progress.
To doticket_todo80A ticket of yours is not started.
Nudgenudge85A waiting item has not moved for a number of days (off by default, see Nudge).
Finish draftdraft_to_finish90Your change is still a draft.

Waiting

You cannot move it further: someone or something else has the next step.

LabelRulePriorityWhen
Awaiting reviewawaiting_review10Your change waits for reviewers. The detail names who has not looked.
Awaiting authorawaiting_author20You reviewed; nothing new since.
Awaiting replyawaiting_reply30You answered; the other side has to close the thread.
Checks runningchecks_running40The pipeline of your change is running.
Blockedticket_blocked50A ticket of yours is blocked by another, or in a waiting status.
Draftdraft_by_other60A change you review is still a draft.

One reason to do is enough to put the whole task in To do.

Change a rule

Any rule takes three settings. A lower priority comes first.

~/.config/aki/config.toml
[rules.draft_to_finish]
enabled = false

[rules.checks_running]
bucket = "todo"
priority = 45

aki rules prints every rule as it applies. An unknown rule name is an error, so a typo never silently disables a rule.

Threads

Teams differ on who closes a review thread once it is answered.

[threads]
who_resolves = "reviewer"
ignore_bots = true
ValueEffect
"reviewer"Whoever opened the thread checks the answer and resolves it. An answered thread you opened is Resolve threads; one you answered is Awaiting reply.
"author"The author resolves threads once addressed.
"anyone"No convention: only who spoke last counts.

With ignore_bots, a bot's comment never gives anyone the next step.

Re-reviews

After your first review, any of these triggers makes a re-review due:

[re_review]
triggers = ["author_replied", "new_commits", "re_requested", "approval_reset"]
after_approval = false
TriggerFires when
author_repliedSomeone answered in a thread you take part in.
new_commitsCommits were pushed after your last review activity.
re_requestedYour review was requested again.
approval_resetYour approval was reset or dismissed.
all_threads_answeredEvery thread you opened has been answered or resolved. Not in the default list.

after_approval = true lets a re-review be due on a change you already approved.

Drafts

[drafts]
mine = "todo"
others = "wait"
SettingValueEffect
mine"todo"Your drafts are listed with everything else that waits on you.
"apart"They stay on the board but leave To do, the counts and the notifications. They show only in panes filtered on is:draft.
"ignore"They are left off the board until they are ready.
others"wait"A draft you review is listed as waiting on its author.
"review"It is treated like any other review.
"ignore"It is left off the board.

To give your drafts a pane of their own, set mine = "apart" and add a pane filtered on is:draft role:author. See Spaces.

Nudge

[nudge]
after_days = 7

A waiting item that nobody touched for that many days becomes Nudge in To do. 0, the default, turns it off.

Ticket statuses

[tickets]
waiting_statuses = ["blocked", "on hold", "in review", "waiting"]

A ticket in one of these statuses (compared without case) is Blocked, in Waiting. So is a ticket with an "is blocked by" link.