Skip to content

Task board — SOP-017 and the gaps found on review

Part of task-board. The SOP-017 Task Register plan with its four amendments, and the twelve gaps found on review on 2026-09-13. Text moved verbatim from task-board; references such as "above" and "below" point into that note or its sibling files.

SOP

One new document, four small amendments. The test each time is the house rule: one procedure, one home, cross-reference instead of restating.

New: SOP-017 Task Register

There is no SOP today that says how work gets tracked, and the moment tasks carry assignees, due dates and email notifications, that becomes a procedure people can follow wrongly. It owns:

  • Raising a task — the four doors, and the minimum: a title that says what done looks like, and a department. Why an unassigned task is acceptable and a fake owner is not.
  • Assigning and dating — who may reassign, what a due date means (the date it must be finished, not the date somebody hopes to start), and that moving a due date leaves a trace.
  • Closing — closing note required, what it must say, and that closing is a person's act. Reopening and what it costs.
  • Accepted risk — a finding we have consciously decided to live with, the note it needs, the expiry, and who may grant one.
  • Reviewing an AI proposal — the per-item review, that Edit is expected rather than exceptional, and the sentence that matters: the reviewer owns what they accept.
  • Notification settings — the default (assigned to me), and that turning on all activity is a personal choice, not a requirement.

Owner: Administration. Audit checks it should carry from day one, so it is machine-checkable the way SOP-000 demands: SOP-017.overdue-unassigned (an overdue task with nobody on it), SOP-017.closed-without-note, SOP-017.accepted-risk-expired, SOP-017.ai-applied-unreviewed (an AI change applied without a per-item decision recorded — should be impossible, so if it ever fires, something is broken).

Amended

  • SOP-009 Personnel Onboarding — joining now also creates a Kanboard account by reconcile, sets the person's email and their notification default; leaving removes it and reassigns their open tasks. Cross-references SOP-017 rather than describing tasks.
  • SOP-010 Assistant Use — gains the AI task handoff: what may be handed over, that it works in the sandbox and proposes rather than applies, and that it never closes its own task. The review of a proposal stays in SOP-017; this document only says what may be handed over.
  • SOP-015 Quarterly Review — the review already reads open actions; it now reads them from the register and turns meeting decisions into tasks there. Points at SOP-017 for how, and drops any of its own wording about tracking actions.
  • SOP-016 Quality Objectives — its objectives finally get real numbers: findings open versus closed, median days to close, overdue count. Names them as measures and points at the Grafana panel; the definitions live with the panel, not in two places.

Not amended, deliberately

SOP-000 Document Control needs nothing — SOP-017 is an ordinary document under the existing rules, numbered in sequence, no new class of thing. And no per-department SOP gains a "tasks" section; if Purchasing needs to know how to raise one, it reads SOP-017.

Gaps found on review (2026-09-13)

Read back against the house rules and the way this server actually fails. Twelve things the plan did not say, roughly in the order they would hurt.

  1. Kanboard is not backed up. A new service is a new thing to lose. Its sqlite file and its file attachments must join the age-encrypted R2 run, and the restore has to be rehearsed once — an untested backup is a rumour. Until that rehearsal passes, the vault mirror is the only real copy.
  2. Nothing watches the notifier. A notification system that silently stops is worse than none, because people stop checking the board and never learn why. Kanboard's cronjob and the morning digest each need a canary: if no digest sent today, alert. Uptime Kuma gets a monitor for the service itself in the same pass.
  3. The gate work is under-specified, and this is where we have been bitten. A new host means a DNS record, a tunnel route, a Cloudflare Access app built by onboard access-app from the registry — never cloned from a saved policy — and a new tasks token in every department's access: list in departments.yml. Plus a card in Notes/map/ for the container. If it is not in the registry and the map, it drifts.
  4. An unassigned task belongs to nobody, so nobody is nagged. I allowed unassigned tasks on purpose, then gave the digest no one to tell. Fix: each department names a default owner in departments.yml, and unassigned overdue work goes to them. Without this, unassigned is where tasks go to die.
  5. No sandbox copy of Kanboard. The house rule is try it on the sandbox first. Changing notification rules, permissions or a plugin against the live board breaks it. A second container on the sandbox side, reset from a snapshot, same as the ERP.
  6. Nobody decided who can see whose tasks. Default: a department sees its own projects, Administration sees all. State it now, because at two people everything-visible feels fine and it is the wrong habit to grow into. Separately: no personnel or pay matters in Kanboard at all — it is not that kind of system and never becomes one.
  7. Recurring work is not mentioned and Kanboard does it for free. Backup restore checks, SnapRAID scrub review, quarterly review prep, gate drift review. These are exactly the jobs that get forgotten, and they are a built-in feature we would otherwise hand-roll.
  8. Tasks do not link back to the thing they are about. A finding about a part, a PO or a build should deep-link into InvenTree, and an SOP finding to the SOP section. Small work, and the difference between a board people use and one they close.
  9. Feedback and RMAs do not reach the register. SOP-013 Feedback and SOP-014 Returns and Repairs both end in "and then somebody should do something", which is what this register is for. Same dedupe hook as the audit. It closes the loop Angel asked for when he wanted feedback captured.
  10. No trial period and no kill criterion. Adopting a service deserves an honest exit: six weeks, and if the board is not being opened without being asked, we go back to the list on the home page. The vault mirror and the read-only sqlite are what make that exit cheap — keep both until the six weeks are up.
  11. Kanboard's own UI on a phone is mediocre. The home board is phone-first, but the "full board" tile lands a phone on a cramped page. Say so on the tile rather than discovering it in the shop.
  12. Mail plumbing is assumed. Resend's free tier is finite, and mail from the shop address must be covered by the existing SPF and DKIM or the notifications land in spam — which looks exactly like the system not working.

Items 1, 2 and 3 are not phase-6 polish. They belong in phase 1, with the service itself.