mirror of
https://github.com/nexu-io/open-design.git
synced 2026-09-20 06:15:06 +08:00
07170f8d22
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>
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.Zprerelease artifact set before publication. - Non-stable channels publish counted versions with a
-<channel>.Nsuffix, for example-beta.Nand-prerelease.N; stable promotion checks must match the prerelease suffix while deriving the stablevX.Y.Ztarget. - Stable promotion depends on prerelease only.
--dry-run=metadatashould validate prerelease metadata, materials, and the stable publish plan without triggering build or smoke work.--dry-run=prepublishshould 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.