A job owner has no way to nudge the people holding its open sub-jobs #217

Open
opened 2026-08-24 19:43:50 +00:00 by nalum · 0 comments
Owner

The job card's waiting state needs an action the server cannot perform yet.

Where it comes from

build-review-01.md and spec-rail-colour.md in the jobs handoff both specify
the waiting card's action row as an outline Nudge everyone plus ⋯. §4c's
card is the one a job owner sees when their own sub-jobs are ticked and other
people still hold open ones — the owner has nothing left to do but ask.

Every other card state has a primary action. Waiting is the only one whose
action does not exist, so today it either ships with a dead row or with no row,
and neither is what the design asks for.

What is missing

There is no nudge anywhere in the server. internal/notify has JobDue,
JobOverdue, JobAssigned, JobCompleted and the event reminders — all of
them board-initiated, rung by the reminder ticker with no actor. Nothing
lets one household member deliberately prompt another, on any surface.

So this needs, at minimum:

  • an RPC on ItemService — something like NudgeSubTasks(item_uid) — that
    finds the job's open sub-jobs and notifies whoever holds them;
  • a PermissionMatrix entry, or the completeness test fails the build;
  • a resource guard: who may nudge? The job's owner is the obvious answer, since
    §4c is the owner's state. Decide whether a manager may nudge someone else's
    job, and whether a child may nudge at all;
  • a new NotificationKind value — added, never renumbered (ADR-0035) — plus its
    copy in internal/notify/locales/*.json, six locales;
  • a rate limit or an idempotency rule. A button that pings the household every
    time it is pressed is a button that gets pressed twice. The daily-claim shape
    the reminder ticker already uses (due_reminder_sent) is the nearest
    precedent — one nudge per job per day is probably right.

Decisions worth taking with it

  • Who hears it. Everyone holding an open sub-job, or only the one the card
    names? The design's Nudge everyone implies all of them.
  • Does it say who asked? A nudge from a named person reads differently from
    a board reminder, and the notify seam currently distinguishes the two.
  • Does it appear anywhere but the card? The sheet's footer has a
    Waiting on Ali state with no action; it is the natural second home.

Blocked behind it

The waiting card's action row. Until this exists, that card carries ⋯ alone —
which is honest, and better than a button that cannot do what it says.

The job card's waiting state needs an action the server cannot perform yet. ## Where it comes from `build-review-01.md` and `spec-rail-colour.md` in the jobs handoff both specify the waiting card's action row as an **outline `Nudge everyone` plus `⋯`**. §4c's card is the one a job owner sees when their own sub-jobs are ticked and other people still hold open ones — the owner has nothing left to do but ask. Every other card state has a primary action. Waiting is the only one whose action does not exist, so today it either ships with a dead row or with no row, and neither is what the design asks for. ## What is missing There is no nudge anywhere in the server. `internal/notify` has `JobDue`, `JobOverdue`, `JobAssigned`, `JobCompleted` and the event reminders — all of them **board-initiated**, rung by the reminder ticker with no actor. Nothing lets one household member deliberately prompt another, on any surface. So this needs, at minimum: - an RPC on `ItemService` — something like `NudgeSubTasks(item_uid)` — that finds the job's open sub-jobs and notifies whoever holds them; - a `PermissionMatrix` entry, or the completeness test fails the build; - a resource guard: who may nudge? The job's owner is the obvious answer, since §4c is the owner's state. Decide whether a manager may nudge someone else's job, and whether a child may nudge at all; - a new `NotificationKind` value — added, never renumbered (ADR-0035) — plus its copy in `internal/notify/locales/*.json`, six locales; - a rate limit or an idempotency rule. A button that pings the household every time it is pressed is a button that gets pressed twice. The daily-claim shape the reminder ticker already uses (`due_reminder_sent`) is the nearest precedent — one nudge per job per day is probably right. ## Decisions worth taking with it - **Who hears it.** Everyone holding an open sub-job, or only the one the card names? The design's `Nudge everyone` implies all of them. - **Does it say who asked?** A nudge from a named person reads differently from a board reminder, and the notify seam currently distinguishes the two. - **Does it appear anywhere but the card?** The sheet's footer has a `Waiting on Ali` state with no action; it is the natural second home. ## Blocked behind it The waiting card's action row. Until this exists, that card carries `⋯` alone — which is honest, and better than a button that cannot do what it says.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eagraiclainne/app#217
No description provided.