From 7660068512d9c59228266d38f01ea12f05d2c9fd Mon Sep 17 00:00:00 2001 From: Seun Akanni Date: Mon, 24 Aug 2026 11:04:40 +0100 Subject: [PATCH 1/2] validate: serialisation proxy pinned to the item 4 fix (not for merge) --- .github/workflows/ci.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..c11389da --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,19 @@ +# Sandbox validation of CI_Toolkit PR #9: forces the ci-serialisation baseline leg. +# Pinned to the fix branch. Not for merge. +name: CI +on: + pull_request: + branches: [develop] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + ci-serialisation: + runs-on: windows-2025-vs2026 + timeout-minutes: 90 + steps: + - uses: BuroHappoldEngineeringSandbox/CI_Toolkit/.github/actions/ci-serialisation@validate/item4-integration + with: + app_id: ${{ secrets.BHOM_APP_ID }} + private_key: ${{ secrets.BHOM_APP_PRIVATE_KEY }} + base_ref: ${{ github.base_ref }} From bc961c099f1db6796a4d618d85e68c5ac4e3820e Mon Sep 17 00:00:00 2001 From: Seun Akanni Date: Mon, 24 Aug 2026 11:04:41 +0100 Subject: [PATCH 2/2] validate: deliberate non-round-tripping type to force the baseline leg (not for merge) --- XML_oM/Item4Fixture/UnserialisableFixture.cs | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 XML_oM/Item4Fixture/UnserialisableFixture.cs diff --git a/XML_oM/Item4Fixture/UnserialisableFixture.cs b/XML_oM/Item4Fixture/UnserialisableFixture.cs new file mode 100644 index 00000000..cf8d13c4 --- /dev/null +++ b/XML_oM/Item4Fixture/UnserialisableFixture.cs @@ -0,0 +1,36 @@ +/* + * DELIBERATE SERIALISATION FIXTURE. NOT FOR MERGE. + * + * Authored to validate CI_Toolkit PR #9 (findings-register item 4). ci-serialisation only + * runs its baseline leg when the branch leg reports status == 'Error', and no sandbox repo + * currently produces a serialisation failure, so the baseline path had never executed under + * the fix. This type forces one. + * + * Why it fails: Helpers.ObjectTypesToTest() selects every non-abstract IObject whose every + * property sits in a BH.* or System.* namespace, so System.IntPtr passes selection. The BHoM + * serialiser has no BSON mapping for IntPtr, so ToJson() throws, Verify records an error, the + * json comes back empty and ObjectToFromJson returns TestStatus.Error for this type. + * + * The failure is subject-side and exists only on this branch, so the baseline leg should not + * see it and the comparator should report a regression. That is the intended outcome. + */ + +using System; +using System.Collections.Generic; + +using BH.oM.Base; + +namespace BH.oM.XML.Item4Fixture +{ + public class UnserialisableFixture : IBHoMObject + { + // The whole fixture: IntPtr has no BSON serialiser. + public virtual IntPtr Handle { get; set; } = IntPtr.Zero; + + public virtual Guid BHoM_Guid { get; set; } = Guid.NewGuid(); + public virtual Dictionary CustomData { get; set; } = new Dictionary(); + public virtual string Name { get; set; } = ""; + public virtual FragmentSet Fragments { get; set; } = new FragmentSet(); + public virtual HashSet Tags { get; set; } = new HashSet(); + } +}