|
3 | 3 | ## Unreleased |
4 | 4 |
|
5 | 5 | <!-- BEGIN AUTHORITATIVE CHANGELOG FRAGMENTS --> |
| 6 | +### Added |
| 7 | + |
| 8 | +#### Binary response state contract |
| 9 | + |
| 10 | +- Add the versioned `fast_mlsirm_binary_response/v1` Measurement contract so dichotomous 0/1 values remain separate from missing, not-observed, abstained, invalid, omitted, not-applicable, insufficient-evidence, and adjudicated states; keep polytomous rubric/facet contracts separate and fail closed instead of thresholding. |
| 11 | + |
6 | 12 | ### Changed |
7 | 13 |
|
8 | 14 | #### Release cut 0.9.2 |
9 | 15 |
|
10 | | -- Project version is bumped to 0.9.2 in `pyproject.toml`, `crates/mlsirm-core`, |
11 | | - and `crates/fast-mlsirm-py`. The accumulated `Unreleased` notes now form the |
12 | | - `[0.9.2] - 2026-08-27` release section: preregistered external-validation and |
13 | | - transportability evidence profiles, a domain-neutral Rust/PyO3 |
14 | | - finite-population proportion sampling-design contract (sample size, finite- |
15 | | - population correction, proportional/equal-cost Neyman allocation, and a |
16 | | - terminal SRSWOR achieved-proportion artifact with Wang/Konijn exact |
17 | | - confidence limits) plus a bounded threshold-sorted water-filling capped-strata |
18 | | - allocation, a domain-neutral lineage-channel-weight evidence contract, a |
19 | | - shared canonical judge-result IRT projection core, provisional-versus- |
20 | | - calibrated item-parameter provenance with independent (non-self-referential) |
21 | | - provenance edges, item-bank lifecycle public-identity replay, customer-facing |
22 | | - error-copy actionability across the CLI and public API, and a continuation of |
23 | | - the hostile-input/structural-budget hardening sweep (2PL response/tolerance |
24 | | - admission, confirmatory loading-pattern evidence, residual interaction-map |
25 | | - and RSM structural traversal, sampling result-contract replay, release |
26 | | - acceptance watchdog budget, and release helper import integrity). |
27 | | -- This cut removes the standing predecessor note `release-0.9.1-cut.md`, whose |
28 | | - substance is permanently recorded in the `[0.9.1] - 2026-08-25` section and |
29 | | - in git history, mirroring the precedent set by the v0.9.1 cut's removal of |
30 | | - the stale `release-0.9.0-cut.md` leftover. |
31 | | -- Released authoritative fragments are removed from `docs/changelog.d`; the |
32 | | - directory again holds only genuinely unreleased notes. |
| 16 | +- Stage package version metadata at `0.9.2` across Python, Rust, `python/fast_mlsirm/_version.py`, and the derived lock metadata on the Draft release branch. This fragment does not claim that a `v0.9.2` tag, package, or immutable GitHub release already exists. |
| 17 | +- The historical 2026-08-27 cut folded the then-current 17 unreleased fragments into the draft `[0.9.2]` section. The branch has since been merged forward non-destructively with protected `main`, including the binary-response Measurement contract, so that historical section is no longer complete release provenance for the code that would now be tagged. |
| 18 | +- Keep the current authoritative fragments until the exact tag target is ready. Before release, regenerate the managed `Unreleased` block and the dated `0.9.2` release body from that exact inventory, fold every released fragment without losing its evidence, and require `python scripts/render_changelog_fragments.py --check CHANGELOG.md` plus the release-consistency gates to pass on one unchanged head. |
33 | 19 | <!-- END AUTHORITATIVE CHANGELOG FRAGMENTS --> |
34 | 20 | ## [0.9.2] - 2026-08-27 |
35 | 21 |
|
|
0 commit comments