Decision 150 (operator 13:25): sessions correct stale facts in instruction files themselves, naming each edit; never loosen a rule. Added to unprompted-work.md §5 (all copies) and PROMPT-TEMPLATE.md §9. CLAUDE.md gates paragraph (R-891), architecture pointer, docs/website rules, the doubled R-286 sentence in the workspace CLAUDE.md. Decision 149: vaultwarden's step proven on bench 9401 and box 9202 (evidence here). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
1.4 KiB
paths
| paths | |
|---|---|
|
Website — build, deploy, and the encoding fences
Deploy
The website auto-deploys via git-sync from main — just push, live in 1–2 min. No ArgoCD sync,
no image build. Emergency edits: https://files.felhom.eu.
Do NOT pin the website to the installer tag. The sparse-checkout used to cover /website/ and
/scripts/ in one sync; pinning that would turn every copy edit into a release. The installer's
tag-based publishing is a separate mechanism — see the R-110 fence in the repo core CLAUDE.md.
Gates
Website changes go through python3 scripts/repo_gates.py, which runs site_gates.py. A new page
must be added to that gate's PAGES list or it is unchecked.
site_gates.py asserts: BOM, emoji, nav/footer consistency, analytics, CDN, design tokens, no
embedded <style> blocks, and cache-busting.
The encoding fences
- All
website/HTML is UTF-8 with BOM. Preserve it. An editor that strips the BOM is a silent, whole-file change. - Emoji count is zero. The design system forbids them; the gate enforces it.
- Cache-busting: bump the asset query string when CSS or JS changes, or browsers serve the old file and the change looks like it did not deploy.
Copy
Customer-facing copy is Hungarian, and its tone and terminology rules live in the
felhom-ui-design skill — use it rather than inventing phrasing. Operator-facing text is
English.