From c75ee576545d7c95830cd3227cef9c07bdc4ea6e Mon Sep 17 00:00:00 2001 From: Seun Akanni Date: Tue, 8 Sep 2026 15:53:38 +0100 Subject: [PATCH 1/3] fix(ci): exclude the versioning test sets from the dataset compliance pathspec ci-dataset-compliance asserts that every file it selects deserialises into a BH.oM.Data.Library.Dataset. This repository's versioning test sets match the selector but are JSON Lines of oM objects, so all 80 fail by design. Measured against this checkout: :(icase)*datasets*.json 80 files ... :(exclude,icase)*Versioning_Test/Datasets/* 0 files The same one-line change is in BHoM/CI_Toolkit templates/BHoM/ci-beta.yml and templates/BHE/ci-beta.yml. Per BHoM/internal-tickets#39 nothing propagates a template change to onboarded repositories, so this repository needs its own edit. After both land, this file remains byte-identical to its template. Refs BHoM/internal-tickets#36 --- .github/workflows/ci-beta.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-beta.yml b/.github/workflows/ci-beta.yml index b7ade02..21d53af 100644 --- a/.github/workflows/ci-beta.yml +++ b/.github/workflows/ci-beta.yml @@ -70,7 +70,18 @@ jobs: uses: BHoM/CI_Toolkit/.github/actions/ci-compliance@develop with: check_type: dataset - patterns: ':(icase)*datasets*.json' + # Versioning_Test/Datasets holds JSON Lines of oM objects, not + # BH.oM.Data.Library.Dataset documents, so IsValidDataset errors on every + # one of them. Measured: DatasetComplianceRunner exits 1 on 9.2/Objects.json + # and 0 on a real library dataset. Excluded rather than teaching the runner + # a second shape, because that would touch Test_Toolkit. See + # BHoM/internal-tickets#36. + # + # This excludes one directory layout, not a class of file. The selector is + # substring-based, not dataset-aware: '*' crosses '/' without :(glob), so + # the substring can come from a filename, a data directory, or a project + # directory named *_Datasets. See BHoM/internal-tickets#43. + patterns: ':(icase)*datasets*.json :(exclude,icase)*Versioning_Test/Datasets/*' app_id: ${{ secrets.BHOM_APP_ID }} private_key: ${{ secrets.BHOM_APP_PRIVATE_KEY }} From 8079c9624193baf1d3c1d37a3e9317fd7d72ad0b Mon Sep 17 00:00:00 2001 From: Seun Akanni Date: Wed, 9 Sep 2026 10:29:01 +0100 Subject: [PATCH 2/3] fix(ci): exclude Versioning_ upgrade maps from the dataset pathspec ci-dataset-compliance asserts that every file it selects deserialises into a BH.oM.Data.Library.Dataset. Versioning_.json are versioning upgrade maps holding {"Dataset":{"ToNew":..,"ToOld":..}} and can never be Dataset documents, so add a filename-anchored exclusion alongside the existing Versioning_Test/Datasets path exclusion. :(glob) keeps the token a filename match. Without it both wildcards cross '/', so the exclusion would also drop real datasets under any directory containing Versioning_. The ** anchor keeps it depth-agnostic and the [0-9] gate keeps a genuine dataset named Versioning_Rules.json in scope. This repository holds no file of that shape, so the token is a no-op here and is carried so the pathspec does not diverge from CI_Toolkit's templates. The surrounding comment is condensed; the fuller derivation and the assertions that pin each element of the token live in CI_Toolkit. Refs BHoM/internal-tickets#36, BHoM/internal-tickets#43. --- .github/workflows/ci-beta.yml | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci-beta.yml b/.github/workflows/ci-beta.yml index 21d53af..e825821 100644 --- a/.github/workflows/ci-beta.yml +++ b/.github/workflows/ci-beta.yml @@ -70,18 +70,12 @@ jobs: uses: BHoM/CI_Toolkit/.github/actions/ci-compliance@develop with: check_type: dataset - # Versioning_Test/Datasets holds JSON Lines of oM objects, not - # BH.oM.Data.Library.Dataset documents, so IsValidDataset errors on every - # one of them. Measured: DatasetComplianceRunner exits 1 on 9.2/Objects.json - # and 0 on a real library dataset. Excluded rather than teaching the runner - # a second shape, because that would touch Test_Toolkit. See - # BHoM/internal-tickets#36. - # - # This excludes one directory layout, not a class of file. The selector is - # substring-based, not dataset-aware: '*' crosses '/' without :(glob), so - # the substring can come from a filename, a data directory, or a project - # directory named *_Datasets. See BHoM/internal-tickets#43. - patterns: ':(icase)*datasets*.json :(exclude,icase)*Versioning_Test/Datasets/*' + # Excludes two shapes that match this selector but are not + # BH.oM.Data.Library.Dataset documents: Versioning_Test/Datasets, which is + # JSON Lines of oM objects, and Versioning_.json upgrade maps. + # Keep both controls on the last token: :(glob) stops its wildcards + # crossing '/', and [0-9] keeps a real Versioning_Rules.json in scope. + patterns: ':(icase)*datasets*.json :(exclude,icase)*Versioning_Test/Datasets/* :(exclude,glob,icase)**/Versioning_[0-9]*.json' app_id: ${{ secrets.BHOM_APP_ID }} private_key: ${{ secrets.BHOM_APP_PRIVATE_KEY }} From 496daf040348caec93e7786283bdf1005383d855 Mon Sep 17 00:00:00 2001 From: Seun Akanni Date: Tue, 29 Sep 2026 14:45:46 +0100 Subject: [PATCH 3/3] fix(ci): drop the upgrade-map token, it belongs in the runner Review asked for the Versioning_.json exclusion to be centralised rather than repeated in each repository's pathspec, because it is a rule about a file type that any versioning repository can hold. The rule now lives in the compliance runner's own filter, so this token is redundant here and would have had to be reverted once that lands. What stays is the Versioning_Test/Datasets exclusion, which is specific to this repository: 140 paths here and none in Test_Toolkit, BHoM_Engine, BHoM or BuroHappold_Versioning_Toolkit. Measured on this checkout with git ls-files: the selector alone reaches 80 files, and 0 with the remaining token. This repository holds no Versioning_.json, so the removed token matched nothing here. --- .github/workflows/ci-beta.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-beta.yml b/.github/workflows/ci-beta.yml index e825821..7151777 100644 --- a/.github/workflows/ci-beta.yml +++ b/.github/workflows/ci-beta.yml @@ -70,12 +70,13 @@ jobs: uses: BHoM/CI_Toolkit/.github/actions/ci-compliance@develop with: check_type: dataset - # Excludes two shapes that match this selector but are not - # BH.oM.Data.Library.Dataset documents: Versioning_Test/Datasets, which is - # JSON Lines of oM objects, and Versioning_.json upgrade maps. - # Keep both controls on the last token: :(glob) stops its wildcards - # crossing '/', and [0-9] keeps a real Versioning_Rules.json in scope. - patterns: ':(icase)*datasets*.json :(exclude,icase)*Versioning_Test/Datasets/* :(exclude,glob,icase)**/Versioning_[0-9]*.json' + # Versioning_Test/Datasets matches this selector but holds JSON Lines of oM + # objects rather than BH.oM.Data.Library.Dataset documents, so every file in + # it fails. The exclusion is here because the directory is specific to this + # repository. Versioning_.json upgrade maps fail the same way but are + # a file type any versioning repository can hold, so that rule belongs in the + # runner and not in each repository's pathspec. + patterns: ':(icase)*datasets*.json :(exclude,icase)*Versioning_Test/Datasets/*' app_id: ${{ secrets.BHOM_APP_ID }} private_key: ${{ secrets.BHOM_APP_PRIVATE_KEY }}