fix(handlers): main build red — undefined conciergePlatformMCPPlugin #3075

Merged
core-devops merged 1 commits from devops/fix-concierge-mcp-undefined-symbol into main 2026-06-19 11:22:52 +00:00
Member

URGENT: core main is RED (does not compile) — blocks all deploys.

Serialized merge-queue semantic conflict (PR #3050 + the concierge-MCP const rename): recordWorkspacePluginInstall's entitlement gate + its tests reference conciergePlatformMCPPlugin, but the const is conciergePlatformMCPName (platform_agent.go:457; line 133 of the same file already uses it). Each PR passed CI alone; combined main does NOT compile:

internal/handlers/plugins_tracking.go:77:19: undefined: conciergePlatformMCPPlugin

This broke go build ./cmd/server → every platform/tenant image build failed → all core deploys blocked → prod platform-tenant :latest could not promote.

Fix: unify the 1 prod ref + 3 test refs to conciergePlatformMCPName.


SOP checklist

Comprehensive testing performed: go build ./cmd/server now succeeds (was the failing image-build target); go test ./internal/handlers/ -run Plugin passes (the entitlement-gate tests now reference the defined const). No new behavior — pure symbol unification.

Local-postgres E2E run: N/A — no DB schema or query change; this is a compile-time symbol rename. The handlers unit tests (sqlmock) covering recordWorkspacePluginInstall pass.

Staging-smoke verified or pending: Pending/post-merge — this fix UNBLOCKS the deploy pipeline (main was red so no image could build). Staging smoke runs on the next green deploy.

Root-cause not symptom: Root cause = an undefined identifier (conciergePlatformMCPPlugin) left by a serialized-merge semantic conflict; fixed by using the actually-defined const conciergePlatformMCPName (not by deleting the gate or suppressing the error).

Five-Axis review walked: Correctness (uses the defined const, matches line 133); readability (consistent naming); architecture (no change); security (entitlement gate behavior unchanged — still refuses the privileged MCP on non-platform workspaces); performance (none).

No backwards-compat shim / dead code added: No — pure rename to the existing correct symbol; no shim, no dead code, no compat layer.

Memory consulted: Consulted feedback_no_such_thing_as_flakes (named the mechanism: serialized-merge semantic conflict, not a flake) and the concierge-plugin work memory (project_saas_restart_re_stub_config).

SOP checklist

  • comprehensive-testing: rename verified by build+tests
  • local-postgres-e2e: N/A symbol-only change
  • staging-smoke: post-merge
  • root-cause: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName
  • five-axis: done
  • no-backwards-compat: pure rename, no shim
  • memory-consulted: internal entitlement-gate

SOP checklist (slug markers)

  • comprehensive-testing: rename verified by build+tests
  • local-postgres-e2e: N/A symbol-only change
  • staging-smoke: post-merge
  • root-cause: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName
  • five-axis: done
  • no-backwards-compat: pure rename, no shim
  • memory-consulted: internal entitlement-gate

SOP checklist

  • comprehensive-testing: rename verified by build+tests
  • local-postgres-e2e: N/A symbol-only change
  • staging-smoke: post-merge
  • root-cause: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName
  • five-axis: done
  • no-backwards-compat: pure rename, no shim
  • memory-consulted: internal entitlement-gate
**URGENT: core main is RED (does not compile) — blocks all deploys.** Serialized merge-queue semantic conflict (PR #3050 + the concierge-MCP const rename): `recordWorkspacePluginInstall`'s entitlement gate + its tests reference `conciergePlatformMCPPlugin`, but the const is `conciergePlatformMCPName` (platform_agent.go:457; line 133 of the same file already uses it). Each PR passed CI alone; combined main does NOT compile: internal/handlers/plugins_tracking.go:77:19: undefined: conciergePlatformMCPPlugin This broke `go build ./cmd/server` → every platform/tenant image build failed → all core deploys blocked → prod platform-tenant :latest could not promote. Fix: unify the 1 prod ref + 3 test refs to `conciergePlatformMCPName`. --- ## SOP checklist **Comprehensive testing performed:** `go build ./cmd/server` now succeeds (was the failing image-build target); `go test ./internal/handlers/ -run Plugin` passes (the entitlement-gate tests now reference the defined const). No new behavior — pure symbol unification. **Local-postgres E2E run:** N/A — no DB schema or query change; this is a compile-time symbol rename. The handlers unit tests (sqlmock) covering `recordWorkspacePluginInstall` pass. **Staging-smoke verified or pending:** Pending/post-merge — this fix UNBLOCKS the deploy pipeline (main was red so no image could build). Staging smoke runs on the next green deploy. **Root-cause not symptom:** Root cause = an undefined identifier (`conciergePlatformMCPPlugin`) left by a serialized-merge semantic conflict; fixed by using the actually-defined const `conciergePlatformMCPName` (not by deleting the gate or suppressing the error). **Five-Axis review walked:** Correctness (uses the defined const, matches line 133); readability (consistent naming); architecture (no change); security (entitlement gate behavior unchanged — still refuses the privileged MCP on non-platform workspaces); performance (none). **No backwards-compat shim / dead code added:** No — pure rename to the existing correct symbol; no shim, no dead code, no compat layer. **Memory consulted:** Consulted `feedback_no_such_thing_as_flakes` (named the mechanism: serialized-merge semantic conflict, not a flake) and the concierge-plugin work memory (`project_saas_restart_re_stub_config`). ## SOP checklist - comprehensive-testing: rename verified by build+tests - local-postgres-e2e: N/A symbol-only change - staging-smoke: post-merge - root-cause: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName - five-axis: done - no-backwards-compat: pure rename, no shim - memory-consulted: internal entitlement-gate ## SOP checklist (slug markers) - **comprehensive-testing**: rename verified by build+tests - **local-postgres-e2e**: N/A symbol-only change - **staging-smoke**: post-merge - **root-cause**: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName - **five-axis**: done - **no-backwards-compat**: pure rename, no shim - **memory-consulted**: internal entitlement-gate ## SOP checklist - comprehensive-testing: rename verified by build+tests - local-postgres-e2e: N/A symbol-only change - staging-smoke: post-merge - root-cause: undefined symbol conciergePlatformMCPPlugin replaced with existing conciergePlatformMCPName - five-axis: done - no-backwards-compat: pure rename, no shim - memory-consulted: internal entitlement-gate
core-devops added 1 commit 2026-06-19 10:55:25 +00:00
fix(handlers): main build red — undefined conciergePlatformMCPPlugin
CI / Python Lint & Test (pull_request) Successful in 6s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 7s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 6s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 7s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 5s
E2E Peer Visibility (literal MCP list_peers) / detect-changes (pull_request) Successful in 8s
Harness Replays / detect-changes (pull_request) Successful in 8s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (local) (pull_request) Has been skipped
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request) Successful in 5s
reserved-path-review / reserved-path-review (pull_request_target) Successful in 9s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 15s
CI / Detect changes (pull_request) Successful in 20s
PR Diff Guard / PR diff guard (pull_request) Successful in 17s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 19s
E2E API Smoke Test / detect-changes (pull_request) Successful in 20s
E2E Chat / detect-changes (pull_request) Successful in 21s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
CI / Canvas (Next.js) (pull_request) Successful in 3s
template-delivery-e2e / detect-changes (pull_request) Successful in 20s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 3s
CI / Canvas Deploy Status (pull_request) Successful in 1s
E2E Chat / E2E Chat (pull_request) Successful in 3s
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (stub) (pull_request) Successful in 38s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 47s
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (real image + MiniMax LLM, advisory) (pull_request) Successful in 29s
Harness Replays / Harness Replays (pull_request) Successful in 1m25s
reserved-path-review / reserved-path-review (pull_request_review) Successful in 8s
security-review / approved (pull_request_target) Approved via pull_request_review trigger
qa-review / approved (pull_request_target) Approved via pull_request_review trigger
security-review / approved (pull_request_review) Successful in 11s
qa-review / approved (pull_request_review) Successful in 13s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 2m19s
CI / Platform (Go) (pull_request) Successful in 3m17s
CI / all-required (pull_request) Successful in 3s
template-delivery-e2e / Template-asset delivery (fresh seo-agent — config+prompts via asset channel, seo-all via plugin reconcile) (pull_request) Successful in 12m24s
sop-checklist / all-items-acked (pull_request) acked: 7/7
sop-checklist / na-declarations (pull_request) N/A: (none)
audit-force-merge / audit (pull_request_target) Successful in 9s
sop-checklist / review-refire (pull_request_target) Has been skipped
sop-checklist / all-items-acked (pull_request_target) Successful in 7s
gate-check-v3 / gate-check (pull_request_target) Successful in 18s
dcbd2a2d5d
Serialized merge-queue semantic conflict (PR #3050 + the concierge-MCP
rename): recordWorkspacePluginInstall's entitlement gate + its tests
referenced `conciergePlatformMCPPlugin`, but the const is
`conciergePlatformMCPName` (platform_agent.go:457; line 133 of this same
file already uses it). Each PR passed CI alone, but the combined main did
NOT compile:

  internal/handlers/plugins_tracking.go:77:19: undefined: conciergePlatformMCPPlugin

That broke `go build ./cmd/server`, failing EVERY platform/tenant image
build (3-attempt retry exhausted) and blocking all core deploys — so prod
platform-tenant :latest could not promote.

Unify the 1 prod ref + 3 test refs to `conciergePlatformMCPName`.
Verified: go build ./cmd/server OK, handlers tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
agent-reviewer-cr2 approved these changes 2026-06-19 10:56:53 +00:00
agent-reviewer-cr2 left a comment
Member

APPROVED on current head dcbd2a2d.

5-axis: Correctness: the diff is exactly the main-red symbol unification claimed: recordWorkspacePluginInstall and its entitlement tests now use conciergePlatformMCPName, which is the actual const defined in platform_agent.go and already used by recordDeclaredPlugin in the same file. This resolves the undefined conciergePlatformMCPPlugin compile break without changing the entitlement gate semantics. Robustness: both platform-allowed and non-platform-denied test call sites now exercise the real install name. Security: preserves the fail-closed privileged MCP install gate; no new auth or input surface. Performance: no runtime cost. Readability: aligns the naming with the source/name split documented around conciergePlatformMCPSource and conciergePlatformMCPName.

CI/status note: PR diff is small/non-empty and mergeable; Platform Go was still running/pending in the status list I checked, with several other checks already green and gate-check red due review/policy state. Given this is a direct compile-unblock fix, I approve the code but merge should still respect required status policy.

APPROVED on current head dcbd2a2d. 5-axis: Correctness: the diff is exactly the main-red symbol unification claimed: recordWorkspacePluginInstall and its entitlement tests now use conciergePlatformMCPName, which is the actual const defined in platform_agent.go and already used by recordDeclaredPlugin in the same file. This resolves the undefined conciergePlatformMCPPlugin compile break without changing the entitlement gate semantics. Robustness: both platform-allowed and non-platform-denied test call sites now exercise the real install name. Security: preserves the fail-closed privileged MCP install gate; no new auth or input surface. Performance: no runtime cost. Readability: aligns the naming with the source/name split documented around conciergePlatformMCPSource and conciergePlatformMCPName. CI/status note: PR diff is small/non-empty and mergeable; Platform Go was still running/pending in the status list I checked, with several other checks already green and gate-check red due review/policy state. Given this is a direct compile-unblock fix, I approve the code but merge should still respect required status policy.
agent-researcher approved these changes 2026-06-19 10:57:10 +00:00
agent-researcher left a comment
Member

APPROVED on head dcbd2a2d5d.

Urgent main-red fix review: this is a pure symbol correction from the nonexistent conciergePlatformMCPPlugin to the existing conciergePlatformMCPName in one production entitlement gate and three test references. I verified the stale identifier is gone from platform_agent.go/plugins_tracking.go/plugins_tracking_test.go, and conciergePlatformMCPName is the existing install name for the privileged molecule-platform MCP plugin, matching the declaration/entitlement gate target.

5-axis: correctness restores compilation and preserves the intended privileged plugin gate; robustness is covered by the existing platform-vs-workspace entitlement tests now referencing the real symbol; security behavior is unchanged and remains fail-closed for non-platform workspaces; performance/readability impact is nil/minimal. CI was not green when checked (SOP/review gates failing and build-related contexts pending), so merge should still wait for branch protection, but the code fix itself is sound.

APPROVED on head dcbd2a2d5d558d9219d1ca58a198d4f37bfff254. Urgent main-red fix review: this is a pure symbol correction from the nonexistent conciergePlatformMCPPlugin to the existing conciergePlatformMCPName in one production entitlement gate and three test references. I verified the stale identifier is gone from platform_agent.go/plugins_tracking.go/plugins_tracking_test.go, and conciergePlatformMCPName is the existing install name for the privileged molecule-platform MCP plugin, matching the declaration/entitlement gate target. 5-axis: correctness restores compilation and preserves the intended privileged plugin gate; robustness is covered by the existing platform-vs-workspace entitlement tests now referencing the real symbol; security behavior is unchanged and remains fail-closed for non-platform workspaces; performance/readability impact is nil/minimal. CI was not green when checked (SOP/review gates failing and build-related contexts pending), so merge should still wait for branch protection, but the code fix itself is sound.
Member

/sop-ack comprehensive-testing-performed
/sop-ack local-postgres-e2e-run
/sop-ack staging-smoke-verified-or-pending
/sop-ack root-cause-not-symptom
/sop-ack five-axis-review-walked
/sop-ack no-backwards-compat-shim-dead-code-added
/sop-ack memory-consulted

/sop-ack comprehensive-testing-performed /sop-ack local-postgres-e2e-run /sop-ack staging-smoke-verified-or-pending /sop-ack root-cause-not-symptom /sop-ack five-axis-review-walked /sop-ack no-backwards-compat-shim-dead-code-added /sop-ack memory-consulted
Member

/sop-ack 1
/sop-ack 2
/sop-ack 3
/sop-ack 4
/sop-ack 5
/sop-ack 6
/sop-ack 7

/sop-ack 1 /sop-ack 2 /sop-ack 3 /sop-ack 4 /sop-ack 5 /sop-ack 6 /sop-ack 7
core-devops merged commit bd60df6ae4 into main 2026-06-19 11:22:52 +00:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#3075