9"My Tasks" round 2 — reframing the page instead of re-sorting it
9aAttention inbox — not my tasks, but what reacted since I last looked: failures, replies, state changes; triage and dismiss
Needs my attention 3 new since Tue 17:00
weekly-infra-eu #8839 failed — on “Verify weekly pipelines ran” GitLab webhook · Mon 10:02 · rerun #8843 still running
Miriam noted on “Renew TLS cert” — “security approved, deploying Thu” you're watching this task · 1 h ago
Due today: Check luau@ mailbox recurring · Mon / Wed / Fri
+ Only shows deltas — empty when nothing happened, which is the honest signal. − Needs read/unread state per user.
9bHandover draft — the page IS the handover I'm writing all week: every open item with its last note, gaps called out
My handover — as of now goes to Miriam, Mon 20 Jul
Verify weekly pipelines ran · OVERDUE “infra-eu failed on terraform plan, rerunning” · Wed 14:02
Rotate expiring registry credentials No note yet — Miriam would inherit this cold. Add a line…
Investigate flaky nightly build on runner-04 “still fails on integration stage, suspecting disk I/O” · Wed 13:00 stays with me after shift end — shown to Miriam as context only
+ Makes note-writing self-serving, not bureaucracy; the "cold item" nudge is the killer feature. − Only meaningful while on call.
9cNo page — "mine" is a filter on the Overview; the tab becomes a toggle and the URL stays shareable
…/overview?who=me
Same board, filtered: others' cards fade to ghosts instead of disappearing — team context stays visible.
Verify weekly pipelines ran
Renew TLS cert (Miriam)
Investigate flaky nightly
+ One page to maintain, one mental model; matches "small internal tool". − Past-shift ad-hoc debt needs a home (a "…and 1 older task" pill under the board).

Honest steer: for a team this size, 9c (kill it) or 9b (handover draft) — 9b is the only version that does work the Overview can't.

8"My Tasks" page — what does it actually show? Three interpretations
8aInventory — everything I own, grouped by kind (current prototype, refined with counts + resolved tail)
RECURRING — MY SHIFT · 3 OPEN
Verify weekly pipelines ran OVERDUE — due Mon
Check luau@ mailbox due today
Review Betterstack incident summary anytime this week
MY AD-HOC · 2 OPEN
Investigate flaky nightly build on runner-04 in progress · note 2 h ago
Rotate expiring registry credentials open · from this shift
Resolved recently: Update on-call contact sheet, Fix broken S3 lifecycle rule show
+ Simple, predictable. − Doesn't say what to do next.
8bWork queue — one urgency-sorted list answering "what should I do right now?"; kind is just an icon
Wed 15 Jul 5 open · 1 overdue · shift ends in 4 d 18 h
NOW Verify weekly pipelines ran 2 d overdue · 1 pipeline red
TODAY Check luau@ mailbox Mon / Wed / Fri
TODAY Investigate flaky nightly build on runner-04 you noted “rerunning” 2 h ago
WEEK Review Betterstack incident summary 4½ d slack
WEEK Rotate expiring registry credentials cert expires 24 Jul
+ Opinionated, action-first; NOW/TODAY/WEEK buckets computed from due + slack. − Hides the recurring/ad-hoc distinction.
8cShift cockpit — my week at a glance: mini progress per day + carried-over debt called out separately
MON 2 / 2 ✓
TUE 1 skipped
WED · NOW 2 open + 1 overdue
THU Deniz covers
FRI 1 task
OPEN NOW
Verify weekly pipelines ran 2 d overdue
Check luau@ mailbox today
CARRIED OVER — OLDER THAN THIS SHIFT
Fix broken S3 lifecycle rule ad-hoc · from week 27 · idle 9 d
+ Shows shift shape and aging debt (idle ad-hocs get loud). − Most layout of the three; overlaps the dashboard.

Recommendation: 8b's queue as the core, with 8c's carried-over callout appended — old ad-hoc debt is the thing "My Tasks" can show that the dashboard can't.

7Innovation round — ideas layered on top of the 6a board
7aUrgency decay — "anytime" tasks heat up as the shift runs out; no new state, purely computed
THIS WEEK lane, on Wednesday:
Review Betterstack incident summary
4½ days left
same task on Sunday evening:
Review Betterstack incident summary
shift ends in 13 h
The lane self-sorts by remaining slack. Un-done anytime tasks go amber near shift end and land in the last daily nudge — nothing silently rolls over.
7bHandover digest — auto-compiled from activity at shift end; the PRD's "notes are the handover" made tangible
Handover — Jonas → Miriam Mon 20 Jul 09:00
weekly-infra-eu still red — failed twice on terraform plan, rerun #8843 pending. Watch this first.
Flaky runner-04 stays with Jonas (ad-hoc), no action needed from you.
5 of 6 recurring done, 1 skipped ("runners rebuilt"). luau@ has an open DSGVO thread — reply forwarded to legal.
Compiled from open items + last notes + skips; outgoing person edits, one click posts to the channel. Also shown to the incoming person as their shift-start screen.
7cNudge transparency — the dashboard shows exactly what tomorrow's Teams post will say
Tomorrow's nudge · 09:00
@Jonas Weber — on-call Thu 16 Jul:
🔴 Verify weekly pipelines ran (3 days overdue)
⬜ Review Betterstack incident summary (anytime, 4 d left)
No surprises: the exact message the cron will post, rendered from live state. Fix the overdue task tonight and tomorrow's ping shrinks. Emoji here belongs to Teams, not the app UI.
7dVerification matrix — verify-tasks know their expected pipelines; webhooks tick them off, done auto-suggests
Verify weekly pipelines ran
✓ mesh✓ core ✓ docs✓ sdk ✓ api✗ infra-eu ◌ infra-us · running
5 / 7 verified — waiting on infra-eu rerun, infra-us
Template lists expected pipeline slugs; webhook entries (4b) fill the matrix. When all pass, the card offers one-click "All verified — mark done". This is the v2 auto-verification, but the human keeps the last word.

All four compose with the 6a board: 7a is pure display logic, 7b/7c reuse existing data, 7d needs one template field (expected pipelines).

6Where do non-day-specific weekly tasks live? Three placements (most templates anchor to "sometime this week")
6a"This week" lane — first column of the board; day columns keep only truly anchored tasks
THIS WEEKanytime before Mon 20
Review Betterstack incident summary any day · ~10 min
Clean up CI runner disk space any day
Update on-call contact sheet ✓ Jonas · Tue
MON13
Verify weekly pipelines ran OVERDUE
WED15
Check luau@ mailbox Mon / Wed / Fri
THU16
FRI17
Tag terraform repos
6b"Anytime this week" strip above the board — compact checkable row, board shrinks to anchored-only
ANYTIME THIS WEEK
1 of 3 · do before Mon 20
MON
Verify weekly pipelines ran
TUE
WED
Check luau@ mailbox
THU
FRI
Tag terraform repos
6cNo board — one list in urgency order: Overdue → Today → Anytime → Later; day anchors become labels
OVERDUE
Verify weekly pipelines ran was due Mon
TODAY — WED 15
Check luau@ mailbox Mon / Wed / Fri
ANYTIME THIS WEEK · before Mon 20
Review Betterstack incident summary ~10 min
Clean up CI runner disk space
LATER
Tag terraform repos Fri 17
Update on-call contact sheet Tue · Jonas

Template anchor becomes optional: anchor: friday | anytime. 6a keeps the board metaphor, 6b keeps days lightweight, 6c admits most tasks aren't day-bound and sorts purely by urgency.

5Stress test — heavy week: 7 pipeline links on verify, 2 on terraform tags, notes + links on mailbox
5aBoard cards stay summarised — chips collapse to counts by status; full stream lives in task detail
MON13 Jul
Verify weekly pipelines ran OVERDUE — 2 DAYS
1 failed 1 running 5 passed
3 notes · last: Jonas “infra-eu rerunning”
Check luau@ mailbox ✓ Jonas · Mon 10:12 4 notes · 2 links · last: “DSGVO reply forwarded”
FRI17 Jul
Tag terraform repos schedules verify → Mon 20
Runbook tag-repos #8836
DISPLAY RULE ≤ 3 links: show each chip (Fri card). > 3 links: group by status into count chips — failed first, always expanded in red; passed collapses hardest (Mon card). Notes: never listed on the board — count + latest snippet, one line, truncated. Click any card → task detail with the full activity stream (5b).
5bTask detail absorbs the volume — link summary bar on top, chronological activity stream below

Verify weekly pipelines ran

Overdue
due Mon 13 Jul · assigned Jonas Weber · verifies “Tag terraform repos” (Fri 10 Jul) · Runbook
weekly-infra-eu #8839 · FAILED weekly-infra-eu #8843 · running ✓ mesh #8832 ✓ core #8833 ✓ docs #8834 +2 more passed
ACTIVITY
Mon 09:04
Jonas: starting the weekly verify, tag pipelines kicked off Fri evening
Mon 09:31
GitLab webhook · ✓ mesh #8832, core #8833, docs #8834, sdk #8835, api #8837 passed
Mon 10:02
weekly-infra-eu #8839 · FAILED via GitLab webhook
Wed 14:02
Jonas: infra-eu failed on the terraform plan stage, rerunning
weekly-infra-eu #8843 · running

Rule of thumb: the board shows state (counts, latest snippet), the detail shows story (full stream with timestamps). Webhook batches within a few minutes collapse to one passed-line.

4Notes carry links — one activity model for humans and machines (API/webhook)
4aNote composer on a recurring card — paste a URL into the note, it becomes a chip attached to that note
Verify weekly pipelines ran OVERDUE — 2 DAYS · due Mon 13 Jul
Jonas: mesh + core ran clean, infra-eu still queued
weekly-mesh #8832 · passed weekly-core #8833 · passed
weekly-infra-eu #8839 · FAILED via GitLab webhook
weekly-infra-eu #8843 URL detected → chip
Same composer everywhere (board card, task detail, ad-hoc). Pasted URLs are lifted out of the text into typed chips (3b) attached to that note; the text keeps a plain reference.
4bModel — notes and links unify into one activity entry; humans and webhooks write the same shape
MODEL — ACTIVITY ENTRY (was: note)
activity:
  task:   task-instance id
  ts:     2026-07-15T14:02Z
  author: user "jweber" | token "gitlab-webhook"
  text:   "infra-eu failed on terraform plan, rerunning"
  links:  [ {type: pipeline, url: …/8843,
             label: "weekly-infra-eu #8843",
             meta: {status: running}} ]
Links always belong to an activity entry — a bare "attach link" is just an entry with empty text. The task's chip row is the union of its entries' links (latest status wins). Timestamp stored on every entry, shown only in task detail / history, not on the dashboard.
API — SAME SHAPE, TOKEN AUTH
POST /api/tasks/{id}/activity
POST /api/tasks/by-template/verify-pipelines/current/activity
  ↑ pipelines don't know instance ids — address the
    current week's instance by template slug
A CI job curls its own pipeline URL onto this week's verify task. Machine entries render as one compact line — gear icon + status chip; meta.status = failed tints the whole entry red (see 4a) instead of relying on the label text. This is the v2 auto-verification hook: a webhook entry with meta.status = passed for every expected pipeline could auto-complete the task.

Consolidates 3b: "link" is no longer a separate action — Note and Link merge into one composer; the hover bar becomes Done / Skip / Note.

3Board refined — skip via hover actions on the card, plus a typed-link model for pipelines / CEDM / Grafana
3aBoard with hover action bar per card: Done / Skip / Note / Link — Wed cards show the states
JW
On call
Jonas Weber
via Betterstack · override
started Mon 13 Jul 09:00ends Mon 20 Jul 09:00
2 d 3 h on call · 4 d 18 h remaining
Next on call
MS
Miriam Scholz from Mon 20 Jul 09:00
MON13 Jul
Verify weekly pipelines ran OVERDUE — 2 DAYS
weekly-tag #8836
Check luau@ mailbox ✓ Jonas · “2 mails, both spam”
TUE14 Jul
Clean up CI runner disk space skipped · “runners rebuilt last week”
WED · TODAY15 Jul
Review Betterstack incident summary Runbook
HOVER Check luau@ mailbox Jonas: expecting the DSGVO reply today
SKIP CLICKED Rotate log retention config
Skip — reason required
THU16 Jul
Nothing scheduled
FRI17 Jul
Tag terraform repos schedules verify → Mon 20

Ad-hoc — In Flight Across the Team

links are typed chips — see 3b
Investigate flaky nightly build on runner-04 Jonas Weber
Jonas: still fails on integration stage, suspecting disk I/O
nightly #8841 · failed Grafana · runner-04 I/O
Rotate expiring registry credentials Jonas Weber
CEDM-10231 · open
Renew TLS cert for staging cluster Miriam Scholz
Miriam: CSR submitted, waiting on security approval
CEDM-10198 · in work
Document Betterstack escalation policy change Deniz Kaya
open · 6 d ago · no links yet
3bTyped links — data model + attach flow (paste URL, type auto-detected)
MODEL — TASK LINK
link:
  type:  pipeline | cedm | grafana | runbook | url
  url:   https://gitlab…/pipelines/8841
  label: "nightly #8841"          # auto-derived, editable
  meta:  { status: failed }       # v2: fetched live (GitLab hook)
Type is auto-detected from the URL host/path (GitLab → pipeline, CEDM → ticket id, Grafana → dashboard title). Stored per task instance; rendered everywhere as the same chip. The reserved meta field is where v2 pipeline auto-verification plugs in.
CHIP ANATOMY
nightly #8841 · failed CEDM-10231 · open Grafana · runner-04 I/O Runbook
Icon colour = link type (pipeline blue, CEDM teal, Grafana orange, runbook grey). Status suffix only where meta exists.
ATTACH FLOW — “LINK” ACTION ON A CARD
Attach link
Detected: GitLab pipeline → label “nightly #8841”
One field, paste anything. Unrecognised hosts become a plain url chip with the page title as label.

Skip lives in the card's hover action bar (see the Wed column in 3a) — reason required, shown on the skipped card afterwards. Links are typed chips per 3b.

21c's simplicity + 1b's header (progress = time on call) + inline notes on tasks — list vs board, side by side
2aList — day-grouped checklist, latest note inline, one-click “Add note” on every row
JW
On call
Jonas Weber
via Betterstack · override
started Mon 13 Jul 09:00ends Mon 20 Jul 09:00
2 d 3 h on call · 4 d 18 h remaining
Next on call
MS
Miriam Scholz from Mon 20 Jul 09:00

Recurring — Week 29

3 of 6 done · 1 overdue
OVERDUE
Verify weekly pipelines ran due Mon · verifies “Tag terraform repos”
TODAY — WED 15 JUL
Review Betterstack incident summary Runbook
Check luau@ mailbox Runbook
Jonas: Mon run was clean, 2 spam mails deleted — expecting the DSGVO reply today
FRI 17 JUL
Tag terraform repos on done schedules “Verify weekly pipelines ran” → Mon 20
DONE / SKIPPED
Check luau@ mailbox Jonas · “2 mails, both spam”
Clean up CI runner disk space skipped · “runners rebuilt last week”

Ad-hoc — In Flight

4 open, team-wide
Investigate flaky nightly build on runner-04 Jonas Weber · in progress · Pipeline #8841
Jonas: reran with clean cache — still fails on the integration stage, suspecting runner disk I/O
Rotate expiring registry credentials Jonas Weber · open · CEDM-10231
Renew TLS cert for staging cluster Miriam Scholz · in progress · CEDM-10198
Miriam: CSR submitted, waiting on security team approval
Document Betterstack escalation policy change Deniz Kaya · open · 6 d ago
2bWeek board — same header, day columns; note shown on the card, “Add note” on hover intent
JW
On call
Jonas Weber
via Betterstack · override
started Mon 13 Jul 09:00ends Mon 20 Jul 09:00
2 d 3 h on call · 4 d 18 h remaining
Next on call
MS
Miriam Scholz from Mon 20 Jul 09:00
MON13 Jul
Verify weekly pipelines ran OVERDUE — 2 DAYS
Check luau@ mailbox ✓ Jonas · “2 mails, both spam”
TUE14 Jul
Clean up CI runner disk space skipped · “runners rebuilt last week”
WED · TODAY15 Jul
Jonas: expecting the DSGVO reply today
THU16 Jul
Nothing scheduled
FRI17 Jul
Tag terraform repos schedules verify → Mon 20

Ad-hoc — In Flight Across the Team

owned until resolved, independent of shifts
Investigate flaky nightly build on runner-04 Jonas Weber
Jonas: still fails on integration stage, suspecting runner disk I/O · Pipeline #8841
Rotate expiring registry credentials Jonas Weber
open · CEDM-10231
Renew TLS cert for staging cluster Miriam Scholz
Miriam: CSR submitted, waiting on security approval · CEDM-10198
Document Betterstack escalation policy change Deniz Kaya
open · 6 d ago

List (2a) scales better when a day has many tasks and keeps notes readable; board (2b) gives instant "what's left this week" at a glance but gets tight with long notes.

1On-call shift task tracker — Overview dashboard, 3 layout directions (CONTACT Elements language, standalone page)
1aClassic Elements — page header + two dense table blocks, most by-the-book
JW
On call now
Jonas Weber
Shift ends
Mon 20 Jul, 09:00
Source
Betterstack override…
Next on call
Miriam Scholz
Week
13 – 20 Jul 2026
1 overdue 3 of 6 recurring done

This Week's Recurring Checklist

Week 29 · assigned to whoever is on call when due
TaskDueStatusDone byNote
Check luau@ mailbox Mon 13 Jul Done Jonas Weber · Mon 10:12 2 mails, both spam
Verify weekly pipelines ran · verifies: Tag terraform repos (Fri 10 Jul) Mon 13 Jul Overdue
Review Betterstack incident summary Wed 15 Jul Due today
Check luau@ mailbox Wed 15 Jul Due today
Tag terraform repos · on done schedules: Verify weekly pipelines ran (Mon 20 Jul) Fri 17 Jul Open
Clean up CI runner disk space Tue 14 Jul Skipped Jonas Weber · Tue 16:40 Runners rebuilt last week, disks fresh

Open Ad-hoc Tasks — Whole Team

grouped by owner · stay with owner across shift changes
TaskStatusOpenedLinksLast note
JONAS WEBER (ON CALL) — 2
Investigate flaky nightly build on runner-04 In progress Tue 14 Jul Pipeline #8841 2 h ago
Rotate expiring registry credentials Open Wed 15 Jul CEDM-10231
MIRIAM SCHOLZ — 1
Renew TLS cert for staging cluster In progress Thu 9 Jul CEDM-10198 yesterday
DENIZ KAYA — 1
Document Betterstack escalation policy change Open Mon 6 Jul 6 d ago
1bRoomy header band + split body — checklist grouped by day left, team ad-hoc cards right
JW
On call this week
Jonas Weber
via Betterstack · override
Mon 13 Jul 09:00Wed 15 Jul — day 3 of 7Mon 20 Jul 09:00
1 overdue 3 of 6 recurring done · 2 own ad-hoc open
Next on call
MS
Miriam Scholz from Mon 20 Jul 09:00

Recurring Checklist — Week 29

open first, done sinks
OVERDUE
Verify weekly pipelines ran due Mon 13 Jul · verifies “Tag terraform repos” (Fri 10 Jul)
TODAY — WED 15 JUL
Review Betterstack incident summary Runbook · ~10 min
Check luau@ mailbox Runbook · also ran Mon
LATER THIS WEEK
Tag terraform repos due Fri 17 Jul · on done schedules “Verify weekly pipelines ran” for Mon 20 Jul
Fri
DONE / SKIPPED
Check luau@ mailbox Mon 10:12 · Jonas · “2 mails, both spam”
Clean up CI runner disk space skipped Tue · “runners rebuilt last week”

Ad-hoc — In Flight

4 open, team-wide
JONAS WEBER · ON CALL
Investigate flaky nightly build on runner-04
In progress · opened Tue · Pipeline #8841 · last note 2 h ago
Rotate expiring registry credentials
Open · opened today · CEDM-10231
MIRIAM SCHOLZ
Renew TLS cert for staging cluster
In progress · from her last shift · CEDM-10198 · note yesterday
DENIZ KAYA
Document Betterstack escalation policy change
Open · opened Mon 6 Jul · last note 6 d ago
1cWeek board — recurring tasks laid out under their due day, ad-hoc as a compact strip below
Week 29 · 13 – 20 Jul
Jonas Weber is on call until Mon 20 Jul 09:00, then Miriam Scholz Betterstack · override 1 overdue 3 / 6 done
MON13 Jul
Verify weekly pipelines ran OVERDUE — 2 DAYS
Check luau@ mailbox Jonas · Mon 10:12
TUE14 Jul
Clean up CI runner disk space skipped · “runners rebuilt last week”
WED · TODAY15 Jul
Review Betterstack incident summary
Check luau@ mailbox
THU16 Jul
Nothing scheduled
FRI17 Jul
Tag terraform repos schedules verify → Mon 20

Ad-hoc — In Flight Across the Team

owned until resolved, independent of shifts
Investigate flaky nightly build on runner-04 Jonas Weber · in progress · Pipeline #8841
Rotate expiring registry credentials Jonas Weber · open · CEDM-10231
Renew TLS cert for staging cluster Miriam Scholz · in progress · CEDM-10198
Document Betterstack escalation policy change Deniz Kaya · open · opened 6 d ago

Try next: "build the full prototype from 1b" · "merge 1c's week board into 1a's tables" · "show the task detail page"