diff --git a/docs/prototypes/unified-task-view/README.md b/docs/prototypes/unified-task-view/README.md
new file mode 100644
index 0000000..0daff5f
--- /dev/null
+++ b/docs/prototypes/unified-task-view/README.md
@@ -0,0 +1,119 @@
+# Unified task view — research for a product decision
+
+Recommend **A: a task workspace with a selected-task detail panel**, an explicit two-task capacity summary, and a “Needs you” filter. On mobile, open task details as a separate view with Back preserving the list filter. Keep B (status board) as an optional planning view and borrow C’s attention grouping rather than making an inbox the only home for work.
+
+This is a separate research/prototype from [coding-worker monitoring PR #4](https://github.com/srctl/roost/pull/4). It adds a task-level navigation layer above that monitor; it does not repeat the terminal/output prototype. Everything here is fictional, local presentation data. No production route, backend, synchronization service, worker control, Notion write, GitHub action, host configuration or dependency manifest changed.
+
+## Compare the options
+
+Each `.excalidraw` contains native editable rectangles and text, not embedded screenshots. Download and open it directly in Excalidraw. No custom editor or generation tooling is required. SVGs and PNGs are actual exports of those files. Mobile files show list and detail screens side by side; each screen is 390 px wide. These design exports are **wireframes, not before/after screenshot evidence**.
+
+| Option | Desktop: editable / viewable | Mobile: editable / viewable |
+| --- | --- | --- |
+| **A · Task workspace — recommended** | [Excalidraw](designs/a-desktop.excalidraw) · [SVG](designs/a-desktop.svg) · [PNG](designs/a-desktop.png) | [Excalidraw](designs/a-mobile.excalidraw) · [SVG](designs/a-mobile.svg) · [PNG](designs/a-mobile.png) |
+| B · Status board | [Excalidraw](designs/b-desktop.excalidraw) · [SVG](designs/b-desktop.svg) · [PNG](designs/b-desktop.png) | [Excalidraw](designs/b-mobile.excalidraw) · [SVG](designs/b-mobile.svg) · [PNG](designs/b-mobile.png) |
+| C · Attention inbox | [Excalidraw](designs/c-desktop.excalidraw) · [SVG](designs/c-desktop.svg) · [PNG](designs/c-desktop.png) | [Excalidraw](designs/c-mobile.excalidraw) · [SVG](designs/c-mobile.svg) · [PNG](designs/c-mobile.png) |
+
+| A · Task workspace | B · Status board | C · Attention inbox |
+| --- | --- | --- |
+|  |  |  |
+|  |  |  |
+
+| Decision dimension | A · Task workspace | B · Status board | C · Attention inbox |
+| --- | --- | --- | --- |
+| What is progressing? | All tasks plus selected detail; worker state and summary directly visible | Notion lifecycle scan is strong; execution is a second dimension on cards | Ongoing work is secondary to attention items |
+| Can another task start? | Persistent capacity summary; slot label per task | Same summary needed; column count is not capacity | Same summary needed; inbox count is not capacity |
+| What needs me? | “Needs you” filter and explicit owner/next action | Approval and review are in different columns | Fastest triage; one item per task, multiple reasons in detail |
+| Navigation | Proposed Tasks entry under the project/coding agent; worker link opens PR #4 monitor | Optional view toggle inside Tasks; select card for detail | Optional attention view/filter; always retain All tasks |
+| Mobile | List → detail → Back; avoids a narrow split pane | Status selector in sketch avoids horizontal lanes | Needs you → task → original action surface |
+| Main cost | Dense cards; decide which metadata deserves the first line | Sparse columns, cross-column attention scanning; dragging invites unintended task writes | Depends on trustworthy ownership and deduplication; quiet work can be overlooked |
+
+A uses attention-first grouping, then priority within a group. This intentionally lets a P2 human review appear above a P1 task that is already running. It does **not** change Notion priority or define pickup order. The sketch and prototype vary card density and ordering to expose this decision, rather than claim pixel-final design.
+
+## Current workflow and evidence
+
+Reviewed source at [`3f7bae2`](https://github.com/srctl/roost/tree/3f7bae2), the complete PR #4 body, and its allowed local research artifacts on 2026-09-08. No private session/memory files or live Roost storage were read. The current assignment supplies the two-task limit, readiness/priority rules, and human-only Done boundary; these are project workflow assumptions, not discovered global product guarantees.
+
+- [Coding workflow](../../coding-agents.md): the coordinator reads an assignment, prepares an isolated workspace, starts a Herdr worker, reviews results and reports back. Notion tooling is separate; configuring a source does not enable automatic pickup or synchronization.
+- [Existing Jobs route](../../../src/routes/agents.$agentId_.jobs.tsx): job rows expose assignment, summary, machine, session, output and optional source link. Task priority, Notion property snapshots, explicit human ownership, PR state and checks are not structured here. Before screenshots render this actual content with inert boundaries.
+- [Job schema](../../../src/features/coding/schema.ts): `CodingJobStatus` is `queued|starting|running|blocked|review|completed|failed|cancelled`. `sourceUrl` can link to a task, but it is not a structured task relation or a Notion status/priority snapshot. A job’s `completed` label must not become a task’s Done label.
+- [Worker polling](../../../src/server/coding/worker.server.ts) and [Herdr adapter](../../../src/server/coding/herdr.server.ts): worker states and job states differ. Observed idle/done after work can move a job into coordinator review. Output is a bounded replaceable text snapshot with ownership checks, not a semantic progress stream or completion proof. PR #4 already investigates that monitoring layer; its recommended monitor is the destination of “Worker progress,” not reimplemented here.
+- [GitHub status-check documentation](https://docs.github.com/en/pull-requests/reference/status-checks): checks and commit statuses report validation against commits. A completed check has a conclusion; skipped/neutral differ from an actual passing test. Therefore a future UI needs commit identity and underlying conclusions, not just a green badge. This prototype says “mergeability not evaluated.”
+
+## Keep the relationships explicit
+
+| Dimension | Authority / useful information | What it does not imply |
+| --- | --- | --- |
+| Task status + priority + readiness | Current Notion properties; stable task ID/URL; P1/P2/P3; readiness independent of status; observation time | Backlog may be Ready to implement. Old prose such as “Still thinking” does not override current properties. Priority does not indicate execution or permission. |
+| Roost job | Job ID, owning coordinator, assignment/attempt, summary, lifecycle, workspace, last observation | `review` means coordinator verification is needed, not that the human has received a verified result. `completed` does not mean task Done. |
+| Worker | Working/blocked/idle/done/unknown/missing, session identity, observed time, useful next step | Idle/done can mean only that a turn ended. Missing/unknown does not mean stopped or available capacity. |
+| Human attention | Reason, responsible person, concrete next action, source destination, first/last observation | Not every failure needs a human. A worker may already be fixing CI; no generic Approve control should bypass its original terminal. |
+| PR | Repository + PR number/URL, draft/open/closed/merged, head SHA, requested review | A draft can have passing checks. A closed PR may be unmerged. A merged PR does not accept the task. |
+| Checks | Check/run name, status and conclusion, commit SHA, requiredness if known, observed time | “Passed” on an earlier SHA is not current validation; absent checks are not successful checks. Passing checks do not imply review approval or mergeability. |
+| Human review / Done | Coordinator hands verified result to human; human checks acceptance and decides Done | Human review is a pending decision. **Only humans mark Done**, even if the PR merged or the job completed. |
+
+A future read model would join **task → zero or more job attempts → explicitly linked zero or more PRs**, with check results keyed by repository and SHA. Use stable IDs/explicit links, never title matching or parsing terminal text as authoritative status. Show prior attempts under the task and multiple PRs separately; a missing or ambiguous relation needs “Unlinked / needs verification.” Ad hoc jobs need “No task source,” not an invented Notion status. These are proposed relationships, not a synchronization design or implemented adapter.
+
+## Capacity and attention policy to validate
+
+The fixture has five tasks: one blocked P1 and one running P1 holding the two slots, one verified P2 awaiting human review with no slot, one ready P1 in Backlog with no job, and one human-completed P3. The before view has the same three relevant jobs and selected blocked assignment; the two tasks without current jobs only appear in the new task view.
+
+Count **reserved assignments**, not terminal panes, open PRs, Notion In progress rows, or busy-worker count. Reserve through preparation, running and blocked states. Keep an uncertain launch or lost worker observation reserved until inspected. A queued candidate without a reservation does not consume a slot. Only an explicit coordinator-confirmed handoff or confirmed stop releases one; terminal idle alone does not. A human review can coexist with two other active assignments, so show attention separately from execution capacity.
+
+The “verified handoff” scenario atomically changes several fixture fields for demonstration: job completed, worker Idle, task Human review, checks passed and one reservation released. In real sources these observations can arrive independently, fail, or disagree; never derive one from another. If Notion fails to update, show verified job and stale task status side by side. Do not auto-start the next Backlog task merely because a slot opened.
+
+Group multiple attention reasons for the same task into one inbox item: the blocked export has a terminal approval **and** a failed check, but counts as one task needing attention. Identify the current owner. Route approvals to the original worker terminal, reviews to PR/evidence and acceptance criteria, clarification to the coordinator conversation, and infrastructure failures to whoever can resolve the named dependency. Show blocked duration and observation provenance in a future detail view. Avoid repeating a failure notification while a worker is already handling it.
+
+Freshness is per source, not a global green dot. A GitHub outage preserves the old result as “last observed,” shows current checks unknown, and does not change task/worker/capacity. A missing worker feed must similarly show uncertainty and preserve the reservation; that scenario is documented but not implemented. If capacity itself cannot be established, show “unknown / last known 2 of 2” and require inspection rather than suggesting an available slot. Observation-age thresholds and retry policy need a later integration decision.
+
+## Bounded prototype and review exercise
+
+Run the local prototype below. Desktop starts with the blocked task selected. Mobile starts in its detail view to match the before capture; use **Back to tasks** for the list and layout toggles. All source controls display a labeled fixture destination; they do not navigate to real tickets, PRs or terminals.
+
+Try these decisions in A, B and C:
+
+1. Identify why the third P1 cannot start. Which task holds the blocked slot and who can unblock it?
+2. Filter Needs you, select Compact conversation spacing, and explain why it remains Human review despite passed checks and a completed job.
+3. Simulate GitHub unavailable: distinguish current unknown from the old check snapshot without losing the task or slot count.
+4. Simulate verified handoff: observe one free slot, the new human review, and no automatic start or Done transition.
+5. Search for a missing task; then “offline” to inspect a ready Backlog task without a PR. On mobile, return to the filtered list without losing context.
+
+The prototype uses one current job and PR per task, title search, in-memory selection/filtering, and fixed UTC observations. Reload resets it. Alternative layouts reuse A’s detail component; B’s mobile prototype stacks status groups, while its sketch proposes a status selector to compare in a later usability pass. There is no browser-history/deep-link persistence, actual worker monitor, polling, real connection, permission resolution, task mutation, or production styling abstraction. A has the most complete interaction treatment.
+
+## Assumptions and open product decisions
+
+- **Entry point:** propose Tasks under the project/coding agent and retain Jobs as execution detail. Decide whether a global cross-project view is needed; this research stays with one project.
+- **Default order:** choose between attention-first (prototype), execution-first (A sketch’s initial list), and strict priority-first. Pickup still uses current eligibility/priority rules; view sorting must not silently schedule work.
+- **Capacity scope:** assume two execution assignments for this project, excluding verified Human review. Confirm whether the real limit applies across all projects or includes human review WIP; show any review limit separately.
+- **Handoff:** decide the exact coordinator evidence/acknowledgment needed to release a slot and how stop/uncertain launch reservations are reconciled. No reservation service is implemented.
+- **Authority conflicts:** settle property mapping for each Notion source, freshness thresholds and whether a task marked Done with an active worker shows a reconciliation warning. No inferred rewrite of source status.
+- **Attention:** agree how to distinguish user-owned blockers from worker/coordinator-owned follow-up, whether review age affects ordering, and whether acknowledgments/snoozing are desirable. An acknowledgment must not clear the source blocker.
+- **Scope after review:** if A is chosen, separately authorize a read-only task/job/PR linkage spike with fixture contract and failure cases. Decide source access and identity mapping before estimating any synchronization service. User testing, screen-reader audit, dark mode, many-task performance and live-source behavior remain unverified.
+
+## Actual rendered before / after
+
+Baseline was captured **before implementing the unified UI**. Both pairs use light mode, UTC, device scale 1, desktop **1440×1100** and mobile **390×844** viewports. Full-page capture heights vary. Selected task is Repair export flow, blocked with unchanged fixture summary/output. The before job and Worker output disclosures are open; the after shows its task detail.
+
+**Baseline limitation:** the existing Jobs content/StyleX was extracted from the base route into a temporary capture harness. Router, refresh, stop and server boundaries were inert, and the agent header/app shell were replaced by the same small presentation harness. That capture-only harness is not part of the delivered prototype. These are actual browser-rendered component captures, **not an authenticated live Roost screenshot**. Baseline cannot show task/check fields the current route does not have. No unlabelled mockup substitutes for screenshot evidence.
+
+| View | Before · actual existing Jobs content, fixture harness | After · actual unified prototype, same assignment |
+| --- | --- | --- |
+| Desktop |  |  |
+| Mobile |  |  |
+
+Additional rendered evidence: [mobile list](screenshots/list-mobile.png), [desktop review](screenshots/review-desktop.png), [mobile review](screenshots/review-mobile.png), [desktop stale GitHub](screenshots/stale-desktop.png), [mobile stale GitHub](screenshots/stale-mobile.png), [desktop handoff](screenshots/handoff-desktop.png), [mobile handoff](screenshots/handoff-mobile.png), [B desktop](screenshots/option-b-desktop.png), [B mobile](screenshots/option-b-mobile.png), [C desktop](screenshots/option-c-desktop.png), [C mobile](screenshots/option-c-mobile.png). [Editor screenshots](screenshots/editor-a-desktop.png) demonstrate native Excalidraw loading; all six are in `screenshots/editor-*.png`.
+
+## Run the prototype
+
+From the repository root with its locked dependencies installed:
+
+```sh
+node node_modules/vite/bin/vite.js --config docs/prototypes/unified-task-view/vite.config.mjs
+# http://127.0.0.1:4182/ — unified fixture prototype
+```
+
+The prototype binds loopback and uses only its fictional fixtures. Its required UI, fixtures and Vite config are committed. Open the six `.excalidraw` deliverables in Excalidraw; SVG/PNG exports can be viewed directly. The before screenshots document the temporary baseline harness, which is no longer a runnable route.
+
+One-off capture/generation/validation scripts, the custom validation editor, raw logs and capture metadata are excluded from the PR. Copies remain in this worktree's ignored `.roost/unified-task-view-cleanup/` for coordinator reference; they are not a dependency or a promised reproducible toolchain for reviewers.
+
+See [concise verification results and limitations](evidence/VERIFICATION.md). All production integration is deferred pending the experience decision.
diff --git a/docs/prototypes/unified-task-view/designs/a-desktop.excalidraw b/docs/prototypes/unified-task-view/designs/a-desktop.excalidraw
new file mode 100644
index 0000000..39c4905
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/a-desktop.excalidraw
@@ -0,0 +1,777 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 1440,
+ "height": 1040,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 376.32000000000005,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 282.24,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "A · Task workspace",
+ "originalText": "A · Task workspace",
+ "fontSize": 28,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 779.5200000000001,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "originalText": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 1400,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 1117.2,
+ "height": 47.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "originalText": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "fontSize": 19,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 733.0400000000001,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "All tasks | Needs you (2) | In progress (2) | Backlog Search…",
+ "originalText": "All tasks | Needs you (2) | In progress (2) | Backlog Search…",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 315,
+ "width": 690,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 36,
+ "y": 331,
+ "width": 533.12,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow SLOT HELD",
+ "originalText": "P1 Repair export flow SLOT HELD",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "text",
+ "x": 36,
+ "y": 363,
+ "width": 431.20000000000005,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress Worker: Blocked\nGitHub: Draft #142 Checks: 1 failed · b72e\nYou → Inspect network approval in the original terminal",
+ "originalText": "Notion: In progress Worker: Blocked\nGitHub: Draft #142 Checks: 1 failed · b72e\nYou → Inspect network approval in the original terminal",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-11",
+ "type": "rectangle",
+ "x": 20,
+ "y": 480,
+ "width": 690,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-12",
+ "type": "text",
+ "x": 36,
+ "y": 496,
+ "width": 514.08,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Improve task search SLOT HELD",
+ "originalText": "P1 Improve task search SLOT HELD",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 36,
+ "y": 528,
+ "width": 344.96000000000004,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress Worker: Working\nGitHub: Open #143 Checks: running · c93f",
+ "originalText": "Notion: In progress Worker: Working\nGitHub: Open #143 Checks: running · c93f",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "rectangle",
+ "x": 20,
+ "y": 620,
+ "width": 690,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 36,
+ "y": 636,
+ "width": 437.92,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P2 Compact conversation spacing NO SLOT",
+ "originalText": "P2 Compact conversation spacing NO SLOT",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "text",
+ "x": 36,
+ "y": 668,
+ "width": 415.52000000000004,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: Human review Worker: Idle / job completed\nGitHub: Open #141 Checks: 3 passed · a61d\nYou → Review acceptance criteria and evidence",
+ "originalText": "Notion: Human review Worker: Idle / job completed\nGitHub: Open #141 Checks: 3 passed · a61d\nYou → Review acceptance criteria and evidence",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-17",
+ "type": "rectangle",
+ "x": 20,
+ "y": 785,
+ "width": 690,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 36,
+ "y": 801,
+ "width": 514.08,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Explain offline recovery NO SLOT",
+ "originalText": "P1 Explain offline recovery NO SLOT",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "text",
+ "x": 36,
+ "y": 833,
+ "width": 392.00000000000006,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: Backlog / Ready to implement No job\nNo PR · Checks not applicable · waits for capacity",
+ "originalText": "Notion: Backlog / Ready to implement No job\nNo PR · Checks not applicable · waits for capacity",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-20",
+ "type": "rectangle",
+ "x": 740,
+ "y": 315,
+ "width": 680,
+ "height": 389,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-21",
+ "type": "text",
+ "x": 756,
+ "y": 331,
+ "width": 323.68,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "REPAIR EXPORT FLOW · SELECTED TASK",
+ "originalText": "REPAIR EXPORT FLOW · SELECTED TASK",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-22",
+ "type": "text",
+ "x": 756,
+ "y": 363,
+ "width": 470.40000000000003,
+ "height": 227.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 22,
+ "version": 1,
+ "versionNonce": 22,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Approval needed → You\nInspect the network request in the original worker terminal.\n[ Inspect worker terminal ↗ ]\n\nNotion task: In progress / P1 • observed 10:42 UTC\nRoost job: blocked / Worker: Blocked • slot held\nGitHub PR: Draft #142 / head b72e\nChecks: 1 failed on b72e • observed 10:42 UTC\n\nA failed check is separate from the terminal approval.\n[ Notion ↗ ] [ Worker progress ↗ ] [ GitHub PR ↗ ]\n\nOnly a human marks Done.",
+ "originalText": "Approval needed → You\nInspect the network request in the original worker terminal.\n[ Inspect worker terminal ↗ ]\n\nNotion task: In progress / P1 • observed 10:42 UTC\nRoost job: blocked / Worker: Blocked • slot held\nGitHub PR: Draft #142 / head b72e\nChecks: 1 failed on b72e • observed 10:42 UTC\n\nA failed check is separate from the terminal approval.\n[ Notion ↗ ] [ Worker progress ↗ ] [ GitHub PR ↗ ]\n\nOnly a human marks Done.",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-23",
+ "type": "text",
+ "x": 20,
+ "y": 1000,
+ "width": 662.48,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 23,
+ "version": 1,
+ "versionNonce": 23,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "originalText": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/a-desktop.png b/docs/prototypes/unified-task-view/designs/a-desktop.png
new file mode 100644
index 0000000..2c5fce7
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/a-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/designs/a-desktop.svg b/docs/prototypes/unified-task-view/designs/a-desktop.svg
new file mode 100644
index 0000000..6a35a72
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/a-desktop.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/a-mobile.excalidraw b/docs/prototypes/unified-task-view/designs/a-mobile.excalidraw
new file mode 100644
index 0000000..f0e90ec
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/a-mobile.excalidraw
@@ -0,0 +1,1290 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 282.24,
+ "height": 15,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 12,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 221.76000000000002,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "A · Task workspace",
+ "originalText": "A · Task workspace",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 240.24,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost project · 10:42 UTC fixture",
+ "originalText": "Roost project · 10:42 UTC fixture",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 350,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 188.16000000000003,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "originalText": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 340.48,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "All tasks | Needs you | Search",
+ "originalText": "All tasks | Needs you | Search",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 310,
+ "width": 350,
+ "height": 189,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 36,
+ "y": 326,
+ "width": 209.44000000000003,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "text",
+ "x": 36,
+ "y": 358,
+ "width": 243.04000000000002,
+ "height": 87.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "originalText": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-11",
+ "type": "rectangle",
+ "x": 20,
+ "y": 520,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-12",
+ "type": "text",
+ "x": 36,
+ "y": 536,
+ "width": 218.96,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Improve task search",
+ "originalText": "P1 Improve task search",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 36,
+ "y": 568,
+ "width": 211.68,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress\nWorker: Working · slot held\nOpen #143 / running · c93f",
+ "originalText": "Notion: In progress\nWorker: Working · slot held\nOpen #143 / running · c93f",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "rectangle",
+ "x": 20,
+ "y": 685,
+ "width": 350,
+ "height": 164,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 36,
+ "y": 701,
+ "width": 180.88000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P2 Compact spacing",
+ "originalText": "P2 Compact spacing",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "text",
+ "x": 36,
+ "y": 733,
+ "width": 219.52,
+ "height": 70,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: Human review\nWorker: Idle · no slot\nOpen #141 / 3 passed · a61d\nYou → Review PR and evidence",
+ "originalText": "Notion: Human review\nWorker: Idle · no slot\nOpen #141 / 3 passed · a61d\nYou → Review PR and evidence",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-17",
+ "type": "text",
+ "x": 20,
+ "y": 920,
+ "width": 331.52000000000004,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Select a task → full-screen detail.\nBack preserves filter + selection.\nPriority stays visible on every card.",
+ "originalText": "Select a task → full-screen detail.\nBack preserves filter + selection.\nPriority stays visible on every card.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 20,
+ "y": 1030,
+ "width": 322.56000000000006,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "originalText": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "text",
+ "x": 20,
+ "y": 1150,
+ "width": 304.64000000000004,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Only a human marks Done.\nAll content is fictional research.",
+ "originalText": "Only a human marks Done.\nAll content is fictional research.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-20",
+ "type": "rectangle",
+ "x": 430,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-21",
+ "type": "text",
+ "x": 450,
+ "y": 22,
+ "width": 247.52,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "MOBILE DETAIL · SAME FOR A / B / C",
+ "originalText": "MOBILE DETAIL · SAME FOR A / B / C",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-22",
+ "type": "text",
+ "x": 450,
+ "y": 72,
+ "width": 142.8,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 22,
+ "version": 1,
+ "versionNonce": 22,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "← Back to tasks",
+ "originalText": "← Back to tasks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-23",
+ "type": "text",
+ "x": 450,
+ "y": 127,
+ "width": 271.04,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 23,
+ "version": 1,
+ "versionNonce": 23,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-24",
+ "type": "rectangle",
+ "x": 450,
+ "y": 195,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 24,
+ "version": 1,
+ "versionNonce": 24,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-25",
+ "type": "text",
+ "x": 466,
+ "y": 211,
+ "width": 199.92000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 25,
+ "version": 1,
+ "versionNonce": 25,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "APPROVAL NEEDED · YOU",
+ "originalText": "APPROVAL NEEDED · YOU",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-26",
+ "type": "text",
+ "x": 466,
+ "y": 243,
+ "width": 235.20000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 26,
+ "version": 1,
+ "versionNonce": 26,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "originalText": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-27",
+ "type": "rectangle",
+ "x": 450,
+ "y": 370,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 27,
+ "version": 1,
+ "versionNonce": 27,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-28",
+ "type": "text",
+ "x": 466,
+ "y": 386,
+ "width": 104.72000000000001,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 28,
+ "version": 1,
+ "versionNonce": 28,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion task",
+ "originalText": "Notion task",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-29",
+ "type": "text",
+ "x": 466,
+ "y": 418,
+ "width": 141.12,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 29,
+ "version": 1,
+ "versionNonce": 29,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "In progress · P1\nObserved 10:42 UTC",
+ "originalText": "In progress · P1\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-30",
+ "type": "rectangle",
+ "x": 450,
+ "y": 520,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 30,
+ "version": 1,
+ "versionNonce": 30,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-31",
+ "type": "text",
+ "x": 466,
+ "y": 536,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 31,
+ "version": 1,
+ "versionNonce": 31,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost job / worker",
+ "originalText": "Roost job / worker",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-32",
+ "type": "text",
+ "x": 466,
+ "y": 568,
+ "width": 227.36,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 32,
+ "version": 1,
+ "versionNonce": 32,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "originalText": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-33",
+ "type": "rectangle",
+ "x": 450,
+ "y": 670,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 33,
+ "version": 1,
+ "versionNonce": 33,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-34",
+ "type": "text",
+ "x": 466,
+ "y": 686,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 34,
+ "version": 1,
+ "versionNonce": 34,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub PR / checks",
+ "originalText": "GitHub PR / checks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-35",
+ "type": "text",
+ "x": 466,
+ "y": 718,
+ "width": 172.48000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 35,
+ "version": 1,
+ "versionNonce": 35,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "originalText": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-36",
+ "type": "text",
+ "x": 450,
+ "y": 860,
+ "width": 313.6,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 36,
+ "version": 1,
+ "versionNonce": 36,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "originalText": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-37",
+ "type": "text",
+ "x": 450,
+ "y": 980,
+ "width": 286.72,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 37,
+ "version": 1,
+ "versionNonce": 37,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "originalText": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-38",
+ "type": "text",
+ "x": 450,
+ "y": 1130,
+ "width": 294,
+ "height": 37.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 38,
+ "version": 1,
+ "versionNonce": 38,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "originalText": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "fontSize": 15,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/a-mobile.png b/docs/prototypes/unified-task-view/designs/a-mobile.png
new file mode 100644
index 0000000..9e603f6
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/a-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/designs/a-mobile.svg b/docs/prototypes/unified-task-view/designs/a-mobile.svg
new file mode 100644
index 0000000..eedb0c4
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/a-mobile.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/b-desktop.excalidraw b/docs/prototypes/unified-task-view/designs/b-desktop.excalidraw
new file mode 100644
index 0000000..267c136
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/b-desktop.excalidraw
@@ -0,0 +1,1065 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 1440,
+ "height": 1040,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 376.32000000000005,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 250.88000000000002,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "B · Status board",
+ "originalText": "B · Status board",
+ "fontSize": 28,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 779.5200000000001,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "originalText": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 1400,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 1117.2,
+ "height": 47.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "originalText": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "fontSize": 19,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 923.44,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Columns use Notion status only. Cards retain worker + PR + check state. No drag-to-change status.",
+ "originalText": "Columns use Notion status only. Cards retain worker + PR + check state. No drag-to-change status.",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 312,
+ "width": 335,
+ "height": 600,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#f0f2eb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 35,
+ "y": 332,
+ "width": 78.4,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Backlog",
+ "originalText": "Backlog",
+ "fontSize": 20,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "rectangle",
+ "x": 375,
+ "y": 312,
+ "width": 335,
+ "height": 600,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#f0f2eb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-11",
+ "type": "text",
+ "x": 390,
+ "y": 332,
+ "width": 123.20000000000002,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "In progress",
+ "originalText": "In progress",
+ "fontSize": 20,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-12",
+ "type": "rectangle",
+ "x": 730,
+ "y": 312,
+ "width": 335,
+ "height": 600,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#f0f2eb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 745,
+ "y": 332,
+ "width": 134.4,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human review",
+ "originalText": "Human review",
+ "fontSize": 20,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "rectangle",
+ "x": 1085,
+ "y": 312,
+ "width": 335,
+ "height": 600,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#f0f2eb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 1100,
+ "y": 332,
+ "width": 44.800000000000004,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Done",
+ "originalText": "Done",
+ "fontSize": 20,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "rectangle",
+ "x": 32,
+ "y": 384,
+ "width": 311,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-17",
+ "type": "text",
+ "x": 48,
+ "y": 400,
+ "width": 190.4,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Offline recovery",
+ "originalText": "P1 Offline recovery",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 48,
+ "y": 432,
+ "width": 141.12,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Ready to implement\nNo job / no slot\nNo PR / checks N/A",
+ "originalText": "Ready to implement\nNo job / no slot\nNo PR / checks N/A",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "rectangle",
+ "x": 387,
+ "y": 384,
+ "width": 311,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-20",
+ "type": "text",
+ "x": 403,
+ "y": 400,
+ "width": 209.44000000000003,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-21",
+ "type": "text",
+ "x": 403,
+ "y": 432,
+ "width": 219.52,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Worker: Blocked / slot held\nDraft #142 / 1 failed · b72e\nYou → terminal approval",
+ "originalText": "Worker: Blocked / slot held\nDraft #142 / 1 failed · b72e\nYou → terminal approval",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-22",
+ "type": "rectangle",
+ "x": 387,
+ "y": 550,
+ "width": 311,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 22,
+ "version": 1,
+ "versionNonce": 22,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-23",
+ "type": "text",
+ "x": 403,
+ "y": 566,
+ "width": 218.96,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 23,
+ "version": 1,
+ "versionNonce": 23,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Improve task search",
+ "originalText": "P1 Improve task search",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-24",
+ "type": "text",
+ "x": 403,
+ "y": 598,
+ "width": 211.68,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 24,
+ "version": 1,
+ "versionNonce": 24,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Worker: Working / slot held\nOpen #143 / running · c93f",
+ "originalText": "Worker: Working / slot held\nOpen #143 / running · c93f",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-25",
+ "type": "rectangle",
+ "x": 742,
+ "y": 384,
+ "width": 311,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 25,
+ "version": 1,
+ "versionNonce": 25,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-26",
+ "type": "text",
+ "x": 758,
+ "y": 400,
+ "width": 180.88000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 26,
+ "version": 1,
+ "versionNonce": 26,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P2 Compact spacing",
+ "originalText": "P2 Compact spacing",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-27",
+ "type": "text",
+ "x": 758,
+ "y": 432,
+ "width": 211.68,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 27,
+ "version": 1,
+ "versionNonce": 27,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Worker: Idle / no slot\nOpen #141 / 3 passed · a61d\nYou → experience review",
+ "originalText": "Worker: Idle / no slot\nOpen #141 / 3 passed · a61d\nYou → experience review",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-28",
+ "type": "rectangle",
+ "x": 1097,
+ "y": 384,
+ "width": 311,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 28,
+ "version": 1,
+ "versionNonce": 28,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-29",
+ "type": "text",
+ "x": 1113,
+ "y": 400,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 29,
+ "version": 1,
+ "versionNonce": 29,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P3 Archived tasks",
+ "originalText": "P3 Archived tasks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-30",
+ "type": "text",
+ "x": 1113,
+ "y": 432,
+ "width": 188.16000000000003,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 30,
+ "version": 1,
+ "versionNonce": 30,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human accepted / no slot\nMerged #139\n2 passed on merged head",
+ "originalText": "Human accepted / no slot\nMerged #139\n2 passed on merged head",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-31",
+ "type": "text",
+ "x": 30,
+ "y": 945,
+ "width": 1056.72,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 31,
+ "version": 1,
+ "versionNonce": 31,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Select card → same task detail as A. Strong lifecycle scan; sparse columns and cross-column attention scanning.",
+ "originalText": "Select card → same task detail as A. Strong lifecycle scan; sparse columns and cross-column attention scanning.",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-32",
+ "type": "text",
+ "x": 20,
+ "y": 1000,
+ "width": 662.48,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 32,
+ "version": 1,
+ "versionNonce": 32,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "originalText": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/b-desktop.png b/docs/prototypes/unified-task-view/designs/b-desktop.png
new file mode 100644
index 0000000..9c19799
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/b-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/designs/b-desktop.svg b/docs/prototypes/unified-task-view/designs/b-desktop.svg
new file mode 100644
index 0000000..cde5439
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/b-desktop.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/b-mobile.excalidraw b/docs/prototypes/unified-task-view/designs/b-mobile.excalidraw
new file mode 100644
index 0000000..657a76f
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/b-mobile.excalidraw
@@ -0,0 +1,1191 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 282.24,
+ "height": 15,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 12,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 197.12,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "B · Status board",
+ "originalText": "B · Status board",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 240.24,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost project · 10:42 UTC fixture",
+ "originalText": "Roost project · 10:42 UTC fixture",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 350,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 188.16000000000003,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "originalText": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 241.92000000000002,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Status: In progress ▾ (2)",
+ "originalText": "Status: In progress ▾ (2)",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 310,
+ "width": 350,
+ "height": 189,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 36,
+ "y": 326,
+ "width": 209.44000000000003,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "text",
+ "x": 36,
+ "y": 358,
+ "width": 243.04000000000002,
+ "height": 87.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "originalText": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-11",
+ "type": "rectangle",
+ "x": 20,
+ "y": 520,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-12",
+ "type": "text",
+ "x": 36,
+ "y": 536,
+ "width": 218.96,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Improve task search",
+ "originalText": "P1 Improve task search",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 36,
+ "y": 568,
+ "width": 211.68,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress\nWorker: Working · slot held\nOpen #143 / running · c93f",
+ "originalText": "Notion: In progress\nWorker: Working · slot held\nOpen #143 / running · c93f",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "text",
+ "x": 20,
+ "y": 920,
+ "width": 286.72,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Change status selector to browse\nBacklog / Human review / Done.\nAvoid horizontal lane scrolling.",
+ "originalText": "Change status selector to browse\nBacklog / Human review / Done.\nAvoid horizontal lane scrolling.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 20,
+ "y": 1030,
+ "width": 322.56000000000006,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "originalText": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "text",
+ "x": 20,
+ "y": 1150,
+ "width": 304.64000000000004,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Only a human marks Done.\nAll content is fictional research.",
+ "originalText": "Only a human marks Done.\nAll content is fictional research.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-17",
+ "type": "rectangle",
+ "x": 430,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 450,
+ "y": 22,
+ "width": 247.52,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "MOBILE DETAIL · SAME FOR A / B / C",
+ "originalText": "MOBILE DETAIL · SAME FOR A / B / C",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "text",
+ "x": 450,
+ "y": 72,
+ "width": 142.8,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "← Back to tasks",
+ "originalText": "← Back to tasks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-20",
+ "type": "text",
+ "x": 450,
+ "y": 127,
+ "width": 271.04,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-21",
+ "type": "rectangle",
+ "x": 450,
+ "y": 195,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-22",
+ "type": "text",
+ "x": 466,
+ "y": 211,
+ "width": 199.92000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 22,
+ "version": 1,
+ "versionNonce": 22,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "APPROVAL NEEDED · YOU",
+ "originalText": "APPROVAL NEEDED · YOU",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-23",
+ "type": "text",
+ "x": 466,
+ "y": 243,
+ "width": 235.20000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 23,
+ "version": 1,
+ "versionNonce": 23,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "originalText": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-24",
+ "type": "rectangle",
+ "x": 450,
+ "y": 370,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 24,
+ "version": 1,
+ "versionNonce": 24,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-25",
+ "type": "text",
+ "x": 466,
+ "y": 386,
+ "width": 104.72000000000001,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 25,
+ "version": 1,
+ "versionNonce": 25,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion task",
+ "originalText": "Notion task",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-26",
+ "type": "text",
+ "x": 466,
+ "y": 418,
+ "width": 141.12,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 26,
+ "version": 1,
+ "versionNonce": 26,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "In progress · P1\nObserved 10:42 UTC",
+ "originalText": "In progress · P1\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-27",
+ "type": "rectangle",
+ "x": 450,
+ "y": 520,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 27,
+ "version": 1,
+ "versionNonce": 27,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-28",
+ "type": "text",
+ "x": 466,
+ "y": 536,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 28,
+ "version": 1,
+ "versionNonce": 28,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost job / worker",
+ "originalText": "Roost job / worker",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-29",
+ "type": "text",
+ "x": 466,
+ "y": 568,
+ "width": 227.36,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 29,
+ "version": 1,
+ "versionNonce": 29,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "originalText": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-30",
+ "type": "rectangle",
+ "x": 450,
+ "y": 670,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 30,
+ "version": 1,
+ "versionNonce": 30,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-31",
+ "type": "text",
+ "x": 466,
+ "y": 686,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 31,
+ "version": 1,
+ "versionNonce": 31,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub PR / checks",
+ "originalText": "GitHub PR / checks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-32",
+ "type": "text",
+ "x": 466,
+ "y": 718,
+ "width": 172.48000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 32,
+ "version": 1,
+ "versionNonce": 32,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "originalText": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-33",
+ "type": "text",
+ "x": 450,
+ "y": 860,
+ "width": 313.6,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 33,
+ "version": 1,
+ "versionNonce": 33,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "originalText": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-34",
+ "type": "text",
+ "x": 450,
+ "y": 980,
+ "width": 286.72,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 34,
+ "version": 1,
+ "versionNonce": 34,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "originalText": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-35",
+ "type": "text",
+ "x": 450,
+ "y": 1130,
+ "width": 294,
+ "height": 37.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 35,
+ "version": 1,
+ "versionNonce": 35,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "originalText": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "fontSize": 15,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/b-mobile.png b/docs/prototypes/unified-task-view/designs/b-mobile.png
new file mode 100644
index 0000000..724cd7f
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/b-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/designs/b-mobile.svg b/docs/prototypes/unified-task-view/designs/b-mobile.svg
new file mode 100644
index 0000000..0b43435
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/b-mobile.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/c-desktop.excalidraw b/docs/prototypes/unified-task-view/designs/c-desktop.excalidraw
new file mode 100644
index 0000000..4045d80
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/c-desktop.excalidraw
@@ -0,0 +1,714 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 1440,
+ "height": 1040,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 376.32000000000005,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 297.92,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "C · Attention inbox",
+ "originalText": "C · Attention inbox",
+ "fontSize": 28,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 779.5200000000001,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "originalText": "Project: Roost | Task source: Notion | Worker: Roost / Herdr | Code: GitHub",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 1400,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 1117.2,
+ "height": 47.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "originalText": "CAPACITY 2 / 2 task slots held • 1 working + 1 blocked ATTENTION 2 tasks need you\nBlocked work keeps its slot. Verified handoff releases it; Human review remains visible.",
+ "fontSize": 19,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 932.96,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Needs you (2) | All tasks (5) Group by next responsible person; keep every task reachable.",
+ "originalText": "Needs you (2) | All tasks (5) Group by next responsible person; keep every task reachable.",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 315,
+ "width": 460,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 36,
+ "y": 331,
+ "width": 323.68,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "APPROVAL · P1 · Repair export flow",
+ "originalText": "APPROVAL · P1 · Repair export flow",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "text",
+ "x": 36,
+ "y": 363,
+ "width": 219.52,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "In progress / worker Blocked\nDraft #142 / 1 failed · b72e\nSlot held · since 10:39 UTC",
+ "originalText": "In progress / worker Blocked\nDraft #142 / 1 failed · b72e\nSlot held · since 10:39 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-11",
+ "type": "rectangle",
+ "x": 20,
+ "y": 480,
+ "width": 460,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-12",
+ "type": "text",
+ "x": 36,
+ "y": 496,
+ "width": 276.08000000000004,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "REVIEW · P2 · Compact spacing",
+ "originalText": "REVIEW · P2 · Compact spacing",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 36,
+ "y": 528,
+ "width": 211.68,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human review / worker Idle\nOpen #141 / 3 passed · a61d\nNo slot · since 10:40 UTC",
+ "originalText": "Human review / worker Idle\nOpen #141 / 3 passed · a61d\nNo slot · since 10:40 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "rectangle",
+ "x": 510,
+ "y": 315,
+ "width": 910,
+ "height": 314,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 526,
+ "y": 331,
+ "width": 342.72,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "NEXT ACTION: INSPECT WORKER TERMINAL",
+ "originalText": "NEXT ACTION: INSPECT WORKER TERMINAL",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "text",
+ "x": 526,
+ "y": 363,
+ "width": 556.6400000000001,
+ "height": 175,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Repair export flow · owner: You\nA network approval blocks verification; a failed check is also present.\nOpen the original worker terminal to inspect the concrete request.\n[ Inspect worker terminal ↗ ]\n\nNotion: In progress / P1 • Roost job: blocked / worker: Blocked\nGitHub: Draft #142 / head b72e / 1 failed check\nSource observations: Notion 10:42 / worker 10:42 / GitHub 10:42 UTC\n\n[ Notion task ↗ ] [ Worker progress ↗ ] [ GitHub PR ↗ ]",
+ "originalText": "Repair export flow · owner: You\nA network approval blocks verification; a failed check is also present.\nOpen the original worker terminal to inspect the concrete request.\n[ Inspect worker terminal ↗ ]\n\nNotion: In progress / P1 • Roost job: blocked / worker: Blocked\nGitHub: Draft #142 / head b72e / 1 failed check\nSource observations: Notion 10:42 / worker 10:42 / GitHub 10:42 UTC\n\n[ Notion task ↗ ] [ Worker progress ↗ ] [ GitHub PR ↗ ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-17",
+ "type": "rectangle",
+ "x": 20,
+ "y": 710,
+ "width": 1400,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 36,
+ "y": 726,
+ "width": 209.44000000000003,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "CONTINUING WITHOUT YOU",
+ "originalText": "CONTINUING WITHOUT YOU",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "text",
+ "x": 36,
+ "y": 758,
+ "width": 682.08,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Improve task search: In progress / Working / Open #143 / checks running / slot held\nP1 Offline recovery: Backlog / Ready to implement / no job / no PR / waits for capacity\nP3 Archived tasks: Done by human / Merged #139 / no slot",
+ "originalText": "P1 Improve task search: In progress / Working / Open #143 / checks running / slot held\nP1 Offline recovery: Backlog / Ready to implement / no job / no PR / waits for capacity\nP3 Archived tasks: Done by human / Merged #139 / no slot",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-20",
+ "type": "text",
+ "x": 20,
+ "y": 945,
+ "width": 990.08,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Fast triage; progress can disappear below the inbox. Needs dependable ownership, grouping and freshness.",
+ "originalText": "Fast triage; progress can disappear below the inbox. Needs dependable ownership, grouping and freshness.",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-21",
+ "type": "text",
+ "x": 20,
+ "y": 1000,
+ "width": 662.48,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "originalText": "EDITABLE DESIGN EXPLORATION · NOT A SCREENSHOT · No production integration or status writes",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/c-desktop.png b/docs/prototypes/unified-task-view/designs/c-desktop.png
new file mode 100644
index 0000000..3526e59
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/c-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/designs/c-desktop.svg b/docs/prototypes/unified-task-view/designs/c-desktop.svg
new file mode 100644
index 0000000..1bc9906
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/c-desktop.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/c-mobile.excalidraw b/docs/prototypes/unified-task-view/designs/c-mobile.excalidraw
new file mode 100644
index 0000000..9afc3d8
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/c-mobile.excalidraw
@@ -0,0 +1,1191 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "roost/unified-task-view-research",
+ "elements": [
+ {
+ "id": "shape-1",
+ "type": "rectangle",
+ "x": 0,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1,
+ "version": 1,
+ "versionNonce": 1,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-2",
+ "type": "text",
+ "x": 20,
+ "y": 18,
+ "width": 282.24,
+ "height": 15,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2,
+ "version": 1,
+ "versionNonce": 2,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "originalText": "ROOST / TASKS • FICTIONAL RESEARCH",
+ "fontSize": 12,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-3",
+ "type": "text",
+ "x": 20,
+ "y": 60,
+ "width": 234.08,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 3,
+ "version": 1,
+ "versionNonce": 3,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "C · Attention inbox",
+ "originalText": "C · Attention inbox",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-4",
+ "type": "text",
+ "x": 20,
+ "y": 104,
+ "width": 240.24,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 4,
+ "version": 1,
+ "versionNonce": 4,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost project · 10:42 UTC fixture",
+ "originalText": "Roost project · 10:42 UTC fixture",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-5",
+ "type": "rectangle",
+ "x": 20,
+ "y": 145,
+ "width": 350,
+ "height": 95,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#e9efdf",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 5,
+ "version": 1,
+ "versionNonce": 5,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-6",
+ "type": "text",
+ "x": 36,
+ "y": 160,
+ "width": 188.16000000000003,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 6,
+ "version": 1,
+ "versionNonce": 6,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "originalText": "2 / 2 task slots held\n1 working · 1 blocked\n2 tasks need you",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-7",
+ "type": "text",
+ "x": 20,
+ "y": 265,
+ "width": 295.68,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 7,
+ "version": 1,
+ "versionNonce": 7,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Needs you (2) | All tasks (5)",
+ "originalText": "Needs you (2) | All tasks (5)",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-8",
+ "type": "rectangle",
+ "x": 20,
+ "y": 310,
+ "width": 350,
+ "height": 189,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 8,
+ "version": 1,
+ "versionNonce": 8,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-9",
+ "type": "text",
+ "x": 36,
+ "y": 326,
+ "width": 209.44000000000003,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 9,
+ "version": 1,
+ "versionNonce": 9,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-10",
+ "type": "text",
+ "x": 36,
+ "y": 358,
+ "width": 243.04000000000002,
+ "height": 87.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 10,
+ "version": 1,
+ "versionNonce": 10,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "originalText": "Notion: In progress\nWorker: Blocked · slot held\nDraft #142 / 1 failed · b72e\nYou → Inspect terminal approval\n[ Open task → ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-11",
+ "type": "rectangle",
+ "x": 20,
+ "y": 520,
+ "width": 350,
+ "height": 164,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 11,
+ "version": 1,
+ "versionNonce": 11,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-12",
+ "type": "text",
+ "x": 36,
+ "y": 536,
+ "width": 180.88000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 12,
+ "version": 1,
+ "versionNonce": 12,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P2 Compact spacing",
+ "originalText": "P2 Compact spacing",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-13",
+ "type": "text",
+ "x": 36,
+ "y": 568,
+ "width": 219.52,
+ "height": 70,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 13,
+ "version": 1,
+ "versionNonce": 13,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion: Human review\nWorker: Idle · no slot\nOpen #141 / 3 passed · a61d\nYou → Review PR and evidence",
+ "originalText": "Notion: Human review\nWorker: Idle · no slot\nOpen #141 / 3 passed · a61d\nYou → Review PR and evidence",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-14",
+ "type": "text",
+ "x": 20,
+ "y": 920,
+ "width": 295.68,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 14,
+ "version": 1,
+ "versionNonce": 14,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "All tasks keeps working + queued\nwork reachable outside the inbox.\nNo one-tap approval shortcut.",
+ "originalText": "All tasks keeps working + queued\nwork reachable outside the inbox.\nNo one-tap approval shortcut.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-15",
+ "type": "text",
+ "x": 20,
+ "y": 1030,
+ "width": 322.56000000000006,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 15,
+ "version": 1,
+ "versionNonce": 15,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "originalText": "GitHub unavailable? Show unknown\nand the last observation, never\na current green check from old data.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-16",
+ "type": "text",
+ "x": 20,
+ "y": 1150,
+ "width": 304.64000000000004,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 16,
+ "version": 1,
+ "versionNonce": 16,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Only a human marks Done.\nAll content is fictional research.",
+ "originalText": "Only a human marks Done.\nAll content is fictional research.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-17",
+ "type": "rectangle",
+ "x": 430,
+ "y": 0,
+ "width": 390,
+ "height": 1270,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fafbf7",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 17,
+ "version": 1,
+ "versionNonce": 17,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-18",
+ "type": "text",
+ "x": 450,
+ "y": 22,
+ "width": 247.52,
+ "height": 16.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 18,
+ "version": 1,
+ "versionNonce": 18,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "MOBILE DETAIL · SAME FOR A / B / C",
+ "originalText": "MOBILE DETAIL · SAME FOR A / B / C",
+ "fontSize": 13,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-19",
+ "type": "text",
+ "x": 450,
+ "y": 72,
+ "width": 142.8,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 19,
+ "version": 1,
+ "versionNonce": 19,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "← Back to tasks",
+ "originalText": "← Back to tasks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-20",
+ "type": "text",
+ "x": 450,
+ "y": 127,
+ "width": 271.04,
+ "height": 27.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 20,
+ "version": 1,
+ "versionNonce": 20,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "P1 Repair export flow",
+ "originalText": "P1 Repair export flow",
+ "fontSize": 22,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-21",
+ "type": "rectangle",
+ "x": 450,
+ "y": 195,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#fff4e3",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 21,
+ "version": 1,
+ "versionNonce": 21,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-22",
+ "type": "text",
+ "x": 466,
+ "y": 211,
+ "width": 199.92000000000002,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 22,
+ "version": 1,
+ "versionNonce": 22,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "APPROVAL NEEDED · YOU",
+ "originalText": "APPROVAL NEEDED · YOU",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-23",
+ "type": "text",
+ "x": 466,
+ "y": 243,
+ "width": 235.20000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 23,
+ "version": 1,
+ "versionNonce": 23,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "originalText": "Inspect the network request in\nthe original worker terminal.\n[ Inspect worker terminal ↗ ]",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-24",
+ "type": "rectangle",
+ "x": 450,
+ "y": 370,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 24,
+ "version": 1,
+ "versionNonce": 24,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-25",
+ "type": "text",
+ "x": 466,
+ "y": 386,
+ "width": 104.72000000000001,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 25,
+ "version": 1,
+ "versionNonce": 25,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Notion task",
+ "originalText": "Notion task",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-26",
+ "type": "text",
+ "x": 466,
+ "y": 418,
+ "width": 141.12,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 26,
+ "version": 1,
+ "versionNonce": 26,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "In progress · P1\nObserved 10:42 UTC",
+ "originalText": "In progress · P1\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-27",
+ "type": "rectangle",
+ "x": 450,
+ "y": 520,
+ "width": 350,
+ "height": 114,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 27,
+ "version": 1,
+ "versionNonce": 27,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-28",
+ "type": "text",
+ "x": 466,
+ "y": 536,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 28,
+ "version": 1,
+ "versionNonce": 28,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Roost job / worker",
+ "originalText": "Roost job / worker",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-29",
+ "type": "text",
+ "x": 466,
+ "y": 568,
+ "width": 227.36,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 29,
+ "version": 1,
+ "versionNonce": 29,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "originalText": "blocked / Blocked · slot held\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-30",
+ "type": "rectangle",
+ "x": 450,
+ "y": 670,
+ "width": 350,
+ "height": 139,
+ "angle": 0,
+ "strokeColor": "#b8c3af",
+ "backgroundColor": "#ffffff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 30,
+ "version": 1,
+ "versionNonce": 30,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "shape-31",
+ "type": "text",
+ "x": 466,
+ "y": 686,
+ "width": 171.36,
+ "height": 21.25,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 31,
+ "version": 1,
+ "versionNonce": 31,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "GitHub PR / checks",
+ "originalText": "GitHub PR / checks",
+ "fontSize": 17,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-32",
+ "type": "text",
+ "x": 466,
+ "y": 718,
+ "width": 172.48000000000002,
+ "height": 52.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 32,
+ "version": 1,
+ "versionNonce": 32,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "originalText": "Draft #142 · head b72e\n1 failed check on b72e\nObserved 10:42 UTC",
+ "fontSize": 14,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-33",
+ "type": "text",
+ "x": 450,
+ "y": 860,
+ "width": 313.6,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 33,
+ "version": 1,
+ "versionNonce": 33,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "originalText": "[ Notion ↗ ] [ Worker progress ↗ ]\n[ GitHub PR ↗ ]",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-34",
+ "type": "text",
+ "x": 450,
+ "y": 980,
+ "width": 286.72,
+ "height": 60,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 34,
+ "version": 1,
+ "versionNonce": 34,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "originalText": "Human review differs from Done.\nIdle and passed checks do not\naccept the task. Only humans do.",
+ "fontSize": 16,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "shape-35",
+ "type": "text",
+ "x": 450,
+ "y": 1130,
+ "width": 294,
+ "height": 37.5,
+ "angle": 0,
+ "strokeColor": "#30382c",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 35,
+ "version": 1,
+ "versionNonce": 35,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1,
+ "link": null,
+ "locked": false,
+ "text": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "originalText": "Navigation sketch; all destinations\nare fixtures in the prototype.",
+ "fontSize": 15,
+ "fontFamily": 2,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "viewBackgroundColor": "#ffffff",
+ "gridSize": null
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/designs/c-mobile.png b/docs/prototypes/unified-task-view/designs/c-mobile.png
new file mode 100644
index 0000000..53a394b
Binary files /dev/null and b/docs/prototypes/unified-task-view/designs/c-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/designs/c-mobile.svg b/docs/prototypes/unified-task-view/designs/c-mobile.svg
new file mode 100644
index 0000000..b8cc991
--- /dev/null
+++ b/docs/prototypes/unified-task-view/designs/c-mobile.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/docs/prototypes/unified-task-view/evidence/VERIFICATION.md b/docs/prototypes/unified-task-view/evidence/VERIFICATION.md
new file mode 100644
index 0000000..6c93e0e
--- /dev/null
+++ b/docs/prototypes/unified-task-view/evidence/VERIFICATION.md
@@ -0,0 +1,28 @@
+# Verification record
+
+Date: 2026-09-08. Base: `3f7bae2`. Branch: `research/unified-task-view`.
+
+## Cleanup validation
+
+Run from the repository root after removing disposable tooling:
+
+| Command / check | Result |
+| --- | --- |
+| `node node_modules/@biomejs/biome/bin/biome check --error-on-warnings .` | PASS |
+| `node node_modules/typescript/bin/tsc --project docs/prototypes/unified-task-view/tsconfig.json` | PASS |
+| `node node_modules/vite/bin/vite.js build --config docs/prototypes/unified-task-view/vite.config.mjs` | PASS |
+| Local Markdown and PR artifact links resolve; no references promise removed committed tooling | PASS |
+
+The preserved local browser checks also passed on desktop/mobile after cleanup. All 13 recaptured prototype screenshots were pixel-identical to the committed images, so the existing screenshot evidence remains valid. All 71 local Markdown and PR artifact links resolved.
+
+The runnable prototype retains only its UI, fixtures and necessary configuration. The capture-only baseline route and custom Excalidraw editor were removed. Native Excalidraw files open directly in Excalidraw. One-off scripts, raw logs and capture metadata are excluded from the PR; original local copies and cleanup results are under ignored `.roost/unified-task-view-cleanup/` in this worktree.
+
+## Earlier artifact and interaction validation
+
+Before cleanup, repository lint, app/prototype typechecks and the isolated prototype build passed. Desktop/mobile browser checks passed: source drilldown remained simulated; stale GitHub showed current unknown; Human review differed from Done; attention filter, empty/title search, missing PR, verified slot release, reset, alternate layouts and mobile Back worked; no page overflow, external/API requests or browser exceptions were observed.
+
+All six native files loaded in Excalidraw 0.18.0. Element counts (A: 23/38, B: 32/35, C: 21/35, desktop/mobile) and every native text value were preserved through serialization. SVG exports were rendered to PNGs. This validated loading/serialization/export, not every editor operation. These earlier results are retained as evidence, not a claim that deleted scripts ship with the deliverable.
+
+Rendered before/after screenshots remain unchanged: desktop 1440×1100 and mobile 390×844 viewports, light mode, UTC, scale 1, same selected blocked assignment. Full-page heights vary. The baseline was captured before UI implementation using actual Jobs content with inert router/server boundaries and a substituted presentation shell, not an authenticated live installation. Excalidraw wireframe exports and editor screenshots are labeled separately from application captures; see the [findings](../README.md).
+
+Not run: full application regression/auth suite, app/CLI production builds, live Notion/GitHub integration, real worker monitoring, synchronization, user study, screen-reader audit, load/performance, dark mode, or actual approval/merge/Done actions. Cleanup does not change task or worker behavior.
diff --git a/docs/prototypes/unified-task-view/fixtures.ts b/docs/prototypes/unified-task-view/fixtures.ts
new file mode 100644
index 0000000..d58c13e
--- /dev/null
+++ b/docs/prototypes/unified-task-view/fixtures.ts
@@ -0,0 +1,92 @@
+export interface Task {
+ id: string;
+ title: string;
+ priority: string;
+ status: string;
+ job: string;
+ worker: string;
+ reserved: boolean;
+ pr: string;
+ checks: string;
+ summary: string;
+ attention: string;
+ action: string;
+ owner: string;
+}
+export const tasks: Task[] = [
+ {
+ id: "export",
+ title: "Repair export flow",
+ priority: "P1",
+ status: "In progress",
+ job: "blocked",
+ worker: "Blocked",
+ reserved: true,
+ pr: "Draft #142",
+ checks: "1 failed · head b72e",
+ summary: "Export fix prepared; network approval is holding verification.",
+ attention: "Approval needed",
+ action: "Inspect worker terminal",
+ owner: "You",
+ },
+ {
+ id: "search",
+ title: "Improve task search",
+ priority: "P1",
+ status: "In progress",
+ job: "running",
+ worker: "Working",
+ reserved: true,
+ pr: "Open #143",
+ checks: "Running · head c93f",
+ summary: "Worker is testing keyboard navigation. Next: prepare evidence.",
+ attention: "",
+ action: "View worker progress",
+ owner: "Worker",
+ },
+ {
+ id: "spacing",
+ title: "Compact conversation spacing",
+ priority: "P2",
+ status: "Human review",
+ job: "completed",
+ worker: "Idle",
+ reserved: false,
+ pr: "Open #141",
+ checks: "3 passed · head a61d",
+ summary: "Coordinator verified evidence. Your experience review is next.",
+ attention: "Review requested",
+ action: "Review PR and evidence",
+ owner: "You",
+ },
+ {
+ id: "offline",
+ title: "Explain offline recovery",
+ priority: "P1",
+ status: "Backlog",
+ job: "No job",
+ worker: "Not started",
+ reserved: false,
+ pr: "No PR",
+ checks: "Not applicable",
+ summary: "Ready to implement. Waiting for a task slot.",
+ attention: "",
+ action: "Discuss next assignment",
+ owner: "Coordinator",
+ },
+ {
+ id: "archive",
+ title: "Clarify archived tasks",
+ priority: "P3",
+ status: "Done",
+ job: "completed",
+ worker: "Idle",
+ reserved: false,
+ pr: "Merged #139",
+ checks: "2 passed · merged head",
+ summary: "Human marked Done after acceptance review.",
+ attention: "",
+ action: "View decision record",
+ owner: "You",
+ },
+];
diff --git a/docs/prototypes/unified-task-view/index.html b/docs/prototypes/unified-task-view/index.html
new file mode 100644
index 0000000..0b1cfbd
--- /dev/null
+++ b/docs/prototypes/unified-task-view/index.html
@@ -0,0 +1 @@
+
Roost • Unified tasks research
diff --git a/docs/prototypes/unified-task-view/main.tsx b/docs/prototypes/unified-task-view/main.tsx
new file mode 100644
index 0000000..1fa94cc
--- /dev/null
+++ b/docs/prototypes/unified-task-view/main.tsx
@@ -0,0 +1,426 @@
+import { useState } from "react";
+import { createRoot } from "react-dom/client";
+import { tasks as initialTasks, type Task } from "./fixtures";
+import "./styles.css";
+
+const layouts = [
+ "A · Task workspace",
+ "B · Status board",
+ "C · Attention inbox",
+];
+
+function TaskCard({
+ task,
+ selected,
+ onSelect,
+ stale,
+}: {
+ task: Task;
+ selected: boolean;
+ onSelect: () => void;
+ stale: boolean;
+}) {
+ return (
+
+ );
+}
+
+function App() {
+ const [tasks, setTasks] = useState(initialTasks);
+ const [selected, setSelected] = useState("export");
+ const [filter, setFilter] = useState("All tasks");
+ const [query, setQuery] = useState("");
+ const [layout, setLayout] = useState(0);
+ const [stale, setStale] = useState(false);
+ const [detail, setDetail] = useState(true);
+ const [notice, setNotice] = useState("");
+ const task = tasks.find((item) => item.id === selected)!;
+ const capacity = tasks.filter((item) => item.reserved).length;
+ const attention = tasks.filter((item) => item.attention).length;
+ const visible = tasks.filter(
+ (item) =>
+ item.title.toLowerCase().includes(query.toLowerCase()) &&
+ (filter === "All tasks" ||
+ (filter === "Needs you" && item.attention) ||
+ (filter === "In progress" && item.reserved) ||
+ (filter === "Backlog" && item.status === "Backlog")),
+ );
+
+ function select(item: Task) {
+ setSelected(item.id);
+ setDetail(true);
+ }
+
+ function destination(name: string) {
+ setNotice(
+ `Fixture destination: ${name}. In a connected experience this opens the source for ${task.title}. No external action was taken.`,
+ );
+ }
+
+ function handoff() {
+ setTasks((items) =>
+ items.map((item) =>
+ item.id === "search"
+ ? {
+ ...item,
+ reserved: false,
+ worker: "Idle",
+ job: "completed",
+ status: "Human review",
+ checks: "3 passed · head c93f",
+ attention: "Review requested",
+ owner: "You",
+ action: "Review PR and evidence",
+ summary:
+ "Simulated coordinator verification complete. Slot released; human acceptance is pending.",
+ }
+ : item,
+ ),
+ );
+ setNotice(
+ "Simulated verified handoff for Improve task search. A slot is available; the task is Human review, not Done. No task starts automatically.",
+ );
+ }
+
+ return (
+ <>
+
+ RESEARCH · Fictional fixtures · No live connections or actions
+
+
+
+ roost / Tasks
+
+ Project: Roost
+
+
+
+
+
PROJECT OVERVIEW
+
Work, with the whole picture.
+
+ Task intent, execution, and review — connected by task.
+
+
+
+ Concept {String.fromCharCode(65 + layout)} ·{" "}
+ {layout === 0 ? "Recommended" : "Alternative"}
+
+
+
+
+
+
EXECUTION CAPACITY
+
{capacity} / 2 task slots held
+
+ {capacity === 2
+ ? "1 working · 1 blocked · no slot available"
+ : "1 blocked · 1 slot available"}
+
+
+ Blocked work keeps its slot until a confirmed handoff or stop.
+
+
+
+
HUMAN ATTENTION
+
{attention} tasks need you
+
Approval + experience review
+
Human review is separate from execution capacity.
+
+
+
SOURCE FRESHNESS · FIXTURE
+
+ Notion: observed 10:42 UTC
+
+ Worker: observed 10:42 UTC
+
+
+ GitHub:{" "}
+ {stale
+ ? "unavailable · last seen 10:12 UTC"
+ : "observed 10:42 UTC"}
+
+
+
+
+
+
+
+
+
+ {capacity} / 2 slots held · {attention} tasks need you
+
+
+
+
+
+ {layout === 2 ? "Attention first" : "Tasks"}{" "}
+ {visible.length}
+
+
+ {layout === 1
+ ? "Grouped by Notion status"
+ : "Priority within attention group"}
+
+
+ {visible.length === 0 && (
+
+ No matching tasks. Clear search or choose All tasks.
+
+ )}
+
+ {(layout === 1
+ ? ["Backlog", "In progress", "Human review", "Done"]
+ : layout === 2
+ ? ["Needs you", "Continuing without you"]
+ : ["All"]
+ ).map((group) => (
+
+ {group !== "All" &&
{group}
}
+ {visible
+ .filter(
+ (item) =>
+ group === "All" ||
+ (layout === 1
+ ? item.status === group
+ : Boolean(item.attention) ===
+ (group === "Needs you")),
+ )
+ .sort(
+ (a, b) =>
+ Number(Boolean(b.attention)) -
+ Number(Boolean(a.attention)) ||
+ a.priority.localeCompare(b.priority),
+ )
+ .map((item) => (
+ select(item)}
+ />
+ ))}
+
+ ))}
+
+
+
+
+
+ Try fixture scenarios
+
+
+
+
+
+
+ Scenarios change this page only. No starts, approvals, merges, or
+ status writes.
+
+
+
+ Compare the editable desktop/mobile concepts in designs/. Worker
+ progress would open the monitor explored in PR #4.
+
+
+ {notice && (
+
+
+ Simulation only
+ {notice}
+
+
+
+ )}
+ >
+ );
+}
+
+createRoot(document.getElementById("root")!).render();
diff --git a/docs/prototypes/unified-task-view/screenshots/after-desktop.png b/docs/prototypes/unified-task-view/screenshots/after-desktop.png
new file mode 100644
index 0000000..f627c4c
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/after-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/after-mobile.png b/docs/prototypes/unified-task-view/screenshots/after-mobile.png
new file mode 100644
index 0000000..f252f9e
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/after-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/before-desktop.png b/docs/prototypes/unified-task-view/screenshots/before-desktop.png
new file mode 100644
index 0000000..bfbf290
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/before-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/before-mobile.png b/docs/prototypes/unified-task-view/screenshots/before-mobile.png
new file mode 100644
index 0000000..001565f
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/before-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-a-desktop.png b/docs/prototypes/unified-task-view/screenshots/editor-a-desktop.png
new file mode 100644
index 0000000..71220b5
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-a-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-a-mobile.png b/docs/prototypes/unified-task-view/screenshots/editor-a-mobile.png
new file mode 100644
index 0000000..c8d4d79
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-a-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-b-desktop.png b/docs/prototypes/unified-task-view/screenshots/editor-b-desktop.png
new file mode 100644
index 0000000..3bf5722
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-b-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-b-mobile.png b/docs/prototypes/unified-task-view/screenshots/editor-b-mobile.png
new file mode 100644
index 0000000..9ecaaf3
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-b-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-c-desktop.png b/docs/prototypes/unified-task-view/screenshots/editor-c-desktop.png
new file mode 100644
index 0000000..69b674a
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-c-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/editor-c-mobile.png b/docs/prototypes/unified-task-view/screenshots/editor-c-mobile.png
new file mode 100644
index 0000000..7d78f34
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/editor-c-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/handoff-desktop.png b/docs/prototypes/unified-task-view/screenshots/handoff-desktop.png
new file mode 100644
index 0000000..4454688
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/handoff-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/handoff-mobile.png b/docs/prototypes/unified-task-view/screenshots/handoff-mobile.png
new file mode 100644
index 0000000..2b1f1cf
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/handoff-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/list-mobile.png b/docs/prototypes/unified-task-view/screenshots/list-mobile.png
new file mode 100644
index 0000000..f0590be
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/list-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/option-b-desktop.png b/docs/prototypes/unified-task-view/screenshots/option-b-desktop.png
new file mode 100644
index 0000000..18d492d
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/option-b-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/option-b-mobile.png b/docs/prototypes/unified-task-view/screenshots/option-b-mobile.png
new file mode 100644
index 0000000..f71bf96
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/option-b-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/option-c-desktop.png b/docs/prototypes/unified-task-view/screenshots/option-c-desktop.png
new file mode 100644
index 0000000..5f43dad
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/option-c-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/option-c-mobile.png b/docs/prototypes/unified-task-view/screenshots/option-c-mobile.png
new file mode 100644
index 0000000..04fe876
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/option-c-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/review-desktop.png b/docs/prototypes/unified-task-view/screenshots/review-desktop.png
new file mode 100644
index 0000000..38d9477
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/review-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/review-mobile.png b/docs/prototypes/unified-task-view/screenshots/review-mobile.png
new file mode 100644
index 0000000..0439531
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/review-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/stale-desktop.png b/docs/prototypes/unified-task-view/screenshots/stale-desktop.png
new file mode 100644
index 0000000..eebdec4
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/stale-desktop.png differ
diff --git a/docs/prototypes/unified-task-view/screenshots/stale-mobile.png b/docs/prototypes/unified-task-view/screenshots/stale-mobile.png
new file mode 100644
index 0000000..f716f85
Binary files /dev/null and b/docs/prototypes/unified-task-view/screenshots/stale-mobile.png differ
diff --git a/docs/prototypes/unified-task-view/styles.css b/docs/prototypes/unified-task-view/styles.css
new file mode 100644
index 0000000..f21e6c5
--- /dev/null
+++ b/docs/prototypes/unified-task-view/styles.css
@@ -0,0 +1,408 @@
+* {
+ box-sizing: border-box;
+}
+body {
+ margin: 0;
+ color: #292a28;
+ background: #fafbf7;
+ font-family: Arial, sans-serif;
+}
+.fixture-banner {
+ background: #e8ebdd;
+ padding: 10px 24px;
+ font-size: 12px;
+ text-align: center;
+}
+header {
+ display: flex;
+ justify-content: space-between;
+ gap: 16px;
+ padding: 22px 32px;
+ border-bottom: 1px solid #dce0d5;
+}
+main {
+ max-width: 1376px;
+ margin: auto;
+ padding: 24px 32px;
+}
+@media (max-width: 700px) {
+ main {
+ padding: 20px 16px;
+ }
+ header {
+ padding: 18px 16px;
+ }
+}
+button,
+input {
+ font: inherit;
+}
+button {
+ cursor: pointer;
+ color: inherit;
+ background: white;
+ border: 1px solid #cdd3c4;
+ border-radius: 7px;
+ padding: 10px 14px;
+ min-height: 44px;
+}
+button:disabled {
+ opacity: 0.5;
+ cursor: default;
+}
+button:hover:not(:disabled) {
+ background: #edf0e6;
+}
+button:focus-visible,
+input:focus-visible {
+ outline: 3px solid #627850;
+ outline-offset: 3px;
+}
+button[aria-pressed="true"] {
+ background: #e8eddf;
+ border-color: #627850;
+}
+p {
+ line-height: 1.5;
+}
+h1 {
+ font-size: 32px;
+ letter-spacing: -1px;
+ margin: 8px 0;
+}
+h2 {
+ font-size: 20px;
+ line-height: 1.3;
+ margin: 10px 0;
+}
+h3 {
+ font-size: 16px;
+ margin: 12px 0;
+}
+small,
+.footnote {
+ color: #62685c;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.muted {
+ color: #64695f;
+}
+.eyebrow {
+ font-size: 11px;
+ letter-spacing: 1.1px;
+ font-weight: 700;
+}
+.page-heading {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 16px;
+}
+.research-label {
+ border: 1px solid #ccd5c0;
+ padding: 9px 14px;
+ border-radius: 30px;
+ font-size: 12px;
+ white-space: nowrap;
+}
+.layout-nav {
+ display: flex;
+ gap: 8px;
+ margin: 16px 0 22px;
+}
+.overview {
+ display: grid;
+ grid-template-columns: 1.1fr 1fr 1fr;
+ border: 1px solid #dce0d5;
+ border-radius: 12px;
+ background: #f1f3eb;
+}
+.overview > div {
+ padding: 20px 24px;
+}
+.overview > :where(div + div) {
+ border-left: 1px solid #dce0d5;
+}
+.overview p {
+ margin: 8px 0;
+ font-size: 13px;
+}
+.controls {
+ display: flex;
+ align-items: end;
+ justify-content: space-between;
+ gap: 16px;
+ margin: 24px 0 16px;
+}
+.filters {
+ display: flex;
+ gap: 6px;
+ flex-wrap: wrap;
+}
+.filters button {
+ font-size: 13px;
+}
+.search {
+ display: grid;
+ gap: 4px;
+ color: #62685c;
+ font-size: 12px;
+}
+input {
+ border: 1px solid #cdd3c4;
+ background: white;
+ border-radius: 7px;
+ padding: 11px;
+ max-width: 100%;
+}
+.workspace {
+ display: grid;
+ grid-template-columns: minmax(0, 1.3fr) minmax(340px, 1fr);
+ gap: 24px;
+ align-items: start;
+}
+.section-heading {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.task-card {
+ display: flex;
+ flex-direction: column;
+ text-align: left;
+ gap: 12px;
+ width: 100%;
+ margin-bottom: 10px;
+ padding: 18px;
+ box-shadow: 0 2px 4px #292a2804;
+}
+.task-card strong {
+ font-size: 16px;
+}
+.task-card span {
+ font-size: 12px;
+}
+.task-card.selected {
+ border-left: 4px solid #627850;
+}
+.row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 10px;
+ flex-wrap: wrap;
+}
+.priority {
+ background: #e9ece1;
+ border-radius: 4px;
+ padding: 3px 6px;
+ margin-left: 6px;
+}
+.pill {
+ background: #f0f1eb;
+ padding: 4px 7px;
+ border-radius: 4px;
+}
+.warning,
+.attention-line {
+ color: #88501f;
+}
+.attention-line {
+ border-top: 1px solid #dbe0d1;
+ padding-top: 10px;
+}
+.detail {
+ background: white;
+ border: 1px solid #d6ddcd;
+ border-radius: 12px;
+ padding: 24px;
+ margin-top: 6px;
+}
+.detail > h2 {
+ font-size: 24px;
+}
+.detail p {
+ font-size: 14px;
+}
+.next-action {
+ background: #fff5e5;
+ border: 1px solid #ecd4b4;
+ border-radius: 8px;
+ padding: 16px;
+ margin: 22px 0;
+}
+.primary {
+ background: #566749;
+ color: white;
+ border-color: #566749;
+}
+.primary:hover:not(:disabled) {
+ background: #435238;
+}
+.facts {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 18px;
+}
+.facts > div {
+ border-bottom: 1px solid #e7e9e2;
+ padding-bottom: 14px;
+}
+dt {
+ color: #64695f;
+ font-size: 12px;
+}
+dd {
+ margin: 7px 0;
+ font-weight: 600;
+ font-size: 14px;
+}
+.source-links {
+ display: flex;
+ gap: 8px;
+ flex-wrap: wrap;
+ margin-top: 22px;
+}
+.source-links button {
+ font-size: 12px;
+}
+.simulation {
+ margin-top: 30px;
+ padding: 18px;
+ border: 1px dashed #aeb9a0;
+ border-radius: 9px;
+}
+.simulation > div {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin: 12px 0;
+}
+.simulation button {
+ font-size: 12px;
+}
+.back {
+ display: none;
+}
+.layout-1 {
+ grid-template-columns: 1fr;
+}
+.board {
+ display: grid;
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 12px;
+}
+.board .row {
+ flex-direction: column;
+ align-items: start;
+}
+.board .task-group {
+ background: #f0f2eb;
+ border-radius: 8px;
+ padding: 12px;
+}
+.layout-1 .detail {
+ max-width: 800px;
+}
+.notice-container {
+ position: fixed;
+ inset: 0;
+ pointer-events: none;
+ display: grid;
+ place-items: end center;
+ padding: 24px;
+}
+.notice {
+ pointer-events: auto;
+ width: min(520px, 100%);
+ padding: 28px;
+ background: white;
+ border-radius: 14px;
+ box-shadow: 0 20px 80px #0003;
+}
+.empty {
+ padding: 30px;
+ background: white;
+}
+@media (max-width: 700px) {
+ h1 {
+ font-size: 26px;
+ }
+ .page-heading {
+ display: block;
+ }
+ .research-label {
+ display: inline-block;
+ margin-bottom: 8px;
+ }
+ .layout-nav {
+ flex-direction: column;
+ }
+ .overview {
+ grid-template-columns: 1fr;
+ }
+ .overview > div {
+ padding: 14px 18px;
+ }
+ .overview > :where(div + div) {
+ border-left: 0;
+ border-top: 1px solid #dce0d5;
+ }
+ .overview h2 {
+ font-size: 18px;
+ }
+ .controls {
+ align-items: stretch;
+ flex-direction: column;
+ }
+ .workspace {
+ grid-template-columns: minmax(0, 1fr);
+ }
+ .detail {
+ padding: 18px;
+ }
+ .show-detail .task-list {
+ display: none;
+ }
+ .show-list .detail {
+ display: none;
+ }
+ .back {
+ display: block;
+ margin-bottom: 22px;
+ }
+ .facts {
+ grid-template-columns: 1fr;
+ }
+ .board {
+ grid-template-columns: 1fr;
+ }
+ .task-card .row {
+ flex-direction: row;
+ }
+ .section-heading {
+ gap: 12px;
+ }
+ .detail p {
+ overflow-wrap: anywhere;
+ }
+}
+
+.mobile-context {
+ display: none;
+}
+@media (max-width: 700px) {
+ .mobile-detail .page-heading,
+ .mobile-detail .layout-nav,
+ .mobile-detail .overview,
+ .mobile-detail .controls {
+ display: none;
+ }
+ .mobile-detail .mobile-context {
+ display: block;
+ margin-top: 0;
+ color: #566749;
+ font-size: 13px;
+ }
+}
diff --git a/docs/prototypes/unified-task-view/tsconfig.json b/docs/prototypes/unified-task-view/tsconfig.json
new file mode 100644
index 0000000..52a3476
--- /dev/null
+++ b/docs/prototypes/unified-task-view/tsconfig.json
@@ -0,0 +1 @@
+{ "extends": "../../../tsconfig.json", "include": ["*.tsx", "*.ts"] }
diff --git a/docs/prototypes/unified-task-view/vite.config.mjs b/docs/prototypes/unified-task-view/vite.config.mjs
new file mode 100644
index 0000000..9ed5c6f
--- /dev/null
+++ b/docs/prototypes/unified-task-view/vite.config.mjs
@@ -0,0 +1,10 @@
+import { fileURLToPath } from "node:url";
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+
+export default defineConfig({
+ root: fileURLToPath(new URL(".", import.meta.url)),
+ plugins: [react()],
+ server: { host: "127.0.0.1", port: 4182, strictPort: true },
+ build: { outDir: "/tmp/unified-task-view-build", emptyOutDir: true },
+});