Household docs: rewrite the family guide, and make the model cards tell the truth #139

Merged
dank merged 3 commits from docs/household-guide-refresh into main 2026-11-03 04:08:09 -08:00
Owner

Household docs: rewrite the family guide, and make the model cards tell the truth

Three atomic commits.

1. docs(homepage): the household guide, rewritten for people who did not build it

shared/homepage/docs.html was a wall of data-URI screenshots with a section per
app written from the operator's point of view. Rebuilt as a task-first guide:
start here → pick what you want to do → open the door, then one section per
door with the exact address, the exact button to press, and the failure the
household actually hits (the family password typed into Jellyfin; a file app
pointed at the public door).

  • 14 screenshots, all captured logged in as a standard (non-admin) user, not
    as Frank. They ship as files (img/onboarding/*.webp, 14 × ≤100 KB, converted
    to WebP) instead of data URIs: the page went from ~30 KB of inline base64 to
    23 KB of prose, and the images now cache separately.
  • Zero-JS rule kept: the only script on the page is the pre-existing bare-mode toggle.
  • style.css gains only the rules the new markup needs (h3, figure,
    figcaption, table, .toc, .kicker) plus their bare-mode counterparts.
  • Verified headlessly before commit: 14/14 images resolve, no dead anchors, all
    15 external hosts are vhosts that actually exist in dankclaw/Caddyfile, and
    ?bare=1 still strips to bare HTML.

Facts corrected while rewriting (each re-checked against the live service, not
against the old page): the front door is https://www.franksdank.cloud (the apex
308s there — there is no dank. host); Audiobookshelf's app URL is
…/audiobookshelf (root is a redirect onto ROUTER_BASE_PATH); the standard
user's Open WebUI account sees all three models and opens on frank-dragoon
(read from /api/models as that user, not assumed); a WebDAV mount works only on
the house network (PROPFIND http://192.168.0.235:3923/ answers 207, the same
verb through the public door answers the guard's challenge page); Audiobookshelf's
iOS client is a limited-seat TestFlight beta, Android is the normal Play release.

2. fix(homepage): the model cards speak the live shape

shared/homepage/services.json is the family's only description of the fleet, and
three of its numbers had drifted from scripts/*.env:

Card Was Now Authority
frank-archon three submissions at a time four FRANK_ARCHON_MAX_SEQS=4 (1bb6399)
frank-zealot 262k-token context 200k-token conversations CTX_SIZE=602112 / PARALLEL=3 = 200,704 a slot, and llama.cpp 400s over it
frank-zealot "Base-alignment (censored) model: refusals are possible" uncensored, adapter named LORA_FILE=…/Ternary-Bonsai-2-9B-Uncensored-LoRA.gguf, LORA_SCALE=1
frank-archon "strongest and fastest" strongest not an env fact; frank-dragoon is the interactive one
frank-zealot ~167 tokens/s (dropped) a measurement for a shape nobody is comparing — vault law says drop it

This commit deletes one assertion (tests/homepage_config.bats: zealot's card
warning "must not claim uncensored output", added when the censored base was live
on 2026-10-17). The LoRA landed after that, so the pin now enforces a false claim
on a safety-relevant field: it would keep telling the household that this endpoint
refuses dangerous requests when it does not. The general invariant stays and still
fires — any card whose spec says uncensored/abliterated MUST carry the legal
warning (homepage_config.bats:100-104). Revert this commit if you disagree; it
is self-contained.

3. docs(vault): the four-slot contract, and two pages that contradicted themselves

  • LLM/frank-archon.md said "Capacity contract 2 conversations × 200,000" in its
    intro while its own shape table read MAX_SEQS=4. Intro now matches the env.
  • AGENTS.md carried --max-num-seqs 2 and a 44,928 MiB host pool; live is 4 and
    49,152.
  • LLM/dankclaw-iommu-translation-off.md re-transcribed frank-dragoon's boot
    ledger (including a pool figure that was already superseded the same day) and
    carried a present-tense "No NPU endpoint is deployed" that the XDNA2 embedding
    lane falsified on 2026-10-19. Both replaced by a link to [[frank-dragoon]],
    which owns those numbers.
  • Architecture/Deployment Flow.md had a sentence broken by an earlier link
    removal ("is retired () and has no deploy handler").

Census run for this commit: every tunable in the three scripts/<svc>.env files
against its endpoint page (only hits were truncated-sha and absolute-path forms
the pages intentionally elide), live /health + /v1/models on all three
endpoints, check-okf.py → 125 pages, 0 violations, 0 duplicate titles, 0 pages
unlinked from an index.


cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
(work performed in the deploy worktree /tmp/wt-deploy, branched off origin/main@5030f83)

# Household docs: rewrite the family guide, and make the model cards tell the truth Three atomic commits. ## 1. `docs(homepage)`: the household guide, rewritten for people who did not build it `shared/homepage/docs.html` was a wall of data-URI screenshots with a section per app written from the operator's point of view. Rebuilt as a task-first guide: *start here → pick what you want to do → open the door*, then one section per door with the exact address, the exact button to press, and the failure the household actually hits (the family password typed into Jellyfin; a file app pointed at the public door). - **14 screenshots, all captured logged in as a standard (non-admin) user**, not as Frank. They ship as files (`img/onboarding/*.webp`, 14 × ≤100 KB, converted to WebP) instead of data URIs: the page went from ~30 KB of inline base64 to 23 KB of prose, and the images now cache separately. - Zero-JS rule kept: the only script on the page is the pre-existing bare-mode toggle. - `style.css` gains only the rules the new markup needs (`h3`, `figure`, `figcaption`, `table`, `.toc`, `.kicker`) plus their bare-mode counterparts. - Verified headlessly before commit: 14/14 images resolve, no dead anchors, all 15 external hosts are vhosts that actually exist in `dankclaw/Caddyfile`, and `?bare=1` still strips to bare HTML. Facts corrected while rewriting (each re-checked against the live service, not against the old page): the front door is `https://www.franksdank.cloud` (the apex 308s there — there is no `dank.` host); Audiobookshelf's app URL is `…/audiobookshelf` (root is a redirect onto `ROUTER_BASE_PATH`); the standard user's Open WebUI account sees **all three** models and opens on `frank-dragoon` (read from `/api/models` as that user, not assumed); a WebDAV mount works only on the house network (`PROPFIND http://192.168.0.235:3923/` answers `207`, the same verb through the public door answers the guard's challenge page); Audiobookshelf's iOS client is a limited-seat TestFlight beta, Android is the normal Play release. ## 2. `fix(homepage)`: the model cards speak the live shape `shared/homepage/services.json` is the family's only description of the fleet, and three of its numbers had drifted from `scripts/*.env`: | Card | Was | Now | Authority | |---|---|---|---| | `frank-archon` | three submissions at a time | four | `FRANK_ARCHON_MAX_SEQS=4` (`1bb6399`) | | `frank-zealot` | 262k-token context | 200k-token conversations | `CTX_SIZE=602112 / PARALLEL=3` = 200,704 a slot, and llama.cpp 400s over it | | `frank-zealot` | "Base-alignment (censored) model: refusals are possible" | uncensored, adapter named | `LORA_FILE=…/Ternary-Bonsai-2-9B-Uncensored-LoRA.gguf`, `LORA_SCALE=1` | | `frank-archon` | "strongest and fastest" | strongest | not an env fact; `frank-dragoon` is the interactive one | | `frank-zealot` | ~167 tokens/s | (dropped) | a measurement for a shape nobody is comparing — vault law says drop it | **This commit deletes one assertion** (`tests/homepage_config.bats`: zealot's card warning "must not claim uncensored output", added when the censored base was live on 2026-10-17). The LoRA landed after that, so the pin now enforces a false claim on a safety-relevant field: it would keep telling the household that this endpoint refuses dangerous requests when it does not. The general invariant stays and still fires — any card whose spec says uncensored/abliterated MUST carry the legal warning (`homepage_config.bats:100-104`). Revert this commit if you disagree; it is self-contained. ## 3. `docs(vault)`: the four-slot contract, and two pages that contradicted themselves - `LLM/frank-archon.md` said "Capacity contract 2 conversations × 200,000" in its intro while its own shape table read `MAX_SEQS=4`. Intro now matches the env. - `AGENTS.md` carried `--max-num-seqs 2` and a 44,928 MiB host pool; live is 4 and 49,152. - `LLM/dankclaw-iommu-translation-off.md` re-transcribed frank-dragoon's boot ledger (including a pool figure that was already superseded the same day) and carried a present-tense "No NPU endpoint is deployed" that the XDNA2 embedding lane falsified on 2026-10-19. Both replaced by a link to `[[frank-dragoon]]`, which owns those numbers. - `Architecture/Deployment Flow.md` had a sentence broken by an earlier link removal ("is retired () and has no deploy handler"). Census run for this commit: every tunable in the three `scripts/<svc>.env` files against its endpoint page (only hits were truncated-sha and absolute-path forms the pages intentionally elide), live `/health` + `/v1/models` on all three endpoints, `check-okf.py` → 125 pages, 0 violations, 0 duplicate titles, 0 pages unlinked from an index. --- cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb (work performed in the deploy worktree `/tmp/wt-deploy`, branched off `origin/main@5030f83`)
dank added 3 commits 2026-11-03 04:07:57 -08:00
Task-first instead of app-first: start here, pick what you want to do, open the
door. Every door gets its exact address, the button to press, and the failure the
household actually hits.

Screenshots are files now (img/onboarding/*.webp, 14 of them, all captured logged
in as a standard user) instead of inline data URIs: the page is 23 KB of prose
instead of 30 KB of base64, and the images cache on their own. Zero-JS kept.

Facts re-checked against the live services rather than against the old page: the
front door is www.franksdank.cloud (the apex 308s there); the standard user's
Open WebUI account sees all three models and opens on frank-dragoon (read from
/api/models as that user); WebDAV answers only on the house network (207 on
192.168.0.235:3923, a guard challenge through the public door); Audiobookshelf
iOS is a limited-seat TestFlight beta, Android is the Play release.
Three numbers on the family-facing model cards had drifted from scripts/*.env:
archon said three submissions where FRANK_ARCHON_MAX_SEQS=4 (1bb6399), zealot
said 262k context where the contract is 200,704 a slot (CTX_SIZE 602112 / PARALLEL
3, and llama.cpp 400s over the slot rather than truncating), and zealot's warning
still promised censored-base refusals after the Uncensored-LoRA went into the load
line (LORA_FILE set, LORA_SCALE=1). archon's role dropped an unverifiable
"fastest"; zealot's card dropped a tokens/s figure nobody is comparing.

Deletes the assertion that zealot's warning must not claim uncensored output. It
was written 2026-10-17, when the censored base was live; the adapter landed after
it, so the pin now enforces a false safety claim on the one surface the household
reads. The general invariant survives and still fires: a card whose spec says
uncensored or abliterated must carry the legal warning (same seam, lines 100-104).
frank-archon.md's intro promised 2 conversations while its own shape table said
MAX_SEQS=4; AGENTS.md carried --max-num-seqs 2 and a 44,928 MiB host pool against
a live 4 and 49,152. Both now quote the env.

dankclaw-iommu-translation-off.md re-transcribed frank-dragoon's boot ledger,
including a pool figure that was superseded the same day, and asserted in the
present tense that no NPU endpoint is deployed - falsified by the XDNA2 embedding
lane on 2026-10-19. Both facts now belong to [[frank-dragoon]] alone.

Deployment Flow.md had a sentence broken by an earlier link removal.

Census: every tunable in the three scripts/<svc>.env against its endpoint page
(only truncated-sha and elided-path forms, which the pages omit on purpose), live
/health + /v1/models on all three endpoints, check-okf.py clean at 125 pages, no
duplicate titles, no page unlinked from an index.
dank merged commit e1bf1d6e80 into main 2026-11-03 04:08:09 -08:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dank/serverAppConfigs#139