Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ jobs:
- run: npm ci
- name: Verify the complete publication surface
run: npm test
- name: Check primary external links
run: npm run check:links

refresh-review:
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.refresh_data)
Expand Down
9 changes: 6 additions & 3 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ publication process; no maintainer owns the underlying facts.

- Scientific claims require a primary source, data date and stated limitation.
- Legal claims require the operative text, jurisdiction and date checked.
- Material data, method and copy changes are made by pull request.
- At least one review is required before `main` changes. Authors do not approve
their own pull requests.
- Material data, method and copy changes require a pull request and passing
publication checks.
- Independent scientific or legal review is required before a contribution is
described as reviewed or relied upon; authors do not certify their own
specialist review. Until independent reviewers participate, merges are
maintainer decisions and the review status remains explicit.
- Generated data refreshes receive the same review as hand-written changes.
- Uncertainty is disclosed next to the claim it qualifies.

Expand Down
2 changes: 1 addition & 1 deletion build/14-pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
'svg', 'script', 'style'}
OPAQUE = {'svg', 'script', 'style'}
VOID = {'meta', 'link', 'br', 'hr', 'img', 'input', 'source', 'wbr', 'col', 'area'}
ATTRS = ('title', 'aria-label', 'alt', 'placeholder')
ATTRS = ('title', 'aria-label', 'aria-roledescription', 'alt', 'placeholder')
META = ('description', 'og:title', 'og:description', 'og:site_name', 'og:image:alt')

ENTITY = re.compile(r'&(?:#\d+|#x[0-9a-fA-F]+|[a-zA-Z]+);')
Expand Down
5 changes: 5 additions & 0 deletions build/pages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
"The Swiss river network beside the title Water and ice in Switzerland, with counts for river reaches, dams and glacier bodies.": "Das Schweizer Flussnetz neben dem Titel Wasser und Eis in der Schweiz, mit Zahlen zu Gewässerabschnitten, Stauanlagen und Gletscherkörpern.",
"Swiss rivers, live. Reservoirs against 26 years of their own record. Glaciers across five dated inventories. A measured base layer for legal work on climate.": "Schweizer Fliessgewässer, live. Speicherseen gegen 26 Jahre der eigenen Reihe. Gletscher über fünf datierte Inventare. Eine gemessene Grundlage für die juristische Arbeit am Klima.",
"Skip to the layer controls": "Direkt zur Ebenensteuerung",
"Skip to the interactive map": "Direkt zur interaktiven Karte",
"interactive map": "interaktive Karte",
"Rivers read live from the federal gauges. Ice across five surveys. Reservoirs against their own record.": "Flüsse live aus den Messstellen des Bundes gelesen. Eis über fünf Aufnahmen. Speicherseen gegen die eigene Reihe.",
"Loading…": "Wird geladen…",
"What is drawn, by class of evidence": "Was gezeichnet ist, nach Beweisklasse",
Expand Down Expand Up @@ -127,6 +129,9 @@
"<a href=\"#prior\">Prior art</a>": "<a href=\"#prior\">Bestehende Arbeiten</a>",
"<a href=\"#colophon\">Colophon</a>": "<a href=\"#colophon\">Kolophon</a>",
"A measured base layer, and an argument about age": "Eine gemessene Grundlage und ein Argument über das Alter",
"Follow the water. Protect its pathways.": "Dem Wasser folgen. Seine Wege schützen.",
"Riverflow makes Switzerland’s water cycle observable—from mountain precipitation, snow and ice to groundwater, rivers, lakes, wetlands, use and return. The purpose is practical: detect change, test whether essential pathways are protected, and support evidence-led legal action when they are not.": "Riverflow macht den Wasserkreislauf der Schweiz beobachtbar – vom Niederschlag im Gebirge, von Schnee und Eis bis zu Grundwasser, Flüssen, Seen, Feuchtgebieten, Nutzung und Rückführung. Der Zweck ist praktisch: Veränderungen erkennen, den Schutz wesentlicher Wege prüfen und rechtliche Schritte auf Belege stützen, wenn der Schutz versagt.",
"Last revised <b>22.08.2026</b>. Sources and comparisons were checked against their published records.": "Zuletzt überarbeitet am <b>22.08.2026</b>. Quellen und Vergleiche wurden anhand der veröffentlichten Unterlagen geprüft.",
"Switzerland is upstream of four European sea basins, and almost everything published about that water is inference over registers that are years old. The inference is unavoidable. <b>Hiding it is not.</b>": "Die Schweiz liegt oberhalb von vier europäischen Meereseinzugsgebieten, und fast alles, was über dieses Wasser publiziert wird, ist Schluss aus Registern, die Jahre alt sind. Der Schluss ist unvermeidlich. <b>Ihn zu verbergen ist es nicht.</b>",
"Last revised <b>19.08.2026</b>. Prior art checked the same day, by fetching rather than from memory.": "Zuletzt überarbeitet am <b>19.08.2026</b>. Die bestehenden Arbeiten am selben Tag geprüft, durch Abruf und nicht aus dem Gedächtnis.",
"One country, four seas": "Ein Land, vier Meere",
Expand Down
5 changes: 5 additions & 0 deletions build/pages/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
"The Swiss river network beside the title Water and ice in Switzerland, with counts for river reaches, dams and glacier bodies.": "Le réseau hydrographique suisse à côté du titre L’eau et la glace en Suisse, avec le nombre de tronçons, de barrages et de corps glaciaires.",
"Swiss rivers, live. Reservoirs against 26 years of their own record. Glaciers across five dated inventories. A measured base layer for legal work on climate.": "Les cours d’eau suisses, en direct. Les retenues face à 26 ans de leur propre série. Les glaciers à travers cinq inventaires datés. Une base mesurée pour le travail juridique sur le climat.",
"Skip to the layer controls": "Aller aux commandes des couches",
"Skip to the interactive map": "Aller à la carte interactive",
"interactive map": "carte interactive",
"Rivers read live from the federal gauges. Ice across five surveys. Reservoirs against their own record.": "Cours d’eau lus en direct depuis les stations de la Confédération. Glace à travers cinq relevés. Retenues face à leur propre série.",
"Loading&#8230;": "Chargement&#8230;",
"What is drawn, by class of evidence": "Ce qui est dessiné, par classe de preuve",
Expand Down Expand Up @@ -127,6 +129,9 @@
"<a href=\"#prior\">Prior art</a>": "<a href=\"#prior\">État de l’existant</a>",
"<a href=\"#colophon\">Colophon</a>": "<a href=\"#colophon\">Colophon</a>",
"A measured base layer, and an argument about age": "Une base mesurée, et un argument sur l’âge",
"Follow the water. Protect its pathways.": "Suivre l’eau. Protéger ses voies.",
"Riverflow makes Switzerland’s water cycle observable—from mountain precipitation, snow and ice to groundwater, rivers, lakes, wetlands, use and return. The purpose is practical: detect change, test whether essential pathways are protected, and support evidence-led legal action when they are not.": "Riverflow rend observable le cycle de l’eau en Suisse — des précipitations en montagne, de la neige et de la glace jusqu’aux eaux souterraines, aux cours d’eau, aux lacs, aux zones humides, aux usages et aux retours. Le but est concret : détecter les changements, vérifier si les voies essentielles sont protégées et étayer une action en justice lorsqu’elles ne le sont pas.",
"Last revised <b>22.08.2026</b>. Sources and comparisons were checked against their published records.": "Dernière révision le <b>22.08.2026</b>. Les sources et les comparaisons ont été vérifiées à partir des documents publiés.",
"Switzerland is upstream of four European sea basins, and almost everything published about that water is inference over registers that are years old. The inference is unavoidable. <b>Hiding it is not.</b>": "La Suisse se trouve en amont de quatre bassins maritimes européens, et presque tout ce qui se publie sur cette eau est une inférence tirée de registres vieux de plusieurs années. L’inférence est inévitable. <b>La cacher ne l’est pas.</b>",
"Last revised <b>19.08.2026</b>. Prior art checked the same day, by fetching rather than from memory.": "Dernière révision le <b>19.08.2026</b>. L’état de l’existant a été vérifié le même jour, en consultant les sources et non de mémoire.",
"One country, four seas": "Un pays, quatre mers",
Expand Down
9 changes: 5 additions & 4 deletions build/pages/index.en.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@
<meta name="twitter:card" content="summary_large_image">
<link rel="stylesheet" href="fonts.css?v=20260821">
<link rel="stylesheet" href="tokens.css?v=20260822">
<link rel="stylesheet" href="style.css?v=20260822h">
<link rel="stylesheet" href="style.css?v=20260822i">
<script src="i18n.js?v=20260821"></script>
<script src="i18n-data.js?v=20260821"></script>
<script src="i18n-map.js?v=20260822b"></script>
<script src="i18n-map.js?v=20260822c"></script>
<script src="theme.js?v=20260821"></script>
</head>
<body class="viz-root" data-layer="flow">

<a class="skip" href="#map">Skip to the interactive map</a>
<a class="skip" href="#modes">Skip to the layer controls</a>

<header id="titlebar">
Expand Down Expand Up @@ -85,7 +86,7 @@ <h1 id="workspaceTitle">Water and ice in Switzerland</h1>
</header>

<main id="main">
<canvas id="map" tabindex="0" aria-label="Interactive map of water and ice in Switzerland" aria-describedby="mapHelp"></canvas>
<canvas id="map" tabindex="0" role="application" aria-roledescription="interactive map" aria-keyshortcuts="ArrowUp ArrowDown ArrowLeft ArrowRight Home Enter" aria-label="Interactive map of water and ice in Switzerland" aria-describedby="mapHelp"></canvas>
<canvas id="flow" aria-hidden="true"></canvas>
<p class="srOnly" id="mapHelp"></p>

Expand Down Expand Up @@ -466,6 +467,6 @@ <h2 id="introTitle">Follow the water. Protect its pathways.</h2>
<script src="fmt.js?v=20260822"></script>
<script src="gschg31.js?v=20260821"></script>
<script src="legal-alerts.js?v=20260822"></script>
<script src="app.js?v=20260822h"></script>
<script src="app.js?v=20260822i"></script>
</body>
</html>
5 changes: 5 additions & 0 deletions build/pages/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
"The Swiss river network beside the title Water and ice in Switzerland, with counts for river reaches, dams and glacier bodies.": "La rete idrografica svizzera accanto al titolo Acqua e ghiaccio in Svizzera, con il numero di tratti, dighe e corpi glaciali.",
"Swiss rivers, live. Reservoirs against 26 years of their own record. Glaciers across five dated inventories. A measured base layer for legal work on climate.": "I corsi d’acqua svizzeri, in diretta. I bacini di accumulazione contro 26 anni della propria serie. I ghiacciai attraverso cinque inventari datati. Una base misurata per il lavoro giuridico sul clima.",
"Skip to the layer controls": "Vai ai comandi dei livelli",
"Skip to the interactive map": "Vai alla carta interattiva",
"interactive map": "carta interattiva",
"Rivers read live from the federal gauges. Ice across five surveys. Reservoirs against their own record.": "Corsi d’acqua letti in diretta dalle stazioni della Confederazione. Ghiaccio attraverso cinque rilievi. Bacini di accumulazione contro la propria serie.",
"Loading&#8230;": "Caricamento&#8230;",
"What is drawn, by class of evidence": "Che cosa è disegnato, per classe di prova",
Expand Down Expand Up @@ -127,6 +129,9 @@
"<a href=\"#prior\">Prior art</a>": "<a href=\"#prior\">Quel che esiste già</a>",
"<a href=\"#colophon\">Colophon</a>": "<a href=\"#colophon\">Colophon</a>",
"A measured base layer, and an argument about age": "Una base misurata, e un argomento sull’età",
"Follow the water. Protect its pathways.": "Seguire l’acqua. Proteggere i suoi percorsi.",
"Riverflow makes Switzerland’s water cycle observable—from mountain precipitation, snow and ice to groundwater, rivers, lakes, wetlands, use and return. The purpose is practical: detect change, test whether essential pathways are protected, and support evidence-led legal action when they are not.": "Riverflow rende osservabile il ciclo dell’acqua in Svizzera: dalle precipitazioni in montagna, dalla neve e dal ghiaccio fino alle acque sotterranee, ai fiumi, ai laghi, alle zone umide, agli usi e alle restituzioni. Lo scopo è concreto: rilevare i cambiamenti, verificare se i percorsi essenziali sono protetti e sostenere azioni legali basate su prove quando non lo sono.",
"Last revised <b>22.08.2026</b>. Sources and comparisons were checked against their published records.": "Ultima revisione il <b>22.08.2026</b>. Fonti e confronti sono stati verificati sui documenti pubblicati.",
"Switzerland is upstream of four European sea basins, and almost everything published about that water is inference over registers that are years old. The inference is unavoidable. <b>Hiding it is not.</b>": "La Svizzera sta a monte di quattro bacini marittimi europei, e quasi tutto ciò che si pubblica su quest’acqua è inferenza su registri vecchi di anni. L’inferenza è inevitabile. <b>Nasconderla non lo è.</b>",
"Last revised <b>19.08.2026</b>. Prior art checked the same day, by fetching rather than from memory.": "Ultima revisione il <b>19.08.2026</b>. Quel che esiste già è stato verificato lo stesso giorno, consultando le fonti e non a memoria.",
"One country, four seas": "Un Paese, quattro mari",
Expand Down
5 changes: 5 additions & 0 deletions build/pages/rm.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
"The Swiss river network beside the title Water and ice in Switzerland, with counts for river reaches, dams and glacier bodies.": "La rait da flums svizra sper il titel Aua e glatsch en Svizra, cun las cifras da las partidas da flum, las serras ed ils corps da glatscher.",
"Swiss rivers, live. Reservoirs against 26 years of their own record. Glaciers across five dated inventories. A measured base layer for legal work on climate.": "Ils flums svizzers, en direct. Ils lais da serra cunter ventgasis onns da lur atgna seria. Ils glatschers sur tschintg inventaris datads. Ina basa mesirada per la lavur giuridica davart il clima.",
"Skip to the layer controls": "Directamain als reglers dals nivels",
"Skip to the interactive map": "Directamain a la charta interactiva",
"interactive map": "charta interactiva",
"Rivers read live from the federal gauges. Ice across five surveys. Reservoirs against their own record.": "Flums legids en direct ord las staziuns da la Confederaziun. Glatsch sur tschintg relevaziuns. Lais da serra cunter lur atgna seria.",
"Loading&#8230;": "Vegn chargià&#8230;",
"What is drawn, by class of evidence": "Quai ch’è dissegnà, tenor classa da cumprova",
Expand Down Expand Up @@ -127,6 +129,9 @@
"<a href=\"#prior\">Prior art</a>": "<a href=\"#prior\">Quai ch’exista gia</a>",
"<a href=\"#colophon\">Colophon</a>": "<a href=\"#colophon\">Colophon</a>",
"A measured base layer, and an argument about age": "Ina basa mesirada, ed in argument davart la vegliadetgna",
"Follow the water. Protect its pathways.": "Suandar l’aua. Proteger ses percurs.",
"Riverflow makes Switzerland’s water cycle observable—from mountain precipitation, snow and ice to groundwater, rivers, lakes, wetlands, use and return. The purpose is practical: detect change, test whether essential pathways are protected, and support evidence-led legal action when they are not.": "Riverflow renda observabel il ciclus da l’aua en Svizra – da la precipitaziun en muntogna, da la naiv e dal glatsch fin a l’aua sutterrana, ils flums, ils lais, las zonas umidas, il diever e la restituziun. La finamira è pratica: percorscher midadas, controllar sche ils percurs essenzials èn protegids e sustegnair pass giuridics basads sin cumprovas, sch’els n’èn betg protegids.",
"Last revised <b>22.08.2026</b>. Sources and comparisons were checked against their published records.": "Ultima revisiun ils <b>22.08.2026</b>. Las funtaunas e las cumparegliaziuns èn vegnidas controlladas tenor ils documents publitgads.",
"Switzerland is upstream of four European sea basins, and almost everything published about that water is inference over registers that are years old. The inference is unavoidable. <b>Hiding it is not.</b>": "La Svizra sa chatta survart quatter bacins da mar europeics, e quasi tut quai che vegn publitgà davart questa aua è ina conclusiun tratga ord registers vegls dad onns. La conclusiun n’è betg evitabla. <b>La zuppentar è.</b>",
"Last revised <b>19.08.2026</b>. Prior art checked the same day, by fetching rather than from memory.": "Ultima revisiun ils <b>19.08.2026</b>. Quai ch’exista gia è vegnì controllà il medem di, cun consultar las funtaunas e betg ord memoria.",
"One country, four seas": "In pajais, quatter mars",
Expand Down
Loading