@@ -593,3 +593,66 @@ Query worker revises only its six private AppHost helper files from the reviewed
593593R2 packet, with original base/post hashes, without checkout writes or gates.
594594Actual no-follow/FIFO mechanisms and complete Aspire/RF3/Linux gates remain
595595required; static source repair does not qualify a started topology.
596+
597+ ### Accepted C1 public phase interruption cases, 2026-10-05
598+
599+ TASK-CRS-C1-PUBLIC-INTERRUPTION implements four genuine RF3 cases for
600+ AC-CRS-003/005, one SDK and one official MCP case at BeforeSubmit and
601+ SubmitReturned. Each case owns a fresh current-image Aspire RF3 wave, private
602+ profile/data/control roots, current signed discovery, one persisted non-admin
603+ synthetic principal whose ID starts c1-probe-, and one document with exact before
604+ and after strings. Configure that principal and resources through genuine public
605+ administrator operations. No caller-supplied role, reused control session or
606+ existing user's store may be used.
607+
608+ Root owns the shared RequestCqrsRf3Wave.StartProbedAsync(dataRoot, images,
609+ RequestCqrsProbeFixture controls, CancellationToken) join. It adds only the frozen
610+ private probe configuration to the existing current-image wave startup, preserving
611+ immutable image proof, three physical voters, native uid: gid , readiness,
612+ diagnostics, shutdown and original failures. Helpers await root's actual reviewed
613+ Server/AppHost/fixture join; a private test packet is not RF3 evidence.
614+
615+ For BeforeSubmit, arm Hold for the exact principal/command, retain the original
616+ real client Task, await the genuine signed phase marker, and prove the unchanged
617+ entity with a separate real administrator read before cancelling that original
618+ caller. Require the actual SDK UnknownWriteOutcome or actual official MCP safe
619+ unknown tool result/transport cancellation. Await the actual cancelled/released
620+ hold settlement and native ProducerDisposed marker for the claimed request,
621+ join the original caller, then retire the arm before retry. Retry the identical
622+ stable command/body with fresh signed requests through SDK and official MCP;
623+ require equal full receipts and exactly one document revision/effect.
624+
625+ For SubmitReturned, await that exact marker and independently read the committed
626+ intended entity before cancelling. Require the same actual caller interruption,
627+ settlement/disposal and original joins; fresh SDK/MCP retries must return the
628+ complete already committed receipt and retain one revision advance. The probe
629+ request ID is compared with an actual MCP request ID when a validated tool result
630+ exists; transport failures must not invent an ID or tool response. These cases
631+ exercise actual phase cancellation, not remote-voter death; remote execution
632+ placement and death remain separately required.
633+
634+ Each case has the existing parent/wave/cleanup bounds. Cleanup stops admission,
635+ cancels/joins every original caller, releases and joins admitted control gates,
636+ disposes actual public clients, stops/disposes the Aspire-owned resources and
637+ original diagnostics watchers, proves native file locks released, then removes
638+ only exclusively owned control/data roots. Preserve primary and every cleanup
639+ failure with ServerFailureObserver and fatal policy. A deadline observation or
640+ Task.IsCompleted test is not a replacement original join. Never delete controls
641+ before actual producer disposal/resources join; retain failure originals.
642+
643+ Task graph: root freezes these requirements and shared joins; query_wave Luna/high
644+ owns only new IntegrationTests/ClusterRouting Cases/Helpers/Models files prefixed
645+ RequestCqrsPhaseFault, with existing real client, receipt, probe and profile helpers.
646+ It emits a private exact-base patch, complete source, hashes and self-review, with
647+ no checkout/shared/docs/package/Git edits or gates. Root reviews every line,
648+ implements the shared startup join, builds/formats/governs the full solution,
649+ runs the actual Aspire rf3 caller with four bounded development cases, retains
650+ native JSON/TRX/image/topology/phase evidence and follows exact-source Linux
651+ complete gates. Requirement mappings are the preceding AC-CRS-003/005 matrix;
652+ current-authority revocation, ordinary-fault privacy, migration, remote death,
653+ C2/C3 and full KL acceptance remain required separately.
654+
655+ ADR-034/058 and the preceding accepted C1 control implementation contract already
656+ cover these private controls and public CQRS behavior. No public API, canonical
657+ format, credential contract or deployment topology changes; rollback removes
658+ the test entry points/private controls without migrating canonical data.
0 commit comments