Skip to content

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

  1. Program JSON schema (src/Lod.ProgramJson/Schemas/program-json-v5.4.schema.json and its fixture copy): atlas 2b3a6870's copy, whose only change is source.release as the pattern ^atlas-release-\d+\.\d+\.\d+$ in place of the enum (two places). First the tests: an export with the label atlas-release-2.2.0 reads (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 at 2b3a6870 and need nothing; their refusal message names 2.2.0.
  2. 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's generation.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 for source with ScheduleDrawValuesSource; a generator.json and 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 than comstock_hours and fixed are refused.
  3. The recorded draw (tests/Lod.ProgramJson.Tests/Fixtures/draw/): generation.doe-ref-1980-2004.medium-office.json (from release 2.2.0) in place of generator.json, setting.json 2.0.0, request.json as BEMGen now writes it, and bundle.json recorded with the 4.0.0 wheel in D:\bemgen-venv-schedules; RealDrawTests with the console script and with python -m atlas_schedules, generator 4.0.0, no pre-release warning, two runs byte-identical.
  4. Test suites (scripts/TestSuiteGenerator): schedules.recipes lists generation.json files; the fixtures and README follow.
  5. Grasshopper: Schedule Draw's descriptions name 4.0.0, generation.json, and setting 2.0.0; GUIDs, inputs, outputs, and defaults unchanged. The smoke spec schedule-draw, the example schedule-draw.gh, and the examples' Run-true check use the new fixtures.
  6. 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.