@zq-silk/yui 0.13.9 → 0.14.0

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.
Files changed (229) hide show
  1. package/ARCHITECTURE.md +69 -428
  2. package/README.md +108 -298
  3. package/dist/agent/managedRuntimeEnvironment.js +2 -2
  4. package/dist/cli/commandCatalog.js +39 -77
  5. package/dist/cli/interactionCandidates.js +4 -4
  6. package/dist/cli/interactionPolicy.js +7 -10
  7. package/dist/cli/invocationRouter.js +1 -1
  8. package/dist/cli/updateCommand.js +6 -27
  9. package/dist/cli/updateOrchestrator.js +63 -484
  10. package/dist/cli/updatePorts.js +15 -333
  11. package/dist/cli/upgradeCommand.js +8 -65
  12. package/dist/cli.js +57 -242
  13. package/dist/commands/configCommands.js +11 -62
  14. package/dist/commands/executionAuditCommands.js +23 -23
  15. package/dist/commands/globalRoleCommands.js +2 -7
  16. package/dist/commands/jobCommands.js +1 -4
  17. package/dist/commands/projectCommands.js +5 -5
  18. package/dist/commands/releaseCommands.js +3 -10
  19. package/dist/commands/resourcesCommands.js +2 -2
  20. package/dist/commands/sessionCommands.js +2 -2
  21. package/dist/commands/taskActor.js +31 -39
  22. package/dist/commands/taskChangeSetCommands.js +5 -12
  23. package/dist/commands/taskCommands.js +464 -1249
  24. package/dist/commands/taskContextCommand.js +35 -36
  25. package/dist/commands/taskExecutionCommands.js +33 -46
  26. package/dist/commands/taskInputCommands.js +20 -42
  27. package/dist/commands/taskNextActionCommand.js +9 -9
  28. package/dist/commands/taskOverviewCommand.js +56 -95
  29. package/dist/commands/taskRoleRuntimeStatus.js +77 -107
  30. package/dist/commands/taskUpstreamCommands.js +3 -3
  31. package/dist/commands/taskWorkspaceCommands.js +7 -79
  32. package/dist/commands/telemetryCommands.js +32 -124
  33. package/dist/commands/workflowCommands.js +3 -3
  34. package/dist/completion/fileCompletionManager.js +1 -1
  35. package/dist/config/configCatalog.js +4 -6
  36. package/dist/config/yuiConfig.js +6 -43
  37. package/dist/context/dispatchContext.js +14 -30
  38. package/dist/context/roleSessionContext.js +2 -2
  39. package/dist/context/sessionBootstrapManifest.js +2 -2
  40. package/dist/context/{runContextPack.js → turnContextPack.js} +58 -73
  41. package/dist/context/turnInputContract.js +204 -0
  42. package/dist/context/wakeNotification.js +2 -2
  43. package/dist/controller/agentRuntimeObserver.js +18 -18
  44. package/dist/controller/clientRuntime.js +13 -20
  45. package/dist/controller/controller.js +89 -116
  46. package/dist/controller/fileSchedulerStoreAdapter.js +511 -742
  47. package/dist/controller/jobControl.js +17 -17
  48. package/dist/controller/resourceInventory.js +6 -6
  49. package/dist/controller/resourceInventoryLinux.js +38 -59
  50. package/dist/controller/resourceInventoryRpc.js +3 -3
  51. package/dist/controller/resourceInventoryWorker.js +1 -1
  52. package/dist/controller/runtime.js +46 -53
  53. package/dist/controller/runtimeEventInbox.js +23 -31
  54. package/dist/controller/runtimeEventProcessor.js +15 -15
  55. package/dist/controller/{runtimeHookRunFence.js → runtimeHookTurnFence.js} +87 -81
  56. package/dist/controller/runtimeLaunchCoordinator.js +3 -3
  57. package/dist/controller/runtimeObservationHook.js +11 -8
  58. package/dist/controller/sessionNotify.js +11 -11
  59. package/dist/controller/structuredProviderObservation.js +89 -16
  60. package/dist/coordination/workMailbox.js +309 -579
  61. package/dist/coordination/workMailboxQueue.js +5 -6
  62. package/dist/core/controllerClient.js +1 -91
  63. package/dist/core/controllerServer.js +3 -6
  64. package/dist/doctor/doctor.js +51 -314
  65. package/dist/execution/candidateConvergence.js +3 -3
  66. package/dist/execution/executionGroup.js +32 -33
  67. package/dist/execution/executionHealth.js +36 -38
  68. package/dist/execution/resourceBroker.js +12 -12
  69. package/dist/executor/agentExecutor.js +30 -265
  70. package/dist/executor/effectiveLaunch.js +9 -19
  71. package/dist/executor/executorRegistry.js +43 -17
  72. package/dist/executor/fileRoleLaunchPlanner.js +56 -56
  73. package/dist/executor/launchPlan.js +3 -3
  74. package/dist/executor/workspacePreflightClassification.js +16 -16
  75. package/dist/grant/capabilityGrant.js +20 -25
  76. package/dist/input/inputRequest.js +12 -12
  77. package/dist/integration/changeSet.js +9 -13
  78. package/dist/integration/changeSetManifest.js +1 -1
  79. package/dist/integration/gitIntegrationService.js +2 -2
  80. package/dist/integration/integrationQueueService.js +5 -21
  81. package/dist/integration/overlapDiagnostics.js +2 -2
  82. package/dist/interaction/operatorPresentation.js +1 -1
  83. package/dist/job/jobRunner.js +1 -1
  84. package/dist/lifecycle/canonicalLifecycleEvent.js +25 -25
  85. package/dist/lifecycle/{exactRunTerminalization.js → exactTurnTerminalization.js} +116 -232
  86. package/dist/message/message.js +6 -6
  87. package/dist/observability/executionAudit.js +74 -86
  88. package/dist/observability/faultClassification.js +7 -24
  89. package/dist/observability/orchestrationMetrics.js +5 -5
  90. package/dist/observability/runtimeIdentity.js +34 -101
  91. package/dist/profile/agentProfile.js +1 -1
  92. package/dist/release/cliHomeReleaseFence.js +3 -3
  93. package/dist/release/releaseWorkflowEngine.js +6 -10
  94. package/dist/release/releaseWorkflowPorts.js +2 -2
  95. package/dist/release/workflowFileLock.js +1 -1
  96. package/dist/repository/checkoutSwap.js +1 -1
  97. package/dist/repository/gitWorkspace.js +0 -13
  98. package/dist/repository/project.js +1 -1
  99. package/dist/repository/projectMaintenanceLock.js +1 -2
  100. package/dist/repository/taskBaseFreshness.js +13 -13
  101. package/dist/repository/taskWorkspaceCoordinator.js +21 -25
  102. package/dist/repository/taskWorkspaceIdentity.js +8 -21
  103. package/dist/repository/taskWorkspacePreparer.js +63 -620
  104. package/dist/resources/autoResourceGc.js +3 -3
  105. package/dist/resources/liveReferences.js +1 -1
  106. package/dist/resources/resourceGc.js +1 -1
  107. package/dist/resources/sqliteResourceRegistry.js +1 -1
  108. package/dist/review/reviewDecision.js +7 -7
  109. package/dist/review/reviewFindingLedger.js +1 -1
  110. package/dist/review/reviewOutcomeClassifier.js +35 -50
  111. package/dist/review/reviewRound.js +14 -25
  112. package/dist/review/reviewerAvailability.js +4 -4
  113. package/dist/review/taskFinalReviewContractResolution.js +41 -0
  114. package/dist/role/role.js +6 -3
  115. package/dist/runtime/agentDriver.js +4 -0
  116. package/dist/runtime/agentHost.js +151 -36
  117. package/dist/runtime/builtinAgentDrivers.js +79 -2
  118. package/dist/runtime/codexAppServerRuntime.js +122 -0
  119. package/dist/runtime/continuationManager.js +3 -5
  120. package/dist/runtime/exactControlPlane.js +17 -42
  121. package/dist/runtime/firstProgressAdvisory.js +1 -1
  122. package/dist/runtime/index.js +2 -2
  123. package/dist/runtime/launchDiagnostics.js +2 -2
  124. package/dist/runtime/lifecycleReservation.js +4 -4
  125. package/dist/runtime/processExitObservation.js +1 -1
  126. package/dist/runtime/processExitOutbox.js +0 -32
  127. package/dist/runtime/promptEnvelope.js +9 -9
  128. package/dist/runtime/providerContinuation.js +2 -2
  129. package/dist/runtime/providerContinuationReconciliationService.js +2 -2
  130. package/dist/runtime/providerRuntimeIdentity.js +76 -24
  131. package/dist/runtime/recentTurnIds.js +38 -0
  132. package/dist/runtime/runtimeContinuationProjection.js +2 -2
  133. package/dist/runtime/runtimeHealthPolicy.js +1 -1
  134. package/dist/runtime/runtimeObservation.js +58 -21
  135. package/dist/runtime/runtimeProjection.js +19 -27
  136. package/dist/runtime/sessionLaunchRequest.js +2 -2
  137. package/dist/runtime/structuredProviderHost.js +177 -12
  138. package/dist/runtime/tmuxAdapters.js +46 -11
  139. package/dist/scheduler/activeRoleTurnDelivery.js +245 -0
  140. package/dist/scheduler/leaderWakeupProcessor.js +147 -445
  141. package/dist/scheduler/operatorEvent.js +4 -6
  142. package/dist/scheduler/resourceQueueProjection.js +71 -0
  143. package/dist/scheduler/{roleRunLiveness.js → roleTurnLiveness.js} +24 -28
  144. package/dist/scheduler/{roleRunStall.js → roleTurnStall.js} +162 -247
  145. package/dist/scheduler/taskExecutionProjection.js +99 -99
  146. package/dist/scheduler/taskObservabilityProjection.js +10 -10
  147. package/dist/scheduler/taskWake.js +4 -4
  148. package/dist/scheduler/wakeReason.js +6 -10
  149. package/dist/scheduler/wakeupQueue.js +0 -9
  150. package/dist/setup/setupCommand.js +2 -2
  151. package/dist/storage/currentTaskStore.js +46 -0
  152. package/dist/storage/persistenceWorker.js +1 -1
  153. package/dist/storage/sqliteSchema.js +81 -485
  154. package/dist/storage/sqliteStore.js +206 -365
  155. package/dist/storage/storageSchema.js +1 -15
  156. package/dist/storage/storageVersions.js +8 -9
  157. package/dist/storage/storeRpc.js +10 -34
  158. package/dist/storage/taskStore.js +63 -3415
  159. package/dist/storage/upgrade/recordVersions.js +55 -149
  160. package/dist/storage/upgrade/upgradeOrchestrator.js +89 -1752
  161. package/dist/task/completionReadiness.js +5 -5
  162. package/dist/task/deliveryGuard.js +10 -10
  163. package/dist/task/nextAction.js +74 -77
  164. package/dist/task/task.js +2 -4
  165. package/dist/task/taskRecordReference.js +3 -3
  166. package/dist/task/taskRecordRetirement.js +1 -1
  167. package/dist/telemetry/sqliteTelemetryStore.js +53 -53
  168. package/dist/telemetry/telemetryConfig.js +14 -14
  169. package/dist/telemetry/telemetryWiring.js +8 -14
  170. package/dist/turn/turn.js +356 -0
  171. package/dist/{run/runIdentity.js → turn/turnIdentity.js} +4 -4
  172. package/dist/verification/gateArtifactStore.js +2 -2
  173. package/dist/web/assets/client/app.js +1 -1
  174. package/dist/web/assets/client/components.js +29 -54
  175. package/dist/web/assets/client/i18n.js +17 -37
  176. package/dist/web/assets/client/view.js +37 -37
  177. package/dist/web/assets/shell.js +1 -1
  178. package/dist/web/assets/styles/cards.js +5 -5
  179. package/dist/web/assets/styles/widgets.js +1 -2
  180. package/dist/web/webSnapshot.js +65 -60
  181. package/dist/workItem/workItem.js +11 -11
  182. package/dist/workspace/workItemChangeSetManager.js +1 -1
  183. package/docs/task-local-identity.md +5 -5
  184. package/i18n/README.zh-CN.md +41 -54
  185. package/package.json +1 -1
  186. package/skills/yui-leader/SKILL.md +85 -83
  187. package/skills/yui-operator/SKILL.md +16 -16
  188. package/skills/yui-reviewer/SKILL.md +10 -10
  189. package/skills/yui-runtime/SKILL.md +17 -18
  190. package/skills/yui-worker/SKILL.md +16 -18
  191. package/dist/context/runContextContract.js +0 -162
  192. package/dist/executor/turnCompletion.js +0 -126
  193. package/dist/review/taskFinalReviewContractEvent.js +0 -1
  194. package/dist/review/taskFinalReviewContractRebind.js +0 -367
  195. package/dist/run/agentRun.js +0 -356
  196. package/dist/run/rejectedYieldAttempt.js +0 -221
  197. package/dist/run/runControlRequest.js +0 -50
  198. package/dist/run/yieldReceipt.js +0 -65
  199. package/dist/runtime/turnCompletion.js +0 -3
  200. package/dist/scheduler/actionability.js +0 -323
  201. package/dist/scheduler/activeRoleRunDelivery.js +0 -868
  202. package/dist/scheduler/activeTaskProgress.js +0 -126
  203. package/dist/storage/compatibleTaskStore.js +0 -248
  204. package/dist/storage/migration/baseline.js +0 -78
  205. package/dist/storage/migration/classifier.js +0 -51
  206. package/dist/storage/migration/compatibleCodec.js +0 -53
  207. package/dist/storage/migration/engine.js +0 -147
  208. package/dist/storage/migration/index.js +0 -33
  209. package/dist/storage/migration/planner.js +0 -154
  210. package/dist/storage/migration/productionRegistry.js +0 -3931
  211. package/dist/storage/migration/registry.js +0 -169
  212. package/dist/storage/migration/report.js +0 -54
  213. package/dist/storage/migration/types.js +0 -31
  214. package/dist/storage/upgrade/homeClassification.js +0 -353
  215. package/dist/storage/upgrade/homeMigrationTarget.js +0 -595
  216. package/dist/storage/upgrade/migrationReceipt.js +0 -67
  217. package/dist/storage/upgrade/offlineUpgradeInventory.js +0 -453
  218. package/dist/storage/upgrade/productionMigrationRegistry.js +0 -6
  219. package/dist/storage/upgrade/pseudoLayoutRepair.js +0 -241
  220. package/dist/storage/upgrade/recordVersionScan.js +0 -176
  221. package/dist/storage/upgrade/sqliteFileSet.js +0 -50
  222. package/dist/storage/upgrade/sqliteMigrationTarget.js +0 -375
  223. package/dist/storage/upgrade/sqliteRecordMigrationTarget.js +0 -305
  224. package/dist/storage/upgrade/sqliteStateMigration.js +0 -918
  225. package/dist/storage/upgrade/switchProgress.js +0 -80
  226. package/dist/storage/upgrade/upgradeReceipt.js +0 -161
  227. package/dist/storage/upgradeCoordination.js +0 -187
  228. package/dist/storage/upgradeFence.js +0 -366
  229. package/dist/telemetry/telemetryCompaction.js +0 -252
@@ -16,7 +16,7 @@ export const YUI_MANAGED_RUNTIME_ENVIRONMENT_NAMES = Object.freeze([
16
16
  "YUI_ADAPTER_ID",
17
17
  "YUI_DRIVER_ID",
18
18
  "YUI_WORKSPACE",
19
- "YUI_RUN_ID",
19
+ "YUI_TURN_ID",
20
20
  "YUI_LAUNCH_ID",
21
21
  "YUI_NATIVE_SESSION_ROOT",
22
22
  "YUI_NATIVE_SESSION_ID",
@@ -30,7 +30,7 @@ export const YUI_MANAGED_RUNTIME_ENVIRONMENT_NAMES = Object.freeze([
30
30
  "YUI_WRITABLE_PROJECT_IDS",
31
31
  "YUI_CONTEXT_PROJECT_IDS",
32
32
  "YUI_WORKSPACE_PROJECTS",
33
- "YUI_LEADER_ACTION_RUN_ID",
33
+ "YUI_LEADER_ACTION_TURN_ID",
34
34
  "YUI_LEADER_ACTION_RECEIPT_ID",
35
35
  "YUI_JOB_CALLER_KEY"
36
36
  ]);
@@ -353,12 +353,6 @@ const taskChildren = [
353
353
  options: ["--integrated", "--abandon"]
354
354
  },
355
355
  { name: "reconcile", summary: "Run one immediate Controller reconciliation.", usage: "yui task reconcile <id>" },
356
- {
357
- name: "rebuild",
358
- summary: "Rebuild a legacy Task workspace under its canonical identity.",
359
- usage: "yui task rebuild <task> [--latest]",
360
- options: ["--latest"]
361
- },
362
356
  {
363
357
  name: "upstream",
364
358
  summary: "Integrate upstream changes into an Active Task workspace.",
@@ -372,23 +366,6 @@ const taskChildren = [
372
366
  }
373
367
  ]
374
368
  },
375
- {
376
- name: "history",
377
- summary: "Inspect and archive legacy Task refs in the Home repository.",
378
- sections: [{ id: "manage", title: "Commands", entries: ["list", "archive"] }],
379
- children: [
380
- {
381
- name: "list",
382
- summary: "List legacy Task refs and their live owners.",
383
- usage: "yui task history list [task]"
384
- },
385
- {
386
- name: "archive",
387
- summary: "Archive legacy Task refs without a live owner.",
388
- usage: "yui task history archive [task]"
389
- }
390
- ]
391
- },
392
369
  {
393
370
  name: "replace",
394
371
  summary: "Create a draft successor for a terminal Task.",
@@ -403,11 +380,10 @@ const taskChildren = [
403
380
  {
404
381
  name: "send",
405
382
  summary: "Send a Task message.",
406
- usage: "yui task message send <id> (<body>|--body-file <path|->) [--wake-policy leader|none] [--delivery-mode followup|steer]",
407
- options: ["--body-file", "--wake-policy", "--delivery-mode"],
383
+ usage: "yui task message send <id> (<body>|--body-file <path|->) [--wake-policy leader|none]",
384
+ options: ["--body-file", "--wake-policy"],
408
385
  optionValues: {
409
- "--wake-policy": ["leader", "none"],
410
- "--delivery-mode": ["followup", "steer"]
386
+ "--wake-policy": ["leader", "none"]
411
387
  },
412
388
  fileOptions: ["--body-file"]
413
389
  },
@@ -432,8 +408,8 @@ const taskChildren = [
432
408
  children: [
433
409
  {
434
410
  name: "request",
435
- summary: "Pause the active Leader Run and request user input.",
436
- usage: "yui task input request <task> --question <text> [--choice <key=label> ...] [--blocks <work-item:id|run:id> ...] [--recommend <key> --timeout-seconds <seconds>]",
411
+ summary: "Pause the active Leader Turn and request user input.",
412
+ usage: "yui task input request <task> --question <text> [--choice <key=label> ...] [--blocks <work-item:id|turn:id> ...] [--recommend <key> --timeout-seconds <seconds>]",
437
413
  options: ["--question", "--choice", "--blocks", "--recommend", "--timeout-seconds"]
438
414
  },
439
415
  {
@@ -708,7 +684,7 @@ const taskChildren = [
708
684
  children: [
709
685
  {
710
686
  name: "retry",
711
- summary: "Retry a failed Task-final ReviewRound that has no Reviewer Run.",
687
+ summary: "Retry a failed Task-final ReviewRound that has no Reviewer Turn.",
712
688
  usage: "yui task work review retry <task>/<review-round>"
713
689
  },
714
690
  {
@@ -737,74 +713,67 @@ const taskChildren = [
737
713
  },
738
714
  {
739
715
  name: "retire",
740
- summary: "Retire a WorkItem and settle its exact Runs.",
716
+ summary: "Retire a WorkItem and settle its exact Turns.",
741
717
  usage: "yui task work retire <work> --summary <text> [--replacement <work>]",
742
718
  options: ["--summary", "--replacement"]
743
719
  }
744
720
  ]
745
721
  },
746
722
  {
747
- name: "run",
748
- summary: "Inspect and control Task Role Agent Runs.",
749
- sections: [{ id: "manage", title: "Commands", entries: ["list", "show", "retry", "settle", "yield", "context", "checkpoint", "retire"] }],
723
+ name: "turn",
724
+ summary: "Inspect and control Task Role Turns.",
725
+ sections: [{ id: "manage", title: "Commands", entries: ["list", "show", "retry", "settle", "context", "checkpoint", "retire"] }],
750
726
  children: [
751
- { name: "list", summary: "List Runs for a work item.", usage: "yui task run list <task>/<work>" },
727
+ { name: "list", summary: "List all Turns for a Task or one WorkItem.", usage: "yui task turn list <task|task/work>" },
752
728
  {
753
729
  name: "show",
754
- summary: "Show one Run and its retained audit evidence.",
755
- usage: "yui task run show <task>/<run> [--json]"
730
+ summary: "Show one Turn and its retained audit evidence.",
731
+ usage: "yui task turn show <task>/<turn> [--json]"
756
732
  },
757
733
  {
758
734
  name: "retry",
759
- summary: "Retry a failed execution Run or request a fresh Round for an exact failed final Review Run.",
760
- usage: "yui task run retry <task>/<run>"
735
+ summary: "Retry a failed execution Turn or request a fresh Round for an exact failed final Review Turn.",
736
+ usage: "yui task turn retry <task>/<turn>"
761
737
  },
762
738
  {
763
739
  name: "settle",
764
- summary: "Close an obsolete stranded final Review Run without requesting a retry Round.",
765
- usage: "yui task run settle <task>/<run>"
766
- },
767
- {
768
- name: "yield",
769
- summary: "Complete an active Run and wake the Leader.",
770
- usage: "yui task run yield <task>/<run> (--summary <text>|--summary-file <path|->)",
771
- options: ["--summary", "--summary-file"],
772
- fileOptions: ["--summary-file"]
740
+ summary: "Close an obsolete stranded final Review Turn without requesting a retry Round.",
741
+ usage: "yui task turn settle <task>/<turn>"
773
742
  },
774
743
  {
775
744
  name: "context",
776
- summary: "Load the exact authorized Run context.",
777
- usage: "yui task run context <task>/<run> [--json]",
745
+ summary: "Load the exact authorized Turn context.",
746
+ usage: "yui task turn context <task>/<turn> [--json]",
778
747
  executable: true,
779
748
  hidden: true,
780
749
  sections: [{ id: "load", title: "Commands", entries: ["expand", "delta"] }],
781
750
  children: [
782
751
  {
783
752
  name: "expand",
784
- summary: "Expand one authorized Run context reference.",
785
- usage: "yui task run context expand <task>/<run> <ref-id> [--store <store>] [--mode full]",
753
+ summary: "Expand one authorized Turn context reference.",
754
+ usage: "yui task turn context expand <task>/<turn> <ref-id> [--store <store>] [--mode full]",
786
755
  options: ["--store", "--mode"]
787
756
  },
788
757
  {
789
758
  name: "delta",
790
- summary: "Load authorized Run context changes after a cursor.",
791
- usage: "yui task run context delta <task>/<run> --after <cursor>",
759
+ summary: "Load authorized Turn context changes after a cursor.",
760
+ usage: "yui task turn context delta <task>/<turn> --after <cursor>",
792
761
  options: ["--after"]
793
762
  }
794
763
  ]
795
764
  },
796
765
  {
797
766
  name: "checkpoint",
798
- summary: "Record durable progress for a long-running Agent Run.",
799
- usage: "yui task run checkpoint <run> (--note <text>|--note-file <path|->)",
767
+ summary: "Record durable progress for a long-running Turn.",
768
+ usage: "yui task turn checkpoint <turn> (--note <text>|--note-file <path|->)",
800
769
  options: ["--note", "--note-file"],
801
770
  fileOptions: ["--note-file"],
802
771
  hidden: true
803
772
  },
804
773
  {
805
774
  name: "retire",
806
- summary: "Retire an incorrect historical Agent Run without deleting its audit record.",
807
- usage: "yui task run retire <task>/<run> --reason <text> [--expected-progress-at <timestamp>] [--agent-id <id>] [--adapter-id <id>] [--native-session-id <id>] [--launch-id <id>]",
775
+ summary: "Retire an incorrect historical Turn without deleting its audit record.",
776
+ usage: "yui task turn retire <task>/<turn> --reason <text> [--expected-progress-at <timestamp>] [--agent-id <id>] [--adapter-id <id>] [--native-session-id <id>] [--launch-id <id>]",
808
777
  options: ["--reason", "--expected-progress-at", "--progress-at", "--agent-id", "--adapter-id", "--native-session-id", "--launch-id"]
809
778
  }
810
779
  ]
@@ -812,7 +781,7 @@ const taskChildren = [
812
781
  {
813
782
  name: "review",
814
783
  summary: "Control Task-final ReviewRounds.",
815
- sections: [{ id: "manage", title: "Commands", entries: ["request", "rebind", "force-fresh", "group", "retry", "finding"] }],
784
+ sections: [{ id: "manage", title: "Commands", entries: ["request", "force-fresh", "group", "retry", "finding"] }],
816
785
  children: [
817
786
  {
818
787
  name: "request",
@@ -820,12 +789,6 @@ const taskChildren = [
820
789
  usage: "yui task review request <task> --role <global-role> [--strategy fixed:<count>|adaptive:<max>] [--lane-role <role> ...] [--delta-recheck]",
821
790
  options: ["--role", "--strategy", "--lane-role", "--delta-recheck"]
822
791
  },
823
- {
824
- name: "rebind",
825
- summary: "Explicitly rebind a frozen Task-final contract after a verified immutable release handover.",
826
- usage: "yui task review rebind <task> --from-control <digest> --to-control <digest> --from-release <release-id> --to-release <release-id>",
827
- options: ["--from-control", "--to-control", "--from-release", "--to-release"]
828
- },
829
792
  {
830
793
  name: "force-fresh",
831
794
  summary: "Replace one exact terminal non-semantic Task-final Review with a distinct full Round.",
@@ -846,7 +809,7 @@ const taskChildren = [
846
809
  },
847
810
  {
848
811
  name: "retry",
849
- summary: "Retry a failed Task-final ReviewRound without a Reviewer Run.",
812
+ summary: "Retry a failed Task-final ReviewRound without a Reviewer Turn.",
850
813
  usage: "yui task review retry <task>/<review-round>"
851
814
  },
852
815
  {
@@ -1067,7 +1030,7 @@ export const ROOT_COMMAND = buildNode({
1067
1030
  { name: "update", summary: "Install the latest published Yui package globally." },
1068
1031
  {
1069
1032
  name: "upgrade",
1070
- summary: "Migrate this Home's storage to the current schema.",
1033
+ summary: "Inspect this Home and apply any supported storage upgrade.",
1071
1034
  usage: "yui upgrade [--dry-run]",
1072
1035
  options: ["--dry-run"]
1073
1036
  },
@@ -1094,7 +1057,7 @@ export const ROOT_COMMAND = buildNode({
1094
1057
  children: [
1095
1058
  {
1096
1059
  name: "status",
1097
- summary: "Show Controller and Agent runtime resources.",
1060
+ summary: "Show Controller and AgentRuntime resources.",
1098
1061
  usage: "yui controller status [--all] [--verbose]",
1099
1062
  options: ["--all", "--verbose"]
1100
1063
  },
@@ -1129,7 +1092,7 @@ export const ROOT_COMMAND = buildNode({
1129
1092
  children: [
1130
1093
  {
1131
1094
  name: "audit",
1132
- summary: "Report Runs, wakes, Sessions, Reviews, Integrations, and telemetry volume.",
1095
+ summary: "Report Turns, wakes, Sessions, Reviews, Integrations, and telemetry volume.",
1133
1096
  usage: "yui execution audit [--task <id>] [--since <iso>] [--until <iso>]",
1134
1097
  options: ["--task", "--since", "--until"]
1135
1098
  }
@@ -1450,10 +1413,10 @@ export const ROOT_COMMAND = buildNode({
1450
1413
  },
1451
1414
  {
1452
1415
  name: "task",
1453
- summary: "Manage Tasks, WorkItems, Agent Runs, and integration.",
1416
+ summary: "Manage Tasks, WorkItems, Turns, and integration.",
1454
1417
  sections: [
1455
- { id: "lifecycle", title: "Lifecycle", entries: ["create", "project", "base", "update", "activate", "execution", "complete", "reopen", "retire", "list", "show", "context", "next-action", "archive", "rebuild", "history", "replace", "reconcile", "upstream"] },
1456
- { id: "collaboration", title: "Collaboration", entries: ["message", "input", "grant", "workflow", "publication", "work", "run", "review", "integration", "role", "overlap", "change-set"] },
1418
+ { id: "lifecycle", title: "Lifecycle", entries: ["create", "project", "base", "update", "activate", "execution", "complete", "reopen", "retire", "list", "show", "context", "next-action", "archive", "replace", "reconcile", "upstream"] },
1419
+ { id: "collaboration", title: "Collaboration", entries: ["message", "input", "grant", "workflow", "publication", "work", "turn", "review", "integration", "role", "overlap", "change-set"] },
1457
1420
  { id: "knowledge", title: "Task Knowledge", entries: ["brief", "decision", "milestone", "event", "continuation", "wake"] }
1458
1421
  ],
1459
1422
  children: taskChildren
@@ -1481,12 +1444,11 @@ export const ROOT_COMMAND = buildNode({
1481
1444
  {
1482
1445
  name: "telemetry",
1483
1446
  summary: "Inspect and compact the bounded provider-progress sidecar.",
1484
- sections: [{ id: "manage", title: "Commands", entries: ["status", "prune", "compact", "read"] }],
1447
+ sections: [{ id: "manage", title: "Commands", entries: ["status", "prune", "read"] }],
1485
1448
  children: [
1486
1449
  { name: "status", summary: "Show sidecar health, row counts, and retention settings.", usage: "yui telemetry status" },
1487
- { name: "prune", summary: "Apply terminal retention and active-Run caps.", usage: "yui telemetry prune [--task <id>] [--keep <n>] [--dry-run]" },
1488
- { name: "compact", summary: "Fold legacy semantic progress events into a staged Home's sidecar.", usage: "yui telemetry compact --from <home> --staged <dir> [--keep <n>] [--dry-run]" },
1489
- { name: "read", summary: "Page through retained progress rows or read a Run aggregate.", usage: "yui telemetry read --task <id> [--run <id>] [--aggregate] [--limit <n>] [--offset <n>]" }
1450
+ { name: "prune", summary: "Apply terminal retention and active-Turn caps.", usage: "yui telemetry prune [--task <id>] [--keep <n>] [--dry-run]" },
1451
+ { name: "read", summary: "Page through retained progress rows or read a Turn aggregate.", usage: "yui telemetry read --task <id> [--turn <id>] [--aggregate] [--limit <n>] [--offset <n>]" }
1490
1452
  ]
1491
1453
  },
1492
1454
  {
@@ -1516,7 +1478,7 @@ export const ROOT_COMMAND = buildNode({
1516
1478
  },
1517
1479
  {
1518
1480
  name: "session-cli-refresh",
1519
- summary: "Refresh legacy managed Session CLI wrappers after an update.",
1481
+ summary: "Refresh existing managed Session CLI wrappers after an update.",
1520
1482
  usage: "yui internal session-cli-refresh"
1521
1483
  }
1522
1484
  ]
@@ -68,11 +68,11 @@ export async function getSelectionCandidates(selector, ports, args) {
68
68
  }
69
69
  case "work-items":
70
70
  return entities("work item", "Select work item", qualifyTaskRecords(await listAllWorkItems(ports)), ["qualifiedId", "title", "status"]);
71
- case "runs": {
71
+ case "turns": {
72
72
  const workItemId = dependencyValue(selector, args);
73
- const runs = await listAllByTask(ports, "task.run.list", "runs");
74
- return entities("run", workItemId === undefined ? "Select Run" : `Select Run: ${workItemId}`, qualifyTaskRecords(runs.filter((run) => workItemId === undefined
75
- || matchesTaskRecordReference(run, "workItemId", workItemId))), ["qualifiedId", "roleName", "status", "summary"]);
73
+ const turns = await listAllByTask(ports, "task.turn.list", "turns");
74
+ return entities("turn", workItemId === undefined ? "Select Turn" : `Select Turn: ${workItemId}`, qualifyTaskRecords(turns.filter((turn) => workItemId === undefined
75
+ || matchesTaskRecordReference(turn, "workItemId", workItemId))), ["qualifiedId", "roleName", "status", "summary"]);
76
76
  }
77
77
  case "integration-attempts":
78
78
  return entities("Integration Attempt", "Select Integration Attempt", qualifyTaskRecords((await listAllByTask(ports, "task.integration.list", "integrations")).filter((attempt) => selector.statuses === undefined
@@ -424,21 +424,18 @@ export const INTERACTION_POLICIES = Object.freeze([
424
424
  confirmation: { action: "Retire Work Item", targetArgumentIndex: 3 }
425
425
  },
426
426
  {
427
- commandPath: ["task", "run", "list"],
427
+ commandPath: ["task", "turn", "list"],
428
428
  selectors: [{ argumentIndex: 3, entity: "work-item", provider: "work-items", actionTarget: true }],
429
429
  },
430
- ...["retry", "yield"].map((command) => ({
431
- commandPath: ["task", "run", command],
430
+ {
431
+ commandPath: ["task", "turn", "retry"],
432
432
  selectors: [{
433
433
  argumentIndex: 3,
434
- entity: "run",
435
- provider: "runs",
434
+ entity: "turn",
435
+ provider: "turns",
436
436
  actionTarget: true
437
- }],
438
- ...(command === "yield"
439
- ? { trailingOptions: { "--summary": "value" } }
440
- : {})
441
- })),
437
+ }]
438
+ },
442
439
  {
443
440
  commandPath: ["task", "work", "group", "resolve"],
444
441
  selectors: [{
@@ -32,7 +32,7 @@ function resolveExecutionPath(args) {
32
32
  const child = findChild(node, args[index] ?? "");
33
33
  const internalExecutable = child !== undefined && ((node === ROOT_COMMAND && child.name === "internal")
34
34
  || (node.path.join(" ") === "yui config completion" && child.name === "candidates")
35
- || (node.path.join(" ") === "yui task run"
35
+ || (node.path.join(" ") === "yui task turn"
36
36
  && (child.name === "checkpoint" || child.name === "context"))
37
37
  || (node.path.join(" ") === "yui controller"
38
38
  && (child.name === "identity" || child.name === "live-identity")));
@@ -5,13 +5,9 @@ import { runUpdate } from "./updateOrchestrator.js";
5
5
  * Run `yui update` as a side-by-side, recoverable orchestration.
6
6
  *
7
7
  * The new package is staged beside the live install and used to run a read-only
8
- * preflight against the target Home. Current/compatible-old storage promotes the
9
- * binary through the exact Controller handoff without a Home switch; only a
10
- * migration-required verdict enters the offline backup/switch path. On failure
11
- * it reports the precise phase and recovery boundary. See
12
- * {@link runUpdate} for the exact, narrowed rollback boundary (this release does
13
- * not introduce a versioned binary pointer, so it does not claim binary+Home
14
- * dual-resource atomicity).
8
+ * preflight against the target Home. Only the exact current storage contract is
9
+ * accepted; the exact Controller handoff then promotes and verifies the binary
10
+ * without changing the Home. Older Homes remain untouched.
15
11
  *
16
12
  * Returns a process exit code: 0 on success or already-current, 5 on abort.
17
13
  */
@@ -20,12 +16,8 @@ export function runUpdateCommand(environment = process.env, spawn, write = (text
20
16
  const resolvedPorts = ports ?? createUpdatePorts(environment, spawn);
21
17
  const result = runUpdate(resolvedPorts, { home });
22
18
  write(`${renderUpdateResult(result)}\n`);
23
- // Both an abort and an ambiguous result are non-success exits; ambiguous is
24
- // distinct (manual verification required), so it gets its own exit code.
25
19
  if (result.outcome === "aborted")
26
20
  return 5;
27
- if (result.outcome === "ambiguous")
28
- return 6;
29
21
  return 0;
30
22
  }
31
23
  /** Render an {@link UpdateResult} as concise, CLI-style text. */
@@ -35,30 +27,17 @@ export function renderUpdateResult(result) {
35
27
  case "already-current":
36
28
  return "Yui is already up to date; nothing to install.";
37
29
  case "updated":
38
- return result.storageBackupPath === undefined
39
- ? result.path === "compatible-fast"
40
- ? `Updated Yui to ${result.version} via the compatible fast path; the Home was not migrated.`
41
- : result.path === "in-place-migration"
42
- ? `Updated Yui to ${result.version}; SQLite was migrated in place without rebuilding the database.`
43
- : `Updated Yui to ${result.version}; storage was already current.`
44
- : `Updated Yui to ${result.version}. Storage was migrated; original Home backed up at `
45
- + `${result.storageBackupPath}.`;
30
+ return `Updated Yui to ${result.version}; the current Home was not modified.`;
46
31
  case "aborted":
47
32
  return [
48
33
  `Update aborted during ${result.phase}: ${result.message}`,
49
34
  result.recoverable
50
35
  ? "The current install and Home remain usable."
51
- : result.phase === "activate-binary" && result.storageBackupPath === undefined
52
- ? "The Home was not migrated, but binary health is unknown; do not assume the current install is usable."
36
+ : result.phase === "activate-binary"
37
+ ? "The Home was unchanged, but binary health is unknown; do not assume the current install is usable."
53
38
  : "Manual recovery is required (see below).",
54
39
  `Action: ${result.action}`
55
40
  ].join("\n");
56
- case "ambiguous":
57
- return [
58
- `Update result is UNKNOWN after ${result.phase}: ${result.message}`,
59
- "Manual verification is required — do NOT assume the update succeeded or was a no-op.",
60
- `Action: ${result.action}`
61
- ].join("\n");
62
41
  }
63
42
  })();
64
43
  return result.cleanupWarning === undefined