Skip to content

Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools #81

Closed
3 of 3 issues completed

Description

@DoodleBears

Outcome-based closeout — 2026-10-05

The purpose of this foundation is reliable, PersonaBot-owned Assignment delegation: create independent work, inspect/reuse/continue/stop it, return reports/questions through the owning Inbox, preserve Human-granted access and immutable Session permissions, and expose honest state across restart. Completion is judged by observable outcomes, not by requiring every historical implementation mechanism by name.

Delivered on main

Completed bounded closeout — 2026-10-05

All three closeout tickets are attached as native sub-issues and closed. Each PR merged after explicit Human approval, with real DSH functional evidence and passing verification. Main 490ac036d1a9f7f0534d69d9c96ed4f7ad39213c contains all four merged deliveries; the Assignment admission/delivery and Human Inbox paths match the approved changes. The foundation is complete under the outcome-based boundary above, rather than requiring every historical mechanism by name.

The original two regressions were reproduced against main 647fbe958f72053c1b85d45cc05996a92603a658; the linked slices retain the baseline and fixed proofs.

Separate scope

#194 retains Assignment-specific causal Attention dedupe, escalation and final recovery/source-navigation acceptance. It is independently open and is not duplicated or marked complete by this closeout. The configurable concurrency Settings UI is now delivered by #825; additional historical delivery modes and a general delivery framework are not implicitly reported as shipped. The archived specification below is historical context, not a second open checklist.

Historical foundation specification (delivery mechanisms superseded by the outcome-based closeout above)

What to build

实现ADR-0045的Host-lifetime Assignment Runtime:durable Assignment Directory、五个Orchestrator tools、independent root lifecycle、Assignment Request/Report/Lifecycle Notice、permission snapshot与全局并发准入。

第一颗增量使用#115/#116交付Human可体验闭环:Orchestrator固定workspace-write并以Memory Repository为cwd;Assignment使用一个Workspace Grant、一个primary cwd和创建时固化的permission snapshot。

Tracer bullet 1 — stop for Human acceptance

  1. PersonaBot create通过#115自动创建Git-backed Memory Repository。
  2. Orchestrator Session以repo为cwd,权限永远workspace-write。
  3. Human通过#116授权一个Workspace;PersonaBot默认Assignment preset为workspace-write。
  4. Human在DM发送请求;Orchestrator调用create_assignment并选择有效Grant。
  5. Runtime读取当前Human-owned preset,创建one-cwd Assignment并固化workspace-write snapshot。
  6. Assignment Report回流,Orchestrator在原DM回复;UI显示Assignment、Grant、primary cwd与permission snapshot。
  7. Human确认开启danger-full-access;仅下一次新建Assignment固化danger-full-access,旧Session保持workspace-write。
  8. Human撤销preset;之后新建Assignment恢复workspace-write,已有danger-full-access Session保持原snapshot与警示,直到显式stop/settle。
  9. restart后ownership、Directory row、Grant、preset revision、permission snapshot与report均可恢复。

达到这里立即停下等待Human反馈,再扩完整矩阵。

Model-facing interface

  • list_assignments、inspect_assignment、create_assignment、send_assignment_request、stop_assignment。
  • Assignment Agent仅有report_to_orchestrator;DSH Subagent默认无top-level Assignment tools。
  • canonical identity = DSH sessionId;Continuity Key是PersonaBot-local optional alias。
  • create_assignment接受Workspace Grant reference,不接受raw path/cwd或permission mode。
  • V1不注册model-visible memory_* tools。
  • 若未来Assignment访问Memory,必须另建明确contract;不得通过第二cwd或隐式permission继承实现。

Runtime invariants

  • Host owns AgentHandles;Orchestrator replacement不改变PersonaBot-scoped Assignment authority。
  • Orchestrator:workspace-write only,cwd = owning Memory Repository。
  • Assignment:一个Grant、一个primary cwd、一个immutable permission snapshot。
  • 默认workspace-write;danger-full-access只能来自authenticated Human持久preset及其revision,不能由模型/request升级。
  • preset变化不静默改变existing Session;create时记录snapshot,UI/query永远返回实际值。
  • danger-full-access不删除Grant或primary cwd;Grant成为target/provenance而非confinement。
  • create/request/resume/wake重新校验Grant;Grant revoke后future operations fail closed,running Session需要显式stop。
  • semantic delivery:context-update / next-step / next-turn → inject / steer / followup。
  • stable-id Delivery Intent + idempotent acceptance + bounded reconciliation;ambiguous → needs-repair。
  • global concurrency默认3、range 1–32;超限立即结构化失败,无queue。
  • Report与Lifecycle Notice provenance分离;Directory分离activity/lastRun、latestReport与permission facts。
  • V1不实现multi-cwd或Composite Execution World。

Acceptance criteria after tracer bullet 1

  • create/reuse/resume/message/stop/restart interface tests。
  • raw cwd/path、其他Bot Grant、revoked/unavailable Grant、model-supplied permission mode均被拒绝。
  • default workspace-write、Human-confirmed danger-full-access、revoke-to-safe-default与existing-session-unchanged均有integration tests。
  • Orchestrator在任何preset下都不能获得danger-full-access。
  • 同一Grant可跨Assignments复用;每个Directory row只显示一个primary Workspace/cwd与实际permission snapshot。
  • danger-full-access仍保持Grant/provenance,不被表示成多cwd或新Execution World。
  • capacity race、DSH acceptance crash windows、restart reconciliation、Continuity Key与Subagent aggregation有focused tests。
  • risk confirmation、persistent warning、audit与explicit stop路径可由Human实机验证。

Dependencies

Blocks

Activity

  1. added this to the v1.0 milestone on Sep 19, 2026
  2. changed the title [-]Foundation:BotWork Runtime / Work Directory / Orchestrator tools[/-] [+]Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools[/+] on Sep 20, 2026
  3. 13 remaining items

  4. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — bounded foundation closeout

    Human authorized this closeout goal. Each implementation PR waits for Human QA and explicit merge approval. The foundation stays open while its bounded remaining outcomes are being delivered.

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

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21 (not a DSH Session)
    • Issue scope: narrow real DSH acceptance of Assignment stop and restart recovery: create through owned Workspace Grant, stop a pending tool approval through the Orchestrator, retain stopped Directory state after Host restart, and create new work with the released Continuity Key. Verify the existing Host/DSH seam first; fix only reproduced contract failures. Attention/digest, Human Inbox, model plans and Backup/Export remain outside this slice.
    • Branch: codex/81-assignment-stop-recovery
    • Started: 2026-10-04 17:07 UTC
    • State: active
  7. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — waiting for Human QA

    • Agent: Codex
    • Task: codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21 (not a DSH Session)
    • State: paused, awaiting Human QA for this slice
    • PR: #818, reviewed head 4aacdf220eac80aa50db3420bbfdea81f20c2539
    • Delivered scope: real owned Assignment pending approval → Orchestrator stop → expired approval, released Continuity Key and idle Bot → same-home Host restart preserves stopped Directory/permissions/history → same Grant/key creates a different Session → successful Report precedes every completion DM reply.
    • Existing production path passed; the PR adds a reproducible script, bilingual verified guide, six real light/dark screenshots and bounded native proof. No production runtime/UI/database change.
    • Checks: 48 focused runtime/adapter tests and four Report-evidence regressions pass; full CI passes (2,346 tests passed, 9 skipped). Standards and Spec findings fixed and independently re-reviewed. CodeRabbit quota prevented review; the Human has authorized proceeding when quota is unavailable.
    • A fresh pending approval scene is ready for Human-operated stopping and refresh verification; authenticated access details stay private.
    • Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools #81 remains open. This does not close the broader acceptance matrix or take over the other task's Assignment: enforce concurrency limit when resuming idle work #811/Assignment: preserve open asks until answer delivery is accepted #812 work. Retain agent:active for that separate active claim.
  8. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — completed narrow stop/restart acceptance

  9. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — capacity slice waiting for Human QA

  10. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 4, 2026
  11. DoodleBears commented on Oct 5, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — Assignment foundation closeout completed

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 implementationfeature:assignmentOrchestrator and Assignment collaborationscope:foundationFoundational authority, runtime, or infrastructurewayfinder:taskWayfinder task ticket

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions