From 0023ba7a4eae3f3fcbd50197988a1f89484a8a59 Mon Sep 17 00:00:00 2001 From: Matt Morley Date: Sun, 9 Aug 2026 16:38:15 -0700 Subject: [PATCH 1/4] hard-code /opt/photonvision/image-metadata.json --- .github/workflows/build.yml | 21 +++++++++++++++++++ CLAUDE.md | 2 +- .../common/configuration/ConfigManager.java | 4 +++- .../common/hardware/OsImageData.java | 3 +-- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d4e667f054..8702478814 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -612,6 +612,27 @@ jobs: root_location: ${{ matrix.root_location || 'partition=2' }} shrink_image: ${{ matrix.shrink_image || 'yes' }} commands: java -jar *.jar --smoketest --platform=${{ matrix.plat_override }} + # Make sure log files contains the image metadata record + - run: | + set -e + logs=(photonvision_config/logs/*) + if [ "${logs[0]}" = 'photonvision_config/logs/*' ]; then + echo "No logs found in photonvision_config/logs" >&2 + exit 1 + fi + if [ ${#logs[@]} -ne 1 ]; then + echo "Expected exactly one file in photonvision_config/logs, found ${#logs[@]}" >&2 + ls -1 photonvision_config/logs >&2 + exit 1 + fi + grep -Eq 'PhotonVision image data: ImageMetadata\[' "${logs[0]}" + if: ${{ (matrix.os) != 'windows-2022' }} + # Upload config directory produced during smoketest + - uses: actions/upload-artifact@v7 + with: + archive: false + name: photonvision_smoketest-${{ matrix.image_suffix }} + path: photonvision_config matrix-checker: # This job always runs last to set the overall result based on the matrix jobs. If any matrix job failed, this job will fail. diff --git a/CLAUDE.md b/CLAUDE.md index 47dc3e3d86..c317064255 120000 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1 +1 @@ -AGENTS.md \ No newline at end of file +AGENTS.md diff --git a/photon-core/src/main/java/org/photonvision/common/configuration/ConfigManager.java b/photon-core/src/main/java/org/photonvision/common/configuration/ConfigManager.java index 0360c49111..e8b47c3ae9 100644 --- a/photon-core/src/main/java/org/photonvision/common/configuration/ConfigManager.java +++ b/photon-core/src/main/java/org/photonvision/common/configuration/ConfigManager.java @@ -188,7 +188,9 @@ private static Path getRootFolder() { } public static Path getImageMetadataPath() { - return Path.of(getRootFolder().toString(), "image-metadata.json"); + // Every image PhotonVision provides places this file in /opt/photonvision/; hard-code that + // assumption + return Path.of("/opt/photonvision/image-metadata.json"); } ConfigManager(Path configDirectory, ConfigProvider provider) { diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/OsImageData.java b/photon-core/src/main/java/org/photonvision/common/hardware/OsImageData.java index d7c24651c8..d3ac2a10fb 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/OsImageData.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/OsImageData.java @@ -37,8 +37,7 @@ public class OsImageData { private static final Logger logger = new Logger(OsImageData.class, LogGroup.General); - private static File imageMetadataFile = - ConfigManager.getInstance().getImageMetadataPath().toFile(); + private static File imageMetadataFile = ConfigManager.getImageMetadataPath().toFile(); public static final Optional IMAGE_METADATA = getImageMetadata(); From a81fdb58b50e3854ca0aab1a44b465bb2a0a284c Mon Sep 17 00:00:00 2001 From: Matt Morley Date: Sun, 9 Aug 2026 16:48:14 -0700 Subject: [PATCH 2/4] whack --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index c317064255..47dc3e3d86 120000 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1 +1 @@ -AGENTS.md +AGENTS.md \ No newline at end of file From d97607247033e60b951af2e741e032eec5d77c66 Mon Sep 17 00:00:00 2001 From: Matt Morley Date: Sun, 9 Aug 2026 17:12:28 -0700 Subject: [PATCH 3/4] huge --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8702478814..75847d2649 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -630,7 +630,7 @@ jobs: # Upload config directory produced during smoketest - uses: actions/upload-artifact@v7 with: - archive: false + archive: true name: photonvision_smoketest-${{ matrix.image_suffix }} path: photonvision_config From 31ce4abc4dc9f82e393763c2391004c6d608e326 Mon Sep 17 00:00:00 2001 From: Matt Morley Date: Wed, 12 Aug 2026 18:46:13 -0700 Subject: [PATCH 4/4] Update build.yml Co-authored-by: Craig Schardt --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75847d2649..62a5fb9e51 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -613,7 +613,8 @@ jobs: shrink_image: ${{ matrix.shrink_image || 'yes' }} commands: java -jar *.jar --smoketest --platform=${{ matrix.plat_override }} # Make sure log files contains the image metadata record - - run: | + - name: Verify image has metadata + run: | set -e logs=(photonvision_config/logs/*) if [ "${logs[0]}" = 'photonvision_config/logs/*' ]; then