Spaces:
Running
Running
Commit History
-
Merge remote-tracking branch 'hf-test/main' into spike/portal-template Running
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
-
feat(mcp): KEY_VAR ENV: indirection + scheme-less/port-tolerant host matching
Folds in what the Space-side hotfix (0b84b8a) had that the TS_ENV table didn't: techpartners support and robust URL parsing. KEY_VAR may now be ENV:<NAME> to dereference a secret that already exists under its own name (the techpartners key lives only as a Space secret), and ts_url may omit the scheme or carry a port. Unknown clusters still fail loud with the known-environment list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>e27ea87
-
refactor(mcp): resolve trusted-auth keys from the shared TS_ENV_<n> table
The MCP server had its own two-key mapping ('sebe' in url -> SEBE_SE_TA_KEY, else SE_PRIMARY_TA_KEY) — any third instance (e.g. the new pmm env) silently got the secloud key and failed auth. _resolve_ts_target now looks the build's ts_url host up in the same numbered TS_ENV_<n>_LABEL/URL/KEY_VAR table the app dropdown reads: one environment scheme for both entry points; unknown instances fail loud listing the known environments. TS_ENV_URL_DEFAULT keeps its no-URL fallback role. 4 unit tests. DEPLOY NOTE: before this reaches the MCP Space, add the TS_ENV_<n>_* secrets there (it currently has only the legacy key pair); legacy SEBE_SE_TA_KEY / SE_PRIMARY_TA_KEY become unused after that. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>5ce76f0
-
test(mcp): retry brief fetch on network errors + --brief-file escape hatch
Venue WiFi/proxy flaps were killing the burn-in with SSL errors before the first build even fired. Fetch now retries 5x with backoff and fails with a clear message; --brief-file runs the same brief from a local snapshot when Supabase is unreachable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>a423344
-
test(mcp): repeatability burn-in — fire the latest brief N times, report pass rate
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>9a955a5 -
fix(ddl): CHECK sanitizer no longer deletes columns named CHECKOUT_*
The chunk-level CHECK-constraint detector used prefix matching (upper.startswith("CHECK")), so any column whose name begins with CHECK — CHECKOUT_INITIATED, CHECKOUT_ATTEMPTS, CHECKOUT_CONVERSION_RATE, CHECKOUT_ABANDONMENT_RATE — was silently dropped from CREATE TABLE while the generated dataset still carried its values. The INSERT then failed on columns the table didn't have. Root cause of the "random" schema/data-mismatch build failures (Cloudscape, Atlas Freight partial, Tixr run 02ec3e7baba6) — it fired whenever the LLM blueprint author named a column CHECKOUT_*, which checkout-funnel briefs (Tixr) invite. Detector now requires the CHECK keyword followed by a parenthesized expression, and the CONSTRAINT branch uses a word-boundary match so an FK named CHECKOUT_FK survives. Inline CHECK removal already used \bCHECK\b and was safe. 4 regression tests added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>e32850b -
fix(e2e): remove remaining hardcoded DEMOBUILD refs in test harnesses
Follow-up to the rotating-demo-database change: the data-grading fallback, geo-scope check, and settings_test row check still pointed at DEMOBUILD. All now derive the database from the model TML (via check_snowflake_schema's new database field) or get_demo_database(). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>a22a600 -
fix(e2e): resolve Snowflake database from model TML in schema check
check_snowflake_schema hardcoded DEMOBUILD; demos now live in the rotating <base>_<YYYY_MM> database, so the check reported "Object does not exist" on runs that succeeded. The database now comes from the same model-TML resolution that supplies the schema (with get_demo_database() as the session-log path's source), and the check refuses to guess when neither is available. Verified against live run ed0dfa99: DEMOBUILD_2026_08.TST_TRE_08102144_P6D_sch, 10,037 rows / 7 tables found. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>80facca -
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
-
guard: catch CREATE/INSERT column mismatches before and during Snowflake load
The Gap e2e failure: FACT_CAMPAIGN_PERFORMANCE's row loader referenced CHECKOUT_INITIATED, a column CREATE TABLE never declared -> Snowflake "invalid identifier", ~10 minutes into the run, no indication of which table/column. Root mechanism wasn't pinned with certainty (DDL and the loader both derive columns from the same DatasetBundle object, so they can't diverge in the code as read) — these guards catch the failure class immediately and name the exact column, regardless of cause. - validator.py: _check_schema_consistency() — in-memory, at validate_bundle() time. Flags (a) two column names that collide after SQL-identifier normalization (duplicate column in CREATE TABLE), and (b) a generated row carrying a key no declared column covers (INSERT would reference an identifier CREATE TABLE never defined). Runs before any DDL is derived or Snowflake is touched. - dataset_writer.py: _verify_table_columns() — right before each table's INSERT, DESCRIBE TABLE and diff against th…2cc63cd -
chore: check in async-TML-import investigation (repro/perf harness + handoff docs)
- tests/ts_import_sync_vs_async.py, ts_slow_import_repro.py, ts_table_perf.py: repro/perf harness behind the async TML import fix - tests/perf_results/: captured sync-vs-async timings - docs/async_tml_import_handoff.md, sre_slow_tml_import.md: investigation + SRE handoff notes Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>72b93af -
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 -
merge: liveboard-quality into integration/mcp-lb
ee1ce2a -
liveboard quality: fix flat-72 defects + Tixr-style layout
Reshape the MCP + enhance golden layout to fix the 5 structural grader defects and adopt the SE's Tixr Executive Analytics template. golden_layout.py: - note tile: full company name (was single-letter "N"/"L"), deduped; dropped by default (keep_overview_note flag) so the KPI row leads - colors: color ADVANCED_* charts by dimension via custom_chart_config "slice-with-color" (real per-category colors + legends; was all-blue, since seriesColors/chartLevelColorConfig don't drive the new engine) - per-tile tile_brand_color cycling + tile_kpi_color on KPIs - force CHART_MODE where a chart renders as a data grid - clean raw display names (Dim / Usd / Pct / doubled words) - trend detection: time-only series -> dedicated Performance Trends - geo: GEO_* -> its own full-width row right under the KPI row - asymmetric group sizing (5/4/3, 7/5) + Tixr styling (kpi L font, hidden group descriptions) liveboard_creator.py / thoughtspot_deployer.py: thread logo_url/url into build_dashboard_pla…f7f2b52 -
chore: README, e2e grader, share-permission fix, sprint + quality results
- README: chat_interface.py is the full app (App tab primary), app.py entry point; updated structure/config - tests/e2e_quality.py: date-aware grader, COMPLETENESS rubric rewrite, --ts-environment override, hard-fail on missing dropdown label - thoughtspot_deployer.py: share-permission 400 fix — notify_on_share=false + empty message to satisfy the GraphQL $message contract - sprint_2026_04.md: progress updates - tests/quality_results: run artifacts incl. 2026-07-28 82.9/B run Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>fcde472
-
fix(test): make e2e_mcp resilient to transient network blips
A single httpx.ConnectTimeout on one status() poll (hf.space dropped a TLS connect ~3 min into a run) crashed the whole harness. Over a ~1h run doing hundreds of network polls, transient blips are expected. call() now retries (4x, 3s backoff) around any transient exception, and the fire/poll sites in run() tolerate an exhausted call — a failed poll skips the cycle (builds keep running server-side; results persist in recent_builds) instead of ending the run. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>095d53e -
test(mcp): e2e_mcp harness — drive N live MCP builds end-to-end and grade each
Replaces the local-pipeline e2e for the MCP path. Fires build_demo_from_brief for each of 8 rich briefs against the live server, respects the server's bounded concurrency (fires until 'busy', backs off, refills as slots free), polls status(), collects each result by run_id from recent_builds, and grades PASS/FAIL (success + liveboard produced + no 13122). Two briefs deliberately exercise the connectivity guard: "Summit Mutual" (two subject areas -> keep primary star, set aside the other) and "GridLink" (time-series heavy -> orphan date dim dropped). Writes a JSON report to tests/quality_results/ and exits non-zero if any build fails. Run: python tests/e2e_mcp.py [--limit N]. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>8abca30
-
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
-
Improve backup liveboard path logging
mike boone5f0f576
-
Honor explicit custom dataset contracts
mike boonea6d4bca -
fix: retry transient ThoughtSpot auth failures
mike boone4489319 -
fix: accept undefined liveboard answers with tokens
mike boone30e135b
-
fix: reconcile ThoughtSpot connection creation
mike boone34f7221
-
fix: accept valid undefined ThoughtSpot answer tokens
mike boone70a4175 -
fix: detect invalid answer readiness before MCP liveboards
mike booned3049d4 -
fix: recover tables from connection details
mike boone25fbe18 -
fix: validate recovered ThoughtSpot tables by connection
mike boonede46562 -
fix: recover table creates via connection-scoped search
mike boone0acfbde -
fix: normalize ThoughtSpot TML import object responses
mike boonee343cfd -
fix: harden ThoughtSpot table polling and model readiness
mike boone7aff9ba
-
fix: verify ThoughtSpot TML imports after 504
mike boonec04c93f -
fix: classify ad monetization before contract gate
mike boone3a16eea -
feat: add ad monetization dataset scenario
mike boonecfcdfcd -
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 -
merge: reconcile test branch before Baker Chart deploy
mike boone20bd973 -
feat: add post-merger integration dataset generator
mike boone5ddc387 -
fix: restore MCP-first liveboard answer flow
mike boonec3449ec
-
fix: repair thin retail contracts during quality runs
mike boone91a5459 -
fix: clean apparel retail channel and pricing contracts
mike boone972ae59
-
fix: require researched retail data contracts
mike boone8db53a2 -
fix: tighten dataset quality and TS import retries
mike boone889a00d
-
fix: promote more charts to executive tab
mike boone4a07201 -
fix: add semantic-safe dataset preflight
mike boone6723ca6