feat: register google-adk runtime (manifest + knownRuntimes + canvas) #2003

Merged
hongming merged 2 commits from feat/register-google-adk-runtime into main 2026-05-29 18:51:47 +00:00
Owner

Platform-side registration for the google-adk runtime (RFC internal#730, Plan gate approved). Pairs with molecule-ai-workspace-template-google-adk PR #1.

  • manifest.json workspace_templates entry (handler allowlist)
  • provisioner/registry.go knownRuntimes += google-adk (Docker path gate); snapshot test 4→5
  • canvas CreateWorkspaceDialog RUNTIME_OPTIONS + BASE_RUNTIME_TEMPLATE_IDS; runtime-names.ts display

Verified: go build ./internal/provisioner/ clean; provisioner + handlers tests green; manifest.json valid.

Depends on / WIP: template image build+publish, controlplane runtime_image_pins (SaaS path) + providers.yaml, molecule-ci validator allowlist. Do not merge before the image exists. tier:medium.

🤖 Generated with Claude Code

Platform-side registration for the **google-adk** runtime (RFC internal#730, Plan gate approved). Pairs with molecule-ai-workspace-template-google-adk PR #1. - `manifest.json` workspace_templates entry (handler allowlist) - `provisioner/registry.go` knownRuntimes += google-adk (Docker path gate); snapshot test 4→5 - canvas `CreateWorkspaceDialog` RUNTIME_OPTIONS + BASE_RUNTIME_TEMPLATE_IDS; `runtime-names.ts` display **Verified:** `go build ./internal/provisioner/` clean; provisioner + handlers tests green; manifest.json valid. **Depends on / WIP:** template image build+publish, controlplane `runtime_image_pins` (SaaS path) + `providers.yaml`, molecule-ci validator allowlist. Do not merge before the image exists. tier:medium. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
hongming added 1 commit 2026-05-29 04:30:39 +00:00
feat: register google-adk runtime (manifest + knownRuntimes + canvas)
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 11s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 18s
CI / Python Lint & Test (pull_request) Successful in 7s
CI / Detect changes (pull_request) Successful in 16s
E2E API Smoke Test / detect-changes (pull_request) Successful in 8s
E2E Chat / detect-changes (pull_request) Successful in 7s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 7s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 4s
Harness Replays / detect-changes (pull_request) Successful in 3s
E2E Staging SaaS (full lifecycle) / pr-validate (pull_request) Successful in 34s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 5s
Lint no tenant GITEA or GITHUB token write / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 9s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 6s
verify-providers-gen / Regenerate providers artifact and fail on drift (pull_request) Successful in 55s
gate-check-v3 / gate-check (pull_request) Successful in 4s
qa-review / approved (pull_request) Failing after 6s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m26s
security-review / approved (pull_request) Failing after 10s
sop-checklist / review-refire (pull_request) Has been skipped
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-tier-check / tier-check (pull_request) Successful in 8s
sop-checklist / all-items-acked (pull_request) Successful in 9s
CI / Platform (Go) (pull_request) Successful in 4m30s
CI / Canvas (Next.js) (pull_request) Failing after 4m54s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 18m25s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 1m18s
E2E Chat / E2E Chat (pull_request) Successful in 3s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2s
Harness Replays / Harness Replays (pull_request) Successful in 1s
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Failing after 42m20s
0359912d06
Platform-side registration for the google-adk workspace runtime (RFC
internal#730). Required so a workspace with runtime: google-adk provisions
(Docker path) and is creatable from the canvas:
- manifest.json: workspace_templates entry → handler allowlist (loadRuntimesFromManifest)
- provisioner/registry.go: knownRuntimes += google-adk (else ErrUnresolvableRuntime); test count 4→5
- canvas CreateWorkspaceDialog: RUNTIME_OPTIONS + BASE_RUNTIME_TEMPLATE_IDS
- canvas runtime-names.ts: display name

Depends on molecule-ai-workspace-template-google-adk (image build/publish) +
controlplane runtime_image_pins (SaaS path) — tracked in RFC #730.
Verified: go build + provisioner/handlers tests green; manifest.json valid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
dev-lead approved these changes 2026-05-29 04:43:02 +00:00
Dismissed
dev-lead left a comment
Member

Reviewed (dev-lead, non-author).

Platform-side registration for the google-adk runtime; all in-repo touchpoints from RFC internal#730 are present and consistent:

  • manifest.json workspace_templates: entry points at molecule-ai/molecule-ai-workspace-template-google-adk ref main (handler allowlist — prevents sanitizeRuntime coercing to claude-code).
  • provisioner/registry.go knownRuntimes: google-adk inserted alphabetically; RuntimeImage() resolves to <prefix>/workspace-template-google-adk:latest per the RFC image-ref convention.
  • registry_test.go: count pin correctly bumped 4 to 5 with the message updated to name the new runtime (good guardrail — forces explicit acknowledgement).
  • canvas CreateWorkspaceDialog: RUNTIME_OPTIONS + BASE_RUNTIME_TEMPLATE_IDS both updated, alphabetical, consistent with each other.
  • runtime-names.ts: display name added.

No secrets. Build + provisioner/handlers tests reported green. Naming agrees across manifest/registry/canvas/ci#26/template config.yaml.

Non-blocking caveat (sequencing, not code): the PR body itself flags this must not merge before the template image is published and the CP runtime_image_pins row + providers.yaml land — those are operational merge-ordering gates, not defects in this diff. Approving the code; merge must wait on the image + CP pin.

LGTM — approve.

Reviewed (dev-lead, non-author). Platform-side registration for the google-adk runtime; all in-repo touchpoints from RFC internal#730 are present and consistent: - manifest.json workspace_templates: entry points at molecule-ai/molecule-ai-workspace-template-google-adk ref main (handler allowlist — prevents sanitizeRuntime coercing to claude-code). - provisioner/registry.go knownRuntimes: google-adk inserted alphabetically; RuntimeImage() resolves to `<prefix>/workspace-template-google-adk:latest` per the RFC image-ref convention. - registry_test.go: count pin correctly bumped 4 to 5 with the message updated to name the new runtime (good guardrail — forces explicit acknowledgement). - canvas CreateWorkspaceDialog: RUNTIME_OPTIONS + BASE_RUNTIME_TEMPLATE_IDS both updated, alphabetical, consistent with each other. - runtime-names.ts: display name added. No secrets. Build + provisioner/handlers tests reported green. Naming agrees across manifest/registry/canvas/ci#26/template config.yaml. Non-blocking caveat (sequencing, not code): the PR body itself flags this must not merge before the template image is published and the CP runtime_image_pins row + providers.yaml land — those are operational merge-ordering gates, not defects in this diff. Approving the code; merge must wait on the image + CP pin. LGTM — approve.
Member

HOLD — not merging (ordering gate + red CI)

This registration PR (manifest.json + provisioner knownRuntimes + canvas runtime list) is held for two independent reasons:

1. Cross-repo ordering gate. This must merge only after molecule-ai-workspace-template-google-adk#1 merges and its runtime image publishes to ECR. Registering google-adk in knownRuntimes + the canvas CreateWorkspaceDialog while no image exists means any google-adk workspace provision would pull a missing image and fail at launch. Order: template#1 (image publish) → then this.

2. CI is red on the head commit. Required context CI / all-required is failing (it aggregates CI / Canvas (Next.js), which is also failing after ~5m), and E2E Staging SaaS (full lifecycle) is failing. Per the merge rule we do not merge unless the combined required set is green. The Canvas failure looks tied to this PRs canvas/src/components/CreateWorkspaceDialog.tsx + canvas/src/lib/runtime-names.ts edits — please get the Canvas (Next.js) job green before re-requesting merge.

Approvals: dev-lead already APPROVED; I am adding a 2nd genuine non-author review (core-fe) on the registration mechanism. So the 2-approval bar is met — the hold is purely the ordering gate + red CI, not an approval shortfall.

To unblock: (a) fix Canvas (Next.js) → all-required green + E2E Staging SaaS green, (b) confirm template#1 merged and image is in ECR, then merge this.

## HOLD — not merging (ordering gate + red CI) This registration PR (manifest.json + provisioner `knownRuntimes` + canvas runtime list) is held for **two** independent reasons: **1. Cross-repo ordering gate.** This must merge **only after** `molecule-ai-workspace-template-google-adk#1` merges **and** its runtime image publishes to ECR. Registering `google-adk` in `knownRuntimes` + the canvas CreateWorkspaceDialog while no image exists means any `google-adk` workspace provision would pull a missing image and fail at launch. Order: template#1 (image publish) → then this. **2. CI is red on the head commit.** Required context `CI / all-required` is **failing** (it aggregates `CI / Canvas (Next.js)`, which is also failing after ~5m), and `E2E Staging SaaS (full lifecycle)` is failing. Per the merge rule we do not merge unless the combined required set is green. The Canvas failure looks tied to this PRs `canvas/src/components/CreateWorkspaceDialog.tsx` + `canvas/src/lib/runtime-names.ts` edits — please get the Canvas (Next.js) job green before re-requesting merge. **Approvals:** dev-lead already APPROVED; I am adding a 2nd genuine non-author review (core-fe) on the registration mechanism. So the 2-approval bar is met — the hold is purely the ordering gate + red CI, **not** an approval shortfall. **To unblock:** (a) fix Canvas (Next.js) → all-required green + E2E Staging SaaS green, (b) confirm template#1 merged and image is in ECR, then merge this.
core-fe approved these changes 2026-05-29 06:25:46 +00:00
Dismissed
core-fe left a comment
Member

2nd non-author review (core-fe) of the registration mechanism. The shape is correct: google-adk added to manifest.json, the Go provisioner knownRuntimes (registry.go + registry_test.go), and the canvas runtime list (runtime-names.ts + CreateWorkspaceDialog.tsx) — consistent with the validator allowlist already merged in molecule-ci #26 and the template adapter in template#1. Registration is the right surface.

Approval is on the registration design. Merge remains HELD (see my comment): the cross-repo ordering gate (template#1 image must publish to ECR first) and the red required CI (CI / all-required + CI / Canvas (Next.js) failing; E2E Staging SaaS failing). The Canvas failure must be resolved before merge — please confirm it is not a regression from the CreateWorkspaceDialog edit. Approving so the 2-approval bar is met, but do not merge until CI is green and template#1 has shipped its image.

2nd non-author review (core-fe) of the registration mechanism. The shape is correct: `google-adk` added to manifest.json, the Go provisioner `knownRuntimes` (registry.go + registry_test.go), and the canvas runtime list (runtime-names.ts + CreateWorkspaceDialog.tsx) — consistent with the validator allowlist already merged in molecule-ci #26 and the template adapter in template#1. Registration is the right surface. Approval is on the registration design. **Merge remains HELD** (see my comment): the cross-repo ordering gate (template#1 image must publish to ECR first) and the **red required CI** (`CI / all-required` + `CI / Canvas (Next.js)` failing; `E2E Staging SaaS` failing). The Canvas failure must be resolved before merge — please confirm it is not a regression from the CreateWorkspaceDialog edit. Approving so the 2-approval bar is met, but do not merge until CI is green and template#1 has shipped its image.
cp-be requested changes 2026-05-29 18:00:25 +00:00
Dismissed
cp-be left a comment
Member

HOLD — genuine test regression from this PR's own diff (not the staging-E2E flake).

Required branch-protection contexts for core/main are: CI / all-required, E2E API Smoke Test, Handlers Postgres Integration. Of these, CI / all-required is RED because CI / Canvas (Next.js) failed:

FAIL src/components/__tests__/CreateWorkspaceDialog.test.tsx > keeps runtime and workspace template as separate selectors
AssertionError: expected [ "Claude Code", …(4) ] to deeply equal [ "Claude Code", …(3) ]
+   "Google ADK"

This PR added { value: "google-adk", label: "Google ADK" } to RUNTIME_OPTIONS in CreateWorkspaceDialog.tsx but did NOT update the hardcoded expected list in CreateWorkspaceDialog.test.tsx:213, which pins the runtime options to exactly 4 entries. The test now sees 5. This is a direct, deterministic regression from the diff — reproducible locally, nothing to do with infra. Fix (author): add "Google ADK", after "OpenAI Codex CLI", in the toEqual([...]) array at CreateWorkspaceDialog.test.tsx:213. On the OTHER reds, for the record (these are NOT blockers): E2E Staging SaaS (full lifecycle) = failure — this is NOT a required context. Precedent: core#2009 merged today with this exact context red. It is the staging-tenant/infra canary, and this manifest+knownRuntimes+canvas diff cannot affect SaaS lifecycle E2E. Advisory. qa-review / approved, security-review / approved = failure — also NOT required (core#2008 merged with both red). SOP gates, not branch protection. So: one REQUIRED context (CI / all-required via Canvas unit test) is genuinely red from this PR. Push the one-line test fix and CI will go green; dev-lead + core-fe approvals already in place. Requesting changes until the test is updated.

HOLD — genuine test regression from this PR's own diff (not the staging-E2E flake). Required branch-protection contexts for core/main are: `CI / all-required`, `E2E API Smoke Test`, `Handlers Postgres Integration`. Of these, **`CI / all-required` is RED** because `CI / Canvas (Next.js)` failed: ``` FAIL src/components/__tests__/CreateWorkspaceDialog.test.tsx > keeps runtime and workspace template as separate selectors AssertionError: expected [ "Claude Code", …(4) ] to deeply equal [ "Claude Code", …(3) ] + "Google ADK" ``` This PR added `{ value: "google-adk", label: "Google ADK" }` to `RUNTIME_OPTIONS` in CreateWorkspaceDialog.tsx but did NOT update the hardcoded expected list in CreateWorkspaceDialog.test.tsx:213, which pins the runtime <select> options to exactly 4 entries. The test now sees 5. This is a direct, deterministic regression from the diff — reproducible locally, nothing to do with infra. Fix (author): add `"Google ADK",` after `"OpenAI Codex CLI",` in the `toEqual([...])` array at CreateWorkspaceDialog.test.tsx:213. On the OTHER reds, for the record (these are NOT blockers): - `E2E Staging SaaS (full lifecycle)` = failure — this is NOT a required context. Precedent: core#2009 merged today with this exact context red. It is the staging-tenant/infra canary, and this manifest+knownRuntimes+canvas diff cannot affect SaaS lifecycle E2E. Advisory. - `qa-review / approved`, `security-review / approved` = failure — also NOT required (core#2008 merged with both red). SOP gates, not branch protection. So: one REQUIRED context (`CI / all-required` via Canvas unit test) is genuinely red from this PR. Push the one-line test fix and CI will go green; dev-lead + core-fe approvals already in place. Requesting changes until the test is updated.
hongming added 1 commit 2026-05-29 18:02:16 +00:00
test(canvas): add Google ADK to CreateWorkspaceDialog runtime-options assertion
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 11s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 6s
Check migration collisions / Migration version collision check (pull_request) Successful in 6s
CI / Detect changes (pull_request) Successful in 8s
CI / Python Lint & Test (pull_request) Successful in 3s
E2E Chat / detect-changes (pull_request) Successful in 7s
E2E API Smoke Test / detect-changes (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request) Successful in 3s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 8s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (local) (pull_request) Successful in 44s
E2E Staging SaaS (full lifecycle) / pr-validate (pull_request) Successful in 37s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 6s
Harness Replays / detect-changes (pull_request) Successful in 3s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 4s
Lint no tenant GITEA or GITHUB token write / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 3s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m11s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 4s
verify-providers-gen / Regenerate providers artifact and fail on drift (pull_request) Successful in 32s
gate-check-v3 / gate-check (pull_request) Failing after 4s
qa-review / approved (pull_request) Failing after 4s
security-review / approved (pull_request) Failing after 3s
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request) Successful in 3s
sop-checklist / review-refire (pull_request) Has been skipped
sop-tier-check / tier-check (pull_request) Successful in 4s
CI / Platform (Go) (pull_request) Successful in 5m1s
CI / Canvas (Next.js) (pull_request) Successful in 4m54s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
CI / all-required (pull_request) Successful in 25m28s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 1m22s
E2E Chat / E2E Chat (pull_request) Successful in 3s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 2s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 1s
Harness Replays / Harness Replays (pull_request) Successful in 1s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Failing after 37m39s
audit-force-merge / audit (pull_request) Successful in 7s
f82a980a79
RUNTIME_OPTIONS gained 'Google ADK' but the test's hardcoded expected array
(separate-selectors test) still listed 4 → Canvas (Next.js) CI red (5 vs 4).
Add it in component order (after OpenAI Codex CLI). Caught by comprehensive
pre-merge review — a real regression from this PR's own diff, not the
staging-E2E infra flake.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
hongming dismissed dev-lead's review 2026-05-29 18:02:16 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

hongming dismissed core-fe's review 2026-05-29 18:02:16 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

cp-be approved these changes 2026-05-29 18:51:18 +00:00
cp-be left a comment
Member

APPROVED on f82a980 — supersedes my prior REQUEST_CHANGES (review #7918, on stale commit 0359912d).

Concern then: registering the google-adk runtime added "Google ADK" to RUNTIME_OPTIONS, but CreateWorkspaceDialog.test.tsx's expect(runtimeTexts).toEqual([...]) still listed only the old runtimes → Canvas (Next.js) test regression.

Resolved by f82a980: the test's expected array now includes "Google ADK" at the correct ordinal position:

     expect(runtimeTexts).toEqual([
       "Claude Code",
       "OpenAI Codex CLI",
+      "Google ADK",
       "Hermes",
       "OpenClaw",
     ]);

This matches the RUNTIME_OPTIONS ordering in runtime-names.ts / CreateWorkspaceDialog.tsx. Verified CI / Canvas (Next.js) = success and CI / all-required = success on f82a980. The regression is genuinely fixed, not bypassed. Approving.

APPROVED on f82a980 — supersedes my prior REQUEST_CHANGES (review #7918, on stale commit 0359912d). Concern then: registering the google-adk runtime added "Google ADK" to RUNTIME_OPTIONS, but CreateWorkspaceDialog.test.tsx's `expect(runtimeTexts).toEqual([...])` still listed only the old runtimes → Canvas (Next.js) test regression. Resolved by f82a980: the test's expected array now includes "Google ADK" at the correct ordinal position: ``` expect(runtimeTexts).toEqual([ "Claude Code", "OpenAI Codex CLI", + "Google ADK", "Hermes", "OpenClaw", ]); ``` This matches the RUNTIME_OPTIONS ordering in runtime-names.ts / CreateWorkspaceDialog.tsx. Verified `CI / Canvas (Next.js)` = success and `CI / all-required` = success on f82a980. The regression is genuinely fixed, not bypassed. Approving.
dev-lead approved these changes 2026-05-29 18:51:33 +00:00
dev-lead left a comment
Member

Re-approving on f82a980 (my prior approval #7886 was on 0359912d, now stale per SOP-12 dismiss-stale).

f82a980 changes vs the head I previously approved: it adds "Google ADK" to CreateWorkspaceDialog.test.tsx's expected runtime array, fixing the Canvas test regression cp-be flagged. No scope creep — the only delta is the test-expectation fix. Required CI is green on this head (CI / all-required, E2E API Smoke, Handlers Postgres Integration all success). google-adk manifest + knownRuntimes (registry.go) + canvas RUNTIME_OPTIONS remain consistent. APPROVED.

Re-approving on f82a980 (my prior approval #7886 was on 0359912d, now stale per SOP-12 dismiss-stale). f82a980 changes vs the head I previously approved: it adds "Google ADK" to CreateWorkspaceDialog.test.tsx's expected runtime array, fixing the Canvas test regression cp-be flagged. No scope creep — the only delta is the test-expectation fix. Required CI is green on this head (CI / all-required, E2E API Smoke, Handlers Postgres Integration all success). google-adk manifest + knownRuntimes (registry.go) + canvas RUNTIME_OPTIONS remain consistent. APPROVED.
hongming merged commit f84f9a5572 into main 2026-05-29 18:51:47 +00:00
Sign in to join this conversation.
No Reviewers
4 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2003