fix: regenerate platform manifest for openadapt-flow 1.25.1 - #1067
Merged
Conversation
`platform-manifest.json` advertised flow 1.24.0 and its sha256 digests while PyPI's latest was 1.25.1, so `validate-platform-manifest` failed on `main` and on every PR. The manifest is served publicly from raw.githubusercontent and is OpenAdapt's only cryptographic claim about the current release, so while it is stale anyone verifying a downloaded wheel against it fails. Regenerated with `scripts/generate_platform_manifest.py`. Both new digests were independently confirmed by downloading the artifacts from PyPI and hashing the bytes, not just by trusting the generator's read of the JSON API: 375c516837a44bc8bea87ba0429967f92561d6df92eef41e624f55c281bed9ae wheel 15393bb978283e87f043e6fa5f05d7b1d3fc0f9a497a4cf9561a23e8fc5f76ac sdist pyproject.toml pins flow by range (>=1.20.1,<2.0.0), so no pin change is needed; the manifest records the published version. Why it drifted, and why it will drift again ------------------------------------------- The launcher's own release workflow regenerates the manifest, so launcher releases self-heal. Component releases do not. This workflow declares a `component-released` `repository_dispatch` receiver and its comment stated the sending side was already a one-step `gh api ... /dispatches` in the component release workflows. That is false: none of openadapt-flow, openadapt-capture or openadapt-desktop has such a step. The receiver has no sender, so the daily cron is the only automatic detector. Flow published 1.25.0 and then 1.25.1 on 2026-07-27, hours after the manifest was last regenerated at 15:42 that day and hours after the 06:17 cron, which is why this landed as a red `main` rather than as a drift issue. The false comment is corrected here, in the workflow and in docs/platform-manifest.md, so the open loop is visible instead of looking closed. The fix itself is deliberately not attempted in this PR: a cross-repository dispatch cannot use a component repo's own GITHUB_TOKEN and needs a `contents: write` token provisioned as a secret in three repositories, which is a credential decision. Auto-opening a regeneration PR is separately impossible today because Actions is not permitted to create pull requests in this repository (`can_approve_pull_request_reviews: false`); adding that job would produce a permanently red check rather than a fix. Note: https://openadapt.ai/status.json (openadapt-web) is also still on flow 1.24.0. The validator treats that as a WARNING, not an error, so it does not block, but it is the same drift on a second public surface. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
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.
platform-manifest.jsonadvertised flow 1.24.0 and its sha256 digests whilePyPI's latest was 1.25.1, so
validate-platform-manifestfailed onmainandon every PR. The manifest is served publicly from raw.githubusercontent and is
OpenAdapt's only cryptographic claim about the current release, so while it is
stale anyone verifying a downloaded wheel against it fails.
Regenerated with
scripts/generate_platform_manifest.py. Both new digests wereindependently confirmed by downloading the artifacts from PyPI and hashing the
bytes, not just by trusting the generator's read of the JSON API:
375c516837a44bc8bea87ba0429967f92561d6df92eef41e624f55c281bed9ae wheel
15393bb978283e87f043e6fa5f05d7b1d3fc0f9a497a4cf9561a23e8fc5f76ac sdist
pyproject.toml pins flow by range (>=1.20.1,<2.0.0), so no pin change is
needed; the manifest records the published version.
Why it drifted, and why it will drift again
The launcher's own release workflow regenerates the manifest, so launcher
releases self-heal. Component releases do not. This workflow declares a
component-releasedrepository_dispatchreceiver and its comment stated thesending side was already a one-step
gh api ... /dispatchesin the componentrelease workflows. That is false: none of openadapt-flow, openadapt-capture or
openadapt-desktop has such a step. The receiver has no sender, so the daily
cron is the only automatic detector. Flow published 1.25.0 and then 1.25.1 on
2026-07-27, hours after the manifest was last regenerated at 15:42 that day and
hours after the 06:17 cron, which is why this landed as a red
mainratherthan as a drift issue.
The false comment is corrected here, in the workflow and in
docs/platform-manifest.md, so the open loop is visible instead of looking
closed. The fix itself is deliberately not attempted in this PR: a
cross-repository dispatch cannot use a component repo's own GITHUB_TOKEN and
needs a
contents: writetoken provisioned as a secret in three repositories,which is a credential decision. Auto-opening a regeneration PR is separately
impossible today because Actions is not permitted to create pull requests in
this repository (
can_approve_pull_request_reviews: false); adding that jobwould produce a permanently red check rather than a fix.
Note: https://openadapt.ai/status.json (openadapt-web) is also still on flow
1.24.0. The validator treats that as a WARNING, not an error, so it does not
block, but it is the same drift on a second public surface.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM