diff --git a/docs/plans/evidence/2026-11-10-opcua2/late-slope-rehearsal.json b/docs/plans/evidence/2026-11-10-opcua2/late-slope-rehearsal.json new file mode 100644 index 000000000..d4c1511d8 --- /dev/null +++ b/docs/plans/evidence/2026-11-10-opcua2/late-slope-rehearsal.json @@ -0,0 +1,136 @@ +{ + "scope": "Separate canonical 60-second Linux artifact rehearsal only; late-slope workload not started.", + "acceptance": false, + "bundle": { + "rawDirectory": "/private/tmp/opcua2-late-slope-reviewed-b18f9723", + "receiptSha256": "f446a7368aee7e04cdb147b62d97d2344a4bef5398ef4ee4226d7f414bee21ae", + "sourceRevision": "b18f97236a033b54945b3b9a1d5e306e11e278a7", + "files": 939, + "managedModules": 745, + "sourceFiles": 12, + "image": "sha256:b04611ee9e1b7d36797012ed921962c57189cb4dbb3dff12afb8e158110f293b", + "rid": "linux-arm64", + "runtimeVersion": "10.0.14", + "sdkLibraries": [ + "OPCFoundation.NetStandard.Opc.Ua.Client/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Configuration/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Core.Schema/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Core.Types/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Core/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Security.Certificates/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Server/2.0.1", + "OPCFoundation.NetStandard.Opc.Ua.Types/2.0.1" + ], + "gatewayLibraries": [ + "ZB.MOM.WW.HistorianGateway.Client/1.0.0", + "ZB.MOM.WW.HistorianGateway.Contracts/1.0.0" + ], + "publishLogSha256": "900c1c8f640cada01dea97258c4634efebe940b00cbde45463fef4b448907a17", + "metadataLogSha256": "addb953e750abbca8e5f69f1946ca5109c9a51f8549d8cec918dbe1de147e9c1", + "verifyOnlySha256": "726a53b17d34aa1afc0b2932c4abdbb87ea61529080443e7ffcf3e16dae1ad5a" + }, + "rawRehearsalDirectory": "/private/tmp/opcua2-late-slope-rehearsal3-b18f9723", + "rawPlanSha256": "919d2e9a157fa1d3b5ae0217571db39b4404ae6ea84223f700daafab04e8cc99", + "rawReceiptSha256": "900792e136547fb621c0c2c7cb9c82475b5011ad1916058d31fd0348dc139c12", + "receipt": { + "scope": "60-second canonical diagnostic rehearsal only", + "acceptance": false, + "sourceRevision": "b18f97236a033b54945b3b9a1d5e306e11e278a7", + "bundleReceiptSha256": "f446a7368aee7e04cdb147b62d97d2344a4bef5398ef4ee4226d7f414bee21ae", + "originalScriptSha256": "3346bff1bcd83e0df4180e313f1aac802de8aa0154c176a49d5dec0527ae8c81", + "rehearsalScriptSha256": "6351cad2aef7d954d394582174b439a3f9628917ba579463cc62d028dae96379", + "wrapperSha256": "f8b2258aa6db32e4f95a8b331036cd8c41dd44e401dbc5edf2645c01382d0808", + "durationSeconds": 60, + "outerDeadlineSeconds": 240, + "runId": "f59811c827ea49c0b1ee5c31e5e71019", + "command": [ + "docker", + "--host", + "unix:////.orbstack/run/docker.sock", + "run", + "--rm", + "--init", + "--pull", + "never", + "--network", + "none", + "--platform", + "linux/arm64", + "--read-only", + "--workdir", + "/task", + "--name", + "opcua-late-slope-f59811c827ea49c0b1ee5c31e5e71019", + "--label", + "org.otopcua.late-slope-run=f59811c827ea49c0b1ee5c31e5e71019", + "-e", + "OTOPCUA_SOAK_BUILD_SHA=b18f97236a033b54945b3b9a1d5e306e11e278a7", + "-v", + "/private/tmp/opcua2-late-slope-reviewed-b18f9723/app:/app:ro", + "-v", + "/private/tmp/opcua2-late-slope-reviewed-b18f9723/tools:/tools:ro", + "-v", + "/private/tmp/opcua2-late-slope-rehearsal3-b18f9723:/task", + "-v", + "/private/tmp/opcua2-late-slope-rehearsal3-b18f9723/tmp:/tmp:rw", + "-v", + "/private/tmp/opcua2-late-slope-rehearsal3-b18f9723/rehearsal.sh:/rehearsal.sh:ro", + "sha256:b04611ee9e1b7d36797012ed921962c57189cb4dbb3dff12afb8e158110f293b", + "bash", + "/rehearsal.sh" + ], + "wallSeconds": 63.91119220794644, + "containerExitStatus": 0, + "containerRemoved": true, + "diagnosticCompleted": true, + "containerLaunchAttempted": true, + "canonicalOutputCreated": true, + "lateSlopeWorkloadLaunched": false, + "executionErrors": [], + "descriptorTests": { + "executed": 2, + "passed": 2, + "failed": 0, + "skipped": 0 + }, + "diagnosticTests": { + "executed": 1, + "passed": 1, + "failed": 0, + "skipped": 0 + }, + "controllerPlusStartupUpperSeconds": 3.857953707946443, + "completed": { + "kind": "complete", + "utc": "2026-11-10T23:23:38.3902193+00:00", + "mode": "diagnostic", + "cycles": 16, + "restarts": 4, + "seconds": 60.0532385, + "satisfiesTwoHourDuration": false + }, + "maximumObservedOperationsPlusRestartSeconds": 7.6203278999999995, + "maximumObservedRestartSeconds": 5.1729016, + "runtime": { + "targetPid": "213", + "actualExecutable": "/app/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests", + "mappedCoreClr": "/app/libcoreclr.so", + "coreClrSha256": "5eaed8176e960fa1b00a244d25a5d64116d8cd19909e9bad1f65f0c1415117c7" + }, + "privateFixtureDirectoriesRemaining": [], + "rawHashes": { + "container.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "resources.jsonl": "c09eadf050739ec53c55da694d72df9048d429b7e37e44f267e54c9bd96fe5a2", + "target-runtime.txt": "23478e61e3be5f244bbd7abd3a9c07be767c80e3fdaf8427e2b654eb8c80dce2", + "descriptor-controls.log": "0362a31cc69a67fe963ec4067a77f8a9248decd9102037d73c4865f196715645", + "test.log": "3d69fab757e8620985589a47713af7cb296be9e5406d45af91eb571047509788", + "results/descriptor-controls.trx": "9119ed91cc67e4142368ac649e8b866e33e2ccd3f844676aabeba8ae6ee9df1f", + "results/diagnostic.trx": "71b088cec6d65d8a8f7ab2ea303d81a7bbed27f04881566b40e7b5ce6041bea0" + } + }, + "limits": [ + "Earlier read-only startup failure is retained separately.", + "This runs diagnostic mode with the same operations, immutable app/runtime and mount layout; it does not exercise 7200-second completion or establish a new resource baseline.", + "Observed operation plus restart sum excludes small evidence I/O; it is a timing-margin check, not a full-mode deadline proof." + ] +} diff --git a/scripts/validation/opcua-lifecycle-memory/LATE_SLOPE.md b/scripts/validation/opcua-lifecycle-memory/LATE_SLOPE.md index d02ba8d95..c455dc1fb 100644 --- a/scripts/validation/opcua-lifecycle-memory/LATE_SLOPE.md +++ b/scripts/validation/opcua-lifecycle-memory/LATE_SLOPE.md @@ -96,3 +96,12 @@ record three passing helper tests and actual rejection of a 90-second request before setup. The original helper assertion-capture failure is retained; the canonical source is byte-identical across that test-only correction. These controls do not approve a bundle, start the workload or satisfy #799. + +The first bundle verified but its separate rehearsal stopped in .NET CLI +startup: [retained startup failure](../../../docs/plans/evidence/2026-11-10-opcua2/late-slope-rehearsal-startup-failure.json). +The corrected launcher keeps the root read-only and aliases the same private +task temp directory at `/tmp`. The replacement bundle from `b18f9723` passed +manifest/source/MVID review and its separate [60-second rehearsal](../../../docs/plans/evidence/2026-11-10-opcua2/late-slope-rehearsal.json) +completed 16 cycles and four restarts with all three tests passed and cleanup +verified. Astra approved one fixed 7,200-second diagnostic on that exact bundle; +this approval does not adopt a new acceptance baseline or clear #799/G4.