Wire disk self-heal into K8s-agent local-exec mode#440
Merged
Conversation
The KubernetesAgent flavor's local-exec branch (the default — UseScriptPods
defaults false) builds a LocalScriptService that creates the same
{tempRoot}/squid-tentacle-{ticketId} workspaces the standalone Tentacle does,
but scheduled no background task, so a disk-full agent never auto-reclaimed.
Mirror TentacleFlavor: schedule SelfHealBackgroundTask.ForLocalWorkspaces over
the same backend (its own live-script veto reporter).
Also add the preview-path role-scoping coverage that shipped untested: an
integration test drives PreviewDeploymentAsync and proves an unavailable target
whose role no enabled step targets is not evaluated by the project's
transient-target policy, with an all-machines-step control proving the
discriminator flips on roles.
And correct stale doc comments: the removed SQUID_DEPLOYMENT_TRANSIENT_RESUMABLE
escape hatch (transient pause is now unconditional), "open breaker" wrongly
listed as a transient-pause cause (CircuitOpenException is excluded — fail-fast),
and a customMessage that named AsNoTracking where the certificate provider
detaches.
ppXD
force-pushed
the
fix/sota-audit-followups
branch
from
June 14, 2026 00:41
2e1bd58 to
b3254cb
Compare
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
!UseScriptPodsbranch (the default —UseScriptPodsis false) builds aLocalScriptServicethat creates the same{tempRoot}/squid-tentacle-{ticketId}workspaces the standalone Tentacle does, but scheduled no background task — so a disk-full agent never auto-reclaimed. Now schedulesSelfHealBackgroundTask.ForLocalWorkspaces(backend), byte-identical toTentacleFlavor.cs:50. The flavor-runtime test flips from assertingBackgroundTasksempty to asserting the singleSelfHealtask.IDeploymentService.PreviewDeploymentAsyncand proves an unavailable target whose role no enabled step targets is not evaluated by the project's Transient-Deployment-Targets policy (so it neither shows inExcludedTargetsnor blocks). A control case (a step that targets all machines) proves the discriminator genuinely flips on step roles, not on whether the target was loaded.SQUID_DEPLOYMENT_TRANSIENT_RESUMABLEescape hatch (transient pause is now unconditional — no opt-out); "open breaker" wrongly listed as a transient-pause cause in two pipeline catches and theTargetCatchClassifierXML doc (CircuitOpenExceptionis excluded from the transient set — it fails fast); and a certificate at-restcustomMessagethat namedAsNoTrackingwhere the provider actually detaches.No production behavior changes except the self-heal wiring (additive — a background task on the default K8s-agent mode). Everything else is a test addition or comment correction. No interface, signature, or schema changes.
Test plan
KubernetesAgentFlavorRuntimeTests(4/4) — self-heal now scheduled in local-exec modeIntegrationDeploymentPreviewRoleScoping(2/2) against real PostgresApplyProjectPolicy(selected, json)over all machines) makes the primary test fail on the exactdb-not-excludedassertion ([1, 2]vs[1]) while the all-machines control stays green; restored to confirm greenDeploymentPipelineRunnerTransientPauseTests(7/7) — comment-only touch, still green