main-cd: two runs of one core+Plugins pair overwrite each other's tags — set 3.0.0-ci.9985 armed a 9984 portal, satellites decline every Plugins bundle
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- ci-cd, devops, infrastructure
Hướng nghiên cứu
Start with .github/workflows/main-cd.yml, focusing on the promote and arm phases, then read .github/scripts/resolve-platform.py and the linked issue #6177 for the proposed run-specific identity change. The issue also identifies node-repo-publish-bake.yml as a publication gate. Done means concurrent runs cannot mix portal and tester images, contradictory sets cannot be armed or published, and main/latest cannot move backwards; the issue notes an operator decision remains for the already-mispointed 9985 tag.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Two main-cd runs that build the same core + Plugins pair both promote it, and the shared identity tags they write (memex-portal-ai:<core7>-p<plugins7>, <core7>, main, latest) end up on whichever run promotes LAST. When the older run promotes last, a set's tester (resolved by its unique version tag) and its portal (resolved through the shared pair tag) come from two different builds. arm then copies the pair tag onto the set's version tag, so memex-portal-ai:<version> names an image that reports a different version. Every satellite consuming the set declines the Plugins bundles on the platform floor.
Reported from MeshWeaver.Manufacturing#84 (comment https://github.com/Systemorph/MeshWeaver.Manufacturing/issues/84#issuecomment-6004721186). The correction below is that the cause is a race between two runs, not a re-promote that reuses an old build under a new number.
Evidence (measured 2026-10-05/06 against ACR and the run logs)
run 9984 (schedule, reconcile lane) |
run 9985 (workflow_dispatch rebuild, ref lane) |
|
|---|---|---|
| target | core d205295, Plugins 29bfaef |
core d205295, Plugins 29bfaef (tip b0f38f7 had no completed check) |
| portal built | staging-d205295-37297619921 = sha256:0823d97… reports 3.0.0-ci.9984 |
staging-d205295-37302108498 = sha256:53aa780… reports 3.0.0-ci.9985 (its own identity check passed) |
| tester built | sha256:9ed0081e… (3.0.0-ci.9984) |
sha256:7ae811d7… (3.0.0-ci.9985) |
| promote (phase A+B) | 11:48:39 → 11:51:21: d205295, d205295-p29bfaef, main, latest → its own images |
11:45:43 → 11:48:10: same tags → its own images |
| Plugins bake | tester 9ed0081e + portal 0823d97, floor 9984 | tester 7ae811 + portal 53aa780, floor 9985 (consistent) |
- 9984 had been pending in the reconcile slot behind 9983. It started at 11:19:46, 49 s after 9985 started (11:18:57). The two ran fully in parallel; the concurrency comment in
main-cd.ymlalready admits this overlap ("arebuilddispatch can still overlap a scheduled reconcile"). - Run 9989's
armarmed 3.0.0-ci.9985 viaSRC_PORTAL_TAG=d205295-p29bfaef. Todaymemex-portal-ai:3.0.0-ci.9985=sha256:0823d97…, and that image's config readsMESHWEAVER_PLATFORM_VERSION=3.0.0-ci.9984. - MeshWeaver.Manufacturing run 37309606772 resolved set 9985 as tester
7ae811(by its version tag) + portal0823d97("images resolved by tagd205295-p29bfaef"). The bake-seed then declined 134 of 149 Plugins types:platform floor 3.0.0-ci.9985 … is NEWER than the running platform 3.0.0-ci.9984. Run 37309505481 failed the same way. The same Manufacturing commit had been green on set 9983. - This is not a one-off. Set 9989's pair tag
b0f38f7-p26e14canames 9988's portal (reports 9988), and set 9993'scd953cb-p59a1ceanames 9991's (reports 9991). Set 9995 is consistent. memex(control instanceOps/Status/memex, sampled 2026-10-05 22:58Z) runsmemex-portal-ai:3.0.0-ci.9985, i.e. the 9984 image, with two ReplicaSets andconverged: false. Both portals'/api/versionread commitd205295.
Root cause
main-cd.ymlpromotephase A:promote memex-portal-ai "$SHA" "$SHA-p$PLUGINS_SHORT"writes a tag that names a PAIR, not a run. Phase B movesmain/latestwith no never-backwards check, although phase D has one.main-cd.ymlarm:SRC_PORTAL_TAG=$SHA_SEL-p$PLUGINS_SEL. The comment above it ("tags that name THIS set and nothing else") is false once two runs share a pair. Phase C then writes the version tag with no check of what the image reports..github/scripts/resolve-platform.pyresolve_images: an unarmed set's portal is resolved throughpair_tag. The tester comes from its unique version tag. So the two halves of one set come from two runs.
Fix
- Identity by run, not by pair: #6177 (open, another session) moves
armand the resolver to the per-run staging tagstaging-<core7>-<run id>and retires the pair tag. That removes the race at its root. - Gates, so a contradicting set can never be armed or sealed again (PR to follow): (1)
armasserts on every architecture that the image it is about to arm reports the version it is armed as. (2)node-repo-publish-bake.ymlrefuses to publish when any bundle stamps a floor above the portal the publication names. (3) promote phase B never movesmain/latestbackwards. - Owed after both land (an operator decision, not done here): the armed tag
memex-portal-ai:3.0.0-ci.9985still names the 9984 image. Even with the staging-tag resolver, a consumer that reads the version tag first resolves set 9985 to the wrong portal. Re-pointing it atsha256:53aa780…, or letting a newer armed set supersede it, is what makes set 9985 consistent.
Not established
- Whether
memex'sconverged: falseand its pods restarting through the evening are caused by the self-updater seeing a reported 9984 under an armed 9985 tag. I did not read the self-updater's log. - Whether any satellite other than Manufacturing consumed 9985 inconsistently. Reinsurance, SocialMedia and Crm were green on the same 12:27 dispatch. Education's red has a different cause (install gate, not the floor).
- New sets have been stuck since ~14:00Z for an unrelated reason: every portal build fails on
jobs.plugins-modules.with.modules is absent or empty(#6155). No consistent set newer than 9995 can appear until that is fixed.
- Ngôn ngữ chính
- C#
- Star
- 12
- Fork
- 5
- Merge trung bình
- 5 giờ 10 phút
- Pull request đã merge (30 ngày)
- 981
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Systemorph/MeshWeaver
-
bug sev:M
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 18/100
Systemorph/MeshWeaver#7902 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Error in PollyĐang mởbug sev:L
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
Systemorph/MeshWeaver#7901 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Error in FleetWatchĐang mởbug sev:H
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
Systemorph/MeshWeaver#7896 · 9 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug sev:L
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
Systemorph/MeshWeaver#7893 · 9 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
PodHubNotHereException in PodHubGrain.DeliverCó thể đã có người làm @rbuergi đã nhận 1 ngày trước. Đang mởbug sev:L
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
Systemorph/MeshWeaver#7888 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Systemorph/MeshWeaver
Issue tương tự
-
Add All ContributorsĐang mởenhancement ready-for-human
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
fboucher/2d6-dungeon-app#288 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
Unity-Technologies/unity-agent-plugin#118 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
The Recommended preset turns on Import Uno DSP, which only works with the Material themeCó thể đã có người làm @agneszitte đã nhận hôm nay. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
unoplatform/uno.templates#2388 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Content: the loader doesn't check cities.yaml is exactly the city and town rows in order (R-CITY-006)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
eyalgolan/statecraft-israel#2732 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
StratumServer/Optimum#198 ·
Maintainer thường phản hồi trong vòng 1 ngày