Repository navigation
launch: Cloud-first sign-in, org-secret links, and fixes from a MySQL + Postgres launch - #30
Merged
Merged
Conversation
… + Postgres launch A live launch of a project federating MySQL (UCSC Genome Browser) and PostgreSQL (FlyBase) through spice-launch.sh found gaps in each step. This fixes them and makes Spice.ai Cloud sign-in the first step. - login: sign in, or sign up, with the CLI's device code in two steps an agent can relay: the URL and code at once, then `--wait`. The Cloud path no longer starts with OAuth clients or tokens; those are for unattended use. - OpenAI models default to SCP_OPENAI_API_KEY, the $25 OpenAI credit a new account gets as a platform-managed (unlisted) org secret. - secrets: link org secrets through the Management API instead of reporting them unverified (no fork or portal step), try the link for unlisted platform secrets, prefer an org secret over a local value of the same name, and fail on a secret found nowhere instead of letting the deploy fail. - preflight: list the credential's orgs, and say for each secret reference whether it is local, an org secret, a project secret, or the platform credit. - local: always run, query every dataset and view, and report components whose secrets exist only in Cloud instead of skipping the whole check. - deploy: stop when a federated dataset stays Initializing, deploy a paused project, and accept a deployment whose record stays in_progress once every instance is new, ready, and serving the new spicepod. pause stops a stuck instance from holding source connections. - fire-drill: fall back to memory_working_set where the org cannot use the query_failures template, and copy targets from any launch monitor. - lint: cover mysql_sslmode, word each TLS mode accurately (disable is plaintext, not unverified), and merge repeated notes. - References: MySQL TLS modes (preferred does not fall back to plaintext), the MySQL 5.x/MariaDB metadata stall on servers with thousands of databases, per-dataset connection pools on shared servers, views that wait for every dataset, and per-org monitor template availability. - An eval for a new user federating MySQL and Postgres.
phillipleblanc
approved these changes
Oct 7, 2026
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.
Summary
Tested the
launchskill end to end by launching a Spice.ai Cloud project that federates MySQL and PostgreSQL, fixed what broke or misled along the way, and made Spice.ai Cloud sign-in the first step.Test project:
lukekim/fly-genomics(us-east-1,poc). It joins FlyBase's public PostgreSQL (genes, signaling pathways, disease models; accelerated, refreshed daily) with the UCSC Genome Browser's public MySQL (dm6gene models; federated live) through two cross-source views. An OpenAI model has tools.Final state:
deploy: succeeded in 35 s, with every dataset and the modelReadyand the secret resolved through an org-secret link.verify: 15/16 checks passed. The model answered "which chromosome arm carries the most Hippo pathway genes" with chr2R through the sql tool, which is correct. An MCP session made 8 calls and lost none. p50 was 599 ms and p99 1,354 ms on the cross-source query. The one WARN is the known gzip/OpenAI SDK issue.monitors: 4 created;query_failuresandllm_failuresare unavailable in that org.Changes
Cloud-first sign-in
login: sign in, or sign up, with the CLI's device code, in two steps an agent can relay. It returns the URL and code at once, then--waitconfirms the credential and lists orgs. OAuth clients and tokens are now only for unattended use.SCP_OPENAI_API_KEY, the $25 OpenAI credit a new account gets as a platform-managed org secret.Secrets
secretslinks org secrets through the Management API (PUT /v1/projects/{id}/org-secrets/{name}). It no longer reports themunverifiedor needs a fork or portal step.preflightlists the credential's orgs, and says for each reference whether it is local, an org secret, a project secret, or the platform credit.local
needs_cloud_secret), where before the whole check was skipped.deploy
Initializing(--init-timeout).in_progressonce every instance is new, ready, and serving the new spicepod.pausecommand, so a stuck instance stops holding source connections.fire-drill
memory_working_setwhere the org can't usequery_failures, which left it unable to start before.launch:monitor.lint
mysql_sslmode.disableis plaintext, not just unverified.Docs
preferreddoes not fall back to plaintext).Found in testing; to report upstream (not fixed here)
information_schema.TABLES ⨝ COLUMNScomment query with no timeout. On MySQL 5.x/MariaDB 10.0 it scans every database the user can see.Initializingforever. Its US mirror failed withDisk full (/tmp/#sql…).Errorkeeps every view from registering, including views that don't use it.PostgreSQL connection failed. db errororTimed out in bb8.WARN Ignoring parameter sort_columns: must be prefixed with arrow_appears when the spicepod sets nosort_columns.in_progressfor good, while its instance was ready and serving (deployment 43228).spice cloud login -o json subscription --deviceprints no URL or code, because the announcement is suppressed for JSON output, so it can never complete. The CLI also has nopausecommand.Not exercised live
SCP_OPENAI_API_KEYsuccessfully. The test org predates the credit, so the link returns 404, which the code reports asmissing.fire-drillrun, which needs the account owner's consent to send a real alert.Test plan
make check test-distribution release-previewpreflight,local,create,secrets,deploy,verify,monitors,pause, andstatusagainstlukekim/fly-genomicslocal), FlyBase pool exhaustion (deploy stops with the datasets in Error),SCP_OPENAI_API_KEYmissingSCP_OPENAI_API_KEYlinksfire-drillon an org withoutquery_failures