Skip to content

S06: installed smoke candidate - Benchmark producers in the payload - #66

Merged
michaldengusiak merged 12 commits into
sow/2026-Q4from
feature/s06-installed-smoke-candidate
Oct 20, 2026
Merged

michaldengusiak merged 12 commits into
sow/2026-Q4from
feature/s06-installed-smoke-candidate

Conversation

@michaldengusiak

@michaldengusiak michaldengusiak commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Roadmap S06: early SAM_Deploy installed smoke candidate (SAM/documentation/SIMULATION_ROADMAP_Q4_2026.md).

Status: owner approved merging (2026-10-20). #32 and #16 are merged, SAM_OpenStudio is repinned to #32's merge commit, the repin gates passed, and payload equivalence PASS. Every check passes except check 9 (provenance). On 2026-10-20 the owner accepted check 9 as an explicitly documented S06 limitation; it is recorded as that, not as PASS. SAM-BIM/SAM_Validation#16 documents it. Candidate build only: no release, tag or publication. Do not merge without explicit owner approval.

Record: DEPLOY_S06_SMOKE_CANDIDATE.md. Evidence: evidence/s06-20261020/. Supporting PR: SAM-BIM/SAM_OpenStudio#32.

Change

  • Producers in the payload. The Benchmark producers are published self-contained (win-x64) and staged beside SAM Analytical.exe. A new gate, .github/scripts/benchmark-producers-payload.ps1, checks their dependencies, runtime, identical SAM assemblies and stamp, and that they start from the payload.
  • BuildAll_Release build order.
    • Solutions now build in their listed order. Before this, SAM_UI was built before SAM_OpenStudio's x64 output existed.
    • SAM_OCCT now builds after SAM_Solver.
  • Gitlinks. 24 gitlinks change: 23 pins move to the sow/2026-Q4 tips, and the supporting SAM_OpenStudio content pin points at chore: bump submodule pointers (SAM_Windows, SAM_Revit_UI, SAM_Tas_Grasshopper) #32's 1f4bf60c. .gitmodules is unchanged.

Commits

SHA
Validated content (build, gates, installer) 717533c
Earlier record commit 1faa383
Record + genuine-installer evidence 2665546
Record: accepted limitation + merge plan bcc6735
Record: review fixes 0aac7aa
Record: host-panel references, merge and carry-forward rules 47d7adf
Repin: SAM_OpenStudio 1f4bf60c -> a9429f7c (#32's merge) b3b8e9e
Record: repin evidence (current head) f14f71e

Acceptance (2026-10-20)

# Check Result
1 Isolated Release build PASS: hosted installer run #227 (39389974089, publish_release=false) at 717533c; local replay 20/20 steps
2 Staging / payload gates PASS (hosted): both producers start from the payload; 268/271 and 199/204 dependencies byte-identical, the rest same or newer version; H12 0 violations; stamp 2026.4.227.0+717533c
3 Gitlinks = Q4/S05 baseline, apart from #32 PASS: 24 changed gitlinks: 23 = today's Q4 tips, plus the SAM_OpenStudio content pin. Against the S05 build, only SAM and SAM_UI moved, both docs-only. SAM_OpenStudio = Q4 tip d4216f35 + #32
4 Installed candidate PASS (genuine installer): the hosted EXE installed silently into an isolated profile (exit 0) and uninstalled cleanly (exit 0, "Removed all? Yes"). The owner's real SAM, Grasshopper, Rhino, Revit-add-in and Documents\SAM folders were unchanged: 2518 entries, 0 differences
5a Tas, real ribbon PASS: Succeeded
5b OpenStudio, real ribbon, explicit EPW PASS: Succeeded, EnergyPlus exit 0
5c Both, real ribbon, embedded weather PASS: Compared, both producers exit 0. The harness needed one re-click of the weather dialog; this is recorded and does not affect the app
6 No overrides; executable resolution PASS: no SAM_COMMIT / SAM_BENCHMARK_*. The app and both producers ran from the install folder, the .NET root was the install folder, and there were 0 developer-folder references
7 3.11 first on PATH → 3.10 CLI PASS: the manifest records CLI 3.10.0, SDK 3.10.0 and EnergyPlus 25.1.0. The explicit-path override is unchanged; it is covered by a unit test only, because no UI or producer option sets it
8 Against S05 PASS: Tas 602/602 values equal; OpenStudio: the raw comparison reports exactMatch: false (45/45 numbers, 24 differences), kept as measured. All 24 differences are 4 run-generated subsurface names. Through the result reference, which is the host-panel GUID (AddResults.cs), each maps 1:1 to one name on the other side. Each of the 4 panels is a Panel object of the input model with exactly one aperture. The check fails on missing or ambiguous mappings, and the claim is scoped to these comparisons, with exactly equal values (runs/os-subsurface-mapping.txt); Both snapshot, EPW 5afbeb32, canonical hash and comparison.csv 454e42dc equal
9 Provenance Not PASS: accepted limitation (owner decision 2026-10-20), see below
10 Final-head CI and tests Validate at 717533c ✅ and 1faa383 ✅; 2665546 ✅ (run 39396367650); bcc6735 ✅ (SAM_Deploy run 39399003022). An earlier version of this description gave run 39398892361 here, which is SAM_Validation#16's run. 0aac7aa ✅ (run 39403322329); current head 47d7adf ✅ (SAM_Deploy run 39407467996). SAM_OpenStudio#32: 51/51 tests passed again locally; hosted build and spdx ✅

Environment: licensed laptop, TAS 9.5.7.0, OpenStudio 3.10.0 CLI (portable copy) with ladybug 3.11.0 first on PATH, EnergyPlus 25.1.0, Windows 11.

Check 9: accepted, documented limitation

In an installed build, both producers report samCommit = runnerCommit = 717533c, the SAM_Deploy build revision. comparison.md prints it as "SAM commit". SAM_UI's own run manifest is correct. Under provenance.application, sourceRevision = 717533c (the extracted SHA), and entryAssembly.informationalVersion / components[].informationalVersion = 2026.4.227.0+717533c (the full stamp). sourceRevisionOf is explanatory text.

The owner decided on 2026-10-20 to accept this as an explicitly documented S06 exception, with no new stamping. SAM-BIM/SAM_Validation#16 documents it in SCHEMA.md:

  • The source revisions come from the pinned gitlinks. git ls-tree 717533c SAM SAM_Tas SAM_OpenStudio gives SAM df27563b, SAM_Tas e84aeff6 and SAM_OpenStudio 1f4bf60c.
  • Existing records keep their meaning. S05 and earlier developer runs hold repository revisions.

Hosted vs local

  • Hosted (GitHub): Validate PR, and installer run #227.
  • Local: the installer replay, the genuine install and uninstall of the hosted EXE, and six licensed real-UI runs:
    • i1-i3 on a mirrored payload, a staged copy and not an installer test;
    • x1-x3 from the genuine install, the S06 acceptance run.

Machine-local inputs are not committed: the TAS licence, the 3.10 runtime, the S05 inputs, and C:\TasOut\s06.

Repin and payload equivalence (done 2026-10-20)

  • Merged S06: prefer the OpenStudio CLI that matches the SDK SAM_OpenStudio#32 as a9429f7c (approved head 3082dc6; post-merge Build 39409026705 ✅; closeout 7f21665).

  • Merged docs: installed-build samCommit/runnerCommit hold the SAM_Deploy revision (S06) SAM_Validation#16 as e9a83df0 (approved head ed7a878; post-merge Build 39409164929 ✅; closeout 2a3acfa).

  • b3b8e9e repins only SAM_OpenStudio: 1f4bf60c → a9429f7c, the exact merge commit and not the closeout tip. The diff 1f4bf60c..a9429f7c is chore: bump submodule pointers (SAM_Windows, SAM_Revit_UI, SAM_Tas_Grasshopper) #32's record document only. The other 23 pins and .gitmodules are unchanged, and SAM_Validation stays 68eded00.

  • At b3b8e9e:

    • Validate ✅ 39409232293;
    • installer #228 ✅ 39409260663 (publish_release=false, release job skipped): stamp 2026.4.228.0+b3b8e9e, the 24 checked-out pins equal the gitlinks, producer Stage/Assert pass with both producers starting, and H12 has 0 violations;
    • EXE sha256 a9284962…f58c9.
  • Payload equivalence (local; the #227 and #228 EXEs genuinely installed into isolated profiles, inventoried and uninstalled; owner folders unchanged), over 1759 paths:

    Class Files
    byte-identical, including the .NET 8.0.31 runtime, runtimeconfig.json files and OpenStudio/EnergyPlus natives 1104
    stamp-only binaries 474
    deps.json files identical after normalising the stamp and SAM_OCCT's 1.0.* build-time version 51
    .pdb debug symbols, reported separately 129
    Inno uninstaller label 1
    drift 0

    The licensed x1/x2/x3 evidence carries forward. Evidence is in evidence/s06-20261020/repin/.

Remaining

  1. Merge this PR at its final head once that head's Validate passes (owner approval given), then do its closeout.
  2. SAM roadmap closeout docs PR (S06 Done, merge SHAs, check 9 "Not PASS: accepted limitation"), which needs its own review and merge authorization.

🤖 Generated with Claude Code

michaldengusiak and others added 7 commits October 20, 2026 09:10
…S06)

Run Simulation > Both runs benchmark-tas.exe and benchmark-openstudio.exe
from beside SAM Analytical.exe, but no build step copied them into the
payload, so an installed SAM could not run Both.

- installer.yml: "Stage Benchmark producers" publishes both producers
  self-contained (win-x64) over the SAM assemblies BuildAll already built
  (BuildProjectReferences=false) and stages their own files beside the app.
  SAM Analytical is self-contained, so a framework-dependent apphost in its
  folder finds the app's hostfxr.dll and cannot start.
- "Assert Benchmark producers payload": same SAM assemblies and runtime host
  as the app, self-contained runtimeconfig without probing paths, every
  deps.json asset present, stamped with this build's InformationalVersion
  (samCommit then resolves without SAM_COMMIT), and `--help` starts from the
  payload. The H12 audit also enforces the producers' versions.
- Gitlinks: the 23 Q4 tips the S05 acceptance and the S06 dev baseline were
  built from, and SAM_OpenStudio at the S06 CLI-selection fix
  (SAM-BIM/SAM_OpenStudio fix/s06-openstudio-cli-sdk-match 1f4bf60c, not yet
  merged; repoint to its merge commit before this PR merges).

Roadmap S06. Candidate build only; no release, tag or publication.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Clean/Build/Rebuild/Restore targets batched the MSBuild task on
%(Solution.Properties), which groups solutions by that value: every
Release|Any CPU solution, SAM_UI included, was built before SAM_OpenStudio
(the only Release|x64 entry). Since SAM_UI#229 SAM_UI's build requires
SAM_OpenStudio\build\openstudiolib.dll, so moving the SAM_UI gitlink past
#229 failed the Release build ("openstudiolib.dll is missing").

The solutions now go to one MSBuild call in the listed order; each keeps its
Configuration/Platform as Properties metadata and gets the CI properties as
AdditionalProperties. Found by the S06 local installer replay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… call (S06)

ac00b8f passed the CI properties as per-item AdditionalProperties. That is not
equivalent: on the same SAM_Revit restore it turns NuGet NU1504 (duplicate
System.Text.Json PackageReference, 7 projects) from a warning into an error,
which the old Properties= call never did.

Keep each MSBuild call exactly as before (same Properties string) and only
change Projects="@(Solution)" to Projects="%(Solution.Identity)", so the task
batches on (solution, Properties) and runs each entry on its own in the listed
order: SAM_OpenStudio (Release|x64) now builds before SAM_UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…etadata (S06)

1251d5d (Projects="%(Solution.Identity)") passed bare paths, so the task's
Properties parameter applied for the first time - including CommonCIProps'
TreatWarningsAsErrors=true - and restore failed on NuGet NU1504 again.

Probe: when the Projects items carry Properties metadata, the MSBuild task
applies that metadata and ignores its own Properties parameter, so
CommonCIProps has never reached the solutions (CI stamping comes from the
SAMVersion / InformationalVersion / SAMSourceRevision environment variables).

Keep Projects="@(Solution)" exactly as before and add
Condition="'%(Solution.Identity)' != ''": each batch is one solution entry,
built in the listed order (SAM_OpenStudio before SAM_UI), with the same
effective properties as before. Making CommonCIProps effective is out of
S06's scope and recorded as a finding.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Q4 SAM_OCCT panel solver references SAM_Solver\build\SAM.Geometry.Solver*
(6 HintPaths), but BuildAll_Release listed SAM_OCCT right after SAM, so the
Release rebuild failed with CS0234 'Solver' in SAM.Geometry once the SAM_OCCT
gitlink moved to its Q4 tip. Move the entry to just after SAM_Solver; its only
other consumer, SAM_Revit_UI, is built later by installer.yml.

Checked: every cross-repo ..\SAM*\ reference of every non-test project in the
24 pinned repositories now points to a solution listed earlier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Record for the content tested at 717533c: BuildAlls_v5 findings, why the
installed payload could not run Both, the changes, the local installer
replay (20/20 steps, gates PASS, one local-only H12 deviation), and the
licensed installed smoke from the real ribbon: Tas, OpenStudio and Both PASS
with no SAM_COMMIT, no developer folder, CLI 3.10 chosen over 3.11 first on
PATH, the user's %APPDATA%\SAM unchanged. Evidence paths redacted; trailing
whitespace stripped from the copied logs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hosted run #227 installer (717533c) installed and uninstalled in an
isolated profile; Tas, OpenStudio and Both PASS from the real ribbon,
numerically identical to S05, 3.10 CLI selected with 3.11 first on PATH.
Provenance check fails: installed producers report the SAM_Deploy commit
as samCommit/runnerCommit (owner decision recorded).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rge plan

Owner decision 2026-10-20: installed-build samCommit/runnerCommit holding
the SAM_Deploy revision is an explicitly documented S06 exception (check 9
stays "not PASS", documented by SAM_Validation#16). Record how to obtain
the source revisions from the pinned gitlinks and the approved merge order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@michaldengusiak
michaldengusiak marked this pull request as ready for review October 20, 2026 09:12
michaldengusiak and others added 4 commits October 20, 2026 11:47
…pping, CI attribution

- provenance.application.sourceRevisionOf is explanatory text; the full
  stamp is in entryAssembly/components informationalVersion (verified
  against the committed genuine-installer manifests).
- 24 gitlinks change: 23 Q4-tip pins + the SAM_OpenStudio content pin.
- Raw OpenStudio comparisons stay exactMatch:false; add a check that maps
  the 4 generated subsurface names uniquely by source reference and finds
  equal values (new evidence, measured files untouched).
- Correct CI attribution (bcc6735 = SAM_Deploy run 39399003022).
- Record pre-existing whitespace in verbatim captures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rd rules

- Subsurface result references are host-panel GUIDs (AddResults.cs
  LookupPanel/Referenced), not aperture GUIDs. The mapping check now
  validates actual Panel objects in the source model (one aperture each)
  and fails on missing or ambiguous mappings; rerun on all four
  comparisons, which stay exactMatch:false as measured.
- Merge plan: repin only SAM_OpenStudio to #32's exact merge commit;
  carry licensed evidence forward only after source and rebuilt-payload
  equivalence (dependency/runtime inventory, expected stamp differences);
  drift repeats the affected genuine-installed cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1f4bf60c -> a9429f7c (merge of #32 into sow/2026-Q4; parents d4216f35 and
approved head 3082dc6a). Source diff 1f4bf60c..a9429f7c is only
documentation/S06-OpenStudio-Cli-Selection-PR.md. Every other gitlink
and .gitmodules unchanged; SAM_Validation stays 68eded00.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce with #227

SAM_OpenStudio repinned to #32's merge a9429f7c (b3b8e9e): Validate and
installer run #228 (publish_release=false) green; 24 checked-out pins,
producer Stage/Assert, H12 0 violations, artifact hashes recorded.
Genuine isolated installs of #227 and #228 inventoried and compared:
1104 identical, 474+51 stamp-only, 129 .pdb, Inno label; 0 drift, so
the licensed x1/x2/x3 evidence carries forward. Merges of #32 and #16
recorded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant