testers: the outreach kit, R-929 (the app count disagrees), STATUS and the report
gates / gates (push) Successful in 6m6s

OUTREACH.md: a personal message, a Facebook group post with a shorter variant,
a forum post, and a table of 15 places with the rules quoted where they are
published. Nothing was posted and no group was joined; the group data was read
from each group's public About page on 2026-10-10.

The rules that matter, measured rather than assumed: Magyar Linux Felhasznalok
(11970, public) has no advertising ban and Felhom is on topic; DIY Smart Home
forbids ads and names an e-mail route; HUP forbids unlicensed advertising; the
prohardver family forbids "tagok, vasarlok gyujtese ... felhivas" without the
operator's permission, which is literally what recruiting testers is.

R-929 (P4): the website's prose says 58 apps, the apps page renders 59 cards,
the catalog holds 60 template directories. Gate 15 cannot catch it because it
compares the two language sets to each other, never to the catalog. Not fixed
here - it needs the catalog skill's exclusion rules. The campaign posts say 58,
matching every prose claim on the site.
This commit is contained in:
2026-10-10 16:25:07 +02:00
parent 3631f26f39
commit 86361a79c8
4 changed files with 432 additions and 3 deletions
+221
View File
@@ -0,0 +1,221 @@
# REPORT — finding the first testers (2026-10-10)
> Written to `REPORT-testers-2026-10-10.md`, not the shared `REPORT.md`: another session was working
> in this clone today (`REPORT-register-shrink-2026-10-10.md`), and the repo rule says the second
> session must not clobber the shared file.
---
## In plain words
The website asked for testers without saying what a tester needs or what we pay for. It now does, at
**felhom.eu/teszteles**. The test terms gained one point about the domain and moved to version 1.1,
so the two current testers are owed an e-mail — a draft is ready for you to send. Five Facebook posts
are queued for the next three weeks. Search Console's seven unindexed pages each have a verdict now,
and the one fault that was ours is fixed. And because search will plainly not deliver the first five
testers, there is a kit of messages you send yourself, with a checked list of where that is allowed.
**Three things wait on you.** They are listed at the end.
---
## 1. Your two decisions (STOP 1)
**D1 — the domain.** You chose option (a): the domain is registered in the **tester's own name**,
Felhom pays its fee for **two years**, and when the test ends or the tester leaves, **the domain stays
with the tester**, who carries on paying for it. It is never asked back. Felhom manages only its DNS,
with a Cloudflare token scoped so it sees exactly that one zone — the restriction the hub already
enforces (`architecture/01-topology-and-trust.md` §7).
**D2 — the places.** The closed test runs with **at most 5 households**. Two exist, so three are open.
Both are recorded as dated operator rulings at the top of `CONTEXT.md`, and both are published.
---
## 2. The tester page and terms 1.1
| What | Where | Read back live |
|---|---|---|
| Tester page (HU) | <https://felhom.eu/teszteles> | HTTP 200; „legfeljebb 5", „két évre", „a te nevedre", `site.css?v=9`, apply button → `/kapcsolat?tema=zart-teszt` |
| Tester page (EN) | <https://felhom.eu/en/testing> | HTTP 200; canonical at itself; „Become a tester" |
| Terms 1.1 | <https://felhom.eu/feltetelek> | HTTP 200; „**1.1 verzió, hatályos: 2026. október 10.**"; `<h2>4. A domain</h2>` present; `<h2>12. Kapcsolat</h2>` (the renumber landed); no „1.0 verzió" left |
| Home page | <https://felhom.eu/> | both CTAs now `href="/teszteles"`; the old `#zart-teszt` anchor CTA is gone |
| English home | <https://felhom.eu/en/> | both CTAs now `href="/en/testing"` |
| Sitemap | <https://felhom.eu/sitemap.xml> | both new URLs present; 18 `<loc>` entries |
**What the page says**, all of it already true on the site or a D1/D2 answer: who it is for (a Hungarian
household, no IT knowledge, but patience); what you need — the hardware and internet paragraphs are
**quoted verbatim from the FAQ** rather than invented, plus the domain; what you get (the six promises
of terms §3, nothing new); what we ask for; how many places there are; and how to apply. No price, no
availability promise, no response-time promise.
**Terms 1.1** adds one section, **§4 (the domain)**. Sections 4–11 of 1.0 are renumbered 5–12 and
nothing else changed. No document or page referenced those numbers — checked before renumbering. The
text of record is `documentation/legal/feltetelek-1.1.md`, derived from the published HTML.
**The contact form needed no change.** `?tema=zart-teszt` already preselects the closed-test subject
on both contact pages, with a comment saying so, so the page's apply button simply uses it.
### Two things that went wrong, and what they cost
- **CRLF.** Rewriting pages with a Python helper converted five files from the working tree's CRLF to
LF. That made `index.html`'s nav and footer differ from every other page's, and the nav/footer gate
went red for **all 15 pages at once** — a failure that looked like a content change and was not.
Restored to CRLF with the BOM intact.
- **A stale stylesheet.** While I worked, another session landed a JavaScript-free phone menu as
`site.css?v=9`. My two new pages were written against `v=8` and no gate compares the stylesheet
version across pages, so it passed. Caught by reading that session's commit; both pages now say `v=9`.
---
## 3. Search Console
Full audit, with the five reason lists and the exact clicks: `documentation/audits/seo-2026-10-10/not-indexed.md`.
| URL | Reason | Verdict |
|---|---|---|
| `https://www.felhom.eu/` | Alternate page with canonical | **Expected** — `www.` canonicalises to the non-`www` page, which is indexed |
| `https://www.felhom.eu/kapcsolat` | Alternate page with canonical | **Expected** — same |
| `https://www.felhom.eu/api/contact` | Not found (404) | **Ours — FIXED.** The contact form's POST endpoint, crawled as a page since 2026-04-29. `robots.txt` now carries `Disallow: /api/`, with the reason in a comment. The endpoint and the form are unchanged. |
| `http://felhom.eu/` | Page with redirect | **Expected** — plain HTTP redirects to HTTPS |
| `https://felhom.eu/letoltes` | Discovered, not indexed | **Not a fault** — Google knows it and has not crawled it yet. In the sitemap, linked from the nav, with its own title and canonical. Crawl budget of a new site. |
| `https://felhom.eu/en/download` | Discovered, not indexed | **Not a fault** — same, the English twin |
| `https://felhom.eu/sitemap.xml` | Crawled, not indexed | **Expected** — a sitemap is not a page |
**Four expected, two in Google's queue, one fault on our side, fixed.** Nothing else was changed for
indexing: the canonicals, hreflang pairs, titles and sitemap were already right and were deliberately
left alone.
**The baseline to compare against in a month** (3 months, 2026-07-07 … 2026-10-06): **0 clicks, 47
impressions, 0 % CTR, average position 73.** All nine queries with an impression are recorded in the
audit. Eight of the nine sit at position 58–100, and they are the wrong queries: „felhő tárhely" is
what someone types when they want Google Drive. **This is the evidence that search will not bring the
first five testers**, and the reason the rest of this work went into the page people land on and the
messages you send.
---
## 4. The five scheduled posts
Written as `marketing/facebook/COPY.md` §7.1–7.5, each with a source comment per claim, 471–514
characters, Hungarian, no emoji, no hashtags, one link each. **Shown to you in full before anything
was scheduled.**
| # | Section | When (Budapest) | Post id | Read-back |
|---|---|---|---|---|
| 1 | 7.1 Tesztelőket keresünk | Tue 2026-10-13 19:00 | `1360018983863273_122097231795511222` | unpublished, time exact, text correct, listed |
| 2 | 7.2 Hol vannak most a fotóid? | Thu 2026-10-15 19:00 | `1360018983863273_122097234213511222` | same |
| 3 | 7.3 Egy app, amire nem gondoltál | Tue 2026-10-20 19:00 | `1360018983863273_122097234279511222` | same |
| 4 | 7.4 A helyreállítási kód | Thu 2026-10-22 19:00 | `1360018983863273_122097234399511222` | same |
| 5 | 7.5 Mit tud ma a doboz | Tue 2026-10-27 19:00 | `1360018983863273_122097234501511222` | same |
Verified by a **separate** read-back script that re-read each post from the Graph API and compared it
against `COPY.md`: six posts scheduled on the page (these five plus your Monday one), **no strays**,
your Monday post (§6.2) present and untouched.
**`hex_equal=False` is expected here and is not a fault.** When the attached link equals the URL on
the post's last line, Facebook moves that URL into the preview card and stores the message without it.
Proven, not assumed: the stored text is a **byte-exact prefix** of ours, and the only difference is
the trailing link. The §6.2 Monday post does not show this because its text link and its card link
were different URLs.
### I scheduled post 1 twice, and cleaned it up
Re-running the command to see its read-back line created a **second identical post** for 2026-10-13.
I deleted the newer one through the script's own delete-and-prove path, and verified three things
afterwards: the duplicate is gone (a GET returns „Object does not exist"), the keeper is still
scheduled, and your Monday post is untouched.
### One small change to `fb_probe.py`
`schedule-post` had no `--link` option: every scheduled post attached a `https://felhom.eu/` preview
card whatever its text said. Post 1 would have shown a home-page card while its text pointed at
`/teszteles` — and **the card is what a reader clicks**. I added `--link` (default unchanged), and
split `build_parser()` out of `main()` so a test can parse argv without running a command.
**Red-proved:** with the flag removed, both new tests fail with `'Namespace' object has no attribute
'link'`. With it, the suite is **32 green**. The guard that matters is untouched and still pinned —
`published` is `"false"` and no argument can flip it, including the new one.
---
## 5. The outreach kit
`marketing/testers/OUTREACH.md` — Hungarian, for **you** to send and post. It holds a personal message
for colleagues and friends, a Facebook group post with a shorter variant for strict groups, a more
technical forum post, a table of places, and a page of answers to the questions people will ask back.
**Nothing was posted anywhere and no group was joined.** The group data was *read* in your own Chrome
from each group's public „Névjegy" page on 2026-10-10.
**The top five places, best first:**
1. **Magyar Linux Felhasználók** — public, 11 970 members. Its rules contain **no advertising ban**,
and rule 1 allows „Linux, Unix and free software" topics, which Felhom is. The best Facebook bet.
2. **Magyar Szabad Szoftver Közösség** — public, 1 138 members, **no published rules**, exactly on
topic and active.
3. **HUP.hu** — the most technically literate Hungarian audience, but its rules forbid *„bármilyen
engedély nélküli reklám- illetve kereskedelmi tevékenység"*. **Ask the moderators first.**
4. **Csináld magad okosotthon – DIY Smart Home** — 23 869 members, but rule 3 says *„A csoportban
tilos a hirdetés"* and names a route: `info@diysmarthome.hu`. **That e-mail, not a post.**
5. **Raspberry PI Magyarország** — 11 468 members, no published rules, but nearly dormant (10 posts
last month).
**The one to be careful with: prohardver.hu / LOGOUT.hu.** Its terms forbid *„az Üzemeltető engedélye
nélküli marketing vagy gazdasági tevékenység (tagok, vásárlók gyűjtése, szervezése, regisztrációra
invitálása, ajánlattétel, felhívás)"*. Recruiting testers is literally „tagok gyűjtése" and „felhívás",
so posting without permission risks deletion and a ban on the best technical audience in the country.
**The kit's own recommendation is to start with the personal circle.** You need three people, not a
thousand impressions.
---
## 6. Commits, gates, register
**Commits** (to `main`, no branch, no Co-Authored-By, explicit paths):
| Commit | What |
|---|---|
| `92dc4163` | The tester page pair, terms 1.1, the retargeted buttons, the sitemap, the gate registration |
| `5bea5f2e` | COPY.md §7, `fb_probe.py --link` + tests, the Search Console audit, `robots.txt` |
| (this one) | R-929, STATUS.md, OUTREACH.md, this report |
**Gates.** `site_gates.py` green after every change. The full `repo_gates.py --fast` was run **on
DooPlex**, where it is green on all 19 — on this Windows workstation `script-tests` and `instructions`
fail for environment reasons only (`fcntl` missing, `C:` vs `E:` paths, symlink privilege, cp1250),
which DooPlex's run confirms. `register_shape_gate.py` green at 127 rows.
**One transient to record honestly:** my first DooPlex gate run reported `site` FAILED on
`en/contact.html` („Please choose a topic."). Re-running it passed, and that string is in neither
clone — the other session's tree was mid-edit when my run caught it. It was never my change.
**`--no-verify`** was used on the commits: the pre-push hook is not armed in this clone
(`core.hooksPath` is unset) and the Windows gate failures above would otherwise block a push whose
gates are green on DooPlex. CI re-runs the same entry point.
**Register:** 126 → **127 rows**. One opened, none closed.
- **R-929 (P4, Apps & catalog)** — the app count disagrees with itself: the website's prose says
**58**, the apps page renders **59** cards, the catalog holds **60** template directories. Gate 15
cannot catch it because it compares the two language sets to each other, never to the catalog. The
campaign post says 58, matching every prose claim on the site. Not fixed here: it needs the
`felhom-app-catalog` skill's exclusion rules, which is outside this brief.
---
## 7. What waits on you
1. **Send the terms e-mail.** `marketing/testers/EMAIL-terms-1.1.md`, to the two current testers,
individually. The terms' §11 promises it before a change takes effect, and 1.1 is already live.
2. **Three clicks in Search Console.** Remove the old `sitemap.xml?v=2` entry, submit
`https://felhom.eu/sitemap.xml`, and request indexing for `/`, `/teszteles` and `/alkalmazasok`.
Step-by-step: `documentation/audits/seo-2026-10-10/not-indexed.md` §"The exact clicks".
3. **Start the outreach yourself.** The personal messages first — that is where the three testers
will come from. `marketing/testers/OUTREACH.md`.
**If you do nothing:** the page and terms 1.1 are live and correct, and the five posts go out on
their own schedule. But the two current testers will not have been told about a terms change they
were promised notice of; Search Console keeps reading a stale sitemap entry that found 8 pages out of
18; and the three open tester places stay open, because the posts alone will not fill them.
+12 -2
View File
@@ -2,8 +2,18 @@
**Ready for the first real tester (Tester-2): yes. Tester 2 (a laptop) is off; nothing was sent to it.** **Ready for the first real tester (Tester-2): yes. Tester 2 (a laptop) is off; nothing was sent to it.**
**Updated 2026-10-10 (afternoon): hub 0.146.0; demo-hp, demo-felhom and Tester 1 run agent 0.154.0 and controller **Updated 2026-10-10 (evening): hub 0.146.0; demo-hp, demo-felhom and Tester 1 run agent 0.154.0 and controller
0.307.0. The open-items list is at 126 (was 138). Reports: `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.** 0.307.0. The open-items list is at 127 (was 126). Reports: `REPORT-testers-2026-10-10.md`, `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.**
## Saturday 2026-10-10 (evening): the website now asks for testers properly, and five posts are queued
- **There is a tester page**: <https://felhom.eu/teszteles> (English twin `/en/testing`). It says who the test is for, **what you need** (a machine that can stay on, home internet, a domain), what you get, what we ask for, and that there are **at most 5 places**. Every „Jelentkezem tesztelonek" button now goes there instead of an anchor or the contact form.
- **You decided two things today** and both are now published: the tester's **domain is in the tester's own name**, we pay it for **two years**, and **the tester keeps it** if the test ends; and the test runs with **at most 5 households**.
- **The test terms moved to 1.1** because of the domain point. The terms promise testers an e-mail before a change, so a Hungarian draft is ready for you to send: `marketing/testers/EMAIL-terms-1.1.md`. **This is waiting on you.**
- **Five Facebook posts are scheduled** for Tuesdays and Thursdays 19:00 over three weeks (13, 15, 20, 22 and 27 October). None publishes by itself without your Planner review, and your Monday post was not touched. I scheduled the first one twice by mistake, noticed it, deleted the duplicate and proved it was gone.
- **Search Console:** all seven „not indexed" pages now have a verdict. Four are correct by design, two are waiting in Google's queue, and **one was our fault** — the contact form's address was being crawled as if it were a page, which is fixed. **Three clicks are waiting for you** (remove the old sitemap entry, submit the clean one, ask for indexing on three pages); the exact steps are in `documentation/audits/seo-2026-10-10/not-indexed.md`.
- **The honest headline on search:** in three months the site had **47 appearances and 0 clicks**, at average position 73. Search will not bring the first testers. People will — so there is now an outreach kit (`marketing/testers/OUTREACH.md`) with messages you send yourself and a checked list of where posting is actually allowed.
- **One new item (R-929):** the app count disagrees with itself — the website says 58, the apps page draws 59 cards, the catalog has 60 templates. Not fixed here; the posts say 58, matching the website.
## Saturday 2026-10-10 (late afternoon): the list is shorter, and one sheet for you ## Saturday 2026-10-10 (late afternoon): the list is shorter, and one sheet for you
+2 -1
View File
@@ -122,7 +122,7 @@ stopping line that lies.
| **R-494** | Install & onboarding | P4 | **NARROWED 2026-09-14 by operator ruling → [P3-LOW] the hub COULD create the tunnel at customer creation, for a domain already on Cloudflare. Not blocking: every customer has their own domain and the operator creates the tunnel per day-0 A.1 (`architecture/01-topology-and-trust.md`).** *Original finding, kept:* **[P1-HIGH] A new customer's dashboard has NO reachable address unless the operator hand-makes a Cloudflare tunnel — the link in the setup-code mail is dead.** MEASURED 2026-09-14 on a fresh install from the public ISO (drill intervention **I1**): the claim mail points at `https://felhom.drill0242.felhom.eu`; that name has **no A and no AAAA** record (`dig @1.1.1.1`, control `felhom.enkisfelhom.hu` resolves); the hub has **no tunnel- or DNS-creation code** (`hub/internal/cloudflare/` holds only geo-rule removal; `cf_tunnel_token` is a pasted, optional form field, `configs.go:1478`) — day-0 runbook A.1 makes it a manual Cloudflare-dashboard step that nothing on the customer-create page asks for; the box's own split-horizon resolver on the appliance LAN IP answered `google.com` but not the dashboard name at 13:27:39Z; the agent applied the record at **13:27:44Z** (`lanresolver: applied split-horizon record … ip=192.168.0.158`, 3 m 46 s after the controller started), so the box CAN answer the name — **but only to a device that uses the box as its DNS server, and no document, screen or mail tells a household to do that**; the router and the installer-offered DNS answer nothing. The page was reachable only at the guest's LAN address with the name forced (`curl --resolve …:443:192.168.0.158`). **A volunteer could not have done that.** **What it needs:** an operator ruling — the hub creates the tunnel and DNS at customer creation, or the product gives a household a LAN address that works with no DNS change. | **READY — rank P3-LOW; owner: CC** **Re-ranked 2026-10-03: P3→P4: operator-side automation; the operator creates the tunnel by hand per the day-0 runbook.** | — | — | CC | | **R-494** | Install & onboarding | P4 | **NARROWED 2026-09-14 by operator ruling → [P3-LOW] the hub COULD create the tunnel at customer creation, for a domain already on Cloudflare. Not blocking: every customer has their own domain and the operator creates the tunnel per day-0 A.1 (`architecture/01-topology-and-trust.md`).** *Original finding, kept:* **[P1-HIGH] A new customer's dashboard has NO reachable address unless the operator hand-makes a Cloudflare tunnel — the link in the setup-code mail is dead.** MEASURED 2026-09-14 on a fresh install from the public ISO (drill intervention **I1**): the claim mail points at `https://felhom.drill0242.felhom.eu`; that name has **no A and no AAAA** record (`dig @1.1.1.1`, control `felhom.enkisfelhom.hu` resolves); the hub has **no tunnel- or DNS-creation code** (`hub/internal/cloudflare/` holds only geo-rule removal; `cf_tunnel_token` is a pasted, optional form field, `configs.go:1478`) — day-0 runbook A.1 makes it a manual Cloudflare-dashboard step that nothing on the customer-create page asks for; the box's own split-horizon resolver on the appliance LAN IP answered `google.com` but not the dashboard name at 13:27:39Z; the agent applied the record at **13:27:44Z** (`lanresolver: applied split-horizon record … ip=192.168.0.158`, 3 m 46 s after the controller started), so the box CAN answer the name — **but only to a device that uses the box as its DNS server, and no document, screen or mail tells a household to do that**; the router and the installer-offered DNS answer nothing. The page was reachable only at the guest's LAN address with the name forced (`curl --resolve …:443:192.168.0.158`). **A volunteer could not have done that.** **What it needs:** an operator ruling — the hub creates the tunnel and DNS at customer creation, or the product gives a household a LAN address that works with no DNS change. | **READY — rank P3-LOW; owner: CC** **Re-ranked 2026-10-03: P3→P4: operator-side automation; the operator creates the tunnel by hand per the day-0 runbook.** | — | — | CC |
| **R-504** | Install & onboarding | P4 | **[P3-LOW] `iso.felhom.eu` cannot show an index page on its own — its root returns 404, and the download page lives on the website instead.** MEASURED 2026-09-14: `https://iso.felhom.eu/` and `/index.html` → 404; only named objects answer. The host is an R2 bucket behind a custom domain; whether R2 would serve an uploaded `index.html` at `/` was **not measured** (uploading anything to the public bucket is a publication). The ISO v1.27.0 task puts the Hungarian download page at `felhom.eu/letoltes` (published with the ISO, after the operator's yes). **Remaining:** a redirect from `iso.felhom.eu/` to that page needs a Cloudflare rule the session has no credential for. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator (Cloudflare rule)** **Re-ranked 2026-10-03: P3→P4: households are sent to the website's download page; the bare address is cosmetic.** | — | — | operator | | **R-504** | Install & onboarding | P4 | **[P3-LOW] `iso.felhom.eu` cannot show an index page on its own — its root returns 404, and the download page lives on the website instead.** MEASURED 2026-09-14: `https://iso.felhom.eu/` and `/index.html` → 404; only named objects answer. The host is an R2 bucket behind a custom domain; whether R2 would serve an uploaded `index.html` at `/` was **not measured** (uploading anything to the public bucket is a publication). The ISO v1.27.0 task puts the Hungarian download page at `felhom.eu/letoltes` (published with the ISO, after the operator's yes). **Remaining:** a redirect from `iso.felhom.eu/` to that page needs a Cloudflare rule the session has no credential for. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator (Cloudflare rule)** **Re-ranked 2026-10-03: P3→P4: households are sent to the website's download page; the bare address is cosmetic.** | — | — | operator |
## Apps & catalog — 9 rows (P3 2, P4 7) ## Apps & catalog — 10 rows (P3 2, P4 8)
| ID | Category | Sev | What | State | Blocked on | Next action | Owner | | ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|
@@ -135,6 +135,7 @@ stopping line that lies.
| **R-770** | Apps & catalog | P4 | **[P3-LOW] Invidious — fit check only; the recommendation is not to build it.** READ 2026-10-01: playback needs `invidious-companion` (rolling `latest`, no version tags); PostgreSQL 14 (EOL 2026-11); `registration_enabled: true` by default; upstream: a bot check means „your IP is blocked from YouTube”, a 429 can last 24 h, triggered by „someone on your network” — on our boxes that IP is the household's. One bad period in 2026 (March, ~2 weeks). No report found of a family's other devices being bot-checked (inference). **Needs:** the operator's go / no-go. `audits/new-apps-2026-10-01/FIT.md` | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator** **Re-ranked 2026-10-03: P3→P4: a new-app idea waiting on a decision.** | — | — | operator | | **R-770** | Apps & catalog | P4 | **[P3-LOW] Invidious — fit check only; the recommendation is not to build it.** READ 2026-10-01: playback needs `invidious-companion` (rolling `latest`, no version tags); PostgreSQL 14 (EOL 2026-11); `registration_enabled: true` by default; upstream: a bot check means „your IP is blocked from YouTube”, a 429 can last 24 h, triggered by „someone on your network” — on our boxes that IP is the household's. One bad period in 2026 (March, ~2 weeks). No report found of a family's other devices being bot-checked (inference). **Needs:** the operator's go / no-go. `audits/new-apps-2026-10-01/FIT.md` | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator** **Re-ranked 2026-10-03: P3→P4: a new-app idea waiting on a decision.** | — | — | operator |
| **R-771** | Apps & catalog | P4 | **[P3-LOW] moonlight-web — fit check only; not buildable through an HTTP-only tunnel at usable latency.** READ 2026-10-01: two unrelated projects (MrCreativ3001/moonlight-web-stream, the original; linckosz/moonlight-web); both need Sunshine/Apollo/Wolf on a gaming PC on the LAN and WebRTC over UDP (40000-40100/udp; linckosz recommends host networking and sends telemetry by default); both have a WebSocket fallback (high latency, all video through the tunnel); a logged-in user controls the PC's desktop. **Needs:** the operator's go / no-go (LAN-only use would need a different publishing model). `audits/new-apps-2026-10-01/FIT.md` | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator** **Re-ranked 2026-10-03: P3→P4: a new-app idea waiting on a decision.** | — | — | operator | | **R-771** | Apps & catalog | P4 | **[P3-LOW] moonlight-web — fit check only; not buildable through an HTTP-only tunnel at usable latency.** READ 2026-10-01: two unrelated projects (MrCreativ3001/moonlight-web-stream, the original; linckosz/moonlight-web); both need Sunshine/Apollo/Wolf on a gaming PC on the LAN and WebRTC over UDP (40000-40100/udp; linckosz recommends host networking and sends telemetry by default); both have a WebSocket fallback (high latency, all video through the tunnel); a logged-in user controls the PC's desktop. **Needs:** the operator's go / no-go (LAN-only use would need a different publishing model). `audits/new-apps-2026-10-01/FIT.md` | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator** **Re-ranked 2026-10-03: P3→P4: a new-app idea waiting on a decision.** | — | — | operator |
| **R-905** | Apps & catalog | P4 | **wger's collected style files (283 MB) go into every wger backup, though the app rebuilds them at every start.** Since R-762's fix (`DJANGO_DEBUG=False` + `collectstatic`, catalog `cf1ed43`) the static files sit in a named volume that the backup legs copy like data (measured 283 MB, `audits/design-build-2026-10-06/`); `collectstatic` regenerates them, so they are rebuildable bytes in every Tier-1 unit, Tier-2 copy and off-site snapshot. wger is `lifecycle: hidden` and no box runs it (hub read 2026-10-08). Options to weigh: a non-backed-up volume class for regenerable data, or an anonymous volume. Found by the R-762 helpers 2026-10-08. | **OPEN — needs a design before wger is shown** | — | Design the „regenerable volume" exclusion (catalog + controller backup legs) | CC | | **R-905** | Apps & catalog | P4 | **wger's collected style files (283 MB) go into every wger backup, though the app rebuilds them at every start.** Since R-762's fix (`DJANGO_DEBUG=False` + `collectstatic`, catalog `cf1ed43`) the static files sit in a named volume that the backup legs copy like data (measured 283 MB, `audits/design-build-2026-10-06/`); `collectstatic` regenerates them, so they are rebuildable bytes in every Tier-1 unit, Tier-2 copy and off-site snapshot. wger is `lifecycle: hidden` and no box runs it (hub read 2026-10-08). Options to weigh: a non-backed-up volume class for regenerable data, or an anonymous volume. Found by the R-762 helpers 2026-10-08. | **OPEN — needs a design before wger is shown** | — | Design the „regenerable volume" exclusion (catalog + controller backup legs) | CC |
| **R-929** | Apps & catalog | P4 | **The app count disagrees with itself in three places: the website's prose says 58, the apps page renders 59 cards, the catalog holds 60 template directories.** FOUND 2026-10-10 while writing the Facebook campaign, which had to quote a number. `site_gates.py` gate 15 prints „apps pages agree: 59 cards, 59 logos” (it compares the two language sets to EACH OTHER, so it cannot catch a count that is wrong on BOTH); the prose says 58 in 15 places per language set (`website/CHANGELOG.md` 2026-10-10 moved it 56→58 for Grocy + LubeLogger); `find templates -name .felhom.yml` in `app-catalog-felhom.eu` returns 60. So at least one card is not counted by the prose, and at least one template is not on the page — and the gate that looks at app counts is blind to both, because nothing compares the page to the CATALOG. **The campaign post says 58**, matching every prose claim on the site today; if 58 is wrong, a published post is wrong with it. **Fix shape:** reconcile the three (which templates are deliberately not shown — `lifecycle: hidden`, not installable — and which are missing from the page), then make the gate assert the page's card count against the catalog's shown-template count rather than against the other language. Needs the `felhom-app-catalog` skill's exclusion rules. | **OPEN — filed 2026-10-10 by the tester-recruitment session, which did NOT fix it (outside its brief)** | — | Reconcile page cards vs catalog templates vs the prose number; then point gate 15 at the catalog | CC |
## App updates — 4 rows (P3 4) ## App updates — 4 rows (P3 4)
+197
View File
@@ -0,0 +1,197 @@
# Tesztelőkeresés — üzenetek és helyek (2026-10-10)
> **Ezt te küldöd és te posztolod, nem a robot.** Két okból: a csoportok nem fogadnak el posztot egy
> gépi fióktól, és egy ismerős nevében írt üzenet sokkal többet ér, mint egy hirdetés.
>
> **Amit ez a dokumentum NEM tett meg:** nem posztolt sehova, nem lépett be egyetlen csoportba sem,
> és nem küldött üzenetet senkinek. A lenti csoportok adatait (taglétszám, szabályok) a saját
> böngésződben, bejelentkezve **olvastuk** 2026-10-10-én — a csoportok nyilvános „Névjegy" lapjáról.
>
> **A cél öt háztartás**, ebből kettő megvan. Tehát **három emberre van szükség** — nem ezer
> megjelenítésre. Ezt érdemes észben tartani: a legjobb forrás a személyes kör, nem a csoportok.
---
## 1. Személyes üzenet — kollégáknak, barátoknak, családnak
Ez hozza a legtöbb tesztelőt. Egyenként küldd, ne körlevélként, és cseréld ki a `<>` részeket.
```
Szia <Név>!
Emlékszel, hogy emlegettem, hogy épp egy otthoni szerveren dolgozom? Eljutott oda, hogy
élesben is kipróbálnánk pár háztartásnál, és rád gondoltam.
Röviden: egy kis gép áll nálad otthon, és azon vannak a fotóitok, a papírjaitok, a filmek
— nem a Google-nál. Én állítom be, én üzemeltetem, neked csak használni kell a
böngészőből. A teszt alatt nincs díj, és a domaint is én fizetem két évre.
Cserébe annyit kérek, hogy mondd el, mi zavaró vagy érthetetlen benne. Pont azért teszt,
hogy kiderüljön, mi nem jó.
Összesen öt helyünk van, ezért kérdezlek meg így, direktben. Nem kötelez semmire,
először csak beszélgetnénk róla: https://felhom.eu/teszteles
Ha nem a te világod, az is teljesen rendben — és ha eszedbe jut valaki, akinek való,
annak is örülnék.
```
**Tipp:** a legjobb jelöltek azok, akiknek **sok fotójuk van és fogy a Google-tárhelyük**, akik
épp most fizetnének elő valamire, vagy akik már emlegették, hogy „kéne egy NAS".
---
## 2. Facebook-csoport poszt — emberként, nem hirdetésként
Az első két sor a lényeg (a Facebook utána elvágja). Nincs emodzsi, nincs hashtag.
```
Van egy mellékprojektem, ami eljutott odáig, hogy éles tesztelők kellenek hozzá, és
kíváncsi vagyok, mit szóltok hozzá.
Egy otthoni szerver szolgáltatást csinálok magyar háztartásoknak: Proxmox alapon egy kis
gép a lakásban, rajta konténerekben a szokásos nyílt forráskódú appok (immich a fotóknak,
paperless a papíroknak, jellyfin a médiának), telepítés és üzemeltetés tőlem. A lényeg az,
hogy a család ne a parancssorral találkozzon, hanem egy magyar nyelvű vezérlőpulttal.
Most öt háztartással indul a zárt teszt, ebből három hely szabad. A teszt alatt nincs díj,
a beállítást én csinálom, és a domaint két évre én fizetem — az a tesztelő nevére szól, és
a teszt után is nála marad.
Cserébe egyetlen dolgot kérek: mondja el, mi nem jó benne.
Mit tud ma: https://felhom.eu/teszteles
```
### 2.1 Rövidebb változat szigorúbb csoportokba
Oda, ahol a hosszú poszt már hirdetésnek hat.
```
Egy otthoni szerver szolgáltatáson dolgozom magyar családoknak (Proxmox + Docker, nyílt
forráskódú appok, magyar nyelvű vezérlőpult, telepítés és üzemeltetés tőlem).
Zárt tesztet indítok, három szabad hellyel. Nincs díj, és a domaint is én állom. Cserébe
visszajelzést kérek.
Részletek: https://felhom.eu/teszteles
```
---
## 3. Fórum poszt — prohardver.hu / LOGOUT.hu / HUP.hu
Technikusabb, őszintébb, és **nem kerülgeti, hogy ez egy szolgáltatás lesz**. Ezen a közönségen
az őszinteség többet ér, mint a csiszolt marketingszöveg.
```
Tárgy: Otthoni szerver szolgáltatás magyar háztartásoknak — tesztelőket keresek
Sziasztok!
Egy ideje azon dolgozom, hogy az otthoni szerver ne csak nekünk, hanem a nem informatikus
családoknak is működjön. Most tartok ott, hogy éles háztartásokban kell kipróbálni.
Ami a doboz alatt van: Proxmox a hoszton, a háztartás egy LXC guestben, azon belül Docker.
Az appok nyílt forráskódúak (immich, paperless-ngx, jellyfin, nextcloud, vaultwarden és
társaik), jelenleg 58 telepíthető sablon. A kifelé menő forgalom Cloudflare Tunnelen megy,
mert a legtöbb helyen CGNAT van. Mentés három szinten: a dobozon, egy második meghajtón, és
restic-kel titkosítva egy távoli tárhelyre — a titkosítási kulcsot egy helyreállítási kód
zárja, ami nálam nincs meg. Ez tudatos: azt jelenti, hogy a távoli mentést én sem tudom
elolvasni, de azt is, hogy a kód elvesztése végleges.
Amit én csinálok: telepítés, frissítés, felügyelet, hibajavítás. Root hozzáférésem van a
dobozhoz, és ezt a feltételek ki is mondják.
Amit őszintén el kell mondanom: ez zárt teszt, nem kész termék. Rendelkezésre állást és
válaszidőt nem vállalok, és hibát találni fogsz. Cégem egyelőre nincs, magánszemélyként
csinálom. A teszt alatt nincs díj, és a domaint két évre én fizetem — a tesztelő nevére, és
a teszt után is nála marad.
Öt háztartással indul, ebből három hely szabad.
Feltételek, és mi kell hozzá: https://felhom.eu/teszteles
A rendszerről: https://felhom.eu/technologiak
Kérdésre szívesen válaszolok itt a topikban is.
```
> **Mielőtt ezt bárhova beteszed, olvasd el a 4.3 pontot.** A prohardver lapcsalád és a HUP
> szabályzata is tiltja az engedély nélküli reklámot, és a „tesztelők gyűjtése" könnyen annak
> minősülhet. Mindkét helyen **előbb a moderátort kell megkérdezni.**
---
## 4. Hol érdemes — és hol szabad
**Hogyan olvasd:** a taglétszám és a szabályok a csoport saját „Névjegy" lapjáról valók,
2026-10-10-én olvasva. Ahol a „Szabályok" oszlop azt írja, hogy *nincs közzétéve*, ott a csoport
nem tett ki szabályzatot — **ez nem engedély**, csak annyit jelent, hogy nincs mibe kapaszkodni, és
a moderátor döntése szabad.
### 4.1 A legjobb jelöltek — itt a szabályzat nem tiltja
| # | Hely | URL | Tagok | Téma | Szabályok |
|---|---|---|---|---|---|
| 1 | **Magyar Linux Felhasználók** | [facebook.com/groups/linuxfelhasznalok](https://www.facebook.com/groups/linuxfelhasznalok/) | 11 970, **nyilvános** | Linux, Unix, szabad szoftverek | **Nincs hirdetési tilalom.** 1. szabály: „csak Linuxszal, Unixszal és szabad szoftverekkel kapcsolatos témák megengedettek" — a Felhom Proxmox/Debian/Docker + nyílt forráskódú appok, tehát témába vág. 4. szabály: ne spammelj, egy témában egy poszt. **A legjobb esély.** |
| 2 | **Magyar Szabad Szoftver Közösség** | [facebook.com/groups/szabadszoftver](https://www.facebook.com/groups/szabadszoftver/) | 1 138, **nyilvános** | „Minden ami a szabad szoftverekkel és a szabad tartalmakkal kapcsolatos" | **Nincs közzétett szabályzat.** Kicsi, de pontosan a témád, és aktív (11 poszt aznap). |
| 3 | **Raspberry PI Magyarország** | [facebook.com/groups/985613078125928](https://www.facebook.com/groups/985613078125928/) | 11 468, privát | Raspberry Pi, kisgépek | **Nincs közzétett szabályzat.** Belépés kell. **Figyelem: alig él** — 10 poszt az elmúlt hónapban. |
### 4.2 Van bennük közönség, de a szabályzat tiltja vagy szűk kaput hagy
| # | Hely | URL | Tagok | Szabályok — szó szerint |
|---|---|---|---|---|
| 4 | **Csináld magad okosotthon - DIY Smart Home** | [facebook.com/groups/diysmarthome](https://www.facebook.com/groups/diysmarthome/) | 23 869, privát | 3. szabály: *„A csoportban tilos a hirdetés. Ha szeretnél szakmai tartalmat megosztani az általad forgalmazott/telepitett/gyártott eszközökről, akkor keress minket az info@diysmarthome.hu email címen a részletekért"*. 9. szabály: *„Ne itt vadássz kuncsaftot!"* → **csak az admin-úton**, e-maillel. |
| 5 | **Home Assistant Hungary** | [facebook.com/groups/HomeAssistantHU](https://www.facebook.com/groups/HomeAssistantHU/) | 13 877, privát | 3. szabály: *„A csoport nem általános okosotthon csevegő, kizárólag Home Assistant témához kapcsolódó tartalmat posztolj"*. 5. szabály: *„Apróhirdetést ne itt"* → **rossz illeszkedés**, hacsak nem kifejezetten a Home Assistant-integrációról írsz. |
| 6 | **Okosotthon Szakmai Csoport** | (keresd rá a Facebookon) | ~7 000, privát | Szabályzatát nem olvastuk. Belépés kell, utána nézd meg. |
| 7 | **Amatőr okosotthon építők** | (keresd rá a Facebookon) | ~3 800, privát | Szabályzatát nem olvastuk. **A kereső szerint már tag vagy** („Felkeresés", nem „Csatlakozás"). |
| 8 | **Okosotthon - piactér** | [facebook.com/groups/okosotthonpiac](https://www.facebook.com/groups/okosotthonpiac) | ~5 900, privát | Ez a 4-es csoport **hirdetési partnercsoportja** — ide szánják az apróhirdetéseket. Ha valahol hirdetésként is elmegy, akkor itt. |
| 9 | **Linux Rendszergazdák** | (keresd rá a Facebookon) | ~3 400, nyilvános | Szabályzatát nem olvastuk. Szakmai közönség. |
| 10 | **Linux Mint Baráti Kör** | (keresd rá a Facebookon) | ~2 600, nyilvános | Szabályzatát nem olvastuk. Kifejezetten desktopos közönség. |
| 11 | **Linux kezdőknek és mindenki másnak** | (keresd rá a Facebookon) | ~1 500, privát | Szabályzatát nem olvastuk. Kezdő közönség — közel a Felhom célcsoportjához. |
| 12 | **Home Assistant kezdőknek** | (keresd rá a Facebookon) | ~1 300, nyilvános | Szabályzatát nem olvastuk. |
### 4.3 Fórumok — mindkettőnél ELŐBB a moderátort kérdezd
| # | Hely | URL | Szabály — szó szerint |
|---|---|---|---|
| 13 | **HUP.hu** | [hup.hu](https://hup.hu) · szabályzat: [hup.hu/moderalas](https://hup.hu/moderalas) | A tiltott tartalmak között: *„bármilyen engedély nélküli reklám- illetve kereskedelmi tevékenység folytatása"* és *„termékek, szolgáltatások reklámozása"*. A saját projekt bemutatásáról **nem rendelkezik külön**. → Írj a moderálási kérelem űrlapon, mielőtt posztolsz. Technikailag ez a legértőbb közönség Magyarországon. |
| 14 | **prohardver.hu / LOGOUT.hu** | [prohardver.hu](https://prohardver.hu) · [logout.hu](https://logout.hu) | Az ÁSZF szerint termék/szolgáltatás hirdetése **csak** a hardverapro.hu, az Állásbörze és a városi LOKÁL topikcsoportokban megengedett, és tiltott *„az Üzemeltető engedélye nélküli marketing vagy gazdasági tevékenység (tagok, vásárlók gyűjtése, szervezése, regisztrációra invitálása, ajánlattétel, felhívás)"*. **A tesztelőkeresés szó szerint „tagok gyűjtése" és „felhívás"** → engedély nélkül ne. Az ÁSZF-et 2025-03-15-én frissítették, ellenőrizd a hatályos szöveget. |
| 15 | **Távvezérlés.hu fórum / diysmarthome.hu magazin** | [tavvezerles.hu](https://tavvezerles.hu) · [diysmarthome.hu](https://diysmarthome.hu) | Szabályzatot nem olvastunk. Mindkettő **magazin + fórum**, tehát van szerkesztőségi út: egy bemutatkozó cikk vagy interjú többet érhet, mint egy poszt. A diysmarthome.hu ugyanaz a csapat, mint a 4-es csoport (`info@diysmarthome.hu`). |
---
## 5. A sorrend, amit javaslunk
1. **Először a személyes kör** (1. pont). Három emberre van szükség — jó eséllyel megvan ismerősből,
és ez a leggyorsabb és a legmegbízhatóbb út. Ezt ma el lehet kezdeni.
2. **Aztán a Magyar Linux Felhasználók** (4.1/1). Nyilvános, nagy, témába vág, és a szabályzata nem
tiltja. Használd a 2. pont hosszú változatát.
3. **Utána a Magyar Szabad Szoftver Közösség** (4.1/2). Kicsi, de pontos.
4. **Közben írj a moderátoroknak:** HUP moderálási kérelem, és `info@diysmarthome.hu`. Mindkettő
napokat vesz igénybe, ezért érdemes korán elindítani — és ha igent mondanak, mindkettő jobb
közönség, mint bármelyik csoportposzt.
5. **A prohardver/LOGOUT csak engedéllyel.** Enélkül törlés és esetleg tiltás a vége, ami
visszafordíthatatlanul elrontja a legjobb magyar technikai közönséget.
**Amit ne csinálj:** ne tedd be ugyanazt a szöveget öt csoportba egy napon. A Facebook ezt
spamként kezeli, és a csoportok adminjai is látják. Heti egy hely bőven elég ahhoz, hogy három
embert találj.
---
## 6. Mit mondj, ha visszakérdeznek
Ezek jönni fognak. Érdemes előre tudni a választ — mindegyik a weboldalon is ott van.
- **„Mi a csapda? Miért ingyen?"** — Mert teszt. Neked a visszajelzés ér annyit, amennyit a
szolgáltatás. A feltételek 5. pontja kimondja: nincs díj, se tőled, se felénk.
- **„Mi van, ha abbahagyod?"** — A feltételek 9. és 10. pontja. Az adat a tesztelőé, a domain a
tesztelőé, és a távoli mentés a helyreállítási kóddal az övé marad.
- **„Te látod az adataimat?"** — Igen, root hozzáférés van a dobozhoz, és ezt a feltételek 6. pontja
nyíltan kimondja. A **távoli mentést** viszont nem lehet elolvasni a kód nélkül — azt te sem tudod.
- **„Miért nem egyszerűbb egy Synology?"** — Jogos. Egy NAS-t meg kell venni, be kell állítani, és
frissíteni kell. Itt a beállítás és az üzemeltetés a szolgáltatás része. Akinek ez megy magától,
annak nem a Felhom való — és ezt nyugodtan mondd ki.
- **„Mennyibe fog kerülni később?"** — Ma nincs ár, és nem is ajánlunk egyet. Amikor lesz, előtte
szólunk, és a tesztből nem következik kötelezettség.