Repository navigation
sow/2026-Q3: SAM-BIM Q3 2026 updates - #176
Merged
Merged
Conversation
SAM_Systems now consumes SAM_Mollier's built DLLs (the new SAM.Analytical.Systems.Mollier bridge references ..\..\..\SAM_Mollier\build\SAM.*.Mollier.dll), so SAM_Systems.sln must be restored/built after SAM_Mollier. Reorder the dependency build list so SAM_Mollier precedes SAM_Systems while SAM_Systems stays ahead of SAM_Windows (canonical order: SAM_Psychrometrics -> SAM_Mollier -> SAM_Systems -> SAM_Windows), matching SAM_Deploy/BuildAll_Release_net.csproj. Without this the build breaks once the SAM_Systems Mollier bridge lands on sow/2026-Q3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…Revit (#7) * fix: implement new IGH_SAMComponent members (MinCompatibleVersion, ObsoleteSeverity) for SAM.ReconstructElement and SAM.TransactionalChain * fix: add missing SPDX license headers to Revit SAM component base classes * ci: resolve deps to canonical sow quarter branch on push builds The dependency-clone step derived the sibling branch from head_ref/base_ref (PR) or ref_name (push). On push events to a feature branch off a quarter branch (e.g. sow/2026-Q3-update-optimization), base_ref is empty and the feature branch name doesn't exist in the sibling repos, so every sibling (incl. SAM core) fell back to master. master lacks in-quarter API additions like IGH_SAMComponent.ObsoleteSeverity, so SAM_Revit's own components failed to compile (CS0246) on push builds even though the PR build passed. Add a canonical sow/YYYY-QN candidate (suffix stripped) plus a hard sow/2026-Q3 fallback so push and PR builds resolve the same dependency branch. Bumps the stale sow/2026-Q2 hard fallback to prefer sow/2026-Q3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Michal Dengusiak <tassimulation@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Convert all 17 remaining legacy Grasshopper components in this repo from GH_SAMComponent + imperative RegisterInputParams/RegisterOutputParams to GH_SAMVariableOutputParameterComponent with declarative GH_SAMParam[] Inputs/Outputs and name-based Params.IndexOfInputParam/IndexOfOutputParam lookups, following the pattern established by SAM PR HoareLea#40 and SAM_Tas PR #16. This is the 10th and final repo in the org-wide sweep. SAM.Analytical.Grasshopper.Revit (9): RevitMaterialLibrary (v1.0.0->1.0.1, 6c4f99f6-5f52-491d-823e-171a66c0d40c), RevitOverlapWalls (v1.0.0->1.0.1, bd72b694-f2a5-4dd7-ba36-e37d619fe374), RevitSAMAnalyticalByElement (v1.0.3->1.0.4, 9b809657-8de3-466e-b814-973b0677a37a), RevitSAMFloorsAndRoofsFromSpaces (v1.0.1->1.0.2, 90e18255-7b5e-4154-8f8c-615b62be273b), RevitSAMPanelsByCurtainWall (v1.0.0->1.0.1, 7a1e91e5-24f2-48f7-ae6c-b98438c6fbbd), RevitSAMPanelsFromSpaces (v1.0.0->1.0.1, ed3d4ef2-833d-40ce-9ad4-f20011ffac7e), SAMAnalyticalCreateMaterialLibrary (v1.0.1->1.0.2, f836f629-b8fb-41a8-9611-6783933ad6b2), SAMAnalyticalPanelsByBoundaries (v1.0.0->1.0.1, fcd537c9-0a80-472c-bc64-07f11c9aa879), SAMAnalyticalShellsBySpaces (v1.0.0->1.0.1, 352f8762-3aba-43b8-9bfc-d1024cedafd1). SAM.Architectural.Grasshopper.Revit (1): SAMArchitecturalLevelInformation (v1.0.1->1.0.2, b72abb0f-6672-41e8-987b-d63fe9eaf7b9). SAM.Core.Grasshopper.Revit (7): SAMCoreCreateConvertSettings (v1.0.0->1.0.1, da750879-e8e0-446d-ab7d-a705358ce304), SAMCoreDuplicatedElementIds (v1.0.0->1.0.1, 1c0aa12e-ffbc-434b-833a-dc157c589b4d), SAMCoreDuplicatedUniqueIds (v1.0.0->1.0.1, 8e7b22ef-9341-41ab-8165-16ce485b7f63), SAMCoreElementsByScopeBox (v1.0.0->1.0.1, 172b87f6-8b7c-444b-be49-dc7b7057a77e), SAMCoreFilterByElementIds (v1.0.0->1.0.1, 2eda1e16-2640-4da1-8557-6a74975bdaa6), SAMCoreGetLocation (v1.0.0->1.0.1, 348836ad-6a12-48fc-91ad-f939a8ebda6a), SAMCoreGetWalls (v1.0.0->1.0.1, 8fc5308e-45c4-410c-ae04-5b3f2563ab9e). Two Name/NickName mismatches found and fixed locally in the affected component's own constructor (same shared-base-class Clone() quirk found in SAM_LadybugTools): SAMAnalyticalCreateMaterialLibrary's "path_" input (real NickName "_path_") and SAMAnalyticalShellsBySpaces's "spaces_" input (real NickName "_space_"). SAMArchitecturalLevelInformation carries a third mismatch on the component's own Name/NickName ("SAMArchitectural.LevelInformation" vs "SAMCore.LevelInformation") and its "HighLevel" output (NickName "High Level") - the component-level one needs no fix (set via the base constructor call, not cloned), the output one is fixed the same way as the other two. 6 components (RevitOverlapWalls, SAMAnalyticalPanelsByBoundaries, SAMAnalyticalShellsBySpaces, SAMCoreCreateConvertSettings, SAMCoreElementsByScopeBox, SAMCoreGetWalls) cannot be captured by the metadata-tier harness in this environment: their constructors reference RevitAPI.dll types, and RevitAPI.dll throws FileNotFoundException when loaded without a real Revit install - confirmed identical failure on both baseline and migrated builds. Validated by manual source-level parameter-contract review instead. All #if Revit2017...Revit2024 / #else preprocessor blocks (.IntegerValue vs .Value, DUT_METERS vs UnitTypeId.Meters, UnitType.UT_Length vs SpecTypeId.Length) preserved byte-for-byte. ComponentGuid, parameter order, names, nicknames, descriptions, access, optional state, and persistent defaults preserved exactly (verified via the generic reflection-based contract-capture harness, commit bb31ba3: 0 unexplained differences between baseline and migrated builds across all 25 components in all 4 assemblies, including the 8 already-modern ones not in scope). LatestComponentVersion bumped by one patch each. Build clean, 0 errors, same warning counts as baseline (17/38/25/20 across the 4 projects). Generated by Michal Dengusiak and CodeClaude
SAM_Tas\benchmark\SAM.Analytical.Tas.Benchmark references SAM_Validation\build\SAM.Analytical.Benchmark.dll by HintPath, so a build that clones SAM_Tas without SAM_Validation fails with CS0234 - "the type or namespace name 'Benchmark' does not exist in the namespace 'SAM.Analytical'". Latent since the benchmark project landed in SAM_Tas: this repo's CI has not run on a PR since, so nothing surfaced it. It was hit for real on SAM_Revit_UI, and this repo has the identical gap. SAM_Validation goes into both the clone list and the ordered build list in the same slot BuildAlls_v3.csproj uses locally - after SAM_SolarCalculator, before SAM_Tas. It needs only SAM and SAM_Mollier, both already built above it. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ci: build SAM_Validation before SAM_Tas
Removes dead Revit-year plumbing across the repo now that the supported range is Revit 2025+: - #if Revit2017..Revit2024 blocks collapsed to their live branch in the .cs sources (preprocessor-resolved, not hand-edited) - Debug20XX/Release20XX TargetFramework conditions, PropertyGroups, RevitAPI*/RhinoInside.Revit reference blocks and Configurations entries dropped from all 10 csproj files (SAM_Revit, Grasshopper, Pdf) - matching Debug20XX/Release20XX entries dropped from SAM_Revit.sln - references/Revit 2020..2024/ (dead RevitAPI*/RhinoInside DLLs) deleted - added the SPDX + copyright header to 57 pre-existing .cs files that were missing it, since every changed .cs file must carry it for CI Revit 2027 is not added here: this machine has no Revit 2027 install and no RevitAPI/RevitAPIUI/RevitAPIIFC SDK DLLs for it. Adding 2027 is a follow-up once those DLLs are available. Verified via MSBuild.exe -t:Rebuild: Debug2025 and Debug2026 both build clean with zero errors, and Debug2024 now correctly fails as an invalid solution configuration (MSB4126), confirming the dead configs are fully gone rather than silently still present. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
SAM_Revit's workflow builds SAM_Revit_UI as its downstream leg, but SAM_OCCT was missing from both dependency lists. SAM.Analytical.Revit.UI moved its Revit topology conversion off Topologic and onto SAM_OCCT (SAM_Revit_UI#10, merged today), so the leg failed: AnalyticalModel.cs(166,45): error CS0103: The name 'OCCT' does not exist in the current context This is pre-existing and unrelated to the Revit-year drop in this branch - the OCCT migration landed after SAM_Revit's last green run, and this PR is simply the first build to exercise the cross-repo leg since. SAM_Revit itself has no Topologic or OCCT references at all. This workflow keeps two separate lists and both needed the change: - $deps (clone list) - so the repo is fetched - $orderedRepos (build list) - so its managed assemblies actually exist; cloning alone would leave the SAM_OCCT\build\*.OCCT.dll HintPaths unresolved Added in the same slot SAM_Revit_UI uses: after SAM_Solver (SAM and SAM_Solver are its only sibling dependencies), before SAM_SolarCalculator. No platformOverride needed - only SAM_OpenStudio requires x64. Also adds SAM_OCCT_SKIP_NATIVE_BUILD=true, since the native OCCT layer (vcpkg/OpenCASCADE) is unavailable on the runner; the post-build steps that copy the native kernel are all 'if exist' guarded, so the managed OCCT assemblies are enough to link here. The shipped native binaries come from SAM_Deploy. SAM_Topologic is dropped from both lists, since SAM_OCCT replaces it and nothing in the chain references it any more - the only remaining mentions anywhere are 'if exist ... del /Q' cleanup lines in SAM.Analytical.Revit.UI.csproj that delete Topologic DLLs from the output dir and need no clone. SAM_Revit was the last workflow in the workspace still cloning it; SAM_Revit_UI had already removed it. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1. Deduplicated PropertyGroups (review finding 1). SAM.Units.Revit.csproj and SAM.Geometry.Revit.csproj each carried three PropertyGroups conditioned on 'Debug2025|AnyCPU' (and three on 'Debug2026|AnyCPU'): two OutputPath-only duplicates plus the real block with DebugSymbols/DefineConstants/etc. Values were identical so it was last-one-wins and harmless, but since this PR already removed the 2020-2024 duplicates, the surviving 2025/2026 ones are now folded down to one group per configuration. 2. Fixed SetLeaderEnd using the elbow point (review finding 2). SAM.Geometry.Revit/Convert/ToRevit/IndependentTag.cs:84 passed `elbow.U, elbow.V` into SetLeaderEnd where `end.U, end.V` was intended, so a tag's leader end landed on top of its elbow instead of at the recorded end point. Pre-existing (it was already in the old #else branch, so the #if collapse did not introduce it) but a real round-trip defect, and the reviewer was right that it is now the only surviving branch - fixing rather than deferring, per the "address every valid finding" rule. Not folded in: the same duplicate-PropertyGroup pattern exists in the four Grasshopper csproj files (up to 6 Debug2025 groups in SAM.Analytical.Grasshopper.Revit.csproj) and three more SAM_Revit core projects. Those files mix 'Debug2025|AnyCPU' and 'Debug2025|x64' conditioned groups, so collapsing them safely needs a per-platform check that no x64-specific override gets conflated into an AnyCPU group - too risky to bundle into this drop PR, so it is queued as its own task. Verified via MSBuild.exe -t:Rebuild: Debug2025 and Debug2026 both build clean, 0 errors. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
chore: drop Revit 2017-2024 support (supported range now 2025-2026)
PR #10 folded the redundant Debug2025/2026|AnyCPU PropertyGroup duplicates in SAM.Units.Revit.csproj and SAM.Geometry.Revit.csproj, but deliberately left the same pattern elsewhere: it was worse in the Grasshopper projects and mixed AnyCPU/x64 conditions, so a careless merge risked conflating an x64-specific override into an AnyCPU group. Simple cases (AnyCPU-only, same pattern as PR #10): - SAM_Revit/SAM.Analytical.Revit.csproj - SAM_Revit/SAM.Architectural.Revit.csproj - SAM_Revit/SAM.Core.Revit.csproj Each had one OutputPath-only duplicate folded into the adjacent full metadata group per Debug2025/2026|AnyCPU condition. Grasshopper cases, verified per-condition before touching anything (a Python script computed the last-wins effective property map for every Condition, confirmed identical before/after, and flagged any duplicate where values actually disagreed): - SAM.Analytical.Grasshopper.Revit.csproj: only declares Platforms=x64, so its AnyCPU-conditioned groups are dead configuration; found and fixed a real masked bug in the process -- a Release2026|AnyCPU duplicate carried DefineConstants=TRACE;Revit2025 (wrong year), which a later correct duplicate silently overrode. Folded to the effective (last-wins) values so behaviour is unchanged. - SAM.Architectural.Grasshopper.Revit.csproj: declares Platforms=AnyCPU;x64; AnyCPU and x64 groups collapsed independently, values agreed across all duplicates. - SAM.Core.Grasshopper.Revit.csproj: same pattern, AnyCPU and x64 kept separate, values agreed. - SAM.Geometry.Grasshopper.Revit.csproj: same pattern; found another real masked bug -- the OutputPath-only Release2025/2026 stub groups used "..\build\" (one level too shallow) while the later full groups correctly used "..\..\build\", so the shallow path was always silently overridden. Folded to the effective (correct) value. None of the four Grasshopper projects define an x64 solution platform; they receive x64 via the project-platform mapping under the solution's "Any CPU" configurations, so the x64-conditioned groups are the ones that actually build day to day -- kept fully separate from the AnyCPU groups throughout. Verified two ways: 1. MSBuild.exe -t:Rebuild for Debug2025, Debug2026, Release2025, and Release2026 (Any CPU) -- 0 errors on both the pre-change and post-change tree. 2. MSBuild -getProperty evaluation of every touched project, across all four configurations and every platform each project actually uses (AnyCPU and/or x64), dumped before and after -- byte-identical. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fix: collapse duplicate Debug/Release2025|2026 PropertyGroups
Adds Debug2027/Release2027 alongside the existing 2025 and 2026 configurations, following the same per-year shape this repo already uses, plus the Revit 2027 SDK assemblies under references/Revit 2027. Revit 2027 is built on .NET 10, not .NET 8: RevitAPI 27.0.4.0 binds System.Runtime 10.0.0.0, and a net8.0-windows target fails with CS1705. The 2027 configurations therefore target net10.0-windows. 2025 and 2026 are untouched and still target net8.0-windows. One genuine API removal had to be handled. GBXMLExportOptions no longer carries ExportEnergyModelType, and the ExportEnergyModelType enum is gone with it - in 2027 the type exposes only ExportAnalyticalSystems and ForceGbXMLExport. The assignment in Convert/TogbXML/gbXML.cs is now guarded by #if Revit2025 || Revit2026. There is no replacement on the options object, so under 2027 the export follows EnergyDataSettings alone; whether that produces the same gbXML needs a model comparison, which this change does not attempt. The four Grasshopper projects are deliberately left at 2025/2026. They reference RhinoInside.Revit, RhinoInside.Revit.GH and RhinoInside.Revit.External out of references/Revit <year>, and no 2027 build of those exists yet. They are mapped in the solution to their 2026 configuration with no Build.0 entry, so a 2027 solution build skips them rather than failing on missing HintPaths. Verified: SAM_Revit.sln builds clean under Release2027 (six projects), and SAM.Analytical.Revit rebuilds clean under Release2025 and Release2026, so neither existing year regressed. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
feat: add Revit 2027 support (supported range now 2025-2027)
SAM_Revit's own build.yml never built Debug/Release2027 - only 2025 and 2026. So every CI check on the Revit 2027 PRs (#12 here, #12/#13/#15/#16 in SAM_Revit_UI) went green without CI ever compiling a single 2027 configuration. All verification that Release2027 builds clean was done locally, by hand, in the session that added it - never confirmed by CI. Clones the existing 2025/2026 clean+build+snapshot+verify pattern for 2027, and installs the .NET 10 SDK alongside 8 (Revit 2027 targets net10.0-windows; RevitAPI 27.0.4.0 binds System.Runtime 10.0.0.0, so a net8 target fails CS1705). The upload-artifact path list picks up the new _ci_artifacts\Revit 2027\ folder alongside 2025/2026. Generated by Michal Dengusiak and CodeClaude Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
BuildAlls_v3.csproj was retired locally in favor of BuildAlls_v4.csproj. Update the "same slot as" comments so they still point at a real file. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two fixes in the per-view TagElements overload, behaviour-preserving: - Replace the unfiltered FilteredElementCollector(document, view.Id) (which enumerated the entire contents of every view and then intersected against the candidate ids) with a single collector restricted by ElementIdSetFilter to the candidate element ids. - Replace the per-element GetDependentElements duplicate check with a per-view precomputed HashSet of host element ids that already carry an IndependentTag of the target tag type. Signatures unchanged; all existing callers (AddWallTags, AddWindowAndDoorTags, SAMCore.TagElements Grasshopper component) work unchanged. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: CodeClaude <noreply@anthropic.com>
- Scan for existing tags document-wide and filter by OwnerViewId instead of using the view-scoped collector, so tags hidden in the view still suppress duplicates (matches the previous GetDependentElements + ElementOwnerViewFilter semantics). - Remove null entries from the candidate id set alongside InvalidElementId before constructing ElementIdSetFilter. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: CodeClaude <noreply@anthropic.com>
perf: optimize Modify.TagElements per-view hot loop (AddWallTags slowness)
Running the Revit AddParameters command against the production shared-parameters
workbook (SAM_RequiredSharedParametersVer06t.xlsx, ~1000 rows) failed with
"The method or operation is not implemented".
Cause: Query.ForgeTypeId handled 16 spec names and threw NotImplementedException
for everything else. The workbook's "Revit Parameter Type" column uses the legacy
Revit ParameterType enum names and contains 15 more that were unmapped -
HVACPowerDensity (x14), ElectricalIlluminance (x7), Length (x7), HVACPower (x3),
ElectricalEfficacy (x2), ElectricalPower (x2), HVACVelocity (x2), Angle,
HVACDensity, HVACPressure, HVACThermalConductivity, Material,
HVACCoolingLoadDividedByVolume, HVACHeatingLoadDividedByVolume.
Two changes:
1. Added those 15 mappings. Verified by compiling SAM.Core.Revit against
Release2025, Release2026 and Release2027 - every SpecTypeId member resolves
on all three API versions.
2. Replaced the trailing throw with "return null". Both callers - AddParameters
and GenerateSharedParametersFile - already guard with "if (forgeTypeId != null)"
and skip the row, so null is the contract they expect. Throwing meant a single
unrecognized cell aborted the entire command and created no parameters at all;
the workbook has one such value ("Adroit", plainly a data-entry error), which
is now skipped instead of fatal.
Generated by Michal Dengusiak and CodeClaude
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The duplicate-tag precomputation added in #14 walks every IndependentTag in the document and filters by OwnerViewId in managed code - and it runs once per view. On a model with many floor-plan views that is O(views x all tags in model), which is the remaining reason AddWallTags still feels like it tags one by one. ElementOwnerViewFilter expresses exactly the same "owned by this view, whether or not it is visible in it" semantics natively, so Revit narrows the set instead of the loop. The managed OwnerViewId check is now redundant and removed. Behaviour-preserving: the hidden-tag case that #14's Codex round specifically fixed (a tag hidden in the view must still suppress a duplicate) is retained - ElementOwnerViewFilter is owner-based, not visibility-based, unlike the view-scoped FilteredElementCollector(document, view.Id) it replaced. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
TagSpaces still had the pre-#14 shape that TagElements was just fixed out of: for every space in the view it called space.GetDependentElements(...) and then document.GetElement(x) for each dependent id, only to ask whether a SpaceTag of the target type already exists. Replaced with a single per-view collector pass that builds a HashSet of space ids already carrying a SpaceTag of that type. ElementOwnerViewFilter preserves the owner-based semantics of the LogicalAndFilter it replaces, so a tag hidden in the view still suppresses a duplicate. Also materialize the spaces collector once - it was enumerated twice, by Count() and then by the foreach. Behaviour-preserving: same duplicate rule (same tag type, same owner view), same tag creation, same return value. Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…-types fix: map the remaining legacy spec names in Query.ForgeTypeId
perf: narrow the TagElements and TagSpaces duplicate scans
…2027 API EnergyAnalysisDetailModelOptions is deprecated in 2027 and Create(Document, options) will be removed in the next version. The energy model type now comes from Energy Settings (EnergyDataSettings.AnalysisType) alone. The old code set contradictory values - EnergyModelType.SpatialElement on the options object but AnalysisMode.BuildingElements on the settings - which 2025/2026 tolerated but 2027 rejects with a runtime range check in set_AnalysisType. Under Revit2027 only: - EnergyDataSettings.GetEnergyDataSettings replaces the deprecated GetFromDocument - AnalysisType = RoomsOrSpaces (equivalent of EnergyModelType.SpatialElement) - EnergyAnalysisDetailModel.Create(Document) replaces Create(Document, options) - GetAnalyticalSurfaces().Where(Type == Shade) replaces GetAnalyticalShadingSurfaces - ExportDefaults assignment dropped (deprecated) 2025/2026 code paths are unchanged.
fix: migrate energy analysis model creation off the deprecated Revit 2027 API
Generated by Michal Dengusiak and CodeClaude Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
7 app.config files were net472-era leftovers containing assembly binding redirects and <supportedRuntime sku=".NETFramework,Version=v4.7.2"/>-style runtime config, neither of which has any effect under .NET 8/10. Every project here targets net8.0-windows (Debug2025/Release2025, Debug2026/Release2026) or net10.0-windows (Debug2027/Release2027) and is OutputType Library, and a library's .dll.config is never read at runtime (only the host .exe.config is, and that host is Rhino.exe/Revit.exe, whose configs live elsewhere). Their only remaining effect was to emit stale SAM.*.dll.config files into build/ and the %APPDATA%\SAM deploy folder. Also drop the bare <Reference Include="System.IO.Compression" /> from SAM.Core.Grasshopper.Revit.csproj, the same leftover that produced the MSB3243 "no way to resolve conflict between System.IO.Compression" warning fixed for the base SAM repo in 73ff9d49. No compression types (ZipFile, GZipStream, DeflateStream, ZipArchive) are used anywhere in this project, so the reference was fully redundant. Verified per the five safety gates: no .NET Framework TargetFramework, every project OutputType Library, no ConfigurationManager/AppSettings/ OpenExeConfiguration usage, each app.config contains only assemblyBinding/bindingRedirect content, and no build file (csproj/props/ yml) references app.config/dll.config. Compile-only verified (dotnet build -t:Compile, which skips the PostBuild step that would mutate the installed %APPDATA%\SAM deploy folder) for all 7 affected projects at -c Release2026: 0 errors, no MSB3243. The 3 SAM_Revit/* (non-Grasshopper) projects also compile-verified at -c Release2027: 0 errors. The 4 Grasshopper.Revit projects have no Release2027/Debug2027 configuration defined at all (pre-existing, unrelated to this change), so Release2026 is their only applicable check. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…overs build: remove dead .NET Framework app.config leftovers
…RESS Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs: record merged .NET Framework app.config cleanup in PROJECT_PROGRESS
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…om upstream contribution Removes AGENTS.md, PROJECT_PROGRESS.md and internal evidence/.claude artefacts that are SAM-BIM workflow records, not upstream project documentation. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.
Summary
Brings the SAM-BIM
sow/2026-Q3line of work intomaster(21 non-merge commits; 165 files changed, 230913 insertions(+), 1443165 deletions(-)).Main changes
(Full list in the commit history.)
Validation
Changes were merged through reviewed PRs on the SAM-BIM fork, with CI/builds run there; no further validation was run for this upstream PR.
Compatibility notes
Includes AGENTS.md / PROJECT_PROGRESS.md project-continuity files where present. Dependent SAM repos are being submitted in parallel from the same branch name; merge order should follow the SAM core dependency chain.
🤖 Generated with Claude Code