Atlas release 2.2.0 and generator 4.0.0 for version 1.7.0 (design note)¶
Status: Done (D-204, D-205; released in
v1.7.0) · Date: 2026-10-30 · Decisions: D-204 (release 1.7.0), D-205 (the pins), D-206 (the public site), ADR-035 (amends ADR-033) · Precedent: 1.6.0 (D-197 to D-199)
Goal¶
BEMGen 1.7.0 reads atlas release 2.2.0's exports and draws schedules with the released generator atlas-schedules 4.0.0 (the atlas's ADR 0051 §8, "what a consumer changes"). Nothing else changes in behaviour.
Parts, each test-first¶
- Program JSON schema (
src/Lod.ProgramJson/Schemas/program-json-v5.4.schema.jsonand its fixture copy): atlas2b3a6870's copy, whose only change issource.releaseas the pattern^atlas-release-\d+\.\d+\.\d+$in place of the enum (two places). First the tests: an export with the labelatlas-release-2.2.0reads (all seven fixtures), a later label reads, a label of another shape is refused at/source/release; the 2.1.0 test stays. The construction schemas (4.3.0, 3.1.0, mass 1.1.0, ground 1.0.0) are byte-identical at2b3a6870and need nothing; their refusal message names 2.2.0. - Schedule Draw on 4.0.0 (ADR-035):
ScheduleDrawSetting(setting 2.0.0, pins 4.0.0 / 4.0.0 / release 2.2.0 with its manifest SHA-256),GeneratorRecipes(reads 2.2.0'sgeneration.json),ScheduleDrawer(the request of schema 4.0.0 with the export's ID and view, services from the export, targets by amplitude),Bundle(release block, owners'values), provenance. First the tests: the request BEMGen writes for the recorded instances is the new recorded request; a 90.1 filled and a source export each name their view and the matching configuration; a DOE Ref filled export asks forsourcewithScheduleDrawValuesSource; agenerator.jsonand a 1.0.0 setting are refused with their messages; a bundle of another release or manifest, or with another owner view, is refused; the methods other thancomstock_hoursandfixedare refused. - The recorded draw (
tests/Lod.ProgramJson.Tests/Fixtures/draw/):generation.doe-ref-1980-2004.medium-office.json(from release 2.2.0) in place ofgenerator.json,setting.json2.0.0,request.jsonas BEMGen now writes it, andbundle.jsonrecorded with the 4.0.0 wheel inD:\bemgen-venv-schedules;RealDrawTestswith the console script and withpython -m atlas_schedules, generator 4.0.0, no pre-release warning, two runs byte-identical. - Test suites (
scripts/TestSuiteGenerator):schedules.recipeslistsgeneration.jsonfiles; the fixtures and README follow. - Grasshopper: Schedule Draw's descriptions name 4.0.0,
generation.json, and setting 2.0.0; GUIDs, inputs, outputs, and defaults unchanged. The smoke specschedule-draw, the exampleschedule-draw.gh, and the examples' Run-true check use the new fixtures. - Release 1.7.0 as 1.6.0 was (D-197 to D-199): version, examples rebuilt, rhino-smoke, 1.6.0 definitions reopened, sync-docs, decision log, PR, tag, fresh-clone gate, release files, GitHub releases, docs site.
Invariants¶
Unchanged: a drawn load keeps the program's magnitude, amplitude × Σ values equals the bundle's annual total within ToleranceSettings.RelativeLoad, the drawn documents read back, the same inputs give byte-identical documents. No tolerance changes.