v0.260.0 — a box ahead of the catalog reads „Naprakész", and the pin never moves backwards (R-524)
gates / gates (push) Successful in 24s

MEASURED 2026-09-15 (BIGNIGHT Phase 6): privatebin updated 2.0.5 -> 2.0.6, catalog
reverted to 2.0.5, and the box read „Frissítés elérhető — ma" over an Update that
would have moved the pin BACKWARDS onto a possibly-migrated datadir.

- stacks.CatalogOrder: the comparison gains a fourth answer (Ahead) and moves out of
  web, so the badge and UpdatePreflight cannot drift apart.
- The badge: ahead reads „Naprakész"/"Up to date", tag-ok, with a title saying why.
- The refusal: UpdatePreflight returns `downgrade` (409), born as a bundle key; the
  API now renders update refusals through errText so it reaches English households.
- Ahead is narrow: every differing service must be orderable AND newer, else Behind.
- Ordering is util.Version.Compare behind a tag normaliser — no second comparator.
- Three red-proofs, each seen to fail.

R-589 was already fixed in v0.258.0; only its register row was stale.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-21 12:48:55 +02:00
parent 19ef0329ab
commit 8f8a64cad7
14 changed files with 597 additions and 42 deletions
+2
View File
@@ -2017,6 +2017,7 @@
"disk.err.wipe_failed": "the erase failed: %s",
"disk.err.attach_unavailable": "This drive cannot be attached right now — it may already be registered, or it may have been unplugged. Reload the page and look at Storage → Drives.",
"err.stacks.migracio_mar_folyamatban": "a migration is already running",
"err.stacks.update_downgrade": "This version is newer than the one in the catalog — moving back needs the operator.",
"err.stacks.alkalmazas_nem_talalhato": "app not found: %s",
"err.stacks.ismeretlen_migracios_hatokor": "unknown migration scope: %s",
"err.stacks.migracios_naplo_irasa": "writing the migration log: %s",
@@ -2289,6 +2290,7 @@
"event.disaster_recovery_completed": "Disaster recovery finished (%d succeeded, %d failed)",
"badge.update.current": "Up to date",
"badge.update.current.title": "This app is running the newest version available.",
"badge.update.ahead.title": "This app is running a version newer than the catalog offers, so there is nothing for you to do.",
"badge.update.behind": "Update available",
"badge.update.behind.today": " — today",
"badge.update.behind.title": "A newer version of this app is available. Select the Update button to start it.",
+2
View File
@@ -2014,6 +2014,7 @@
"disk.err.wipe_failed": "törlés sikertelen: %s",
"disk.err.attach_unavailable": "Ez a meghajtó most nem csatolható — lehet, hogy már regisztrálva van, vagy időközben lecsatolódott. Frissítsd az oldalt, és nézd meg a Tárhely → Meghajtók listát.",
"err.stacks.migracio_mar_folyamatban": "migráció már folyamatban",
"err.stacks.update_downgrade": "Ez a változat újabb a katalógusban lévőnél — visszalépés csak az üzemeltető kérésére.",
"err.stacks.alkalmazas_nem_talalhato": "alkalmazás nem található: %s",
"err.stacks.ismeretlen_migracios_hatokor": "ismeretlen migrációs hatókör: %s",
"err.stacks.migracios_naplo_irasa": "migrációs napló írása: %s",
@@ -2278,6 +2279,7 @@
"event.disaster_recovery_completed": "Katasztrófa helyreállítás befejezve (%d sikeres, %d sikertelen)",
"badge.update.current": "Naprakész",
"badge.update.current.title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"badge.update.ahead.title": "Ez az alkalmazás a katalógusnál újabb változatot futtat, ezért nincs teendőd.",
"badge.update.behind": "Frissítés elérhető",
"badge.update.behind.today": " — ma",
"badge.update.behind.title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.",