From 2f6e45bc96f2c9f65b8830dc536784e9aa85fd87 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Mon, 31 Aug 2026 16:12:45 +0300 Subject: [PATCH] fix(observatory): validate M49 fixture filtering --- config/observatory-worker-runtime-candidates.json | 8 ++++---- .../Dockerfile.m49-portable-executor | 4 ++-- .../Invoke-M49PortableExecutorCandidateInstall.ps1 | 10 +++++++--- .../m49-tgs-portable-runner-source.json | 6 +++--- .../observatory_portable/smoke_m49_tgs_portable.sh | 12 ++++++++---- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/config/observatory-worker-runtime-candidates.json b/config/observatory-worker-runtime-candidates.json index 151c12c..9734d0e 100644 --- a/config/observatory-worker-runtime-candidates.json +++ b/config/observatory-worker-runtime-candidates.json @@ -202,7 +202,7 @@ { "asset_id": "m49-portable-runner-manifest", "kind": "local-file", - "sha256": "264c79258195c91448cadad2fff68fdee067c539cccdf1227657a4417ed4cc85", + "sha256": "940aeb7bbcf1b28c15482e2d8bedd47ce4d3667137a5cd4702bbc7b754475baa", "byte_length": 1825, "component_id": null, "model_release_id": null, @@ -229,8 +229,8 @@ { "asset_id": "m49-portable-smoke", "kind": "local-file", - "sha256": "e5da73c2cf89ed0671de8ac52e13014a7faf79ce1ff1f97a090154063a61c18d", - "byte_length": 1117, + "sha256": "b8bc1cf9f21f69904bb64c6384db6fe301faf10f8041cc405a77b011602eaf04", + "byte_length": 1330, "component_id": null, "model_release_id": null, "model_artifact_role": null @@ -286,7 +286,7 @@ "navigation_or_safety_accepted": false, "production_accepted": false }, - "candidate_sha256": "e2085c25e45a46de58f693d1128914dc25febbe18a28341cdf57c79f3472f180" + "candidate_sha256": "6b4625f2fdb4703efed852bca100f04398284bd6a894b65e4bfd51a6532430bf" } ] } diff --git a/experiments/perception/worker/observatory_portable/Dockerfile.m49-portable-executor b/experiments/perception/worker/observatory_portable/Dockerfile.m49-portable-executor index 9e6ca2c..f0d0c40 100644 --- a/experiments/perception/worker/observatory_portable/Dockerfile.m49-portable-executor +++ b/experiments/perception/worker/observatory_portable/Dockerfile.m49-portable-executor @@ -18,7 +18,7 @@ COPY smoke_m49_tgs_portable.sh /opt/nodedc/m49-tgs-portable/bin/smoke_m49_tgs_po RUN echo "6128d6af7e6137f9a9473db045e3b155e2105319159f17c32f344b4aedf823a9 /opt/nodedc/m49-tgs-portable/profile/m49-tgs-portable-v2.json" \ | sha256sum --check --strict \ - && echo "e5da73c2cf89ed0671de8ac52e13014a7faf79ce1ff1f97a090154063a61c18d /opt/nodedc/m49-tgs-portable/bin/smoke_m49_tgs_portable" \ + && echo "b8bc1cf9f21f69904bb64c6384db6fe301faf10f8041cc405a77b011602eaf04 /opt/nodedc/m49-tgs-portable/bin/smoke_m49_tgs_portable" \ | sha256sum --check --strict \ && chmod 0555 /opt/nodedc/m49-tgs-portable/bin/smoke_m49_tgs_portable \ && test -x /opt/nodedc/m49-tgs-portable/bin/run_m49_tgs_portable @@ -31,7 +31,7 @@ LABEL com.nodedc.product="mission-core" \ com.nodedc.authority="observation-only" \ com.nodedc.base-image.sha256="7b412020f4d8392d1d1ed1b33beadc44140f0ea8f781e62dd69796042334300f" \ com.nodedc.runner-source.sha256="52813392aabd02efc5c2b8f7c22ed88e3ef4cc8ad3aafeba2792efe503e29fe9" \ - com.nodedc.fixture-smoke.sha256="e5da73c2cf89ed0671de8ac52e13014a7faf79ce1ff1f97a090154063a61c18d" \ + com.nodedc.fixture-smoke.sha256="b8bc1cf9f21f69904bb64c6384db6fe301faf10f8041cc405a77b011602eaf04" \ com.nodedc.profile.sha256="6128d6af7e6137f9a9473db045e3b155e2105319159f17c32f344b4aedf823a9" ENTRYPOINT ["/opt/nodedc/m49-tgs-portable/bin/run_m49_tgs_portable"] diff --git a/experiments/perception/worker/observatory_portable/Invoke-M49PortableExecutorCandidateInstall.ps1 b/experiments/perception/worker/observatory_portable/Invoke-M49PortableExecutorCandidateInstall.ps1 index 9aa81e4..aa2eebe 100644 --- a/experiments/perception/worker/observatory_portable/Invoke-M49PortableExecutorCandidateInstall.ps1 +++ b/experiments/perception/worker/observatory_portable/Invoke-M49PortableExecutorCandidateInstall.ps1 @@ -21,7 +21,7 @@ $BaseImageId = "sha256:7b412020f4d8392d1d1ed1b33beadc44140f0ea8f781e62dd69796042 $ProfileSha256 = "6128d6af7e6137f9a9473db045e3b155e2105319159f17c32f344b4aedf823a9" $RunnerSourceSha256 = "52813392aabd02efc5c2b8f7c22ed88e3ef4cc8ad3aafeba2792efe503e29fe9" $RunnerWrapperSha256 = "2d6c32560682647f868e4ce4c2605749f17c60482a609f8c03ff951411f48ffb" -$FixtureSmokeSha256 = "e5da73c2cf89ed0671de8ac52e13014a7faf79ce1ff1f97a090154063a61c18d" +$FixtureSmokeSha256 = "b8bc1cf9f21f69904bb64c6384db6fe301faf10f8041cc405a77b011602eaf04" $ResultContractSha256 = "9dd80c8e2504559d2156fca933de6eb27901e35305e6853aeb84707e1cb13892" $ProtectedContainers = @( "ndc-mission-core-triton", @@ -297,7 +297,10 @@ try { & docker rm --force $smokeName *> $null } } -if ($smokeOutput[-1] -cne "M49_PORTABLE_FIXTURE_SMOKE_OK frames=2 points_per_frame=124668") { +if ( + $smokeOutput[-1] -cne + "M49_PORTABLE_FIXTURE_SMOKE_OK frames=2 input_points_per_frame=124668 classified_points_per_frame=124637" +) { throw "portable M4.9 fixture smoke receipt changed" } @@ -343,7 +346,8 @@ $releaseDocument = [ordered]@{ fixture_smoke = [ordered]@{ source = "pinned TRAVEL KITTI fixture" frame_count = 2 - points_per_frame = 124668 + input_points_per_frame = 124668 + classified_points_per_frame = 124637 network = "none" result = "passed" } diff --git a/experiments/perception/worker/observatory_portable/m49-tgs-portable-runner-source.json b/experiments/perception/worker/observatory_portable/m49-tgs-portable-runner-source.json index a26f3c9..e298b70 100644 --- a/experiments/perception/worker/observatory_portable/m49-tgs-portable-runner-source.json +++ b/experiments/perception/worker/observatory_portable/m49-tgs-portable-runner-source.json @@ -37,8 +37,8 @@ }, { "name": "smoke_m49_tgs_portable.sh", - "byte_length": 1117, - "sha256": "e5da73c2cf89ed0671de8ac52e13014a7faf79ce1ff1f97a090154063a61c18d" + "byte_length": 1330, + "sha256": "b8bc1cf9f21f69904bb64c6384db6fe301faf10f8041cc405a77b011602eaf04" } ], "authority": { @@ -47,5 +47,5 @@ "navigation_or_safety_accepted": false, "production_accepted": false }, - "source_release_sha256": "50818f50892ded83285a0fe2875066e32f2c5a13aa8af6c6ce55f63eef863569" + "source_release_sha256": "b071f7def2200dc996144b46c1b952fed85a79a10fd67d6a62afa4cb0eacbad5" } diff --git a/experiments/perception/worker/observatory_portable/smoke_m49_tgs_portable.sh b/experiments/perception/worker/observatory_portable/smoke_m49_tgs_portable.sh index 0057b44..860f041 100644 --- a/experiments/perception/worker/observatory_portable/smoke_m49_tgs_portable.sh +++ b/experiments/perception/worker/observatory_portable/smoke_m49_tgs_portable.sh @@ -4,8 +4,10 @@ set -euo pipefail readonly SMOKE_ROOT=/smoke readonly FIXTURE=/opt/travel/fixture/00/velodyne/000000.bin readonly RUNNER=/opt/nodedc/m49-tgs-portable/bin/run_m49_tgs_portable -readonly EXPECTED_FRAME_BYTES=1994688 -readonly EXPECTED_POINTS=124668 +readonly EXPECTED_INPUT_POINTS=124668 +readonly EXPECTED_GROUND_BYTES=1122800 +readonly EXPECTED_NONGROUND_BYTES=871392 +readonly EXPECTED_CLASSIFIED_POINTS=124637 mkdir -p "${SMOKE_ROOT}/sequence" cp "${FIXTURE}" "${SMOKE_ROOT}/sequence/000000.bin" @@ -23,7 +25,9 @@ test "$(wc -l < "${SMOKE_ROOT}/timing.tsv")" -eq 3 for index in 0 1; do ground_bytes="$(stat -c %s "${SMOKE_ROOT}/outputs/${index}_ground.bin")" nonground_bytes="$(stat -c %s "${SMOKE_ROOT}/outputs/${index}_nonground.bin")" - test "$((ground_bytes + nonground_bytes))" -eq "${EXPECTED_FRAME_BYTES}" + test "${ground_bytes}" -eq "${EXPECTED_GROUND_BYTES}" + test "${nonground_bytes}" -eq "${EXPECTED_NONGROUND_BYTES}" done -printf 'M49_PORTABLE_FIXTURE_SMOKE_OK frames=2 points_per_frame=%s\n' "${EXPECTED_POINTS}" +printf 'M49_PORTABLE_FIXTURE_SMOKE_OK frames=2 input_points_per_frame=%s classified_points_per_frame=%s\n' \ + "${EXPECTED_INPUT_POINTS}" "${EXPECTED_CLASSIFIED_POINTS}"