mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-17 05:11:13 +08:00
724757122b
# Description Add a generic, company-neutral recycling simulation sample and reusable plastics/rubber companion-model packages. One durable causal coordinator and ten separately launched OPC UA process views provide deterministic material balances, finite buffers, genealogy, utilities, quality holds/disposition, authenticated controls and crash recovery. Process views consume committed state instead of running independent simulations. Real companion-model equipment instances use DI/Machinery/AMB discovery, Machine Vision, Pumps/Scales, granulate drying, extrusion, filtration and pelletizing. Vendor/process extensions remain sample-local. Connectors and WoT conversion are out of scope. **External source-contract parity and complete deployment qualification are not claimed complete.** The sample and managed tests target **.NET 8, 9 and 10**. The consolidated [recycling guide](samples/Recycling/README.md) explains the actual composition, simulation, observation paths and exposed data; the application-directory README points to that guide. Typed client member extensions are emitted at build time through the default-false `ModelSourceGeneratorClientAccessorsOnly` opt-in. Extrusion uses it for all twelve parts instead of checked-in generated C# and a Python generator. The shared client runtime retains typed values, quality, timestamps and streaming behavior. ### Package layout Six packages contain fourteen models in two model-producing assemblies: | Specifications | Model | Typed client | Server runtime | | --- | --- | --- | --- | | OPC 40083 and OPC 40082-6 | `Opc.Ua.PlasticsRubber` | `Opc.Ua.PlasticsRubber.Client` | `Opc.Ua.PlasticsRubber.Server` | | OPC 40084 parts 1–12 | `Opc.Ua.Extrusion` | `Opc.Ua.Extrusion.Client` | `Opc.Ua.Extrusion.Server` | NuGet IDs use the `OPCFoundation.NetStandard.` prefix. All six packages are registered in `.azurepipelines/expected-packages.txt` and the generated preview-pack solution. Granulate-drying code lives in `GranulateDrying` folders in the PlasticsRubber projects; extrusion uses per-part folders. There are no standalone granulate-drying or per-part extrusion packages. Published model identities and CLR namespaces remain distinct and unchanged. The common 1.03 interface is independently authored on the explicitly MIT-licensed 1.02 implementation basis; the official 1.03 XML is not redistributed. The other imported models retain their individual MIT notices. All 42 pinned model, identifier and basis files retain their manifest-backed bytes, including their staged Git blobs. No formal companion certification is claimed; the disputed Filter profile is not advertised. ## Related Issues No tracking issue is currently linked. ## Checklist _Put an `x` in the boxes that apply. You can complete these step by step after opening the PR._ - [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [ ] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [x] I have verified that my changes do not introduce (new) build or analyzer warnings. - [ ] I ran **all** tests locally using the **UA.slnx** solution against at least .net **framework** and .net **10**, and all passed. - [ ] I fixed **all** failing and flaky tests in the CI pipelines and **all** CodeQL warnings. - [x] I have addressed **all** PR feedback received. Current-head CI and coverage remain pending; the full local `UA.slnx` test matrix is not claimed complete.
74 lines
3.3 KiB
Plaintext
74 lines
3.3 KiB
Plaintext
# Default behavior: if Git thinks a file is text (as opposed to binary), it
|
|
# will normalize line endings to LF in the repository, but convert to your
|
|
# platform's native line endings on checkout (e.g., CRLF for Windows).
|
|
* text=auto
|
|
|
|
# Explicitly declare text files you want to always be normalized and converted
|
|
# to native line endings on checkout. E.g.,
|
|
# *.txt text
|
|
|
|
# Declare files that will always have CRLF line endings on checkout. E.g.,
|
|
#*.slnx text eol=crlf
|
|
|
|
# Declare files that will always have LF line endings on checkout. E.g.,
|
|
*.sh text eol=lf
|
|
*.json text eol=lf
|
|
|
|
# The WoT Binding specification examples are vendored byte-for-byte from the
|
|
# specification repository and their SHA-256 hashes are pinned in
|
|
# tests/Opc.Ua.Types.Tests/Wot/Assets/spec-examples.manifest.json. Keep them at
|
|
# LF on every platform so the checked-out bytes are the upstream bytes.
|
|
*.jsonld text eol=lf
|
|
|
|
# The generated pump XML must match its checked-in bytes on every platform.
|
|
samples/WotCon/AggregationClient/Documents/SamplePump.NodeSet2.xml text eol=lf
|
|
|
|
# The OPC 10000-110 AMB NodeSet is vendored unmodified and its SHA-256 is pinned in
|
|
# tests/Opc.Ua.AMB.Tests/AmbModelTests.cs, so the checked-out bytes must be the
|
|
# upstream bytes on every platform.
|
|
src/Opc.Ua.AMB/Model/Opc.Ua.AMB.NodeSet2.xml text eol=lf
|
|
|
|
# Denote all files that should not have line endings normalized, should not be
|
|
# merged, and should not show in a textual diff.
|
|
*.docm binary
|
|
*.docx binary
|
|
*.ico binary
|
|
*.lib binary
|
|
*.png binary
|
|
*.pptx binary
|
|
*.snk binary
|
|
*.vsdx binary
|
|
*.xps binary
|
|
|
|
# OPC UA
|
|
*.uanodes binary
|
|
|
|
# Preserve official NodeSet artifacts byte-for-byte.
|
|
src/Opc.Ua.Positioning/Model/*.csv binary
|
|
src/Opc.Ua.Positioning/Model/*.xml binary
|
|
|
|
# Preserve the release-pinned Machine Vision inputs and their provenance hashes.
|
|
src/Opc.Ua.Vision/Model/Opc.Ua.MachineVision*.NodeSet2.xml -text
|
|
src/Opc.Ua.Vision/Model/Opc.Ua.MachineVision*.Upstream.NodeIds.csv -text
|
|
src/Opc.Ua.MachineVision/Model/Opc.Ua.MachineVision*.NodeSet2.xml -text
|
|
src/Opc.Ua.MachineVision/Model/Opc.Ua.MachineVision*.Upstream.NodeIds.csv -text
|
|
|
|
# Preserve pinned plastics/rubber inputs and the reproducibly authored common model.
|
|
# Their upstream license banners include trailing spaces covered by the byte-level hashes.
|
|
# TODO: revisit the whitespace exception if upstream republishes these inputs without it.
|
|
src/Opc.Ua.PlasticsRubber/Model/*.NodeSet2.xml -text whitespace=-blank-at-eol
|
|
src/Opc.Ua.PlasticsRubber/Model/Basis/*.NodeSet2.xml -text whitespace=-blank-at-eol
|
|
src/Opc.Ua.PlasticsRubber/Model/*.NodeIds.csv -text whitespace=cr-at-eol
|
|
src/Opc.Ua.Extrusion/*/Model/*.NodeSet2.xml -text whitespace=-blank-at-eol
|
|
src/Opc.Ua.Extrusion/*/Model/*.NodeIds.csv -text whitespace=cr-at-eol
|
|
src/Opc.Ua.PlasticsRubber/GranulateDrying/Model/*.NodeSet2.xml -text whitespace=-blank-at-eol
|
|
src/Opc.Ua.PlasticsRubber/GranulateDrying/Model/*.NodeIds.csv -text whitespace=cr-at-eol
|
|
|
|
# Fuzz seed corpora, crash/timeout/slow reproducers and the vendored original
|
|
# fork messages are exact byte sequences, not documents. Line-ending translation
|
|
# changes their length and SHA-256, breaks the byte-exact provenance assertions,
|
|
# and makes a corpus exercise different code paths on Windows than on Linux, so
|
|
# git must never normalize them.
|
|
fuzzing/*.Fuzz.Corpus/** binary
|
|
fuzzing/*.Fuzz.Tests/Assets/** binary
|