What happens
hydra-gates/scripts/generate_mock_register.py <app> --keep is documented as preserving the existing mock register and adding demo objects for schemas that lack them. On 2026-09-26 four independent build lanes on learniq, integriq and openregister ran it to satisfy gate-101 (demo-data-coverage, ADR-111 rule 1) and every run rewrote the whole file: it reconstructs components from scratch, drops the components.schemas block the committed file still carries, reformats every line, and in one case downgraded info.version from 1.1.0 to 1.0.0. Observed diffs: 58,910 lines (learniq #908), 22,084 deletions (learniq #904), 22,080 lines (learniq #912), 11,459 to 4,940 lines (integriq #2183). Each lane caught it with git diff --stat before committing and fell back to calling _object_for() directly and splicing the new objects into components.objects.
Why it matters
Gate-101 only runs with a delta base (--base origin/development), so a lane first meets it in CI, reaches for the documented fix, and gets a diff that would break check:register in the same PR. The safe path is undocumented.
Ask
Either make --keep genuinely additive (read the existing file, add only the missing objects, leave schemas, info.version and formatting untouched), or rename it and document the _object_for() splice as the supported way to add demo data to an existing register. A unit test that runs --keep against a register with a components.schemas block and asserts a diff of only added objects would pin it.
What happens
hydra-gates/scripts/generate_mock_register.py <app> --keepis documented as preserving the existing mock register and adding demo objects for schemas that lack them. On 2026-09-26 four independent build lanes on learniq, integriq and openregister ran it to satisfy gate-101 (demo-data-coverage, ADR-111 rule 1) and every run rewrote the whole file: it reconstructscomponentsfrom scratch, drops thecomponents.schemasblock the committed file still carries, reformats every line, and in one case downgradedinfo.versionfrom 1.1.0 to 1.0.0. Observed diffs: 58,910 lines (learniq #908), 22,084 deletions (learniq #904), 22,080 lines (learniq #912), 11,459 to 4,940 lines (integriq #2183). Each lane caught it withgit diff --statbefore committing and fell back to calling_object_for()directly and splicing the new objects intocomponents.objects.Why it matters
Gate-101 only runs with a delta base (
--base origin/development), so a lane first meets it in CI, reaches for the documented fix, and gets a diff that would breakcheck:registerin the same PR. The safe path is undocumented.Ask
Either make
--keepgenuinely additive (read the existing file, add only the missing objects, leaveschemas,info.versionand formatting untouched), or rename it and document the_object_for()splice as the supported way to add demo data to an existing register. A unit test that runs--keepagainst a register with acomponents.schemasblock and asserts a diff of only added objects would pin it.