67 lines
4.0 KiB
Markdown
67 lines
4.0 KiB
Markdown
# REPORT — v0.212.0: the orphan card's second promise (2026-08-12)
|
|
|
|
Commit `68f3e12`. Green gate: build/vet clean, **28 packages ok, 0 FAIL**; all ten controller gates OK.
|
|
Golden 0.212.0 baked and published; **the Day-0 vouch is the operator's and was not made here.**
|
|
|
|
## R-299 — the same claim, one paragraph up, in the plural
|
|
|
|
`internal/web/templates/backups_remote.html` line 98 — the **always-visible** half of the orphan card —
|
|
still ended *„a hozzájuk tartozó helyreállítási kóddal később **visszaállíthatók lehetnek**"*. The
|
|
paragraph fixed in v0.211.0 renders only after the customer clicks „Új távoli mentés indítása…", so on
|
|
first view **the sentence a customer actually read was the one still promising.**
|
|
|
|
It survived for two independent reasons:
|
|
|
|
1. `SPEC-orphan-card-copy-2026-08-10.md` §1 listed the line as *"Accurate; keep"* — corrected.
|
|
2. **The regression guard matched one inflection.** It asserted `visszaállítható lehet` (singular); the
|
|
card carried `visszaállíthatók lehetnek` (plural), which does not contain that substring. **A guard
|
|
matching one inflection of a Hungarian verb guards one sentence, not the claim.**
|
|
|
|
Guard now matches the stem `visszaállíthat`. The plain forms the rest of the UI uses („visszaállítás",
|
|
„visszaállítani") do not contain it, so it does not over-match.
|
|
|
|
**Shipped copy** (the two knowable halves kept — declining a promise must not become telling the
|
|
customer less than we know):
|
|
|
|
> A távoli tárhelyen lévő mentések egy korábbi, már nem elérhető kulccsal készültek (jellemzően
|
|
> újratelepítés után). Emiatt új mentés jelenleg nem írható a tárolóba. **A meglévő mentések nem
|
|
> sérültek. Azt viszont ez a gép nem tudja megállapítani, hogy később megnyithatók-e — ez attól függ,
|
|
> megvan-e még a hozzájuk tartozó kulcs. Ha szükséged van rájuk, írj nekünk.**
|
|
|
|
Bytes verified as hex: `á/é/ő/ü/ú/í/ó` and `—` all correct, no double-encoding, no replacement chars.
|
|
|
|
## Plant → convict → remove → pass
|
|
|
|
| step | result |
|
|
|---|---|
|
|
| plant the exact shipped plural | stem guard **FAILS**, quoting the sentence back |
|
|
| would the OLD narrow guard have caught it? | **No** — `"visszaállítható lehet" in plural` is `False`, shown as a pure string fact rather than a source grep (my first attempt at that check was contaminated by my own template comment) |
|
|
| remove the plant | 5/5 orphan-card tests pass |
|
|
|
|
Two branches of the gate are covered: card shown, and a healthy store seeing none of it.
|
|
|
|
## Instrument defect fixed in the guard itself
|
|
|
|
Its failure message sliced the rendered HTML at a **byte** offset, which cuts Hungarian mid-character
|
|
and printed a replacement char — a garbled failure message reads like an encoding bug in the product
|
|
rather than in the message. It now slices on rune boundaries.
|
|
|
|
## Does the card read coherently as a whole?
|
|
|
|
**Mostly yes, with one thing I did not touch and one I introduced.**
|
|
|
|
- **Not touched, and reportable: `layout.html:143`.** The abandon countdown says *"Addig még
|
|
visszaszerezheted őket a helyreállítási kóddal"* — the retired promise a third time and **un-hedged**.
|
|
It is probably TRUE where it renders (gated on an active abandon of a recovery offer that exists),
|
|
which is why I left it; but it renders on **every page**, and a rebuilt box can have an active
|
|
countdown while its store is orphaned. **Filed as R-301** with the wording question, not improvised.
|
|
- **Introduced: a repetition.** Once the customer clicks through, "we cannot determine / depends on the
|
|
key / write to us" appears in both the explanation and the confirm block. On first view — the common
|
|
case — only the explanation shows, and each is self-contained. I read this as reinforcement at the
|
|
decision point rather than a defect, and left it rather than churn customer copy.
|
|
|
|
## NOT DONE
|
|
|
|
- The Day-0 vouch (the operator's).
|
|
- No box was deployed to, so this is unit- and render-proven only, not exercised through a live endpoint.
|