diff --git a/docs/SCHEMA_HISTORY.md b/docs/SCHEMA_HISTORY.md index 7f5f658..0e31e2b 100644 --- a/docs/SCHEMA_HISTORY.md +++ b/docs/SCHEMA_HISTORY.md @@ -22,6 +22,14 @@ version numbers (`powderline.support_matrix()` lists the declarations). Defined in `src/powderline/schema_core.py`. Not used by any gateway yet: the engine schemas adopt it in re/04–06. +> **Pre-release revision (re/03b, not a new version).** Before its first +> release, core 1.0.0 replaced its structure-only phase model (`PhaseStructure` +> with plain values, plus `null`-valued "structure" parameters) with the +> **phase block** described below: one block per phase, every structural +> quantity a refinable parameter, flags and bounds checked against the symmetry, +> and `space_group` in gemmi's canonical spelling. No recipe was ever written +> against the earlier draft. + - **Recipe frame** (`CoreRecipe`): `schema_name` (`"."`), `core_schema_version`, `engine_schema_version`, `metadata`, `payload` (typed by the engine schema). Unknown keys are errors at every level. @@ -29,10 +37,10 @@ engine schemas adopt it in re/04–06. at most **1 MiB** as UTF-8 JSON. The cap is the constant `schema_core.METADATA_MAX_BYTES`; change it there and record the change here. - **Parameters**: `[value, refine_flag]` (no bounds) or - `[value, refine_flag, min, max]` (bounds the engine honors). A bounded list - where bounds aren't supported is an error. `refine_flag` is a JSON boolean. - `value` may be `null` (= start from the phase structure's value) only for - quantities that mirror a structure value. + `[value, refine_flag, min, max]` (bounds the engine honors; `min`/`max` may + be `null` = open). A bounded list where bounds aren't supported is an error. + `value` is always a number and `refine_flag` a JSON boolean; neither is ever + `null`. - **Data and ranges**: `xrd_data` (2θ in degrees, weights 1/σ², validated as in 0.26.0); `fit_range` `[min, max]`, with `max > min`, inside the data's 2θ range. - **Background**: Chebyshev (`num_coefficients`, `coefficients`, `refine_flag`). @@ -43,40 +51,144 @@ engine schemas adopt it in re/04–06. take a whole number (`4` or `4.0`), not `4.5`. - **Accepted core versions** (this release): `==1.0.0`. -- **Phase structure** (`PhaseStructure`): `phase_name`, `space_group`, - `unit_cell`, `atoms` (keyed by label). Structural interpretation is checked - once, in core, so every engine gets the same structure. All structural - problems are reported together, each at its own field (`unit_cell`, - `atoms.