Repository navigation
feat(mecak8s): enable in-chat schedules for remote execution - #2286
Merged
Merged
Conversation
Publish distinct successor references for borrowed remote schedule fires, preserve exact placement authority, and close run and reservation lifecycles safely. Add offline and Kind coverage and correct fixture API-egress discovery. Co-authored-by: Mecatl <noreply@mecatl.dev>
Preserve native borrowed-fire placement and ambiguous reservation cleanup while adopting scheduler deadline admission, liveness fencing, and terminal run release. Co-authored-by: Mecatl <noreply@mecatl.dev>
…failure Report only call names and result status, not tool output, to distinguish persistence from execution failures in production qualification. Co-authored-by: Mecatl <noreply@mecatl.dev>
JAORMX
marked this pull request as ready for review
October 13, 2026 16:51
Add non-sensitive conversation shape to the failing production qualification assertion. Co-authored-by: Mecatl <noreply@mecatl.dev>
Distinguish live execution projection failures from session snapshot persistence failures in Kind qualification. Co-authored-by: Mecatl <noreply@mecatl.dev>
Started notices are injected into the origin conversation, not LLM turns on the new fire session. The old leading text response ended the fire before its Shell and Read proof, leaving the proof from another actor uncorrelated with the returned session. Co-authored-by: Mecatl <noreply@mecatl.dev>
The mock provider cursor is deployment-wide; after a completed fire other model work may advance it before the next manual fire. Reload a dedicated script before asserting the second binding and proof. Co-authored-by: Mecatl <noreply@mecatl.dev>
The second fire now follows an agent rollout, so it must use the same bounded leader-acquisition retry as the first fire. Co-authored-by: Mecatl <noreply@mecatl.dev>
JAORMX
marked this pull request as draft
October 13, 2026 20:33
JAORMX
marked this pull request as ready for review
October 13, 2026 20:35
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.
CI status / integration blocker
Head:
adb733ff1806f37fae8d0c8edd970daac949889a.CONFLICTING/DIRTYagainst currentmain. A non-mutating merge-tree check identifiedinternal/app/scheduler_fire.go, overlapping the scheduler cancellation/ownership lifecycle changes merged in fix(scheduler): keep polling behind stuck fires without releasing ownership #2277 (8e3bea42e).Summary
Enable in-chat scheduled tasks that borrow a native Kubernetes session's exact remote workspace. Restore the remote Schedule/ScheduleQuery catalog and remove the implicit CLI scheduler disable; explicit
--no-schedulerremains honored.FinishRun, defer attachment reservation closure until publication, release process-local resources after ambiguous Commit responses without deleting durable state, and best-effort abort the exact reservation after a lost ReserveSuccessor response./32s and API ports for both profiles; keep workload fixture egress production-only. Before/after TCP probes and a passing original-image baseline established the cause; no authorization, fencing or workload isolation was weakened.Supported scope and intentional limits
Validation
This is deliberately a draft: the single full local race gate did not complete within 600 seconds, and live qualification is limited to the borrowed-schedule scope below.
task --concurrency 4 linttask --concurrency 4 test, before the final narrow reservation-response repairtask --concurrency 4 test:race-race -count=1task docsandtask site:buildafter the narrow repairgo run ./cmd/mecademo, before the narrow repairTestKindExecutionBorrowedScheduleThe final live test required two completed manual fires and a future durable timer after both provider and agent restarts. Every fire required successful Shell/Read event replay and completed persisted snapshots, distinct published fire references, exact environment/PVC continuity and remote-file verification. It used a scripted mock LLM, not paid model calls. This is not a claim that the entire production-network/renewal suite ran.
An additional explicitly tagged e2e lint invocation reported five findings outside the final narrow repair (context-argument ordering and shadowing, including shadowing in the new e2e helper). Ordinary full lint passed; that extra tagged invocation is not claimed green.
Reproducible committed coverage
Offline regressions:
The committed live test is
TestKindExecutionBorrowedScheduleine2e/k8s_execution/borrowed_schedule_test.go(build tagkind_execution_e2e). The fixture command below builds/loads the images and tagged test binary, establishes explicit owned cluster context and fixture identity, and runs the production-profile qualification including this test:This is a reproduction entry point, not a claim that this entire command passed during the final focused validation. It provisions a new fixture and retains it locally; do not use it to mutate the retained validation cluster. A focused rerun with the fixture's explicit state/context and authenticated helper environment uses
-test.run '^TestKindExecutionBorrowedSchedule$' -test.v -test.count=1 -test.timeout=10mon its tagged binary.The existing native executor deployment is retained, with all 20 environment/Pod/PVC identities preserved and no deletion or unfencing. Final deployed agent:
localhost/mecak8s@sha256:908dad40c1c3cac8a19c722b0ab003417080f8306ea5b8d0d03a67c6fe4a5aa3. Local receipts, fixture state, artifacts and credentials are not committed.API compatibility
Backward-compatible, additive availability of the existing scheduling API in remote-execution deployments. No protobuf/HTTP schema, wire major, feature identifier, engine public Go API, or persisted schema changes. Existing conforming clients need no migration; deployment-specific availability is not protocol version skew. The explicit scheduler opt-out remains supported. Internal service plumbing changes do not alter the engine's public Go surface. Stored records remain compatible and exact placement authorization stays fail-closed; persisted tool grants are not silently widened. Older sessions without Schedule authority require a new eligible session to expose it. No breaking change or major-bump approval is required.