Files
felhom.eu/STATUS.md
T
admin 59527d00f9
gates / gates (push) Failing after 21s
R-254 CLOSED both sites (controller v0.208.0); R-255 filed; R-242 red again
R-254 site one was the same defect and is fixed the same way. Site two was NOT the
defect the row described: the pre-deploy hidden input is deliberate (a form must
carry what it submits, README §318) and was left alone; the indefensible one was
the readonly display input on an ALREADY-DEPLOYED app, where nothing is submitted.

The premise that this broke a repo rule does not hold and is recorded rather than
dropped: no line in the repo says 'no silent auto-fill'. What exists is
CONTEXT.md:2070, about accidental EMPTY-password deployments.

§7.3 measured on the fleet: site one's code path has never run (crafty-controller
is the only app declaring initial_credentials and is deployed nowhere); site two's
exposure is also empty (demo-hp runs three apps, none with a generated secret
field). HONEST LIMIT: that is a current-state measurement, and nothing recorded
reads — which was part of the fault. No evidence of exposure, and no mechanism
that could have produced evidence either way. Rotation not indicated by anything
measured.

R-255 NEW: the guard covers 4 of 27 pages at runtime, and the cheap all-templates
gate is blind to the shape that actually shipped (a secret under a neutral
page-data key) — both verified, both stated in the gate's own docstring. Filed
rather than declaring a partial guard complete.

R-242 red a second time in 24h; --no-verify declared. The cadence is the argument
for its other half: nothing gates the vouch.
2026-08-07 21:27:20 +02:00

95 lines
5.9 KiB
Markdown

# STATUS — what works, what's broken, what's next
**Updated 2026-08-08.**
> **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**. Not `CONTEXT.md`, which is technical
> state written for Claude Code. **Items, not paragraphs. One screen.** If it does not fit, something
> belongs in the register instead.
>
> *Rebuilt from the register on 2026-08-07, from 258 lines. The old "what shipped recently" log is what
> the per-repo `CHANGELOG.md` files and the register are for, and is not restated here.*
## What works
A blank machine boots the Felhom disc, installs itself unattended, and is claimed by the customer, who
sets their own password. They install apps from a catalogue of fifty-three, share files over the home
network, and open apps from a launcher or a shared link. Backups run on their own to three places — the
machine's drive, a second drive, and an encrypted off-site copy.
**The backup promise is proved, and so is getting the data back yourself.** A machine has been
destroyed on purpose and its files came back byte for byte identical — four times now, including a
filename with Hungarian accents. On **2026-08-07 the household's own journey passed for the first
time**: someone with a browser and their recovery code got everything back with **no command line
inside the machine at any point**. From logging in to seeing what is in the store took **72 seconds**.
*(R-201 — closed.)*
**And the two rough edges the walk found are gone.** After a rebuild the restore used to stop dead
twice — once because the machine no longer recognised its own drives, once because it refused to
restore an app that was not installed while promising, three lines above, that it would reinstall it.
Both now say what has happened, say that nothing is lost, and link to the one screen that fixes it.
*(R-252, R-253 — both closed 2026-08-08.)*
## What's broken
- **Nothing new is broken.** The three known secret-in-page faults are all fixed; what remains is that
the *check* against a fourth covers 4 pages out of 27, and the cheap check that covers all of them is
blind to the exact shape that shipped. Filed rather than papered over. *(R-255)*
- **The machine's own screen keeps telling an already-paired box to pair itself** — 25 minutes after it
was paired, on a screen that promises it refreshes itself. *(R-214, R-235)*
- **A rebuilt machine cannot create a new recovery code at all.** *(R-221)*
- **A backup that covered nothing still calls itself „Sikeres".** The state is honest; the word is not.
*(R-240)*
- **A machine waiting for its recovery code can stop making off-site backups without alarming us.**
Measured on 7 August: after a *rebuild* we ARE told, promptly and correctly. The gap is narrower than
it read — it is a machine that reaches the state without a working tier behind it. *(R-243)*
- **The card offering to reopen set-aside backups promises more than we can deliver** — we keep the old
sealed package, but nothing can open it. *(R-202)*
- **Deleting a customer leaves rows behind** on every test machine ever torn down, while reporting a
clean teardown. No secrets involved, but it accumulates with each walk. *(R-244)*
- **Putting restored files back where they belong is still a manual step.** *(R-213)*
## Found today
- **The last two passwords are out of the page source**, the same way as yesterday's: the page carries
only a yes/no, and the value is fetched when you ask for it — and the asking is now recorded, which
it never was. One of them was an app's own first-login password, read live out of the running app.
*(R-254, both sites fixed.)*
- **How much was actually exposed: nothing we can find.** The only app that generates a first-login
password isn't installed anywhere, and of the three apps actually running on the demo machine, none
uses a generated secret. **But nothing recorded reads** — that was part of the fault — so this is
"no evidence of exposure", not "proof there was none". No passwords need changing on that basis;
the call is yours.
- **One of the two turned out not to be a fault.** The deploy form's hidden password field is
deliberate: a form must submit what it saves, so the value you wrote down is the one stored.
## What we're working on
- **Widening the check** so a fourth secret-in-a-page is caught by a machine rather than by
someone looking. *(R-255)*
- **Proving the hub really keeps the old sealed key** when a machine re-seals. Never run outside a
test; needs a second deliberate wipe and its own session. *(R-198)*
## Waiting on you
- **Nothing blocking.** Today's release needs a new base image before installations receive it — same
as yesterday, same answer: it is ours to do, not yours. *(R-242)*
*R-245 — whether an undecided household is auto-abandoned after 30 days — was settled on 7 August: we
do not build it, and the reasoning is recorded.*
## DooPlex infrastructure — separate from the product
*Kept under its own heading rather than dropped: these are real asks that need you, but they concern
the machine all this is built on, not what a customer receives. Mixing them in is why the page stopped
being readable.*
- **DooPlex's own backup keeps every copy inside the same box, and is silent when it fails.** *(R-232)*
- **193 old images exist only on this machine**, ~27 GB against 199 GB free — clutter, not space. *(R-210)*
- **The hub password needs rotating** — a diagnostic printed it into a session log; nothing suggests
anyone else saw it. *(R-132)*
- **One thing to read after DooPlex next restarts** — the second-SSD move has never survived a reboot;
it writes PASS/FAIL to `/var/log/felhom-store-postboot-check.log`. On PASS, 34 GB comes back. *(R-209a)*
- **Backup scripts on DooPlex are unversioned host state.** *(R-231)*
- **Instruction-file follow-ups**, each needing a decision rather than an edit. *(R-229, R-230)*