fix(ticket): separate retained responsibility from unfinished work
T-715: end assignment work identities atomically on done/close without deleting responsibility. Reopen never reactivates old authority. Schema 82 preserves legacy closed assignments, historical removal plans and Worker attribution; active work drives admission, auth/routing, retention and cleanup while independent lifecycle/attachment fences remain. Validation: root cargo check; cargo test -p yoi-workspace-server (630 lib + 11 bin), -p merge-request (20), -p worker (947); worker-runtime restore/removal filters (2); Deno ticket responsibility/runtime UI contracts (12); cargo fmt --all -- --check; git diff --check HEAD.
This commit is contained in:
@@ -519,7 +519,8 @@
|
||||
|
||||
<aside class="ticket-control-rail">
|
||||
<section class="ticket-control-card ticket-worker-card">
|
||||
<header><h2>Role assignments</h2><span>Server-authoritative</span></header>
|
||||
<header><h2>Role assignments</h2><span>Retained responsibility</span></header>
|
||||
<p class="workspace-empty-copy">Responsibility is retained after work ends and Worker removal; it does not indicate a running Worker or active work authority.</p>
|
||||
{#if ticket.assignments.length > 0}
|
||||
<ul class="ticket-assignment-list">
|
||||
{#each ticket.assignments as assignment}
|
||||
@@ -538,7 +539,7 @@
|
||||
{/each}
|
||||
</ul>
|
||||
{:else}
|
||||
<p class="workspace-empty-copy">No active role assignment.</p>
|
||||
<p class="workspace-empty-copy">No role responsibility recorded.</p>
|
||||
{/if}
|
||||
{#if ticket.action_eligibility.can_assign_orchestrator}
|
||||
<button
|
||||
|
||||
@@ -48,3 +48,15 @@ Deno.test("ticket detail fences stale mutation responses", () => {
|
||||
assertStringIncludes(operationSource, "generation === routeGeneration");
|
||||
}
|
||||
});
|
||||
|
||||
Deno.test("ticket responsibility display does not claim Worker liveness or work authority", () => {
|
||||
assertStringIncludes(pageSource, "Retained responsibility");
|
||||
assertStringIncludes(pageSource, "after work ends and Worker removal");
|
||||
assertStringIncludes(
|
||||
pageSource,
|
||||
"does not indicate a running Worker or active work authority",
|
||||
);
|
||||
assertStringIncludes(pageSource, "assignment.principal.runtime_id");
|
||||
assertStringIncludes(pageSource, "assignment.principal.worker_id");
|
||||
assert(!pageSource.includes("No active role assignment."));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user