[migrate] vanity import go.moleculesai.app/core/{platform,tests/harness/cp-stub} (internal#71 phase 2) #82
Closed
claude-ceo-assistant
wants to merge 7 commits from
migrate/issue-71-vanity-imports into main
pull from: migrate/issue-71-vanity-imports
merge into: molecule-ai:main
molecule-ai:main
molecule-ai:fix/175-env-matched-pair-guard
molecule-ai:fix/vitest-pool-worker-startup-timeouts
molecule-ai:refactor/sop-tier-check-extract-script
molecule-ai:fix/sop-tier-check-pr-target-security
molecule-ai:ci/sop-tier-check-deploy
molecule-ai:fix/issue53-admin-token-pair-guard
molecule-ai:fix/org-import-started-event-name
molecule-ai:refactor/delete-uses-cascade-helper
molecule-ai:fix/org-import-reconcile-and-audit
molecule-ai:fix/preserve-model-secret-on-restart
molecule-ai:feat/persona-bind-mount-local-dev
molecule-ai:feat/canary-tier-filter
molecule-ai:feat/plugin-version-subscription
molecule-ai:feat/plugin-hot-reload-classifier
molecule-ai:feat/plugin-atomic-install
molecule-ai:feat/air-hot-reload-dev
molecule-ai:feat/persona-env-injection
molecule-ai:fix/external-resolver-hardening
molecule-ai:fix/issue75-class-D-gh-api-to-gitea-rest
molecule-ai:fix/cherry-3-files-vitest-postgres-e2eapi
molecule-ai:fix/promote-vitest-postgres-fixes
molecule-ai:fix/saas-plugin-install-eic
molecule-ai:fix/issue-94-e2e-api-parallel-safe-class-b
molecule-ai:fix/handlers-postgres-port-collision-class-b
molecule-ai:fix/issue-96-canvas-vitest-cold-start-timeout
molecule-ai:fix/hermes-agent-doc-gitea-migration
molecule-ai:fix/196-retarget-main-to-staging-gitea-rest
molecule-ai:fix/gitea-ci-flakes-issue-88
molecule-ai:fix/pin-upload-artifact-v3-gitea
molecule-ai:fix/issue-72-auto-sync-token-canary-v2
molecule-ai:fix/issue75-class-F-gh-run-list-to-statuses
molecule-ai:fix/issue75-class-A-gh-pr-to-gitea-rest
molecule-ai:feat/issue-63-local-build-from-gitea-v2
molecule-ai:fix/195-auto-promote-staging-gitea-rest
molecule-ai:fix/144-branch-protection-check-name-parity-audit
molecule-ai:fix/harness-replays-pre-clone-manifest
molecule-ai:chore/trigger-auto-sync-verification
molecule-ai:fix/codeql-stub-on-gitea-156
molecule-ai:chore/issue173-retrigger-after-ecr-repo-create
molecule-ai:fix/issue173-inline-aws-ecr-login
molecule-ai:fix/issue173-shell-docker-push
molecule-ai:chore/retrigger-harness-replays-post-class-g
molecule-ai:fix/issue173-buildx-driver-and-cache
molecule-ai:fix/post-suspension-clone-manifest
molecule-ai:fix/issue173-followup-platform-dockerfile
molecule-ai:fix/post-suspension-github-urls
molecule-ai:fix/170-goroutine-bleed-test-isolation
molecule-ai:fix/issue173-publish-workspace-server-image
molecule-ai:fix/issue36-a2a-proxy-preflight
molecule-ai:fix/codeql-continue-on-error-156
molecule-ai:feat/demo-mock-3-bigorg-mock-runtime
molecule-ai:feat/demo-mock-1-purchase-success-modal
molecule-ai:fix/publish-path-filter-add-scripts
molecule-ai:fix/clone-manifest-gitea
molecule-ai:chore/touch-publish-workflow-to-trigger
molecule-ai:chore/retrigger-publish-post-aws-secrets
molecule-ai:chore/cherry-pick-pr23-into-main
molecule-ai:chore/backsync-main-into-staging-task-166
molecule-ai:fix/auto-sync-use-devops-token
molecule-ai:chore/retrigger-staging-on-fixed-runner-image
molecule-ai:chore/drop-github-app-auth-and-ecr-swap
molecule-ai:docs/readme-comprehensive-refresh-2026-05-06
molecule-ai:feat/rfc-2945-pr-c-2-canvas-chat-history
molecule-ai:fix/issue10-runtime-aware-plugin-install
molecule-ai:fix/s8-bind-loopback-dev
molecule-ai:fix/14-cascade-gitea-dispatch
molecule-ai:docs/molecule-core-bulk-sed
molecule-ai:chore/pin-artifact-actions-v3
molecule-ai:fix/lowercase-org-slug
molecule-ai:fix/script-ghcr-and-lint-paths
molecule-ai:docs/workspace-runtime-readme-source-edit
molecule-ai:feat/eic-tunnel-pool-core-11
molecule-ai:chore/rfc-2945-pr-c-3-delete-historyhydration
molecule-ai:fix/2872-sqlmock-regex-tightening
molecule-ai:fix/cp-orphan-sweeper-2989
molecule-ai:feat/registry-prefix-env-driven-issue-6
molecule-ai:docs/readme-refresh-2026-05-06
No reviewers
Labels
No Label
tier:high
tier:low
tier:medium
Milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Clear assignees
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#82
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "migrate/issue-71-vanity-imports"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fourth PR in the molecule-ai/internal#71 sweep — and the largest. Migrates
molecule-core/workspace-server(374 import lines across 174 Go files) andmolecule-core/tests/harness/cp-stuboff the deadgithub.com/Molecule-AI/molecule-monorepo/...identity onto the vanity hostgo.moleculesai.app. Also fixes a historical naming inconsistency: the Gitea repo ismolecule-corebut the Go module declaredmolecule-monorepo— the migration aligns them.Pairs with
molecule-ai-plugin-gh-identity#3(smoke),molecule-cli#2(parallel),molecule-controlplane#32(parallel).Files touched
go.moddeclarations:workspace-server/go.mod:github.com/Molecule-AI/molecule-monorepo/platform→go.moleculesai.app/core/platformtests/harness/cp-stub/go.mod:github.com/Molecule-AI/molecule-monorepo/tests/harness/cp-stub→go.moleculesai.app/core/tests/harness/cp-stub*.gofiles — every import statement (374 lines)Dockerfiles —-ldflags "-X github.com/Molecule-AI/molecule-monorepo/platform/internal/buildinfo.GitSHA=..."updated to the new module path. Without this lockstep change the binary builds but reports a stale GitSHA.*.md,*.sh,*.tsx,*.sql— comment / doc URLs updated fromgithub.com/Molecule-AI/...togit.moleculesai.app/molecule-ai/.... Cross-repo references to as-yet-unmigrated repos (workspace-template-hermes, mcp-claude-channel, plugin-github-app-auth) use the URL form, since their Go module paths remain on github.com until their own migration PRs land.internal/lint/import_path_lint_test.go— structural test rejecting future references. Same template as the other three migration PRs.Cross-repo dependency: molecule-ai-plugin-gh-identity (allowlisted)
workspace-server/go.modrequiresgithub.com/Molecule-AI/molecule-ai-plugin-gh-identity v0.0.0-...andcmd/server/main.goimportsgithub.com/Molecule-AI/molecule-ai-plugin-gh-identity/pluginloader.These two locations are explicitly allowlisted in the lint gate with a documented justification:
Follow-up sequencing:
molecule-ai-plugin-gh-identity#3(vanity migration).go.moleculesai.app/plugin/gh-identity(e.g.,v0.1.0).go getresolves the vanity path.go get go.moleculesai.app/plugin/gh-identity@v0.1.0, updatecmd/server/main.goimport, drop the two allowlist entries.Test plan
go build ./...— clean for both modulesgo test ./...— green except two pre-existing failures (verified on baselinemain):TestStartSweeper_RecordsMetricsOnSuccess— flaky-on-suite timing test (passes when run in isolation; fails when other tests have been mutating sweeper state). Not migration-caused.TestLocalResolver_BubblesUpCopyFailure— relies on filesystem permissions to test that a copy fails when destination is read-only; on root-owned operator host all writes succeed regardless. Not migration-caused.Both reproduce identically on baseline pre-migration; not regressions of this PR.
.goand.mdcanaries;go.modallowlist correctly suppresses the legitimate cross-repo dep ref while still flagging unrelated additions.Backwards compatibility
-ldflags "-X go.moleculesai.app/core/platform/internal/buildinfo.GitSHA=..."injects buildinfo correctly because the path matches the module declaration.Security
No new untrusted input, auth, or data flows. Pure identifier rename + read-only filesystem-walk lint test. The lint gate explicitly does not exec, parse, or evaluate file contents — only substring-matches a fixed deny list.
Parked follow-ups
controlplane#31—TestBuildTenantUserDataSM_CloudflaredUnitIsValidSystemdshould be infra-independent (filed during the cp migration; same test-infra brittleness class).molecule-ai-plugin-gh-identity#3merges + tag cut.TestStartSweeper_RecordsMetricsOnSuccess,TestLocalResolver_BubblesUpCopyFailure) — pre-#71 and not blocking; should be fixed in a separate batch following the same pattern as cp#31.🤖 Generated with Claude Code
Migrates the two Go modules under molecule-core off the dead github.com/Molecule-AI/molecule-monorepo/... identity onto the vanity host go.moleculesai.app. Also fixes the historical naming inconsistency where the Gitea repo is molecule-core but the Go module path said molecule-monorepo. Module changes: - workspace-server/go.mod: github.com/Molecule-AI/molecule-monorepo/platform -> go.moleculesai.app/core/platform - tests/harness/cp-stub/go.mod: github.com/Molecule-AI/molecule-monorepo/tests/harness/cp-stub -> go.moleculesai.app/core/tests/harness/cp-stub Surfaces touched - 174 *.go files (374 import lines) — every import under workspace-server/ + tests/harness/cp-stub/ - 2 Dockerfiles (workspace-server/Dockerfile + Dockerfile.tenant) — -ldflags strings updated in lockstep with the module rename so buildinfo.GitSHA injection still resolves correctly - README + docs + scripts + comment URLs to git.moleculesai.app form - NEW workspace-server/internal/lint/import_path_lint_test.go — structural lint gate rejecting future github.com/Molecule-AI/ or Molecule-AI/molecule-monorepo references. Identical template to the other migration PRs (plugin-gh-identity#3, molecule-cli#2, molecule-controlplane#32). Cross-repo dep allowlist (documented in lint gate) workspace-server requires molecule-ai-plugin-gh-identity, whose own vanity migration is PR molecule-ai-plugin-gh-identity#3. Until that PR merges + a tag is cut at go.moleculesai.app/plugin/gh-identity, the two locations referencing the legacy github.com path (workspace-server/go.mod require, cmd/server/main.go import) remain allowlisted. Follow-up PR drops the allowlist + updates both refs in one shot once gh-identity is fully migrated. Test plan - go build ./... clean for both modules - go test ./... green except two pre-existing failures (TestStartSweeper_RecordsMetricsOnSuccess flaky-on-suite, TestLocalResolver_BubblesUpCopyFailure relies on read-only fs perms but runs as root on operator host) — both reproduce identically on baseline main pre-migration; NOT regressions of this PR - Mutation-tested: lint gate fails on canaries in .go + .md; allowlist correctly suppresses cross-repo dep references in go.mod while still flagging unrelated additions Open dependency - go.moleculesai.app responder must be deployed before fresh-clone external builds resolve the vanity path. Existing CI / Docker builds ride pinned go.sum + self-referential module path + responder is not on critical path for those. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Closing as stale during 2026-05-09 triage. This PR is on
migrate/issue-71-vanity-importsand shows mergeable=False due to base-branch conflicts; it has been sitting for ~1+ session cycle without resolution.Per
feedback_close_on_user_visible_not_merge: closing rather than letting it accumulate. The vanity-import migration work is tracked in task #213 (Cloudflare Worker + DNS for go.moleculesai.app); reopen + rebase if/when picked up.— claude-ceo-assistant (triage)
Pull request closed