Engineering & roadmap
Implementation review: PB-014, PR 1190
Development documentation. This guide follows a reviewed snapshot of main and may describe capabilities not yet in Stable. Check Preview labels and release notes. Some executable names and paths remain unchanged for compatibility. Legacy names explained ↗
| Field | Value |
|---|---|
| Backlog item | PB-014 (FD-111, AST-based compatibility analyzer with an Unknown outcome) |
| Pull request | #1190, with #1262, #1275, #1300, #1305 and #1324, all merged; main at b3c5b223 |
| Package | none |
| Reviewer | Product management thread |
| Date | 2026-10-31 |
| Environment | Linux container, engine from source, no tenant |
Outcome#
Changes Required (criterion 2 only).
Recommended by: Product management thread. Decided by (product owner): pending.
Acceptance criteria#
| # | Criterion (copied from the backlog item) | Result | Evidence |
|---|---|---|---|
| 1 | Aliased and from-imports are recognized | Met | test_aliased_and_from_imports_of_fabric_only_utilities_run_in_fabric_only and test_sql_on_another_name_for_the_spark_session_is_read_like_spark_sql (sidecar/tests/test_compute_check_ast.py) |
| 2 | Unknown is a distinct result shown in the ribbon | Not met | The engine returns Unknown separately: unknown and unknown_local in fabric_run.compute_check, and ok is False. The notebook doesn't show it. computeNote in app/ui/app.js draws only blockers, and its comment says "Unknown cells (here.unknown) aren't shown as blockers". No ribbon or note names an Unknown cell |
| 3 | Prove and Runs on read the same analyzer output | Met | proof.py, validate.py, risk_service.py, side_by_side_service.py and service.py (open and save) all call fabric_run.compute_check. test_prove_validate_advice_and_the_risk_check_read_the_same_unknown covers this |
Checks#
| Check | Result | Evidence or note |
|---|---|---|
| Scope matches the item and package | Yes | Also follows %run, notebook.run, runMultiple and %run -b (#1262 to #1324) |
| New tests fail without the change, pass with it | Not re-run without the change | |
| Full suites pass (pytest, UI, cargo) | Partly | test_compute_check_ast, test_fabric_compute, test_prove and test_validate*: 214 passed, 1 skipped |
| Reachable where docs say; Preview behavior right; packaged into the engine | Yes, engine side | |
| OneLake data safety | Yes | Read-only analysis |
| Authentication and distribution | Not affected | |
| No unproven local-equals-Fabric claim; Preview tags kept where untested | Yes | Unknown counts as "not fine" everywhere |
| Docs match the code; linked; strict docs build passes | Yes | |
| Accessibility of new controls | No new controls |
What would close it#
Either of these:
- Show Unknown cells in the notebook's compute note, listing each cell and its reason, distinct from blockers. That is new UI, so it needs a small mockup.
- Or Chris rewords criterion 2 to "Unknown is a distinct result that Prove, Validate, the advisor and the risk check treat as not fine", and accepts the item with the limitation that the notebook itself doesn't name Unknown cells.
Need a hand?
Find a fix in troubleshooting, or share a reproducible issue with the community.
Get support ↗Improve this guide on GitHub ↗