Spaces:
Running
Running
Commit History
22 days ago
-
Merge remote-tracking branch 'hf-test/main' into claude/custom-mcp-spotter-demo-125da8
8aebc9f -
feat(demo-pack): custom MCP demo section (GitHub issues β Spotter)β
After every successful run the Demo Pack now carries a "Custom MCP Demo" section: suggested repo name, 4 LLM-generated GitHub issues grounded in the deployed model's real column names, the fine-grained token recipe, the Spotter connector settings, the two Spotter prompts, and the cleanup reminder. The SE creates the repo and pastes the issues; DemoPrep holds no GitHub token. - prompts.py: new `custom_mcp_issues` stage (JSON array of issues) - chat_interface.py: custom_mcp_repo_name(), parse_custom_mcp_issues(), render_custom_mcp_demo_section(); controller methods _extract_ddl_columns(), _generate_custom_mcp_issues(), _build_custom_mcp_section(); wired into the Demo Pack block - Side fix: the Spotter Viz story's inline DDL column dedupe always returned [] (`not (seen.add(c) or c in seen)`), so stories never saw real column names. Both generators now share _extract_ddl_columns(). - tests/test_custom_mcp_demo_pack.py: 32 unit tests; one live LLM round trip verified separatelyβ¦fc2b1f9
-
Deploy feature/golden-demo-v3 (2b65dd2826ea97ea4be1a6eb8984b9396d95af83) to the test app Space as one commitβ
Squashed onto hf-test/main because HF's pre-receive hook rejects binary blobs anywhere in pushed history, and the feature branch's history carries two PNGs (stripped from its tree in 2b65dd2826ea97ea4be1a6eb8984b9396d95af83). This commit's tree == the feature branch tree. Contents: golden demo v3 β 4-KPI standard w/ sparklines, state GEO_AREA, three tabs (Showcase = Muze + GRID_TABLE + heatmap + Demo Guide), blank-tile repair, humanized titles fix, grain enforcement, lab live-verification. See sprint_2026_04.md and dev_notes/DECISIONS_for_boone_2026_09_02.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>f7377ae
-
Merge remote-tracking branch 'hf-test/main' into spike/portal-template
4d97c9f -
feat(logging): capture full run payload in session_logs on every runβ
Every run (App tab + Chat tab) now logs its complete payload to Supabase session_logs in meta.payload of the 'run started' events: - raw GO form inputs (controller._run_payload set in defined_go) - resolved company/use case/vertical/line/function/context - secret-redacted settings snapshot Attached in _create_run_loggers() (guaranteed even when a run dies before research) and again in run_research_streaming() once fully resolved. New sanitize_payload() in session_logger.py redacts key/secret/password/ token/credential/auth values and truncates >2000-char strings; 5 tests in tests/test_run_payload_logging.py. Chat-tab runs reset stale App-tab _run_source/_run_payload at initialization. Query guide in dev_notes/logging_channels.md (local docs, not tracked). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>63e8227 -
Merge remote-tracking branch 'hf-test/main' into developβ
# Conflicts: # sprint_2026_04.md6bb7908 -
Merge branch 'claude/youthful-lederberg-e31760' into developβ
# Conflicts: # chat_interface.pydc44f67 -
feat: post-load data-quality gate for zero/null measure columnsβ
Profile every MEASURE column after each Snowflake load (both dataset-first and legacy paths) via INFORMATION_SCHEMA + per-table aggregates. Fail the run loudly, naming the columns, when any measure is entirely zero/null (recurring Yodeck/Triumph zero-measure defect). Mostly-zero and empty-table cases surface as warnings in the completion panel and session_logs meta. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>fa79ccd
-
perf(deploy): scope TS connection to demo DB + monthly-rotating database (250s -> <1s table imports)β
Root cause of the ~250s-per-call table TML imports (found 2026-08-10, corrects the July "server-side, not reducible" conclusion): ThoughtSpot table import scans all external metadata VISIBLE TO THE CONNECTION. Our connections had no database property, so every import scanned ~507 Snowflake DBs. Measured on the same instance with the same trivial table: unscoped 246s, scoped to DEMOBUILD (1,003 schemas of demo debris) 33s, scoped to a fresh tiny DB 0.7s. Prod secloud showed identical ~250s unscoped β never instance-specific. - thoughtspot_deployer: create_connection_tml/create_connection_with_reconcile now REQUIRE a database and emit a `database` property in the connection TML. - snowflake_auth: get_demo_database() -> <SNOWFLAKE_DATABASE>_<YYYY_MM> (memoized per process); ensure_demo_database() creates it on connect. Session params + cdw_connector + env injection (supabase_client) all use the rotated DB so write and deploy paths agree. Admin setting stays the base name. - chat_β¦21ee86d
-
merge: unify MCP (async TML import + concurrency + mcp_server) into integrationβ
- keep app README frontmatter (gradio) on trunk; MCP docker frontmatter stays on hf-mcp-deploy - build_demo.py: blueprint LLM cap/timeout reconciled to 16384 / 300s (superset of both sides) - adds mcp_server.py, tests/e2e_mcp.py, MCP deps; async-only TML import pathc3e3f8b
-
feat(mcp): real-time status via deploy progress bridge + return DDL earlyβ
- Progress bridge: _run_thoughtspot_deployment gains an optional on_progress hook chained onto its internal progress_callback; the MCP passes one that updates _set_progress, so status.current_build.detail/phase track LIVE (importing tables -> creating model -> creating liveboard) instead of freezing between the generator's sparse yields. [async] lines map to an "importing tables" phase. App/test callers pass no on_progress (default None) β unaffected. - DDL returned early: _run_build stashes ddl_text in _current_build the moment run_ddl_creation returns (~5 min in) and includes it in last_build, so a caller polling status() gets the schema well before the ~15-min TS deploy finishes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>cbd0efa
-
fix: honor TS Environment dropdown on every GO/message, not just firstβ
The App GO handler (defined_go) and chat send_message only applied the selected TS environment when a NEW controller was created (if controller is None). On a reused session β e.g. the e2e runs all 8 demos on one login β the controller already exists, so the env pick was silently dropped and the deploy fell back to the default (default_ts_env='secloud - primary' / se-cloud). That's why switching the dropdown to 'sebe - se' had no effect and every test still hit se-cloud. Move the env application out of the controller-creation branch so the selected environment (URL + trusted-auth key) is applied on every GO/message. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>612db3c
-
Wire single blueprint pipeline; fix engine formula fidelity + insight directionβ
Replace the keyword-router generation path with one build_demo() pipeline: research -> LLM-authored DemoBlueprint -> deterministic BlueprintEngine -> validation -> derived DDL. No mode flag, no fallback. Engine fixes: - Compute derived measures from formatted (stored) base values so rows satisfy their formulas under the validator's re-check (no formula errors). - Never clamp derived values; a negative margin/inventory stays faithful. - Sign-aware sensitivity analysis maps an insight on a derived measure to the base that moves the metric the promised direction (ratios no longer invert; products scale by magnitude, not magnitude squared). Adds preflight + blueprint + McKesson regression tests and migration docs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>3993fe3
-
Log deployed code version
mike boone8cea964 -
Improve backup liveboard path logging
mike boone5f0f576
-
Honor explicit custom dataset contracts
mike boonea6d4bca
-
Merge remote-tracking branch 'origin/develop' into develop
mike boone8997cc3 -
test: harden e2e quality diagnostics
mike boone8e5d114 -
Merge remote-tracking branch 'hf-test/main' into developβ
mike boone# Conflicts: # thoughtspot_deployer.pydb6ab4f -
fix: harden dataset and ThoughtSpot deployment recovery
mike booneb210533 -
fix: wait for delayed ThoughtSpot table imports
mike boone7f49e13
-
fix: recover ThoughtSpot imports after gateway timeouts
mike boonea61ad4f
-
fix: add semantic-safe dataset preflight
mike boone6723ca6 -
fix: enforce demo-safe data and liveboard layout
mike boonec3f1d91 -
fix: improve run diagnostics and ts recovery
mike boonee758f65
-
fix: clarify dataset-first progress and import json scope
mike boone94f1813
-
Reapply "fix: temporarily force sonnet model failover"β
mike booneThis reverts commit 3d955ee6f0ab66f2b42ccf8d65faa3646db9bcab.fa01ae7 -
Revert "fix: temporarily force sonnet model failover"β
mike booneThis reverts commit 9ecc98ddb40a25e2fbc905c2b0bdcab56de76694.3d955ee -
fix: temporarily force sonnet model failover
mike boone9ecc98d
-
fix: polish onboarding invite defaults
mike boonecc01f82 -
fix: update onboarding invite docs link
mike boonea4dafef -
fix: use plain app URL in onboarding invite
mike boone2849a6c -
fix: format onboarding app link for Slack
mike booneafb24db
-
fix: remove password length requirement
mike boonee20c8f2 -
fix: avoid blank app during password gate load
mike boone0560222 -
fix: force password change before app access
mike boone090128c -
feat: add temporary-password onboarding flow
mike booneece9b51
-
fix: improve deployment diagnostics and domain datasets
mike boone98056e5 -
fix: improve dataset domain specificity
mike boone2289a10
-
feat: add deployment notifications and tested demo updates
mike boone3c65377 -
feat: use extracted context for retail datasets
mike boone1780783
-
feat: add scenario contract extraction for dataset-first demos
mike boone1f4c2be
-
feat: add dataset-first generation path
mike boone7a5c5fe
-
fix: per-test unique tag for exact session_logs lookup β eliminates contaminationβ
Instead of guessing which session belongs to a test by company prefix, each test case now generates a unique tag (TR-{uuid8}) and writes it to the tag_name field. The app logs test_tag in meta at session init (the very first session_log entry). fetch_run_diagnostics queries by exact tag match first; falls back to prefix matching only if tag is missing. This makes session lookup exact and deterministic regardless of how many concurrent runs are happening at the same time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>7eea206
-
fix: log schema under both 'schema' and 'schema_name' keys at DDL-push timeβ
fetch_run_diagnostics() looks for meta["schema"] to do company prefix matching. That key is only written at populate-complete time. When a run is still in the data stage when the test bails (e.g. Delta's 35-min population), no "schema" entry exists yet β prefix match fails and falls back to a wrong session. Adding schema=schema_name to the early "ddl pushed" log entry (before data starts) ensures the key is present from the moment the Snowflake schema is created, so prefix matching works even when the test bails mid-data. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>bca7895
-
fix: ground Spotter Viz story in actual deployed column namesβ
Both _generate_matrix_spotter_story and _generate_ai_spotter_story now receive the actual column names extracted from self.ddl_code. These are injected into the prompt so the LLM references real columns instead of idealized matrix KPI names (e.g. was asking for 'Modality', 'TurnaroundTime' that don't exist in the model β now maps to whatever was actually deployed). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>c893a38
-
fix: DDL generation resilience β retry + longer timeout + Google None guardβ
- Anthropic client timeout: 60s β 180s (complex schemas need more headroom) - DDL generation: 2-attempt retry loop; logs warning on first failure before retry - Google provider: explicitly raise ValueError when response.text is None (safety filter block silently returns None, causing misleading "Result: None" error) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>48cd405
-
fix: bump populate timeout 15mβ45m, remove deployment update throttleβ
- POP_TIMEOUT 900s β 2700s: Medium/Large runs were hitting the 15-min hard limit before LegitData could finish; 45 min covers 10k-row runs - Small dim preset: 100 β 50 rows (faster test runs) - Remove every-5th throttle on deployment progress yields - Add trigger_mode="always_last" to phase log timer Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>bdc94da
-
fix: settings save/load + vertical layout + line cascadeβ
- supabase_client.py: load_gradio_settings now returns ALL saved keys, not just hardcoded defaults β fixes default_ts_env, default_data_size, share_with etc. silently dropping on load - Settings tab: all default fields now stacked vertically (no gr.Row) - Default Line is now a dropdown that cascades from Default Vertical, same as App tab behavior - Add new panel default keys to load_gradio_settings defaults dict Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b525aea -
feat: settings tab redesign β full panel defaults + optional run inputsβ
- Default Settings section now mirrors every App tab right panel field: AI Model, TS Environment, Liveboard Name, Data Size, Geographic Scope, Tag Name, Column Naming Style, Object Naming Prefix, Share With - New "Default Run Inputs" section at bottom with enable checkbox β pre-fills Vertical, Line, Function, Company URL on App tab load - TS Environment default seeds the App tab dropdown on load - Data Size reads from new default_data_size field (falls back to legacy fact_table_size for existing records) - Legacy fields (Default Use Case, fact_table_size, etc.) hidden but kept in schema for backward compat with prod Supabase data - Updated load_session_state_on_startup and interface.load outputs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>69891eb