@zq-silk/yui 2.8.1 → 2.10.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.
- package/README.md +5 -3
- package/dist/cli/commandCatalog.js +56 -21
- package/dist/cli/helpRenderer.js +3 -1
- package/dist/cli/interactionPolicy.js +2 -2
- package/dist/commands/durableJobCommands.js +50 -0
- package/dist/commands/globalRoleCommands.js +30 -9
- package/dist/commands/inboxCommands.js +79 -22
- package/dist/commands/projectCommands.js +4 -33
- package/dist/commands/scheduleCommands.js +45 -0
- package/dist/commands/taskActivationCommands.js +19 -5
- package/dist/commands/taskCommands.js +8 -2
- package/dist/commands/taskFactCommands.js +24 -12
- package/dist/commands/taskProjectDeliveryCommand.js +56 -0
- package/dist/commands/taskPublicationCommands.js +6 -3
- package/dist/commands/taskPublicationVerifyCommand.js +74 -28
- package/dist/commands/taskRemoteDeliveryCommand.js +5 -3
- package/dist/context/runContextPack.js +25 -4
- package/dist/context/runInputContract.js +1 -0
- package/dist/context/taskContext.js +53 -16
- package/dist/context/taskPhase.js +99 -0
- package/dist/controlPlaneCli.js +38 -17
- package/dist/controller/controller.js +35 -0
- package/dist/controller/fileSchedulerStoreAdapter.js +75 -16
- package/dist/controller/globalInputDelivery.js +17 -7
- package/dist/controller/inboxTurnCheck.js +64 -0
- package/dist/controller/jobControl.js +42 -12
- package/dist/controller/jobDefinitionControl.js +304 -0
- package/dist/controller/jobSupervisor.js +47 -32
- package/dist/controller/providerRetryAdmission.js +2 -0
- package/dist/controller/runtime.js +11 -2
- package/dist/controller/scheduleControl.js +176 -0
- package/dist/coordination/workMailbox.js +3 -3
- package/dist/external/githubPublicationVerifier.js +14 -5
- package/dist/external/gitlabPublicationVerifier.js +12 -29
- package/dist/grant/taskAuthorization.js +7 -2
- package/dist/interaction/notificationPresentation.js +12 -3
- package/dist/interaction/operatorPresentation.js +5 -0
- package/dist/job/builtinJob.js +58 -0
- package/dist/job/durableJob.js +72 -49
- package/dist/job/jobDefinition.js +68 -0
- package/dist/job/jobRunner.js +2 -1
- package/dist/job/projectRefreshRunner.js +48 -0
- package/dist/message/globalInboxRecovery.js +44 -0
- package/dist/message/globalInterrupt.js +1 -1
- package/dist/message/inboxReceipt.js +14 -6
- package/dist/message/inboxTurn.js +86 -0
- package/dist/message/message.js +11 -0
- package/dist/message/taskInboxOwnership.js +20 -6
- package/dist/repository/projectRefresh.js +58 -0
- package/dist/repository/taskWorkspacePreparer.js +2 -1
- package/dist/repository/workspaceCleanupInspection.js +6 -1
- package/dist/schedule/schedule.js +108 -0
- package/dist/scheduler/operatorEvent.js +2 -0
- package/dist/scheduler/operatorInputNotificationProcessor.js +8 -0
- package/dist/storage/contextRecords.js +8 -0
- package/dist/storage/jobSchema.js +15 -0
- package/dist/storage/maintenanceCaller.js +1 -1
- package/dist/storage/recordValidation.js +5 -0
- package/dist/storage/scheduleSchema.js +12 -0
- package/dist/storage/sqliteSchema.js +95 -24
- package/dist/storage/sqliteStore.js +123 -10
- package/dist/storage/storageVersions.js +1 -1
- package/dist/storage/storeRpc.js +5 -0
- package/dist/storage/upgrade/jobDefinitionMigration.js +22 -0
- package/dist/task/archiveDiagnostics.js +1 -1
- package/dist/task/archivePreflight.js +1 -1
- package/dist/task/projectDeliveryScope.js +20 -0
- package/dist/task/publicationToolObservation.js +126 -0
- package/dist/task/remoteDelivery.js +19 -8
- package/dist/task/remoteDeliveryService.js +5 -4
- package/dist/task/taskActivationService.js +35 -0
- package/dist/web/assets/client/app/settings.js +7 -1
- package/dist/web/assets/client/i18n/en.js +65 -2
- package/dist/web/assets/client/i18n/zh-CN.js +65 -2
- package/dist/web/assets/client/index.js +2 -0
- package/dist/web/assets/client/views/jobs.js +222 -0
- package/dist/web/assets/client/views/task/deliveryResults.js +6 -2
- package/dist/web/assets/client/views/task/page.js +11 -1
- package/dist/web/assets/shared/manageNav.js +1 -0
- package/dist/web/assets/shared/taskTabs.js +2 -2
- package/dist/web/assets/shell/settingsContent.js +3 -0
- package/dist/web/assets/styles/index.js +2 -0
- package/dist/web/assets/styles/views/jobs.js +19 -0
- package/dist/web/controllerWeb.js +73 -21
- package/dist/web/taskPreviews.js +21 -13
- package/dist/web/webAccess.js +109 -0
- package/dist/web/webJobs.js +52 -0
- package/dist/web/webServer.js +76 -44
- package/docs/architecture/capabilities-and-resources.md +6 -4
- package/docs/architecture/capabilities-and-resources.zh-CN.md +5 -4
- package/docs/cli-information-contract.md +57 -4
- package/docs/cli-information-contract.zh-CN.md +41 -2
- package/docs/job-runs.md +224 -0
- package/docs/project-delivery-scope.md +59 -0
- package/docs/release-workflow.md +86 -0
- package/docs/release-workflow.zh-CN.md +68 -0
- package/docs/schedules.md +132 -0
- package/docs/storage-baseline.md +31 -1
- package/docs/storage-baseline.zh-CN.md +25 -1
- package/docs/task-delivery.md +74 -2
- package/docs/task-delivery.zh-CN.md +39 -1
- package/docs/testing/verification-levels.md +6 -2
- package/docs/testing/verification-levels.zh-CN.md +6 -3
- package/i18n/README.zh-CN.md +6 -3
- package/package.json +4 -3
- package/skills/yui-leader/SKILL.md +44 -1
- package/skills/yui-leader/VERSION +1 -1
- package/skills/yui-leader/references/planning.md +9 -1
- package/skills/yui-operator/SKILL.md +31 -0
- package/skills/yui-operator/VERSION +1 -1
- package/skills/yui-reviewer/SKILL.md +4 -0
- package/skills/yui-reviewer/VERSION +1 -1
- package/skills/yui-runtime/SKILL.md +67 -8
- package/skills/yui-runtime/VERSION +1 -1
- package/skills/yui-runtime/references/context-ordering.md +103 -0
- package/skills/yui-runtime/references/publication.md +44 -4
- package/skills/yui-runtime/references/recovery.md +21 -0
- package/skills/yui-worker/SKILL.md +5 -0
- package/skills/yui-worker/VERSION +1 -1
|
@@ -130,9 +130,10 @@ For every explicitly dispatched managed Task AgentRun:
|
|
|
130
130
|
messages; use the expansion command above or the Leader's current Task Context.
|
|
131
131
|
Reports remain evidence, not authority to enlarge the assignment.
|
|
132
132
|
|
|
133
|
-
5. On a later wake,
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
5. On a later wake, refresh current Task facts separately from frozen Run refs.
|
|
134
|
+
Use a Run delta only against its exact declared Snapshot lineage; `deltaRefs`
|
|
135
|
+
is a hint, not a complete patch. If no baseline is available, reload the
|
|
136
|
+
exact pack; do not reconstruct state from transcript memory.
|
|
136
137
|
|
|
137
138
|
Loading and verifying Context is the start of the work, not its result. Continue
|
|
138
139
|
with the authorized assignment. In Draft, persist the discussed plan and wait
|
|
@@ -190,11 +191,13 @@ unmanaged Session is not silently replaced or adopted; use an explicit Session
|
|
|
190
191
|
lifecycle action before enabling controlled delivery.
|
|
191
192
|
|
|
192
193
|
Context reads never consume queue entries. Global Context returns a bounded
|
|
193
|
-
`pending` discovery page
|
|
194
|
-
|
|
194
|
+
`pending` discovery page of current-turn and available input, not Message bodies,
|
|
195
|
+
Profile bodies, historical receipt debt or accumulated retry details. Its
|
|
196
|
+
`historyCount` is a separate absence-of-handling-evidence count, not new work.
|
|
197
|
+
The Manifest retains the exact Role profile.
|
|
195
198
|
Read a referenced
|
|
196
199
|
original with `role message show <role> <message-id> --json`. Follow a pending
|
|
197
|
-
page's `nextCursor` using `role message list <role> --
|
|
200
|
+
page's `nextCursor` using `role message list <role> --current --cursor <cursor>`
|
|
198
201
|
when it is incomplete; accepted delivery does not erase the Message from the
|
|
199
202
|
separate all-message list. Native/transport acceptance is not implementation, and
|
|
200
203
|
`interrupt-requested` is not a stopped Turn or stopped background resources.
|
|
@@ -213,13 +216,24 @@ explicit new control attempt; uncertainty does not.
|
|
|
213
216
|
|
|
214
217
|
## Handle your own inbox in the current turn
|
|
215
218
|
|
|
219
|
+
For an automatic delivery naming an exact Message or wake, use that entry
|
|
220
|
+
directly: read its original, claim it, and record its semantic disposition
|
|
221
|
+
before ending this turn. Do not first enumerate history to rediscover it.
|
|
216
222
|
After loading authorized context, at useful work boundaries and before handing
|
|
217
|
-
off, use `yui inbox list --json` to discover
|
|
218
|
-
current managed identity. This applies to Operator, custom GlobalRole, Leader,
|
|
223
|
+
off, use `yui inbox list --view current --json` to discover current-turn and
|
|
224
|
+
available input addressed to your current managed identity. This applies to Operator, custom GlobalRole, Leader,
|
|
219
225
|
Worker and Reviewer. Do not poll an empty inbox or create another model turn.
|
|
220
226
|
No target Role, Task or native Session is supplied: Yui resolves your current
|
|
221
227
|
identity. A native child gains no separate actor or inbox.
|
|
222
228
|
|
|
229
|
+
`--view history` discovers old missing receipts explicitly; default `--view all`
|
|
230
|
+
prioritizes current inputs and labels each entry's category. Never treat an
|
|
231
|
+
absent historical ACK as proof that its work was not done. Read history when a
|
|
232
|
+
specific reminder, recovery or user request calls for it, not every turn.
|
|
233
|
+
Current correlation reuses exact delivery/continuation/control identities;
|
|
234
|
+
active claims retain their observed native attempt when available. Missing
|
|
235
|
+
historical correlation is not reconstructed from timestamps or final text.
|
|
236
|
+
|
|
223
237
|
1. Read the selected `yui inbox show <entry> --json`. Reads never consume input.
|
|
224
238
|
Follow `nextCursor` and all `contentPage` pages using the rules below.
|
|
225
239
|
2. Before processing, reserve exact entries with
|
|
@@ -240,6 +254,33 @@ identity. A native child gains no separate actor or inbox.
|
|
|
240
254
|
Record an obsolete notification as requiring no further action only after
|
|
241
255
|
checking its originals and current facts, never based solely on age.
|
|
242
256
|
|
|
257
|
+
An input can be settled as executed, legally routed/delegated, a necessary user
|
|
258
|
+
question raised, or superseded/no action after inspecting authoritative
|
|
259
|
+
originals. Put that concrete disposition and useful Task/InputRequest/result/
|
|
260
|
+
Publication references in `--reason`. Routing may be complete while the Task
|
|
261
|
+
is still running; do not hold the input until all downstream work finishes.
|
|
262
|
+
For supersession, identify the later source, not merely its age.
|
|
263
|
+
|
|
264
|
+
At an exact native terminal, engineering checks for unacknowledged inputs
|
|
265
|
+
correlated to that turn and emits at most one existing notification. This is
|
|
266
|
+
missing-evidence detection, never semantic ACK or proof of absent effects.
|
|
267
|
+
Reminder-only turns do not generate another reminder. The retained originals
|
|
268
|
+
remain inspectable if the bounded reminder is also missed; do not start a
|
|
269
|
+
private polling/retry loop or copy the business input to obtain another turn.
|
|
270
|
+
Task Assignment checks go to Leader for inspection and existing handoff or
|
|
271
|
+
retirement, not automatic Worker/Reviewer replay. Exact terminal can end an
|
|
272
|
+
active-consumption notification reservation without acknowledging its input;
|
|
273
|
+
it does not infer or release an uncertain native writer.
|
|
274
|
+
|
|
275
|
+
For obsolete Global input that was conclusively not submitted, use
|
|
276
|
+
`yui inbox retire <entry> --request-id <stable-id> --reason "<disposition>"`
|
|
277
|
+
after inspecting the original and current facts. Retirement preserves the
|
|
278
|
+
original target, claim and explicit management evidence; it is not ACK.
|
|
279
|
+
Accepted input uses normal claim/ack reconciliation. Unknown/pending control,
|
|
280
|
+
transport acceptance and interrupt-then ownership cannot be retired through
|
|
281
|
+
this operation. Task Messages retain the existing Leader `task message retire`
|
|
282
|
+
and exact-Assignment handoff paths.
|
|
283
|
+
|
|
243
284
|
Claiming prevents ordinary automatic delivery; it is not processing completion.
|
|
244
285
|
Acknowledgement records Agent handling, not Host acceptance, result acceptance,
|
|
245
286
|
Task completion, publication or archive. Never acknowledge merely to empty the
|
|
@@ -247,6 +288,13 @@ list. On failure or interruption, leave the claim unacknowledged; it remains
|
|
|
247
288
|
discoverable and does not expire or replay automatically. A current rightful
|
|
248
289
|
successor must inspect original input and prior effects before finishing and
|
|
249
290
|
acknowledging a retained claim. Never replay uncertain external actions.
|
|
291
|
+
After legal Session replacement, initialization can arrive before old handling
|
|
292
|
+
is settled. This recovery notification is not the original business input or
|
|
293
|
+
an acknowledgement. Read the current inbox and prior effects first. For
|
|
294
|
+
`claimed-by-previous-session`, retain the original claim: do not claim again.
|
|
295
|
+
Finish only the still-authorized handling and use a new stable ack request ID
|
|
296
|
+
with a concrete disposition; the receipt retains both the old claimant and
|
|
297
|
+
the current acknowledging actor. New queued input remains separate.
|
|
250
298
|
For an exact-Session input already claimed by its selected Session, a rightful
|
|
251
299
|
successor may explicitly settle that handling after inspecting the original
|
|
252
300
|
and prior effects. This preserves the original target and claim; it grants no
|
|
@@ -276,6 +324,12 @@ This claim never sends the input again. A current rightful successor may settle
|
|
|
276
324
|
an accepted Global input or Leader window while retaining the original delivery
|
|
277
325
|
target; it must inspect prior effects first. Pending/unknown acceptance stays
|
|
278
326
|
blocked and cannot use claim as a replay path.
|
|
327
|
+
An explicitly released Leader notification (`notification.resolved` with
|
|
328
|
+
`released-without-replay`) can be claimed for evidence inspection and settlement
|
|
329
|
+
after verified native stop. Its original delivery status stays unknown or
|
|
330
|
+
unaccepted; handling it cannot retarget Session-specific instructions or
|
|
331
|
+
authorize re-executing unknown effects. If a required fact or user decision is
|
|
332
|
+
unavailable, preserve the claim and report that exact boundary.
|
|
279
333
|
|
|
280
334
|
An ack belongs to the exact original and revision: fixed windows pin
|
|
281
335
|
`message.updated` event identities, including same-timestamp edits. A later
|
|
@@ -290,6 +344,11 @@ exactly-once execution.
|
|
|
290
344
|
|
|
291
345
|
## Read bounded information completely when required
|
|
292
346
|
|
|
347
|
+
For apparent conflicts, stage handoffs or incremental maintenance, read
|
|
348
|
+
[current intent and temporal reads](references/context-ordering.md).
|
|
349
|
+
It distinguishes stage progression from independent constraints and explains
|
|
350
|
+
source attribution, Brief guards, fixed delta windows and bounded recovery.
|
|
351
|
+
|
|
293
352
|
Structured CLI results live in the top-level `data`, not a JSON-encoded
|
|
294
353
|
`output` string. Task current Context includes bounded current facts and
|
|
295
354
|
message references; it does not include event or terminal Run history.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
10
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Current intent, provenance and temporal reads
|
|
2
|
+
|
|
3
|
+
Use this when a handoff, changed requirement, stale summary or incremental read
|
|
4
|
+
appears to conflict with earlier material. Core supplies facts and source
|
|
5
|
+
relations; the Agent decides meaning within its existing authority.
|
|
6
|
+
|
|
7
|
+
## Resolve the apparent conflict
|
|
8
|
+
|
|
9
|
+
Read the current Task view first, then the relevant exact original sources:
|
|
10
|
+
Task requirements, `phase.activation.source` event and its linked Message,
|
|
11
|
+
current request, Brief, and the Session's actual authority. The `phase` and
|
|
12
|
+
`caller` projections are observations, not permission granted by a summary.
|
|
13
|
+
Do not fetch all history merely because the sources differ.
|
|
14
|
+
|
|
15
|
+
Classify the difference before deciding:
|
|
16
|
+
|
|
17
|
+
- **Stage progression:** an earlier “discuss only” limits that planning stage.
|
|
18
|
+
A later explicit request to start the same work, legally adopted Activation,
|
|
19
|
+
enabled gate and delivery-authorized Session establish the next stage.
|
|
20
|
+
Continue without asking for the same authorization again. The old words stay
|
|
21
|
+
in the audit trail; they are not a fresh stop.
|
|
22
|
+
- **Same-scope replacement:** a later authoritative original can replace the
|
|
23
|
+
particular requirement it changes. Explain the scope of that replacement in
|
|
24
|
+
Brief; preserve unchanged requirements and the original references.
|
|
25
|
+
- **Independent restriction:** “do not publish”, resource limits, material
|
|
26
|
+
exclusions and unrelated prohibitions remain unless explicitly changed by an
|
|
27
|
+
authorized source. Development authorization is not release authorization.
|
|
28
|
+
- **Actual contradiction or missing evidence:** read the exact source and
|
|
29
|
+
current facts first. If the material ambiguity remains, request only the
|
|
30
|
+
missing user decision; do not fabricate provenance or resolve it by timestamp.
|
|
31
|
+
|
|
32
|
+
Active lifecycle alone never authorizes implementation of a new analysis-only
|
|
33
|
+
request. An old planning Session never promotes itself. Stop, archive,
|
|
34
|
+
Assignment, workspace and grant boundaries remain independent checks.
|
|
35
|
+
|
|
36
|
+
An activation event's `sourceText` is exact text supplied by the recorded
|
|
37
|
+
caller; `leader-attested-native-input` explicitly identifies the Leader's
|
|
38
|
+
capture, not a Provider-verified user message. Read it as attributed evidence
|
|
39
|
+
together with the adopted request. `sourceMessageId` names the original shared
|
|
40
|
+
Message; its body digest detects edits, while handling receipts do not change
|
|
41
|
+
the source body. Missing/changed/unavailable provenance is visible and calls for
|
|
42
|
+
an exact-source read, not an automatic prohibition or an automatic grant.
|
|
43
|
+
Do not select whichever summary arrived last as the winning authority.
|
|
44
|
+
|
|
45
|
+
`phaseRelation: recorded-before-activation-request` is recording order only.
|
|
46
|
+
It does not declare every old requirement superseded. A delayed result or an
|
|
47
|
+
acknowledged Message retains its original scope, source and version.
|
|
48
|
+
`revised-after-activation-request` means an existing Message was edited after
|
|
49
|
+
that boundary; its old ID must not hide the new revision.
|
|
50
|
+
|
|
51
|
+
## Keep the shared working summary current
|
|
52
|
+
|
|
53
|
+
Description owns the goal and durable boundaries; Brief owns the current
|
|
54
|
+
semantic interpretation, progress, blockers, next action and original refs.
|
|
55
|
+
Core owns lifecycle, gate, Activation, Session and operation facts. Do not
|
|
56
|
+
manually mirror them into a competing state machine.
|
|
57
|
+
|
|
58
|
+
At a changed requirement, phase handoff, resolved blocker, meaningful result or
|
|
59
|
+
completion, reconcile affected Brief fields. Routine unchanged steps need no
|
|
60
|
+
write. `phase.brief.refresh-needed` is a mechanical hint, not a semantic verdict
|
|
61
|
+
or completion gate. Compare originals before editing.
|
|
62
|
+
|
|
63
|
+
Read `task brief show <task>`; update with its `writeGuard` as
|
|
64
|
+
`task brief update <task> --if-current <writeGuard> ...`. A new semantic event,
|
|
65
|
+
Brief edit or changed Task boundary invalidates the guard even at the same
|
|
66
|
+
timestamp. On rejection, reread current facts and reconcile only the intended
|
|
67
|
+
fields; do not blindly copy an old summary under a newly read guard.
|
|
68
|
+
An old Session still cannot write through this operation.
|
|
69
|
+
|
|
70
|
+
## Maintain a baseline and incremental history
|
|
71
|
+
|
|
72
|
+
For current Task facts, retain `coreCursor` from `task context <task>`.
|
|
73
|
+
`task context delta <task> --after <coreCursor>` returns **event history**, not
|
|
74
|
+
a replacement current view. Retain the same `--after` on every continuation;
|
|
75
|
+
use `--continuation` until `complete: true`, then advance to `throughCursor`.
|
|
76
|
+
The window's upper bound is fixed. Later arrivals belong to the next read.
|
|
77
|
+
|
|
78
|
+
Deduplicate by source Home + Task + event ID, and process numeric event order
|
|
79
|
+
within that stream. `createdAt` is occurrence/recording metadata, not a global
|
|
80
|
+
causal clock; native acceptance, delivery and acknowledgement are separate
|
|
81
|
+
facts. Never apply a late event's old payload over a newer current record.
|
|
82
|
+
Re-read affected current refs with their digest when making a decision.
|
|
83
|
+
An empty delta preserves the baseline; `stateChanged` can still require a
|
|
84
|
+
current read because not every shared fact is a Task event.
|
|
85
|
+
|
|
86
|
+
Cursors from another Home/Task, incompatible or invalid continuations, missing
|
|
87
|
+
baselines and source changes require a fresh bounded current read. Do not join
|
|
88
|
+
pages from different windows or versions. A failed original-detail digest
|
|
89
|
+
requires rediscovery; a content page must be reassembled only with its own
|
|
90
|
+
source digest. None of these reads consumes input or permits replay.
|
|
91
|
+
|
|
92
|
+
Frozen Run context is a different stream. Keep its exact Snapshot and
|
|
93
|
+
Assignment. `deltaRefs` is a launch hint, not a complete patch. The explicit
|
|
94
|
+
Run delta reports complete changed `refs` and `removedRefs` against its named
|
|
95
|
+
parent Snapshot, with large documents paginated. Apply removals only to that
|
|
96
|
+
frozen inventory; an empty delta is a no-op. Mutable Task facts and current
|
|
97
|
+
inbox clarifications must be refreshed separately within read scope; they
|
|
98
|
+
never expand the frozen Assignment or change a Review candidate.
|
|
99
|
+
|
|
100
|
+
Focused wakes use exact input refs, including delayed and same-timestamp
|
|
101
|
+
inputs. Timestamp-window discovery is under `--history` (or a historical wake
|
|
102
|
+
without refs), not new delivery authority. Original event and Message reads
|
|
103
|
+
remain available without rewriting or replaying them.
|
|
@@ -67,9 +67,49 @@ whose result is delivered; do not duplicate the same PR/MR across Tasks to
|
|
|
67
67
|
substitute for missing ownership or acceptance evidence.
|
|
68
68
|
|
|
69
69
|
Track PR/MR identity, state, commits, URL, merge time and evidence, not CI or
|
|
70
|
-
deployment status.
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
deployment status. Verification is tool-neutral: the Leader may use any available
|
|
71
|
+
CLI or API within the existing external-read authority. No particular brand,
|
|
72
|
+
installation or second gh/glab query is required. A summary saying "merged" is
|
|
73
|
+
reported evidence, not a tool observation; `upsert --verified` is refused.
|
|
74
|
+
|
|
75
|
+
First record the exact local candidate, PR/MR URL (including its service host)
|
|
76
|
+
and target branch. Inspect that object with an authorized tool, checking the
|
|
77
|
+
repository, PR/MR identity, target branch, remote source head and integrated
|
|
78
|
+
commit against the actual output. Then use
|
|
79
|
+
`task publication verify <task>/<publication> --observation '<json>'`.
|
|
80
|
+
The JSON fields are `taskId`, `publicationId`, `projectId`, `provider`,
|
|
81
|
+
`repository`, `externalKind`, `externalId`, `externalUrl`, `targetBranch`,
|
|
82
|
+
`localCommit`, `state`, `headCommit`, `remoteCommit` (required for merged),
|
|
83
|
+
`observedAt`, `tool`, `command`, `output`, and optionally `mergedAt`.
|
|
84
|
+
Use full lowercase SHAs and ISO timestamps; `output` is a sanitized relevant
|
|
85
|
+
tool-response excerpt, not an unsupported conclusion or credentials. `command`
|
|
86
|
+
describes the exact CLI query or API request; Yui does not execute it.
|
|
87
|
+
Read the original output and resolve ambiguous/conflicting results before
|
|
88
|
+
asserting a known state. Do not fabricate evidence or normalize failure into merge.
|
|
89
|
+
|
|
90
|
+
The observation must name the current immutable Publication, match its candidate,
|
|
91
|
+
URL and target, and be recorded within 24 hours without future dating. The tool
|
|
92
|
+
read may precede the first upsert or a title-only update: these are bookkeeping,
|
|
93
|
+
not changes to the observed object. Observations must not predate the latest
|
|
94
|
+
material change in the immutable lineage (candidate, object, target or remote
|
|
95
|
+
facts), including a changed-then-restored candidate. When only bookkeeping has
|
|
96
|
+
changed, read the current record and bind the same actual result to its current
|
|
97
|
+
ID; do not repeat the external query just for that update.
|
|
98
|
+
Identical immediate retries reuse the saved receipt.
|
|
99
|
+
Later candidate/URL/target changes invalidate verification; use fresh evidence,
|
|
100
|
+
not an old JSON edited to look current. Inspect `publication show` after an
|
|
101
|
+
uncertain save before retrying. Original records and their full evidence remain.
|
|
102
|
+
These are caller-attested tool facts: Core checks exact binding and freshness,
|
|
103
|
+
not the semantic truth of arbitrary output. It trusts the authorized Leader's
|
|
104
|
+
inspection, not the executable's brand.
|
|
105
|
+
|
|
106
|
+
Without `--observation`, `verify` uses the optional gh/glab adapter and performs
|
|
107
|
+
an external read, requiring that read's existing authority. Missing adapters
|
|
108
|
+
are not missing user authorization when another authorized tool is available.
|
|
109
|
+
If no usable evidence or authorized read exists, retain reported evidence and
|
|
110
|
+
state that specific gap. A recorded verification is fixed evidence, not live
|
|
111
|
+
monitoring; no clock-based re-query is required just to archive it. Known later
|
|
112
|
+
changes must be recorded as successors before relying on delivery.
|
|
73
113
|
|
|
74
114
|
Preserve each completion head as that acceptance's evidence. After an authorized
|
|
75
115
|
reopen, finish the new work and record its own completion; retain the earlier
|
|
@@ -88,7 +128,7 @@ rewrite completion, or mark a merge verified to bridge an evidence gap.
|
|
|
88
128
|
|
|
89
129
|
Adoption records a fixed decision, not remote verification or publication
|
|
90
130
|
authority. The verify operation observes the exact Publication candidate through
|
|
91
|
-
|
|
131
|
+
an authorized tool or the optional adapter and records contrary head/state facts as reported successors,
|
|
92
132
|
invalidating previous verification. Metadata and verification updates may retain
|
|
93
133
|
adoption while the candidate is unchanged; a changed candidate needs a new
|
|
94
134
|
decision. Archived history is read-only to these adopt/verify operations.
|
|
@@ -122,6 +122,27 @@ context and fixed notification references, then chooses which still-valid
|
|
|
122
122
|
assignment to continue. Released Leaders retain scoped diagnostic reads but
|
|
123
123
|
cannot regain write authority.
|
|
124
124
|
|
|
125
|
+
Leader initialization is delivered separately from old inbox handling and
|
|
126
|
+
new queued business. A retained claim cannot block this lifecycle notification.
|
|
127
|
+
The current Leader reads `yui inbox list --view history --json`, then the exact originals and
|
|
128
|
+
prior effects. Claims survive unchanged; use `inbox ack` only after actual
|
|
129
|
+
handling, with the successor's own disposition. Do not claim an already-claimed
|
|
130
|
+
entry again. Repeated reconciliation or Controller restart does not settle
|
|
131
|
+
anything or repeatedly wake an idle handler.
|
|
132
|
+
|
|
133
|
+
A legally started GlobalRole successor with claims from a previous Session
|
|
134
|
+
receives one Session-pinned recovery Message in its existing inbox. It requests
|
|
135
|
+
the same inspection, not replay of those Messages. A stopped Global Session
|
|
136
|
+
is not started by this notice. Worker/Reviewer Assignment changes still require
|
|
137
|
+
the existing explicit handoff or retirement; no bulk transfer is implied.
|
|
138
|
+
|
|
139
|
+
Replacement waits for exact native/resource stop and writer release. Missing
|
|
140
|
+
proof requires repairing that observation or a genuinely missing user decision,
|
|
141
|
+
not a timeout, another name, force-ACK or record deletion. Uncertain old
|
|
142
|
+
notification submissions are released from scheduling without replay, retaining
|
|
143
|
+
their fixed wakes and `notification.resolved` evidence. They become explicitly
|
|
144
|
+
inspectable/settleable, not automatically accepted or resubmitted.
|
|
145
|
+
|
|
125
146
|
## Handle uncertainty and failed cleanup
|
|
126
147
|
|
|
127
148
|
Never replay a notification whose acceptance is unknown. After evidence
|
|
@@ -29,6 +29,11 @@ final report. Current-Assignment `inbox show` is an authorized way to read new
|
|
|
29
29
|
directed clarification during this turn without redispatch. Claim before
|
|
30
30
|
handling and ack only after disposition; never use it to read another
|
|
31
31
|
Assignment, expand Project permissions, or accept your own result.
|
|
32
|
+
For delayed or conflicting material, follow Runtime's
|
|
33
|
+
[temporal read contract](../yui-runtime/references/context-ordering.md).
|
|
34
|
+
Refresh relevant current originals without replacing the frozen Assignment.
|
|
35
|
+
Report genuine scope conflicts to Leader; older stage-only wording is not a
|
|
36
|
+
new prohibition after a legally authorized handoff.
|
|
32
37
|
|
|
33
38
|
Leader clarification and continuation arrive as Messages in the exact bounded
|
|
34
39
|
Context Pack. Read those authorized refs; do not request pack-external Leader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3
|