Skip to content

Q2 2026 — System.Text.Json migration + quarterly work#2

Merged
michaldengusiak merged 5 commits into
HoareLea:masterfrom
SAM-BIM:sow/2026-Q2
Jul 20, 2026
Merged

Q2 2026 — System.Text.Json migration + quarterly work#2
michaldengusiak merged 5 commits into
HoareLea:masterfrom
SAM-BIM:sow/2026-Q2

Conversation

@michaldengusiak

Copy link
Copy Markdown
Member

Summary

Quarterly Q2 2026 work from the SAM-BIM fork merging back into the upstream.
Includes the Newtonsoft.Json → System.Text.Json.Nodes migration of the
entire SAM-BIM stack (per-repo PRs already merged into SAM-BIM's sow/2026-Q2).

Highlights of this quarter

  • All IJSAMObject implementations migrated from JObject/JArray/JToken to
    JsonObject/JsonArray/JsonNode.
  • FromJObject / ToJObject renamed to FromJsonObject / ToJsonObject.
  • System.Text.Json 10.0.8 replaces Newtonsoft.Json 13.0.3 in every csproj
    (except SAM_Revit which keeps Newtonsoft loadable for Revit's runtime).
  • Wire format preserved bit-for-bit (14 fixture round-trip tests in SAM/SAM.Tests).
  • 5 latent pre-existing bugs fixed (DateTime/string bleed, NCMData enum round-trip,
    Log identity loss, SearchWrapper missing type discriminator, RelationCollection
    wrong-jObject-passed).

Verification

  • Full BuildAlls_v3 RestoreCleanRebuild against the merged sow/2026-Q2 chain:
    0 errors, 144 artifacts.
  • All 32 per-repo migration PRs on SAM-BIM:sow/2026-Q2 passed build + spdx CI.
  • Local Rhino / Revit / Tas runtime smoke validated.

Test plan

  • Upstream CI builds (if configured)
  • Reviewer spot-check of IJSAMObject API rename
  • After merge, downstream forks sync master from upstream

🤖 Generated with Claude Code

michaldengusiak and others added 2 commits May 15, 2026 22:51
Replaces the older spdx-check.yml (literal en-dash grep, top 6 lines,
PR-only trigger) with the modern template shipped on SAM core:
- grep -qE with [-–] char class — accepts both hyphen-minus and en-dash
- 20-line lookback (was 6)
- BOM and CR stripping
- mapfile + diff-filter for cleaner change detection
- Adds workflow_dispatch trigger

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Workflow harmonization (CI housekeeping)
* build: Directory.Build.props for centralised SAMVersion stamping

Mirrors SAM-BIM/SAM#7. Stage 2 of the AssemblyVersion versioning migration.

* fix: replace literal u{2013} escape with actual en-dash in SPDX header

PowerShell 5.1 doesn't support backtick-u escape sequences; the
apply-stage2.ps1 script leaked them as literal text in 'Copyright (c) 2020u{2013}2026'.

* fix: relax SAMVersion.g.cs Target condition to != 'true'

Codex P1 on SAM_LadybugTools#4: classic (non-SDK) csprojs don't set
GenerateAssemblyInfo at all, so the previous '== false' condition skipped
them. Switching to '!= true' catches both GenerateAssemblyInfo=false
(SDK projects with legacy AssemblyInfo.cs) AND empty (classic projects).

* ci: Codex P2 fixes — four-part SAMVersion, prefer head_ref for sow PRs

- Append .0 so SAMVersion is 4-part (AssemblyFileVersion expects 4 parts).
- Prefer github.head_ref when it matches sow/yyyy-Qx (release-promotion PRs).
- Mirrors SAM sow/2026-Q2 6d87d98e.

* ci: upgrade dep-clone to candidate-based with sow branch resolution

Codex P1 from SAM_Excel#3: simple clone defaults to remote HEAD,
mismatches sow branches. Mirrors fix in SAM_Excel.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Mirrors SAM sow/2026-Q2. Adds AssemblyInformationalVersion attribute generation to
Path D's SAMVersion.g.cs Target — covers Grasshopper / Tas-bridge assemblies that
have GenerateAssemblyInfo=false, so they also get the CI commit SHA stamp in their
ProductVersion field. SDK projects pick up InformationalVersion via PropertyGroup
auto-gen as before. Local dev builds unchanged.
Mirrors SAM sow/2026-Q2. Adds AssemblyInformationalVersion attribute generation to
Path D's SAMVersion.g.cs Target — covers Grasshopper / Tas-bridge assemblies that
have GenerateAssemblyInfo=false, so they also get the CI commit SHA stamp in their
ProductVersion field. SDK projects pick up InformationalVersion via PropertyGroup
auto-gen as before. Local dev builds unchanged.
@michaldengusiak
michaldengusiak merged commit e4efa0f into HoareLea:master Jul 20, 2026
2 checks passed
@michaldengusiak
michaldengusiak deleted the sow/2026-Q2 branch July 20, 2026 09:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants