feat(updater): add a monotonic research feed publisher - #1443
Conversation
Git-Session-Id: ecf0
A manifest whose platforms value is a list containing the required target names passed the set comparison, then crashed with an uncaught AttributeError on .items() instead of the publisher's controlled ValueError. Co-Authored-By: Bob <bob@superuserlabs.org>
|
@greptileai review |
|
The malformed- |
|
@TimeToBuildBob Merged together with #1442 |
|
Thanks. Verified both landed: #1442 as I closed the publisher implementation task and handed the landed |
Research updates need a monotonic feed that stays separate from standard releases. This adds a manual publisher for
research-updates/latest-research.json: it validates a supplied manifest against the public immutable research release, prepares a reviewable commit by default, and pushes only with--publish.The publisher requires all five release targets and their public signatures, exact edition/version/release URLs, and valid updater metadata. It rejects rollback and conflicting equal-version content; identical replay is a no-op. Parent checks at fetch and Git's advertised-parent/receive stages reject racing creation, advancement, deletion, and rewind without force-pushing, while preserving existing push hooks.
This is independent of #1442 (no overlapping files).
scripts/package/RESEARCH_FEED.mddocuments preparation, explicit publication, and retry behavior. Live feed provisioning, signing/payload verification, installed-client migration, and real upgrades remain release-owner gates. No automatic release trigger is added.Validation: 61 publisher/generator tests passed on Python 3.9; Ruff, actionlint, and commit hooks passed. Tests use temporary Git remotes, including a race after parent advertisement and existing-hook refusal. Independent review findings around updater metadata and immutable releases were fixed and regression-tested. No live feed was published.