koopa-admin-log/scripts/dossiers-ngi
2026-09-30 12:52:38 +02:00
..
branch-status-hourly.py scripts/dossiers-ngi/README.md: update branch-status-hourly.py reference 2026-09-30 12:52:38 +02:00
caddy-dossiers-ngi.snippet docs: update README.md with new content 2026-09-30 12:50:54 +02:00
README.md scripts/dossiers-ngi/README.md: update branch-status-hourly.py reference 2026-09-30 12:52:38 +02:00

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
OUT sites/dossiers.ngi.hacktivism.ch/branch-status.json under kal write path for JSON (live www on koopa)
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 and OUT in ~/.config/dossiers-ngi/branch-status.env when the tdpd path or live www path differs from the laptop defaults.

Manual run

python3 scripts/dossiers-ngi/branch-status-hourly.py
# → sites/dossiers.ngi.hacktivism.ch/branch-status.json

Deploy landing (Freigabe)

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 ~/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):

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.