Skip to content

feat: add execution templates with platform-managed identity - #2219

Merged
JAORMX merged 3 commits into
mainfrom
feat/2109-execution-templates
Oct 12, 2026
Merged

JAORMX merged 3 commits into
mainfrom
feat/2109-execution-templates

Conversation

@JAORMX

@JAORMX JAORMX commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Implements operator-owned, revision-pinned execution templates across the Kubernetes provider, public API, mecatui, Studio, and TypeScript SDK.

  • Session creation supports the deployment default, explicit no-filesystem execution, or an exact eligible template revision.
  • Template discovery is authenticated. Bindings retain exact environment identity, historical definitions, and workspace PVCs across reconnects and restarts.
  • Execution authorization checks the authenticated client, owner, binding, active run, epoch, lease, and operation fence against current durable state.
  • Service identity comes from external PKI. Provider and client reload certificate material; valid renewal drains in-flight requests. The provider does not issue signed execution grants or manage grant-signing keys.
  • Guides describe current configuration and behavior rather than the implementation history.

This is a deliberate hard cut for the unused runtime, without compatibility shims.

Refs #2109.

Verification

Local checks passed after integration with main and the CI repairs:

  • Documentation validation, full Go lint and offline test suites.
  • Full race suite across all modules, including the microvm_dev tagged tests.
  • Studio lint, typecheck, generated-artifact checks, and server/web tests.
  • TypeScript SDK lint, typecheck, and 364 tests.
  • Strict govulncheck across all 12 modules, without vulnerability suppressions; Go 1.27.2 and x/net 0.60.0 are pinned.
  • Tagged Kind test compilation, fixture race tests, Docker base-pin validation, and the offline permission ask/approval demo.

The pre-integration local production-profile Kind qualification passed, including authorization, isolation, template history, retained PVCs, and lifecycle fencing. Its long-running phase observed four automatic client/server certificate renewals and successful same-session work after the original certificate expired. Following integration, the repaired in-flight renewal test also passed against real local Kind with the reloadable client and a preserved terminal result. Current-head CI runs the complete production profile and both long-renewal tests.

Before the main integration, a real OpenRouter model was exercised through the shipping mecatui in a PTY: select a remote template, build a Go JSONL log-summary CLI, request a follow-up feature, approve individual Edit/Shell operations, run all 14 project tests, exercise the CLI, and disconnect/resume the same session and workspace. This was fresh UI/model interaction, not replayed qualification evidence. That paid-model TUI journey has not been repeated after integration.

Draft review notes and remaining coverage

  • The real-model journey hit its cumulative token ceiling after the verification tools completed. It did not produce a final model-written report, and a fresh post-resume model response was not tested in that TUI journey.
  • Authentication used a synthetic local OIDC identity. Real browser sign-in and an end-to-end Studio journey remain untested.
  • Studio now builds against the checked-out SDK using the repository-root image context. That build/release coupling needs explicit review.
  • cert-manager is a fixture integration, not a mandatory runtime dependency. Its local bootstrap CA has a fourteen-day lifetime; platform issuer/root and trust lifecycle management remain operator responsibilities.
  • Passing local qualification is not a production-readiness claim.

JAORMX and others added 2 commits October 12, 2026 08:51
Preserve the modal Dream/help migration alongside execution-picker routing and selection ownership. Keep upstream WebSearch settings, credential loading, Darwin process handling, and isolated XDG test storage. Exercise execution results through the real TUI update router and cover picker Escape ownership.

Co-authored-by: Mecatl <noreply@mecatl.dev>
…osed

Separate template capacity policy from immutable execution recipes and use
retained per-template allocation ledgers. Validate ledger data and storage
bounds, scope revision retirement to retained references, and deduplicate
startup dependency checks across allocations.

Recheck current template authorization for run acquisition and renewal,
protect reference-release identity, and cover concurrency and malformed
state regressions. Publish an offline template authoring command and
self-contained current-state configuration and operating guides.

Co-authored-by: Mecatl <noreply@mecatl.dev>
Co-authored-by: Mecatl <noreply@mecatl.dev>
@JAORMX
JAORMX merged commit 987f0c3 into main Oct 12, 2026
45 of 46 checks passed
@JAORMX
JAORMX deleted the feat/2109-execution-templates branch October 12, 2026 12:24
peppescg added a commit that referenced this pull request Oct 13, 2026
Restacking onto main brought #2219's Execution picker and a live chat's
execution status into the prototype's single-line pill row. The picker
pushed the Model pill out of view at 500 to 640px, and the status pushed
Compact out at 1280px. Both now take a line under the pills, inside the
same tray, so the pill row keeps Mode, Model, usage, and Compact as the
port laid them out. A browser journey checks a draft and a live chat at
500, 640, and 1280px; it fails with the execution UI back in the pill
row.

Refs #2207

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
peppescg added a commit that referenced this pull request Oct 13, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@toolhive-release-app toolhive-release-app Bot mentioned this pull request Oct 13, 2026
2 tasks
peppescg added a commit that referenced this pull request Oct 14, 2026
Restacking onto main brought #2219's Execution picker and a live chat's
execution status into the prototype's single-line pill row. The picker
pushed the Model pill out of view at 500 to 640px, and the status pushed
Compact out at 1280px. Both now take a line under the pills, inside the
same tray, so the pill row keeps Mode, Model, usage, and Compact as the
port laid them out. A browser journey checks a draft and a live chat at
500, 640, and 1280px; it fails with the execution UI back in the pill
row.

Refs #2207

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e2e-live Run the live e2e suite on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant