Release Notes -- 2026-04-30¶
Databricks Forge v0.40.0 → v0.41.0
v0.40.1 -- Opus 4.7 compatibility + max_tokens defaults¶
Bug Fixes¶
- Opus 4.7 temperature 400 --
databricks-claude-opus-4-7now rejects requests that include thetemperatureparameter with HTTP 400. Added a per-modelsupportsTemperaturecapability (only Opus 4.7 isfalse) and gated the wire body inlib/dbx/model-serving.tsso all callers can keep passing temperature without changes; the field is simply omitted for models that disallow it. - Claude Sonnet 4 silent 1K truncation -- Databricks defaults
max_tokensto 1,000 for Claude Sonnet 4 when the field is omitted, causing silentfinish_reason: lengthtruncation. The wire layer now always emitsmax_tokens, falling back to a per-modeldefaultMaxTokenswhen the caller doesn't specify one.
Improvements¶
- Gemini Flash output ceiling raised --
databricks-gemini-3-flashanddatabricks-gemini-3-1-flash-litemaxOutputTokensraised from 8,192 to 32,768 to match Databricks' published per-request envelope. - Visible clamp warnings -- The maxTokens clamp log was promoted from
infotowarnso unintended truncation (e.g. the 128K asks inlib/pipeline/steps/scoring.tsagainst a 32K Claude cap) surfaces in normal log views. - Per-model
defaultMaxTokens-- Added a sensible default per model: GPT-5.4 = 16,384; Claude Opus/Sonnet 4.x = 8,192; Gemini Flash + Llama Maverick = 4,096. Surfaced viagetModelCapabilities()and logged in the pool startup summary.
Other Changes¶
- Extended
ModelTemplate,ModelEndpoint,getModelCapabilities(), andUNKNOWN_CAPSwith the two new fields. - Updated
__tests__/model-pool/model-registry.test.ts(now 27 tests in the model-pool suite, 922 across the full repo) and the__tests__/model-serving/content-parsing.test.tsmock to match the newgetModelCapabilitiesshape.
v0.41.0 -- WAF Assessment¶
New Features¶
Self-service Databricks Well-Architected Framework assessment¶
A new /assessment page lets customers score their workspace against the Databricks Well-Architected Framework (WAF) without leaving Forge. Forge runs deterministic SQL over system.* (lineage, audit, billing, compute, information_schema) on behalf of the logged-in user (OBO) and produces:
- Per-pillar scores -- Governance, Reliability, Cost Optimisation, Performance Efficiency, plus an overall score derived from the available pillars.
- Drill-down per pillar -- Each pillar has its own tab with a score header (Mature / Progressing / At Risk / Critical) and a control table sorted failing-first.
- Failing controls tab -- A cross-pillar shortcut to the controls that did not meet their threshold, ordered by score ascending.
- History -- Every run is persisted in Lakebase (
forge_waf_assessments) with timestamps, scores, and triggering metadata.
The catalog of 30 controls (sourced from Databricks-WAF-Light-Tooling) is bundled as a CSV, upserted into forge_waf_controls on first boot, and re-synced on every run.
"Fix with Forge" deep-links on every control¶
Each failing control surfaces a one-click action mapped to the right destination:
- Forge engines (Wrench icon) for controls genuinely automatable inside Forge -- Comment Engine for missing column comments, Estate Scan for lineage / tag / format / managed-table inventory.
- Open docs (Book icon, opens in new tab) for admin- or workload-level controls (Photon, autoscaling, cluster policies, model serving, audit-log enablement, etc.) where the canonical Databricks doc is the right next step.
- Ask Forge fallback when no mapping is curated.
All 30 controls now have at least one curated next step.
CSV export¶
"Export CSV" button on the assessment toolbar generates a client-side CSV (waf-assessment-YYYY-MM-DD.csv) with waf_id, pillar, principle, best_practice, score, threshold, met, recommendation -- ready to drop into a customer report.
Drift comparison between runs¶
A new /assessment/compare?from=X&to=Y view diffs two assessments and groups controls by drift category:
- Regressed -- was met, now not met (highlighted in red, top of page).
- Improved -- was not met, now met.
- Score moved -- same status, score delta beyond a 5-point noise floor.
- Catalog changes -- controls that entered or left the catalog between runs.
- Unchanged -- collapsed by default.
A "vs. latest" button on each row of the History tab launches the comparison.
API¶
POST /api/assessment/run-- triggers a full assessment run, persists results, returns the summary.GET /api/assessment-- returns latest assessment (with control results) plus history list.GET /api/assessment/[assessmentId]-- returns a single assessment with its per-control results.GET /api/assessment/controls-- returns the bundled controls catalog (no run required).
Schema¶
Three new Lakebase tables (auto-migrated via prisma db push on boot):
forge_waf_controls-- catalog of WAF controls with thresholds, metric definitions, and curated remediation text + fix-action mapping.forge_waf_assessments-- one row per assessment run with status, per-pillar scores, overall score, met/total counts, error message, timestamps.forge_waf_control_results-- per-control result rows joined to a parent assessment via FK.
All Commits¶
| Hash | Summary |
|---|---|
3447c1b |
fix(model-serving): make Opus 4.7 work + close Sonnet 4 max_tokens footgun |
| fill at merge | feat: WAF Assessment module with drill-down, CSV export, and drift compare |