Skip to content

v1.2.0 — outside-in HDI tower + mass-aware tip + fail-loud config

Choose a tag to compare

@Polichinel Polichinel released this 24 Jun 04:02
94ca5ee

Resolves register C-44 (Tier 1) — a silent output-correctness bug in the v1.1 tower estimators. A minority duplicated draw (a couple of exact zeros, a lone pair, any repeated value) could hijack the degenerate ~2-sample 5% floor and collapse both tower_point and the nested hdi_tower bands — confirmed on real faoapi forecast cells. No change to the frozen estimators (map_estimate/hdi/quantiles, ADR-018); CONFORMANCE_FLOOR stays 1.0.0. pip install --upgrade views-frames.

Changed

  • The canonical tower is now built outside-in (widest floor first; each narrower floor the shortest interval contained in its wider parent), instead of inside-out. Robust by construction — a lonely outlier is shed by the well-determined wide floors, and containment forbids a narrower floor from re-selecting it. Nesting + reproducibility laws unchanged.
  • tower_point reads the configurable tip_mass floor (default 0.5 — the "shorth"), not the degenerate 5% floor: a mass-aware, duplicate-robust point.
  • The tower-family functions drop their tunable kwargs (bins/prominence/min_mass/block_rows) — those now come from the config (below). masses stays a per-call argument.

Added

  • views_frames_summarize.config — a fail-loud config (TOWER_CONFIG, REQUIRED_KEYS, validate_config, get, canonical_floors) holding every tower-family tunable with no silent defaults: a missing key raises ValueError naming it (ADR-008/009).

Governance

  • ADR-019 amended (inside-out → outside-in; tip_mass; config). Register C-44 → Resolved; C-32/C-34 mitigation notes updated. The Summarize CIC records the new construction, the tip_mass tip, and the nesting-tradeoff / robust-mode-vs-MAP caveats.

Full notes: CHANGELOG.md.