Repository navigation
fix(pool): renew and persist existing sandbox deadlines - #2
Conversation
本地构建与生产发布(2026-09-17)
本地验证
Cocoon Five Nest Kustomize roots render; kubeconform reports 0 invalid/errors (encrypted Secrets and missing CRD schemas explicitly skipped). Local pre-commit and shellcheck pass. Remote Pigeon/Nest CI jobs did not start: check annotations report account payment/spending-limit failure. Remote CI is not claimed passing. 发布与探活Local Linux/amd64 Dockerfile builds pushed to GHCR, deployed immutable source tags; Pod imageIDs match:
Deployed
Host sandboxd reports the production backport revision; static binary SHA256 Both new Pods Ready with 0 restarts. Agent/sandbox health endpoints each 3x HTTP200. Agent synthetic non-owner 范围Only active-turn TTL loss is fixed. Long idle retention and sandbox-service restart lease recovery remain deferred. No recovery/publication of the already-lost Langfuse commit is included. The physical short-TTL probe below is not a 30-minute real-clock soak; 30-minute/40-minute behavior is covered by fake-clock regressions separately. Physical cross-TTL probeIsolated deployed SandboxManager, TTL=90s, real 100-second guest command, 30-second renewal heartbeat (3 successful renewals). The probe crosses the original backend deadline and checks the same VM, file and HEAD, then releases only its synthetic fixture. This exercises sandbox-service/Cocoon renewal physically; the Agent periodic failure/continuation path is separately covered by runtime regressions. {"phase": "created", "id": "sb_a2b7479a737e54bd", "head": "ffecb7e0e844bd6f36a194baf27296222ad95322", "originalDeadline": "2026-09-17T10:19:53.798884954+08:00"}
{"phase": "verified", "sameVm": true, "id": "sb_a2b7479a737e54bd", "head": "ffecb7e0e844bd6f36a194baf27296222ad95322", "filePreserved": true, "elapsedMs": 100317, "heartbeats": 3, "originalDeadline": "2026-09-17T10:19:53.798884954+08:00", "renewedDeadline": "2026-09-17T10:21:34.142765748+08:00", "verifiedAt": "2026-09-17T02:20:04.087Z"}
{"phase": "cleanup", "released": true}After cleanup: backend claimed=0; deployed Agent active turns=0, renewal failure events=0. Only the dedicated rollout GPU wake lease is released; other leases are left untouched. Live auth against a known synthetic sandbox: node token renew=404, own sandbox token renew=200, release=204; fixtures cleaned up and claimed=0. The first auth smoke incorrectly expected release=200; corrected the probe to the existing 204 contract and reran successfully. No production application change was needed for that probe assertion. |
Bounded production backport, based on the currently deployed fdf73c4 tree (production branch merge has the identical tree). Add sandbox-token POST /renew, serialize with reap/release, reject expired/archived claims, persist before acknowledgement and roll back on persistence errors. No upgrade to main or host network schema. Validation: go test -race ./... and go vet ./... pass; golangci-lint --new-from-rev=fdf73c4 reports 0 new issues. Full baseline lint has 3 existing staticcheck findings (two netfilter comparisons, deprecated ReverseProxy.Director). Added manager persistence/auth/expiry/concurrency and 10 HTTP cases. Production deployment and isolated cross-TTL probe pending.