Repository navigation
feat(manifest): bind components released from the monorepo - #1428
Merged
Merged
Conversation
Since the fold, Flow, Types, Agent and Desktop publish from
OpenAdaptAI/OpenAdapt under packages/<dir>, tagged <package>-v<version>.
The generator only knew the frozen standalone repositories and v<version>
tags, so it could not pin any release made here ("openadapt-flow has no
published release tag for 2.2.0").
- The generator looks up a folded component's tag in the monorepo first, then
in its standalone repository for releases from before the fold. A monorepo
release records its package directory as provenance source_root, and its
schema sources, evidence paths and Desktop sidecar lock are read there.
Standalone provenance is unchanged byte for byte.
- The validator accepts exactly those tag, repository and directory
combinations, and derives each evidence pointer's repository and path from
the selected release.
- platform-manifest.json is regenerated with the same published selection;
only the generator hash and generation time change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
The platform manifest generator can now pin Flow, Types, Agent and Desktop releases made from this monorepo. Before this, it knew only the frozen standalone repositories and their
v<version>tags, so it refused every monorepo release:This blocks the launcher 1.18.0 release. It raises the Flow floor to 2.2.0, and the release gate (
validate_platform_manifest --launcher-candidate) then needs a BOM that pins Flow 2.3.0 and openadapt-types 0.24.0.What changes
Generator (
scripts/generate_platform_manifest.py)_release_sources(role, version)lists the tags that may identify a version, in order:OpenAdaptAI/OpenAdapt@<package>-v<version>underpackages/<dir>;v<version>(or Desktopdesktop-v<version>) tags, for releases from before the fold.The first tag that exists is bound. Nothing is invented.
A monorepo release records
source_root(packages/flow) in its provenance, and its provenance URL points at that directory.Schema sources, qualification-evidence paths and the Desktop sidecar
uv.lockare read undersource_root. Evidence rows inQUALIFICATION_EVIDENCEare now package-relative, and theirrepositorycomes from the selected release.Standalone provenance is unchanged byte for byte: there is no
source_rootkey, and the URLs and paths are the same.Validator (
scripts/validate_platform_manifest.py)Manifest: regenerated with the same published selection. Only the generator hash and generation time change (the report too).
Docs:
docs/platform-manifest.mddescribes the two tag forms andsource_root.Checks
tests/test_platform_manifest_monorepo.py(14 tests):packages/flow, and the sidecar lock URL in both forms;openadapt-agent-v2.2.1andopenadapt-desktop-v0.22.0. The sidecar lock came frompackages/desktop/uv.lock, and online validation passed, including commit, tree and lock digests. Flow 2.0.0 and types 0.18.0 fell back to their standalone tags.--require-compatible --launcher-candidate).Not pinnable, by design
openadapt-typesrange, because its contracts were bundled in, and the customer-runner unit needs one.openadapt_types/*.pyschema sources.The generator refuses both with a named reason. Flow 2.3.0 requires
openadapt-types>=0.24.0,<0.25.0, and types 0.24.0 has the sources again, so the 1.18.0 BOM pins those two.🤖 Generated with Claude Code