mirror of
https://github.com/block/buzz.git
synced 2026-10-28 13:01:10 +00:00
Merge origin/main and update Goose GDK
Bring the draft branch to current Buzz main, update Goose/GDK to 1.48, preserve the extracted model catalog while porting Databricks filtering, and ensure capped tool calls do not remain in reply-guard history. Run all buzz-agent targets in the unit gate. Co-authored-by: Michael Neale <michael.neale@gmail.com> Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# Uninstalls stale worktree-suffixed Buzz debug builds from booted iOS
|
||||
# simulators and connected Android devices/emulators. Production installs
|
||||
# (com.buzz.buzzMobile / xyz.block.buzz.mobile, no suffix) are never touched:
|
||||
# only identifiers with a worktree suffix appended after the production id
|
||||
# are matched. Run `just mobile-clean` (or this script directly); pass
|
||||
# --dry-run to list what would be removed without uninstalling.
|
||||
# simulators and connected Android devices/emulators. Unsuffixed app installs
|
||||
# (`xyz.block.buzz.dogfood.mobile` and `xyz.block.buzz.mobile`) are never
|
||||
# touched. Only identifiers with a worktree suffix appended after the dogfood
|
||||
# or production id are matched. Run `just mobile-clean` (or this script
|
||||
# directly); pass --dry-run to list what would be removed without uninstalling.
|
||||
set -euo pipefail
|
||||
|
||||
ios_prefix="com.buzz.buzzMobile."
|
||||
ios_prefix="xyz.block.buzz.dogfood.mobile."
|
||||
android_prefix="xyz.block.buzz.mobile."
|
||||
|
||||
dry_run=0
|
||||
|
||||
@@ -75,7 +75,7 @@ case "$android_slug" in
|
||||
[0-9]*) android_slug="w_$android_slug" ;;
|
||||
esac
|
||||
|
||||
ios_bundle_id="com.buzz.buzzMobile.${ios_slug}"
|
||||
ios_bundle_id="xyz.block.buzz.dogfood.mobile.${ios_slug}"
|
||||
android_app_name="${BUZZ_ANDROID_DEBUG_APP_NAME:-Buzz (${label})}"
|
||||
android_suffix="${BUZZ_ANDROID_DEBUG_ID_SUFFIX:-.${android_slug}}"
|
||||
|
||||
|
||||
@@ -11,6 +11,20 @@
|
||||
"gpt-",
|
||||
"kimi-"
|
||||
],
|
||||
"_comment_label_family_tokens": "Prefix tokens used ONLY by databricks_registry_label (and its TS mirror) to strip catalog/endpoint prefixes off Unity Catalog FQN and goose- alias ids before matching a curated display label. Deliberately SEPARATE from family_tokens: label stripping is a discovery-only display concern, while family_tokens drives capability resolution in resolve() for every provider. Adding a family marker here humanizes its UC ids without altering any model's resolved capability profile.",
|
||||
"label_family_tokens": [
|
||||
"claude-",
|
||||
"gpt-",
|
||||
"kimi-",
|
||||
"gemini-",
|
||||
"deepseek-",
|
||||
"glm-",
|
||||
"grok-",
|
||||
"llama-",
|
||||
"qwen",
|
||||
"gemma-",
|
||||
"inkling"
|
||||
],
|
||||
"family_rules": [
|
||||
{
|
||||
"id": "anthropic-manual-budget-claude3",
|
||||
@@ -880,6 +894,335 @@
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-1-flash-image",
|
||||
"registry_label": "Gemini 3.1 Flash Image",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "No model-level entry for gemini-3-1-flash-image exists under any provider in the pinned models.dev payload; there is genuinely no upstream reasoning evidence to reconcile. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): no providers.*.models[*] key matches gemini-3-1-flash-image."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-5-flash",
|
||||
"registry_label": "Gemini 3.5 Flash",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party google model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev google reasoning_options effort: minimal|low|medium|high",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The Unity Catalog endpoint uses the hyphenated stem gemini-3-5-flash, while the pinned models.dev first-party google entry uses the dotted model id gemini-3.5-flash and advertises effort [minimal, low, medium, high]. Per the Kimi-K3 precedent, adopt this model-level effort evidence despite the spelling difference and the exact endpoint being absent from the models.dev databricks catalog. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.google.models[\"gemini-3.5-flash\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"minimal\",\"low\",\"medium\",\"high\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-5-flash-lite",
|
||||
"registry_label": "Gemini 3.5 Flash Lite",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party google model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev google reasoning_options effort: minimal|low|medium|high",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The Unity Catalog endpoint uses the hyphenated stem gemini-3-5-flash-lite, while the pinned models.dev first-party google entry uses the dotted model id gemini-3.5-flash-lite and advertises effort [minimal, low, medium, high]. Per the Kimi-K3 precedent, adopt this model-level effort evidence despite the spelling difference and the exact endpoint being absent from the models.dev databricks catalog. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.google.models[\"gemini-3.5-flash-lite\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"minimal\",\"low\",\"medium\",\"high\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-6-flash",
|
||||
"registry_label": "Gemini 3.6 Flash",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party google model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev google reasoning_options effort: minimal|low|medium|high",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The Unity Catalog endpoint uses the hyphenated stem gemini-3-6-flash, while the pinned models.dev first-party google entry uses the dotted model id gemini-3.6-flash and advertises effort [minimal, low, medium, high]. Per the Kimi-K3 precedent, adopt this model-level effort evidence despite the spelling difference and the exact endpoint being absent from the models.dev databricks catalog. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.google.models[\"gemini-3.6-flash\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"minimal\",\"low\",\"medium\",\"high\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-pro-image",
|
||||
"registry_label": "Gemini 3 Pro Image",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party google model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev google reasoning_options effort: low|high",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party google entry advertises effort [low, high]. Per the Kimi-K3 precedent, adopt model-level effort evidence despite endpoint absence. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.google.models[\"gemini-3-pro-image\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"low\",\"high\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-deepseek-v4-flash-0731",
|
||||
"registry_label": "DeepSeek V4 Flash",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party deepseek model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev deepseek reasoning_options effort: low|high|max",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party deepseek entry advertises a reasoning toggle plus effort [low, high, max]. Per the Kimi-K3 precedent, adopt the model-level effort list despite endpoint absence. The toggle is not representable on the MLflow Chat request schema (reasoning_effort only), so thinking_mode stays none and default_effort is null — mirroring the kimi-k3 record.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.deepseek.models[\"deepseek-v4-flash\"].reasoning_options=[{\"type\":\"toggle\"},{\"type\":\"effort\",\"values\":[\"low\",\"high\",\"max\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-deepseek-v4-pro-0813",
|
||||
"registry_label": "DeepSeek V4 Pro",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party deepseek model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev deepseek reasoning_options effort: high|max",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party deepseek entry advertises a reasoning toggle plus effort [high, max]. Per the Kimi-K3 precedent, adopt the model-level effort list despite endpoint absence. The toggle is not representable on the MLflow Chat request schema (reasoning_effort only), so thinking_mode stays none and default_effort is null — mirroring the kimi-k3 record.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.deepseek.models[\"deepseek-v4-pro\"].reasoning_options=[{\"type\":\"toggle\"},{\"type\":\"effort\",\"values\":[\"high\",\"max\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-glm-5-3-flash",
|
||||
"registry_label": "GLM-5.3 Flash",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party Z.AI model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev zai reasoning_options effort: low|high|max",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party Z.AI entry glm-5.3-flash advertises effort [low, high, max]. Per the Kimi-K3 precedent, adopt the model-level effort list despite endpoint absence. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.zai.models[\"glm-5.3-flash\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"low\",\"high\",\"max\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-grok-4-6",
|
||||
"registry_label": "Grok 4.6",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party xAI model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev xai reasoning_options effort: low|medium|high|xhigh",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party xAI entry grok-4.6 advertises effort [low, medium, high, xhigh]. Per the Kimi-K3 precedent, adopt the model-level effort list despite endpoint absence. Databricks serves via MLflow Chat (reasoning_effort only), so thinking_mode stays none and default_effort is null.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.xai.models[\"grok-4.6\"].reasoning_options=[{\"type\":\"effort\",\"values\":[\"low\",\"medium\",\"high\",\"xhigh\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-llama-4-maverick",
|
||||
"registry_label": "Llama 4 Maverick",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "Llama 4 Maverick is a non-reasoning model: all 26 model-level records across providers in the pinned payload report reasoning=false with no reasoning_options. There is no effort evidence to adopt. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): every providers.*.models[*] whose id contains \"llama-4-maverick\" (e.g. meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8) has reasoning=false, reasoning_options=null."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-meta-llama-3-1-8b-instruct",
|
||||
"registry_label": "Llama 3.1 8B Instruct",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "Llama 3.1 8B Instruct is a non-reasoning model: the consensus across model-level records in the pinned payload is reasoning=false with no reasoning_options (a single reseller, pioneer, is an outlier advertising effort [low, medium, high]). There is no first-party or consensus effort evidence to adopt. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.*.models[*] ids containing \"llama-3.1-8b\" report reasoning=false with reasoning_options=null across essentially all providers (huggingface, nvidia, groq, openrouter, kilo, ...); only pioneer/meta-llama/Llama-3.1-8B-Instruct is reasoning=true."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-meta-llama-3-3-70b-instruct",
|
||||
"registry_label": "Llama 3.3 70B Instruct",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "Llama 3.3 70B Instruct is a non-reasoning model: every model-level record across ~50 providers in the pinned payload reports reasoning=false with no effort values (one reseller, berget, sets reasoning=true but with an empty reasoning_options set, i.e. no effort list). There is no effort evidence to adopt. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.*.models[*] ids containing \"llama-3.3-70b\" report reasoning=false, reasoning_options=null across all providers; providers.berget.models[\"meta-llama/Llama-3.3-70B-Instruct\"] is reasoning=true with reasoning_options=[]."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-qwen3-next-80b-a3b-instruct",
|
||||
"registry_label": "Qwen3 Next 80B A3B Instruct",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "The first-party alibaba entry qwen3-next-80b-a3b-instruct reports reasoning=false with no reasoning_options — the -instruct variant is the non-reasoning sibling of qwen3-next-80b-a3b-thinking. There is no effort evidence to adopt for the instruct model. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.alibaba.models[\"qwen3-next-80b-a3b-instruct\"].reasoning=false, reasoning_options=null (contrast qwen3-next-80b-a3b-thinking which is reasoning=true with budget_tokens)."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-qwen35-122b-a10b",
|
||||
"registry_label": "Qwen3.5 122B A10B",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "The first-party alibaba entry qwen3.5-122b-a10b expresses reasoning only as a toggle plus budget_tokens — NOT an effort-level selector. Neither axis is representable on the Databricks MLflow Chat transport (reasoning_effort only), mirroring the claude-opus-4-7 budget_tokens precedent where no effort divergence is reconciled. Resellers that do advertise effort sets conflict sharply (kilo [none, high]; tensorx [none..max]; neon [none, low, medium, high]), so there is no consistent effort list to adopt. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.alibaba.models[\"qwen3.5-122b-a10b\"].reasoning_options=[{\"type\":\"toggle\"},{\"type\":\"budget_tokens\"}]; reseller effort sets diverge (kilo=[none,high], tensorx=[none,minimal,low,medium,high,xhigh,max], neon=[none,low,medium,high])."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemma-3-12b",
|
||||
"registry_label": "Gemma 3 12B",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"_provenance": "all axes materialized from provider fallback (databricks_v2/concrete_unknown)",
|
||||
"_source": "registry_labels",
|
||||
"_reconciliation": "keep-fallback",
|
||||
"_reconciliation_note": "Gemma 3 12B is a non-reasoning model: every model-level record across providers in the pinned payload reports reasoning=false with no reasoning_options. There is no effort evidence to adopt. Retain the databricks_v2 concrete_unknown fallback profile.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.*.models[*] ids containing \"gemma-3-12b\" (e.g. google/gemma-3-12b-it) all report reasoning=false, reasoning_options=null."
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-inkling",
|
||||
"registry_label": "Inkling",
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"_provenance": "supported_efforts+thinking_mode+default_effort+normalization_policy: adopted from models.dev first-party Thinking Machines model-level evidence (Kimi-K3 precedent); databricks_v2_wire_route+label: registry_labels",
|
||||
"source": "models.dev thinkingmachines reasoning_options effort: low|medium|high|xhigh|max",
|
||||
"_reconciliation": "adopt",
|
||||
"_reconciliation_note": "The exact databricks endpoint is absent from the models.dev databricks catalog, but the first-party Thinking Machines entry Inkling advertises a reasoning toggle plus effort [low, medium, high, xhigh, max]. Per the Kimi-K3 precedent, adopt the model-level effort list despite endpoint absence. The toggle is not representable on the MLflow Chat request schema (reasoning_effort only), so thinking_mode stays none and default_effort is null — mirroring the kimi-k3 record.",
|
||||
"_reconciliation_doc": "https://models.dev/api.json (pinned SHA-256 9266003029c4ea265e923637826211f597db08e8f0f40123aad8547411029238): providers.thinkingmachines.models[\"thinkingmachines/Inkling\"].reasoning_options=[{\"type\":\"toggle\"},{\"type\":\"effort\",\"values\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"]}]"
|
||||
},
|
||||
{
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gpt-5",
|
||||
|
||||
@@ -2266,5 +2266,442 @@
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"_group": "Databricks UC model-family humanization probes (#6918 follow-up)",
|
||||
"_note": "Exact-record and UC-FQN strip probes for the Gemini/DeepSeek/GLM/Grok/Llama/Qwen/Gemma/Inkling families surfaced by UC discovery."
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemini-3-1-flash-image-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-1-flash-image",
|
||||
"_note": "Probes the Gemini 3.1 Flash Image endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Gemini 3.1 Flash Image"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemini-3-5-flash-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-5-flash",
|
||||
"_note": "Probes the Gemini 3.5 Flash endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Gemini 3.5 Flash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemini-3-5-flash-lite-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-5-flash-lite",
|
||||
"_note": "Probes the Gemini 3.5 Flash Lite endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Gemini 3.5 Flash Lite"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemini-3-6-flash-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-6-flash",
|
||||
"_note": "Probes the Gemini 3.6 Flash endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Gemini 3.6 Flash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemini-3-pro-image-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemini-3-pro-image",
|
||||
"_note": "Probes the Gemini 3 Pro Image endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Gemini 3 Pro Image"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-deepseek-v4-flash-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-deepseek-v4-flash-0731",
|
||||
"_note": "Probes the DeepSeek V4 Flash endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "DeepSeek V4 Flash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-deepseek-v4-pro-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-deepseek-v4-pro-0813",
|
||||
"_note": "Probes the DeepSeek V4 Pro endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "DeepSeek V4 Pro"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-glm-5-3-flash-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-glm-5-3-flash",
|
||||
"_note": "Probes the GLM-5.3 Flash endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"high",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "GLM-5.3 Flash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-grok-4-6-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-grok-4-6",
|
||||
"_note": "Probes the Grok 4.6 endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Grok 4.6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-llama-4-maverick-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-llama-4-maverick",
|
||||
"_note": "Probes the Llama 4 Maverick endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Llama 4 Maverick"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-meta-llama-3-1-8b-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-meta-llama-3-1-8b-instruct",
|
||||
"_note": "Probes the meta-llama record; the llama- token strips the meta- prefix identically for record and query.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Llama 3.1 8B Instruct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-meta-llama-3-3-70b-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-meta-llama-3-3-70b-instruct",
|
||||
"_note": "Probes the meta-llama 3.3 70B record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Llama 3.3 70B Instruct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-qwen3-next-80b-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-qwen3-next-80b-a3b-instruct",
|
||||
"_note": "Probes the Qwen3 Next 80B record; the bare qwen token strips on a hyphen boundary.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Qwen3 Next 80B A3B Instruct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-qwen35-122b-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-qwen35-122b-a10b",
|
||||
"_note": "Probes the Qwen3.5 122B record; the bare qwen token strips a qwen35 stem with no separator.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Qwen3.5 122B A10B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-gemma-3-12b-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-gemma-3-12b",
|
||||
"_note": "Probes the Gemma 3 12B endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": "Gemma 3 12B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-inkling-exact-record-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "databricks-inkling",
|
||||
"_note": "Probes the Inkling endpoint record and label.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh",
|
||||
"max"
|
||||
],
|
||||
"default_effort": null,
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": "Inkling"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-uc-fqn-gemini-3-5-flash-strip-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "system.ai.gemini-3-5-flash",
|
||||
"_note": "Probes strip parity on a system.ai. UC FQN carrying the gemini- token (resolve carries no label; the alias label path is unit-tested).",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-uc-fqn-meta-llama-strip-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "system.ai.meta-llama-3-3-70b-instruct",
|
||||
"_note": "Probes strip parity on a UC FQN where the llama- token strips through meta-.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-uc-goose-deepseek-strip-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "data_workflow_tools.goose.goose-deepseek-v4-pro-0813",
|
||||
"_note": "Probes strip parity on a goose- prefixed UC FQN carrying the deepseek- token.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dbv2-uc-fqn-inkling-strip-probe",
|
||||
"provider": "databricks_v2",
|
||||
"raw_model_id": "system.ai.inkling",
|
||||
"_note": "Probes strip parity on a UC FQN carrying the bare inkling token.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"none",
|
||||
"minimal",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"xhigh"
|
||||
],
|
||||
"default_effort": "medium",
|
||||
"databricks_v2_wire_route": "mlflow-chat",
|
||||
"normalization_policy": "openai-clamp-max-to-xhigh",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"_group": "Label/capability token isolation probes (#6955 review pass 1)",
|
||||
"_note": "Pins that label_family_tokens (the UC-humanization superset) never leaks into capability resolve(): capability stripping still uses only claude-/gpt-/kimi-, so a label token appearing before a gpt- marker must NOT displace the gpt-5-pro exact profile."
|
||||
},
|
||||
{
|
||||
"id": "isolation-openai-gemini-gpt-5-pro-probe",
|
||||
"provider": "openai",
|
||||
"raw_model_id": "tenant-gemini-gpt-5-pro",
|
||||
"_note": "The gemini- label token must not strip here; capability resolve keeps the gpt-5-pro high-only profile.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"high"
|
||||
],
|
||||
"default_effort": "high",
|
||||
"databricks_v2_wire_route": "not-applicable",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "isolation-openai-qwenchanted-gpt-5-pro-probe",
|
||||
"provider": "openai",
|
||||
"raw_model_id": "tenant-qwenchanted-gpt-5-pro",
|
||||
"_note": "The bare qwen label token must not fire mid-segment; capability resolve keeps the gpt-5-pro high-only profile.",
|
||||
"expect": {
|
||||
"thinking_mode": "none",
|
||||
"supported_efforts": [
|
||||
"high"
|
||||
],
|
||||
"default_effort": "high",
|
||||
"databricks_v2_wire_route": "not-applicable",
|
||||
"normalization_policy": "openai-standard",
|
||||
"registry_label": null
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
-- Attach partition child tables after pgschema apply.
|
||||
-- Reconcile schema details that pgschema does not preserve.
|
||||
--
|
||||
-- pgschema currently emits existing partition children as standalone CREATE TABLE
|
||||
-- statements when applying schema/schema.sql in CI. The tables exist, but they
|
||||
-- are not attached to their partitioned parents, so inserts into events or
|
||||
-- delivery_log fail with "no partition of relation ... found for row". Keep this
|
||||
-- idempotent: raw psql/schema.sql already attaches these partitions, while
|
||||
-- pgschema-created schemas need this repair step.
|
||||
-- pgschema reconciles DDL, but it does not execute seed DML or preserve every
|
||||
-- table storage parameter from schema/schema.sql. It also currently emits
|
||||
-- partition children as standalone CREATE TABLE statements. Every pgschema
|
||||
-- apply caller must run this idempotent script so fresh bootstraps converge on
|
||||
-- the same live database contract as migration-managed databases.
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
@@ -197,3 +196,32 @@ BEGIN
|
||||
FOR VALUES FROM ('2026-07-01') TO (MAXVALUE);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- pgschema reconciles DDL but does not apply seed DML or table storage
|
||||
-- parameters from schema/schema.sql. Restore those parts of the desired-state
|
||||
-- contract explicitly and fail the bootstrap if the live catalog disagrees.
|
||||
ALTER TABLE replica_heartbeat SET (vacuum_truncate = false);
|
||||
|
||||
INSERT INTO replica_heartbeat (id) VALUES (1)
|
||||
ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_class AS relation
|
||||
JOIN pg_namespace AS namespace ON namespace.oid = relation.relnamespace
|
||||
WHERE namespace.nspname = current_schema()
|
||||
AND relation.relname = 'replica_heartbeat'
|
||||
AND COALESCE(
|
||||
relation.reloptions @> ARRAY['vacuum_truncate=false']::text[],
|
||||
false
|
||||
)
|
||||
) THEN
|
||||
RAISE EXCEPTION 'replica_heartbeat must disable vacuum truncation after pgschema apply';
|
||||
END IF;
|
||||
|
||||
IF (SELECT count(*) FROM replica_heartbeat WHERE id = 1) <> 1 THEN
|
||||
RAISE EXCEPTION 'replica_heartbeat must contain its singleton row after pgschema apply';
|
||||
END IF;
|
||||
END $$;
|
||||
@@ -89,7 +89,7 @@ export PGSCHEMA_PLAN_HOST=localhost PGSCHEMA_PLAN_PORT=5432 PGSCHEMA_PLAN_DB="${
|
||||
export PGSCHEMA_PLAN_USER=buzz PGSCHEMA_PLAN_PASSWORD=buzz_dev
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
docker exec -i -e PGPASSWORD=buzz_dev buzz-postgres \
|
||||
psql -U buzz -d "${DB_NAME}" -v ON_ERROR_STOP=1 < scripts/attach-schema-partitions.sql
|
||||
psql -U buzz -d "${DB_NAME}" -v ON_ERROR_STOP=1 < scripts/reconcile-schema-after-pgschema.sql
|
||||
BUZZ_DB_NAME="${DB_NAME}" BUZZ_COMMUNITY_HOST="${COMMUNITY_HOST}" ./scripts/setup-desktop-test-data.sh
|
||||
docker exec buzz-redis redis-cli -n "${REDIS_DB}" FLUSHDB >/dev/null
|
||||
phase database "${phase_start}"
|
||||
|
||||
@@ -98,7 +98,7 @@ export PGSCHEMA_PLAN_HOST=localhost PGSCHEMA_PLAN_PORT=${PG_PORT}
|
||||
export PGSCHEMA_PLAN_DB=buzz PGSCHEMA_PLAN_USER=buzz PGSCHEMA_PLAN_PASSWORD=buzz_dev
|
||||
export PGHOST=localhost PGPORT=${PG_PORT} PGUSER=buzz PGDATABASE=buzz
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
psql_h < scripts/attach-schema-partitions.sql
|
||||
psql_h < scripts/reconcile-schema-after-pgschema.sql
|
||||
ok "Schema applied"
|
||||
|
||||
# ── Deployment community + channels + members ────────────────────────────────
|
||||
|
||||
@@ -105,7 +105,7 @@ export PGSCHEMA_PLAN_PASSWORD=buzz_dev
|
||||
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
docker exec -i -e PGPASSWORD="${PGPASSWORD}" buzz-postgres \
|
||||
psql -U "${PGUSER}" -d "${PGDATABASE}" -v ON_ERROR_STOP=1 < scripts/attach-schema-partitions.sql
|
||||
psql -U "${PGUSER}" -d "${PGDATABASE}" -v ON_ERROR_STOP=1 < scripts/reconcile-schema-after-pgschema.sql
|
||||
ok "Schema applied"
|
||||
|
||||
# ── Seed the deployment community ────────────────────────────────────────────
|
||||
|
||||
@@ -64,7 +64,7 @@ out="$("$wt/scripts/mobile-worktree-overrides.sh")"
|
||||
ios="$wt/mobile/ios/Flutter/WorktreeOverrides.xcconfig"
|
||||
android="$wt/mobile/android/worktree.properties"
|
||||
[[ -f "$ios" && -f "$android" ]] || fail "worktree must write both override files"
|
||||
grep -q '^BUNDLE_IDENTIFIER = com\.buzz\.buzzMobile\.feature-work-1$' "$ios" \
|
||||
grep -q '^BUNDLE_IDENTIFIER = xyz\.block\.buzz\.dogfood\.mobile\.feature-work-1$' "$ios" \
|
||||
&& pass "iOS bundle identifier keys to the sanitized worktree directory name" \
|
||||
|| fail "iOS bundle identifier must key to the worktree dir, got: $(cat "$ios")"
|
||||
grep -q '^APP_DISPLAY_NAME = Buzz (Fix_Thing-2)$' "$ios" \
|
||||
@@ -86,7 +86,7 @@ printf '%s' "$out" | grep -q 'Worktree Feature_Work-1' \
|
||||
# ── Branch switch in the same worktree: identity stable, label follows ───────
|
||||
git -C "$wt" checkout -q -b "another/branch-name"
|
||||
"$wt/scripts/mobile-worktree-overrides.sh" > /dev/null
|
||||
grep -q '^BUNDLE_IDENTIFIER = com\.buzz\.buzzMobile\.feature-work-1$' "$ios" \
|
||||
grep -q '^BUNDLE_IDENTIFIER = xyz\.block\.buzz\.dogfood\.mobile\.feature-work-1$' "$ios" \
|
||||
&& grep -q '^applicationIdSuffix=\.feature_work_1$' "$android" \
|
||||
&& pass "branch switch keeps the install identity stable (per worktree)" \
|
||||
|| fail "install identity must not change on branch switch"
|
||||
@@ -156,6 +156,9 @@ gradle="$repo_root/mobile/android/app/build.gradle.kts"
|
||||
manifest="$repo_root/mobile/android/app/src/main/AndroidManifest.xml"
|
||||
plist="$repo_root/mobile/ios/Runner/Info.plist"
|
||||
|
||||
grep -q '^BUNDLE_IDENTIFIER = xyz\.block\.buzz\.dogfood\.mobile$' "$debug_xcconfig" \
|
||||
&& pass "Debug.xcconfig defaults to the dogfood bundle identifier" \
|
||||
|| fail "Debug.xcconfig must default to xyz.block.buzz.dogfood.mobile"
|
||||
grep -q 'WorktreeOverrides.xcconfig' "$debug_xcconfig" \
|
||||
&& pass "Debug.xcconfig includes WorktreeOverrides" \
|
||||
|| fail "Debug.xcconfig must include WorktreeOverrides.xcconfig"
|
||||
@@ -166,15 +169,20 @@ if [[ -n "$worktree_line" && -n "$app_line" && "$worktree_line" -lt "$app_line"
|
||||
else
|
||||
fail "Debug.xcconfig must include AppOverrides.xcconfig after WorktreeOverrides.xcconfig"
|
||||
fi
|
||||
grep -q '^ios_prefix="xyz.block.buzz.dogfood.mobile\."$' "$clean_script" \
|
||||
&& pass "cleanup targets the iOS dogfood worktree prefix" \
|
||||
|| fail "cleanup must share the iOS dogfood prefix used by worktree overrides"
|
||||
|
||||
grep -q 'WorktreeOverrides' "$release_xcconfig" \
|
||||
&& fail "Release.xcconfig must not include WorktreeOverrides.xcconfig" \
|
||||
|| pass "Release.xcconfig does not include WorktreeOverrides"
|
||||
grep -q '^BUNDLE_IDENTIFIER = com\.buzz\.buzzMobile$' "$release_xcconfig" \
|
||||
grep -q '^BUNDLE_IDENTIFIER = xyz\.block\.buzz\.mobile$' "$release_xcconfig" \
|
||||
&& pass "Release.xcconfig keeps the production bundle identifier" \
|
||||
|| fail "Release.xcconfig must keep BUNDLE_IDENTIFIER = com.buzz.buzzMobile"
|
||||
|| fail "Release.xcconfig must keep BUNDLE_IDENTIFIER = xyz.block.buzz.mobile"
|
||||
grep -q '^APP_DISPLAY_NAME = Buzz$' "$release_xcconfig" \
|
||||
&& pass "Release.xcconfig keeps the production display name" \
|
||||
|| fail "Release.xcconfig must keep APP_DISPLAY_NAME = Buzz"
|
||||
|
||||
grep -q '<string>$(APP_DISPLAY_NAME)</string>' "$plist" \
|
||||
&& pass "Info.plist display name resolves from build settings" \
|
||||
|| fail "Info.plist CFBundleDisplayName must be \$(APP_DISPLAY_NAME)"
|
||||
|
||||
Reference in New Issue
Block a user