Skip to content

Release 2.0.0 - #85

Merged
Polichinel merged 7 commits into
mainfrom
development
Sep 18, 2026
Merged

Polichinel merged 7 commits into
mainfrom
development

Conversation

@Polichinel

Copy link
Copy Markdown
Collaborator

Story S8 (#72) · Epic #66 · Tracking #73. Brings development to main for the 2.0.0 release (MAJOR, ADR-022 §5); the v2.0.0 tag and the draft GitHub Release are cut on main after this merge.

Contents since v1.1.0: S7 (#83, the removal of to_dataframe(), its helper, the dead factories and the dataframe extra) and the release commit (#84). Release notes are the [2.0.0] — 2026-09-18 section of CHANGELOG.md with the ADR-022 §7 checklist. Consumer notifications (§3.2) were posted before the tag on views-pipeline-core#515 and views-reporting#289.

Publishing to PyPI happens when the GitHub Release is published, through publish_package.yml, which runs the full suite first.

🤖 Generated with Claude Code

Polichinel and others added 7 commits September 18, 2026 17:07
Back-merge main into development after v1.1.0
…1 consequence live

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
…shed

docs(register): record the 1.1.0 publish
…factories and the dataframe extra (C-40; #63)

BREAKING (ships as 2.0.0, S8). After 1.1.0's DeprecationWarning:

- `EvaluationReport.to_dataframe()` and `BaseEvaluationMetrics.evaluation_dict_to_dataframe()`
  (the `df.loc[:, df.notna().any()]` erasure, register C-40) are deleted, as are the
  three `make_*_evaluation_dict` factories (unused since 0.4.0; private cleanup).
- The `dataframe` extra is gone. pandas moves to the dev group (`>=2.1.1,<3` — 1.5.x
  cannot install on 3.12, which pyproject declares supported) so the import-purity
  guard keeps something to prove.
- Nothing under `views_evaluation/` mentions pandas; the package-wide AST guard forbids
  pandas, polars and sklearn imports under any name, the per-module guard now also
  covers `metrics` and `config_schema`, and a test pins the runtime dependency set to
  exactly {python, numpy, scipy, views-frames}.
- CI: the runtime-only install step asserts pandas AND scikit-learn are absent, then
  evaluates a frame and emits a MetricFrame (an import-only probe executed no line of
  the lazy emit path). The verify step imports `views_frames` only. The held workflow
  text is stored in significant-line form.
- tests/test_evaluation_report.py no longer import-skips: ten pandas tests deleted,
  a Red test pins the five removed names on class and instance, and the FM1 guard
  (metric with no dataclass field raises) finally has the Red test the CIC claimed.
  The extra-absent test is transplanted from `to_dataframe()` to `to_metric_frame()`'s
  views-frames branch (extra name, ImportError type, ERROR log).
- Docs: README, integration guide, three CICs, ADR-041, the physical architecture
  standard. `tests/test_documentation_contracts.py` now registers the removed methods
  and fails a doc or docstring that shows one as current, with 2.0-era history markers
  and dated CHANGELOG sections treated as frozen.
- Register: C-40 closed, C-15's rationale corrected (the dataclass consumer is
  `get_schema_results()`), Cluster A down to C-22, D-01's residual updated. 15 → 14.
- `examples/benchmark_probabilistic_scaling.py` deleted (never imported this package).

Every new or widened guard was observed red on an injected defect before being
trusted (C-37): compat shim, `__getattr__` shim, pandas in metrics.py and profiles/,
pandas back in runtime deps, extra renamed / type swapped / log deleted on the frames
branch, `continue` in place of the FM1 raise, `to_dataframe` shown in a guide, in
`[Unreleased]`, and in a docstring.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
S7: remove to_dataframe(), the DataFrame helper, the dead factories and the dataframe extra (C-40; #63)
Version 1.1.0 → 2.0.0 (MAJOR, ADR-022 §5). CHANGELOG gains the `[2.0.0] —
2026-09-18` section with the §7 checklist worked through; the register gains the
dated release block. §3.2 notifications posted before the tag and cited by comment
ID (views-pipeline-core#515, views-reporting#289). Consumer state measured at the
cut: views-pipeline-core's released 3.2.0 still calls the removed method and pins
^1.0.0; views-reporting's main admits 2.0.0, its released v0.3.3 does not.

The release review found fifteen guard and doc defects, fixed here and each seen
red on an injected defect:

- Import purity: one walker, one path-keyed allowlist set to the measured census
  (a stem key gave profiles/__init__.py the root package's allowance; a string
  literal under ANY call made `float("nan")` an import whenever a `nan` package
  was importable). Literals are read only under import machinery and its aliases,
  `name=` included; `exec`/`eval` are forbidden everywhere; the runtime probe also
  saves and loads a MetricFrame. The runtime-dependency pin reads both pyproject
  layouts and the extras' contents.
- Logging: `metrics` and `config_schema` added to the logging guard's Level-0
  list and to the standard's §5.1 list so the three classifications agree.
- Report: `to_dict()` documents and a test pins that `schemas` is the live
  structure; `get_schema_results()` is tested on all three schemas; the public
  surface is pinned as an allowlist (class and instance); the FM1 raise is
  asserted silent.
- Doc guard: scans the CHANGELOG section of the version being cut (it had frozen
  it as history), splits with the shared fence-aware parser, uses word-anchored
  removal framings, and drops the five block-wide 2.0-era markers that had widened
  the older guards' exemption.
- CI probe: passes an int `timestamp` and the ISO string as `evaluation_timestamp`
  (the contract's field is int; the exemplar had mis-stamped provenance), asserts
  the type, and derives the row count.
- Docs: README no longer attributes EvaluationReport to the emit layer; the CIC
  scopes FM1 to `get_schema_results()`, cites the transplanted extra-absent test,
  and is dated; the CHANGELOG states plainly that both releases were cut on the
  same day.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
release: 2.0.0 — to_dataframe() and the dataframe extra removed (#72)
@Polichinel
Polichinel merged commit 3332a0f into main Sep 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant