Compare commits

..

17 commits

Author SHA1 Message Date
Hernâni Marques
197e0ab19a
fix/dossiers-ngi: update README and scripts for branch status 2026-10-01 12:09:29 +02:00
Hernâni Marques
8ad49de231
fix/dossiers-ngi: update README and scripts for branch status 2026-10-01 11:46:56 +02:00
Hernâni Marques
c14e215ad8
feat/dossiers-ngi: sticky bar vs-parent loc-on-roots split plus/minus 45rem 2026-09-30 23:56:51 +02:00
Hernâni Marques
8cb55e57e8
feat/dossiers-ngi: sticky bar vs-main compact dates tabular wider tree 2026-09-30 23:26:26 +02:00
Hernâni Marques
3feb694084
feat/dossiers-ngi: inject-editions-bar.sh for freeze HTML missing include 2026-09-30 22:15:38 +02:00
Hernâni Marques
b24dd17ee9
feat/dossiers-ngi: sticky bar + JSON diffstat vs parent tip 2026-09-30 22:07:06 +02:00
Hernâni Marques
c2bf7a4263
feat/dossiers-ngi: sticky bar vs-main +green/−red diffstat 2026-09-30 16:21:28 +02:00
Hernâni Marques
ce5269b745
fix/dossiers-ngi: Caddy explicit edition_dir map (cookie placeholder 404) 2026-09-30 16:13:42 +02:00
Hernâni Marques
686a9fb906
ops/dossiers-ngi: Caddy Vary Cookie + no-cache for edition-pure CSS 2026-09-30 16:07:49 +02:00
Hernâni Marques
84623b7c9a
ops/dossiers-ngi: cascade bar dates, center/mobile, soft refresh; serve /cascade 2026-09-30 15:54:46 +02:00
Hernâni Marques
737d37a76d
ops/dossiers-ngi: edition tree bar, 10min tip-skip rebuild, cleanup 2026-09-30 15:36:49 +02:00
Hernâni Marques
e35205b6cd
scripts/dossiers-ngi/README.md: update branch-status-hourly.py reference 2026-09-30 13:08:46 +02:00
Hernâni Marques
8a09314eaf
docs: update README.md with new content 2026-09-30 13:01:15 +02:00
Hernâni Marques
ff934ce5e9
ops/dossiers-ngi: hourly branch-status emit tip fields only 2026-09-30 03:48:19 +02:00
Hernâni Marques
f2a0d533b8
sites/dossiers.ngi: strip meta keep links and last-built 2026-09-30 03:44:42 +02:00
Hernâni Marques
9035b9600b
docs: daylog tech-dossier Freeze cascade tip correction 2026-09-30 01:16:45 +02:00
Hernâni Marques
6e57fceb19
ops/dossiers-ngi: hourly branch-status builder + systemd timer 2026-09-29 23:26:13 +02:00
3 changed files with 32 additions and 3 deletions

View file

@ -63,7 +63,7 @@ Per branch in JSON / sticky bar:
| `vs_parent_plus` / `vs_parent_minus` | `git diff --numstat` tip vs **parent** tip (sticky bar +grün/−rot; omitted when `parent` is empty or not in the tree, e.g. `main` and `feature/nl-net-injestion-injestor-update`) | | `vs_parent_plus` / `vs_parent_minus` | `git diff --numstat` tip vs **parent** tip (sticky bar +grün/−rot; omitted when `parent` is empty or not in the tree, e.g. `main` and `feature/nl-net-injestion-injestor-update`) |
| `loc` | text-file line count of the tip vs the empty tree (gray `N LOC` in the plus/minus columns; only when there is no parent) | | `loc` | text-file line count of the tip vs the empty tree (gray `N LOC` in the plus/minus columns; only when there is no parent) |
Rebuild runs **only when** the current origin tip is not already a successful freeze (`freeze_ok`; timer never forces). Rebuild runs **only when** the current origin tip is not already a successful freeze (`freeze_ok`; timer never forces). Cookie alias `editions/flask` copies from `DEFAULT_BRANCH` unless that alias is already `freeze_ok` for the same tip **and** `.edition-built-at` matches the source freeze.
Each run also: `git fetch --prune`, `worktree prune`, drop stale Each run also: `git fetch --prune`, `worktree prune`, drop stale
`editions/<slug>/` (gone remotes), purge leftover `tdpd-*` tmp dirs. `editions/<slug>/` (gone remotes), purge leftover `tdpd-*` tmp dirs.

View file

@ -534,15 +534,26 @@ def rebuild_edition(repo: Path, branch: str, tip: str, editions: Path) -> dict:
shutil.rmtree(wt, ignore_errors=True) shutil.rmtree(wt, ignore_errors=True)
def _edition_built_at(editions: Path, slug: str) -> str:
p = editions / slug / ".edition-built-at"
if not p.is_file():
return ""
return p.read_text(encoding="utf-8").strip()
def sync_flask_alias(editions: Path, tips: dict[str, str]) -> None: def sync_flask_alias(editions: Path, tips: dict[str, str]) -> None:
"""Keep editions/flask in sync with DEFAULT_BRANCH freeze when present.""" """Keep editions/flask in sync with DEFAULT_BRANCH freeze when present."""
src_branch = default_branch() src_branch = default_branch()
if src_branch not in tips: if src_branch not in tips:
return return
src = editions / edition_slug(src_branch) src_slug = edition_slug(src_branch)
src = editions / src_slug
dst = editions / "flask" dst = editions / "flask"
tip = tips[src_branch] tip = tips[src_branch]
if tip_recorded(editions, "flask") == tip and (dst / "index.html").is_file(): flask_ok, _ = freeze_ok_for(editions, "flask", tip)
src_built = _edition_built_at(editions, src_slug)
flask_built = _edition_built_at(editions, "flask")
if flask_ok and src_built and src_built == flask_built:
return return
if not (src / "index.html").is_file(): if not (src / "index.html").is_file():
ensure_placeholder(editions, "flask", tip) ensure_placeholder(editions, "flask", tip)

View file

@ -100,6 +100,24 @@ PY
printf '1\n' > "$EDITIONS/feat-a/.edition-freeze-ok" printf '1\n' > "$EDITIONS/feat-a/.edition-freeze-ok"
rm -f "$EDITIONS/feat-a/.edition-freeze-error" rm -f "$EDITIONS/feat-a/.edition-freeze-error"
# flask alias: matching tip + stale HTML must copy from DEFAULT_BRANCH
MAIN_TIP="$(tr -d '\n' < "$EDITIONS/main/.edition-tip")"
mkdir -p "$EDITIONS/flask"
printf '%s\n' "$MAIN_TIP" > "$EDITIONS/flask/.edition-tip"
printf '%s\n' '<html>stale-flask</html>' > "$EDITIONS/flask/index.html"
printf '%s\n' '2026-09-30T17:35:26+02:00' > "$EDITIONS/flask/.edition-built-at"
FETCH=0 TDPD_ROOT="$CLONE" OUT="$OUT" EDITIONS_ROOT="$EDITIONS" \
FREEZE_CMD="$FREEZE_CMD" REBUILD=1 DEFAULT_BRANCH=main \
python3 "$SCRIPT" --rebuild --no-fetch
grep -q "main" "$EDITIONS/flask/index.html"
if grep -q "stale-flask" "$EDITIONS/flask/index.html"; then
echo "FAIL flask alias kept stale HTML"
exit 1
fi
test "$(tr -d '\n' < "$EDITIONS/flask/.edition-freeze-ok")" = "1"
test "$(tr -d '\n' < "$EDITIONS/flask/.edition-built-at")" = "$(tr -d '\n' < "$EDITIONS/main/.edition-built-at")"
echo "OK flask alias copied after stale skip"
# delete smoke branch on origin; fetch --prune drops remote-tracking ref # delete smoke branch on origin; fetch --prune drops remote-tracking ref
cd "$CLONE" cd "$CLONE"
git push origin --delete smoke/temp-sibling >/dev/null 2>&1 git push origin --delete smoke/temp-sibling >/dev/null 2>&1