# Description - Add opt-in bounded browsing and strict reads with original source, status, timestamp, and structured-value evidence. Preserve the existing tolerant constructors and convenience projections, and wire options through session extensions, factories, and hosting registration. - Add selected-result streaming downloads with byte/request limits and independent cleanup, using `TemporaryFileTransferClient.CopyToAsync` from the client/server predecessor. Retain the detailed transfer regressions in the Machinery test layer. - Expose genuinely null unpublished result slots, carry the two Machinery sample updates, and include the complete Machinery guide and package README changes. ## Related Issues - Related tracking issue: #4461; this extraction does not close it. - Frozen source PR: #4462; this extraction does not close or modify it. - Immediate predecessor: #4803 (`marcschier-extract-amb-changes`). The earlier dependencies are client/server #4802 and core/types #4801. ## 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. - [ ] I have addressed **all** PR feedback received.
MachineryServer
A self-contained OPC UA server that publishes one simulated hydraulic press using every part of the OPC 40001 series.
dotnet run --project samples/Machinery/MachineryServer -- --port 62546
What the address space contains
The press is Organizes-referenced from the OPC 40001-1 Machines folder —
which hangs off Objects, not off the Device Integration DeviceSet. Below it:
| Part | What the sample builds |
|---|---|
| 40001-1 | Identification, Monitoring (item state, operation mode, health, process, consumption), Components with one component and its lifetime counters, MachineryEquipment with one die, Notifications, OperationCounters |
| 40001-2 | HydraulicOilTemperature, a process value over PADIM's analog-signal model, with limits and a setpoint |
| 40001-3 | JobManagement, whose eleven job verbs come from the ISA-95 Job Control V2 model and bind to the in-memory provider |
| 40001-4 | CompressedAirSupply, tied to the well-known CompressedAir carrier with the Energy model's Contains reference |
| 40001-101 | ResultManagement, including the ResultTransfer download path |
What the simulation does
PressSimulation runs one stroke every four seconds. Each
stroke moves MachineryItemState to Executing and back, sets
MachineryOperationMode to Processing, and publishes a result whose CSV
payload a client downloads through GenerateFileForRead.
State only ever moves from the server: OPC 40001-1 declares no cause method on either state machine — the whole Machinery NodeSet contains no method at all — so a client observes state and cannot request it.
Where the numbers come from
PressDatasheet holds every published value, so the
address space and the simulation cannot disagree.