WIP: Attention Inbox end-to-end (WI-parked trigger) #284
Closed
toasterson
wants to merge 1 commit from
claude/wi-019f1777-attention-inbox-end-to-end-wi-parked-tri into main
pull from: claude/wi-019f1777-attention-inbox-end-to-end-wi-parked-tri
merge into: toasterson:main
toasterson:main
toasterson:claude/wi-019ff2f6-create-work-item-ignores-current-phase-d
toasterson:claude/wi-019fd84d-two-layer-operator-scope-property-mint-p
toasterson:claude/wi-019fbe99-lane-faults-are-billed-to-work-items-sic
toasterson:claude/wi-019fd84d-pwa-renders-turnoutcome-by-recovery-axis
toasterson:claude/wi-019fe0e9-finish-the-pwa-phase-axis-cutover-on-cur
toasterson:claude/wi-019fd84c-buf-breaking-change-ci-wire-json-across
toasterson:claude/wi-019ff2f4-reproduce-a-hung-acp-session-on-demand-p
toasterson:claude/wi-019fd84b-anima-mq-v1-proto-envelope-package-broke
toasterson:claude/wi-019fc44d-pre-push-test-gate-iterations-are-witnes
toasterson:claude/wi-019f9079-wi-2-acp-over-vsock-transport-in-anima-r
toasterson:claude/wi-019ff0c1-test-network-subnet-collision-something
toasterson:claude/wi-01a00b8c-ci-verdict-pipeline-is-fully-dead-orches
toasterson:migration-verification-20260818
toasterson:claude/wi-019fa954-mcp-proxy-registry-sessions-get-one-endp
toasterson:claude/wi-019fd3c0-pwa-image-tag-lives-in-a-raw-pwa-yaml-th
toasterson:claude/wi-019fa59c-double-gate-a-second-review-phase-where
toasterson:claude/wi-019fc2cc-ci-infrastructure-failures-qemu-ssh-rese
toasterson:claude/wi-019fe0f2-trace-scheduler-decisions-runner-attachm
toasterson:claude/wi-019fce0d-reviewer-verdicts-are-not-persisted-to-w
toasterson:claude/wi-019fe0f2-expose-bounded-fleet-and-work-flow-metri
toasterson:claude/wi-019fe0f7-cut-gate-reads-to-phase-state-verify-adr
toasterson:claude/wi-019fe0f2-restore-dashboardservice-against-the-mig
toasterson:claude/wi-019fa59b-publish-transient-chunk-deltas-to-a-per
toasterson:claude/wi-019fe0ee-checkpoint-typed-progress-witnesses-and
toasterson:claude/wi-01a00c91-builds-escape-the-per-slot-cargo-target
toasterson:claude/wi-019fd894-plan-canvas-wi-dependency-graph-with-fro
toasterson:claude/wi-01a00ec5-a-timed-out-turn-discards-the-worktree-a
toasterson:claude/wi-01a004d3-build-the-runner-image-in-ci-from-docker
toasterson:claude/wi-01a00afa-runner-write-safe-directory-entries-to-g
toasterson:claude/wi-01a009dc-circuit-breaker-state-fails-to-load-on-e
toasterson:claude/wi-019ff175-adr-0038-acp-has-no-structured-agent-to
toasterson:claude/wi-01a005fc-the-acp-brief-carries-the-description-bu
toasterson:claude/wi-01a00462-a-runner-blocked-session-is-unreapable-t
toasterson:claude/wi-019ff173-pwa-chat-anchor-the-user-s-message-to-th
toasterson:claude/wi-01a00463-anima-runner-leaks-its-executor-child-on
toasterson:claude/wi-019fe61e-agent-sessions-have-no-git-push-credenti
toasterson:claude/wi-019ff2f4-stamp-liveness-witnesses-from-the-acp-ch
toasterson:claude/wi-019fd84c-witness-and-park-logic-consume-the-turno
toasterson:claude/wi-019fd84c-runner-stops-relabeling-human-cancels-ca
toasterson:claude/wi-019fd84c-turnoutcome-closed-14-variant-proto-enum
toasterson:claude/wi-019fd84c-afk-dispatch-requires-a-requested-outcom
toasterson:claude/wi-019fd84d-break-glass-reset-reason-every-operator
toasterson:claude/wi-019fd84d-divergence-report-db-vs-registry-vs-brok
toasterson:claude/wi-019ff174-pwa-chat-make-a-tool-call-say-what-it-is
toasterson:claude/wi-019fe0f0-reap-heartbeat-live-but-activity-dead-tu
toasterson:claude/wi-019fe0ee-persist-scheduling-clocks-and-leases-so
toasterson:claude/wi-019ff093-mark-implementation-complete-advances-wo
toasterson:claude/wi-019ff174-pwa-chat-summarise-a-finished-turn-s-wor
toasterson:claude/wi-019fd894-satisfied-edges-feed-context-dependency
toasterson:claude/wi-019fe1d3-no-runner-can-reach-dind-so-the-janitor
toasterson:claude/wi-01a009dc-quota-probe-kills-the-claude-code-lane-a
toasterson:claude/wi-019fe251-the-pre-push-gate-runs-tests-but-not-cli
toasterson:claude/wi-019fdd2a-lane-quota-detection-uses-a-total-turn-t
toasterson:claude/wi-019fd894-orphaned-edges-and-blocked-visibility-pa
toasterson:claude/wi-019fd894-dependency-edge-api-surface-grpc-mcp-too
toasterson:claude/wi-019fd893-edge-witness-kind-dependent-satisfaction
toasterson:claude/wi-01a0057c-sessions-finish-with-no-captured-diff-an
toasterson:claude/wi-019fa59e-retire-failed-dispatch-count-per-item-ph
toasterson:claude/wi-019fd895-anima-server-wedges-grpc-mcp-accept-conn
toasterson:claude/wi-019fce0d-in-flight-ceiling-stranded-working-queue
toasterson:claude/wi-019fd84c-sidechannel-detection-runner-flags-branc
toasterson:claude/wi-019fff95-the-runner-s-anima-owner-worktree-tag-is
toasterson:claude/wi-019fe0f0-add-immutable-graph-version-records-and
toasterson:claude/wi-019fbe42-inventory-every-psql-kubectl-recipe-oper
toasterson:claude/wi-019fe0f7-move-exit-bar-state-onto-pinned-phase-in
toasterson:claude/wi-019ff075-an-orphaned-solstice-dispatch-strands-a
toasterson:claude/wi-019ff173-pwa-chat-pin-the-pending-permission-esca
toasterson:agent/19ce972d63dc
toasterson:agent/972084064aa3
toasterson:claude/wi-019fe0e9-operator-watch-set-board-backed-by-bound
toasterson:claude/wi-019fe0e9-clean-addressed-session-exchange-after-l
toasterson:claude/wi-019fa59e-detect-session-death-by-routability-mand
toasterson:claude/wi-019fe706-solstice-rabbitmq-is-degraded-job-reques
toasterson:claude/wi-019fe18f-the-pre-push-test-gate-bills-toolchain-f
toasterson:claude/wi-019fe0e9-audited-reconcile-session-releases-zombi
toasterson:claude/wi-019fe0e9-use-one-durable-https-credential-path-fo
toasterson:claude/wi-019fe6f2-stranded-work-items-drowns-real-strandin
toasterson:claude/wi-019fe6fd-pwa-data-error-51-items-without-workflow
toasterson:claude/wi-019fec06-items-with-a-changes-requested-review-ve
toasterson:claude/wi-019fe0f0-cache-provider-quota-back-off-failures-a
toasterson:claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
toasterson:claude/wi-019fce0d-unpark-work-item-mcp-tool-one-audited-un
toasterson:claude/wi-019fe0ee-assemble-each-agent-turn-from-durable-ho
toasterson:claude/wi-019fe0ee-codify-the-anima-owned-horizon-boundary
toasterson:claude/wi-019fe0e7-re-implement-owner-tagged-resource-reape
toasterson:claude/wi-019fd893-dependency-edges-table-dag-write-path-de
toasterson:claude/wi-019fce0d-operator-scheduling-controls-over-mcp-ho
toasterson:claude/wi-019fd84d-interleaved-refusal-witnesses-indefinite
toasterson:claude/wi-019fdd2a-a-fully-cleared-exit-bar-does-not-advanc
toasterson:claude/wi-019fd898-corrective-resume-dispatch-to-an-acp-gat
toasterson:claude/wi-019fe5fd-approve-and-merge-refuses-heads-whose-gr
toasterson:claude/wi-019fe624-testing-phase-items-with-a-moved-head-ha
toasterson:claude/wi-019fdd4c-the-24h-in-flight-ceiling-has-no-operato
toasterson:claude/wi-019fa5a0-move-the-dashboard-onto-the-activity-fan
toasterson:claude/wi-019fe0f2-add-one-shared-otlp-observability-initia
toasterson:claude/wi-019fce4e-approve-and-merge-no-already-merged-shor
toasterson:claude/wi-019fce0d-lane-occupancy-over-mcp-list-sessions-by
toasterson:claude/wi-019fbdc4-pwa-plan-detail-workflow-graph-define-im
toasterson:claude/wi-019fd86c-worktree-prep-rebase-parks-items-that-va
toasterson:claude/wi-019fa96b-session-project-binding-covers-work-item
toasterson:claude/wi-019fdd87-a-failed-turn-does-not-roll-back-mark-im
toasterson:claude/wi-019fe0f0-add-audited-cancelsession-that-terminate
toasterson:claude/wi-019fcde5-work-items-cannot-be-looked-up-by-their
toasterson:claude/wi-019fa5a0-persist-the-assembled-prompt-to-s3-along
toasterson:claude/wi-019fa59f-reviews-land-in-the-thread-and-reviewers
toasterson:claude/wi-019fbdc3-pwa-workflowgraph-node-component-workflo
toasterson:claude/wi-019fa5a0-single-active-consumer-akh-lanes-and-rel
toasterson:claude/wi-019faa5d-nothing-prunes-session-tokens-104-083-ro
toasterson:claude/wi-019fa59c-graph-versioning-pin-in-flight-work-item
toasterson:claude/wi-019fa59c-anima-work-exchange-lane-queues-and-the
toasterson:claude/wi-019fa59d-dispatch-branches-on-phasekind-instead-o
toasterson:claude/wi-019fa59d-anima-session-addressed-exchange-with-pe
toasterson:claude/wi-019fa5a0-attempt-counter-in-postgres-surviving-ev
toasterson:claude/node-workflow-overview-wi-4c95cf
toasterson:claude/wi-019fc826-the-account-quota-probe-polls-the-provid
toasterson:claude/grpc-api-surface-evaluation-cd6026
toasterson:claude/wi-019fc9a5-exit-bar-gates-survive-across-pr-generat
toasterson:claude/wi-019fa59f-boards-read-the-phase-graph-instead-of-a
toasterson:claude/wi-019fcce5-implementation-sessions-lack-workitem-wr
toasterson:claude/wi-019f9fc2-anima-has-no-ssh-credential-story-runner
toasterson:claude/wi-019f9946-a-work-item-filed-without-a-plan-has-no
toasterson:claude/wi-019fa3a4-reviewers-cannot-build-the-code-they-rev
toasterson:claude/wi-019fc638-anima-emits-no-traces-metrics-or-structu
toasterson:agent/4a6b46e02b58
toasterson:claude/wi-019fc63c-dispatch-has-no-dependency-graph-work-it
toasterson:agent/e7469dfa074b
toasterson:claude/wi-019f9fb1-quota-aware-scheduling-budget-provider-c
toasterson:agent/2cfe41dbf7f5
toasterson:claude/wi-019faa43-the-janitor-s-two-sweeps-both-exclude-th
toasterson:claude/wi-019fcc85-move-cargo-target-dir-from-per-runner-to
toasterson:claude/wi-019f8615-agents-page-show-each-agent-s-live-slot
toasterson:agent/1c04647808fc
toasterson:claude/wi-019dbb8e-auth-for-akh-medu-seshat-envoy-gateway-s
toasterson:claude/wi-019dc57c-p1-5-seshat-ingest-hook-transcripts-libr
toasterson:claude/wi-019ddfd9-mcp-tool-time-bounded-out-of-hours-sessi
toasterson:claude/wi-019e8873-native-solstice-ci-dispatch-send-explici
toasterson:claude/beautiful-leavitt-d2a8d7
toasterson:agent/8e80f1909fac
toasterson:agent/baf43b288ad9
toasterson:claude/wi-019fc9a5-a-failed-git-push-silently-discards-the
toasterson:agent/0d500af2cd88
toasterson:agent/c4a84cf02ec2
toasterson:claude/wi-019f9ea6-dispatched-sessions-hit-scope-walls-mid
toasterson:claude/wi-019fc826-the-account-quota-probe-hammers-the-prov
toasterson:claude/wi-019f98b5-opencode-lane-is-dead-weight-every-turn
toasterson:claude/wi-019fb430-list-working-document-kinds-omits-ci-ret
toasterson:agent/cb05e821a3bc
toasterson:agent/a9ae8f731a77
toasterson:agent/89755cf8eb3e
toasterson:claude/wi-019fa59d-error-queue-drainer-park-the-work-item-s
toasterson:claude/wi-019fc2cc-flaky-test-no-reviewer-dispatched-twice
toasterson:agent/0c195963cd85
toasterson:agent/21dbfeaf95c9
toasterson:agent/30dad6db7aa0
toasterson:agent/917a59a781d8
toasterson:agent/b557136f8edf
toasterson:claude/wi-019fc3bd-park-vs-live-session-race-parks-land-whi
toasterson:agent/2c4165ec8872
toasterson:claude/wi-019fa59b-phasekind-enum-and-the-fk-constrained-ph
toasterson:claude/wi-019fa9f3-dispatch-ordering-does-not-prefer-work-i
toasterson:claude/wi-019fa8f3-the-scheduler-s-unclaimed-wi-warning-re
toasterson:claude/wi-019fa59a-dispatch-payload-type-and-the-idempotenc
toasterson:claude/wi-019fa979-the-reviewer-slot-reservation-is-applied
toasterson:claude/wi-019fa59b-error-envelope-and-per-lane-error-queues
toasterson:claude/wi-019fa7d9-an-executor-must-be-able-to-rebase-its-o
toasterson:claude/wi-019fa59b-seed-the-default-phase-graph-with-ci-to
toasterson:claude/wi-019fbe41-zombie-session-repair-is-a-raw-sql-sweep
toasterson:claude/wi-019fbe97-grpc-services-and-mcp-handlers-each-reim
toasterson:claude/wi-019fbe41-a-stale-recorded-pr-head-breaks-ci-dispa
toasterson:claude/wi-019fbe41-operator-forensics-needs-psql-no-queryab
toasterson:claude/wi-019fa59e-retire-anima-sched-max-active-for-runner
toasterson:claude/wi-019fb424-derive-every-git-remote-config-from-the
toasterson:claude/wi-019fa3d2-the-ai-gate-ships-no-review-instructions
toasterson:claude/wi-019f9e06-implement-emit-contextwindowstats-from-p
toasterson:claude/wi-019fb464-a-review-analysis-wi-that-delivers-its-f
toasterson:claude/wi-019fa3a4-approve-and-merge-fails-permanently-on-f
toasterson:claude/wi-019f9e06-implement-a-b-stats-comparison-harness-4
toasterson:claude/wi-019fb477-per-executor-lane-state-leaks-on-session
toasterson:claude/wi-019fa59a-anima-mq-crate-topology-declaration-for
toasterson:claude/wi-019fba1f-witness-output-first-classification-coun
toasterson:claude/wi-019f9e06-implement-strategy-specific-stats-for-co
toasterson:claude/wi-019f841f-quick-reply-dedup-options-render-as-bull
toasterson:archive/wi-410-20260807
toasterson:claude/wi-019fa5a0-owner-tagged-reaper-for-containers-workt
toasterson:archive/wi-394-20260807
toasterson:claude/wi-019fa59e-per-item-phase-revisit-cap-as-workflow-c
toasterson:claude/wi-019fa59f-surface-the-operator-watch-set-on-the-bo
toasterson:claude/wi-019fb477-deliverable-reconcile-fails-every-tick-p
toasterson:claude/wi-019fa59e-migrate-exit-bar-columns-to-phases-and-v
toasterson:claude/wi-019f8b49-wi-5b-drop-work-items-status-after-the-p
toasterson:claude/wi-019f841f-live-roster-presence-real-availability-o
toasterson:claude/wi-019faf95-implementer-runs-the-touched-crates-test
toasterson:claude/wi-019faf96-migration-086-cannot-run-under-sqlx-inde
toasterson:claude/wi-019faf95-corrective-dispatch-resumes-the-prior-se
toasterson:claude/wi-019faf95-refusal-is-not-an-empty-turn-distinct-wi
toasterson:claude/wi-019fa59f-24-hour-in-flight-ceiling-that-parks-wit
toasterson:claude/wi-019fb477-rejected-work-item-is-neither-dispatchab
toasterson:claude/wi-019faf95-session-accounting-capture-per-session-t
toasterson:claude/wi-019fb40f-a-terminal-worktree-prep-rejection-leaks
toasterson:claude/wi-019f90ad-scheduler-over-assigns-in-bursts-8-assig
toasterson:claude/wi-019f860b-pwa-chat-config-pickers-replay-a-dead-se
toasterson:claude/wi-019f85b9-wi-3-pwa-collapsible-subthread-ui
toasterson:claude/wi-019f841f-thread-scoped-activity-streaming-retire
toasterson:claude/wi-019f841e-forward-agent-message-content-blocks-end
toasterson:claude/wi-019f85b9-wi-2-runner-delegation-reporting-subthre
toasterson:claude/wi-019f52d2-review-loop-starvation-reviewer-re-dispa
toasterson:claude/wi-019eab9e-feature-mcp-read-tools-for-session-artif
toasterson:claude/wi-019e846d-catch-unwired-dead-code-pub-in-pub-mod-h
toasterson:claude/wi-019faa49-the-per-executor-cap-does-not-hold-acros
toasterson:claude/wi-019f615e-sia-populate-external-ref-external-state
toasterson:claude/wi-019dd0b7-wipsnapshot-retention-per-wi-cap-age-pru
toasterson:claude/wi-019dc0e8-git-remote-url-normalization-ssh-vs-git
toasterson:claude/wi-019fa9c4-ci-green-is-a-sticky-boolean-with-no-com
toasterson:claude/wi-019f85b9-wi-1-subthread-domain-model-parent-threa
toasterson:claude/wi-019f9087-pwa-workitemdetail-request-changes-appro
toasterson:claude/wi-019f9079-wi-1-spike-gates-the-rest-hypervisor-pic
toasterson:claude/wi-019f862a-project-overview-in-flight-section-split
toasterson:claude/wi-019f903c-ci-builds-pushes-multi-arch-deploy-image
toasterson:claude/wi-019f841e-resource-mentions-in-the-composer-files
toasterson:claude/wi-019f57aa-message-part-streaming-forward-acp-delta
toasterson:claude/wi-019e93df-mcp-ambient-get-work-item-detail-full-wi
toasterson:claude/wi-019e846d-in-server-merge-engine-hardening-anima-g
toasterson:claude/wi-019dbb9c-agent-annotation-pathway-broken-pat-lack
toasterson:claude/wi-019faa38-a-ci-green-work-item-awaiting-review-is
toasterson:claude/wi-019fa5a0-register-session-gate-reject-a-redeliver
toasterson:claude/wi-019fa902-the-ci-red-corrective-loop-hands-the-imp
toasterson:claude/wi-019fa945-per-executor-reservation-leaks-a-capped
toasterson:claude/wi-019f90f9-pwa-delivery-board-is-blind-to-the-phase
toasterson:claude/wi-019fa7c9-anima-runner-exec-slots-name-is-also-par
toasterson:claude/wi-019fa59c-distinguish-an-empty-turn-from-a-failed
toasterson:claude/wi-019f9aa3-ci-lints-against-an-unpinned-toolchain-d
toasterson:claude/wi-019f9fb8-dispatches-that-fail-before-the-session
toasterson:claude/wi-019fa59b-progress-witness-pr-aware-per-attempt-re
toasterson:claude/wi-019f9a17-every-native-ci-dispatch-fires-twice-rec
toasterson:claude/wi-019f9698-ci-red-corrective-loop-must-distinguish
toasterson:claude/wi-019f9ec2-a-dropped-amqp-connection-silently-ends
toasterson:claude/wi-019f84ec-enforce-session-project-binding-on-write
toasterson:claude/wi-019f903c-fleet-observability-metrics-alerts-for-r
toasterson:claude/wi-019fa7c6-a-turn-that-only-repairs-the-base-repo-s
toasterson:claude/wi-019fa7c6-a-rejected-assignment-re-dispatches-ever
toasterson:claude/wi-019f9b4b-reject-never-reaches-the-implementer-lin
toasterson:claude/wi-019f9b6e-reviewer-only-is-not-expressible-keeping
toasterson:claude/wi-019f9ac1-quota-aware-lanes-meter-usage-over-acp-s
toasterson:claude/wi-019f99ca-native-ci-falls-back-to-a-job-script-tha
toasterson:claude/wi-019f8610-remove-the-global-anima-sched-max-active
toasterson:claude/wi-019f990a-analysis-work-parks-itself-17-of-20-park
toasterson:claude/wi-019f9aa3-a-model-provider-429-is-indistinguishabl
toasterson:claude/wi-019f99a4-dispatch-queue-ignores-priority-strict-f
toasterson:claude/wi-019f83ce-wi-a-backend-escalation-core-schema-type
toasterson:claude/wi-019f98d9-you-cannot-follow-a-wi-along-its-route-1
toasterson:claude/wi-019f98b5-a-failed-turn-is-indistinguishable-from
toasterson:claude/account-quota-meter
toasterson:claude/wi-019fa2fc-the-akh-gateway-advertises-6-slots-for-a
toasterson:claude/wi-019fa243-every-re-dispatch-throws-away-the-previo
toasterson:claude/wi-019fa2de-a-review-session-is-dispatched-alongside
toasterson:claude/wi-019f9e35-worktree-base-branch-is-one-global-env-v
toasterson:claude/thread-window-redesign-2360d9
toasterson:claude/wip-lift-rehook
toasterson:claude/wi-019f9b1d-review-slot-reservation-leaks-when-a-rev
toasterson:claude/wi-019f99ac-create-project-leaves-new-projects-undis
toasterson:claude/wi-019f9980-pin-ci-verdicts-to-the-commit-under-test
toasterson:claude/wi-019f8438-wi-d-frontend-permission-card-render-hum
toasterson:claude/wi-019f8438-wi-c-runner-interceptor-checkpoint-detec
toasterson:claude/wi-019f8438-wi-b-executor-token-scope-stripping-q7c
toasterson:claude/wi-019f8602-reopen-work-items-when-their-orphaned-se
toasterson:claude/wi-019f90cf-review-analysis-wis-never-close-no-phase
toasterson:claude/wi-019f90fe-mcp-update-work-item-advertises-status-v
toasterson:claude/claude-lane-opus-5
toasterson:claude/wi-019f17e4-user-settings-foundation-store-registry
toasterson:claude/wi-019f1779-per-user-configurable-inbox-auto-clear-w
No reviewers
Labels
Clear labels
Compat/Breaking
Breaking change that won't be backward compatible
Kind/Bug
Something is not working
Kind/Documentation
Documentation changes
Kind/Enhancement
Improve existing functionality
Kind/Feature
New functionality
Kind/Security
This is security issue
Kind/Testing
Issue or pull request related to testing
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
Reviewed
Confirmed
Issue has been confirmed
Reviewed
Duplicate
This issue or pull request already exists
Reviewed
Invalid
Invalid issue
Reviewed
Won't Fix
This issue won't be fixed
Status
Abandoned
Somebody has started to work on this but abandoned work
Status
Blocked
Something is blocking this issue or pull request
Status
Need More Info
Feedback is required to reproduce issue or to continue work
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
toasterson/Anima!284
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/wi-019f1777-attention-inbox-end-to-end-wi-parked-tri"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anima work item
019f1777-b171-7390-ac92-a9583112a848.What to build
The tracer bullet that establishes the whole Attention Inbox pipeline with ONE trigger, proving proto → server read-model → PWA component → tests. The dashboard gains an Inbox as its hero element (above Runner Fleet) that lists parked work items (status
needs_human), one routable row per WI, each linking to that WI. This replaces the old "Recent Activity" flat list section (delete it). Counters and the other three triggers are separate WIs — do NOT touch them here.End-to-end behaviour: open the dashboard → see an "Inbox" section at the top → each parked WI in a project I have a role on shows as a row (title + "parked" reason + relative age) → clicking routes to the WI detail. When a WI is un-parked, its row disappears on next load (state-derived, no dismiss).
Pushed context
Design is fixed by ADR 0015 (
docs/adr/0015-dashboard-attention-inbox.md) and the Attention feed glossary entry inCONTEXT.md— read both first. Key constraints from the grill:crates/anima-server/src/services/dashboard.rsbuild_dashboard, and RBAC incrates/anima-core/src/rbac/).WorkItemStatus::NeedsHuman(DBstatus = 'needs_human'); seecrates/anima-core/src/domain/workitem.rs.Proto + server (fold into the existing Dashboard, reuse live updates — do NOT add a new RPC):
proto/anima/v1/dashboard.proto— add a messageAttentionItem { string id; string trigger; string title; string project_id; string work_item_id; string slice_id; string plan_id; string document_id; string route; string reason; google.protobuf.Timestamp occurred_at; }andrepeated AttentionItem attention_inbox = N;onmessage Dashboard.triggeris a string taxonomy ("wi_parked" now; "decision_pending" / "slice_done" / "deliverable_review" added by later WIs).routeis the app path the row links to.npm run generateinanima-pwa/— committedsrc/gen/*must be regenerated and reconciled (see the PWA codegen-drift convention; stale gen masks drift).crates/anima-server/src/services/dashboard.rs— inbuild_dashboard, add a query for parked WIs (RBAC-scoped) and map them toAttentionItem { trigger: "wi_parked", route: "/work-items/<id>" (match the PWA's actual WI route), reason: "parked — needs you", occurred_at: updated_at }. Add aWorkItemRepoquery if needed (crates/anima-db/src/repo/workitem.rs).PWA:
anima-pwa/src/pages/Dashboard/Dashboard.tsx— remove the "Recent Activity"<section>(~lines 180-208) and itslistActivityusage; add an Inbox section as the first child (above Runner Fleet). Source rows fromgetDashboard().attentionInbox(extend the dashboard fetch inanima-pwa/src/lib/grpcApi.ts—getFleetalready callsdashboardClient.getDashboard({}); add anattention_inboxmapping rather than a second round-trip).anima-pwa/src/pages/Dashboard/AttentionInbox.tsx(+ aRow): per-trigger icon/colour (onlywi_parkednow, but switch ontriggerso later WIs slot in), title, reason, relative age, whole row is a<Link to={route}>. Empty state: "Inbox zero — nothing needs you."anima-pwa/src/lib/mockApi.ts+mockData.tsshould return a couple ofattentionInboxfixtures so tests + mock mode render.Acceptance criteria
AttentionItem+Dashboard.attention_inboxadded to the proto; Rust + PWA stubs regenerated and committed.build_dashboardreturns parked WIs asattention_inboxitems, scoped to the caller's RBAC projects (a user with no role on a project does NOT see its parked WIs).listActivitycall are removed from the dashboard.cargo check -p anima-server -p anima-dbclean;npm run verifygreen (a Dashboard/AttentionInbox test asserts a parked row renders + routes).Blocked by
7d3bd095b0toe892c69de1e892c69de1to0ed58ff9f00ed58ff9f0to4254c8fa744254c8fa74tod033ef841dd033ef841dtod3cc8ef059Subsumed by #287 and merged at
ae5d72d. Your WI-parked trigger is included in #287's full inbox trigger set; the four inbox PRs were parallel implementations of the same feature, so the superset (#287) landed. WI marked done. Closing.Pull request closed