R-302 docs: register rows, the two rules earned twice, STATUS
gates / gates (push) Successful in 27s
gates / gates (push) Successful in 27s
Closes R-296 (verified: shipped in v0.212.0) and R-301 (premise confirmed, fixed in v0.213.0). Files R-302 with WHY the obvious condition was rejected, and R-303 for the missing markOrphaned guard - the co-render is now harmless, not impossible. Bake evidence for golden 0.213.0.
This commit is contained in:
+17
@@ -15,6 +15,23 @@
|
|||||||
> would make one of the two audiences stop reading. `STATUS.md` is also a **view of `OPEN-ITEMS.md`**
|
> would make one of the two audiences stop reading. `STATUS.md` is also a **view of `OPEN-ITEMS.md`**
|
||||||
> and holds nothing of its own; this file does hold its own content, namely the standing rulings below.
|
> and holds nothing of its own; this file does hold its own content, namely the standing rulings below.
|
||||||
|
|
||||||
|
## Two rules earned twice each (2026-08-12)
|
||||||
|
|
||||||
|
**A fact must be recorded at the moment it is a fact, not inferred later from something adjacent.**
|
||||||
|
R-300 recorded dnsmasq ownership at preflight because the package is installed later, by a different
|
||||||
|
component, and "did we install it?" is unanswerable afterwards. R-302 pins the hub's escrow fingerprint
|
||||||
|
at the customer's decision because the key that wrote the set-aside copies is gone by definition, and
|
||||||
|
every later comparison answers a *different* question. In both cases the tempting alternative — infer
|
||||||
|
it from a package mtime, or compare against the current key — is a heuristic wearing a fact's clothes.
|
||||||
|
|
||||||
|
**A guard written against a sentence is not a guard against a claim, and in an inflected language the
|
||||||
|
stem is not the claim either.** The same promise has now surfaced FIVE times, one at a time: a guard
|
||||||
|
matching the singular missed the plural (R-299); broadening to that verb's stem missed a different verb
|
||||||
|
saying the same thing (R-302). And the stem cannot simply be banned — the honest replacement copy
|
||||||
|
*contains* it, inside a question about whether the thing is knowable. `retrieval_promise_gate.py`
|
||||||
|
therefore REGISTERS each claim with a reason and fails on unregistered ones: it pins where the claim is
|
||||||
|
made, without forcing the product to avoid a normal Hungarian verb.
|
||||||
|
|
||||||
## A record that lives inside a row about something else has not been recorded
|
## A record that lives inside a row about something else has not been recorded
|
||||||
|
|
||||||
**Earned 2026-08-10, at a measured cost of two sessions.** Thirty-three package deletions — an
|
**Earned 2026-08-10, at a measured cost of two sessions.** Thirty-three package deletions — an
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# STATUS — what works, what's broken, what's next
|
# STATUS — what works, what's broken, what's next
|
||||||
|
|
||||||
**Updated 2026-08-12.**
|
**Updated 2026-08-12 (evening).**
|
||||||
|
|
||||||
> **A view, not a source.** `documentation/backlog/OPEN-ITEMS.md` is the authority; this page restates
|
> **A view, not a source.** `documentation/backlog/OPEN-ITEMS.md` is the authority; this page restates
|
||||||
> part of it in plain words, and **nothing may exist only here**. **Items, not paragraphs. One screen.**
|
> part of it in plain words, and **nothing may exist only here**. **Items, not paragraphs. One screen.**
|
||||||
@@ -8,27 +8,32 @@
|
|||||||
|
|
||||||
## Waiting on you
|
## Waiting on you
|
||||||
|
|
||||||
- **Raise the update floor to 0.212.0.** It is **0.200.0**, and boxes auto-update to the *floor*, never
|
- **Vouch golden 0.213.0** — three fields together: golden **0.213.0**, agent **0.128.0**, min agent
|
||||||
to the newest — so everything below reaches **newly installed machines only**, and both demo boxes sit
|
**0.127.0**. Both are already verified downloadable and selectable.
|
||||||
where they are. One field, reversible. The hold that could block it does not apply (min agent 0.127.0
|
- **Raise the floor to 0.213.0** afterwards if you want the fix on the existing machines. The floor is
|
||||||
is below the vouched agent 0.128.0). Recommended: do it and watch two disposable boxes move first.
|
**0.212.0** (raised 2026-08-12; both demo boxes confirmed on it), and boxes update to the *floor*,
|
||||||
- **Vouch golden 0.212.0** (three fields: golden 0.212.0, agent 0.128.0, min agent 0.127.0).
|
never to the newest — so until you raise it, v0.213.0 reaches newly installed machines only. One
|
||||||
- **R-296 / R-301 — two wording decisions** that need your call before anyone writes Hungarian at a
|
field, reversible; the R-216 hold does not apply, since min agent 0.127.0 is below the vouched 0.128.0.
|
||||||
customer. R-301 is the more interesting one: a banner still says the old promise, and it is probably
|
- **R-303 — one coherence decision**, ranked low: a box can still raise the "we cannot open your new
|
||||||
true where it renders.
|
backups" card while counting down to deleting the old ones. The two no longer contradict each other,
|
||||||
|
but the state is odd and the wrong fix would hide a real second fault.
|
||||||
|
|
||||||
## What works
|
## What works
|
||||||
|
|
||||||
Both demo machines are home, healthy and reporting on the approved pair. Off-site is credentialed on
|
Both demo machines are home, healthy and reporting on the approved pair. Off-site is credentialed on
|
||||||
`demo-hp` and its repository still opens with the machine's own key. `drill-r50` is blocked, as intended.
|
`demo-hp` and its repository still opens with the machine's own key. `drill-r50` is blocked, as intended.
|
||||||
|
|
||||||
## Shipped, delivered to fresh installs
|
## Shipped
|
||||||
|
|
||||||
- **The drive can be re-attached after a reinstall** (R-280). The restore page said *"this is two
|
- **The drive can be re-attached after a reinstall** (R-280). The restore page said *"this is two
|
||||||
clicks"* over an empty list; it was zero clicks and needed an internal path no customer could produce.
|
clicks"* over an empty list; it was zero clicks and needed an internal path no customer could produce.
|
||||||
- **The orphan card stops promising** that set-aside off-site copies can be reopened — twice over
|
- **The orphan card stops promising** that set-aside off-site copies can be reopened — twice over
|
||||||
(R-294, then **R-299**, which was the same claim in the plural, in the *always-visible* half, missed
|
(R-294, then **R-299**, which was the same claim in the plural, in the *always-visible* half, missed
|
||||||
because the guard matched one inflection of a Hungarian verb).
|
because the guard matched one inflection of a Hungarian verb).
|
||||||
|
- **The countdown banner stops promising retrieval it cannot see is still true** (R-302). The promise
|
||||||
|
is now conditional on the hub still holding the package it held when the customer decided — pinned
|
||||||
|
then, compared now. A sweep found the same claim in five places; a fourth was fixed with it and a
|
||||||
|
fifth deliberately left, because it is true where it renders.
|
||||||
- **One name per secret, box side** (R-295): the dashboard code is „Beállító kód" everywhere;
|
- **One name per secret, box side** (R-295): the dashboard code is „Beállító kód" everywhere;
|
||||||
„Visszaállító kód" is retired. It collided with the escrow „Helyreállítási kód" and cost a real code.
|
„Visszaállító kód" is retired. It collided with the escrow „Helyreállítási kód" and cost a real code.
|
||||||
|
|
||||||
|
|||||||
@@ -596,9 +596,11 @@ unrelated finding, which is why the sweep's proposals were renumbered to R-159
|
|||||||
**R-159 and R-160 are SHIPPED** and are not ranked; they are filed to record the class, and R-159's
|
**R-159 and R-160 are SHIPPED** and are not ranked; they are filed to record the class, and R-159's
|
||||||
class (an image `VOLUME` at an unmounted path) is still live — `immich-server` has one today.
|
class (an image `VOLUME` at an unmounted path) is still live — `immich-server` has one today.
|
||||||
| **R-295** | **One name per secret — CONTROLLER HALF SHIPPED.** The claim page called the SAME three-word dashboard code „Beállító kód" on the first-time branch and „Visszaállító kód" on the reset branch, while the TEN-word escrow code is „Helyreállítási kód". Two near-homographs for two different secrets; the collision cost a real code. „Visszaállító kód" is **retired** in the controller (`claim.html` label/subtitle/button, `claim.go` print-reset-code + lockout strings); the name is now constant and the SENTENCE changes. Naming only — pinned by `TestResetCode_StillAcceptedOnTheSetupPage`. **HUB HALF NOT DONE (Part 4a, dropped per the session's own drop order):** the hub's send button „Visszaállító kód küldése", the mail subject „Jelszó-visszaállítási kód", its body „Visszaállító kód:", and the mail sending the customer to an „Elfelejtett jelszó" page while a rebuilt box actually serves „A szerver beállítása" | **PARTIAL — controller shipped v0.211.0; hub half OPEN (S)** | R-294 | Apply the same ruling in `felhom.eu/hub`, and make the mail name the page the machine is actually showing | CC |
|
| **R-295** | **One name per secret — CONTROLLER HALF SHIPPED.** The claim page called the SAME three-word dashboard code „Beállító kód" on the first-time branch and „Visszaállító kód" on the reset branch, while the TEN-word escrow code is „Helyreállítási kód". Two near-homographs for two different secrets; the collision cost a real code. „Visszaállító kód" is **retired** in the controller (`claim.html` label/subtitle/button, `claim.go` print-reset-code + lockout strings); the name is now constant and the SENTENCE changes. Naming only — pinned by `TestResetCode_StillAcceptedOnTheSetupPage`. **HUB HALF NOT DONE (Part 4a, dropped per the session's own drop order):** the hub's send button „Visszaállító kód küldése", the mail subject „Jelszó-visszaállítási kód", its body „Visszaállító kód:", and the mail sending the customer to an „Elfelejtett jelszó" page while a rebuilt box actually serves „A szerver beállítása" | **PARTIAL — controller shipped v0.211.0; hub half OPEN (S)** | R-294 | Apply the same ruling in `felhom.eu/hub`, and make the mail name the page the machine is actually showing | CC |
|
||||||
| **R-296** | **The orphan card's OTHER sentence makes the same promise, and the spec says it is fine.** `SPEC-orphan-card-copy-2026-08-10.md` §1 lists `backups_remote.html:98` as *"Accurate; keep"*. It is not: it ends *„A meglévő mentések nem sérültek — a hozzájuk tartozó helyreállítási kóddal később **visszaállíthatók lehetnek**."* — the identical unevaluable promise in a different conjugation, which the spec's own regression guard (`visszaállítható lehet`, singular) does not match. Line 101 was fixed; line 98 was left **deliberately unchanged**: the instruction was not to improvise Hungarian at the customer | **READY (XS) — NEW 2026-08-10** | R-294 | Needs a wording decision, then the same treatment as line 101 and an assertion covering BOTH conjugations | operator + CC |
|
| **R-296** | **The orphan card's OTHER sentence makes the same promise, and the spec says it is fine.** `SPEC-orphan-card-copy-2026-08-10.md` §1 lists `backups_remote.html:98` as *"Accurate; keep"*. It is not: it ends *„A meglévő mentések nem sérültek — a hozzájuk tartozó helyreállítási kóddal később **visszaállíthatók lehetnek**."* — the identical unevaluable promise in a different conjugation, which the spec's own regression guard (`visszaállítható lehet`, singular) does not match. Line 101 was fixed; line 98 was left **deliberately unchanged**: the instruction was not to improvise Hungarian at the customer | **CLOSED — shipped in controller v0.212.0 (R-299); verified: the sentence at backups_remote.html:98 was replaced and the stem guard covers it** | R-294 | Needs a wording decision, then the same treatment as line 101 and an assertion covering BOTH conjugations | operator + CC |
|
||||||
| **R-297** | **An install took whatever golden was lying around.** Step 7 of the host installer short-circuited on any local archive with no version compare, no digest and no warning, so the manifest's sha256 — vouching from a different trust root than the code host — was consulted only on the fetch path. Discovery is newest-by-filename: correct by recency, never by verification. A box reinstalled from a stale archive can come back below the version where the off-site recovery screen exists, and below the update floor. Three goldens on `demo-hp` carry controller 0.153.0 and 0.210.0; nothing compared either to the vouched version. **FIXED in `felhom-host-install.sh` v1.26.0** (digest first, then the baked `/etc/felhom-controller-image` tag; auto-discovered mismatch re-fetches, an operator-named mismatch REFUSES; an unreadable manifest refuses). **NOT PUBLISHED and NOT YET OBSERVED FAILING** — the pre-fix stale install was never watched on `drill-r50`, so the `installer-v1.26.0` tag is deliberately not cut | **SHIPPED TO main, UNPUBLISHED (M)** | — | Observe a fresh install taking a stale local golden on `drill-r50` BEFORE publishing; then cut `installer-v1.26.0` and bump both `--ref`s in `webpage.yaml` | CC |
|
| **R-297** | **An install took whatever golden was lying around.** Step 7 of the host installer short-circuited on any local archive with no version compare, no digest and no warning, so the manifest's sha256 — vouching from a different trust root than the code host — was consulted only on the fetch path. Discovery is newest-by-filename: correct by recency, never by verification. A box reinstalled from a stale archive can come back below the version where the off-site recovery screen exists, and below the update floor. Three goldens on `demo-hp` carry controller 0.153.0 and 0.210.0; nothing compared either to the vouched version. **FIXED in `felhom-host-install.sh` v1.26.0** (digest first, then the baked `/etc/felhom-controller-image` tag; auto-discovered mismatch re-fetches, an operator-named mismatch REFUSES; an unreadable manifest refuses). **NOT PUBLISHED and NOT YET OBSERVED FAILING** — the pre-fix stale install was never watched on `drill-r50`, so the `installer-v1.26.0` tag is deliberately not cut | **SHIPPED TO main, UNPUBLISHED (M)** | — | Observe a fresh install taking a stale local golden on `drill-r50` BEFORE publishing; then cut `installer-v1.26.0` and bump both `--ref`s in `webpage.yaml` | CC |
|
||||||
| **R-298** | **The `/storage` page's unregistered list is filtered by `role==='user-data'`, so a drive that is also the backup target can never be registered from it.** `storage.html:363` routes anything not `user-data` into the read-only protected group with NO actions. On the rebuilt `demo-hp` the NVMe is deliberately BOTH the user-data drive and the `felhom-backup` target (`/etc/pve/storage.cfg`: `dir: felhom-backup` → `/mnt/nvme-1tb`), so it renders locked. **This is the SECOND reason that page was empty** during the reinstall rehearsal, independent of R-280's candidate-source defect, and R-280's fix does not touch it — attaching is non-destructive, so the format-wizard protection is the wrong gate for a REGISTER action | **READY (S) — NEW 2026-08-10** | R-280 | Split the role gate: `user-data` keeps destructive actions; any mounted role may be REGISTERED | CC |
|
| **R-298** | **The `/storage` page's unregistered list is filtered by `role==='user-data'`, so a drive that is also the backup target can never be registered from it.** `storage.html:363` routes anything not `user-data` into the read-only protected group with NO actions. On the rebuilt `demo-hp` the NVMe is deliberately BOTH the user-data drive and the `felhom-backup` target (`/etc/pve/storage.cfg`: `dir: felhom-backup` → `/mnt/nvme-1tb`), so it renders locked. **This is the SECOND reason that page was empty** during the reinstall rehearsal, independent of R-280's candidate-source defect, and R-280's fix does not touch it — attaching is non-destructive, so the format-wizard protection is the wrong gate for a REGISTER action | **READY (S) — NEW 2026-08-10** | R-280 | Split the role gate: `user-data` keeps destructive actions; any mounted role may be REGISTERED | CC |
|
||||||
| **R-299** | **The orphan card's OTHER sentence made the same unevaluable promise, and the spec called it accurate.** `backups_remote.html` line 98 — the **always-visible** half of the card, where the paragraph fixed in v0.211.0 renders only after a click — ended *„a hozzájuk tartozó helyreállítási kóddal később **visszaállíthatók lehetnek**"*. It survived for two independent reasons: `SPEC-orphan-card-copy-2026-08-10.md` §1 listed it as *"Accurate; keep"*, and **the regression guard matched one INFLECTION** (`visszaállítható lehet`, singular) which the plural does not contain. **A guard matching one inflection of a Hungarian verb guards one sentence, not the claim.** Guard broadened to the stem `visszaállíthat`; proven by planting the shipped plural (stem guard convicts, old singular guard does not match it at all). Spec corrected in both places. The two accurate halves kept | **CLOSED — controller v0.212.0** | R-294 | — | CC |
|
| **R-299** | **The orphan card's OTHER sentence made the same unevaluable promise, and the spec called it accurate.** `backups_remote.html` line 98 — the **always-visible** half of the card, where the paragraph fixed in v0.211.0 renders only after a click — ended *„a hozzájuk tartozó helyreállítási kóddal később **visszaállíthatók lehetnek**"*. It survived for two independent reasons: `SPEC-orphan-card-copy-2026-08-10.md` §1 listed it as *"Accurate; keep"*, and **the regression guard matched one INFLECTION** (`visszaállítható lehet`, singular) which the plural does not contain. **A guard matching one inflection of a Hungarian verb guards one sentence, not the claim.** Guard broadened to the stem `visszaállíthat`; proven by planting the shipped plural (stem guard convicts, old singular guard does not match it at all). Spec corrected in both places. The two accurate halves kept | **CLOSED — controller v0.212.0** | R-294 | — | CC |
|
||||||
| **R-300** | **Our own uninstall left the thing that makes our own reinstall refuse.** `--uninstall` removed the dnsmasq snippet and RESTARTED the daemon, leaving it enabled and unconstrained on `0.0.0.0:53`; the next byo install's preflight then hard-refuses with *"a resolver is already bound to :53"* and **the customer goes debugging a home network that was never at fault**. Ownership is now RECORDED at preflight (`dnsmasq_preexisting`) — the only moment it is a fact, since the package is installed by the AGENT (`lanresolver.go:107`), not the installer — and honoured at removal: Felhom's → stop+disable; the owner's → restart only; **no record (every box already in the field) → restart only, fail-safe, with the reason and the exact command logged**. The preflight refusal keeps its two routes and its promise not to touch DNS on a host we do not own, and gains the missing line: when the bound resolver is dnsmasq, it says it looks like ours and names the command. **NOT OBSERVED LIVE — the install→uninstall→install cycle on `drill-r50` was not run**, so `installer-v1.27.0` is NOT cut | **SHIPPED TO main, UNPUBLISHED + UNVERIFIED LIVE (M)** | — | Run the cycle on `drill-r50` (quote the second install refusing before the fix, passing after), together with R-297's stale-golden observation — one drill session covers both; only then publish | CC |
|
| **R-300** | **Our own uninstall left the thing that makes our own reinstall refuse.** `--uninstall` removed the dnsmasq snippet and RESTARTED the daemon, leaving it enabled and unconstrained on `0.0.0.0:53`; the next byo install's preflight then hard-refuses with *"a resolver is already bound to :53"* and **the customer goes debugging a home network that was never at fault**. Ownership is now RECORDED at preflight (`dnsmasq_preexisting`) — the only moment it is a fact, since the package is installed by the AGENT (`lanresolver.go:107`), not the installer — and honoured at removal: Felhom's → stop+disable; the owner's → restart only; **no record (every box already in the field) → restart only, fail-safe, with the reason and the exact command logged**. The preflight refusal keeps its two routes and its promise not to touch DNS on a host we do not own, and gains the missing line: when the bound resolver is dnsmasq, it says it looks like ours and names the command. **NOT OBSERVED LIVE — the install→uninstall→install cycle on `drill-r50` was not run**, so `installer-v1.27.0` is NOT cut | **SHIPPED TO main, UNPUBLISHED + UNVERIFIED LIVE (M)** | — | Run the cycle on `drill-r50` (quote the second install refusing before the fix, passing after), together with R-297's stale-golden observation — one drill session covers both; only then publish | CC |
|
||||||
| **R-301** | **The abandon countdown banner makes the retired promise a third time, and as a flat statement.** `controller/internal/web/templates/layout.html:143`: *"A korábbi távoli mentéseidet N nap múlva véglegesen töröljük, a kérésed szerint. **Addig még visszaszerezheted őket a helyreállítási kóddal.**"* Unlike the orphan card this one is not hedged at all. **It is probably TRUE where it renders** — it is gated on `backupMgr.AbandonStatus().Active`, i.e. the customer chose to abandon a recovery offer that exists — which is why it was NOT changed (this session was fenced to the orphan card). **But it renders in `layout.html`, i.e. on EVERY page, and a rebuilt box can have an active abandon countdown WHILE its remote store is orphaned**, so a customer can read *"we cannot determine whether these can be opened"* on the backups page and *"until then you can still retrieve them with your recovery code"* in the banner above it, about copies they have no way to tell apart. **Not established:** whether the two sentences refer to the same bytes. The spec anticipated this in its §4 note | **READY (S) — NEW 2026-08-12** | R-299 | Establish whether the two can co-render for one customer and whether they name the same copies; if so, make the banner name WHICH copy | operator + CC |
|
| **R-301** | **The abandon countdown banner makes the retired promise a third time, and as a flat statement.** `controller/internal/web/templates/layout.html:143`: *"A korábbi távoli mentéseidet N nap múlva véglegesen töröljük, a kérésed szerint. **Addig még visszaszerezheted őket a helyreállítási kóddal.**"* Unlike the orphan card this one is not hedged at all. **It is probably TRUE where it renders** — it is gated on `backupMgr.AbandonStatus().Active`, i.e. the customer chose to abandon a recovery offer that exists — which is why it was NOT changed (this session was fenced to the orphan card). **But it renders in `layout.html`, i.e. on EVERY page, and a rebuilt box can have an active abandon countdown WHILE its remote store is orphaned**, so a customer can read *"we cannot determine whether these can be opened"* on the backups page and *"until then you can still retrieve them with your recovery code"* in the banner above it, about copies they have no way to tell apart. **Not established:** whether the two sentences refer to the same bytes. The spec anticipated this in its §4 note | **CLOSED — premise CONFIRMED and fixed in controller v0.213.0 (R-302)** | R-299 | Establish whether the two can co-render for one customer and whether they name the same copies; if so, make the banner name WHICH copy | operator + CC |
|
||||||
|
| **R-302** | **The abandon banner promised retrieval it could not see was still true — fixed by PINNING a fingerprint at the decision.** The countdown strip said *„Addig még visszaszerezheted őket a helyreállítási kóddal"* unconditionally, on every page, and R-301 established it can co-render with the orphan card correctly saying we cannot tell. **THE OBVIOUS CONDITION WAS REJECTED AND HERE IS WHY, so nobody re-proposes it:** the proxy *"does the hub hold a key different from the one I use?"* asks about the WRONG key — the set-aside copies were written under an OLDER key the box no longer has, which is why they were set aside — so on a twice-rebuilt box it answers "promise it" about copies no key on file can open. **Demonstrated, not argued:** under the proxy both Scenario B (package replaced) and Scenario D (legacy countdown) flip back to promising. Instead `startAbandonCountdown` pins `AbandonPinnedEscrowKeySHA256` — the hub's escrow key fingerprint AS CACHED AT THE DECISION — written once, never refreshed; the banner then asks only *"is the hub still holding that same package?"*. **⚠ THE PIN IS A RECORDED ASSUMPTION:** nothing on the box records which key wrote the set-aside copies, so it presumes the package held at the decision is that one — true in the ordinary rebuilt-box story, NOT provable, wrong on a twice-rebuilt box. Recorded in the field comment so it can be narrowed rather than hardening into a fact. Empty is not a match on either side; a countdown started before v0.213.0 carries no pin and takes the cautious branch (deliberately NOT backfilled). **A template sweep found a FOURTH instance** (the backups-page abandon block — same condition applied, since fixing the strip and not the page would leave them contradicting) **and a FIFTH** (the abandon confirmation screen, deliberately LEFT: it renders at the moment of the decision, where the promise is true by construction because that is the package about to be pinned) | **CLOSED — controller v0.213.0** | R-301 | — | CC |
|
||||||
|
| **R-303** | **`markOrphaned` has no guard against an active abandon countdown — the co-render is made HARMLESS, not IMPOSSIBLE.** `ensureOffboxRepo` calls `markOrphaned()` for a claimed box (`offbox.go:804`) with no check on `AbandonAt`, so a later run finding the FRESH store unopenable re-raises the orphan card while the countdown runs. R-302 ensures the two surfaces no longer contradict each other in that state, but the state itself is still reachable and is arguably incoherent: a box counting down to deleting its old history while simultaneously reporting its NEW history is unopenable is in trouble in two ways at once and says so in two separate cards. **Ranked LOW deliberately** — it is a coherence question, not a correctness one, and the wrong fix (suppressing the orphan card during a countdown) would hide a real second fault | **READY (S) — NEW 2026-08-12** | R-302 | Decide whether a countdown should suppress, defer or annotate the orphan card — and beware hiding a genuine second failure | operator + CC |
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Golden bake 0.213.0 — 2026-08-12
|
||||||
|
|
||||||
|
Per `RUNBOOK-manual-build.md` §4.0/§4.1. Drill VM reverted to `virgin` before and after; guest 9100
|
||||||
|
destroyed `--purge`; `/root` residue empty.
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| `GOLDEN_VERSION` | **0.213.0** |
|
||||||
|
| `GOLDEN_SHA256` | **77429bfc7e39ffc8d25c05b1819b8e0affdc58ccca3d7bd80da4ed9a9e7d1f3c** |
|
||||||
|
| controller baked | `gitea.dooplex.hu/admin/felhom-controller:0.213.0` |
|
||||||
|
| `MinAgent` (CHANGELOG header) | **0.127.0** |
|
||||||
|
| published | 656 657 008 B, `upload OK (HTTP 201)` |
|
||||||
|
|
||||||
|
## Acceptance markers (`grep -F`, quoted loop variable)
|
||||||
|
|
||||||
|
`docker OK (overlay2` 1 · `including mount point rootfs` 1 · `including mount point mp0` 1 ·
|
||||||
|
`upload OK (HTTP 201)` 1 · `FATAL` 0 · `excluding` 0
|
||||||
|
|
||||||
|
## Fetchability — the SERVED bytes
|
||||||
|
|
||||||
|
```
|
||||||
|
downloaded: 656657008 bytes
|
||||||
|
sha256: 77429bfc7e39ffc8d25c05b1819b8e0affdc58ccca3d7bd80da4ed9a9e7d1f3c
|
||||||
|
```
|
||||||
|
Identical to `GOLDEN_SHA256`. Image confirmed retrievable via `docker manifest inspect`.
|
||||||
|
|
||||||
|
## Secret handling
|
||||||
|
|
||||||
|
Token file→file, read inside the VM by a runner script, never on a command line.
|
||||||
|
`systemctl show golden-bake` grep = **0**. Leak grep on the committed log = **0**, believable because a
|
||||||
|
planted-token control grepped **1**. All artefacts `shred -u`'d.
|
||||||
|
|
||||||
|
## NOT DONE
|
||||||
|
|
||||||
|
The Day-0 vouch — the operator's. Three fields: golden 0.213.0, agent 0.128.0, min agent 0.127.0.
|
||||||
@@ -0,0 +1,326 @@
|
|||||||
|
[golden] build-golden.sh v3.0.0 — baking controller gitea.dooplex.hu/admin/felhom-controller:0.213.0
|
||||||
|
[golden] creating build LXC 9100 (nesting=1,keyctl=1, unprivileged; rootfs 32G + ONE data volume 24G @ /var/lib/felhom, backup=1) …
|
||||||
|
Logical volume "vm-9100-disk-0" created.
|
||||||
|
Logical volume pve/vm-9100-disk-0 changed.
|
||||||
|
Creating filesystem with 8388608 4k blocks and 2097152 inodes
|
||||||
|
Filesystem UUID: a460a896-c93d-43c0-9449-a622ff18f75c
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
|
||||||
|
4096000, 7962624
|
||||||
|
Logical volume "vm-9100-disk-1" created.
|
||||||
|
Logical volume pve/vm-9100-disk-1 changed.
|
||||||
|
Creating filesystem with 6291456 4k blocks and 1572864 inodes
|
||||||
|
Filesystem UUID: 3471e3a8-8d9d-4a1e-8d2f-cc4c17e6823a
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
|
||||||
|
extracting archive '/var/lib/vz/template/cache/debian-13-standard_13.6-1_amd64.tar.zst'
|
||||||
|
Total bytes read: 553512960 (528MiB, 176MiB/s)
|
||||||
|
Detected container architecture: amd64
|
||||||
|
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
|
||||||
|
done: SHA256:UCaBOZ/zAXBnzkXJV7Dei7K16wVM3uV686U7ivvkPbY root@felhom-golden
|
||||||
|
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
|
||||||
|
done: SHA256:9Q4LKmO2bHibCa4OCM4PoYzZuVgkpsum860RcNFV60w root@felhom-golden
|
||||||
|
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
|
||||||
|
done: SHA256:Xyb79Ge5sbeGA1A22ECeGIV/z2ps7lHVeIToIUpdQQA root@felhom-golden
|
||||||
|
[golden] starting + installing Docker (official repo, trixie channel) …
|
||||||
|
apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!
|
||||||
|
perl: warning: Setting locale failed.
|
||||||
|
perl: warning: Please check that your locale settings:
|
||||||
|
LANGUAGE = (unset),
|
||||||
|
LC_ALL = (unset),
|
||||||
|
LC_CTYPE = (unset),
|
||||||
|
LC_NUMERIC = (unset),
|
||||||
|
LC_COLLATE = (unset),
|
||||||
|
LC_TIME = (unset),
|
||||||
|
LC_MESSAGES = (unset),
|
||||||
|
LC_MONETARY = (unset),
|
||||||
|
LC_ADDRESS = (unset),
|
||||||
|
LC_IDENTIFICATION = (unset),
|
||||||
|
LC_MEASUREMENT = (unset),
|
||||||
|
LC_PAPER = (unset),
|
||||||
|
LC_TELEPHONE = (unset),
|
||||||
|
LC_NAME = (unset),
|
||||||
|
LANG = "en_US.UTF-8"
|
||||||
|
are supported and installed on your system.
|
||||||
|
perl: warning: Falling back to the standard locale ("C").
|
||||||
|
locale: Cannot set LC_CTYPE to default locale: No such file or directory
|
||||||
|
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
|
||||||
|
locale: Cannot set LC_ALL to default locale: No such file or directory
|
||||||
|
apt-listchanges: Can't set locale; make sure $LC_* and $LANG are correct!
|
||||||
|
perl: warning: Setting locale failed.
|
||||||
|
perl: warning: Please check that your locale settings:
|
||||||
|
LANGUAGE = (unset),
|
||||||
|
LC_ALL = (unset),
|
||||||
|
LC_CTYPE = (unset),
|
||||||
|
LC_NUMERIC = (unset),
|
||||||
|
LC_COLLATE = (unset),
|
||||||
|
LC_TIME = (unset),
|
||||||
|
LC_MESSAGES = (unset),
|
||||||
|
LC_MONETARY = (unset),
|
||||||
|
LC_ADDRESS = (unset),
|
||||||
|
LC_IDENTIFICATION = (unset),
|
||||||
|
LC_MEASUREMENT = (unset),
|
||||||
|
LC_PAPER = (unset),
|
||||||
|
LC_TELEPHONE = (unset),
|
||||||
|
LC_NAME = (unset),
|
||||||
|
LANG = "en_US.UTF-8"
|
||||||
|
are supported and installed on your system.
|
||||||
|
perl: warning: Falling back to the standard locale ("C").
|
||||||
|
locale: Cannot set LC_CTYPE to default locale: No such file or directory
|
||||||
|
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
|
||||||
|
locale: Cannot set LC_ALL to default locale: No such file or directory
|
||||||
|
[golden] baking daemon.json: classic overlay2 driver (containerd-snapshotter OFF) + log rotation …
|
||||||
|
[golden] wiring the single data volume (R-165 variant V-c): /var/lib/felhom/{docker,sys_drive} -> binds …
|
||||||
|
[golden] verifying Docker works in the build guest (storage driver should be overlay2 on the ext4 data volume) …
|
||||||
|
Unable to find image 'hello-world:latest' locally
|
||||||
|
latest: Pulling from library/hello-world
|
||||||
|
4f55086f7dd0: Pulling fs layer
|
||||||
|
4f55086f7dd0: Verifying Checksum
|
||||||
|
4f55086f7dd0: Download complete
|
||||||
|
4f55086f7dd0: Pull complete
|
||||||
|
Digest: sha256:7f4da0fc94bcece205a8c0b6f4d11c8196924654ffe5c4d1aa439b7f632048b2
|
||||||
|
Status: Downloaded newer image for hello-world:latest
|
||||||
|
docker OK (overlay2; data-root /var/lib/docker)
|
||||||
|
/var/lib/docker is a real mount: /dev/mapper/pve-vm--9100--disk--1[/docker] ext4
|
||||||
|
/mnt/sys_drive is a real mount: /dev/mapper/pve-vm--9100--disk--1[/sys_drive] ext4
|
||||||
|
both paths are ONE filesystem: /dev/mapper/pve-vm--9100--disk--1 23317576
|
||||||
|
[golden] baking the in-guest controller image gitea.dooplex.hu/admin/felhom-controller:0.213.0 (no registry cred at deploy) …
|
||||||
|
|
||||||
|
WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
|
||||||
|
Configure a credential helper to remove this warning. See
|
||||||
|
https://docs.docker.com/go/credential-store/
|
||||||
|
|
||||||
|
0.213.0: Pulling from admin/felhom-controller
|
||||||
|
039e6f9f9752: Pulling fs layer
|
||||||
|
0094c3ac0914: Pulling fs layer
|
||||||
|
deca1dac7403: Pulling fs layer
|
||||||
|
11c19a33d1b8: Pulling fs layer
|
||||||
|
3f89e7b3184e: Pulling fs layer
|
||||||
|
0746e996ffc9: Pulling fs layer
|
||||||
|
11c19a33d1b8: Waiting
|
||||||
|
3f89e7b3184e: Waiting
|
||||||
|
0746e996ffc9: Waiting
|
||||||
|
039e6f9f9752: Verifying Checksum
|
||||||
|
039e6f9f9752: Download complete
|
||||||
|
11c19a33d1b8: Verifying Checksum
|
||||||
|
11c19a33d1b8: Download complete
|
||||||
|
deca1dac7403: Verifying Checksum
|
||||||
|
deca1dac7403: Download complete
|
||||||
|
3f89e7b3184e: Verifying Checksum
|
||||||
|
3f89e7b3184e: Download complete
|
||||||
|
0746e996ffc9: Verifying Checksum
|
||||||
|
0746e996ffc9: Download complete
|
||||||
|
0094c3ac0914: Verifying Checksum
|
||||||
|
0094c3ac0914: Download complete
|
||||||
|
039e6f9f9752: Pull complete
|
||||||
|
0094c3ac0914: Pull complete
|
||||||
|
deca1dac7403: Pull complete
|
||||||
|
11c19a33d1b8: Pull complete
|
||||||
|
3f89e7b3184e: Pull complete
|
||||||
|
0746e996ffc9: Pull complete
|
||||||
|
Digest: sha256:4425de158e671bc672b1d6e42e500a64d43a93d0f0285c99dd322d1f252d0274
|
||||||
|
Status: Downloaded newer image for gitea.dooplex.hu/admin/felhom-controller:0.213.0
|
||||||
|
gitea.dooplex.hu/admin/felhom-controller:0.213.0
|
||||||
|
[golden] asking the controller which infra images it manages …
|
||||||
|
[golden] baking infra images (4): traefik:v3.6.7 cloudflare/cloudflared:2026.6.0 gtstef/filebrowser:1.3.3-stable gitea.dooplex.hu/admin/felhom-samba:1.1.0 …
|
||||||
|
v3.6.7: Pulling from library/traefik
|
||||||
|
589002ba0eae: Pulling fs layer
|
||||||
|
ef63511ea6cc: Pulling fs layer
|
||||||
|
0738e5cb835e: Pulling fs layer
|
||||||
|
3e6813f70c64: Pulling fs layer
|
||||||
|
3e6813f70c64: Waiting
|
||||||
|
589002ba0eae: Verifying Checksum
|
||||||
|
589002ba0eae: Download complete
|
||||||
|
ef63511ea6cc: Download complete
|
||||||
|
3e6813f70c64: Verifying Checksum
|
||||||
|
3e6813f70c64: Download complete
|
||||||
|
0738e5cb835e: Verifying Checksum
|
||||||
|
0738e5cb835e: Download complete
|
||||||
|
589002ba0eae: Pull complete
|
||||||
|
ef63511ea6cc: Pull complete
|
||||||
|
0738e5cb835e: Pull complete
|
||||||
|
3e6813f70c64: Pull complete
|
||||||
|
Digest: sha256:a9890c898f379c1905ee5b28342f6b408dc863f08db2dab20e46c267d1ff463a
|
||||||
|
Status: Downloaded newer image for traefik:v3.6.7
|
||||||
|
docker.io/library/traefik:v3.6.7
|
||||||
|
2026.6.0: Pulling from cloudflare/cloudflared
|
||||||
|
47de5dd0b812: Pulling fs layer
|
||||||
|
c172f21841df: Pulling fs layer
|
||||||
|
99515e7b4d35: Pulling fs layer
|
||||||
|
99ba982a9142: Pulling fs layer
|
||||||
|
d6b1b89eccac: Pulling fs layer
|
||||||
|
2780920e5dbf: Pulling fs layer
|
||||||
|
7c12895b777b: Pulling fs layer
|
||||||
|
3214acf345c0: Pulling fs layer
|
||||||
|
52630fc75a18: Pulling fs layer
|
||||||
|
dd64bf2dd177: Pulling fs layer
|
||||||
|
b839dfae01f6: Pulling fs layer
|
||||||
|
ebddc55facdc: Pulling fs layer
|
||||||
|
bdfd7f7e5bf6: Pulling fs layer
|
||||||
|
2d4d7adf6272: Pulling fs layer
|
||||||
|
40008157d8d2: Pulling fs layer
|
||||||
|
bd8962e29291: Pulling fs layer
|
||||||
|
cac2ae0193cb: Pulling fs layer
|
||||||
|
74d1dac84ecc: Pulling fs layer
|
||||||
|
dd64bf2dd177: Waiting
|
||||||
|
b839dfae01f6: Waiting
|
||||||
|
ebddc55facdc: Waiting
|
||||||
|
bdfd7f7e5bf6: Waiting
|
||||||
|
2d4d7adf6272: Waiting
|
||||||
|
40008157d8d2: Waiting
|
||||||
|
bd8962e29291: Waiting
|
||||||
|
cac2ae0193cb: Waiting
|
||||||
|
74d1dac84ecc: Waiting
|
||||||
|
2780920e5dbf: Waiting
|
||||||
|
7c12895b777b: Waiting
|
||||||
|
3214acf345c0: Waiting
|
||||||
|
52630fc75a18: Waiting
|
||||||
|
99ba982a9142: Waiting
|
||||||
|
d6b1b89eccac: Waiting
|
||||||
|
47de5dd0b812: Verifying Checksum
|
||||||
|
47de5dd0b812: Download complete
|
||||||
|
c172f21841df: Verifying Checksum
|
||||||
|
c172f21841df: Download complete
|
||||||
|
99ba982a9142: Verifying Checksum
|
||||||
|
99ba982a9142: Download complete
|
||||||
|
99515e7b4d35: Download complete
|
||||||
|
d6b1b89eccac: Verifying Checksum
|
||||||
|
d6b1b89eccac: Download complete
|
||||||
|
2780920e5dbf: Verifying Checksum
|
||||||
|
2780920e5dbf: Download complete
|
||||||
|
47de5dd0b812: Pull complete
|
||||||
|
7c12895b777b: Verifying Checksum
|
||||||
|
7c12895b777b: Download complete
|
||||||
|
3214acf345c0: Verifying Checksum
|
||||||
|
3214acf345c0: Download complete
|
||||||
|
52630fc75a18: Verifying Checksum
|
||||||
|
52630fc75a18: Download complete
|
||||||
|
dd64bf2dd177: Verifying Checksum
|
||||||
|
dd64bf2dd177: Download complete
|
||||||
|
b839dfae01f6: Verifying Checksum
|
||||||
|
b839dfae01f6: Download complete
|
||||||
|
ebddc55facdc: Verifying Checksum
|
||||||
|
ebddc55facdc: Download complete
|
||||||
|
c172f21841df: Pull complete
|
||||||
|
bdfd7f7e5bf6: Verifying Checksum
|
||||||
|
bdfd7f7e5bf6: Download complete
|
||||||
|
2d4d7adf6272: Verifying Checksum
|
||||||
|
2d4d7adf6272: Download complete
|
||||||
|
bd8962e29291: Verifying Checksum
|
||||||
|
bd8962e29291: Download complete
|
||||||
|
cac2ae0193cb: Verifying Checksum
|
||||||
|
99515e7b4d35: Pull complete
|
||||||
|
40008157d8d2: Verifying Checksum
|
||||||
|
40008157d8d2: Download complete
|
||||||
|
99ba982a9142: Pull complete
|
||||||
|
74d1dac84ecc: Verifying Checksum
|
||||||
|
74d1dac84ecc: Download complete
|
||||||
|
d6b1b89eccac: Pull complete
|
||||||
|
2780920e5dbf: Pull complete
|
||||||
|
7c12895b777b: Pull complete
|
||||||
|
3214acf345c0: Pull complete
|
||||||
|
52630fc75a18: Pull complete
|
||||||
|
dd64bf2dd177: Pull complete
|
||||||
|
b839dfae01f6: Pull complete
|
||||||
|
ebddc55facdc: Pull complete
|
||||||
|
bdfd7f7e5bf6: Pull complete
|
||||||
|
2d4d7adf6272: Pull complete
|
||||||
|
40008157d8d2: Pull complete
|
||||||
|
bd8962e29291: Pull complete
|
||||||
|
cac2ae0193cb: Pull complete
|
||||||
|
74d1dac84ecc: Pull complete
|
||||||
|
Digest: sha256:ba461b8aa9c042156dbd39c38657fe7431bafa063220eab8d5330a523863da9f
|
||||||
|
Status: Downloaded newer image for cloudflare/cloudflared:2026.6.0
|
||||||
|
docker.io/cloudflare/cloudflared:2026.6.0
|
||||||
|
1.3.3-stable: Pulling from gtstef/filebrowser
|
||||||
|
6a0ac1617861: Pulling fs layer
|
||||||
|
ef8806083e82: Pulling fs layer
|
||||||
|
b74107c861c7: Pulling fs layer
|
||||||
|
adc935def003: Pulling fs layer
|
||||||
|
4f4fb700ef54: Pulling fs layer
|
||||||
|
18695ccc900a: Pulling fs layer
|
||||||
|
45d119d5c397: Pulling fs layer
|
||||||
|
dac52db4fc51: Pulling fs layer
|
||||||
|
6d598f86b2f2: Pulling fs layer
|
||||||
|
8aa349c8396c: Pulling fs layer
|
||||||
|
dac52db4fc51: Waiting
|
||||||
|
6d598f86b2f2: Waiting
|
||||||
|
8aa349c8396c: Waiting
|
||||||
|
adc935def003: Waiting
|
||||||
|
4f4fb700ef54: Waiting
|
||||||
|
18695ccc900a: Waiting
|
||||||
|
45d119d5c397: Waiting
|
||||||
|
6a0ac1617861: Verifying Checksum
|
||||||
|
6a0ac1617861: Download complete
|
||||||
|
adc935def003: Verifying Checksum
|
||||||
|
adc935def003: Download complete
|
||||||
|
4f4fb700ef54: Verifying Checksum
|
||||||
|
4f4fb700ef54: Download complete
|
||||||
|
6a0ac1617861: Pull complete
|
||||||
|
ef8806083e82: Verifying Checksum
|
||||||
|
ef8806083e82: Download complete
|
||||||
|
45d119d5c397: Verifying Checksum
|
||||||
|
45d119d5c397: Download complete
|
||||||
|
b74107c861c7: Verifying Checksum
|
||||||
|
b74107c861c7: Download complete
|
||||||
|
dac52db4fc51: Verifying Checksum
|
||||||
|
dac52db4fc51: Download complete
|
||||||
|
6d598f86b2f2: Verifying Checksum
|
||||||
|
6d598f86b2f2: Download complete
|
||||||
|
8aa349c8396c: Verifying Checksum
|
||||||
|
8aa349c8396c: Download complete
|
||||||
|
ef8806083e82: Pull complete
|
||||||
|
18695ccc900a: Verifying Checksum
|
||||||
|
18695ccc900a: Download complete
|
||||||
|
b74107c861c7: Pull complete
|
||||||
|
adc935def003: Pull complete
|
||||||
|
4f4fb700ef54: Pull complete
|
||||||
|
18695ccc900a: Pull complete
|
||||||
|
45d119d5c397: Pull complete
|
||||||
|
dac52db4fc51: Pull complete
|
||||||
|
6d598f86b2f2: Pull complete
|
||||||
|
8aa349c8396c: Pull complete
|
||||||
|
Digest: sha256:eb3733681db8757412632c61a99ad656f0d94ed6781bb2ea114b4d70babab78c
|
||||||
|
Status: Downloaded newer image for gtstef/filebrowser:1.3.3-stable
|
||||||
|
docker.io/gtstef/filebrowser:1.3.3-stable
|
||||||
|
1.1.0: Pulling from admin/felhom-samba
|
||||||
|
897d797d2723: Pulling fs layer
|
||||||
|
3051591aa250: Pulling fs layer
|
||||||
|
ce57a3f93416: Pulling fs layer
|
||||||
|
fb94eeec2fe1: Pulling fs layer
|
||||||
|
fb94eeec2fe1: Waiting
|
||||||
|
ce57a3f93416: Verifying Checksum
|
||||||
|
ce57a3f93416: Download complete
|
||||||
|
fb94eeec2fe1: Verifying Checksum
|
||||||
|
fb94eeec2fe1: Download complete
|
||||||
|
897d797d2723: Verifying Checksum
|
||||||
|
897d797d2723: Download complete
|
||||||
|
897d797d2723: Pull complete
|
||||||
|
3051591aa250: Verifying Checksum
|
||||||
|
3051591aa250: Download complete
|
||||||
|
3051591aa250: Pull complete
|
||||||
|
ce57a3f93416: Pull complete
|
||||||
|
fb94eeec2fe1: Pull complete
|
||||||
|
Digest: sha256:1c17c09422bec0366d7cf0e0fcfc1486ba6c90334a0a5d5c851073a9342f8f10
|
||||||
|
Status: Downloaded newer image for gitea.dooplex.hu/admin/felhom-samba:1.1.0
|
||||||
|
gitea.dooplex.hu/admin/felhom-samba:1.1.0
|
||||||
|
[golden] baking the controller-bootstrap unit (deploys the BAKED controller from the config mount) …
|
||||||
|
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-controller-bootstrap.service' → '/etc/systemd/system/felhom-controller-bootstrap.service'.
|
||||||
|
[golden] baking the controller-bootstrap PATH unit (starts the service on bootstrap-mount hot-plug — B1) …
|
||||||
|
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-controller-bootstrap.path' → '/etc/systemd/system/felhom-controller-bootstrap.path'.
|
||||||
|
[golden] baking the first-boot SSH host-key regeneration unit (F3) …
|
||||||
|
Created symlink '/etc/systemd/system/multi-user.target.wants/felhom-regen-hostkeys.service' → '/etc/systemd/system/felhom-regen-hostkeys.service'.
|
||||||
|
[golden] identity-clean + minimize …
|
||||||
|
[golden] stop + archive …
|
||||||
|
INFO: including mount point rootfs ('/') in backup
|
||||||
|
INFO: including mount point mp0 ('/var/lib/felhom') in backup
|
||||||
|
INFO: archive file size: 626MB
|
||||||
|
INFO: Finished Backup of VM 9100 (00:00:42)
|
||||||
|
[golden] DONE. golden archive volid: local:backup/vzdump-lxc-9100-2026_08_12-15_34_05.tar.zst (rootfs 32G + ONE data volume 24G @ /var/lib/felhom, all in the archive)
|
||||||
|
[golden] publishing golden (656657008 bytes, sha256 77429bfc7e39ffc8…) → https://gitea.dooplex.hu/api/packages/admin/generic/felhom-golden/0.213.0/golden.tar.zst
|
||||||
|
[golden] pre-delete existing: HTTP 404 (404/204 expected)
|
||||||
|
[golden] upload OK (HTTP 201)
|
||||||
|
GOLDEN_VERSION=0.213.0
|
||||||
|
GOLDEN_SHA256=77429bfc7e39ffc8d25c05b1819b8e0affdc58ccca3d7bd80da4ed9a9e7d1f3c
|
||||||
|
[golden] Record in the hub operator UI (Configs → Day-0 artifacts): golden 0.213.0 / 77429bfc7e39ffc8d25c05b1819b8e0affdc58ccca3d7bd80da4ed9a9e7d1f3c
|
||||||
|
[golden] (the build guest 9100 is stopped; destroy it with: pct destroy 9100 --purge)
|
||||||
Reference in New Issue
Block a user