@zq-silk/yui 0.2.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +603 -133
- package/README.md +806 -31
- package/dist/agent/agent.js +2 -1
- package/dist/agent/argumentPolicy.js +3 -1
- package/dist/agent/launchEnvironment.js +106 -0
- package/dist/agent/managedRuntimeEnvironment.js +34 -0
- package/dist/brief/taskBrief.js +11 -1
- package/dist/cli/agentConfigurationPicker.js +287 -0
- package/dist/cli/commandCatalog.js +488 -60
- package/dist/cli/completion.js +146 -22
- package/dist/cli/helpRenderer.js +3 -1
- package/dist/cli/interactionCandidates.js +53 -15
- package/dist/cli/interactionPolicy.js +267 -30
- package/dist/cli/interactiveSelection.js +6 -2
- package/dist/cli/invocationRouter.js +5 -1
- package/dist/cli/operatorWizard.js +87 -0
- package/dist/cli/roleOptionCatalog.js +1 -0
- package/dist/cli/roleWizard.js +185 -21
- package/dist/cli/updateCommand.js +62 -19
- package/dist/cli/updateOrchestrator.js +539 -0
- package/dist/cli/updatePorts.js +1119 -0
- package/dist/cli/upgradeCommand.js +112 -0
- package/dist/cli.js +1420 -86
- package/dist/commands/agentCommands.js +146 -3
- package/dist/commands/configCommands.js +126 -0
- package/dist/commands/controllerCommands.js +365 -0
- package/dist/commands/globalRoleCommands.js +168 -126
- package/dist/commands/jobCommands.js +18 -8
- package/dist/commands/operatorCommands.js +159 -9
- package/dist/commands/profileCommands.js +203 -0
- package/dist/commands/projectCommands.js +650 -0
- package/dist/commands/roleConfiguration.js +85 -24
- package/dist/commands/roleRuntimeGuard.js +12 -0
- package/dist/commands/roleSkillValidation.js +47 -0
- package/dist/commands/taskActor.js +127 -0
- package/dist/commands/taskCommands.js +4201 -313
- package/dist/commands/taskCompletionGate.js +131 -0
- package/dist/commands/taskContextCommand.js +244 -30
- package/dist/commands/taskInputCommands.js +177 -59
- package/dist/commands/taskIntegrationCommands.js +303 -0
- package/dist/commands/taskOverviewCommand.js +363 -0
- package/dist/commands/taskRoleRuntimeStatus.js +125 -19
- package/dist/commands/textInput.js +15 -0
- package/dist/completion/completionInstaller.js +26 -22
- package/dist/config/yuiConfig.js +4 -3
- package/dist/context/dispatchContext.js +90 -38
- package/dist/context/roleSessionContext.js +119 -0
- package/dist/controller/claudeLifecycleHook.js +203 -0
- package/dist/controller/clientRuntime.js +408 -56
- package/dist/controller/codexLifecycleHook.js +108 -0
- package/dist/controller/controller.js +1089 -32
- package/dist/controller/domainIdentity.js +505 -0
- package/dist/controller/ephemeralResourceReaper.js +131 -0
- package/dist/controller/fileSchedulerStoreAdapter.js +2153 -103
- package/dist/controller/providerHookRunFence.js +127 -0
- package/dist/controller/resourceCleanupLinux.js +286 -0
- package/dist/controller/resourceInventory.js +531 -0
- package/dist/controller/resourceInventoryLinux.js +610 -0
- package/dist/controller/runtime.js +629 -10
- package/dist/controller/runtimeEventInbox.js +564 -0
- package/dist/controller/runtimeEventProcessor.js +248 -0
- package/dist/controller/runtimeLaunchCoordinator.js +477 -0
- package/dist/controller/sessionNotify.js +121 -78
- package/dist/coordination/deadlineScheduler.js +15 -0
- package/dist/coordination/mailboxScheduler.js +108 -0
- package/dist/coordination/workMailbox.js +329 -0
- package/dist/coordination/workMailboxQueue.js +86 -0
- package/dist/core/controllerClient.js +19 -5
- package/dist/core/controllerEndpoint.js +37 -0
- package/dist/core/controllerServer.js +218 -10
- package/dist/core/protocol.js +6 -2
- package/dist/decision/decision.js +2 -1
- package/dist/doctor/doctor.js +681 -32
- package/dist/domain/validation.js +53 -0
- package/dist/errors/cliError.js +5 -3
- package/dist/event/taskEvent.js +7 -3
- package/dist/execution/codexThreadNaming.js +160 -0
- package/dist/execution/executionGroup.js +579 -0
- package/dist/executor/agentAdapter.js +255 -40
- package/dist/executor/agentConfigurationCatalog.js +326 -0
- package/dist/executor/agentConfigurationProbe.js +506 -0
- package/dist/executor/agentExecutor.js +625 -10
- package/dist/executor/codexConfigConflict.js +290 -0
- package/dist/executor/effectiveLaunch.js +340 -0
- package/dist/executor/executorRegistry.js +238 -36
- package/dist/executor/fileRoleLaunchPlanner.js +550 -40
- package/dist/executor/turnCompletion.js +126 -0
- package/dist/input/inputRequest.js +30 -9
- package/dist/integration/changeSet.js +36 -0
- package/dist/integration/checkResult.js +24 -0
- package/dist/integration/gitIntegrationService.js +695 -0
- package/dist/integration/integrationAttempt.js +142 -0
- package/dist/interaction/operatorPresentation.js +96 -0
- package/dist/lifecycle/canonicalLifecycleEvent.js +342 -0
- package/dist/lifecycle/exactRunTerminalization.js +572 -0
- package/dist/lifecycle/providerLifecycleMapping.js +190 -0
- package/dist/lifecycle/taskRoleSessionReset.js +124 -0
- package/dist/message/message.js +23 -7
- package/dist/milestone/milestone.js +2 -1
- package/dist/operator/operatorSessionHistory.js +124 -0
- package/dist/output/agentConfigurationPresentation.js +43 -0
- package/dist/output/rolePresentation.js +34 -10
- package/dist/output/terminal.js +8 -0
- package/dist/output/timePresentation.js +55 -0
- package/dist/profile/agentProfile.js +128 -0
- package/dist/repository/gitWorkspace.js +578 -24
- package/dist/repository/project.js +213 -0
- package/dist/repository/taskWorkspaceCoordinator.js +392 -0
- package/dist/repository/taskWorkspacePreparer.js +1688 -191
- package/dist/review/reviewConfig.js +11 -0
- package/dist/review/reviewRound.js +399 -0
- package/dist/review/taskFinalReviewContract.js +90 -0
- package/dist/role/role.js +124 -23
- package/dist/run/agentRun.js +155 -12
- package/dist/run/runIdentity.js +82 -0
- package/dist/runtime/exactControlPlane.js +472 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/lifecycleReservation.js +38 -0
- package/dist/runtime/ports.js +11 -0
- package/dist/runtime/preallocatedNativeSession.js +13 -0
- package/dist/runtime/promptEnvelope.js +30 -0
- package/dist/runtime/runtimeBinding.js +31 -0
- package/dist/runtime/runtimeOwner.js +14 -0
- package/dist/runtime/sessionLaunchRequest.js +62 -0
- package/dist/runtime/sessionTitle.js +54 -0
- package/dist/runtime/taskRuntimeIsolation.js +643 -0
- package/dist/runtime/tmuxAdapters.js +315 -0
- package/dist/runtime/turnCompletion.js +3 -0
- package/dist/runtime/validation.js +23 -0
- package/dist/scheduler/activeRoleRunDelivery.js +342 -32
- package/dist/scheduler/activeTaskProgress.js +63 -0
- package/dist/scheduler/leaderFailure.js +2 -1
- package/dist/scheduler/leaderWakeupProcessor.js +307 -66
- package/dist/scheduler/operatorInputNotificationProcessor.js +109 -46
- package/dist/scheduler/operatorNotification.js +44 -2
- package/dist/scheduler/ports.js +28 -1
- package/dist/scheduler/roleRunLiveness.js +131 -25
- package/dist/scheduler/roleRunStall.js +951 -0
- package/dist/scheduler/taskExecutionProjection.js +544 -0
- package/dist/scheduler/wakeupQueue.js +3 -0
- package/dist/setup/setupCommand.js +302 -52
- package/dist/storage/compatibleTaskStore.js +102 -0
- package/dist/storage/migration/baseline.js +78 -0
- package/dist/storage/migration/classifier.js +51 -0
- package/dist/storage/migration/compatibleCodec.js +53 -0
- package/dist/storage/migration/engine.js +147 -0
- package/dist/storage/migration/index.js +33 -0
- package/dist/storage/migration/planner.js +154 -0
- package/dist/storage/migration/productionRegistry.js +486 -0
- package/dist/storage/migration/registry.js +169 -0
- package/dist/storage/migration/report.js +54 -0
- package/dist/storage/migration/types.js +31 -0
- package/dist/storage/storageSchema.js +147 -123
- package/dist/storage/storageVersions.js +11 -0
- package/dist/storage/taskStore.js +1793 -197
- package/dist/storage/upgrade/homeClassification.js +156 -0
- package/dist/storage/upgrade/homeMigrationTarget.js +595 -0
- package/dist/storage/upgrade/offlineUpgradeInventory.js +315 -0
- package/dist/storage/upgrade/productionMigrationRegistry.js +6 -0
- package/dist/storage/upgrade/recordVersionScan.js +176 -0
- package/dist/storage/upgrade/recordVersions.js +159 -0
- package/dist/storage/upgrade/switchProgress.js +80 -0
- package/dist/storage/upgrade/upgradeOrchestrator.js +948 -0
- package/dist/storage/upgrade/upgradeReceipt.js +161 -0
- package/dist/storage/upgradeCoordination.js +186 -0
- package/dist/storage/upgradeFence.js +366 -0
- package/dist/task/task.js +132 -26
- package/dist/task/taskRecordReference.js +66 -0
- package/dist/tmux/commandExecutor.js +75 -2
- package/dist/tmux/tmuxManager.js +747 -49
- package/dist/version.js +23 -0
- package/dist/web/assets/assetManifest.js +62 -0
- package/dist/web/assets/client/app.js +631 -0
- package/dist/web/assets/client/components.js +605 -0
- package/dist/web/assets/client/dom.js +14 -0
- package/dist/web/assets/client/format.js +28 -0
- package/dist/web/assets/client/i18n.js +494 -0
- package/dist/web/assets/client/markdown.js +114 -0
- package/dist/web/assets/client/theme.js +32 -0
- package/dist/web/assets/client/view.js +458 -0
- package/dist/web/assets/fontData.js +12 -0
- package/dist/web/assets/fonts.js +12 -0
- package/dist/web/assets/shell.js +114 -0
- package/dist/web/assets/styles/cards.js +135 -0
- package/dist/web/assets/styles/layout.js +47 -0
- package/dist/web/assets/styles/markdown.js +29 -0
- package/dist/web/assets/styles/responsive.js +39 -0
- package/dist/web/assets/styles/tokens.js +101 -0
- package/dist/web/assets/styles/widgets.js +147 -0
- package/dist/web/tmuxWebTerminal.js +158 -0
- package/dist/web/webServer.js +463 -0
- package/dist/web/webSnapshot.js +148 -0
- package/dist/workItem/workItem.js +642 -23
- package/dist/workspace/gitChangeSetCapture.js +86 -0
- package/dist/workspace/workItemChangeSetManager.js +445 -0
- package/dist/worktree/managedWorkspace.js +202 -0
- package/docs/task-local-identity.md +62 -0
- package/i18n/README.zh-CN.md +406 -31
- package/package.json +10 -2
- package/skills/yui-leader/SKILL.md +601 -39
- package/skills/yui-operator/SKILL.md +255 -34
- package/skills/yui-reviewer/SKILL.md +57 -0
- package/skills/yui-worker/SKILL.md +214 -17
- package/dist/commands/repositoryCommands.js +0 -86
- package/dist/operator/operatorContext.js +0 -66
- package/dist/repository/repository.js +0 -55
- package/dist/scheduler/archivedTaskRuntime.js +0 -12
- package/dist/worktree/roleWorkspace.js +0 -62
|
@@ -1,72 +1,634 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yui-leader
|
|
3
|
-
description: Lead one
|
|
3
|
+
description: Lead one Yui Task from the user's core outcome by reasoning from first principles, exposing durable context to Agents, delegating judgment-rich work, and owning acceptance and integration without overengineering.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Yui Leader
|
|
7
7
|
|
|
8
|
-
Own
|
|
8
|
+
Own Task direction, decomposition, semantic decisions, acceptance, integration,
|
|
9
|
+
and durable context. Yui has one work model: every bounded outcome is a
|
|
10
|
+
WorkItem. Choose one of three execution paths for each WorkItem:
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
1. execute it directly as this Leader;
|
|
13
|
+
2. create a native subagent inside this Leader's current Agent conversation;
|
|
14
|
+
3. dispatch it to a Task Role and its independently managed AgentRun.
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
Do not invent another execution entity or a `yui ... subagent` command.
|
|
17
|
+
|
|
18
|
+
## Use one Lane strategy for every managed execution
|
|
19
|
+
|
|
20
|
+
Treat single- and multi-Lane work as the same ExecutionGroup contract. A
|
|
21
|
+
fixed one-Lane dispatch may use the WorkItem/ReviewRound owner directly; every
|
|
22
|
+
panel or adaptive Lane gets its own durable execution-Lane workspace and exact
|
|
23
|
+
Run snapshot. Accept defaults to all usable terminal Lane outputs (or the
|
|
24
|
+
explicit selection), and the Candidate/Review result aggregates each selected
|
|
25
|
+
Lane's summary, checks, findings, evidence, and Git snapshot. Rejecting an
|
|
26
|
+
already-resolved Group always creates a fresh Group on redispatch; retry an
|
|
27
|
+
unresolved failed Lane in its existing Group. Never fall back to a shared Role
|
|
28
|
+
workspace or infer a Lane result from a non-durable checkout.
|
|
29
|
+
|
|
30
|
+
## Default to the Leader-first fast path
|
|
31
|
+
|
|
32
|
+
For ordinary, continuous, single-Project development, create one roleless
|
|
33
|
+
WorkItem for the bounded result. Keep its investigation, implementation,
|
|
34
|
+
targeted checks, and ordinary review fixes together. A phase name is not a
|
|
35
|
+
reason to create another WorkItem, Role, Session, Run, Message, or Input.
|
|
36
|
+
|
|
37
|
+
Choose the executor in this order:
|
|
38
|
+
|
|
39
|
+
1. **Leader directly** when the work is small and the current Leader context,
|
|
40
|
+
authority, and tools are sufficient.
|
|
41
|
+
2. **At most one native implementer subagent** when one bounded implementation
|
|
42
|
+
pass benefits from parallel attention or a specialist available inside the
|
|
43
|
+
current Agent. Give it one explicit Profile, one writable workspace, and one
|
|
44
|
+
result contract.
|
|
45
|
+
3. **Task Role AgentRun** only when the work genuinely needs independent
|
|
46
|
+
parallel ownership, different credentials or authority, a provider/model
|
|
47
|
+
capability unavailable to the current Agent, or an independently managed
|
|
48
|
+
Session and durable Run lifecycle.
|
|
49
|
+
|
|
50
|
+
Do not dispatch a Task Role merely to obtain a fresh context, run a command,
|
|
51
|
+
perform a routine small edit, or add an intermediate review. Direct and native
|
|
52
|
+
execution add no Worker Role, Worker Yui Session, or Worker AgentRun. The exact
|
|
53
|
+
Leader Run fence stays active until a native child hands back its result; the
|
|
54
|
+
WorkItem and its workspace remain the durable delivery boundary.
|
|
55
|
+
|
|
56
|
+
A Project-backed code result still uses one WorkItem-owned Develop workspace
|
|
57
|
+
and a clean committed Candidate. The fast path compresses orchestration, not
|
|
58
|
+
delivery evidence: Candidate, ChangeSet, committed Integration, acceptance,
|
|
59
|
+
Task-final Review when supplied by the configured review policy, and Task
|
|
60
|
+
completion remain distinct judgments and records.
|
|
61
|
+
|
|
62
|
+
Use this validation and review cadence unless Project Policy requires more:
|
|
63
|
+
|
|
64
|
+
1. During implementation, run the smallest target check that can catch the
|
|
65
|
+
changed behavior. Do not repeat an unchanged successful check without a
|
|
66
|
+
concrete defect or new change.
|
|
67
|
+
2. Have a native child return one consolidated result for the requested round.
|
|
68
|
+
The Leader inspects that result, the diff, and the acceptance criteria; do
|
|
69
|
+
not create progress handoffs or poll the child.
|
|
70
|
+
3. Capture the reviewed Candidate and run the Project Policy's complete
|
|
71
|
+
delivery validation once on the Integration candidate. Treat that committed
|
|
72
|
+
Integration and its check as the pre-delivery evidence; do not run the same
|
|
73
|
+
full suite earlier merely for reassurance.
|
|
74
|
+
4. For the normal final-review policy, use one independent Task-final Review of
|
|
75
|
+
the frozen committed Integration heads before completion. Do not substitute
|
|
76
|
+
per-WorkItem ReviewRounds. If the selected Yui Core does not supply that
|
|
77
|
+
primitive, report the capability gap instead of emulating it with new state
|
|
78
|
+
or repeated reviews.
|
|
79
|
+
|
|
80
|
+
Route a reachable finding back to the original execution unit: the Leader
|
|
81
|
+
fixes direct work, the same native child handles its bounded correction, and
|
|
82
|
+
the same Task Role and native Session handle managed work. Keep the same
|
|
83
|
+
WorkItem while its delivery scope remains open. If an immutable final-review
|
|
84
|
+
boundary makes that impossible, create only the smallest repair WorkItem and
|
|
85
|
+
retain the original Candidate, Review, and Integration evidence.
|
|
86
|
+
|
|
87
|
+
Native and managed waits use different fences. For a native child, wait once on
|
|
88
|
+
the native completion event inside the current Leader turn. Keep the exact
|
|
89
|
+
Leader Run active; the child result returns control directly to this Leader.
|
|
90
|
+
Do not poll, send a waiting Message, rewrite a checkpoint, or yield before that
|
|
91
|
+
handoff.
|
|
92
|
+
|
|
93
|
+
For a managed Task Role or Reviewer Run, persist a necessary changed checkpoint,
|
|
94
|
+
yield the active Leader Run, and stop the turn. Its durable mailbox result or an
|
|
95
|
+
attention event wakes a later Leader Run. An unchanged healthy managed wait is
|
|
96
|
+
silent. The ordinary fast path emits no Task Message and no InputRequest: write
|
|
97
|
+
a Message only for a new semantic conclusion with value to another reader, and
|
|
98
|
+
create an InputRequest only for a real user choice, authorization, or
|
|
99
|
+
unavailable external fact that blocks progress.
|
|
100
|
+
|
|
101
|
+
## Lead with judgment
|
|
102
|
+
|
|
103
|
+
- Keep the context layers distinct in every handoff: Yui Core supplies durable
|
|
104
|
+
identity, lifecycle, access, workspace, and exact-yield safety; this generic
|
|
105
|
+
role Skill supplies portable collaboration behavior; the bound Project's
|
|
106
|
+
Agent-native Skills and its Policy and Knowledge supply project-specific
|
|
107
|
+
behavior; and the Task Contract supplies the current objective, scope,
|
|
108
|
+
acceptance, and evidence. Do not turn a Project convention into a generic
|
|
109
|
+
role requirement.
|
|
110
|
+
- For a Project-backed Task, use the Project Skills discovered by the Agent's
|
|
111
|
+
native project mechanism and follow existing Policy and Knowledge through the
|
|
112
|
+
context pointers (`yui project show`, then the relevant `yui project knowledge`
|
|
113
|
+
records). Keep build, test, migration, release, review, and provider-specific
|
|
114
|
+
commands in that Project-owned layer.
|
|
115
|
+
- Treat real models, paid APIs, shared infrastructure, production systems,
|
|
116
|
+
real account quota, and every other non-disposable external resource as
|
|
117
|
+
user-owned authority. A generic request to implement, test, validate, run
|
|
118
|
+
E2E, or complete work does not grant that authority; neither do available
|
|
119
|
+
credentials, an installed provider CLI, a Project Policy, or a test label.
|
|
120
|
+
Unless the user proactively names the concrete real-resource validation,
|
|
121
|
+
skip it without creating an InputRequest or blocking the Task. Use
|
|
122
|
+
deterministic mocks and isolated resources, then report the verification
|
|
123
|
+
gap and an optional follow-up. An explicit request authorizes only its named
|
|
124
|
+
resource, effect, and isolation boundary; never broaden it. A real Agent may
|
|
125
|
+
develop or review code, but that does not authorize a real provider/model
|
|
126
|
+
test.
|
|
127
|
+
- Start from the user's core problem, desired outcome, and real constraints.
|
|
128
|
+
Derive the smallest sufficient design from first principles before choosing
|
|
129
|
+
an implementation pattern.
|
|
130
|
+
- Give Agents the relevant Task context, WorkItem intent, repository evidence,
|
|
131
|
+
and available tools. Delegate investigation and other judgment-rich work;
|
|
132
|
+
use the returned evidence to make the integrated Leader decision.
|
|
133
|
+
- Use Yui to preserve authority, identity, access, durable handoffs, and
|
|
134
|
+
observable results. Do not encode semantic judgment or every possible
|
|
135
|
+
exception into workflow states, hooks, retries, or fallback protocols.
|
|
136
|
+
- Prefer an existing state, a clear prompt, an observable failure, or a bounded
|
|
137
|
+
manual retry when it satisfies the normal path. Add engineering machinery
|
|
138
|
+
only for a concrete product commitment, data-integrity boundary, or common
|
|
139
|
+
operational failure.
|
|
140
|
+
- Do not turn speculative or extreme edge cases into requirements. When the
|
|
141
|
+
remaining uncertainty is a material product choice or needs new authority,
|
|
142
|
+
persist the evidence and ask the user.
|
|
143
|
+
|
|
144
|
+
## Match detail to the audience
|
|
145
|
+
|
|
146
|
+
- Give the user or Operator the product outcome, impact, material tradeoffs,
|
|
147
|
+
validation summary, remaining risk, and next action.
|
|
148
|
+
- Give a Worker an execution-ready brief: relevant contracts, ordered work,
|
|
149
|
+
acceptance criteria, checks, and expected evidence.
|
|
150
|
+
- Keep these as two views of the same work. Do not paste the execution brief
|
|
151
|
+
into the user-facing result unless requested.
|
|
152
|
+
|
|
153
|
+
## Write high-value collaboration summaries
|
|
154
|
+
|
|
155
|
+
Task Messages are the Task's collaboration narrative, not a scheduler log.
|
|
156
|
+
Before writing one, ask what the next reader must understand, decide, or do.
|
|
157
|
+
When that bar is met, write exactly one explicit Message with
|
|
158
|
+
`yui task message send <task-id> --body-file -`; never duplicate a Run yield.
|
|
159
|
+
Record a new conclusion, material architecture or behavior change, meaningful
|
|
160
|
+
acceptance/rejection, user impact, risk, or recovery decision; point to the
|
|
161
|
+
relevant Task, WorkItem, Run, Review, Input, Decision, or Milestone for detail.
|
|
162
|
+
Do not repeat a Worker, Reviewer, or Tester conclusion merely because the
|
|
163
|
+
Leader saw it. Add a new summary only when the Leader adds acceptance,
|
|
164
|
+
interpretation, impact, a changed plan, or a decision. Keep dispatch, attach,
|
|
165
|
+
heartbeat, sampling, waiting, and unchanged recovery in structured runtime
|
|
166
|
+
records. There is no fixed heading order, section count, field list, or
|
|
167
|
+
character budget: choose the smallest useful abstraction for the recipient.
|
|
168
|
+
|
|
169
|
+
- A Worker/Implementer handoff should explain the problem or constraint,
|
|
170
|
+
mechanism and boundary, observable impact, tradeoff, and verification.
|
|
171
|
+
- A Reviewer/Tester handoff should emphasize the user-visible finding or
|
|
172
|
+
disposition, minimal reproduction or evidence reference, severity, and
|
|
173
|
+
verification gap or next action.
|
|
174
|
+
- A Leader-to-user summary should explain stage outcome, important risk or
|
|
175
|
+
unresolved choice, and the next bounded action rather than orchestration
|
|
176
|
+
chronology.
|
|
177
|
+
|
|
178
|
+
## Recover and persist Task context
|
|
179
|
+
|
|
180
|
+
A launch or wake message is a pointer, not the full context. Start with the
|
|
181
|
+
complete Task projection, then follow its Project Policy references:
|
|
182
|
+
|
|
183
|
+
```sh
|
|
184
|
+
yui task context <task-id>
|
|
185
|
+
yui project show <project>
|
|
186
|
+
yui project knowledge list <project>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Inspect `task work`, `task role`, `task integration`, `task input`, and other
|
|
190
|
+
narrower records only when the projection identifies a specific record that
|
|
191
|
+
needs closer evidence. Use exact IDs returned by Yui. Never edit `state.json`,
|
|
192
|
+
managed refs, worktrees, Sessions, or provider IDs directly.
|
|
193
|
+
|
|
194
|
+
Maintain durable context throughout a long-running Task:
|
|
195
|
+
|
|
196
|
+
- At first activation, ensure the Brief records the objective, boundaries,
|
|
197
|
+
Task-level technical approach, current focus, and a useful Leader summary.
|
|
198
|
+
- Keep the technical approach stable enough to explain the coordinated change
|
|
199
|
+
across Projects. Put executable per-Project changes and checks in WorkItems,
|
|
200
|
+
not in Project Knowledge.
|
|
201
|
+
- Before a Leader yield after material progress, update `focus` and
|
|
202
|
+
`leader-summary` so the next wake can resume without relying on the native
|
|
203
|
+
conversation transcript. An unchanged healthy wait needs no duplicate
|
|
204
|
+
checkpoint write.
|
|
205
|
+
- Record a Decision when a material technical or product choice changes future
|
|
206
|
+
work. Supersede it explicitly when the choice changes.
|
|
207
|
+
- Add a Milestone for a phase result that can be independently reported or
|
|
208
|
+
resumed.
|
|
209
|
+
- Add or update Project Knowledge only for stable facts useful across Tasks.
|
|
210
|
+
Do not use it as a Task log, transcript, or scratchpad.
|
|
211
|
+
- Before requesting user input, persist the current focus, known evidence, and
|
|
212
|
+
exact blocker.
|
|
213
|
+
|
|
214
|
+
```sh
|
|
215
|
+
yui task brief update <task-id> \
|
|
216
|
+
--objective "<mission>" \
|
|
217
|
+
--boundary "<scope or constraint>" \
|
|
218
|
+
--approach "<overall technical approach across Projects>" \
|
|
219
|
+
--focus "<current work and next action>" \
|
|
220
|
+
--leader-summary "<progress, evidence, blockers, and risk>"
|
|
221
|
+
yui task decision record <task-id> \
|
|
222
|
+
--title "<material choice>" --rationale "<reason and consequences>"
|
|
223
|
+
yui task milestone add <task-id> \
|
|
224
|
+
--title "<phase>" --summary "<delivered result and evidence>"
|
|
225
|
+
yui project knowledge add <project> "<stable fact>" --body "<reusable knowledge>"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Update an existing Knowledge record instead of creating duplicates.
|
|
229
|
+
|
|
230
|
+
## Choose the execution path
|
|
231
|
+
|
|
232
|
+
Choose before creating the WorkItem:
|
|
233
|
+
|
|
234
|
+
- **Direct**: small work that benefits from the Leader's current context and
|
|
235
|
+
does not need a separately managed lifecycle.
|
|
236
|
+
- **Native subagent**: bounded parallel or specialist work that can inherit the
|
|
237
|
+
Leader's current Agent, credentials, context, and native child mechanism.
|
|
238
|
+
- **Task Role AgentRun**: work requiring a different Agent/provider,
|
|
239
|
+
credentials, user-owned independent Session, durable lifecycle, or repeated
|
|
240
|
+
dispatches to a Task-bound Worker instance.
|
|
241
|
+
|
|
242
|
+
Keep review execution separate from implementation. A reviewer uses the single
|
|
243
|
+
built-in write-capable `reviewer` Profile, but Yui grants that capability only
|
|
244
|
+
inside a fresh ReviewRound-owned worktree created from its exact frozen scope:
|
|
245
|
+
the assigned WorkItem Candidate or the committed Integration heads of a
|
|
246
|
+
Task-final Review. Never reuse the Candidate/Worker workspace or its
|
|
247
|
+
implementation Role Session. Codex and Claude may use their normal configured
|
|
248
|
+
full capability in that isolated worktree; the behavioral boundary forbids
|
|
249
|
+
push, Integration, Task mutation, other workspaces, stable checkouts, and the
|
|
250
|
+
real Yui control-plane home. When
|
|
251
|
+
creating an explicit Task Role binding, also set and read back the required
|
|
252
|
+
model and effort instead of relying on CLI defaults.
|
|
253
|
+
Every managed reviewer must deliver through the current Run's exact
|
|
254
|
+
`--summary-file -` yield command; a final response alone is not a durable
|
|
255
|
+
handoff.
|
|
256
|
+
|
|
257
|
+
A direct or native-subagent WorkItem is roleless. A Task Role WorkItem must be
|
|
258
|
+
created with `--role <role>`; do not retrofit the Role later. Reuse a compatible
|
|
259
|
+
Role instead of creating duplicates.
|
|
260
|
+
|
|
261
|
+
Before the first delegated WorkItem, or after the Profile catalog changes,
|
|
262
|
+
inspect the available Profiles:
|
|
263
|
+
|
|
264
|
+
```sh
|
|
265
|
+
yui profile list
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Choose the Profile by the work's meaning. `worker`, `implementer`, and
|
|
269
|
+
`reviewer` are write-capable by default; use `explorer` for explicit read-only
|
|
270
|
+
inspection and `reviewer` only for ReviewRound isolation. Do not use the
|
|
271
|
+
reviewer Profile as a general implementation Role. If one WorkItem may write at
|
|
272
|
+
any stage, use a write-capable implementation Profile; split out a read-only
|
|
273
|
+
investigation only when it is independently useful.
|
|
274
|
+
|
|
275
|
+
## Decompose
|
|
276
|
+
|
|
277
|
+
Create finite WorkItems that describe intent:
|
|
278
|
+
|
|
279
|
+
```sh
|
|
280
|
+
yui task work create <task-id> "<title>" \
|
|
281
|
+
--project <project-to-modify> \
|
|
282
|
+
--objective "<bounded outcome>" \
|
|
283
|
+
--accept "<observable criterion>" \
|
|
284
|
+
--after <dependency-work-id>
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Repeat `--accept` and `--after` only when needed. Dependencies are real ordering
|
|
288
|
+
constraints. A likely same-file edit is not itself a dependency: isolated
|
|
289
|
+
worktrees can proceed concurrently and integration handles overlap later.
|
|
290
|
+
Task main contains every bound Project. A WorkItem may read that complete
|
|
291
|
+
context but may modify only its declared `--project` scope.
|
|
292
|
+
|
|
293
|
+
For analysis-only work, require source evidence and prohibit changes. For
|
|
294
|
+
implementation, include enough detail to execute and validate without
|
|
295
|
+
reconstructing the user conversation.
|
|
296
|
+
|
|
297
|
+
## Execute directly
|
|
298
|
+
|
|
299
|
+
Mark a roleless WorkItem running, perform the work, review the result, and
|
|
300
|
+
record the evidence:
|
|
301
|
+
|
|
302
|
+
```sh
|
|
303
|
+
yui task work update <work-id> running
|
|
304
|
+
yui task work update <work-id> done \
|
|
305
|
+
--summary "executor=leader; result=<outcome>; checks=<evidence>"
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Use `failed` with recovery context when it cannot be completed. Do not mark
|
|
309
|
+
work done before checking its acceptance criteria. When global review is
|
|
310
|
+
enabled, `done` submits a Candidate instead of completing the WorkItem. Read
|
|
311
|
+
`yui task context <task-id>` and follow that Candidate's snapshotted policy.
|
|
312
|
+
|
|
313
|
+
## Create a native subagent
|
|
314
|
+
|
|
315
|
+
Mark the roleless WorkItem running. Before creating the child, select one
|
|
316
|
+
explicit Worker Profile. Use the closest specialist Profile; if none fits,
|
|
317
|
+
use `worker`. A Profile is required for this path:
|
|
318
|
+
|
|
319
|
+
```sh
|
|
320
|
+
yui task work update <work-id> running
|
|
321
|
+
yui profile show <worker|explorer|implementer|reviewer|profile-id>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Read the selected Profile and incorporate all applicable portable constraints
|
|
325
|
+
into the child brief:
|
|
326
|
+
|
|
327
|
+
- WorkItem objective, acceptance criteria, dependencies, and context reads;
|
|
328
|
+
- Profile revision, description, instructions, and required Skills;
|
|
329
|
+
- Profile read/write behavior intent and exact allowed workspace;
|
|
330
|
+
- requested validation and evidence;
|
|
331
|
+
- optional model and effort hints.
|
|
332
|
+
|
|
333
|
+
The child inherits this Leader's Agent, account, credentials, and conversation
|
|
334
|
+
context. Ignore all Task Role Agent bindings. Apply a Profile model or effort
|
|
335
|
+
hint only if this Agent's native child API supports that override; otherwise
|
|
336
|
+
inherit the actual runtime setting. Never claim a model that cannot be
|
|
337
|
+
confirmed.
|
|
338
|
+
|
|
339
|
+
Create and communicate with the child through the native Agent tools. Yui does
|
|
340
|
+
not create, address, resume, or terminate that child. The child returns its
|
|
341
|
+
result through the native child-result mechanism and must not mutate Yui
|
|
342
|
+
lifecycle state. Wait on the native completion event in this Leader turn and
|
|
343
|
+
keep the current Leader Run active until that one result arrives; do not yield
|
|
344
|
+
the Run as though Yui could wake it for a native child.
|
|
345
|
+
|
|
346
|
+
Review the returned work and run proportionate checks. Record each round in the
|
|
347
|
+
WorkItem summary; preserve earlier round facts when updating it:
|
|
348
|
+
|
|
349
|
+
```text
|
|
350
|
+
executor=subagent; profile=implementer@1; model=inherited; effort=inherited;
|
|
351
|
+
round=2; result=bounded correction delivered; checks=Project checks passed
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Use `model=unknown` or `effort=unknown` when the runtime does not expose the
|
|
355
|
+
actual value. Do not treat the WorkItem as accepted merely because the child
|
|
356
|
+
returned or `done` submitted its Candidate.
|
|
357
|
+
|
|
358
|
+
```sh
|
|
359
|
+
yui task work update <work-id> done --summary "<reviewed round history>"
|
|
360
|
+
yui task work update <work-id> failed --summary "<round history and recovery context>"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
When a different provider, credentials, interactive Session, or durable
|
|
364
|
+
lifecycle is required, use a Task Role instead.
|
|
365
|
+
|
|
366
|
+
## Dispatch a Task Role AgentRun
|
|
367
|
+
|
|
368
|
+
A Task Role is a mutable Task-bound Worker instance. Apply a provider-neutral
|
|
369
|
+
Profile snapshot, then bind one or more Agents with independent runtime
|
|
370
|
+
settings:
|
|
371
|
+
|
|
372
|
+
```sh
|
|
373
|
+
yui task role add <task-id> <role> \
|
|
374
|
+
--profile <worker-profile>
|
|
375
|
+
yui task role show <task-id> <role>
|
|
376
|
+
yui task work create <task-id> "<outcome>" --role <role>
|
|
377
|
+
yui task work dispatch <work-id> --input "<execution brief>"
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
The Profile is not linked to an Agent. Applying it copies portable behavior
|
|
381
|
+
into the Role; later Profile edits do not overwrite Role customization. Each
|
|
382
|
+
Agent binding retains its own adapter, model, permission, environment, and
|
|
383
|
+
native Session configuration.
|
|
384
|
+
|
|
385
|
+
Add a non-Leader Task Role without `--agent` so Yui copies the configured global
|
|
386
|
+
Worker Role's complete bindings, regardless of the Task Role name. The Profile
|
|
387
|
+
still defines portable behavior; Worker defines runtime Agent configuration.
|
|
388
|
+
Before dispatch, inspect `task role show`; if Agent, model, effort, Profile, or
|
|
389
|
+
workspace scope is missing or inconsistent, do not dispatch or guess it.
|
|
390
|
+
|
|
391
|
+
Do not reconstruct Agent/model/effort or provider permission during execution.
|
|
392
|
+
If no compatible global template exists, ask the Operator or user to configure
|
|
393
|
+
one while it is dormant, then read it back before continuing. Every managed
|
|
394
|
+
binding defaults to `permission.strategy=bypass`; a binding may instead choose
|
|
395
|
+
provider `default` or any supported subset of native `configured` options.
|
|
396
|
+
Project write authority remains a separate exact WorkItem or ReviewRound scope. Profile and Skill
|
|
397
|
+
constrain behavior, and provider bypass never changes that boundary, including
|
|
398
|
+
for an `explorer` Role whose Profile intent remains read-only.
|
|
399
|
+
|
|
400
|
+
For meaningful concurrent-write risk, isolate the WorkItem before dispatch:
|
|
401
|
+
|
|
402
|
+
```sh
|
|
403
|
+
yui task work isolate <work-id>
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
WorkItem write scope is monotonic: it may expand but never shrink. If a Worker
|
|
407
|
+
reports that another Project must be modified, decide whether it belongs to the
|
|
408
|
+
same bounded result. The Worker yields without touching that Project. If
|
|
409
|
+
approved, add an unbound Project to the Task when necessary, update the
|
|
410
|
+
awaiting WorkItem scope with the complete old-plus-new Project set, isolate it
|
|
411
|
+
again, reject the yielded round with the scope-expansion reason, then
|
|
412
|
+
redispatch:
|
|
413
|
+
|
|
414
|
+
```sh
|
|
415
|
+
yui task project add <task-id> <project> --base <ref>
|
|
416
|
+
yui task work scope <work-id> \
|
|
417
|
+
--project <existing-project> --project <new-project>
|
|
418
|
+
yui task work isolate <work-id>
|
|
419
|
+
yui task work reject <work-id> \
|
|
420
|
+
--summary "Write scope expanded; continue in the refreshed workspace."
|
|
421
|
+
yui task work dispatch <work-id> --input "<continue with the expanded scope>"
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
Never omit an already-approved Project from `task work scope`; Yui rejects
|
|
425
|
+
scope shrink. Do not hot-swap an active Session. Do not let a Worker add a
|
|
426
|
+
Project or write through a Task-main context directory. Split a new WorkItem or
|
|
427
|
+
Task when the result or lifecycle is independent.
|
|
428
|
+
|
|
429
|
+
Do not dispatch until dependencies are complete. Do not create a second active
|
|
430
|
+
Run for the same Role or WorkItem. A Worker must yield its AgentRun. Yield
|
|
431
|
+
delivers evidence and moves the WorkItem to Leader review; it is not acceptance.
|
|
432
|
+
|
|
433
|
+
## Review, retry, capture, and integrate
|
|
434
|
+
|
|
435
|
+
After any Candidate is submitted, inspect its exact policy, Run result,
|
|
436
|
+
ReviewRounds, checks, and workspace through `task context`.
|
|
437
|
+
|
|
438
|
+
- `always`: wait for the automatically requested ReviewRound to become
|
|
439
|
+
terminal. Never bypass an active round.
|
|
440
|
+
- `leader`: decide whether the existing evidence is sufficient. Request Agent
|
|
441
|
+
review with `yui task work review <work-id>` when it adds useful evidence.
|
|
442
|
+
- `final`: for normal software delivery, keep WorkItem acceptance and
|
|
443
|
+
integration independent, then request one fresh ReviewRound over the frozen,
|
|
444
|
+
integrated Task candidate before completing the Task. The final Reviewer
|
|
445
|
+
evaluates the complete result across bound Projects; it is not a second
|
|
446
|
+
per-WorkItem approval protocol.
|
|
447
|
+
- A completed review is advice. Decide whether to accept, reject, review again,
|
|
448
|
+
or ask the user.
|
|
449
|
+
- Route a reachable final-Review finding to the original Worker while that
|
|
450
|
+
WorkItem is open; otherwise create the smallest Repair WorkItem. Resolve
|
|
451
|
+
cross-WorkItem repairs in a bounded Repair WorkItem, use Leader/Integration
|
|
452
|
+
for merge or small local fixes, and create an architecture WorkItem only for
|
|
453
|
+
a genuinely cross-cutting design issue. The Leader owns the decision and
|
|
454
|
+
completion; routine retries and routing do not need an InputRequest.
|
|
455
|
+
- A failed review is terminal evidence, not an automatic retry. Retry a
|
|
456
|
+
WorkItem review with a new `task work review`, accept with an explicit
|
|
457
|
+
rationale, or ask the user. For an exact failed Task-scoped final Review Run,
|
|
458
|
+
`yui task run retry <run-id>` requests one independent ReviewRound over the
|
|
459
|
+
same frozen Task candidate; repeating the same exact retry reuses that Round.
|
|
460
|
+
- If the same non-resource user choice or unavailable external fact repeats,
|
|
461
|
+
persist context and create an InputRequest instead of looping. Never use an
|
|
462
|
+
InputRequest to solicit authorization for an unrequested real-resource test;
|
|
463
|
+
the resource boundary above requires skipping it.
|
|
464
|
+
- A Reviewer may leave an optional diagnostic commit. Route its SHA and
|
|
465
|
+
findings explicitly to the original Worker; never capture, integrate, accept,
|
|
466
|
+
or auto-merge the review workspace. After routing, use
|
|
467
|
+
`yui task work review cleanup <task>/<review-round>` or preserve it explicitly
|
|
468
|
+
for further diagnosis. Cleanup removes only the ReviewRound workspace.
|
|
469
|
+
|
|
470
|
+
- If semantics or evidence are insufficient, reject with precise feedback and
|
|
471
|
+
redispatch the same WorkItem. Keep the isolated workspace so the Worker can
|
|
472
|
+
repair the existing result. This creates another AgentRun and Candidate but
|
|
473
|
+
must resume the original execution Role's native Session; do not create a
|
|
474
|
+
replacement Session silently.
|
|
475
|
+
- If the result is acceptable and has no isolated code changes, accept it.
|
|
476
|
+
- If it has an isolated workspace, review semantics first, then capture the
|
|
477
|
+
current HEAD, integrate and validate that ChangeSet, and accept only after the
|
|
478
|
+
latest captured result is integrated.
|
|
13
479
|
|
|
14
480
|
```sh
|
|
15
|
-
yui task
|
|
16
|
-
yui task
|
|
17
|
-
|
|
18
|
-
yui task
|
|
19
|
-
yui task
|
|
20
|
-
|
|
481
|
+
yui task work reject <work-id> --summary "<missing evidence or required fix>"
|
|
482
|
+
yui task work dispatch <work-id> --input "<prior result plus bounded feedback>"
|
|
483
|
+
|
|
484
|
+
yui task work capture <work-id>
|
|
485
|
+
yui task integration start <task-id> --project <project> \
|
|
486
|
+
--change-set <latest-project-change-set-id> \
|
|
487
|
+
--check "<validation command>"
|
|
488
|
+
yui task work accept <work-id> --summary "<acceptance and integration evidence>"
|
|
21
489
|
```
|
|
22
490
|
|
|
23
|
-
|
|
491
|
+
`--check` commands run from the selected Project's integration candidate root.
|
|
492
|
+
Keep them Project-relative and take the exact commands from Project Policy; do
|
|
493
|
+
not invent a repository-specific command or add a generic shell prelude.
|
|
24
494
|
|
|
25
|
-
|
|
495
|
+
Candidate and ReviewRound history is retained under the same WorkItem. Every
|
|
496
|
+
retry round must also retain its result and checks in the WorkItem summary.
|
|
497
|
+
Capture is immutable per Project HEAD: repeating capture at the same HEAD
|
|
498
|
+
reuses the record; a repaired HEAD produces a new candidate. Integrate each
|
|
499
|
+
modified Project independently and only its latest reviewed candidate. Never
|
|
500
|
+
accept an isolated result while any writable Project's latest ChangeSet is
|
|
501
|
+
unintegrated.
|
|
26
502
|
|
|
27
|
-
|
|
503
|
+
Workspace ownership is not Role ownership. The WorkItem owns its Develop
|
|
504
|
+
workspace even when a Task Role executes there; each ReviewRound owns a fresh
|
|
505
|
+
workspace from the Candidate's frozen commit, and each IntegrationAttempt owns
|
|
506
|
+
its candidate worktree. Dispatch attaches snapshots only. Review workspace
|
|
507
|
+
cleanup is explicit, and review edits can never feed WorkItem ChangeSet capture.
|
|
28
508
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
509
|
+
Yui validates a candidate and advances the target with compare-and-swap. A
|
|
510
|
+
failed candidate does not advance the target. Inspect and resolve semantic
|
|
511
|
+
conflicts as this Task's Leader:
|
|
32
512
|
|
|
33
|
-
|
|
513
|
+
```sh
|
|
514
|
+
yui task integration show <integration-id>
|
|
515
|
+
yui task integration resolve <integration-id> \
|
|
516
|
+
--option <manual-resolution|reject> \
|
|
517
|
+
--rationale "<intended semantics and evidence>"
|
|
518
|
+
yui task integration continue <integration-id>
|
|
519
|
+
```
|
|
34
520
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
521
|
+
For manual resolution, edit only the candidate worktree and finish the reported
|
|
522
|
+
Git conflict before continuing. Failed checks, rejected candidates, and target
|
|
523
|
+
movement must remain explicit; do not bypass them with manual ref updates.
|
|
38
524
|
|
|
39
|
-
|
|
525
|
+
Choose cleanup from the WorkItem's expected next use, not merely from a Run
|
|
526
|
+
ending. If another iteration is imminent, retain the native process and
|
|
527
|
+
worktree. For a longer pause with no active Run or pending delivery, release
|
|
528
|
+
only the runtime; Yui preserves the native Session id and WorkItem worktree so
|
|
529
|
+
the next dispatch can resume them:
|
|
40
530
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
531
|
+
```sh
|
|
532
|
+
yui task work cleanup <task>/<work> --runtime-only
|
|
533
|
+
```
|
|
44
534
|
|
|
45
|
-
|
|
535
|
+
After final acceptance and integration, clean terminal resources deliberately:
|
|
536
|
+
|
|
537
|
+
```sh
|
|
538
|
+
yui task integration cleanup <integration-id>
|
|
539
|
+
yui task work cleanup <task>/<work> --integrated
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
Use `--abandon` only for deliberate discard. Dirty worktrees remain available
|
|
543
|
+
for capture or resolution. Cleanup must never stop a Role already serving a
|
|
544
|
+
newer WorkItem. If the original execution Session cannot be resumed, surface
|
|
545
|
+
the recovery decision to the user; do not silently discard its context by
|
|
546
|
+
creating a replacement.
|
|
547
|
+
|
|
548
|
+
If a native Role Session disappears, run `yui task reconcile <task-id>`,
|
|
549
|
+
inspect the Run and partial work, then retry only a confirmed failed Run:
|
|
550
|
+
|
|
551
|
+
```sh
|
|
552
|
+
yui task run retry <run-id>
|
|
553
|
+
```
|
|
46
554
|
|
|
47
555
|
## Request a decision
|
|
48
556
|
|
|
49
|
-
|
|
557
|
+
When a real user choice, new authority, or unavailable external fact is
|
|
558
|
+
required, first persist the Task checkpoint, then create one durable
|
|
559
|
+
InputRequest. Do not use InputRequests for scheduling, routine implementation
|
|
560
|
+
choices inside the accepted Task Contract, review-fix routing, or confirmation
|
|
561
|
+
to continue:
|
|
50
562
|
|
|
51
563
|
```sh
|
|
52
564
|
yui task input request <task-id> --question "<specific question>" \
|
|
53
|
-
--choice <key>=<label> --blocks work-item:<work-
|
|
565
|
+
--choice <key>=<label> --blocks work-item:<work-id>
|
|
54
566
|
```
|
|
55
567
|
|
|
56
|
-
Omit `--choice` for free text.
|
|
568
|
+
Omit `--choice` for free text. Use `--recommend` and `--timeout-seconds` only
|
|
569
|
+
when the exact fallback is safe; never use a timeout to bypass authorization.
|
|
570
|
+
A successful request ends the current Leader control Run, so wait for Yui to
|
|
571
|
+
resume the fixed Leader Session.
|
|
572
|
+
|
|
573
|
+
## Finish every Leader turn
|
|
574
|
+
|
|
575
|
+
Every wake is an active control Run. Before ending:
|
|
57
576
|
|
|
58
|
-
|
|
577
|
+
- If you cannot finally determine success, failure, completeness, or the
|
|
578
|
+
correct disposition, do not guess, silently stop, or hide uncertainty behind
|
|
579
|
+
a success summary. Clearly label the checkpoint uncertain, incomplete,
|
|
580
|
+
blocked, or requiring Leader judgment.
|
|
581
|
+
- Preserve the same complete checkpoint before either yield or an InputRequest.
|
|
582
|
+
When applicable, record exact Run, WorkItem, and native Session identity;
|
|
583
|
+
actions actually performed; changed paths and commit/worktree state; checks
|
|
584
|
+
actually run and their outcomes; provider, runtime, or permission errors;
|
|
585
|
+
the last confirmed lifecycle boundary; work not performed; unresolved
|
|
586
|
+
assumptions or decisions; residual risks; confidence; and bounded next
|
|
587
|
+
options.
|
|
588
|
+
- Review Runs report findings, verification gaps, and limits. Use that evidence
|
|
589
|
+
to decide disposition as Leader; do not treat the review as acceptance.
|
|
59
590
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- Manual bookkeeping is only for a WorkItem with no queued or running Run:
|
|
591
|
+
1. update the Brief checkpoint if semantic state changed;
|
|
592
|
+
2. record any material Decision, completed Milestone, or stable Project
|
|
593
|
+
Knowledge;
|
|
594
|
+
3. do exactly one of: complete the Task, create an InputRequest, or yield.
|
|
65
595
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
596
|
+
```sh
|
|
597
|
+
yui task run yield <run-id> --summary-file - <<'YUI_SUMMARY'
|
|
598
|
+
<current result or waiting state>
|
|
599
|
+
YUI_SUMMARY
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
A Leader yield preserves immutable Run evidence only. It never implies Leader
|
|
603
|
+
acceptance, WorkItem completion, ChangeSet capture, Integration, or Task
|
|
604
|
+
completion. The exact yield command must be the final tool action. After it
|
|
605
|
+
succeeds, stop immediately and do not inspect, poll, accept, or perform more
|
|
606
|
+
work in the same native turn. If the exact yield is denied, do not retry,
|
|
607
|
+
broaden permissions, use a wrapper, mutate Yui state, or invent delivery
|
|
608
|
+
evidence; truthfully surface the blocker through the supported provider failure
|
|
609
|
+
boundary. Do not add a fallback protocol.
|
|
610
|
+
|
|
611
|
+
Yield before waiting only for managed Task Role or Reviewer results whose
|
|
612
|
+
durable mailbox can wake the Task. Do not yield while a native child result is
|
|
613
|
+
outstanding; its native completion event returns to this same Leader turn and
|
|
614
|
+
requires the exact Leader Run fence to remain active.
|
|
69
615
|
|
|
70
|
-
|
|
616
|
+
Complete only after required WorkItems are accepted, Role work is terminal,
|
|
617
|
+
latest isolated results are integrated or deliberately abandoned, and user
|
|
618
|
+
inputs are resolved. Task completion is a semantic boundary: it records the
|
|
619
|
+
result and notifies the global Operator; it does not infer runtime cleanup or
|
|
620
|
+
stop this Leader. Do not kill tmux panes, edit Session records, or add a
|
|
621
|
+
provider-specific cleanup step. After completion succeeds, end the current
|
|
622
|
+
Turn immediately so the Operator can perform the explicit archive boundary;
|
|
623
|
+
do not stop or mutate the native Session yourself.
|
|
624
|
+
|
|
625
|
+
```sh
|
|
626
|
+
yui task complete <task-id> --summary "<outcome, validation, and remaining risks>"
|
|
627
|
+
```
|
|
71
628
|
|
|
72
|
-
|
|
629
|
+
Retire obsolete WorkItems with `yui task work retire <task>/<work> --summary
|
|
630
|
+
"..."`, optionally using `--replacement`. If the current Role generation is
|
|
631
|
+
unusable, reset it with `yui task role reset <task> <role> --reason "..."` and
|
|
632
|
+
let Yui derive all runtime identities from durable state. Archiving is a
|
|
633
|
+
separate global Operator lifecycle action. It performs the final Task-owned
|
|
634
|
+
runtime and clean-worktree teardown, including this Leader.
|