Repository navigation
Description
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
- Non-blocking create/list/inspect, explicit Session/Continuity Key reuse, answer/resume, and real DM collaboration: Assignment 协作闭环 T1:非阻塞 create / list+inspect / Continuity Key / report+ask 经 Bot Inbox #180 / PR feat(core): run Assignment collaboration through the Bot Inbox (#180) #182.
- Git-backed Memory Repository and Orchestrator cwd/audit/recovery: Foundation: Git working tree as PersonaBot Memory #115 / PR Add audited Memory recovery checkpoints and explicit restore #519.
- Human Workspace Grants, safe/full-access immutable Assignment snapshots, revocation/regrant/restart and persistent warnings: Workspace Grants: folder access UI and enforced PersonaBot file boundary #116 / PR fix: show full-access Assignment warnings in Bot Sessions (#116) #339 and earlier slices.
- Explicit stop, Host-origin notices and pending-notice recovery: PR feat: stop Assignment Sessions through DSH cancellation #310 / PR feat: deliver Host stop lifecycle notice (#194) #355.
- Spill and bounded report/Session Query retrieval: PR feat: page oversized Assignment reports through DSH Session Query #374.
- Explicit owned Session and Subagent lineage, current Sessions UI, and generic Inbox harvest are already implemented; their respective owning issues remain authoritative.
Completed bounded closeout — 2026-10-05
- Assignment: enforce concurrency limit when resuming idle work #811 / PR #821 — Fresh creation, idle/cold wake and Continuity Key reuse use the same synchronous Profile-wide capacity guard. Proven refusal preserves the original ask and access/model facts; releasing a slot resumes the same Session. Real DSH evidence.
- Assignment: configure the Profile concurrency limit in Bot mode Settings #825 / PR #832 — Global DSH Settings → Bot mode exposes the Human-owned Profile concurrency limit, default 3 and integer range 1–32. The owning Host validates and persists the value, applies it to subsequent admission, and retains it across restart. Lowering the limit does not cancel running work. Real Settings/admission/restart evidence.
- Assignment: preserve open asks until answer delivery is accepted #812 / PR #840 — The original ask settles only after native Inbox acceptance. Proven pre-acceptance refusal preserves waiting state and safe explicit retry; uncertain/post-acceptance failures remain repair-visible. Real Human Inbox retry completes the original Session with exactly one additional accepted answer. Activity Center uses inline split details with full-width item titles, while compact entries retain a wider native Modal. Real refusal/recovery evidence.
- PR #818 — Additional real DSH acceptance verifies Orchestrator stop during pending approval, expired approval, released Continuity Key, same-Profile restart preservation and creation of a different Session using the released key. Existing production behavior passed; its verified guide and screenshots are merged.
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
- PersonaBot create通过#115自动创建Git-backed Memory Repository。
- Orchestrator Session以repo为cwd,权限永远workspace-write。
- Human通过#116授权一个Workspace;PersonaBot默认Assignment preset为workspace-write。
- Human在DM发送请求;Orchestrator调用create_assignment并选择有效Grant。
- Runtime读取当前Human-owned preset,创建one-cwd Assignment并固化workspace-write snapshot。
- Assignment Report回流,Orchestrator在原DM回复;UI显示Assignment、Grant、primary cwd与permission snapshot。
- Human确认开启danger-full-access;仅下一次新建Assignment固化danger-full-access,旧Session保持workspace-write。
- Human撤销preset;之后新建Assignment恢复workspace-write,已有danger-full-access Session保持原snapshot与警示,直到显式stop/settle。
- 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
- Foundation:operational database owner / writer lease / schema generation #79 operational database foundation(已完成)。
- Spike:验证 BotWork 所需 DSH Agent / SessionPersistence / Subagent seams #77 DSH runtime seam validation(已完成)。
- Foundation:explicit Session ownership 与 DSH activity projection #80 explicit Session ownership/activity projection。
- Foundation: Git working tree as PersonaBot Memory #115 default Memory Repository / accepted Memory Commit。
- Workspace Grants: folder access UI and enforced PersonaBot file boundary #116 Workspace Grant / Assignment permission preset / one cwd。
- Architecture direction:Wayfinder: Memory Repository / Workspace Grant / Assignment cwd #114;Assignment decisions:ADR-0045。
Blocks
- M3.5: 本地安装验证门(DSH 实机 + 插件 UI 冒烟) #24/M4: 演示闭环(Orchestrator → Assignment → Report → Reply) #11 installed delegation and state acceptance。
- Bot Attention: causal aggregation, escalation and recovery acceptance #47 Orchestrator Assignment coordination。
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
- StatusShow more project fieldsDone
Activity
[-]Foundation:BotWork Runtime / Work Directory / Orchestrator tools[/-][+]Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools[/+]13 remaining items
DoodleBears commentedon Oct 4, 2026
Agent work claim — bounded foundation closeout
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)codex/811-assignment-capacityHuman 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.
DoodleBears commentedon Oct 4, 2026
Agent work claim
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21(not a DSH Session)codex/81-assignment-stop-recoverydocs: distinguish BotHarness stop tool from native Session records
test: require successful Assignment Report before completion reply
DoodleBears commentedon Oct 4, 2026
Agent work outcome — waiting for Human QA
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21(not a DSH Session)4aacdf220eac80aa50db3420bbfdea81f20c2539agent:activefor that separate active claim.docs: verify Assignment stop and restart recovery (#81) (#818)
DoodleBears commentedon Oct 4, 2026
Agent work outcome — completed narrow stop/restart acceptance
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21(not a DSH Session)agent:activewhile that other claim remains active.DoodleBears commentedon Oct 4, 2026
Agent work outcome — capacity slice waiting for Human QA
Agent: Codex
Task:
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)State: paused for Human QA of PR #821, implementing native child Assignment: enforce concurrency limit when resuming idle work #811.
Foundation body now distinguishes delivered outcomes from bounded remaining defects; Assignment: enforce concurrency limit when resuming idle work #811 and Assignment: preserve open asks until answer delivery is accepted #812 are attached as native children and in v1.0.
Assignment: enforce concurrency limit when resuming idle work #811 has real baseline/fixed/cold-start capacity and original-Session retry evidence, four screenshots and passing local integration checks.
The separately owned stop/restart acceptance PR #818 has merged; its verified guide and evidence complement this slice.
Remaining: Human QA / explicit approval for fix(core): enforce Assignment capacity on idle continuation #821, then sibling Assignment: preserve open asks until answer delivery is accepted #812 preserving an open ask until answer delivery is accepted. Keep Foundation:Assignment Runtime / Assignment Directory / Orchestrator tools #81 open until remaining foundation outcomes are rechecked; Assignment Attention: causal dedupe, escalation and recovery acceptance #194 Attention is independently owned and not claimed by this closeout.
No PR merge was performed by this task; goal pauses after this issue PR as requested.
GitHub CI: verification run passed for head
356e98f762310b5d67f0d8bba4ec5bd1103b2f46(lint, format, typecheck, tests, build, generated artifacts and docs). CodeRabbit reported its review rate limit; no automated review completion is claimed.DoodleBears commentedon Oct 5, 2026
Agent work outcome — Assignment foundation closeout completed
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)490ac036d1a9f7f0534d69d9c96ed4f7ad39213c, containing fix(core): enforce Assignment capacity on idle continuation #821/Assignment: enforce concurrency limit when resuming idle work #811, feat: configure Assignment concurrency in Bot mode Settings #832/Assignment: configure the Profile concurrency limit in Bot mode Settings #825, fix(core): keep Assignment asks open until native answer acceptance #840/Assignment: preserve open asks until answer delivery is accepted #812 and the independently accepted stop/restart verification docs: verify Assignment stop and restart recovery (#81) #818. All three native closeout children are closed.