R-518: backup button copy says local copy, one short stop, off-site at night (hu+en)

The 'Mentes most' hint and its confirm stated the v0.296.0 measurements
(about 6 min / 9 apps, about 8 min / 12 apps) and that the off-site copy in
the same run makes it longer. Since decision 156 the press makes the local
copy only and resumes the apps at its snapshot, so the copy now says: a
short stop of about 1-1.5 minutes (longer with more apps), the apps run
again while the copy finishes, the off-site copy follows with the next
nightly backup. Parity fixtures updated in place;
TestR518_BackupButtonStatesTheMeasuredDowntime ->
TestR518_BackupButtonStatesTheShortLocalOnlyStop (new copy on page AND in
confirm, old minutes gone, ASCII fragments).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-06 14:59:58 +02:00
parent d8c2634472
commit d720495cd5
9 changed files with 33 additions and 27 deletions
@@ -5,10 +5,18 @@ import (
"testing"
)
// R-518 — the whole-system backup button promised a short stop; measured 2026-09-14 on a 12-app box,
// every app was down for about 7 m 45 s. The copy now states that measurement, in both languages, on
// the page and in the confirm dialog. ASCII fragments only (ui-hungarian rule), each with a control.
func TestR518_BackupButtonStatesTheMeasuredDowntime(t *testing.T) {
// R-518 — the whole-system backup button's copy, in both languages, on the page AND in the confirm.
//
// History: the button first promised a short stop; measured 2026-09-14 (12 apps) every app was down for
// about 7 m 45 s, and v0.296.0 stated the measurements (≈6 min / 9 apps, ≈8 min / 12 apps). Since
// `09` §3 decision 156 (R-518 option A) the press backs up the LOCAL copy only and resumes the apps at
// its snapshot, so the stop is short again (≈80 s inferred on demo-hp: stop 21 s + snapshot ≤12 s +
// restart 46 s) and the off-site copy follows at the next night run. The copy says exactly that, and
// the old minutes — now untrue for a press — must be gone.
//
// ASCII fragments only (ui-hungarian rule). The positive fragments double as the control for the
// negative ones: they prove the body searched actually carries the button's copy.
func TestR518_BackupButtonStatesTheShortLocalOnlyStop(t *testing.T) {
s := i18nTestServer(t)
var c i18nCase
for _, x := range i18nCases() {
@@ -21,23 +29,21 @@ func TestR518_BackupButtonStatesTheMeasuredDowntime(t *testing.T) {
}
for _, lang := range []string{"hu", "en"} {
body := renderI18nCase(t, s, lang, c)
// v0.296.0: BOTH measurements — 2026-09-14 (12 apps, ≈8 min) and 2026-10-05 on demo-hp (9 apps, 5 min 47 s,
// audits/hub-safety-2026-10-05/partE/r518-measure.txt) — and that it is minutes, not seconds.
measured := []string{"kb. 6 perc", "kb. 8 perc", "nem másodperceket"}
vague := ""
want := []string{"1,5 perc", "A gomb a helyi m", "jszakai ment"}
gone := []string{"6 perc", "8 perc", "ugyanekkor k"}
if lang == "en" {
measured, vague = []string{"about 6 minutes", "about 8 minutes", "not seconds"}, "usually for a few minutes"
want = []string{"1.5 minutes", "This button makes the local copy", "next nightly backup"}
gone = []string{"6 minutes", "8 minutes", "in the same run"}
}
for _, m := range measured {
for _, m := range want {
if n := strings.Count(body, m); n < 2 {
t.Errorf("%s: %q appears %d times, want it on the page AND in the confirm", lang, m, n)
}
}
if lang == "en" && strings.Contains(body, vague) {
t.Errorf("en: the old vague promise %q is still on the page", vague)
}
if lang == "hu" && strings.Contains(body, "ltalában néhány perc, nagyobb") {
t.Errorf("hu: the old vague promise is still on the page")
for _, m := range gone {
if strings.Contains(body, m) {
t.Errorf("%s: the old copy %q is still on the page — a press no longer stops the apps for minutes or makes the off-site copy", lang, m)
}
}
}
}
@@ -268,7 +268,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';
@@ -197,7 +197,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';
@@ -341,7 +341,7 @@
<div class="schedule-actions" style="margin-top:1rem">
<button class="btn btn-sm btn-primary" id="wg-backup-btn" onclick="triggerGuestBackup()" disabled>Mentés most</button>
<span class="form-hint" style="margin-left:.5rem"><svg class="ico ico-sm"><use href="#i-triangle-alert"/></svg> A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.</span>
<span class="form-hint" style="margin-left:.5rem"><svg class="ico ico-sm"><use href="#i-triangle-alert"/></svg> Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.</span>
<div id="wg-backup-result" style="margin-top:.6rem"></div>
</div>
@@ -404,7 +404,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';
@@ -259,7 +259,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';
@@ -289,7 +289,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';
@@ -251,7 +251,7 @@
<div class="schedule-actions" style="margin-top:1rem">
<button class="btn btn-sm btn-primary" id="wg-backup-btn" onclick="triggerGuestBackup()" >Mentés most</button>
<span class="form-hint" style="margin-left:.5rem"><svg class="ico ico-sm"><use href="#i-triangle-alert"/></svg> A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.</span>
<span class="form-hint" style="margin-left:.5rem"><svg class="ico ico-sm"><use href="#i-triangle-alert"/></svg> Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.</span>
<div id="wg-backup-result" style="margin-top:.6rem"></div>
</div>
@@ -312,7 +312,7 @@
function triggerGuestBackup() {
var btn = document.getElementById('wg-backup-btn');
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? A mentés alatt minden alkalmazás leáll, amíg a teljes rendszer mentése tart. Ez perceket jelent, nem másodperceket: egy 9 alkalmazásos gépen kb. 6 perc, egy 12 alkalmazásos gépen kb. 8 perc volt — több adatnál, és ha a távoli másolat is ugyanekkor készül, tovább.', function () {
felhomConfirm(btn, 'Elindítod a teljes rendszermentést most? Mentés közben minden alkalmazás rövid időre leáll: kb. 1–1,5 percre, több alkalmazásnál tovább. Utána újra futnak, amíg a másolás befejeződik. A gomb a helyi másolatot készíti el; a távoli másolat a következő éjszakai mentéssel készül.', function () {
var out = document.getElementById('wg-backup-result');
btn.disabled = true;
out.innerHTML = '<span class="form-hint">Mentés indítása…</span>';