Adopt canonical upstream-version tracker for multi-key state - #67
Merged
Conversation
Replace the bespoke check-esphome-version.yml with the carried check-upstream-version-task.yml plus a thin scheduled entry-point (check-upstream-version.yml) whose resolver prints the esphome and device-builder versions as a JSON object. Rename the state file esphome-version.json -> upstream-version.json (keyed esphome and device_builder, sorted JSON) and point build-docker-task.yml, the merge-bot refs (upstream-version-<base>), and the PR paths-filter at it. Converges on ptr727/ProjectTemplate#169, which added structured multi-key state to the canonical task per the gap filed in #168. Closes #66.
There was a problem hiding this comment.
Pull request overview
This PR re-converges the repo’s upstream-version tracking onto the canonical template workflow, enabling multi-key (multi-component) pinned state while keeping the existing “rolling bump PR per branch” automation model intact.
Changes:
- Replaces the bespoke ESPHome-only tracker with a thin entry workflow that calls the carried
check-upstream-version-task.yml. - Migrates state from
esphome-version.jsonto a canonical multi-keyupstream-version.json(esphome+device_builder) and updates consumers accordingly. - Updates automation wiring/docs: merge-bot head-ref matching, PR smoke-build path filters, and AGENTS.md references.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| upstream-version.json | Adds canonical multi-key upstream state (esphome, device_builder). |
| esphome-version.json | Removes the legacy single-key-ish state file. |
| AGENTS.md | Updates tracker/state-file/head-ref documentation to match the new canonical tracker. |
| .github/workflows/test-pull-request.yml | Repoints paths-filter to watch upstream-version.json instead of the removed file. |
| .github/workflows/merge-bot-pull-request.yml | Renames and repoints the auto-merge job to match upstream-version-{main,develop} bump branches. |
| .github/workflows/check-upstream-version.yml | Adds the scheduled/dispatch entry workflow that resolves PyPI versions and calls the task. |
| .github/workflows/check-upstream-version-task.yml | Adds the carried canonical task implementing strict multi-key state normalization and rolling bump PR creation. |
| .github/workflows/check-esphome-version.yml | Deletes the bespoke tracker workflow superseded by the canonical task. |
| .github/workflows/build-docker-task.yml | Updates pinned-version reads to .esphome / .device_builder from upstream-version.json. |
Re-sync the carried check-upstream-version-task.yml to write the state file as CRLF (jq emits LF), honoring .editorconfig's .json rule, and convert upstream-version.json to CRLF to match. Converges on ptr727/ProjectTemplate#172, which resolved the LF-vs-CRLF state-file nuance filed in #170.
Add --show-error/--location to the PyPI curl calls and emit ::error:: annotations on resolve failure, so a failed scheduled run surfaces a clear cause. Addresses Copilot review feedback on PR #67.
Reference ESPHome and esphome-device-builder (the PyPI/product names) in the resolve-failure messages, and update the remaining "ESPHome-version bump" mention in AGENTS.md to "upstream-version bump". Addresses Copilot review feedback on PR #67.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
upstream-version.json:5
- upstream-version.json currently ends with an extra blank line after the closing brace. Since the tracker task writes the file deterministically, keeping the state file byte-identical to the task output avoids one-off "canonicalize" churn and keeps diffs minimal.
}
This was referenced Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Re-converges the upstream-version tracker onto the canonical template task now that
ptr727/ProjectTemplate#169added structured multi-key state (closing the gap this repo filed in #168), and picks up the follow-up CRLF fix from #172 (closing #170). Tracked here as #66.Changes
.github/workflows/check-upstream-version-task.yml(carried from the template; checkout pinned to this repo'sv7.0.0) and a thin scheduled entry-point.github/workflows/check-upstream-version.ymlwhose resolver prints{"esphome":"<pypi>","device_builder":"<pypi>"}. Delete the bespokecheck-esphome-version.yml.esphome-version.json->upstream-version.json(repo root, besideversion.json), now a sorted JSON object keyedesphome/device_builder- the exact canonical form the task writes.build-docker-task.ymlreads.esphome(image tag +ESPHOME_VERSION) and.device_builder(DEVICE_BUILDER_VERSION);test-pull-request.ymlpaths-filter watchesupstream-version.json; the merge-bot job is renamedmerge-upstream-versionand matches the newupstream-version-main/upstream-version-develophead refs.Notes
.editorconfig's.jsonrule) after ProjectTemplate#172 resolved Record two container-testing traps in Verification Discipline #170;upstream-version.jsonis committed CRLF to match. Verified byte-identical to the task's output, so a same-version run is a no-op (no canonicalize PR).upstream-version.jsoncarries no$comment; the "bot-maintained, do not hand-edit" note moved to AGENTS.md.--show-error --location --failand emit::error::annotations naming ESPHome / esphome-device-builder on resolve failure.Verification
actionlintclean on all workflows;markdownlint-cli2clean on AGENTS.md.Closes #66.