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
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- ci-cd, devops, infrastructure
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- C#
- Estrellas
- 12
- Forks
- 5
- Merge medio
- 5 h 7 min
- PR fusionados (30 d)
- 981
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Systemorph/MeshWeaver
-
bug sev:M
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
Systemorph/MeshWeaver#7842 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug sev:L
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
Systemorph/MeshWeaver#7815 ·
Los mantenedores suelen responder en 1 día
-
bug sev:M
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Systemorph/MeshWeaver#7678 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
ci-template-feed: generated Memex templates cannot restore the newest setPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug ci-template-feed sev:M
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Systemorph/MeshWeaver#7660 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area:hosting enhancement feature:registry-retention sev:M
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
Systemorph/MeshWeaver#7530 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de Systemorph/MeshWeaver
Issues similares
-
VB -> C#
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
icsharpcode/CodeConverter#1301 ·
Los mantenedores suelen responder en 3 días
-
PettingZoo wrappers send only the first action component to every action dimensionPosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Unity-Technologies/ml-agents#6341 ·
Los mantenedores suelen responder en 1 día
-
Area: World-Readiness
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
microsoft/calculator#2522 ·
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Sonarr/Sonarr#9274 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
mailto support for hyperlinkAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100