Repository navigation
openehr-specs: README.adoc to README.md, no BMM work in the ITS repos, load every included BMM (#10) - #12
Merged
Conversation
…rk out of the ITS repos Scaffold template set revision 4. A root README.adoc no longer stands in for README.md: the plan reports it as convert (a rewrite, or a merge when both exist), and the skill renames it with git mv and rewrites the markup by references/readme-markdown.md; the script writes nothing for it. ITS-XML, ITS-BMM, ITS-JSON and ITS-REST hold no model of their own, so the scaffold never offers them a computable/BMM schema or asks Docker, and rejects a bmm_schema_id there; bmm-authoring edits no schema there, and class-generation and regen-classes run no bmm-publisher command. validate.py checks that those four skills name every excluded repo listed in the template set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…adme-md-its-guard # Conflicts: # CHANGELOG.md # docs/testing.md # plugins/openehr-specs/skills/bmm-authoring/SKILL.md # plugins/openehr-specs/skills/scaffold/assets/template-set.json
…able command
The AGENTS.md class-table command loaded only BASE with -d, so AM 2.4.0, which also includes LANG, rendered its LANG types as dangling /classes/<Type> links. The new variable bmm_dependencies lists what to load: BASE first for every component but BASE (TERM includes nothing yet needs it for String), then every other schema the BMM's includes name, each from the sibling clone of its component; a missing clone is left out with a warning. It is read from the repo on every run (prefer_inferred), and base_bmm_schema_id is now derived from it. The template engine gains {{#each}} over a comma-separated value and a component filter. Folded into the unreleased template set revision 4.
Fixes #10
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sebastian-iancu
changed the base branch from
feat/openehr-specs-bmm-authoring
to
main
October 9, 2026 15:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #10.
Summary
Scaffold template set revision 4 (unreleased, so it carries all three changes):
README.adocbecomesREADME.md, BMM work stays out of the ITS repositories, and the class-table command loads every schema the BMM includes (#10).main, with #11, is merged in.1. A root
README.adocbecomesREADME.mdREADME.adocno longer stands in forREADME.md(it moves fromalternativesto the newconvert_from). The plan reports a new action,convert: a rewrite whenREADME.mdis missing, a merge-and-delete when both exist.README,README.rstandREADME.txtare still accepted as they are, and a repo with no README still gets one created.git mv README.adoc README.mdto keep the history, then rewrites the markup by hand following the newscaffold/references/readme-markdown.md. That reference maps every construct the 13 existingREADME.adocfiles use: titles,URL[text]andlink:links, listings, admonitions, bold, one table and bullets. The rewrite must keep all content, and other files that nameREADME.adocare updated too.specifications-AA_GLOBAL's publishing tooling reads a component'sREADME.adoc, so the rename is safe for publishing.2. ITS-XML, ITS-BMM, ITS-JSON and ITS-REST are excluded from BMM work
These repos hold no model of their own. ITS-BMM republishes the component repos' JSON and generates its ODIN and YAML with its own
Makefile. ITS-XML holds XSDs, ITS-JSON JSON Schema (draft-07) files and ITS-REST OpenAPI, and bmm-publisher has no writer for any of those formats.scaffold: thebmmfile getsexcluded_components. Those repos are never offered acomputable/BMMschema, even ininitmode, and Docker is never asked. A non-emptybmm_schema_idorbmm_dependenciesis reported as invalid there.bmm-authoring("Where It Applies", plus a description anti-trigger),class-generation(Guardrails, workflow step 1) andregen-classes(new step 1): stop in those repos. They edit no schema there and run nobmm-publishercommand, and they point to the component repo, or to ITS-BMM'smake generate.scripts/validate.py: fails when any of these four skills does not name every id infiles[bmm].excluded_components, so the prose cannot drift from the template set. For the scaffold the rule is enforced in code. For the other three it is an instruction the model follows.3. #10: the class-table command loads every included schema
The
AGENTS.mdcommand loaded only BASE with-d. AM 2.4.0 also includes LANG, so its LANG types (STATEMENT_SET,ASSERTION,EXPR_LEAF, ...) came out as dangling/classes/<Type>links.bmm_dependencies. It is comma-separated and worked out oncebmm_schema_idis known, from that schema'sincludes(or the bundled copy's, for a new repo).../specifications-BASEholds it, else the highest there. Then every other included id, from../specifications-<COMPONENT>/computable/BMM/(openehr_lang_1.1.0→LANG).-dBASE itsStringlinks render aslink:/classes/String(checked with bmm-publisher 0.12.0).prefer_inferred, puts the inferred value ahead of the recorded one, so an include added later is picked up. An explicit--varstill wins.base_bmm_schema_idis now derived from the list, for the empty-schema template'sincludes. Passing it with--varis an "unknown variable" error, as it is for every derived variable. The SKILL now listsbmm_dependenciesamong the values to confirm.{{#each name}}…{{/each}}repeats its body per comma-separated item as{{item}}; a block nested inside it is rejected. A newcomponentfilter maps a schema id to its clone. Thebuildregion emits one-vmount and one-dper dependency. UnmodifiedAGENTS.mdbuild regions update on the next run. For RM and TERM only the comment line changes, because their single BASE dependency gives the same mount and-dlines as before.includesis read. That suffices today, because LANG includes only BASE. This is listed inmaintaining.mdin place of the old "One BMM dependency" limit.Verification
--var. Five{{#each}}engine tests cover the filter, empty lists, nesting, escaping and{{item}}outside a loop.validate.pyandscaffold.py checkpass; the new validator check failed on all four skills before their text was added.planandrenderagainst the real sibling clones left every working tree unchanged:readmebmmbmm_dependenciesconvertexists(1.4.0, 2.4.0)openehr_base_1.3.0, openehr_lang_1.1.0existsopenehr_base_1.3.0existsopenehr_base_1.3.0convertskippedexists(alreadyREADME.md)skippedrenderwrites into AM'sAGENTS.md, unchanged. It mounts BASE and LANG and exits 0. The "not defined in any loaded schema" warnings drop from 5 (BASE only) to 1.Out of scope: one AM type LANG 1.1.0 does not define
The remaining warning is
EL_BOOLEAN_EXPRESSION. AM 2.4.0 uses it, butopenehr_lang_1.1.0does not define it; only LANG 1.0.0 and the 1.1.0 BMM3 overlay do. That is a gap in the AM/LANG models, not in the scaffold, and it belongs in a SPECAM or SPECLANG ticket.Checklist
python3 scripts/validate.pyandpython3 -m unittest discover -s scripts -p 'test_*.py'passbmm-authoring's description changed, by one anti-trigger clause. The scaffold script was exercised against real repos as described above, but not through/openehr-specs:scaffold, and noREADME.adocconversion was run end to end.Unreleased(Changed, plus a Fixed entry for scaffold: class-table command in AGENTS.md supports only one BMM dependency (AM 2.x also includes LANG) #10); no version bumpincludes, and the README constructs were each checked against the clones🤖 Generated with Claude Code