Repository navigation
Description
Reconciled remaining UI scope — 2026-09-30
The grouped Bot Inbox and source navigation are shipped. This issue remains open for the default flat timeline, Flat/By source menu, independent event detail and truthful Processing/Handled/Needs repair states below. Do not rebuild the completed policy/harvest baseline (#362/#363–#370). Existing claims remain scoped as recorded.
Parent and ownership
- Feature Project: https://github.com/orgs/BotHarness/projects/3. Historical parent [Retired] Post-M4: Messaging / Bot Inbox / Orchestrator / Assignments #30 is retired. Related: Bot Attention: causal aggregation, escalation and recovery acceptance #47 canonical Bot attention facts; Hub: Bot attention policy & turn harvest #362 attention policy and turn harvest; Spec: Human Inbox unread, personal attention and actions #126 cross-Bot Human Inbox; IM identities and messaging: provider coordination #48 future external providers.
- This ticket owns the DM-scoped Bot Inbox presentation. It does not create another Inbox database or implement wake policy.
Current baseline and design change
The shipped sidebar entry reads canonical Source Events and Inbox Admissions and currently groups Channel events by Channel and Assignment reports by Assignment Session. Keep its source navigation, repair states, and restart behavior. Replace the default grouped presentation with a newest-first, paginated flat event list for the selected PersonaBot. Do not collapse all events from one Session into one row or hide earlier events. Match the Sessions collapsible header: put a three-dot icon button at its right edge. Its menu switches Flat / By source grouping; default Flat. By source is collapsible. Persist the choice per Bot in the browser. Do not show these options as permanent tabs.
Row and detail contract
- One attention row identifies the canonical Source Event / Admission (or the current coalesced Attention Unit for unobserved revisions) and keeps a stable source reference. Show source class and readable origin, actor, short content preview, event time, and truthful state. Grouping is a view over these rows, not their identity.
- Source classes include Human DM, Bot-to-Bot DM, Group message, Assignment Report/Host notice, and future direct Bridge or webhook events that have no Channel. Do not assume every event belongs to an Assignment Session or Channel. Show provider/app identity only when trusted provenance exists.
- Clicking a row opens an event detail with full permitted content/provenance, state and timestamps, and a separate Open source action when the Channel message or Assignment Session still exists. If the source cannot be opened, the event detail remains available and explains why.
- Default primary states: Pending (admitted but not yet included in Orchestrator context), Processing (included in an active Orchestrator turn), Handled, Ignored, and Needs repair. A queued DSH input is not Processing; mere Human viewing is not Bot observation. Digest-below-threshold and silent are Pending sublabels explaining wake behavior. Observation time is a detail fact, not a synonym for Handled. A failed/interrupted turn must not remain falsely Processing after restart.
- Human Inbox remains the cross-Bot action/information projection in Spec: Human Inbox unread, personal attention and actions #126. It links to the relevant Bot Inbox event or source; it does not mirror the complete raw Bot event list.
Tracer bullets and acceptance
- Real Human DM plus Assignment Report interleave in one newest-first list. Follow each event through Pending → Processing → Handled (or Needs repair), open its detail/source, refresh, and verify no duplicate rows or false statuses. Capture light/dark UI evidence and stop for Human QA.
- Add Group and Host/system events, optional By source view, per-Bot view persistence, pagination and filters without disturbing global chronological order. Stop for Human QA.
- External Bridge/webhook rows use the same contract when IM identities and messaging: provider coordination #48 provides those sources; do not fabricate an external-provider fixture as a shipped integration.
Use #47's canonical query and #362/#369 turn-consumption facts to derive status; no second store. The final Processing transition must align with #369's harvest claim/commit semantics. Keyboard access, responsive layout, i18n, and reduced motion follow the existing Channel sidebar contract.
The entry remains DM-scoped: a Group Channel does not show one Bot own Inbox, and a Bot with no attention facts need not display an empty entry. Event detail retrieval must be bounded and authorized; oversized bodies remain behind their existing Spill locator.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
[-]Tracer: PersonaBot navigation 增加 Bot Inbox 面板(右侧 sidebar,可折叠)[/-][+]Tracer: Channel sidebar 增加 Bot Inbox entry(可折叠,DM scope)[/+]12 remaining items
fix: keep FYI mentions handled without replies
fix: observe pending mentions on explicit Channel reads
fix: keep ignored running admissions terminal
DoodleBears commentedon Sep 26, 2026
Agent work outcome
codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf43bb5f05f492672e23f30d3d59d1cde2e053e9938a. Explicit Bot dismissal now records ignored on its canonical Inbox Admission; ordinary no-reply FYI remains handled. Channel read records observation for pending non-report Admissions, and ignored running Admissions stay terminal.DoodleBears commentedon Sep 26, 2026
Agent work claim
codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf43(not a DSH Session)codex/152-new-attention-expandfix: reopen Bot Inbox source when new attention arrives (#338)
DoodleBears commentedon Sep 26, 2026
Agent work outcome
codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf430815982200ca3aa29fefb9ebee64ee3c7d0300f2. A collapsed Bot Inbox source group reopens when new active attention or a changed state arrives; an unchanged manual collapse remains closed.[-]Tracer: Channel sidebar 增加 Bot Inbox entry(可折叠,DM scope)[/-][+]Bot Inbox:平铺事件时间线、来源详情与处理状态(DM sidebar)[/+]DoodleBears commentedon Sep 27, 2026
Group catch-up status clarification (2026-09-28)
#362 and #364 now specify that
mentionsordinary Group events are admitted as pending context (without independent wake), whilesilentordinary events remain pending until explicit Bot reading. The Bot Inbox remains newest-first for Human browsing; this does not control Orchestrator harvest order. Harvest reserves a share for the oldest pending events alongside a direct @ and nearby context, with a per-Channel ceiling of 100 and a turn-wide context budget. Events omitted by that cap stay Pending. Only events actually entering an active Orchestrator turn or returned bychannel_readare Processing, and only a successful turn makes them Handled. Keep Observation as an audit/detail fact rather than a sixth primary row state. Please use the revised ADR-0070/0074/0077 and #364 as the UI data contract.