You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Test Coverage: 1673 tests passing (server run `596abd41`, 2026-06-10; 8 pre-existing failures; 205 invariance tests)
46
-
- Lines of Code: ~14,086 (AliasDataFrame.py)
47
-
- Features: 47 in taxonomy (28 verified, 14 smoke-only, 4 broken, 1 planned — SUB.join flips Verified↔Broken with the `test_parquet_roundtrip` parallel flake; 27V/5B in same-commit run 221004); DISPATCH.adf_routing + DISPATCH.error_visibility pending taxonomy registration (Phase 13.55.ADF)
45
+
- Test Coverage: 1687 tests passing (server run `d85b3750`, 2026-06-11; 8 pre-existing failures + 1 error, identical by test identity to the documented baseline; 248 invariance tests)
46
+
- Lines of Code: ~14,150 (AliasDataFrame.py)
47
+
- Features: 49 in taxonomy (30 verified, 14 smoke-only, 4 broken, 1 planned — CM Verified↔Broken counts flip run-to-run with the parallel-flake set: `test_K2_3`, `test_parquet_roundtrip`, `test_arrow_vs_numpy_performance` (timing threshold, first seen run 095125; architect: "stochastic — we should fix it later")); DISPATCH.adf_routing ✅ 28/28 + DISPATCH.error_visibility ✅ 15/15 registered and Verified (Phase 13.56.ADF)
**Problem**: `adf.draw(expr, facet_by=["side_type", "qpt_bin10"], draw_lazy=True)` raised `KeyError: 'qpt_bin10'` at dfdraw dispatch when `qpt_bin10` was a lazy alias not yet materialized into `adf.df`. The `_ensure_vector_kwargs_aliases` hook (Phase 13.35.ADF) handled single-string `facet_by` and `selection_vector`/`weights_vector`, but not **list-valued**`facet_by`.
562
+
**Problem**: `adf.draw(expr, facet_by=["side_type", "qpt_bin10"], lazy=True)` raised `KeyError: 'qpt_bin10'` at dfdraw dispatch when `qpt_bin10` was a lazy alias not yet materialized into `adf.df`. The `_ensure_vector_kwargs_aliases` hook (Phase 13.35.ADF) handled single-string `facet_by` and `selection_vector`/`weights_vector`, but not **list-valued**`facet_by`.
563
563
564
564
**Fix**: One `elif` branch added to `_ensure_vector_kwargs_aliases` at `AliasDataFrame.py:L10996–11014`:
- Gallery: **40/40 PDF pages, 0 failed mandatory figures** (36 mandatory + 1 fit table + 3 optional)
642
642
643
643
**Findings surfaced by the fix** (masked-failure class — these failures only became visible when `on_error='skip'` no longer swallowed them):
644
-
-**F-A** (P1, open): `draw_figures`/`draw_batch` do not materialize selection/weights aliases under `lazy=False`. Bug report: `BUG_AliasDataFrame_20260610_batch_selection_alias_masked`. Workaround: pass `lazy=True`.
644
+
-**F-A** (P1, open; scope CORRECTED in Phase 13.56.ADF, bug report v1.1): plain `selection=`/`weights=` alias strings require `lazy=True` on ALL draw surfaces (loud `UndefinedVariableError` post-13.55 — no draw-vs-batch asymmetry); `selection_vector=`/`weights_vector=`/`facet_by` alias references materialize on all surfaces regardless of `lazy` (`_ensure_vector_kwargs_aliases` runs unconditionally). Residual gap: the hook does not scan plain selection/weights strings — symmetric everywhere. Bug report: `BUG_AliasDataFrame_20260610_batch_selection_alias_masked`**v1.1**.
645
645
-**F-B** (P2, cross-team dfdraw): `DFDraw.draw()` silently drops type-inapplicable named params (`bins=` on scatter). Pre-fix: hard matplotlib crash. Post-fix: silent drop. Recommendation: add warn-on-unconsumed-named-param.
646
646
-**F-C** (P3, cross-team dfdraw): `DFDraw.hist` on StringDtype columns raises obscure numpy `TypeError`. Two layout tests amended to explicit `on_error='skip'`; recommendation: clean error or categorical-hist support.
647
647
-**F-E** (P1, ADF-fixed + cross-team dfdraw): 3-var `type='profile'` → `profile2d` promotion missing in `DFDraw.draw()`/`draw_batch`. ADF-side shim in place; dfdraw should extend natively.
-**E-3/E-4 guards** in `draw_figures`: `type='profile2d'` and `facet_by` in specs raise a clean actionable error (default) or labelled `[ERROR]` placeholder (`on_error='skip'`). Both TEMPORARY — removal tied to `BUG_dfdraw_20260611_profile2d_ax_ignored` / `_facet_by_ax_ignored`. Binding order: scatter3d → 'auto'/promotion → profile2d guard → facet_by guard → `plotter.draw()`. Closes the silent-empty-panel-with-valid-stats class at the ADF surface.
664
+
-**D1=A batch shims** (AD-2 item 1): per-spec literal `'auto'` pre-resolution + 3-var `'profile'`→`'profile2d'` promotion in the `draw_batch` wrapper loop, pre-delegation; in-place spec mutation per the vector_compose precedent. Full type-shim symmetry across all three surfaces.
665
+
-**D4=A**: alias-eval `astype(int)` class → actionable error naming the quoted dtype form (narrow intercept + negative control). Deferred: EXPR.astype_type_tokens.
- Phase tests: **15/15** (`tests/test_phase_13_56_adf_post_audit.py`); both phase files **44/44**
674
+
-FM#12 reverse verification: **10 must-fail tests fail on 13.55-state code / 5 locks pass** (CRR rev 1.1 P2-1: coder's original 9/6 was a taxonomy-copy sequencing artifact; fable5_5's independent 10/5 reproduction correct)
675
+
- Full suite: **1687 passed; failure set identical by test identity** to the documented 8+1 baseline (run d85b3750; run 095125 additionally hit the arrow timing flake — see Key Metrics flake set)
676
+
- T-G1b/T-G2b landed the panel three-assertion form VERBATIM (C-6 clause)
677
+
678
+
**Amendments with disclosure**: 13.55 T7/T7b had been locking the E-3 silent-empty-panel state (stats non-None, panel blank — placeholder-blind assertions); amended to the guarded contract. Promotion stays locked by T3b/T-G6b on the working surfaces.
679
+
680
+
**Findings**:
681
+
-**F-13.56-1**: name-key batch specs (expr from spec name) are rejected by dfdraw `draw_batch` ("Missing 'expr'") — the ADF `.get('expr', _name)` fallback is defensive only; no end-to-end name-key support exists. Architect disposition pending (drop the convention vs implement dfdraw-side).
**Panel**: CRR rev 1.1 [!] APPROVED (9 reviewers; C-1 AD-registry overwrite found by all 9, fixed by architect, fable5_5 closure review [X]→[OK]; C-3 CM header verified 49). Governance recommendation adopted for next Org revision: `governance_checks` registry-scope gate (per-team AD registries contain only own-scoped IDs, e.g. `AD-N/.*\.ADF`).
686
+
687
+
**Follow-up**: TECHNICAL_SUMMARY v1.8 (graphics rewrite from audit cleared rows) committed 2026-06-11 after [!] panel (8 reviewers). Next ADF audit: lazy evaluation (FormularV3). dfdraw track: PRINCIPLES v1.1 + grammar package sent for ratification 2026-06-11.
**Problem**: `draw_figures`/`draw_batch` do not materialize selection/weights vector aliases under the default `lazy=False`setting. The BUG_20260420 fix covered `adf.draw()` only. Under the old `on_error='skip'` default, the materialization failure rendered as an error-text placeholder in the dashboard — invisible in typical QA workflows.
719
+
**Problem** (scope corrected in Phase 13.56.ADF — v1.0 of this entry was wrong; audit C2/E-5, executed 10-call matrix): plain `selection=`/`weights=` strings referencing non-materialized aliases fail under `lazy=False`on **ALL THREE surfaces** (`adf.draw`, `draw_figures`, `draw_batch`) — loud `UndefinedVariableError` post-13.55; there is NO draw-vs-batch asymmetry. `selection_vector=`/`weights_vector=`/`facet_by` alias references work on all surfaces regardless of `lazy` (the 13.35 hook runs unconditionally everywhere). Under the old `on_error='skip'` default the failures rendered as placeholder panels — invisible in typical QA workflows.
685
720
686
-
**Workaround**: Pass `lazy=True`to `draw_figures`/`draw_batch`. This triggers alias pre-materialization before dispatch.
721
+
**Workaround**: Pass `lazy=True`(any surface), or use the `selection_vector=`/`weights_vector=` forms.
687
722
688
-
**Recommended fix**: Extend `_ensure_vector_kwargs_aliases`call to `draw_figures`/`draw_batch` per-spec/per-plot loops under `lazy=False` (analogous to the `adf.draw()` fix in BUG_20260420). Separate phase, small scope.
723
+
**Recommended fix**: Extend the `_ensure_vector_kwargs_aliases`scan set to plain `selection=`/`weights=` strings (one scan site; all surfaces inherit). Regression net: Phase 13.56 T-G3 locks the corrected six-cell behavior matrix with fresh instances. Bug report: **v1.1** (`BUG_AliasDataFrame_20260610_batch_selection_alias_masked_v1_1.md`).
689
724
690
725
**Tests**: S2/S3/S4 amended in Phase 13.55.ADF to use `lazy=True` + placeholder-proof assertions (`_errors=={}`, `stats[0] is not None`).
691
726
@@ -1311,6 +1346,7 @@ All major decisions require consensus from 3+ AI reviewers:
1311
1346
| ADF dispatch routes through DFDraw.draw() (AD-1/13.55.ADF) |`getattr(plotter, method_name)` replaced at `adf.draw()` + `adf.draw_figures()` dispatch sites; overlay strings and type aliases now work at ADF surface; `'auto'` pre-resolved via `_resolve_plot_type` before routing (ADF convention); 3-var `type='profile'` promoted to `'profile2d'` ADF-side until dfdraw extends its early dispatch (F-E shim). Architect: "OK. Approve." (2026-06-10) |
1312
1347
| draw_figures + draw_batch default on_error='raise' (AD-1/13.55.ADF) | All general-purpose ADF batch surfaces default to raise; silent-skip failure mode closed. draw_fit_summary keeps 'skip' (documented exception — data-dependent per-panel fit failures; QA-dashboard UX). Architect: "Skip" for draw_fit_summary. |
1313
1348
| ADF ARCHITECT_DECISIONS.md registry created | Phase 13.55.ADF; mirrors dfdraw registry v1.1.0 conventions. Seeded with AD-1/13.55.ADF. |
1349
+
| Batch type shims pre-delegation; figures guards temporary (AD-2/13.56.ADF) |`draw_batch` per-spec 'auto' resolution + 3-var profile promotion in the ADF wrapper loop (dispatch stays dfdraw's — AD-1 rationale preserved); profile2d/facet_by guards in `draw_figures` removed when the dfdraw `ax=` bugs land. Architect: "D1: A · D2: B" (2026-06-11). |
1314
1350
1315
1351
---
1316
1352
@@ -1407,7 +1443,11 @@ Remaining overhead is Python/Pandas framework cost.
1407
1443
1408
1444
### Active queue (priority order)
1409
1445
1410
-
-[ ]**BUG_AliasDataFrame_20260610_batch_selection_alias_masked** (F-A, P1) — `draw_figures`/`draw_batch` don't materialize selection/weights aliases under `lazy=False`; surfaced by Phase 13.55.ADF on_error default change. Workaround: `lazy=True`. Fix: extend `_ensure_vector_kwargs_aliases` to batch paths.
1446
+
-[ ]**BUG_AliasDataFrame_20260610_batch_selection_alias_masked v1.1** (F-A, P1, scope corrected 13.56) — plain `selection=`/`weights=` alias strings need `lazy=True` on ALL draw surfaces; vector kwargs unaffected. Fix: extend the hook scan set to plain strings (one site, all surfaces inherit; T-G3 regression net in place).
1447
+
-[ ]**Parallel-flake cluster** (`BUG_AliasDataFrame_20260526_parallel_flake_compression` scope extension) — `test_K2_3`, `test_parquet_roundtrip`, `test_arrow_vs_numpy_performance` (timing threshold, run 095125) flip under 12-worker runs; CM Verified↔Broken flips accordingly. Path A (`pytest xdist_group`) recommended. Architect: "stochastic — we should fix it later."
1448
+
-[ ]**dfdraw E-3: profile2d ax= ignored** (`BUG_dfdraw_20260611_profile2d_ax_ignored`, P1, routed to dfdraw) — ADF carries a temporary draw_figures guard; remove on fix.
1449
+
-[ ]**dfdraw E-4: facet_by ax= ignored / figure leak** (`BUG_dfdraw_20260611_facet_by_ax_ignored`, P1, routed to dfdraw) — ADF temporary guard; remove on fix (dfdraw next step: nested sub-gridspec / figID paging).
1450
+
-[ ]**dfdraw E-2: median return_data carries mean** (`BUG_dfdraw_20260611_median_return_data`, P2, routed to dfdraw) — TS §8.2 carries the limitation line until fixed.
1411
1451
-[ ]**dfdraw F-E: 3-var profile promotion** — `DFDraw.draw(type='profile', expr='z:y:x')` lacks the `DFDraw.profile()` promotion to profile2d. ADF shim in place (Phase 13.55.ADF). dfdraw team should extend early dispatch natively so ADF shim can be removed.
1412
1452
-[ ]**dfdraw F-B: named-param silent drop** — `DFDraw.draw()` silently drops type-inapplicable named params (e.g. `bins=` on scatter). Surfaced by Phase 13.55.ADF masked-failure audit. Recommendation: warn-on-unconsumed-named-param in `draw()`.
1413
1453
-[ ]**dfdraw F-C: StringDtype hist crash** — `DFDraw.hist` on StringDtype columns raises obscure numpy `TypeError`. Two ADF layout tests amended to explicit `on_error='skip'` as workaround. dfdraw recommendation: clean error or categorical-hist support.
0 commit comments