@zq-silk/yui 0.16.1 → 1.0.0-alpha
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 +12 -0
- package/ARCHITECTURE.zh-CN.md +8 -0
- package/README.md +9 -4
- package/dist/agent/agent.js +4 -9
- package/dist/agent/executionComponents.js +4 -4
- package/dist/agent/managedRuntimeEnvironment.js +0 -4
- package/dist/agentRun/agentRun.js +13 -23
- package/dist/artifacts/managedGit.js +3 -56
- package/dist/brief/taskBrief.js +3 -3
- package/dist/cli/agentConfigurationPicker.js +24 -21
- package/dist/cli/commandCatalog.js +18 -10
- package/dist/cli/roleWizard.js +41 -30
- package/dist/cli/updateCommand.js +35 -13
- package/dist/cli/updateOrchestrator.js +73 -44
- package/dist/cli/updatePorts.js +76 -86
- package/dist/cli/upgradeCommand.js +4 -8
- package/dist/cli.js +39 -33
- package/dist/commands/controllerCommands.js +2 -2
- package/dist/commands/executionAuditCommands.js +2 -2
- package/dist/commands/projectCommands.js +1 -1
- package/dist/commands/releaseCommands.js +9 -38
- package/dist/commands/taskCommands.js +91 -81
- package/dist/commands/taskCompletionGate.js +0 -117
- package/dist/commands/taskRoleRuntimeStatus.js +2 -2
- package/dist/commands/taskUpstreamCommands.js +93 -54
- package/dist/context/runContextPack.js +30 -54
- package/dist/context/runInputContract.js +9 -0
- package/dist/context/sessionBootstrapManifest.js +11 -19
- package/dist/controller/agentHostObservation.js +4 -2
- package/dist/controller/agentRuntimeObserver.js +4 -4
- package/dist/controller/clientRuntime.js +19 -44
- package/dist/controller/controller.js +24 -10
- package/dist/controller/fileSchedulerStoreAdapter.js +91 -24
- package/dist/controller/globalInputDelivery.js +31 -8
- package/dist/controller/globalRuntimeAttention.js +34 -0
- package/dist/controller/jobSupervisor.js +3 -3
- package/dist/controller/operatorNotification.js +31 -0
- package/dist/controller/providerRetryAdmission.js +3 -1
- package/dist/controller/providerRetryDelivery.js +136 -119
- package/dist/controller/runtime.js +2 -28
- package/dist/controller/sessionOwnerReconciliation.js +42 -24
- package/dist/controller/structuredProviderObservation.js +28 -1
- package/dist/controller/updateReconciliation.js +72 -20
- package/dist/coordination/workMailbox.js +4 -4
- package/dist/core/controllerIdentity.js +25 -0
- package/dist/core/controllerProcessIdentity.js +2 -2
- package/dist/core/controllerServer.js +4 -2
- package/dist/core/protocol.js +1 -1
- package/dist/doctor/doctor.js +2 -1
- package/dist/domain/validation.js +6 -0
- package/dist/event/taskEvent.js +3 -3
- package/dist/execution/workItemExecution.js +2 -2
- package/dist/executor/agentAdapter.js +28 -96
- package/dist/executor/agentConfigurationCatalog.js +13 -68
- package/dist/executor/agentConfigurationFields.js +120 -0
- package/dist/executor/agentConfigurationProbe.js +55 -80
- package/dist/executor/agentExecutor.js +11 -8
- package/dist/executor/effectiveLaunch.js +3 -3
- package/dist/executor/executorRegistry.js +0 -9
- package/dist/executor/fileRoleLaunchPlanner.js +12 -11
- package/dist/grant/capabilityGrant.js +2 -2
- package/dist/input/inputRequest.js +4 -4
- package/dist/integration/changeSet.js +3 -3
- package/dist/integration/integrationAttempt.js +3 -3
- package/dist/integration/integrationSourceApplication.js +1 -1
- package/dist/interaction/operatorPresentation.js +2 -1
- package/dist/job/durableJob.js +1 -1
- package/dist/job/jobRunner.js +2 -2
- package/dist/message/message.js +8 -6
- package/dist/message/messageContinuation.js +8 -9
- package/dist/milestone/milestone.js +3 -3
- package/dist/observability/executionAudit.js +1 -10
- package/dist/observability/runtimeIdentity.js +0 -23
- package/dist/output/agentConfigurationPresentation.js +4 -2
- package/dist/profile/agentProfile.js +3 -3
- package/dist/release/releaseHandover.js +2 -2
- package/dist/release/releaseIdempotencyStore.js +0 -23
- package/dist/release/releaseWorkflowPorts.js +8 -4
- package/dist/release/runtimeRelease.js +9 -7
- package/dist/repository/gitWorkspace.js +66 -19
- package/dist/repository/project.js +3 -3
- package/dist/repository/taskWorkspacePreparer.js +75 -68
- package/dist/resources/liveReferences.js +1 -1
- package/dist/resources/resourceRegistry.js +90 -44
- package/dist/resources/sqliteResourceRegistry.js +5 -7
- package/dist/review/reviewRound.js +5 -5
- package/dist/role/role.js +7 -8
- package/dist/runtime/acpProtocol.js +2 -3
- package/dist/runtime/acpSession.js +21 -5
- package/dist/runtime/agentDriverObservation.js +1 -1
- package/dist/runtime/agentEndpoint.js +4 -1
- package/dist/runtime/agentHost.js +25 -65
- package/dist/runtime/agentHostCleanup.js +85 -0
- package/dist/runtime/agentHostProtocol.js +3 -3
- package/dist/runtime/builtinAgentDrivers.js +46 -119
- package/dist/runtime/builtinTranscriptObserver.js +10 -6
- package/dist/runtime/codexAppServerRuntime.js +55 -89
- package/dist/runtime/codexInteractiveHost.js +1 -1
- package/dist/runtime/jsonLineChannel.js +35 -7
- package/dist/runtime/launchBroker.js +1 -1
- package/dist/runtime/processExitObservation.js +1 -1
- package/dist/runtime/providerContinuationReconciliationService.js +86 -38
- package/dist/runtime/providerRetry.js +15 -0
- package/dist/runtime/providerRuntimeIdentity.js +3 -3
- package/dist/runtime/providerRuntimeReconciler.js +12 -2
- package/dist/runtime/runtimeCoherence.js +7 -3
- package/dist/runtime/runtimeObservation.js +3 -3
- package/dist/runtime/sessionOwnerIdentity.js +1 -1
- package/dist/runtime/structuredProviderHost.js +106 -81
- package/dist/runtime/taskRuntimeIsolation.js +3 -3
- package/dist/runtime/tmuxAdapters.js +3 -3
- package/dist/scheduler/activeRoleRunDelivery.js +5 -1
- package/dist/scheduler/operatorInputNotificationProcessor.js +7 -17
- package/dist/scheduler/taskWake.js +1 -1
- package/dist/storage/baselineSchema.js +606 -0
- package/dist/storage/homeLayout.js +5 -16
- package/dist/storage/recordValidation.js +16 -4
- package/dist/storage/sqliteSchema.js +106 -1741
- package/dist/storage/sqliteStore.js +16 -14
- package/dist/storage/storageSchema.js +8 -7
- package/dist/storage/storageVersions.js +23 -16
- package/dist/storage/taskStore.js +3 -29
- package/dist/storage/upgrade/upgradeOrchestrator.js +14 -112
- package/dist/task/nextAction.js +33 -23
- package/dist/task/task.js +17 -8
- package/dist/task/taskActivation.js +5 -4
- package/dist/telemetry/sqliteTelemetryStore.js +2 -2
- package/dist/verification/gateArtifact.js +5 -3
- package/dist/verification/verificationPlan.js +6 -7
- package/dist/web/assets/assetManifest.js +2 -0
- package/dist/web/assets/client/app.js +72 -3
- package/dist/web/assets/client/components.js +2 -1
- package/dist/web/assets/client/i18n.js +2 -0
- package/dist/web/assets/client/taskSummary.js +345 -0
- package/dist/web/assets/client/taskSurface.js +44 -26
- package/dist/web/assets/client/view.js +33 -0
- package/dist/web/assets/shell.js +1 -0
- package/dist/web/assets/styles/cards.js +21 -0
- package/dist/web/webServer.js +39 -5
- package/dist/web/webSessions.js +165 -0
- package/dist/web/webSnapshot.js +23 -0
- package/dist/web/webTaskSurface.js +23 -0
- package/dist/workItem/workItem.js +6 -6
- package/dist/workspace/cleanupInspection.js +1 -9
- package/dist/worktree/managedWorkspace.js +3 -3
- package/docs/managed-turn-and-session-runtime.md +50 -7
- package/docs/managed-turn-and-session-runtime.zh-CN.md +36 -5
- package/docs/observability/README.md +47 -0
- package/docs/observability/README.zh-CN.md +37 -0
- package/docs/project-refresh.md +9 -0
- package/docs/project-refresh.zh-CN.md +8 -0
- package/docs/provider-retry.md +35 -0
- package/docs/release-workflow.md +70 -214
- package/docs/release-workflow.zh-CN.md +53 -157
- package/docs/roles-and-configuration.md +30 -0
- package/docs/roles-and-configuration.zh-CN.md +20 -0
- package/docs/sqlite-control-plane-design.md +48 -289
- package/docs/sqlite-control-plane-design.zh-CN.md +37 -53
- package/docs/storage-baseline.md +132 -0
- package/docs/storage-baseline.zh-CN.md +106 -0
- package/docs/task-delivery.md +110 -2
- package/docs/task-delivery.zh-CN.md +82 -2
- package/docs/task-discovery.md +9 -0
- package/docs/task-discovery.zh-CN.md +6 -0
- package/docs/testing/verification-levels.md +42 -164
- package/docs/testing/verification-levels.zh-CN.md +29 -115
- package/i18n/README.zh-CN.md +7 -4
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +11 -0
- package/skills/yui-leader/references/execution.md +22 -0
- package/skills/yui-leader/references/planning.md +6 -2
- package/skills/yui-operator/SKILL.md +45 -13
- package/skills/yui-operator/references/task-delivery.md +99 -0
- package/skills/yui-runtime/SKILL.md +5 -3
- package/skills/yui-runtime/references/publication.md +56 -5
- package/skills/yui-runtime/references/recovery.md +12 -2
- package/dist/runtime/agentHostCompatibility.js +0 -127
- package/dist/storage/migrations/agentFailureContext.js +0 -22
- package/dist/storage/migrations/agentRunContract.js +0 -159
- package/dist/storage/migrations/artifactsToGit.js +0 -338
- package/dist/storage/migrations/collapseWorktreeLayout.js +0 -963
- package/dist/storage/migrations/currentInputContract.js +0 -86
- package/dist/storage/migrations/currentRuntimeContract.js +0 -228
- package/dist/storage/migrations/historicalVerificationPlan.js +0 -35
- package/dist/storage/migrations/integrationContinuation.js +0 -105
- package/dist/storage/migrations/narrowAgentFailureContext.js +0 -65
- package/dist/storage/migrations/notificationOnlyWakes.js +0 -74
- package/dist/storage/migrations/removeRuntimeGeneration.js +0 -207
- package/dist/storage/migrations/submitIntent.js +0 -126
- package/dist/storage/migrations/unifyHomeLayout.js +0 -925
- package/dist/storage/migrations/verificationPlanV1.js +0 -162
- package/dist/storage/migrations/verificationPolicy.js +0 -74
- package/dist/storage/migrations/workItemHistory.js +0 -46
package/docs/release-workflow.md
CHANGED
|
@@ -27,201 +27,54 @@ system sits behind `ReleaseWorkflowPorts`
|
|
|
27
27
|
external ports exercise recovery without real GitHub, npm, git, Controller,
|
|
28
28
|
or model effects.
|
|
29
29
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
history. This does not accept delivery, generate an Integration or replay work.
|
|
79
|
-
Existing Integrations and Jobs stay intact. Inspect `task event list <task>`
|
|
80
|
-
and the referenced WorkItem/Integration before deciding what remains to do;
|
|
81
|
-
retiring the queue does not settle an unfinished Integration.
|
|
82
|
-
|
|
83
|
-
Storage 29→30 retires Run-linked wakes into `wake.run-link-retired` Task events
|
|
84
|
-
with the complete original payload. Current notification IDs, delivery status
|
|
85
|
-
and references remain intact, using wake schema 2; Run termination no longer
|
|
86
|
-
consumes notifications. Live Runs, owned retries and unresolved claims referring
|
|
87
|
-
to a retiring wake block both preflight and migration. The migration does not
|
|
88
|
-
stop execution or fabricate acceptance. Global Session sets use an explicit
|
|
89
|
-
`providerBinding: null` when no controlled binding exists.
|
|
90
|
-
|
|
91
|
-
Storage 30→31 makes every Review's scope explicit. Missing/null scope in a valid
|
|
92
|
-
older WorkItem Review becomes `work-item`; Task-final candidate evidence and
|
|
93
|
-
the old ledger are unchanged. New and retried Reviews always write their scope.
|
|
94
|
-
|
|
95
|
-
Storage 31→32 removes WorkItem `historicalState` from the current record.
|
|
96
|
-
Before removal, the entire original payload is preserved verbatim in a
|
|
97
|
-
`work-item.execution-state-retired` Task event. Current status, scope, Candidates
|
|
98
|
-
and execution groups are unchanged; no Run or acceptance is created. Unrecognized
|
|
99
|
-
historical shapes fail without changing the record or advancing the ledger.
|
|
100
|
-
|
|
101
|
-
Storage 32→33 retires the Leader rollout/budget settings and VerificationPlan
|
|
102
|
-
rollout modes. Active plan bodies gain an explicit schema version; their checks
|
|
103
|
-
remain unchanged, while retired Knowledge bodies are preserved. Integration
|
|
104
|
-
records gain explicit `rerunChecks: false`, and shadow reuse counters are removed
|
|
105
|
-
from cached artifacts. Original settings remain recoverable from the explicit
|
|
106
|
-
upgrade backup. This is an approved behavior change, not an assertion that
|
|
107
|
-
`record`, `reuse` and `enforce` meant the same thing.
|
|
108
|
-
|
|
109
|
-
Admitted `running`/`validating` plan gates block preflight and migration; settle
|
|
110
|
-
them with the old release first. No in-flight Job is relabelled under the new
|
|
111
|
-
proof contract. That cutover's v3 verification-plan digest excluded older cache entries from
|
|
112
|
-
automatic reuse without rewriting historical Job/Integration results or deleting
|
|
113
|
-
their logs. Historical plan interpretation is frozen inside the migration
|
|
114
|
-
directory so earlier migrations keep their original semantics.
|
|
115
|
-
|
|
116
|
-
The current clean-candidate proof uses a v5 L2-only execution digest. Both local and
|
|
117
|
-
Job-backed verification check candidate cleanliness, branch and exact HEAD
|
|
118
|
-
before publishing reusable success; older cache identities cannot silently pass
|
|
119
|
-
this boundary. Existing records/logs remain readable and admitted Jobs are not
|
|
120
|
-
relabeled under a new digest. Settle old attempts with their matching contract,
|
|
121
|
-
or explicitly abandon them before starting another operation.
|
|
122
|
-
|
|
123
|
-
The L1 runner, selector and current plan/artifact type branches are removed.
|
|
124
|
-
Storage 34→35 archives the original Project plan payloads and L1 artifacts/logs
|
|
125
|
-
in `storage_migration_archive`, then adopts VerificationPlan schema 2 without L1.
|
|
126
|
-
The archive is raw audit data, not an alternate execution reader or cache.
|
|
127
|
-
Settled historical ChangeSet-source Integrations become full-payload Task Events;
|
|
128
|
-
live workspaces, unsettled Jobs and adoption references block their retirement.
|
|
129
|
-
The complete earlier migration ledger remains unchanged.
|
|
130
|
-
|
|
131
|
-
Session custody now has one source, SQLite. Legacy `launch-env` owner rows or
|
|
132
|
-
files in `runtime/session-owners` block this cutover: use the old release to
|
|
133
|
-
inspect and settle their exact resources, then explicitly archive obsolete
|
|
134
|
-
files outside the active Home. The migration does not kill, infer ownership,
|
|
135
|
-
repair malformed records or rewrite immutable Session Manifests.
|
|
136
|
-
|
|
137
|
-
Storage 35→36 preserves historical Agent errors and explicitly marks missing
|
|
138
|
-
failure configuration as unavailable. Storage 36→37 narrows recorded failure
|
|
139
|
-
context to native metadata-query inputs, preserving the original snapshot and
|
|
140
|
-
empty optional identity placeholders in migration audit. Current error readers
|
|
141
|
-
do not depend on the execution snapshot protocol or reconstruct missing history.
|
|
142
|
-
Configuration rejection preserves input without automatic retry; an authorized
|
|
143
|
-
Agent can inspect failure-scoped model capabilities, correct the intended
|
|
144
|
-
configuration, and explicitly retry the rejected notification.
|
|
145
|
-
|
|
146
|
-
`task turn` and the `yui-dev` completion identity are no longer supported.
|
|
147
|
-
Before rollout, replace Sessions whose old Manifest still names `task turn`,
|
|
148
|
-
and explicitly remove/archive old `yui-dev` completion blocks before installing
|
|
149
|
-
current `yui` completion. User shell files are never rewritten by storage migration.
|
|
150
|
-
Host control/event compatibility and updater handover safety remain unchanged.
|
|
151
|
-
|
|
152
|
-
Storage 33→34 removes Message `wakePolicy` and activation `origin` from current
|
|
153
|
-
records, preserving their original representations in audit Events. Historical
|
|
154
|
-
save-only Messages become `intent: record`; other user/operator Messages without
|
|
155
|
-
intent become `discuss`. Runtime readers never infer a missing stored intent.
|
|
156
|
-
Editing record-only context does not wake the Leader. Completion reads actual
|
|
157
|
-
pending message references, including an explicit handoff of previously saved context.
|
|
158
|
-
|
|
159
|
-
Draft editing also preserves request identity: messages bound to submission,
|
|
160
|
-
queue/steer or handoff requests cannot change body in place. Use a new Message
|
|
161
|
-
and request ID; identical-body updates are no-ops. Unkeyed discussion edits
|
|
162
|
-
honor pending/failed activation, while develop edits never start planning or
|
|
163
|
-
create/retry activation. These are operation-boundary fixes, not a new storage
|
|
164
|
-
format or a repair of previously edited historical content.
|
|
165
|
-
|
|
166
|
-
An origin-less pending immediate Draft activation blocks preflight and migration,
|
|
167
|
-
including on a stopped Task. Activate or cancel it explicitly with the old release
|
|
168
|
-
first. An admitted current request needs no second origin gate: cancellation,
|
|
169
|
-
planning deferral, execution state and exact Session authority remain enforced.
|
|
170
|
-
Old origin metadata, including settled-request history, remains in
|
|
171
|
-
`task.activation-origin-retired` Events; this never fabricates authorization.
|
|
172
|
-
|
|
173
|
-
New `job start` calls require `--request-id`; RPC callers supply `requestId`, and
|
|
174
|
-
the capability boundary supplies its invocation identity. There is no implicit
|
|
175
|
-
content-addressed request or anonymous Job constructor. Existing Jobs retain
|
|
176
|
-
their operation evidence and remain addressable by ID. Retrying the same explicit
|
|
177
|
-
request is idempotent, changed input conflicts, and Integration recovery still
|
|
178
|
-
finds its original Job across Session replacement. Choosing a new request ID is
|
|
179
|
-
an explicit new operation, not recovery of an uncertain earlier result.
|
|
180
|
-
|
|
181
|
-
Core Scheduler readers and persistence operations are required ports. A missing
|
|
182
|
-
Session/event reader cannot be interpreted as empty evidence or skipped error
|
|
183
|
-
persistence. Task execution and Web projections read the current store directly;
|
|
184
|
-
queue admission requires its Task lifecycle read. Exact dispatch settlement
|
|
185
|
-
remains separate and does not gain an archive gate that could lose late evidence.
|
|
186
|
-
Observer, config, Knowledge and workspace-cleanup Store readers are also required;
|
|
187
|
-
test doubles implement those contracts rather than selecting production fallbacks.
|
|
188
|
-
|
|
189
|
-
Task listing and `/api/dashboard` now expose only the bounded catalog; remove
|
|
190
|
-
`--view compact` from callers and use per-Task reads for detail. Scheduler
|
|
191
|
-
catalog projections are required internal ports, not optional full-scan adapters.
|
|
192
|
-
Extra `schema.json`/`state.json` files cannot override SQLite's version or be
|
|
193
|
-
used to reset a development Home; upgrades leave unrelated files untouched.
|
|
194
|
-
A missing database in a non-empty Home remains a refusal to initialize.
|
|
195
|
-
Unrecognized writer leases are diagnosed without adoption or deletion.
|
|
196
|
-
|
|
197
|
-
`controller status` always reports identity and retains the nonzero health exit
|
|
198
|
-
for contradictory storage. `YUI_STATUS_IDENTITY` no longer selects another
|
|
199
|
-
contract. Update-owned lifecycle capture uses the same resource collector
|
|
200
|
-
directly, without requiring the old Home to pass current-schema health.
|
|
201
|
-
|
|
202
|
-
Additional current boundaries:
|
|
203
|
-
|
|
204
|
-
- Project/artifact file locks and handover locks require exact process-generation
|
|
205
|
-
evidence. Missing/invalid owners or unreadable OS identity remain fenced;
|
|
206
|
-
age alone never proves a creator exited. No PID-only positive fallback remains.
|
|
207
|
-
- PR head lookup uses one `gh pr list --head ... --state open` query. Only an
|
|
208
|
-
empty, valid array proves absence. Transport errors, malformed identities and
|
|
209
|
-
multiple matches fail without attempting creation.
|
|
210
|
-
- Existing Git operations cannot be adopted without the Integration's original
|
|
211
|
-
progress receipt. Preserve their files and diagnose explicitly; current
|
|
212
|
-
receipt-backed conflict/Job continuation remains supported.
|
|
213
|
-
|
|
214
|
-
Before rollout, settle old executions and use explicit cleanup for unsupported
|
|
215
|
-
locks, links or quarantines. Preserve those records until their owner and
|
|
216
|
-
disposition are established; the runtime does not choose recovery for them.
|
|
217
|
-
|
|
218
|
-
The later baseline cutover must first establish a verified bridge/export to the
|
|
219
|
-
chosen current format, then replace the old initialization/migration chain with
|
|
220
|
-
one clean baseline. Only then remove pre-baseline migrations and their historical
|
|
221
|
-
fixtures. Reset the storage baseline once; do not reset it again when tagging
|
|
222
|
-
1.0.0. Keep unknown-version rejection, exact process/Host identity checks and
|
|
223
|
-
durable audit evidence. Version tags and real migration/publication effects
|
|
224
|
-
require their separate release authorization.
|
|
30
|
+
## Clean baseline release: 1.0.0-alpha
|
|
31
|
+
|
|
32
|
+
0.16.2 remains the frozen historical bridge. The 1.0.0-alpha runtime starts the
|
|
33
|
+
distinct storage **1.0** baseline and carries no old migration chain or
|
|
34
|
+
conversion tool. Package 1.0.0 will reuse the final verified prerelease storage
|
|
35
|
+
contract without another reset.
|
|
36
|
+
|
|
37
|
+
Storage versions have two levels. Default updates may advance only contiguous
|
|
38
|
+
minor versions within the same major; pinning a package does not authorize a
|
|
39
|
+
cross-major conversion. Current Yui-owned envelopes and protocols start at 1,
|
|
40
|
+
without resetting business revisions, epochs or audit evidence.
|
|
41
|
+
Any persistent change after an alpha is published requires an explicit new
|
|
42
|
+
minor transition; published schema definitions must not be silently replaced.
|
|
43
|
+
Current bounded automatic recovery, lock waiting, transactions, replay
|
|
44
|
+
protection and valid exact-identity caches remain normal runtime behavior.
|
|
45
|
+
|
|
46
|
+
Use the exact package version `1.0.0-alpha` to opt into this baseline. Stable
|
|
47
|
+
releases use npm `latest`; prereleases use `next`, never the stable default.
|
|
48
|
+
|
|
49
|
+
The old-v37 converter is a separate archive. Its source/target verification,
|
|
50
|
+
offline boundary, full backup, original-payload audit, cold startup and rollback
|
|
51
|
+
are specified in [Storage baseline 1.0](./storage-baseline.md).
|
|
52
|
+
Publish its archive and checksum as durable 1.0.0-alpha release attachments alongside
|
|
53
|
+
the exact tested runtime package. Expiring CI artifacts alone are insufficient.
|
|
54
|
+
The alpha-only `baseline-release` job runs after npm publication, uploads missing
|
|
55
|
+
attachments to a draft without overwriting existing files, downloads and compares
|
|
56
|
+
every attachment against the tested artifact, then publishes the prerelease.
|
|
57
|
+
A retry verifies matching existing attachments; a different byte or an incomplete
|
|
58
|
+
already-published Release is an error, not permission to replace release evidence.
|
|
59
|
+
If this job fails after npm publication, resume only this job with the same
|
|
60
|
+
retained artifacts rather than republishing or rebuilding the package.
|
|
61
|
+
The runtime tarball must contain neither tools/ nor dist/storage/migrations/.
|
|
62
|
+
|
|
63
|
+
Use `yui update --version <exact-version>` for an exact published package.
|
|
64
|
+
Staged metadata must match the requested version, and target-owned storage
|
|
65
|
+
preflight runs before activation and again under the maintenance fence.
|
|
66
|
+
An unsupported Home remains unchanged; use the independent converter rather
|
|
67
|
+
than replacing the global CLI first. Current update/activation children must
|
|
68
|
+
explicitly identify their handover-lock owner.
|
|
69
|
+
|
|
70
|
+
Restoration checks the captured executable/argv, package version, Controller
|
|
71
|
+
protocol and both storage-version bounds against status and live identity.
|
|
72
|
+
Missing contract fields are errors, not an older-Controller exception.
|
|
73
|
+
|
|
74
|
+
The converter source, frozen endpoint fixture and converter-specific tests are
|
|
75
|
+
release-only deliverables for 1.0.0-alpha. Remove them from the 1.0.0 development line
|
|
76
|
+
only after the 1.0.0-alpha release attachments and checksums are durably available
|
|
77
|
+
and verified. Do not delete the only conversion path before publication.
|
|
225
78
|
|
|
226
79
|
## Authorization model
|
|
227
80
|
|
|
@@ -270,7 +123,7 @@ Candidate and Task-final ReviewRound records must all carry that one contract.
|
|
|
270
123
|
Conflicting records fail closed; there is no rebind event, recovery command, or
|
|
271
124
|
second contract state machine.
|
|
272
125
|
|
|
273
|
-
##
|
|
126
|
+
## Current Agent Host boundary
|
|
274
127
|
|
|
275
128
|
A running Host keeps its original Endpoint implementation. It records exact
|
|
276
129
|
Session/attempt/native-Turn facts in the existing durable Inbox before contacting
|
|
@@ -284,24 +137,27 @@ the long-lived Session environment. This preserves pre-adoption evidence even
|
|
|
284
137
|
when the frozen Run workspace differs from the Role's default; later activity
|
|
285
138
|
and terminal facts still resolve solely by their own native input identities.
|
|
286
139
|
|
|
287
|
-
The
|
|
288
|
-
`yui-agent-host-events/v1`, and Controller RPC version
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
140
|
+
The current Host boundary is control `yui-agent-host-control/v1`, event source
|
|
141
|
+
`yui-agent-host-events/v1`, and Controller RPC version 1. Hosts do not open the
|
|
142
|
+
Home database, including for process custody, native account locations, or
|
|
143
|
+
execution-environment checks. Only the Controller owns storage and resolves
|
|
144
|
+
durable facts; malformed current input fails at its normal protocol boundary.
|
|
145
|
+
|
|
146
|
+
Breaking upgrades do not inherit historical Hosts or processes. Runtime startup,
|
|
147
|
+
`upgrade`, `update`, and release activation no longer scan old Host sockets or
|
|
148
|
+
processes, infer their capabilities, or negotiate a compatibility handoff. Use a
|
|
149
|
+
clean runtime environment; this is not permission to discard pending work or
|
|
150
|
+
kill resources of uncertain ownership. Current Controller restart, exact
|
|
151
|
+
process-generation checks, handover locks, Session authority and event replay
|
|
152
|
+
protection remain enforced.
|
|
153
|
+
|
|
154
|
+
Storage upgrades are limited to the current major's explicit minor steps.
|
|
155
|
+
Cross-major conversion is independently authorized and is not a runtime fallback.
|
|
156
|
+
Session CLI refresh only retargets the current two-argument quoted wrapper
|
|
157
|
+
named by a valid Manifest. It does not convert retired wrapper forms. Runtime
|
|
158
|
+
diagnostics do not interpret `schema.json`, `state.json`, or a whole-map release
|
|
159
|
+
idempotency file; current SQLite data and per-key release receipts remain the
|
|
160
|
+
authorities, and unrelated files are left untouched.
|
|
305
161
|
|
|
306
162
|
`task role status`, `task role list`, and `task role session inspect` expose Host
|
|
307
163
|
reporting alongside durable Run state. Pending native results or known reporting
|
|
@@ -20,150 +20,43 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
|
|
|
20
20
|
(`src/release/releaseWorkflowPorts.ts`)之后。可用临时 SQLite 和确定性的外部端口测试
|
|
21
21
|
恢复逻辑,无需真实 GitHub、npm、git、Controller 或模型效果。
|
|
22
22
|
|
|
23
|
-
## 0.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
和历史最大 ID。此操作不验收交付、不生成 Integration、不重放工作;已有 Integration
|
|
61
|
-
与 Job 保持不变。通过 `task event list <task>` 和引用的 WorkItem/Integration
|
|
62
|
-
判断剩余工作;队列退役不代表未完成的 Integration 已结算。
|
|
63
|
-
|
|
64
|
-
存储 `29→30` 将 Run-linked wake 的完整原文移入 `wake.run-link-retired` Task 事件。
|
|
65
|
-
现有通知保留 ID、投递状态和引用,使用 wake schema 2;Run 终态不再消费通知。
|
|
66
|
-
引用待退役 wake 的活动 Run、受管重试或未决 claim 会同时阻止预检和迁移;
|
|
67
|
-
迁移不停止执行、不编造接受。Global Session 没有受控 binding 时统一显式保存
|
|
68
|
-
`providerBinding: null`。
|
|
69
|
-
|
|
70
|
-
存储 `30→31` 将 Review scope 统一为显式值:有效旧 WorkItem Review 的缺失/null
|
|
71
|
-
scope 转为 `work-item`,Task-final 候选证据和原迁移账本不变。新建和重试均显式写入 scope。
|
|
72
|
-
|
|
73
|
-
存储 `31→32` 从当前 WorkItem 移除 `historicalState`,移除前将完整原始 payload
|
|
74
|
-
原样保存在 `work-item.execution-state-retired` Task 事件。当前状态、工作范围、
|
|
75
|
-
Candidate 和执行组不变,不生成 Run 或验收。未知历史形态会报错,记录和迁移账本不前进。
|
|
76
|
-
|
|
77
|
-
存储 `32→33` 清退 Leader 过渡/预算配置以及 VerificationPlan 的模式。
|
|
78
|
-
活动计划显式补上 schema 版本,实际检查保持不变;已退役 Knowledge 原文保留。
|
|
79
|
-
Integration 显式补入 `rerunChecks: false`,缓存 Artifact 移除试运行复用计数。
|
|
80
|
-
原配置可从显式升级备份恢复。这是已确认的行为变更,不将三种旧模式声称为等价。
|
|
81
|
-
|
|
82
|
-
已接纳且仍为 `running/validating` 的计划验证会阻止预检和迁移,需先用旧版本完成
|
|
83
|
-
结算;不会把运行中的 Job 改标为新证据契约。该次切换使用 v3 验证摘要,使更早缓存不再被
|
|
84
|
-
自动复用,不重写历史 Job/Integration 结果或删除其日志。旧计划解析冻结在迁移
|
|
85
|
-
目录中,早期迁移保持原有语义。
|
|
86
|
-
|
|
87
|
-
现行干净候选证明采用 v5 L2-only 执行摘要。Job 和本地验证都在发布可复用成功前,
|
|
88
|
-
检查候选工作区的干净状态、分支和精确 HEAD;旧缓存身份不能绕过这一边界。
|
|
89
|
-
旧记录和日志保持可读,已接纳 Job 不会被改标为新摘要。应先按原契约结算旧尝试,
|
|
90
|
-
或明确放弃后再开始新操作。
|
|
91
|
-
|
|
92
|
-
L1 执行入口、选择器及当前计划/artifact 类型分支已移除。存储 `34→35` 将
|
|
93
|
-
原始 Project 计划、L1 artifact 与日志保存在 `storage_migration_archive`,
|
|
94
|
-
当前计划改为不含 L1 的 schema 2。存档只是原始审计数据,不是执行 reader 或缓存。
|
|
95
|
-
已结算的旧 ChangeSet-source Integration 转为完整 payload 的 Task 事件;
|
|
96
|
-
仍有工作区、未结算 Job 或 adoption 引用时阻止退休。旧迁移账本不变。
|
|
97
|
-
|
|
98
|
-
Session 归属统一使用 SQLite。旧 `launch-env` owner 行或 `runtime/session-owners`
|
|
99
|
-
中的文件会阻止切换:先使用旧版本检查并释放精确资源,再明确将旧文件归档到
|
|
100
|
-
活动 Home 之外。迁移不杀进程、不推断归属、不修复损坏数据,也不重写不可变 Manifest。
|
|
101
|
-
|
|
102
|
-
存储 `35→36` 保留历史 Agent 错误,并将缺失的失败配置明确标为不可用。
|
|
103
|
-
存储 `36→37` 将已记录的失败上下文缩小为原生元数据查询所需输入,原始快照和
|
|
104
|
-
空的可选身份占位值保存在迁移审计中。当前错误读取不依赖执行快照协议,也不
|
|
105
|
-
重建缺失历史。配置拒绝保留原始输入但不自动重试;有权限的 Agent 可查询该次
|
|
106
|
-
失败的模型能力、修正原本要求的配置,再显式重试被拒绝的通知。
|
|
107
|
-
|
|
108
|
-
不再支持 `task turn` 和 `yui-dev` 补全身份。上线前应替换仍依赖 `task turn`
|
|
109
|
-
Manifest 的 Session;明确卸载/归档旧 `yui-dev` 补全块后,再安装现行 `yui` 补全。
|
|
110
|
-
存储迁移不会修改用户 shell 文件。Host 控制/事件兼容与 updater 交接安全检查保持不变。
|
|
111
|
-
|
|
112
|
-
存储 `33→34` 从当前记录移除 Message `wakePolicy` 与激活 `origin`,原始表达
|
|
113
|
-
保存在审计事件。旧的仅记录消息转换为 `intent: record`,其他缺少意图的
|
|
114
|
-
user/operator 消息转换为 `discuss`;运行时不再解释缺失的持久化意图。
|
|
115
|
-
编辑仅记录内容不会唤醒 Leader。完成检查读取实际待投递消息引用,也涵盖显式交接
|
|
116
|
-
此前仅保存的内容。
|
|
117
|
-
|
|
118
|
-
Draft 编辑同时保护请求身份:已经绑定 submission、queue/steer 或交接请求的消息
|
|
119
|
-
不能原地改正文,需新建消息并使用新请求 ID;相同正文更新为无操作。未绑定请求
|
|
120
|
-
身份的讨论编辑仍遵守 pending/failed 激活状态,develop 编辑不启动规划或创建/
|
|
121
|
-
重试激活。这是操作边界修复,不改变存储格式,也不猜测修复过去已被编辑的原文。
|
|
122
|
-
|
|
123
|
-
Draft 中缺少 origin 且仍 pending 的旧 immediate 激活请求会阻止预检和迁移,即使 Task
|
|
124
|
-
已停止执行。必须先用旧版本显式激活或取消;升级不替用户做这个决定。当前已接纳
|
|
125
|
-
请求不再经过第二次来源门槛,但取消、planning 延后、执行状态与精确 Session 权限
|
|
126
|
-
仍需检查。旧来源及 settled 请求历史保留在 `task.activation-origin-retired` 事件。
|
|
127
|
-
|
|
128
|
-
新 `job start` 必须带 `--request-id`;RPC 必须提供 `requestId`,capability
|
|
129
|
-
入口使用 invocation 身份。不再从命令内容隐式生成请求,也不再构造匿名 Job。
|
|
130
|
-
已有 Job 的操作证据和按 ID 读取保持不变;相同请求重试防重、不同输入冲突,
|
|
131
|
-
Integration 在 Session 替换后仍找回原 Job。新 request ID 表示明确的新操作,
|
|
132
|
-
不是对旧未知结果的自动重放。
|
|
133
|
-
|
|
134
|
-
Scheduler 核心读取和持久化操作成为必需接口,缺少 Session/Event 读取不再被当作
|
|
135
|
-
空证据,也不能跳过错误持久化。执行及 Web 投影直接读取当前 Store;
|
|
136
|
-
消息入队必须读取 Task 生命周期。精确投递结算仍独立,不增加会丢失迟到证据的归档门槛。
|
|
137
|
-
Observer、配置、Knowledge 与工作区清理所需 Store 读取也成为必需接口;
|
|
138
|
-
测试替身实现现行合同,不再令生产代码降级。
|
|
139
|
-
|
|
140
|
-
Task 列表及 `/api/dashboard` 只保留有界目录;调用方去掉 `--view compact`,
|
|
141
|
-
详情使用单 Task 读取。Scheduler 目录索引是必需接口,不再兼容缺失时的全量扫描。
|
|
142
|
-
额外 `schema.json`/`state.json` 不覆盖 SQLite 版本,也不用于开发 Home reset;
|
|
143
|
-
升级保留无关文件。非空 Home 缺少数据库时仍拒绝初始化。
|
|
144
|
-
不认识的 writer lease 明确诊断,不接管、不删除。
|
|
145
|
-
|
|
146
|
-
`controller status` 固定输出身份信息,存储矛盾仍返回非零健康退出码;
|
|
147
|
-
`YUI_STATUS_IDENTITY` 不再选择另一套契约。升级侧直接复用资源采集器读取生命周期,
|
|
148
|
-
无需让旧 Home 先通过当前 schema 的健康校验。
|
|
149
|
-
|
|
150
|
-
现行边界进一步收敛:
|
|
151
|
-
|
|
152
|
-
- Project/Artifact 文件锁及 handover lock 要求精确进程代际证据。owner 缺失、
|
|
153
|
-
格式不完整或 OS 身份不可读时保持围栏;仅凭年龄不能证明创建者退出,不再用
|
|
154
|
-
PID-only 存活判断代替身份确认。
|
|
155
|
-
- PR head 查询只调用 `gh pr list --head ... --state open`。仅有效空数组证明不存在;
|
|
156
|
-
传输失败、身份格式错误和多个匹配都不允许继续创建。
|
|
157
|
-
- 已有 Git 操作缺少原 Integration 进度回执时不再被接管。保留文件并明确诊断;
|
|
158
|
-
有精确回执的正常冲突/Job 续作仍受支持。
|
|
159
|
-
|
|
160
|
-
发布前应先收敛旧执行,对不受支持的锁、链接和隔离资源做显式清理。归属与处置尚未
|
|
161
|
-
确定时保留原记录,运行时不替 Agent 选择恢复方案。
|
|
162
|
-
|
|
163
|
-
后续基线切换必须先验证到目标格式的桥接或导出,再用一个干净基线替换旧初始化和迁移链,
|
|
164
|
-
之后才能删除基线之前的迁移及历史夹具。存储基线只重置一次,不在发布 `1.0.0` 时再次
|
|
165
|
-
重置。未知版本拒绝、精确进程/Host 身份检查与持久审计证据仍应保留。版本 tag、真实
|
|
166
|
-
Home 迁移和发布效果需要各自的发布授权。
|
|
23
|
+
## 纯净基线版本:1.0.0-alpha
|
|
24
|
+
|
|
25
|
+
0.16.2 保留为冻结历史桥接版。1.0.0-alpha 运行包启用独立的存储 **1.0**,
|
|
26
|
+
不携带旧迁移链或一次性转换工具;之后的 1.0.0 复用最终已验证的预发布存储契约,
|
|
27
|
+
不再重置。
|
|
28
|
+
|
|
29
|
+
存储采用主版本、小版本两级编号,默认更新只允许同主版本内连续的小版本升级。
|
|
30
|
+
指定软件版本不代表授权跨存储主版本。当前 Yui 自有格式和协议从 1 开始,
|
|
31
|
+
但不重置业务 revision、epoch 或审计证据。
|
|
32
|
+
alpha 发布后如需改变持久化契约,必须声明新的小版本迁移,不能静默改写
|
|
33
|
+
已发布基线。有界自动恢复、锁等待、事务、重放保护和精确身份匹配的有效缓存
|
|
34
|
+
都是当前运行能力,不作为历史兼容删除。
|
|
35
|
+
|
|
36
|
+
使用精确软件版本 `1.0.0-alpha` 主动选择新基线。正式版使用 npm `latest`,
|
|
37
|
+
预发布版使用 `next`,不能覆盖默认稳定版本。
|
|
38
|
+
|
|
39
|
+
恢复 Controller 时,status 和 live identity 都必须匹配此前捕获的执行文件、
|
|
40
|
+
参数、软件版本、Controller 协议和存储版本上下界。缺少字段直接报错,
|
|
41
|
+
不再为较早的 Controller 放宽校验。
|
|
42
|
+
|
|
43
|
+
旧 v37 转换器独立分发;来源与目标校验、离线边界、完整备份、原始负载审计、
|
|
44
|
+
冷启动和回滚见[存储基线 1.0](./storage-baseline.zh-CN.md)。
|
|
45
|
+
发布时将转换包及校验和作为 1.0.0-alpha 的长期附件,与确切测试过的运行包一同保留;
|
|
46
|
+
不能只依赖会过期的 CI artifact。运行 tarball 不得包含 tools/ 或旧迁移目录。
|
|
47
|
+
alpha 专用 `baseline-release` 在 npm 发布成功后向草稿上传缺少的附件,不覆盖
|
|
48
|
+
已有文件;逐个下载并与经过测试的产物比较后,才公开预发布 Release。
|
|
49
|
+
重试只接受字节一致的已有附件;字节不同或已公开 Release 缺少附件都明确失败,
|
|
50
|
+
不自动覆盖发布证据。若 npm 已发布而此步骤失败,只用同一批保留产物重跑该
|
|
51
|
+
job,不重新构建或再次发布 npm 包。
|
|
52
|
+
|
|
53
|
+
转换器源码、冻结终点样本及专用测试只服务于 1.0.0-alpha 的独立交付。
|
|
54
|
+
必须先确认 1.0.0-alpha 长期发布附件和校验和可取得且验证通过,才能在 1.0.0
|
|
55
|
+
开发线上移除它们;不能在发布前删掉唯一转换入口。
|
|
56
|
+
|
|
57
|
+
`yui update --version <exact-version>` 选择精确发布包,实际暂存版本必须匹配。
|
|
58
|
+
激活前及维护锁内分别执行目标包的存储预检。不支持的 Home 保持不变,应使用
|
|
59
|
+
独立转换工具,不能先覆盖全局 CLI。当前交接子进程必须显式提供锁持有者身份。
|
|
167
60
|
|
|
168
61
|
## 授权模型
|
|
169
62
|
|
|
@@ -204,7 +97,7 @@ Session 使用普通的 `yui` 命令,兼容性由协议和存储身份检查
|
|
|
204
97
|
Task-final 的 ReviewRound 记录必须全部携带那唯一的合同。冲突的记录 fail closed;
|
|
205
98
|
不存在重新绑定事件、恢复命令或第二套合同状态机。
|
|
206
99
|
|
|
207
|
-
##
|
|
100
|
+
## 当前 Agent Host 边界
|
|
208
101
|
|
|
209
102
|
存活 Host 保持原 Endpoint 实现,先把准确的 Session/attempt/nativeTurn 事实写入现有
|
|
210
103
|
持久 Inbox,再联系 Controller。只有当前 Controller 解析 Run 归属、校验权限、工作区、
|
|
@@ -215,18 +108,21 @@ ACK 不会重放用户输入或模型工作。
|
|
|
215
108
|
环境。即使冻结的 Run 工作区不同于 Role 默认值,登记前的证据也能保留;后续活动和
|
|
216
109
|
终态仍只按各自的原生输入身份解析归属。
|
|
217
110
|
|
|
218
|
-
|
|
219
|
-
Controller RPC 版本
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
111
|
+
当前边界为控制协议 `yui-agent-host-control/v1`、事件来源协议 `yui-agent-host-events/v1`、
|
|
112
|
+
Controller RPC 版本 1。Host 不打开 Home 数据库,包括进程归属、原生账号位置和
|
|
113
|
+
执行环境校验。只有 Controller 拥有存储并解析持久事实;非法当前输入在正常协议
|
|
114
|
+
边界得到明确错误。
|
|
115
|
+
|
|
116
|
+
破坏性升级不承接历史 Host 或进程。启动、`upgrade`、`update` 和 release activation
|
|
117
|
+
不再扫描旧 Host socket/进程、推断旧能力或协商兼容交接。使用干净的运行时环境;
|
|
118
|
+
这不授权丢弃未决工作或终止归属不确定的资源。当前 Controller 正常重启、准确进程
|
|
119
|
+
代际校验、交接锁、Session 权限与事件防重放继续生效。
|
|
120
|
+
|
|
121
|
+
存储升级仅包含同主版本内明确的小版本步骤。跨主版本转换独立授权,
|
|
122
|
+
不构成运行时回退。
|
|
123
|
+
Session CLI 刷新只重定位有效 Manifest 指向的当前双参数引号 wrapper,不转换
|
|
124
|
+
退役形态。运行时诊断不解释 `schema.json`、`state.json` 或整表 release 幂等文件;
|
|
125
|
+
当前 SQLite 与逐 key release 回执仍是权威,无关文件保持原样。
|
|
230
126
|
|
|
231
127
|
`task role status`、`task role list` 和 `task role session inspect` 在持久 Run 状态旁
|
|
232
128
|
显示 Host 上报观测。原生结果待落库或已知上报故障需要关注,但不代表 Provider 失败、
|
|
@@ -136,6 +136,36 @@ requests for the same scope share the active probe, including refresh requests;
|
|
|
136
136
|
once it settles, an explicit refresh probes again. Retained results are labelled
|
|
137
137
|
as cached rather than as a new live response. No cleanup timer or worker is added.
|
|
138
138
|
|
|
139
|
+
Catalog `source` describes the metadata query: `live` is a successful current
|
|
140
|
+
query, `cache` reuses an identity-matched observation, and `fallback` has no
|
|
141
|
+
usable native observation. It does **not** confirm every configuration field.
|
|
142
|
+
The same catalog can combine native model/help enumeration, local profile names,
|
|
143
|
+
and declared static adapter inputs. Field `reason` and catalog `warnings` identify
|
|
144
|
+
these boundaries; `available: false` marks an unavailable native enumeration or
|
|
145
|
+
capability, not permission to guess values. `allowCustom` permits explicit input,
|
|
146
|
+
not a promise of Provider acceptance.
|
|
147
|
+
|
|
148
|
+
Missing or unparseable help enums stay empty. Known static contracts (such as
|
|
149
|
+
Yui's permission strategies and supported configuration syntax) remain available
|
|
150
|
+
with an explicit static label; they are not described as server-discovered options.
|
|
151
|
+
The permission picker never supplies its own list when a field is absent, and
|
|
152
|
+
retains an existing value as an explicitly unreported current setting. A query
|
|
153
|
+
does not change configuration, permissions, model, or account.
|
|
154
|
+
|
|
155
|
+
Cache responses retain the original `fetchedAt`, last probe `attemptedAt`, field
|
|
156
|
+
reasons, warnings, and any failed refresh's error. Identity matching is not a
|
|
157
|
+
freshness guarantee: native files, account entitlements and remote policy may
|
|
158
|
+
change, so use explicit refresh when needed. The discovery contract is part of
|
|
159
|
+
cache identity; older derived caches that could contain guessed help values are
|
|
160
|
+
not reused by this contract. Durable Home schemas and migration history are
|
|
161
|
+
unchanged.
|
|
162
|
+
|
|
163
|
+
Doctor inspects installation and help only, using the same declared fields and
|
|
164
|
+
enum parser. Its field counts distinguish help-observed, static/unverified, and
|
|
165
|
+
unavailable fields; it does not enumerate account models. The retained minimum
|
|
166
|
+
versions and latest offline producer evidence have different meanings; see
|
|
167
|
+
the source repository's `docs/provider-protocol-contracts.md`.
|
|
168
|
+
|
|
139
169
|
On Role creation, explicit Agent settings require `--agent`. On update, omitted
|
|
140
170
|
`--agent` targets the active binding; a named binding is updated without being
|
|
141
171
|
activated. `task role bind` changes selection. A live Session requires the
|
|
@@ -110,6 +110,26 @@ yui task role session new <task> <role> --reason "<why a fresh Session is useful
|
|
|
110
110
|
正在进行的查询,结束后显式刷新才重新查询。缓存命中标为缓存,不冒充新的实时响应。
|
|
111
111
|
这不增加清理定时器或后台 worker。
|
|
112
112
|
|
|
113
|
+
目录的 `source` 描述元数据查询来源:`live` 是本次查询成功,`cache` 是复用身份
|
|
114
|
+
匹配的历史观测,`fallback` 表示没有可用原生观测;它不表示每个配置字段都已获
|
|
115
|
+
原生确认。同一目录可同时包含原生模型/help 枚举、本地 profile 名称及明确声明的
|
|
116
|
+
adapter 静态输入合同。字段 `reason` 和目录 `warnings` 说明这些边界;
|
|
117
|
+
`available: false` 表示原生枚举或能力不可用,不允许据此猜测值;`allowCustom`
|
|
118
|
+
只允许显式输入,不承诺 Provider 会接受。
|
|
119
|
+
|
|
120
|
+
help 枚举缺失或解析失败时保持为空。Yui 权限策略、支持的配置语法等确定静态合同
|
|
121
|
+
仍可使用,但明确标为静态,不冒充服务端枚举。权限选择器不再为缺失字段自行补列表;
|
|
122
|
+
已有设置可作为“本次目录未报告的当前值”保留。查询不修改配置、权限、模型或账号。
|
|
123
|
+
|
|
124
|
+
缓存返回保留原始 `fetchedAt`、最后一次查询的 `attemptedAt`、字段说明、警告和刷新
|
|
125
|
+
失败原因。身份匹配不等于实时有效:原生文件、账户权限、远端策略仍可能变化,需要时
|
|
126
|
+
显式刷新。发现合同也参与缓存身份,因此可能包含猜测 help 值的旧派生缓存不再复用;
|
|
127
|
+
Home 持久 schema 与迁移历史不变。
|
|
128
|
+
|
|
129
|
+
Doctor 只检查安装和 help,复用相同静态字段和枚举解析,分别统计 help 已观测、
|
|
130
|
+
静态/未确认、不可用字段,不枚举账户模型。保留的最低支持版本与最新离线生产者
|
|
131
|
+
证据含义不同,详见源仓库的 `docs/provider-protocol-contracts.md`。
|
|
132
|
+
|
|
113
133
|
创建 Role 时,显式的 Agent 设置需要 `--agent`。更新时,省略 `--agent` 针对活动
|
|
114
134
|
绑定;一个具名绑定会被更新但不被激活。`task role bind` 更改选择。在更改期望设置
|
|
115
135
|
之前,活动 Session 需要该命令的显式确认。
|