Skip to content

Bot activity: Orchestrator and Assignment aggregation #123

Closed

Description

@DoodleBears

Delivered outcome — 2026-10-04

The Host now selects Orchestrator/Assignment execution deterministically, publishes independent Human attention and safe revisioned summaries, and supplies the shared Client presentation. The real isolated DSH handoff, reconnect, restart and concurrent completion paths have Human acceptance; automated tests cover mixed kinds, completion permutations, ownership and bounded disclosure. Delivery evidence: final acceptance audit.

Feature Project

What to build

把 Orchestrator Session 与 Assignment Sessions 的真实并发 activity 聚合成一个 PersonaBot presentation snapshot。Orchestrator active 时默认代表 PersonaBot;Orchestrator 明确 waiting-on-assignment 时,呈现 active Assignment activity;多个 active Assignments 使用 Ticket #122 的 tool aggregation 规则,不引入 configurable priority。

waiting-human、blocked、approval 与 informational 是独立 attention 轴,通过 badge/indicator 呈现,不覆盖 execution activity 或伪造成 Session lifecycle。

Presentation snapshot contract

除机器可用的 activity/effect 字段外,projection 提供 bounded、可本地化的安全摘要输入,使 Channel consumer 能表达“这个 PersonaBot 正在做什么”:

  • selected source role/reference(Orchestrator 或聚合后的 Assignment source)。
  • activity/effect kind 与安全 label key。
  • 可选 safe tool name / provider-declared publicDetail。
  • active source count、startedAt/elapsed basis 和 attention axis。
  • revision/cause;不携带 raw reasoning、arguments、results 或完整 Session nodes。

选择哪个 source 和摘要是 Projection 的确定性结果。sidebar、composer、hover/focus、collapsible 和未来 Live2D/plugin consumer 不得各自重新实现优先级或聚合算法。

Acceptance criteria

  • active Orchestrator 默认胜出;只有 explicit waiting-on-assignment 才呈现 active Assignment activity。
  • 多 Assignment 同 kind 与不同 kind 的聚合结果确定且与事件顺序无关。
  • Assignment 完成/停止/失败后 presentation 及时回到 Orchestrator 或 idle,不遗留 stale animation。
  • attention 与 activity 正交:blocked/waiting-human/approval/informational 不改写 durable Session facts。
  • sidebar、composer、hover/focus、collapsible 与可查询 snapshot 对同一聚合 revision 一致。
  • 安全摘要只由 bounded fields 与 locale key 组成,不包含 raw chain-of-thought、tool payload 或 secret。
  • restart/replay、unknown ownership、orphan descendant 与 concurrent completion tests fail closed。
  • Human 可在真实 Assignment Runtime 中观察“Orchestrator 等待 → Assignment 活动 → 回到 Orchestrator”的完整路径,并看到同步的一行安全说明。

Foundation references

Activity

  1. added this to the v1.0 milestone on Sep 20, 2026
  2. added
    enhancementNew feature or request
    V1.0Milestone v1.0; mirrors the GitHub milestone
    area:fullstackEnd-to-end Host and Client implementation
    area:ui-uxInteraction and visual experience; may accompany a code-layer area
    feature:activityPersonaBot activity, presence, and output signals
    feature:assignmentOrchestrator and Assignment collaboration
    scope:tracerHuman-testable implementation slice
    on Sep 20, 2026
  3. 91 remaining items

  4. DoodleBears commented on Oct 3, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — integration verified, actual review gate remains

  5. DoodleBears commented on Oct 3, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — blocked on actual CodeRabbit review

  6. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work resume — Human review owns quota fallback

  7. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 4, 2026
  8. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    #123 final acceptance audit

    Acceptance contract Implementation and verification evidence Delivery status
    Active Orchestrator takes precedence; explicit Assignment wait hands presentation to active Assignments #731 and #771; orchestrator-activity.test.ts, assignment-wait.test.ts, assignment-wait-runtime.test.ts; actual WAIT_VERIFIED and concurrent model runs Merged
    Same/mixed-kind Assignment aggregation is independent of arrival order Existing tool aggregate plus #776 canonicalizes deduplicated opaque references before the existing bound. Nine new regression cases, including every arrival/completion permutation and bounded membership; focused suite 60 tests passed #776 merged
    Completed/stopped/failed execution clears stale tool activity and restores Orchestrator/idle Projection clears at durable turn/end or disposal; native adapter cancel waits for idle and rejects error outcomes. Existing tool/projection/disposal, Runtime stop, wait cancellation and adapter error tests. Actual two-Assignment completion shows 2 → 1 → Orchestrator → idle Existing mechanism merged; deterministic completion coverage in #776
    Human attention is independent of execution and durable Session facts #737, #740, #761, #764; #773 uses canonical Workspace Grant actions and #775 canonical completed reports. Existing assignment-attention.test.ts, approval/query tests and Client attention parsing. Real Grant/report/restart verification All attention slices merged, including #773/#775
    Same aggregate and revision across sidebar/composer/hover/collapsible/query One Host tracker and revisioned stream/query seam, shared Client roster state; activity-live.test.ts, session-activity.test.ts, tool-activity.test.ts, avatar and Overview tests. Real connected/offline/reconnected screenshot sequence Merged; #776 sequence accepted
    Bounded localized safe summary, no reasoning/raw payload/secret Allowlisted projection and Client parsing; Tool details stay authorized opaque capabilities. tool-details.test.ts covers ownership, expiry, revocation, disclosure size and caller Fiber identity #727 merged; #122 closed; unchanged by current stack
    Restart/replay/unknown ownership/orphans/concurrent completion fail closed dsh-activity.test.ts, session-ownership.test.ts, tool-activity.test.ts, atomic rebuild and stale-generation Client tests. Real accepted Grant/report Host restart and concurrent reconnect proof Existing mechanism merged; completion permutations in #776
    Human observes real Runtime handoff and one-line synchronized status Actual Orchestrator creates and explicitly waits for real Assignments; authorized native timers execute and return reports; screenshots and bounded proof in #771/#776; Human accepted #771/#776 merged; Human accepted

    Recovery audit against installed DSH 0.2.0-rc.1: Session Store list() lists live loaded Sessions, not all stored histories. AgentLoop.resumeWith computes and durably appends interruptedTurnClosers before Session preparation/publication; restored pending tool calls are closed before they can represent live execution. BotHarness retains that native authority and clears tool detail capabilities on Turn end/disposal. This source audit found no demonstrated remaining recovery defect requiring a new production change. It is not a claim of an additional live forced-crash test. The concurrent real-model scenario exercises successful execute-kind tools; mixed kinds and failed/cancelled paths have automated coverage, not new live-model evidence.

    Evidence: #776 screenshots and reproduction, bounded proof.

    Preceding Goal outcome: #727 is merged and #122 is closed. All #123 acceptance contracts above are delivered and accepted. The consumed Assignment Runtime path is proven, while broader #81 remains outside this completion claim. Its broad blocking edge is retired from #123 because the required Runtime path is available and exercised; #81 stays open as a foundation reference. #124 and #505 remain deferred.

    Final delivery evidence

    PR Merged commit Final-head CI Review
    #773 965bf479 Passed Human accepted; unavailable CodeRabbit quota waived
    #775 25d8c49c Passed Human accepted; actual CodeRabbit review completed with no actionable comments
    #776 116645be Passed Human accepted; unavailable CodeRabbit quota waived

    198 focused integration tests across 14 files passed, in addition to the slice's 60 focused tests and final full CI. The nine new deterministic aggregation cases failed eight cases before the fix. The final #776 ancestry-only rebase preserves the entire accepted Git tree. All 23 embedded screenshot URLs across the three PRs were checked and return HTTP 200 with image content types.

    The real-model proof's recovered final assertion remains disclosed: the existing idle informational row is valid; successful completion requires no active Session labels and the actual completed scene. No false initial assertion is presented as a clean initial E2E result.

  9. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    V1.0Milestone v1.0; mirrors the GitHub milestonearea:fullstackEnd-to-end Host and Client implementationarea:ui-uxInteraction and visual experience; may accompany a code-layer areaenhancementNew feature or requestfeature:activityPersonaBot activity, presence, and output signalsfeature:assignmentOrchestrator and Assignment collaborationready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions