koopa-admin-log/scripts/dossiers-ngi/README.md
2026-09-30 13:01:15 +02:00

86 lines
3.3 KiB
Markdown

# dossiers-ngi — cascade landing + hourly branch-status
SoT for the blank cascade landing on **dossiers.ngi.hacktivism.ch**
(path roots only; no dossiers.2 / dossiers.3 ownership here).
| Path | Role |
|------|------|
| `sites/dossiers.ngi.hacktivism.ch/` | Landing HTML (EN, ASCII ladder) |
| `scripts/dossiers-ngi/branch-status-hourly.py` | Read tips from tdpd checkout → `branch-status.json` |
| `configs/systemd/user/dossiers-ngi-branch-status.{timer,service}` | Hourly oneshot on koopa |
## Env
| Var | Default | Meaning |
|-----|---------|---------|
| `TDPD_ROOT` | `$HOME/git/src/ngi/tech-dossier-project-data` | tech-dossier-project-data checkout for tip SHAs |
| `ADMIN_LOG` | (script derives from `__file__`) | koopa-admin-log root |
On koopa the clone often lives at `%h/src/koopa/koopa-admin-log`; set
`TDPD_ROOT` in the service `Environment=` if the tdpd path differs.
## Manual run
```bash
python3 scripts/dossiers-ngi/branch-status-hourly.py
# → sites/dossiers.ngi.hacktivism.ch/branch-status.json
```
## Deploy landing (Freigabe)
```text
hernani@koopa:/var/www/monitoring-sites/dossiers.ngi.hacktivism.ch/
```
rsync from `sites/dossiers.ngi.hacktivism.ch/` — Freigabe this session required.
Hourly JSON can sit next to the HTML once the timer is installed on koopa
(Freigabe for host mutation).
## Ownership
Hourly builder belongs in **kal** (this tree). Do **not** put
`scripts/branch-status-hourly.py` back into tdpd.
## Sticky cascade bar
Stock Caddy `templates` renders `{% include "_cascade/bar.html" . %}` on each
HTML page. The include path has no leading slash. The dot passes the request,
so `.Req.URL.Path` marks the active link with `class="is-active"` and
`aria-current="page"`. Delimiters are `{%` `%}`, so a later `{{ }}` in real
dossier HTML stays literal.
The bar lists cascade `/` plus the five branch paths. Seeded tips match
`branch-status.json`. `/_cascade/bar.js` refreshes `[data-tip]` from that JSON
(`cache: no-store`). CSS is `/_cascade/bar.css` (`position: sticky`).
Enable templates before rsync. A page without the include does not grow the
bar. `{%` without the templates directive is shown as raw text.
Templates apply is **host-local on koopa** (`~/bin/apply-dossiers-ngi-templates.sh`),
not tracked in this repo. It edits `~/koopa-caddy/Caddyfile` only (this host;
keeps `header Alt-Svc "clear"` and any `basic_auth`; leaves `.2` / `.3`
untouched). Then reload with the usual home→`/etc` helper:
```bash
bash ~/bin/apply-dossiers-ngi-templates.sh
sudo ~/bin/caddy-apply
```
The stanza body for hand-check / re-seed lives in
`scripts/dossiers-ngi/caddy-dossiers-ngi.snippet`.
`scripts/caddy/caddy-apply.sh --snippet` leaves an existing block unchanged.
Leave `scripts/caddy/apply-goa-wdGet-full-replace.sh` and
`scripts/caddy/apply-dossiers-ngi-basicauth.sh` unused. No response-body
replace plugin.
After validate and reload succeed, rsync from the laptop (Freigabe):
```bash
rsync -avz --delete --exclude .DS_Store \
"$HOME/git/admin-logs/local/koopa-admin-log/sites/dossiers.ngi.hacktivism.ch/" \
hernani@koopa:/var/www/monitoring-sites/dossiers.ngi.hacktivism.ch/
```
`--delete` removes `_cascade/` on the server when the source tree is an older
copy. The bar does not finish the dossier site. This section does not install
the hourly timer.