Commit Graph

306 Commits

Author SHA1 Message Date
admin 1a788f332d Attended release run: hub 0.168.0 deployed (R-975 closed; the live file's residue accepted by the operator, 05 16.2); D40 in effect (R-1243 VERIFY, dated check 10-25); D41/D42 closed; the ep0 iperf3 line-test server (scripts/ep0-iperf3, 06 5) and hub 0.169.0 models line_test (System page cell); R-1249, R-1250 filed; register 194 -> 193
gates / gates (push) Successful in 12m46s
2026-10-24 09:18:44 +02:00
admin 52af38df6f hub-db-backup: wait for a snapshot being written, limit 7 h (one slot gap + 1 h) — the 2 h limit refused the hub's own catch-up and mailed a false failure at 10:28 (R-1234, closed); tests red-proved
gates / gates (push) Successful in 13m14s
2026-10-23 10:35:16 +02:00
admin d306b8c2d7 release-copy: the released images (skopeo dir:, digest-true) and agent packages copied to ep0 nightly, verified by sha256 and a checksum compare, capped at 3 GB (D33, R-1227); tests red-proved
gates / gates (push) Successful in 15m56s
2026-10-23 09:39:31 +02:00
admin be7e97dc1a hub 0.167.0 + DooPlex push: the hub DB snapshot every 6 hours (D34, operator yes 2026-10-23, R-232 G5) — slots 02/08/14/20, catch-up 6 h, push :30 after each, refuse a copy older than 2 h; tests red-proved
gates / gates (push) Successful in 16m20s
2026-10-23 09:12:08 +02:00
admin 83388c088a felhom-host-install.sh 1.36.0 (pushed, NOT published — the tag waits for the operator's yes): the uninstall removes the root-SSH drop-in, a failed reload warns (R-982, D4, reviewed v2 patch)
gates / gates (push) Successful in 14m17s
2026-10-23 08:29:20 +02:00
admin 84751cb0ce hub v0.167.0 source (not built, not deployed): D31 — the F-14 PBS auto re-issue reads the newest deletion of a host that held a key, a keyless install between no longer blocks it (R-1205); D30 — the new key's handshake clears wg_tunnel_stale (pinned), wording; wire gate entry; Part 1 stray-copy 9202 evidence
gates / gates (push) Successful in 15m46s
2026-10-22 21:04:42 +02:00
admin 5ae5984cf9 hub 0.165.0 source: a household's mail list is never overwritten by a box default, a box reads it back (R-1199 reopened); host_swap_short only when swap is really short (R-1216, D28 = A); host-swap-rule gate with 4 decoys; 03/05/08 updated
gates / gates (push) Successful in 15m54s
2026-10-22 12:23:07 +02:00
admin 6d5a7f1b92 ISO 1.30.0: version bump for the release build (W1 boot text, W7 banner clears; operator yes 2026-10-22); the gate's G16 command names iso_bootstrap_gate.py (the old mount failed 10 checks on a correct tree)
gates / gates (push) Successful in 15m54s
2026-10-22 10:09:50 +02:00
admin c2c130ecbb R-1209 closed: the decoy suite gets 600 s in script-tests (the others keep 300 s; a time-out still fails) — it timed out on every CI push tonight
gates / gates (push) Successful in 15m40s
2026-10-22 00:26:53 +02:00
admin 2fa5b8f3d8 ISO source (NOT built, NOT published): boot text in the te-form (W1); the linked banner clears the screen and its scroll-back so the spent pairing code is gone (W7); test with a decoy
gates / gates (push) Failing after 14m52s
2026-10-21 22:32:14 +02:00
admin 3c620f8d2e hub 0.164.0 (unreleased): host_swap_short / host_swap_ok operator alarm from the agent's host and guest swap numbers (R-1192 follow-up); wire gate allowlists guests.spec.swap_bytes
gates / gates (push) Failing after 14m53s
2026-10-21 21:55:15 +02:00
admin 1d7071e8fd Status view, part 3 (the gate): scripts/status_view_gate.py in repo_gates.py (fast: pre-push + CI) — size outside decide, one Updated paragraph, English outside quotes, cited rows open, no decided row in decide, the P1 and every operator-owned row on the page; WARN-FIRST until 2026-10-27, then it refuses; 39 decoy cases (red-proved per check and on both sides of the date); filed R-1174 (P4, Process & tooling) + its due check 2026-10-27; R-919 owner cell -> operator (the upload and the look); register 152 -> 153
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-20 11:59:48 +02:00
admin b0ae2c574a installer 1.35.0 published (operator yes, 2026-10-20): both webpage git-sync pins -> installer-v1.35.0 (R-1167)
gates / gates (push) Successful in 13m6s
2026-10-20 08:13:57 +02:00
admin 5d0dfeac5f hostinstall harness: the two R-1167 behaviour cases SKIP out loud where there is no curl (the CI runner; CI 2106/2108 red) 2026-10-19 21:30:33 +02:00
admin 15f7428871 security_scan_gate.py: govulncheck (called vulns) + gitleaks on the pushed commits in every repo's fast set and CI, warn-first, with an accepted-hits file and 8 decoys (R-986); first scan triaged: 0 real secrets, 0 called vulnerabilities; evidence for R-953 and the 0.335.0 release
gates / gates (push) Failing after 12m59s
2026-10-19 21:03:23 +02:00
admin d92a712ee4 felhom-host-install.sh 1.35.0 (not published): the hub's live-box 409 is worded in EN and HU at the preflight, host-enroll and the controller.yaml fetch, with harness cases (R-1167)
gates / gates (push) Failing after 7m16s
2026-10-19 20:35:21 +02:00
admin b6a911c3f9 hub v0.161.0: passphrase keys only until the box uses its own (box-config route; R-1159, D19); ep0 namespaces without a prune job alarmed, tenantsync v1.3.0 creates the job (R-1165)
gates / gates (push) Successful in 7m47s
2026-10-19 15:55:45 +02:00
admin fd75003e17 webpage: the four git-syncs read Gitea in-cluster; sidecars retry forever (--max-failures=-1); gate 6 keeps the --repo values identical
gates / gates (push) Successful in 7m42s
On 2026-10-19 09:24 the public path to Gitea failed once and the sidecar exited (max-failures defaults to 0).
Anonymous in-cluster fetch proven first (main and installer-v1.34.0 resolve to the public hashes).
2026-10-19 11:38:44 +02:00
admin a17db0c3c8 hub-gofmt gate in repo_gates.py with its decoys (R-1160)
gates / gates (push) Successful in 7m14s
2026-10-19 10:40:55 +02:00
admin 1fe9f84893 CI workflow: the failure mail links the public run page, by run id (R-1135)
gates / gates (push) Successful in 7m17s
The alarm step built its link from GITHUB_SERVER_URL, which on this runner
is the in-cluster Gitea address, and from the run NUMBER, which Gitea 1.26
reads as a run id first (felhom.eu /actions/runs/1116 opened run id 1116 =
run number 613). Now https://gitea.dooplex.hu + GITHUB_RUN_ID, and the link
is printed into the job log as ALARM-LINK. Same change in all four repos.
2026-10-18 20:34:59 +02:00
admin 37cb83c166 Estimator: Immich peak 3,290 -> 3,983 MB from the 4,000-photo import (R-1147, operator yes 2026-10-18); Immich alone on 8 GB now 'does not fit'
gates / gates (push) Successful in 7m17s
Rebuilt sizing-data.json; data cache-bust v5; SIZING.md table and the pinned test cases moved
with it. Before/after: audits/day-2026-10-18/P6-before-after.md.
2026-10-18 14:36:14 +02:00
admin 624bcdc372 installer 1.34.0 (pushed; tag follows): vault-first step 4b (R-1145), --rotate-recovery-only (R-1141), harness gate (R-1146); R-895 dated check
gates / gates (push) Successful in 7m8s
2026-10-18 14:22:44 +02:00
admin 88aecf55b6 Installer step 4b: vault first, then set, then a PVE login (R-1145); host key off curl's argv (review F4); harness green and a gate (R-1146); hub 0.158.0 deploy evidence; independent review + verdicts
gates / gates (push) Successful in 7m23s
Live on demo-hp (--rotate-recovery-only): vault time moved, new value 200, old 401. Harness 52/0;
the R1145 cases fail against HEAD. Publishes only with the next installer tag.
2026-10-18 12:50:49 +02:00
admin 7d64038f02 Hub v0.158.0 code (built, NOT deployed): agent-only vouch, R-895 snapshot alarms, the hub's own 90-day access log (R-1140 A); installer --rotate-recovery-only (R-1141); 02/03/05/09 + break-glass
gates / gates (push) Successful in 6m45s
Hub: the R-120 golden guard judges only a CHANGED golden selection; offsite_snapshots_vanished /
_unexplained (operator-only, hub-origin) on the 07:10 listing; internal/accesslog writes path-only
lines to /data/access-log, 90 days. Installer: --rotate-recovery-only runs step 4b alone (rides
the next installer tag). 03: the orphan check runs after a failed backup (agent 6545ccc). 02: the
allow-list is empty, appdata_folders (controller v0.329.0). All red-proofed.
2026-10-17 23:31:34 +02:00
admin 8f97b8009b hub v0.157.0: app_definition_refused (R-971), the vault time moves on a re-vault (R-954), the hub's own snapshot count (R-895 slice); uninstall knows felhom-thin-check
gates / gates (push) Successful in 6m58s
- hub: `app_definition_refused` in allowedEventTypes + operatorOnlyEvents (controller v0.328.0's catalog
  allow-list refusal); SaveHostRecoveryCredential moves set_at on a re-vault (found live: both rotated hosts
  kept their first vault's time); the daily key audit also lists the box's restic snapshots/ read-only over the
  login the hub already holds and logs count/newest/oldest (no alarm yet).
- installer (main only, rides the next tag): --uninstall removes /usr/local/sbin/felhom-thin-check (agent
  v0.159.0's bundle file); test_hostinstall.py knows it.
- runbook whole-guest-backup-orphan-thin.md: the human repair the agent's new orphan finding points to.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-17 16:27:51 +02:00
admin d4ce52e1bb Old ~/.config/credentials deleted on the operator's go (R-1134 closed); R-1130 accepted; R-1138 for its two backup copies (176 rows)
gates / gates (push) Successful in 7m0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-17 14:40:49 +02:00
admin ba40c0a25b CC secrets build: consumers switched to sec, S19 age key in the recovery runbooks, evidence (R-1118, R-1122)
gates / gates (push) Successful in 6m44s
Build skill (hub token, ISO publish), fb_probe (token from `sec run` env, tests red-proved), secrets.md (Resend:
pipe inside sec run), bench README, read_credential docstring, 12-agent-tooling §5, workspace CLAUDE secrets line.
Evidence: audits/cc-creds-build-2026-10-17/ (tests, red-proofs, 36-row child-session proof both launch modes,
install, fresh-session proof, import names+lengths, history sweep names).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-17 13:33:07 +02:00
admin 498b9139cf CI workflow: a manual proof that the failure mail can be sent (R-1129)
gates / gates (push) Successful in 6m52s
workflow_dispatch with input force_alarm (default false). A dispatch-only
step prints the RESEND_API_KEY length (never the key) and, when forced,
fails so the alarm step sends its real mail, subject marked FORCED TEST.
Push runs are unchanged: the step is skipped, the subject is the old one.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-17 12:32:35 +02:00
admin 0314b8e7cf reuse_refs_check: sibling repos beside the MAIN clone for a worktree (R-1114)
gates / gates (push) Successful in 6m43s
FELHOM_WORKSPACE (set by felhom-controller's runner) names where the sibling repos are; the worktree's own
main clone is skipped. Unset: unchanged. Test red-proved both ways.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-17 09:39:01 +02:00
admin 836d64efa3 Apps burndown (controller 0.321.0 released): R-1097, R-1102, R-1101, R-1095, R-1098 closed; R-1103 opened; build-hub.sh 1.25.0
gates / gates (push) Successful in 6m52s
build-hub.sh refuses an existing tag and an unanswered registry (test_build_hub_push_once.sh, red-proved).
Register 179 -> 175. R-1067 stays BLOCKED: Tester-2 reports 0.292.0. Design notes in 02 and 07; STATUS;
evidence audits/burndown-apps-2026-10-16/; REPORT-burndown-apps-2026-10-16.md.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-16 17:27:57 +02:00
admin d45384bf95 installer 1.33.0 (pushed, not published): the data volume by the ruled table; step 5b the internal data place; OMV guide second-disk line
gates / gates (push) Successful in 6m42s
architecture/16 §5, §7 (build B). Publishing (tag + webpage.yaml, R-110) waits for the operator's vouch of agent 0.158.1.

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-16 04:08:39 +02:00
admin 08cf15d8cd app guides night: R-1089..R-1092 (found writing the guides), R-1088 extended; read_credential.py refuses to overwrite the credentials file (red-proved); STATUS; batch evidence
gates / gates (push) Successful in 6m57s
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-15 23:25:53 +02:00
admin 2f1f6c8052 Prowlarr evidence (R-1048) + its apps-page card; the stated app count 62 -> 63; R-1057 filed
gates / gates (push) Successful in 6m34s
- documentation/audits/prowlarr-2026-10-15/: bench (update test proven, C3 failed as it must, soak 7.6 %,
  volume-persistence CLEAN, official-image check), 9202 runs 1-3 (run 1's bump emptied the drill .felhom.yml — a
  test-tool bug, fixed; run 3 re-proved the step and backup -> remove -> restore with the full template), tools.
- website: a Prowlarr card on both apps pages; every stated count 62 -> 63, the media group 19 -> 20; sizing.json +
  sizing-data.json carry Prowlarr (41/44 MB, onboarding), the sizing test and SIZING.md table moved to 63 apps.
- OPEN-ITEMS: R-1057 (a restore of a removed gated app returns without the gate, even from a backup made before the
  setup — measured on 9202); R-1036 notes the count and that wger/plant-it are hidden/abandoned.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-15 12:58:18 +02:00
admin e92501f5a1 09 §3 decision 250 (operator 2026-10-15 11:26/11:29): a release needs no golden, CC raises the floor after the three test boxes, the golden is weekly; 247 reversed, 7 stands. golden_currency_gate judges the golden's AGE (>7 days); Sunday golden step; rule files, CLAUDE.md, runbooks, build skill follow; R-1045 closed (floor 0.313.0); R-1051 floor route, R-1052 new-box path, R-1053 rc tags never moved
gates / gates (push) Successful in 6m37s
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-15 11:41:11 +02:00
admin 0e88b7eb99 Media drive events, night 2026-10-14: 15 §10 (event x app, measured), K4-K8 evidence, rows R-1044..R-1049, narrowed R-1022/1023/1024/1026/1028/1037/1038, night report
gates / gates (push) Successful in 6m34s
- 15-media-library.md §10: what the box does on each drive event, per app, with the measured call; the guards
  that ARE needed and the ones that are NOT (K1: nothing lost while a drive is gone).
- Evidence K4 (dead-drive check: mountinfo `shutdown`, stat unreliable), K5 (restart), K6 (unclaimed Plex),
  K7 (old Sonarr/Radarr repair on the bench), K8 (hub received the drive-return events and mailed none), K9 (files identical).
- nightly-rotation.md runs scripts/https_only_check.py first every night; scripts/CHANGELOG.md entry.
- STATUS, CONTEXT (decisions 244-246), REPORT-night-2026-10-14.md.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-10-14 23:40:26 +02:00
admin b7807c1198 https only (R-1033, P1): controller v0.312.0 proven on Tester 1, demo-hp, demo-felhom (29 names); scripts/https_only_check.py; 01/13/poster facts; decision 246 (decided by CC unattended); R-1033 P1 narrowed; R-1041..R-1043
gates / gates (push) Successful in 6m34s
2026-10-14 22:49:54 +02:00
admin 621783b3b0 build-hub.sh v1.24.0: refuse a stale or dirty tree (R-1021)
gates / gates (push) Successful in 6m44s
Fetch, pull --ff-only, then refuse unless clean and HEAD == origin/main; the
commit label is read after the pull. Test with a stub docker: 6 cases; the
old script gets 5 wrong. Evidence for the catalog gate unclean-boot-images.
2026-10-14 19:13:34 +02:00
admin a2ca6eb413 Website: a page for people who search „felhő tárhely" (R-1033..R-1035)
gates / gates (push) Failing after 6m36s
Search Console (3 months, read 2026-10-14): 48 impressions, 1 click, average
position 73.6; the top query is „felhő tárhely" (19). No page on the site used
the phrase — Google was showing the home page by accident.

New pair /sajat-felho-tarhely + /en/own-cloud-storage: what cloud storage is and
the three ways to have one; what to do when the Google or iCloud storage is full
(the free clean-up first, linked to Google's and Apple's own help; the paid
options second); a five-year cost table; where the data sits; who should NOT
choose this; the closed test. Registered in site_gates.py TWINS/URL/SHELL, both
URLs in sitemap.xml (22 -> 24). FAQPage JSON-LD derived from the visible text.

Prices each read 2026-10-14 on the provider's own Hungarian page, with the URLs
and the date in an HTML comment and a visible „Árak" line: Google AI Plus (2 TB)
— Google One's 2 TB plan — 35 990 Ft/év (behind the „Éves" toggle; a plain fetch
sees only the monthly 3 590 Ft), iCloud+ 2 TB 4 490 Ft/hó, Microsoft 365 Családi
(2 TB shared, no longer 1 TB per person) 46 499 Ft/év.

Felhom's own cost follows what the site already said (operator ruling): machine
and install one-off, power, off-site storage monthly by volume, operation
OPTIONAL, no fee during the closed test. Power is stated as an idle measurement
(nyugalmi állapotban 7-9 W, ~75 kWh/év, from audits/night-power-2026-10-13) and
the page says a year with daytime use is more; no daytime figure and no
electricity tariff are given, because neither is measured or sourced.

FAQ corrected (both languages, JSON-LD re-derived): the cost answer carried
unsourced, undated prices and summed Spotify and a password manager into a
storage comparison; and the page contradicted itself on electricity („havi
néhány ezer forint" vs „évi 5.000–15.000 Ft"). App count 60 -> 62 in the four
places that were stale.

Three defects found on the rendered page and fixed: a .vs-row link fell back to
the browser-default blue (contrast 1.99 -> 7.17); 24px of horizontal scroll at
390px because .method-pros li is a nowrap flex row and the new items contain
links (each item's content wrapped in one span); .info-card and .method-pros
were scoped to the pages that first used them. site.css ?v=31 on all 26 pages.
The shared .content-section padding was NOT changed — it is identical on every
page; the new page only lacked the alt-bg alternation, and now has it.

R-1033 the apps page lags the catalog by two apps (plant-it, wger); R-1034 gate
17 checks the FAQ JSON-LD on two hard-coded pages only; R-1035 the SEO result,
with dated checks on 2026-11-11 and 2026-12-09.
2026-10-14 18:51:42 +02:00
admin 541129542d Estimator: the HP figures published, raise only (R-1009 = A) — one verdict stricter
gates / gates (push) Successful in 6m36s
sizing.json + sizing-data.json rebuilt (23 figures up, none down; the checksum chain matches,
build_sizing_web --check OK). The household set without Immich on 8 GB: fits well -> fits, but
tight (2,731 x 1.5 = 4,096.5 > 4,096). Presets keep their verdicts. SIZING.md section 5 table,
bullets and memory table from the rule, plus the dated line; the per-app table re-rendered.
Test expectations moved with the rule. Lede, meta and method note name both machines. Data ?v=4.

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-14 15:27:56 +02:00
admin 94fc3ba9c8 Power-cut fixes: spike C1–C4 + Immich repair spike (F); docs 03/07/13/14; R-1003 + R-1000 closed (FAQ live), R-1006..R-1009 narrowed, R-1010 filed; estimator raise STOPPED (one verdict flips); uninstall knows the new helper
gates / gates (push) Successful in 6m40s
2026-10-14 11:55:19 +02:00
admin 13504b90de Bench: plugcut.py — a real power cut on the HP with three ways back on; the night's round table written before round 1
gates / gates (push) Successful in 6m45s
2026-10-14 00:24:18 +02:00
admin 95d293b911 Bench: --plug hp — the HP t740 (demo-hp) is on a metered plug too
gates / gates (push) Successful in 6m51s
plugmeter.py and plugswitch.py take --plug n100|hp (plug.json / plug-hp.json, outside the repo).
The HP plug read 23-33 W while the box started its three guests.
2026-10-13 21:29:02 +02:00
admin cb2d3a54ae Website: „Milyen gép kell?" becomes a main menu item; no „tight from" below 8 GB
gates / gates (push) Successful in 6m42s
The estimator leaves the Apps group and sits right after it, with the sprite's chip icon, on every page of
both languages. The legend's tight-from item and the thin marker hide when that size is below the smallest
named box (it read 2,1 GB on an empty selection); test pinned, red-proved. sizing.js?v=5.
2026-10-13 20:42:32 +02:00
admin ed59bf3cbd Website: list the machine estimator — menu, sitemap, FAQ and apps-page links; R-997 closed
gates / gates (push) Failing after 6m33s
noindex and the robots Disallow lines removed; both URLs in the sitemap with their hreflang pair; the pair
moves from UNLISTED to TWINS in site_gates.py. The explaining sentence's base figure was already the drawn
box's base; a test now pins it (red-proved).
2026-10-13 19:26:55 +02:00
admin b4dcf4b373 Power-off spike (Part A) on the N100: plugswitch, wall-power figures, the hub's view
gates / gates (push) Successful in 6m35s
plugswitch.py refuses 'off' unless 20 s of readings show the N100 is already off (standby + 1 W,
no ping); 7 tests, each check red-proofed. By hand: guest shutdown 12 s, host off, 0.0 W; the hub
stayed silent and 'ONLINE' for 18 min; plug off/on did not start the N100, its power button did
(dashboard in 42 s). Wall figures into SIZING.md 4 and sizing.json power (8.5 / 20.7 / 0.0 W).
2026-10-13 19:15:08 +02:00
admin 6a1f715a87 Bench: plugmeter reads the N100's metered plug (tinytuya + Home Assistant from the catalog)
gates / gates (push) Successful in 6m43s
scripts/bench/plugmeter.py prints watts/mA/V/kWh as CSV from the Tuya plug on the LAN
(default) or from Home Assistant on demo-hp's guest. 10-minute side by side and a
3-minute control in documentation/audits/plugmeter-2026-10-13/: Home Assistant alone
did not move for 3 minutes, so the LAN reader is the measurement source.
No key, device id or token in the repo; secrets scan 0 hits with a positive control.
2026-10-13 17:07:26 +02:00
admin fc0441348d Website: machine estimator v3.1 — bar never below an 8 GB box; a single leftover app keeps its name (R-997)
gates / gates (push) Successful in 6m47s
Empty or tiny selections drew a ~2.3 GB box whose base system (1,636 MB) no real box
has; the bar is now floored at the smallest named size (8 GB) for its parts only — the
recommendation and the rule are unchanged. Grouping applies only to two or more
leftover apps; a ninth app is shown by name in the group's colour. Tests: 12, the
new ones red-proofed.
2026-10-13 16:31:56 +02:00
admin 92e9d45cf5 Website: machine estimator v3 — the bar shows what the box's memory is used for (still unlisted, R-997)
gates / gates (push) Successful in 6m29s
The bar keeps its length (the fits-well box memory) and is split into base system
(box - guest), Felhom's own services, each app's peak (largest first, the dashboard's
palette minus amber and its first blue; beyond 8 apps one group) and spare room
(guest - peak) — all from the one rule; a test proves the parts sum to the bar within
1 MB. A legend under it (not sticky) and one sentence explain the recommended size.
Typical figure moved into the method fold-out. English: 'an 8 GB machine'.
2026-10-13 16:08:00 +02:00
admin 16dca64834 Website: machine estimator v2 — fold-out categories and the memory bar (still unlisted, R-997)
gates / gates (push) Successful in 6m31s
Each category is a native <details>, closed at first, with an 'n selected' count;
a preset opens what it ticks. A sticky memory bar (0-64 GB, marks 8/16/24/32/48/64+):
solid fill = smallest box memory where the selection fits well, thin mark = where it
fits, but tight; one line names the box to buy. minBoxGb() inverts guestMib() by
bisection on it, so the rule is still written once. Box sizes 12/24/48/64 added;
tests cover seven sizes and the inverse (red-proofed); SIZING.md table gains 24 GB.
2026-10-13 15:38:45 +02:00
admin d5ef93b13b Website: the machine estimator (/gepigeny, /en/sizing), live but unlisted; SIZING.md §5 in three verdicts; R-997 filed
gates / gates (push) Successful in 6m42s
A household ticks apps and sees, for an 8, 16 and 32 GB box: fits well / fits, but
tight / does not fit, the totals, and the apps that burst on CPU. One rule in
assets/sizing.js, every number from assets/sizing-data.json (built by
scripts/build_sizing_web.py from the 2026-10-13 N100 measurement; test: 7 cases,
red-proofed). Unlisted: noindex, robots Disallow, not in the sitemap, linked from
nowhere — site_gates.py gate 25 enforces it (UNLISTED twin pairs keep every twin
check). SIZING.md §5 corrected: the 8 GB line contradicted its own x1.5 rule; guest
sizes 4.0/11.4/27.4 GB with the measured 612 MiB MemTotal shortfall. R-993 gains the
fact that the installer accepts a host below any minimum.
2026-10-13 14:31:44 +02:00