fc737b0fc0
gates / gates (push) Successful in 13s
v1.27.0's fix worked exactly once per machine. Measured on drill-r50 from virgin, on the PUBLISHED v1.27.0, before anything was changed: cycle 1 recorded 'no' and freed :53; cycle 2 recorded 'yes' and left dnsmasq running on 0.0.0.0:53; cycle 3 refused, exit 1. Every box already in the field is at cycle 2, and a reinstall onto a machine that has had Felhom is cycle 2 by definition. Why cycle 2 says yes: the preflight's ownership question is dpkg-query package presence and nothing else - not the absence of a record. Stopping the unit and leaving the package made our own package read as the household's one cycle later. Now the uninstall removes the package when the record says we installed it. Order unchanged and load-bearing: read the record, act, then delete the state file that holds it. TWO packages are recorded, because dnsmasq ships the unit and dnsmasq-base ships /usr/sbin/dnsmasq, and each is taken back only if we added it. The dependency check is a SIMULATION, not a guess: apt-get -s purge is asked what it would remove and the purge proceeds only if that set is a subset of ours; otherwise stop+disable, naming the package that blocked it. Never interactive, never fatal, and the success is re-queried rather than read off an exit code. Watched: three fixed cycles -> install 3 PASSES; a household resolver untouched; a dependent package not purged and named; no record -> untouched with the command named. Red-proofs with the mutation asserted applied: remove the purge -> cycle 3 refuses in those exact words; remove the ownership check -> a household resolver is purged; infer ownership -> the guess is taken. Also: R-317 (the agent stats a path dnsmasq-base owns to decide whether to install dnsmasq - pre-existing, now reachable), R-318 (no honest ownership marker exists for existing boxes; the preflight message is the mechanism), and the status page's decisions section rewritten to say what each decision costs and what doing nothing selects.
106 lines
6.9 KiB
Markdown
106 lines
6.9 KiB
Markdown
# STATUS — what works, what's broken, what's next
|
|
|
|
**Updated 2026-08-12 (night — the door, part one).**
|
|
|
|
> **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.**
|
|
> If it does not fit, it belongs in the register instead.
|
|
|
|
## Waiting on you
|
|
|
|
*Three decisions. Each says what it would cost to leave alone, because two of them quietly choose an
|
|
outcome if you do not answer. The register row is the detail, not the decision.*
|
|
|
|
### Should a customer be able to get their old backups back themselves, or is that a phone call?
|
|
|
|
Since Tuesday a machine recognises an older recovery code and says so honestly, but it cannot hand the
|
|
files over — it tells the person to write to us, and we can do it by hand.
|
|
|
|
- **Build it:** the restore code has to accept a second location and password instead of only its own.
|
|
Contained — three functions and a screen — plus one genuine design question: what a customer sees
|
|
when they have several old sets and must pick one.
|
|
- **Leave it:** nothing breaks. Every customer in this position becomes a support conversation, and we
|
|
keep a promise we can only keep manually.
|
|
|
|
**If you do nothing:** the honest message stays and the work never gets scheduled. Nobody is blocked;
|
|
this is the one decision here with no deadline of any kind. *(register: R-312)*
|
|
|
|
### The old copy on the demo machine cannot be opened by anyone. Keep paying to store it, or delete it?
|
|
|
|
You told me to keep it, and I did. Then I found out what it is: 36 backups and a single key, and that
|
|
key was destroyed by the bug we fixed on 4 August. **No recovery code in existence opens it.**
|
|
|
|
- **Keep it:** pennies of storage, and it stays as the one physical example of what that bug cost.
|
|
- **Delete it:** irreversible, and the example goes with it.
|
|
|
|
**If you do nothing:** it stays forever and stops being a decision — which is how five scratch
|
|
customers accumulated. Nobody is blocked. *(register: R-313)*
|
|
|
|
### When a machine is in two kinds of trouble at once, should it say both things?
|
|
|
|
A machine can count down to deleting its old backups while also reporting that it cannot open its new
|
|
ones. Both cards are true; together they are bewildering.
|
|
|
|
- **Leave it:** two true statements, confusing side by side. Nobody has been hurt by it.
|
|
- **Hide the older card during a countdown:** tidier, and it risks hiding a real second failure — which
|
|
is why I have not done it.
|
|
|
|
**If you do nothing:** both keep showing. Ranked low on purpose. *(register: R-303)*
|
|
|
|
## What works
|
|
|
|
Both demo machines are home, healthy and reporting on the approved pair — **controller 0.214.0, agent
|
|
0.129.0**, delivered by the floor rather than by hand. Off-site is credentialed on `demo-hp` and its
|
|
repository still opens with the machine's own key. `drill-r50` is reverted to `virgin`, powered off.
|
|
|
|
## Shipped
|
|
|
|
- **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.
|
|
- **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
|
|
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;
|
|
„Visszaállító kód" is retired. It collided with the escrow „Helyreállítási kód" and cost a real code.
|
|
- **A correct recovery code is no longer called wrong** (R-311, three components). If a customer types
|
|
the code for an older set of backups, the machine now checks the packages we kept, recognises it, and
|
|
says so: *your code is correct, it belongs to an earlier package, we kept it, your current backups are
|
|
fine, write to us*. It deliberately promises no restore, because there is no button yet.
|
|
- **The countdown on `demo-felhom` is cancelled** on your ruling (R-307). Nothing was deleted; the
|
|
24 August deadline is gone. See R-313 for what that copy turns out to be.
|
|
- **Vouched and delivered 2026-08-12**: golden 0.214.0, agent 0.129.0, floor 0.214.0 — both machines
|
|
took it themselves. The version guard was watched working on the way: `demo-hp` was **held** back
|
|
while its agent was older, and updated 6 seconds after the agent caught up. That guard exists because
|
|
a machine once ran ahead of its agent and a customer was told a correct code was wrong; first sighting.
|
|
- **Both installer fixes are now PUBLISHED** as `installer-v1.27.0` (R-297 + R-300). Each fault was
|
|
watched happening first, on a machine reset to factory state: the old installer really did build a
|
|
machine on a base image from July, and our own uninstall really did block our own next install.
|
|
|
|
## Broken, or knowingly incomplete
|
|
|
|
- **The tester's machine has no recovery route at all** — see the `PETI` row. Its host record was
|
|
deleted on 15 July; there is no key, no off-site copy and no local backup. **If that drive fails,
|
|
everything on it is lost.** First act of the visit: copy the ~3.6 GB off before anything is
|
|
reinstalled — it is currently the only copy in existence. Whether it stays parked is your call and is
|
|
deliberately left open.
|
|
- **Kept backups can be opened — but still only by us** (R-304 partly closed, R-312 open). The machine
|
|
now recognises an older code and says so plainly instead of hedging. What it still cannot do is hand
|
|
the customer their old files: that needs the restore code to accept a second location, which is real
|
|
work rather than wiring. Today the honest answer is "your code is right, write to us" — and we can.
|
|
- **The dnsmasq fix helps a machine once** (R-305). On a machine that never had Felhom it works. On the
|
|
second reinstall the leftover comes back, because the package is never removed — so the machine looks,
|
|
to our own installer, as if the household had installed it. Watched happening the same afternoon.
|
|
- **The hub half of the naming is undone** (R-295 PARTIAL): the emails still use the retired name and
|
|
send people to a page a rebuilt machine does not show.
|
|
- **The storage page has its own separate reason for showing an empty list** (R-298), untouched.
|
|
|
|
## Working on next
|
|
|
|
R-312's shape (the button, or deliberately no button); then R-305, because the tester's second
|
|
reinstall still hits the dnsmasq wall; then the hub naming; then the 2026-08-09 batch
|
|
(R-279 … R-292), still untriaged against everything since.
|