v0.316.0 CHANGELOG; the push-once fact in this repo's unprompted-work rule
gates / gates (push) Failing after 49s
gates / gates (push) Failing after 49s
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0117kRTSgs3rJWUFGxyoWN6Y
This commit is contained in:
@@ -50,6 +50,12 @@ it **first** in the morning note. A decision you cannot write in that shape is o
|
||||
on Tester 1, demo-hp and demo-felhom through the normal update path and the box walk's checks are green
|
||||
on all three — not at night unless the night brief says so. **Agent releases still stop for the
|
||||
operator's vouch.** The golden is baked weekly and vouched by the operator; CC never vouches. **No `--no-verify`.**
|
||||
**A version number is pushed once** — `felhom-controller/controller/build.sh` now refuses a second
|
||||
push of a tag that exists, and a registry it cannot reach is a refusal too. This is a FACT about
|
||||
what the build does, not a new rule: a fix for something already pushed is the next patch version,
|
||||
and a box on a bad image is moved by the normal update path, never by re-tagging. Earned on
|
||||
2026-10-15, when 0.315.0 was pushed three times from three different commits and a cache kept
|
||||
serving the first one (`09-update-architecture.md` §0).
|
||||
7. **An enumerated gap becomes a row in the same session — or, if it is small, is fixed in it** (the size rule).
|
||||
Prose is not a record.
|
||||
8. **Hungarian text is searched with ASCII fragments**, with a positive and a negative control.
|
||||
|
||||
@@ -1,3 +1,45 @@
|
||||
## v0.316.0 — the app page as one column; a version number is pushed once (2026-10-15)
|
||||
|
||||
**MinAgent: 0.155.0** (unchanged — no new agent call). No golden (`09` §3 decision 250). Design:
|
||||
felhom.eu `architecture/02-controller-module-map.md` „The app page" (the layout rules and the asset
|
||||
tag) and `09-update-architecture.md` (a version is pushed once). Layout: the operator-approved
|
||||
mockup of 2026-10-15.
|
||||
|
||||
- **Measured first: why the tab bar rendered unstyled through the public address.** Not the box —
|
||||
exactly one guest runs 0.315.0 and it runs the registry's current digest, and the floor is still
|
||||
0.314.0 so nothing else could have taken it. It was a cache, and the mechanism is four facts: the
|
||||
stylesheet URL was `?v={{.Version}}`, identical across **three different 0.315.0 builds**, the
|
||||
first of which had no `.app-tabs` rules; the origin sends **no ETag and no Last-Modified**, so a
|
||||
cached copy can only expire, never be revalidated; Cloudflare caches that URL and rewrites the
|
||||
browser TTL from 3600 to **14400**; and the session's first request came back `EXPIRED`, which
|
||||
only happens when the edge holds an aged-out entry. Evidence and the honest caveat (that probe
|
||||
revalidated the stale object, so it is no longer reproducible):
|
||||
`felhom.eu/documentation/audits/app-page-2026-10-15b/P0/VERDICT.md`.
|
||||
- **`build.sh` refuses to push a version that already exists** — before building, for `--push` and
|
||||
`--multiarch`. A registry it cannot reach is a refusal too: proving the tag is new is the point,
|
||||
and „I could not ask" is not that proof. Local builds are untouched.
|
||||
`scripts/test_build_push_once.sh` drives the real script with a fake docker over six cases.
|
||||
- **Every build addresses its stylesheet differently.** `assetTag()` hashes version + `GitCommit` +
|
||||
`BuildTime`, and all nine shells use it (seven asked for `?v={{.Version}}`). It stays opaque and 8
|
||||
hex because the stranger-facing share pages use the same value. `Cache-Control` is unchanged —
|
||||
the new address is the fix, not a shorter cache. The parity harness normalises the tag on both
|
||||
sides, so the fixtures stop depending on which build rendered them.
|
||||
- **The app page is one column** (the approved mockup): one width, sections separated by hairlines
|
||||
instead of drawn as cards, tabs underlined rather than filled, a 64px hero with no box, and
|
||||
label/value rows on one 200px grid. **A box now means something** — blue when the app is waiting
|
||||
for the household, amber when something is risky, and nothing else is boxed.
|
||||
- **The after-start callout is the first thing on „Beállítások".** A household opening a Plex that
|
||||
wants its claim code should meet the code box, not a Restart button.
|
||||
- **The auto-update SUCCESS banner is gone**, demoted to meta text beside the address. It was a
|
||||
full-width box level with „the update failed" and „your files are missing". Every banner that
|
||||
needs a decision is untouched and still above the tabs (R-571).
|
||||
- Smaller, in the same spirit: „2. mentés beállítása — <app>" and „<app> — Exportálás" removed (page
|
||||
titles for pages that no longer exist); a „Cím és kulcsok" section with one address row in place of
|
||||
the duplicate disabled subdomain field; the „already installed, read-only" banner demoted to the
|
||||
hint under the fields it describes; the install wizard given the same back link, hero and column.
|
||||
- `app_row_dedup_gate` convicted `.app-row` for the page's new label/value row, correctly — that
|
||||
class already means „a row in the app list". It is `.app-field-row`.
|
||||
|
||||
## v0.315.0 — one app page with four tabs; the guide the catalog can carry; no Raspberry Pi badge (2026-10-15)
|
||||
|
||||
**MinAgent: 0.155.0** (unchanged — no new agent call). No golden (`09` §3 decision 250). Design: felhom.eu
|
||||
|
||||
Reference in New Issue
Block a user