Files
lefarcen 07170f8d22 fix(release): track in-place re-runs in the prerelease card (#7950)
The watcher treated "I once saw this run completed" as permanent and stopped
polling the lane. GitHub re-runs a workflow IN PLACE — run_attempt increments,
status returns to in_progress, conclusion is rewritten, all under the same run
id — so the card froze on the first attempt's verdict for the rest of the watch.

Both dispatched lanes had it. Each now re-reads its run every cycle and refreshes
the paginated job list only when the run's own status/conclusion/run_attempt/
updated_at say it moved, so watching for a re-run costs no call the lane was not
already making.


Claude-Session: https://claude.ai/code/session_01PbTMU3bKHcu6cmJYy42eF3

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 12:18:51 +00:00
..

Tools Release

tools-release owns release metadata, storage publishing, release reports, and notification-facing data contracts. Packaged artifact build, cache, installer, payload, and smoke work stays in tools-pack; release workflows compose the two tools through CLI and file contracts.

Channel Architecture Snapshot

This matrix is a quick check before changing or validating the stable lane.

Channel Workflow / lane Role Build source Publish gate GitHub Release surface R2 / storage surface Linux policy Dry-run focus
beta release-beta / beta Daily R&D and fast validation Build the current beta lane artifacts directly No stable promotion gate Beta artifacts according to beta policy Beta channel metadata, feeds, platform manifests, payloads, and reports Default-disabled in the current validation round Fast build, cache, updater, and metadata validation
prerelease release-prerelease / prerelease Stable delivery validation Build prerelease artifacts directly The only stable promotion gate No final stable GitHub Release semantics Prerelease metadata, feeds, platform manifests, payloads, and reports Follows stable platform policy, including optional Linux enablement Complete materials that a future stable release can promote
stable release-stable / stable Formal public release Promote from a validated vX.Y.Z prerelease, with prepublish validation when requested Must detect available prerelease artifacts for the exact vX.Y.Z target Installers/packages and matching SHA files only All other platform artifacts, launcher payloads, manifests, metadata, feeds, and reports Follows stable platform policy, including optional Linux enablement metadata validates promotion inputs and plan; prepublish covers build, smoke, reports, and final publish plan without side effects

Stable Quick Check

  • Stable must verify an available, usable vX.Y.Z prerelease artifact set before publication.
  • Non-stable channels publish counted versions with a -<channel>.N suffix, for example -beta.N and -prerelease.N; stable promotion checks must match the prerelease suffix while deriving the stable vX.Y.Z target.
  • Stable promotion depends on prerelease only.
  • --dry-run=metadata should validate prerelease metadata, materials, and the stable publish plan without triggering build or smoke work.
  • --dry-run=prepublish should run all pre-publication build, smoke, payload or installer validation, report, artifact selection, and publish-plan work, while stopping before final external publishing side effects.
  • Stable GitHub Release assets should contain only user-facing installers or packages and matching SHA files.
  • R2 remains the complete release/update storage surface for payloads, manifests, metadata, feeds, platform reports, and non-GitHub artifacts.
  • The stable workflow should stay isomorphic with the other release-* lanes. Stable-specific policy belongs behind scripts, CLI options, and file contracts, not as leaked tool internals in workflow YAML.