[{"bfs_id":4001,"name":"Aarau","canton":"AG","status":"configured","website":"https://www.aarau.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.aarau.ch/politik-verwaltung/politik/einwohnerrat/sitzungen-2025.html/2532","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4002,"name":"Biberstein","canton":"AG","status":"not_examined","website":"https://www.biberstein.ch","vendor":"govis","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)\n\n2026-09-26 coverage review: Verified current official municipal website after an obsolete registered address; identity, document listings and PDF response bytes checked. Mixed regulations, budgets, accounts and assembly files; reviewed scopes follow archive/detail links without title filters.","publications":[]},{"bfs_id":4003,"name":"Buchs","canton":"AG","status":"configured","website":"https://www.buchs-aargau.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Einwohnerrat; anchor text is the session date; file names compact yyyymmdd","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.buchs-aargau.ch/politik/einwohnerrat/protokolle.html/177","from":"2012-06-26","to":"2026-01-20","cadence":null,"obstacle":null,"how":"html_links, 1 hop, flat list"}]},{"bfs_id":4004,"name":"Densbüren","canton":"AG","status":"not_examined","website":"http://www.densbueren.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 21 sessions since 2017 (Gemeindeversammlung, Gemeindeversammlung abgesagt, Sommer-Gemeindeversammlung, Winter-Gemeindeversammlung 2017, a.o. Gem); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4005,"name":"Erlinsbach","canton":"AG","status":"not_published","website":"https://www.erlinsbach-ag.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"website corrected by report: batch website erlinsbach.ch is a joint portal of Erlinsbach AG and SO; wave 2: the commune site www.erlinsbach-ag.ch is GOViS with a server-rendered menu; no minutes page","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.erlinsbach-ag.ch/services/sitemap.html/26","from":null,"to":null,"cadence":null,"obstacle":"GOViS site with a server-rendered menu (the first examination's 'script-rendered' guess was wrong); the sitemap (45 links) has a Politik section but no Gemeindeversammlung, Protokoll or Publikationen page","how":null}]},{"bfs_id":4006,"name":"Gränichen","canton":"AG","status":"not_published","website":"http://www.graenichen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.graenichen.ch/de/politik-verwaltung/politik/gemeindeversammlungen/","from":null,"to":null,"cadence":null,"obstacle":"the assembly page holds one Rechenschaftsbericht and no protocol; no other protocol link on the homepage; only these two pages were checked","how":"ask commune"}]},{"bfs_id":4007,"name":"Hirschthal","canton":"AG","status":"not_examined","website":"http://www.hirschthal.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.hirschthal.ch/politik/gemeindeversammlung.html/25)","publications":[]},{"bfs_id":4008,"name":"Küttigen","canton":"AG","status":"not_published","website":"https://www.kuettigen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.kuettigen.ch/politik/gemeindeversammlung.html/299","from":null,"to":null,"cadence":null,"obstacle":"page shows the last assemblies with Botschaft, budget and plans; 'Protokoll' appears as a heading without a link","how":"ask commune"}]},{"bfs_id":4009,"name":"Muhen","canton":"AG","status":"configured","website":"https://www.muhen.ch","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.muhen.ch/politik-verwaltung/politik/gemeindeversammlung.html/292","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4010,"name":"Oberentfelden","canton":"AG","status":"configured","website":"https://www.oberentfelden.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Protokoll of the previous assembly attached to the next one; 195.48.58.86 Drupal product; disagreement: report table describes one page with sections, the report's vendor observations list Oberentfelden under the two-hop per-assembly-node template","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.oberentfelden.ch/politik-und-verwaltung/gemeindeversammlung","from":"2023-11-23","to":"2025-11-13","cadence":null,"obstacle":null,"how":"html_links, one section per assembly on the GV page, text_regex excludes Ortsbuergergemeinde"}]},{"bfs_id":4012,"name":"Suhr","canton":"AG","status":"candidate","website":"http://www.suhr.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.suhr.ch/sitzung","from":"2009","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 65 sessions since 2009; minutes attached to the session pages as 'T 01 Protokoll Einwohnergemeindeversammlung 20. November 2025'"}]},{"bfs_id":4013,"name":"Unterentfelden","canton":"AG","status":"not_published","website":"https://www.unterentfelden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.unterentfelden.ch/politik/gemeindeversammlung.html/23","from":null,"to":null,"cadence":null,"obstacle":"Botschaft, Rechenschaftsbericht, Rechnung for the latest assemblies; no protocol","how":"ask commune"}]},{"bfs_id":4021,"name":"Baden","canton":"AG","status":"blocked_robots","website":"https://www.baden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Einwohnerrat; listing works (CMI meeting table mod-cmi-meeting__tbl, year selectable by GET parameter, range 2018-2026); 50 found, 12 dated; half of the Protokoll anchors read only 'Protokoll', date in the row's first cell. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.baden.ch/de/home/politik-verwaltung/behoerden-und-politik/einwohnerrat/sitzungen.html/2415?sitzungSearchParams.year={2018..2026}","from":"2024-09-10","to":"2026-06-11","cadence":null,"obstacle":"PDFs served under /route/cmibaden-dokument-getDokument/, robots.txt disallows /route/","how":"ask commune or vendor to allow /route/ (CMI documents); row-cell date feature for the 'Protokoll' anchors"}]},{"bfs_id":4022,"name":"Bellikon","canton":"AG","status":"blocked_robots","website":"https://www.bellikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"newer GOViS variant; docs/VENDOR-PATTERNS.md only","publications":[{"body":"assembly","kind":"minutes","status":"blocked_robots","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"<main> holds only the h1; the content is fetched by XHR from /route/core-hp/page/39 and robots.txt says Disallow: /route/ (JS plus robots)","how":"ask the vendor (backslash.ch) whether the /route/ disallow is intentional and whether a document endpoint exists"}]},{"bfs_id":4023,"name":"Bergdietikon","canton":"AG","status":"candidate","website":"https://www.bergdietikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bergdietikon.ch/politik/gemeindeversammlung/vergangene-gemeindeversammlungen.html/190","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4024,"name":"Birmenstorf","canton":"AG","status":"configured","website":"http://www.birmenstorf.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.birmenstorf.ch/aktuelles/amtliche-publikationen/gemeindeversammlungen/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4026,"name":"Ennetbaden","canton":"AG","status":"not_published","website":"https://www.ennetbaden.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.ennetbaden.ch/politik/gemeindeversammlung/protokolle/","from":null,"to":null,"cadence":null,"obstacle":"both the Protokolle and the Publikation GV-Beschluesse pages contain an empty TYPO3 uploads element (<div id='c3157' class='ce ce-type-uploads'></div>), no files","how":"ask commune"}]},{"bfs_id":4027,"name":"Fislisbach","canton":"AG","status":"configured","website":"https://www.fislisbach.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.fislisbach.ch/politik/gemeindeversammlung/beschluesse-der-einwohner-und-ortsbuergergemeindeversammlungen/","from":"2021-11-19","to":"2023-11-17","cadence":null,"obstacle":"partial: short decision notices (Referendumsfrist-Inserate, 14-66 KB), not full minutes; no Protokolle on the site; 4 of 9 undated: title and date ('Gemeindeversammlung 2024 vom 15. November') sit in a sibling span, anchor text is 'Herunterladen', year-before-day-month form not parsed; probe hit; also in docs/VENDOR-PATTERNS.md (9 found, 5 dated, names inconsistent, marked partial); report status ok, register partial (44 percent undated)","how":"html_links, 1 hop, ce-type-uploads list; title/date from the sibling span would date the rest"}]},{"bfs_id":4028,"name":"Freienwil","canton":"AG","status":"configured","website":"https://www.freienwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.freienwil.ch/politik/gemeindeversammlung/gemeindeversammlung-archiv/25062026-einwohnergemeinde.html/338","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4029,"name":"Gebenstorf","canton":"AG","status":"configured","website":"http://www.gebenstorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.gebenstorf.ch/de/politik-verwaltung/politik/gemeindeversammlung/beschluesse.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4030,"name":"Killwangen","canton":"AG","status":"configured","website":"https://www.killwangen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"each session page has the Protokoll plus brochure and accounts; the Ortsbuerger list has 4 PDFs, one without a year in the file name; probe hit was the Ortsbuerger list; also in docs/VENDOR-PATTERNS.md (Ortsbuerger list: 4 found, 3 dated); disagreement: the vendor doc found no Protokolle entry for the Einwohnergemeinde (analogous slug 404), the typo3 report later found the per-session Einwohnergemeinde pages","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.killwangen.ch/politik/gemeindeversammlung/einwohnergemeindeversammlung/","from":"2022-06-10","to":"2025-11-26","cadence":null,"obstacle":null,"how":"html_links, 2 sources: Einwohnergemeindeversammlung 2 hops (one page per session since June 2023, anchor text is the date -> Protokoll PDF filtered by url_regex protokoll) plus Ortsbuergergemeindeversammlung Protokolle list 1 hop"},{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.killwangen.ch/politik/gemeindeversammlung/ortsbuergergemeindeversammlung/protokolle/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4031,"name":"Künten","canton":"AG","status":"blocked_js","website":"http://www.kuenten.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4032,"name":"Mägenwil","canton":"AG","status":"configured","website":"https://www.maegenwil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.maegenwil.ch/politik/einwohnergemeinde-versammlungen/beschluesse-1","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4033,"name":"Mellingen","canton":"AG","status":"configured","website":"https://www.mellingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.mellingen.ch/politik/gemeindeversammlungen.html/158","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4034,"name":"Neuenhof","canton":"AG","status":"configured","website":"http://www.neuenhof.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"anchor text is 'Herunterladen', title in a sibling span; the probe_hit page (Beschluesse) stops in 2023, the Protokolle page has the full minutes; Aargau TYPO3 agency template (/fileadmin/00_website/PDF-Liste/)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.neuenhof.ch/politik/gemeindeversammlungen/einwohnergemeindeversammlung/protokolle/","from":"2011-06-27","to":"2025-11-24","cadence":null,"obstacle":null,"how":"html_links, 1 hop, ce-type-uploads list, date from file name"}]},{"bfs_id":4035,"name":"Niederrohrdorf","canton":"AG","status":"configured","website":"https://www.niederrohrdorf.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Einwohnergemeindeversammlung only; Ortsbuergergemeinde protocols and pre-meeting Broschueren excluded","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.niederrohrdorf.ch/de/politik-und-verwaltung/politik/gemeindeversammlung.php","from":"2023-06-20","to":"2025-11-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4037,"name":"Oberrohrdorf","canton":"AG","status":"configured","website":"https://www.oberrohrdorf.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"anchor text 'Herunterladen'; protocol file names use dd-mm-yyyy with hyphens, which the built-in parser does not read","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.oberrohrdorf.ch/politik/einwohnergemeindeversammlung/","from":"2021-06-01","to":"2025-12-10","cadence":null,"obstacle":null,"how":"html_links, 2 listing_urls (Einwohner- and Ortsbuergergemeindeversammlung pages), ce-type-uploads lists, date_regex dd-mm-yyyy"}]},{"bfs_id":4038,"name":"Obersiggenthal","canton":"AG","status":"configured","website":"https://www.obersiggenthal.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Einwohnerrat; the protocol of a session is filed as an agenda item of the next session (Sitzung_06.03.2025/05_Einwohnerratsprotokoll_vom_05.12.2024.pdf); year pages 2010-2014 and 2017-2019 carry no protocol files; also in docs/VENDOR-PATTERNS.md: 17 year links, 4 dated on 2026 offline","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.obersiggenthal.ch/politik/einwohnerrat/","from":"2015-10-15","to":"2026-06-11","cadence":null,"obstacle":null,"how":"html_links, 2 hops (year pages 'Sitzungen 2010' to 'Sitzungen 2026', slugs sitzungen-2025-1 etc. -> uploads), date_regex on file name"}]},{"bfs_id":4039,"name":"Remetschwil","canton":"AG","status":"configured","website":"https://www.remetschwil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.remetschwil.ch/verwaltung/gemeindeversammlung/protokolle/","from":"2013-02-19","to":"2024-06-24","cadence":null,"obstacle":"partial: protocols of Einwohner- and Ortsbuergergemeindeversammlung back to 2013; 36 of 52 undated because file names carry only a month or nothing (Protokoll241114.pdf), the title with the date sits in the sibling span; probe hit; report status ok, register partial (69 percent undated)","how":"html_links, 1 hop, ce-type-uploads list; title/date from the sibling span would date the rest"}]},{"bfs_id":4040,"name":"Spreitenbach","canton":"AG","status":"configured","website":"https://www.spreitenbach.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.spreitenbach.ch/politik/ewgv/protokolle/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4041,"name":"Stetten","canton":"AG","status":"blocked_js","website":"http://www.stetten-ag.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"vendor corrected: custom CMS, not Drupal; the 809 KB page carries only the site navigation and a 'Laden Website...' placeholder\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"blocked_js","listing_url":"https://stetten-ag.ch/Gemeindeversammlung/39","from":null,"to":null,"cadence":null,"obstacle":"content rendered client-side (jQuery ajax); no XHR endpoint identified in the page source","how":"browser inspection to find the XHR endpoint"}]},{"bfs_id":4044,"name":"Untersiggenthal","canton":"AG","status":"configured","website":"https://www.untersiggenthal.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.untersiggenthal.ch/de/politik-verwaltung/gemeindeversammlung/beschluesse/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4045,"name":"Wettingen","canton":"AG","status":"configured","website":"https://www.wettingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.wettingen.ch/polprotokolle/2415010","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4045.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4046,"name":"Wohlenschwil","canton":"AG","status":"configured","website":"https://www.wohlenschwil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; TYPO3 core uploads element; file name carries the date (protokoll_EWG_19.11.2025__geschwaerzt_fuer_web.pdf); 4 found 4 dated; Aargau agency template; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.wohlenschwil.ch/politik/gemeindeversammlung/protokolle/","from":"2024","to":"2025","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4047,"name":"Würenlingen","canton":"AG","status":"configured","website":"https://www.wuerenlingen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.wuerenlingen.ch/politik/gemeindeversammlung/","from":"2024-11-14","to":"2025-11-13","cadence":null,"obstacle":"partial: assembly decision publications, no full minutes; 23 of 28 files undated: file names carry no date or a yymmdd prefix, the date is only in the session page's anchor text; report status ok, register partial (82 percent undated)","how":"html_links, 2 hops (one page per assembly since 2016 in the sub-navigation, anchor text is the date -> 'Publikation Beschluesse EWGV/OBGV'); parent-hop date inheritance would date the rest"}]},{"bfs_id":4048,"name":"Würenlos","canton":"AG","status":"configured","website":"http://www.wuerenlos.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.wuerenlos.ch/politik/gemeindeversammlung/einwohnergemeindeversammlung/beschluesse/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":4049,"name":"Ehrendingen","canton":"AG","status":"configured","website":"http://www.ehrendingen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Beschluesse EWGV/OBGV (about 100 KB each); full minutes are only laid out during the Aktenauflage per the Protokolle page; probe hit","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.ehrendingen.ch/politik/gemeindeversammlung/beschluesse/","from":"2015-06-15","to":"2025-11-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop, ce-type-uploads list, date in file name"}]},{"bfs_id":4061,"name":"Arni","canton":"AG","status":"not_examined","website":"http://www.arni-ag.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.arni-ag.ch/politik/gemeindeversammlung.html/333)","publications":[]},{"bfs_id":4062,"name":"Berikon","canton":"AG","status":"candidate","website":"https://www.berikon.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.berikon.ch/sitzung","from":"2024","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 8 sessions since 2024; decisions attached to the session pages as 'Gemeindeversammlungsbeschlüsse'"}]},{"bfs_id":4063,"name":"Bremgarten","canton":"AG","status":"not_examined","website":"https://www.bremgarten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 48 sessions since 2015 (Abgesagt: Einwohnergemeindeversammlung Rechnung, Abgesagt: Ortsbürgergemeindeversammlung Rechnung, Einwohnergemeindevers); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4064,"name":"Büttikon","canton":"AG","status":"not_published","website":"https://www.buettikon.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"195.48.58.86 template; wave 2: invitation brochures (agenda), accounts and budgets only, no Protokoll","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.buettikon.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"the Downloads block holds 'Broschuere Einwohnergemeindeversammlung vom 09.06.2026' (invitation brochures, agenda material), accounts and budgets, no Protokoll","how":null}]},{"bfs_id":4065,"name":"Dottikon","canton":"AG","status":"not_published","website":"https://www.dottikon.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.dottikon.ch/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"per-assembly pages carry the Einladungsbroschuere; the protocol is offered on request by e-mail ('Bestellung EWGV Protokoll')","how":"ask commune (protocol offered by e-mail on request)"}]},{"bfs_id":4066,"name":"Eggenwil","canton":"AG","status":"configured","website":"https://www.eggenwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.eggenwil.ch/politik/gemeindeversammlung.html/40#einladung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4067,"name":"Fischbach-Göslikon","canton":"AG","status":"candidate","website":"http://www.fischbach-goeslikon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fischbach-goeslikon.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 46 files match, newest 2026-06-14, e.g. 'Protokoll der kant. Abstimmung, 14.06.2026'; body guessed from the URL"}]},{"bfs_id":4068,"name":"Hägglingen","canton":"AG","status":"candidate","website":"https://www.haegglingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.haegglingen.ch/sitzung","from":"2022","to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 14 sessions since 2022; decisions attached to the session pages as 'Publikation GV Beschlüsse OBG'"}]},{"bfs_id":4071,"name":"Jonen","canton":"AG","status":"not_published","website":"https://www.jonen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template; the news archive has an election protocol only","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.jonen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"GV page carries invitation brochures (Botschaften) only","how":"ask commune"}]},{"bfs_id":4072,"name":"Niederwil","canton":"AG","status":"configured","website":"https://www.niederwil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"each node holds one Beschluesse PDF (decision record, not a full protocol); pagination of the archive not checked; validated with 3 nodes","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.niederwil.ch/information/archiv","from":"2024-11-25","to":"2025-06-24","cadence":null,"obstacle":null,"how":"html_links, 2 hops (news archive -> 'Beschluesse der Einwohnergemeindeversammlung vom ...' node), max_follow 80"}]},{"bfs_id":4073,"name":"Oberlunkhofen","canton":"AG","status":"not_examined","website":"https://www.oberlunkhofen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.oberlunkhofen.ch/politik/einwohnergemeindeversammlung.html/702)","publications":[]},{"bfs_id":4074,"name":"Oberwil-Lieli","canton":"AG","status":"not_published","website":"https://www.oberwil-lieli.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 Drupal product; register guess: document_kind agenda_only for Rechenschaftsbericht plus annual publication PDFs","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.oberwil-lieli.ch/politik/gemeindeversammlung/einwohnergemeinde","from":null,"to":null,"cadence":null,"obstacle":"GV page has the Rechenschaftsbericht only; archive has annual 'Jahresdokument Amtliche Veroeffentlichungen' PDFs, no protocols","how":"ask commune"}]},{"bfs_id":4075,"name":"Rudolfstetten-Friedlisberg","canton":"AG","status":"candidate","website":"http://www.rudolfstetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rudolfstetten.ch/sitzung","from":"2013","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 55 sessions since 2013; minutes attached to the session pages as '1_Protokoll Ortsbürgergemeindeversammlung 10. November 2025'"}]},{"bfs_id":4076,"name":"Sarmenstorf","canton":"AG","status":"not_examined","website":"https://www.sarmenstorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 15 sessions since 2023 (Ausserordentliche Einwohnergemeindeversammlung, Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4077,"name":"Tägerig","canton":"AG","status":"not_examined","website":"http://www.taegerig.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2021 (Einwohner-Gemeindeversammlung, Ortsbürger-Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4078,"name":"Uezwil","canton":"AG","status":"not_examined","website":"https://www.uezwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2023 (Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4079,"name":"Unterlunkhofen","canton":"AG","status":"blocked_js","website":"https://www.unterlunkhofen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4080,"name":"Villmergen","canton":"AG","status":"not_examined","website":"https://www.villmergen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4081,"name":"Widen","canton":"AG","status":"candidate","website":"https://www.widen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered; 2026-09-13 bounded archive review: 48 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.widen.ch/politik/gemeindeversammlung/einwohnerversammlung-20062024.html/381","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4082,"name":"Wohlen","canton":"AG","status":"upstream_only","website":"https://www.wohlen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4082.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4083,"name":"Zufikon","canton":"AG","status":"not_published","website":"http://www.zufikon.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://zufikon.ch/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"only Einladungsbroschuere, Rechenschaftsbericht and Jahresrechnung; Publikationen has no Protokoll","how":"ask commune"}]},{"bfs_id":4084,"name":"Islisberg","canton":"AG","status":"not_examined","website":"http://www.islisberg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.islisberg.ch/politik/gemeindeversammlung)","publications":[]},{"bfs_id":4091,"name":"Auenstein","canton":"AG","status":"not_examined","website":"http://www.auenstein.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.auenstein.ch/politik-verwaltung/politik/gemeindeversammlung.html/22)\n\n2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[]},{"bfs_id":4092,"name":"Birr","canton":"AG","status":"not_published","website":"http://www.birr.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"register guess: document_kind agenda_only because the only PDFs are Rechenschaftsbericht and Rechnung; the Beschluesse exist as HTML text for the latest assembly only","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.birr.ch/politik/gemeindeversammlung/einwohner-und-ortsbuergergemeindeshyversammlungen.html/40","from":null,"to":null,"cadence":null,"obstacle":"Beschluesse of the latest assembly are HTML text on the page; PDFs are Rechenschaftsbericht and Rechnung; no archive","how":"ask commune"}]},{"bfs_id":4093,"name":"Birrhard","canton":"AG","status":"candidate","website":"http://www.birrhard.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: protocol_page_no_pdfs Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.birrhard.ch/rechtskraft-gemeindeversammlungsbeschluesse-2","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page '03 Rechtskraft Gemeindeversammlungsbesch' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":4095,"name":"Brugg","canton":"AG","status":"configured","website":"https://www.brugg.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.brugg.ch/politik-und-verwaltung/einwohnerrat/sitzungen.html/274","from":"2025-10-17","to":"2026-05-29","cadence":null,"obstacle":"partial: Einwohnerrat; entry takes 'Beschluesse der Einwohnerratssitzung' (decision lists); 6 found, 3 dated, follow capped at 6; 2026 files name only the month so half are undated; full Protokolle exist in the same folders but are named 'Protokoll ER-Sitzung September 2025' (no day) and stay undated; website corrected: batch says stadt-brugg.ch, report used brugg.ch; two sample PDFs downloaded; report status ok, register partial (half undated, full minutes not configured)","how":"html_links, 3 hops document tree ('Ebene 1: <year>' 2016-2026 -> 'Ebene 2: dd.mm.yyyy' -> PDF), max_follow 80; parent-hop date inheritance would date the rest"}]},{"bfs_id":4099,"name":"Habsburg","canton":"AG","status":"blocked_js","website":"http://www.habsburg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4100,"name":"Hausen","canton":"AG","status":"candidate","website":"https://www.hausen.swiss","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hausen.swiss/sitzung","from":"2025","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 5 sessions since 2025; minutes attached to the session pages as '01_Protokoll der Einwohnergemeindeversammlung vom 20. November 2025'"}]},{"bfs_id":4104,"name":"Lupfig","canton":"AG","status":"blocked_js","website":"https://www.lupfig.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4105,"name":"Mandach","canton":"AG","status":"candidate","website":"https://www.mandach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mandach.ch/sitzung","from":"2018","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 21 sessions since 2018; minutes attached to the session pages as 'Einwohnergemeindeversammlung 28. November 2025 - Protokoll'"}]},{"bfs_id":4106,"name":"Mönthal","canton":"AG","status":"not_examined","website":"https://www.moenthal.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.moenthal.ch/politik/gemeindeversammlung)","publications":[]},{"bfs_id":4107,"name":"Mülligen","canton":"AG","status":"not_examined","website":"https://www.muelligen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.muelligen.ch/politik-verwaltung/politik/gemeindeversammlungen.html/40)","publications":[]},{"bfs_id":4110,"name":"Remigen","canton":"AG","status":"configured","website":"https://www.remigen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.remigen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4111,"name":"Riniken","canton":"AG","status":"candidate","website":"https://www.riniken.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.riniken.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-08","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 8 files match, newest 2026-03-08, e.g. 'Protokoll Ersatzwahl Schulrat Bezirk Brugg 8.3.2026'; body guessed from the URL"}]},{"bfs_id":4112,"name":"Rüfenach","canton":"AG","status":"not_examined","website":"http://www.ruefenach.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.ruefenach.ch/politik/gemeindeversammlungen)","publications":[]},{"bfs_id":4117,"name":"Thalheim","canton":"AG","status":"not_examined","website":"https://www.thalheim-ag.ch","vendor":"govis","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)\n\n2026-09-26 coverage review: Verified current official municipal website after an obsolete registered address; identity, document listings and PDF response bytes checked. Mixed regulations, budgets, accounts and assembly files; reviewed scopes follow archive/detail links without title filters.","publications":[]},{"bfs_id":4120,"name":"Veltheim","canton":"AG","status":"not_published","website":"https://www.veltheim.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.veltheim.ch/politik/gemeindeversammlungen","from":null,"to":null,"cadence":null,"obstacle":"GV, Einwohnergemeindeversammlungen and event-archive pages carry no documents","how":"ask commune"}]},{"bfs_id":4121,"name":"Villigen","canton":"AG","status":"not_examined","website":"https://www.villigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.villigen.ch/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4123,"name":"Windisch","canton":"AG","status":"configured","website":"https://www.windisch.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Einwohnerrat; validated with follow capped at 2; Beschluesse tree next to it (.../beschluesse.html/42)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.windisch.ch/politik-verwaltung/politik/einwohnerrat/protokolle.html/43","from":"2025-03-12","to":"2026-06-10","cadence":null,"obstacle":null,"how":"html_links, 2 hops document tree ('ER-Protokolle <year>' 2015-2026 -> PDF named yyyy.mm.dd), max_follow 80"}]},{"bfs_id":4124,"name":"Bözberg","canton":"AG","status":"not_examined","website":"https://www.boezberg.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.boezberg.ch/politik-behoerden/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4125,"name":"Schinznach","canton":"AG","status":"blocked_js","website":"http://www.schinznach.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4131,"name":"Beinwil am See","canton":"AG","status":"blocked_js","website":"http://www.beinwilamsee.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4132,"name":"Birrwil","canton":"AG","status":"blocked_js","website":"https://www.birrwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4134,"name":"Dürrenäsch","canton":"AG","status":"blocked_js","website":"https://www.duerrenaesch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Observed GOViS sections use generic persistent linked discovery without topic filters.","publications":[]},{"bfs_id":4135,"name":"Gontenschwil","canton":"AG","status":"blocked_js","website":"http://www.gontenschwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4136,"name":"Holziken","canton":"AG","status":"not_published","website":"https://www.holziken.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template with /de prefix","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.holziken.ch/de/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"GV page has no document or node links","how":"ask commune"}]},{"bfs_id":4137,"name":"Leimbach","canton":"AG","status":"not_examined","website":"https://www.leimbach.swiss","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4138,"name":"Leutwil","canton":"AG","status":"blocked_js","website":"http://www.leutwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4139,"name":"Menziken","canton":"AG","status":"not_published","website":"https://www.menziken.ch/","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"not_published","listing_url":"https://www.menziken.ch/politik-behoerden/gemeindeversammlung.html/177","from":"2025-11-12","to":"2026-06-16","cadence":null,"obstacle":"only newspaper notices ('Inserat Beschluesse', 'Inserat Rechtskraft') for the last two assemblies; no protocol archive","how":"ask commune for the archive"}]},{"bfs_id":4140,"name":"Oberkulm","canton":"AG","status":"not_examined","website":"http://www.oberkulm.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.oberkulm.ch/politik/gemeindeversammlungen.html/22)","publications":[]},{"bfs_id":4141,"name":"Reinach","canton":"AG","status":"configured","website":"https://www.reinach.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Beschluesse of the Gemeindeversammlung, one PDF per assembly, anchor text is the date; 23 found, 21 after filter; /page/<id> URL variant of GOViS; batch website https://www.reinach.ch/page/1","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.reinach.ch/page/70","from":"2015-06-03","to":"2025-11-11","cadence":null,"obstacle":null,"how":"html_links, 1 hop, text_regex drops Ortsbuergergemeinde"}]},{"bfs_id":4142,"name":"Schlossrued","canton":"AG","status":"candidate","website":"https://www.schlossrued.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schlossrued.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-26","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-26, e.g. 'Botschaft Einwohnergemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":4143,"name":"Schmiedrued","canton":"AG","status":"blocked_js","website":"https://www.schmiedrued.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Observed GOViS sections use generic persistent linked discovery without topic filters. Former registered official website redirects to https://www.schmiedrued.ch; registered website corrected.","publications":[]},{"bfs_id":4144,"name":"Schöftland","canton":"AG","status":"not_examined","website":"https://www.schoeftland.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 52 sessions since 2010 (Einwohnergemeindeversammlung, Einwohnergemeindeversammlung - Open Air, Einwohnergemeindeversammlung - Open Air im Schlos); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4145,"name":"Teufenthal","canton":"AG","status":"not_examined","website":"http://www.teufenthal.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.teufenthal.ch/politik-verwaltung/gemeindeversammlung.html/72)","publications":[]},{"bfs_id":4146,"name":"Unterkulm","canton":"AG","status":"configured","website":"https://www.unterkulm.ch","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. The verified listing is historical (2015); current coverage is not established.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.unterkulm.ch/gemeinde/politik/gemeindeversammlung/archiv-gv/gemeindeversammlung-vom-26112015.html/88","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4147,"name":"Zetzwil","canton":"AG","status":"blocked_js","website":"http://www.zetzwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4161,"name":"Eiken","canton":"AG","status":"not_examined","website":"http://www.eiken.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2020 (Budgetversammlung, Gemeindeversammlung, Gemeindeversammlung vom 27. Juni 2025, Gemeindeversammlung vom 28. Juni 2024, Ge); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4163,"name":"Frick","canton":"AG","status":"candidate","website":"https://www.frick.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.frick.ch/gemeindeversammlung","from":"2017","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 17 sessions since 2017; minutes attached to the session pages as '2024.11.22_Protokoll, Einwohnergemeindeversammlung_locked'"}]},{"bfs_id":4164,"name":"Gansingen","canton":"AG","status":"not_examined","website":"http://www.gansingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2018 (Gemeindeversammlung, Gemeindeversammlung - ABGESAGT); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4165,"name":"Gipf-Oberfrick","canton":"AG","status":"candidate","website":"https://www.gipf-oberfrick.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gipf-oberfrick.ch/sitzung","from":"2019","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 16 sessions since 2019; minutes attached to the session pages as 'Protokoll EWG Gemeindeversammlung vom 28.11.2025'"}]},{"bfs_id":4169,"name":"Kaisten","canton":"AG","status":"candidate","website":"https://www.kaisten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kaisten.ch/sitzung","from":"2022","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 9 sessions since 2022; minutes attached to the session pages as 'Protokoll GV vom 28.11.2025'"}]},{"bfs_id":4170,"name":"Laufenburg","canton":"AG","status":"candidate","website":"https://www.laufenburg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.laufenburg.ch/sitzung","from":"2011","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 62 sessions since 2011; minutes attached to the session pages as '3 Protokoll der Ortsbürgergemeindeversammlung vom 24. November 2026'"}]},{"bfs_id":4172,"name":"Münchwilen","canton":"AG","status":"blocked_js","website":"https://www.muenchwilen-ag.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4173,"name":"Oberhof","canton":"AG","status":"candidate","website":"http://www.oberhof.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberhof.ch/sitzung","from":"2008","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 47 sessions since 2008; minutes attached to the session pages as 'OBG 01 Protokoll Ortsbürgergemeindeversammlung vom 27.11.2025'"}]},{"bfs_id":4175,"name":"Oeschgen","canton":"AG","status":"not_published","website":"https://www.oeschgen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"195.48.58.86 template; wave 2: no files on the assembly page (same Drupal build as Buettikon and Hallwil)","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.oeschgen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"the Gemeindeversammlung page lists the agenda as text ('Protokoll Einwohnergemeindeversammlung vom 21.11.2025' is a Traktandum, not a link) and has no files; /aktuelles/mitteilungen holds vote protocols only","how":null}]},{"bfs_id":4176,"name":"Schwaderloch","canton":"AG","status":"candidate","website":"http://www.schwaderloch.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schwaderloch.ch/sitzung","from":"2024","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 6 sessions since 2024; minutes attached to the session pages as '01_Protokoll GV 28.11.2025'"}]},{"bfs_id":4177,"name":"Sisseln","canton":"AG","status":"not_examined","website":"https://www.sisseln.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 34 sessions since 2016 (Einwohnergemeindeversammlung, Einwohnergemeindeversammlung (Budgetgemeinde), Einwohnergemeindeversammlung (Rechnungsgeme); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4181,"name":"Wittnau","canton":"AG","status":"configured","website":"https://www.wittnau.ch","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.wittnau.ch/politik/gemeindeversammlung.html/172","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4182,"name":"Wölflinswil","canton":"AG","status":"candidate","website":"https://www.woelflinswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.woelflinswil.ch/sitzung","from":"2013","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 31 sessions since 2013; minutes attached to the session pages as '2021.10.15_Gemeindeversammlungsprotokoll_Datenschutz'"}]},{"bfs_id":4183,"name":"Zeihen","canton":"AG","status":"candidate","website":"https://www.zeihen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zeihen.ch/politik/gemeindeversammlung.html/32","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4184,"name":"Mettauertal","canton":"AG","status":"not_examined","website":"https://www.mettauertal.ch","vendor":"typo3","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Verified current official municipal website after an obsolete registered address; identity, document listings and PDF response bytes checked. Mixed regulations, budgets, accounts and assembly files; reviewed scopes follow archive/detail links without title filters.","publications":[]},{"bfs_id":4185,"name":"Böztal","canton":"AG","status":"not_examined","website":"https://www.boeztal.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 4 sessions since 2025 (Einwohner- und Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4186,"name":"Herznach-Ueken","canton":"AG","status":"configured","website":"https://herznach-ueken.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://herznach-ueken.ch/politik-verwaltung/politik/gemeindeversammlung","from":null,"to":"2025-11-30","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4191,"name":"Ammerswil","canton":"AG","status":"not_examined","website":"https://www.ammerswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://ammerswil.ch/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4192,"name":"Boniswil","canton":"AG","status":"blocked_js","website":"https://www.boniswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4193,"name":"Brunegg","canton":"AG","status":"not_examined","website":"https://www.brunegg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.brunegg.ch/politik/gemeindeversammlung)","publications":[]},{"bfs_id":4194,"name":"Dintikon","canton":"AG","status":"not_examined","website":"http://www.dintikon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":4195,"name":"Egliswil","canton":"AG","status":"blocked_js","website":"https://www.egliswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4196,"name":"Fahrwangen","canton":"AG","status":"candidate","website":"http://www.fahrwangen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fahrwangen.ch/sitzung","from":"2019","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2019; minutes attached to the session pages as 'EWG_1_Bestätigungsbericht Protokoll EWGV 18.11.202'"}]},{"bfs_id":4197,"name":"Hallwil","canton":"AG","status":"not_published","website":"https://hallwil.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"195.48.58.86 template; wave 2: no files on the assembly page","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://hallwil.ch/politik-und-verwaltung/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"the page has the dates of the next assemblies and 'Die Unterlagen koennen zu gegebener Zeit hier eingesehen werden'; no files","how":null}]},{"bfs_id":4198,"name":"Hendschiken","canton":"AG","status":"not_examined","website":"https://hendschiken.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://hendschiken.ch/politik/gemeindeversammlungen)\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[]},{"bfs_id":4199,"name":"Holderbank","canton":"AG","status":"not_examined","website":"http://www.holderbank.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4200,"name":"Hunzenschwil","canton":"AG","status":"blocked_js","website":"http://www.hunzenschwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4201,"name":"Lenzburg","canton":"AG","status":"upstream_only","website":"https://www.lenzburg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4201.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4202,"name":"Meisterschwanden","canton":"AG","status":"blocked_js","website":"https://www.meisterschwanden.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4203,"name":"Möriken-Wildegg","canton":"AG","status":"not_published","website":"https://www.moeriken-wildegg.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.moeriken-wildegg.ch/politik/gemeindeversammlung.html/41","from":null,"to":null,"cadence":null,"obstacle":"text only","how":"ask commune"}]},{"bfs_id":4204,"name":"Niederlenz","canton":"AG","status":"not_published","website":"http://www.niederlenz.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.niederlenz.ch/de/poltik-und-verwaltung/Gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"only Aktenauflage and Termine sub-pages, no Protokoll text or PDF","how":"ask commune"}]},{"bfs_id":4205,"name":"Othmarsingen","canton":"AG","status":"not_examined","website":"https://www.othmarsingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 5 sessions since 2025 (Einwohner- und Ortsbürgergemeindeversammlung, Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4206,"name":"Rupperswil","canton":"AG","status":"candidate","website":"https://www.rupperswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rupperswil.ch/sitzung","from":"2024","to":"2026-06-05","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 10 sessions since 2024; minutes attached to the session pages as 'EWG-Trak. 1 - Protokoll Einwohnergemeindeversammlung vom 21.11.2025'"}]},{"bfs_id":4207,"name":"Schafisheim","canton":"AG","status":"not_examined","website":"http://www.schafisheim.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 5 sessions since 2024 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4208,"name":"Seengen","canton":"AG","status":"blocked_js","website":"http://www.seengen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4209,"name":"Seon","canton":"AG","status":"not_published","website":"https://www.seon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Gemeindeversammlung, Protokoll or Publikationen page on the site. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.seon.ch/politik.html/3","from":null,"to":null,"cadence":null,"obstacle":"Politik redirects to Gemeinderat; the subnavigation (Gemeinderat, Parteien, Kommissionen, Legislaturziele, Abstimmungen & Wahlen) and the sitemap (127 links) carry no Gemeindeversammlung, Protokoll or Publikationen page","how":null}]},{"bfs_id":4210,"name":"Staufen","canton":"AG","status":"configured","website":"https://www.staufen.ch/","vendor":"govis","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.staufen.ch/politik/gemeindeversammlung.html/13","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4221,"name":"Abtwil","canton":"AG","status":"not_examined","website":"http://www.abtwilag.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4222,"name":"Aristau","canton":"AG","status":"blocked_js","website":"http://www.aristau.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4223,"name":"Auw","canton":"AG","status":"blocked_js","website":"http://www.auw.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4224,"name":"Beinwil","canton":"AG","status":"not_published","website":"https://www.beinwil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template; docs/VENDOR-PATTERNS.md agrees (/politik/gemeindeversammlung has no documents)","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.beinwil.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"GV page has no document or node links","how":"ask commune"}]},{"bfs_id":4226,"name":"Besenbüren","canton":"AG","status":"not_published","website":"http://www.besenbueren.ch","vendor":"onegov","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"one page per session with the agenda as text, year pages 2019-2026, no files","how":"ask commune"}]},{"bfs_id":4227,"name":"Bettwil","canton":"AG","status":"blocked_js","website":"https://www.bettwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4228,"name":"Boswil","canton":"AG","status":"not_published","website":"http://www.boswil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"older blocks carry invitation brochures and budgets only; 195.48.58.86 Drupal product","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.boswil.ch/politik/gemeindeversammlungen/alle","from":"2025-11-26","to":"2025-11-26","cadence":null,"obstacle":"only the newest Einwohnergemeinde protocol is linked (with the next invitation); no archive, below the three-document threshold","how":"ask commune for the archive"}]},{"bfs_id":4229,"name":"Bünzen","canton":"AG","status":"not_published","website":"http://www.buenzen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.buenzen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"only 'Einladung GV' invitation PDFs under /system/files/invitations-YYYY/","how":"ask commune"}]},{"bfs_id":4230,"name":"Buttwil","canton":"AG","status":"not_examined","website":"http://www.buttwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 18 sessions since 2022 (Einwohner- und Ortsbürgergemeindeversammlung: Besc, Einwohner- und Ortsbürgergemeindeversammlung: Trak); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4231,"name":"Dietwil","canton":"AG","status":"blocked_js","website":"https://www.dietwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4232,"name":"Geltwil","canton":"AG","status":"blocked_js","website":"https://www.geltwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":4233,"name":"Kallern","canton":"AG","status":"candidate","website":"https://www.kallern.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.kallern.ch/gemeinderats-ersatzwahl-2018-2021-protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":4234,"name":"Merenschwand","canton":"AG","status":"blocked_js","website":"https://www.merenschwand.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":4235,"name":"Mühlau","canton":"AG","status":"not_examined","website":"https://www.muehlau.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4236,"name":"Muri","canton":"AG","status":"not_published","website":"https://www.muri.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.muri.ch/politik/gemeindeversammlung.html/291","from":null,"to":null,"cadence":null,"obstacle":"only Botschaften (invitations) 2022-2026 for Einwohner- and Ortsbuergergemeinde; no protocol","how":"ask commune"}]},{"bfs_id":4237,"name":"Oberrüti","canton":"AG","status":"blocked_js","website":"https://www.oberrueti.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4238,"name":"Rottenschwil","canton":"AG","status":"candidate","website":"https://rottenschwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Reviewed official assembly, online-counter, school and publication libraries with five representative PDF byte checks, including an older archive file. Existing generic file query handling preserves the actual download URL. No document-title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://rottenschwil.ch/news/aktuelle-mitteilungen/beschluesse-der-abgeordnetenversammlung-des-gbz-freiamt-gemeindeverband-bevoelkerungsschutz-und-zivilschutz-vom-23-juni-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":4239,"name":"Sins","canton":"AG","status":"not_examined","website":"https://www.sins.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.sins.ch/politik/gemeindeversammlung.html/56)","publications":[]},{"bfs_id":4240,"name":"Waltenschwil","canton":"AG","status":"blocked_js","website":"http://www.waltenschwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4251,"name":"Hellikon","canton":"AG","status":"not_examined","website":"https://www.hellikon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.hellikon.ch/politik-gemeindeversammlungen, https://www.hellikon.ch/newsdetails/5,2091-ortsburgergemeindeversammlung, https://www.hellikon.ch/newsdetails/5,2090-einwohnergemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4252,"name":"Kaiseraugst","canton":"AG","status":"candidate","website":"https://www.kaiseraugst.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.kaiseraugst.ch/sitzung","from":"2015","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 53 sessions since 2015; decisions attached to the session pages as 'Publikation der Beschlüsse der OBGV'"}]},{"bfs_id":4253,"name":"Magden","canton":"AG","status":"not_examined","website":"https://www.magden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 23 sessions since 2016 (Einwohner- und Ortsbürgergemeindeversammlung, Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung, ausserordentl); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4254,"name":"Möhlin","canton":"AG","status":"configured","website":"https://www.moehlin.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Einwohnergemeindeversammlung; Ortsbuergergemeinde excluded","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.moehlin.ch/de/politik-verwaltung/politik/gemeindeversammlung.php","from":"2021-06-24","to":"2025-11-20","cadence":null,"obstacle":null,"how":"html_links, 2 hops (overview -> assembly page /de/aktuelles/gemeindeversammlung/EWG-2025.06.26.php -> anonymised protocol of the previous assembly), date_regex on '2021.11.26-Protokoll' so the file date wins over the folder date"}]},{"bfs_id":4255,"name":"Mumpf","canton":"AG","status":"not_examined","website":"https://www.mumpf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://mumpf.ch/cms/politik/gemeindeversammlungen)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4256,"name":"Obermumpf","canton":"AG","status":"not_examined","website":"http://www.obermumpf.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.obermumpf.ch/politik/einwohnergemeindeversammlung.html/34, https://www.obermumpf.ch/portrait/veranstaltungen/details.html/104/event/692/eventdate/467, https://www.obermumpf.ch/portrait/veranstaltungen/details.html/104/event/702/eventdate/472)","publications":[]},{"bfs_id":4257,"name":"Olsberg","canton":"AG","status":"not_examined","website":"https://www.olsberg.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.olsberg.ch/politik/gemeindeversammlung)","publications":[]},{"bfs_id":4258,"name":"Rheinfelden","canton":"AG","status":"configured","website":"https://www.rheinfelden.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Einwohnergemeindeversammlung; documents are the published decisions ('Publikation Beschluesse', 2026-06-17-EWG-Beschluesse.pdf); no full minutes on the site; one file is misdated by the commune (2025-10-12 for the 10.12.2025 assembly)","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.rheinfelden.ch/de/stadt/politik/gemeindeversammlung/einwohnergemeindeversammlungen/","from":"2015-12-16","to":"2026-06-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4259,"name":"Schupfart","canton":"AG","status":"not_examined","website":"https://www.schupfart.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.schupfart.ch/cms/h-menupunkt-2/gemeindeversammlungen)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4260,"name":"Stein","canton":"AG","status":"candidate","website":"http://www.gemeinde-stein.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeinde-stein.ch/gemeindeversammlung","from":"2025","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 3 sessions since 2025; minutes attached to the session pages as 'Trakt. 1 - Protokollprüfung Finanzkommission'"}]},{"bfs_id":4261,"name":"Wallbach","canton":"AG","status":"not_examined","website":"https://www.wallbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4262,"name":"Wegenstetten","canton":"AG","status":"candidate","website":"https://www.wegenstetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wegenstetten.ch/sitzung","from":"2021","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 10 sessions since 2021; minutes attached to the session pages as 'Protokoll OBGV 19.11.2025 zh Homepage'"}]},{"bfs_id":4263,"name":"Zeiningen","canton":"AG","status":"candidate","website":"http://www.zeiningen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zeiningen.ch/sitzung","from":"2018","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 27 sessions since 2018; minutes attached to the session pages as '1. 2025-12-04 Protokoll Ortsbürgergemeindeversammlung, anonymisiert'"}]},{"bfs_id":4264,"name":"Zuzgen","canton":"AG","status":"not_examined","website":"http://www.zuzgen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 52 sessions since 2014 (Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4271,"name":"Aarburg","canton":"AG","status":"not_examined","website":"https://www.aarburg.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 28 sessions since 2020 (Einwohner-Gemeindeversammlung, Einwohner-Gemeindeversammlung a.o., Einwohnergemeindeversammlung, Orientierungsversammlun); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4273,"name":"Bottenwil","canton":"AG","status":"candidate","website":"http://www.bottenwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bottenwil.ch/politik/gemeindeversammlung.html/96","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4274,"name":"Brittnau","canton":"AG","status":"not_examined","website":"http://www.brittnau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 21 sessions since 2020 (Einwohnergemeindeversammlung, Einwohnergemeindeversammlung - ABGESAGT, Ortsbürgergemeindeverammlung, Ortsbürgergemeindev); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4275,"name":"Kirchleerau","canton":"AG","status":"blocked_js","website":"http://www.kirchleerau.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4276,"name":"Kölliken","canton":"AG","status":"not_published","website":"http://www.koelliken.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.koelliken.ch/politik/gv1.html/875","from":null,"to":null,"cadence":null,"obstacle":"assembly brochures (invitations) 2023-2026 only","how":"ask commune"}]},{"bfs_id":4277,"name":"Moosleerau","canton":"AG","status":"not_examined","website":"http://www.moosleerau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4279,"name":"Murgenthal","canton":"AG","status":"candidate","website":"http://www.murgenthal.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.murgenthal.ch/politik/gemeindeversammlung.html/36","from":null,"to":"2021-11-26","cadence":null,"obstacle":null,"how":"probe: 37 dated PDF links on the page, newest 2021-11-26, e.g. 'Beschlüsse'; body guessed from the URL"}]},{"bfs_id":4280,"name":"Oftringen","canton":"AG","status":"blocked_robots","website":"http://www.oftringen.ch","vendor":"alogis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Einwohnergemeindeversammlung; the 'Protokolle' accordion has about 100 rows back to 26.02.1998 (documents_discovered is that hand count, no dry run possible); wave 2: the onclick-row listing is supported now, downloads blocked by robots.txt\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[{"body":"assembly","kind":"minutes","status":"blocked_robots","listing_url":"https://www.oftringen.ch/einwohnergemeindeversammlung","from":"1998-02-26","to":"2026-03-26","cadence":null,"obstacle":"robots.txt has 'Disallow: /pages/' for every agent and the documents are /pages/rpc/media_sav.cfm?medId=N (only /pages/*.css* and /pages/*.js* are allowed); the crawler refuses them (error kind robots); the listing page itself is allowed","how":"the onclick rows are read: selector div.cms_download:has(> div.cms_download_title:-soup-contains('Protokolle')) tr[onclick], 106 dated rows in the Protokolle accordion (the Vorlagenbuechlein accordion, 107 rows, is excluded by the selector); entry kept in the wave-2 working configuration only"}]},{"bfs_id":4281,"name":"Reitnau","canton":"AG","status":"candidate","website":"https://www.reitnau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.reitnau.ch/de/politik-verwaltung/politik/gemeindeversammlung.php","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-01, e.g. 'Publikation der Beschlüsse der Gemeindeversammlung vom 01.06'; body guessed from the URL"}]},{"bfs_id":4282,"name":"Rothrist","canton":"AG","status":"not_examined","website":"https://www.rothrist.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 6 sessions since 2025 (Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4283,"name":"Safenwil","canton":"AG","status":"not_examined","website":"https://www.safenwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 9 sessions since 2022 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4284,"name":"Staffelbach","canton":"AG","status":"not_examined","website":"https://www.staffelbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://staffelbach.ch/index.php/5/Politik/Gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4285,"name":"Strengelbach","canton":"AG","status":"configured","website":"https://www.strengelbach.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"two duplicate links for 25.06.2025 (different URLs, same file)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.strengelbach.ch/de/politik-und-verwaltung/politik/gemeindeversammlung.php","from":"2017-06-21","to":"2025-11-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4286,"name":"Uerkheim","canton":"AG","status":"candidate","website":"https://www.uerkheim.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.uerkheim.ch/index.cfm?tem=2&spr=0&hpn=1&sbn=5","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 25 dated PDF links on the page, newest 2026-06-12, e.g. '- Kurzprotokoll der Gemeindeversammlung vom 12.06.2026 (gene'; body guessed from the URL"}]},{"bfs_id":4287,"name":"Vordemwald","canton":"AG","status":"not_examined","website":"https://www.vordemwald.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 24 sessions since 2021 (Einwohnergemeindeversammlung, Ortsbürgergemeindeversammlung, a.o. Einwohnergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4288,"name":"Wiliberg","canton":"AG","status":"blocked_js","website":"http://www.wiliberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4289,"name":"Zofingen","canton":"AG","status":"upstream_only","website":"https://www.zofingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4289.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4303,"name":"Böttstein","canton":"AG","status":"not_published","website":"https://www.boettstein.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.boettstein.ch/gemeindeversammlungen-wahlen-und-abstimmungen-kopie.html","from":null,"to":null,"cadence":null,"obstacle":"the 'Gemeindeversammlungen' menu entry leads to a Wahlen und Abstimmungen page without documents","how":"ask commune"}]},{"bfs_id":4304,"name":"Döttingen","canton":"AG","status":"not_published","website":"http://www.doettingen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.doettingen.ch/verwaltung/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"GV page carries the Aktenauflage documents (budgets, accounts, Traktanden) and mentions the Protokoll only as an agenda item for approval; no protocol PDFs","how":"ask commune"}]},{"bfs_id":4305,"name":"Endingen","canton":"AG","status":"candidate","website":"https://www.endingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.endingen.ch/sitzung","from":"2010","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 51 sessions since 2010; minutes attached to the session pages as '101 - Protokoll GV EWG 2025-11-21'"}]},{"bfs_id":4306,"name":"Fisibach","canton":"AG","status":"candidate","website":"http://www.fisibach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fisibach.ch/sitzung","from":"2014","to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 54 sessions since 2014; minutes attached to the session pages as 'Protokoll OBG vom 5. Dezember 2025'"}]},{"bfs_id":4307,"name":"Full-Reuenthal","canton":"AG","status":"not_examined","website":"https://www.full-reuenthal.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4309,"name":"Klingnau","canton":"AG","status":"not_examined","website":"https://www.klingnau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.klingnau.ch/politik/stadtrat, https://www.klingnau.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4310,"name":"Koblenz","canton":"AG","status":"configured","website":"https://www.koblenz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"executive","kind":"documents","status":"configured","listing_url":"https://www.koblenz.ch/aktuelles-detail?tx_news_pi1%5Baction%5D=detail&tx_news_pi1%5Bcontroller%5D=News&tx_news_pi1%5Bnews%5D=1034&cHash=beefabe5309e724fc82d0d084d1ae2fe","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":4311,"name":"Leibstadt","canton":"AG","status":"not_examined","website":"http://www.leibstadt.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4312,"name":"Lengnau","canton":"AG","status":"candidate","website":"http://www.lengnau-ag.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lengnau-ag.ch/sitzung","from":"2012","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 34 sessions since 2012; minutes attached to the session pages as '1-1, Protokoll der Gemeindeversammlung 2025-06-12'"}]},{"bfs_id":4313,"name":"Leuggern","canton":"AG","status":"not_examined","website":"https://www.leuggern.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 14 sessions since 2018 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4314,"name":"Mellikon","canton":"AG","status":"candidate","website":"https://www.mellikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mellikon.ch/sitzung","from":"2014","to":"2026-06-13","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 32 sessions since 2014; minutes attached to the session pages as '01 - Protokoll OBGV 14.06.2025'"}]},{"bfs_id":4318,"name":"Schneisingen","canton":"AG","status":"candidate","website":"https://www.schneisingen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schneisingen.ch/sitzung","from":"2007","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 58 sessions since 2007; minutes attached to the session pages as 'Protokoll_GV Sommer_2025_OBG'"}]},{"bfs_id":4319,"name":"Siglistorf","canton":"AG","status":"not_examined","website":"https://www.siglistorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.siglistorf.ch/politik/einwohner-gemeindeversammlung, https://www.siglistorf.ch/politik/ortsbuerger-gemeindeversammlung)\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":4320,"name":"Tegerfelden","canton":"AG","status":"not_examined","website":"https://www.tegerfelden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 9 sessions since 2023 (Ausserordentliche Gemeindeversammlung, Einwohner- und Ortsbürgerversammlung, Einwohnergemeindeversammlung, Ortsbürgergem); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4324,"name":"Zurzach","canton":"AG","status":"not_examined","website":"https://www.zurzach.ch/gemeinde","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 0 sessions since  (); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3101,"name":"Appenzell","canton":"AI","status":"not_examined","website":"https://www.appenzell.org","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3102,"name":"Gonten","canton":"AI","status":"not_examined","website":"http://www.gonten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3104,"name":"Schlatt-Haslen","canton":"AI","status":"candidate","website":"https://www.schlatt-haslen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.schlatt-haslen.ch/reglemente","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Reglemente & Beschlüsse' has 3 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3111,"name":"Oberegg","canton":"AI","status":"blocked_js","website":"https://www.oberegg.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3112,"name":"Schwende-Rüte","canton":"AI","status":"not_published","website":"https://schwende-ruete.ch/","vendor":"squarespace","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"Squarespace one-pager with regulations only ('Beschluss ueber die Gebuehren'); ask commune; docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Municipal Squarespace document redirects are limited to the observed site asset directory. Earlier Schwende and Ruete reports remain documents published by the current commune, without inferred historical jurisdiction.","publications":[]},{"bfs_id":3001,"name":"Herisau","canton":"AR","status":"upstream_only","website":"https://www.herisau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_3001.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":3002,"name":"Hundwil","canton":"AR","status":"not_examined","website":"https://www.hundwil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.hundwil.ch/aktuelles/news/news-detail/447e011768da0fd0e52f747bdaec3bfd/?tx_news_pi1%5Bnews%5D=263&tx_news_pi1%5Bcontroller%5D=News&tx_news_pi1%5Baction%5D=detail)","publications":[]},{"bfs_id":3003,"name":"Schönengrund","canton":"AR","status":"not_examined","website":"https://www.schoenengrund.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3004,"name":"Schwellbrunn","canton":"AR","status":"not_examined","website":"https://www.schwellbrunn.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3005,"name":"Stein","canton":"AR","status":"not_examined","website":"https://www.stein-ar.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3006,"name":"Urnäsch","canton":"AR","status":"blocked_robots","website":"https://www.urnaesch.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live endpoint and PDF check","notes":"The WordPress media endpoint is readable, but the test download of the 2 December 2025 budget-assembly protocol is disallowed by robots.txt. No bypass attempted; other files were not exhaustively tested.","publications":[{"body":"assembly","kind":"minutes","status":"blocked_robots","listing_url":"https://urnaesch.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-02","cadence":null,"obstacle":"robots.txt disallows the sampled protocol PDF under /wp-content/uploads/2022/10/. Endpoint access alone does not establish PDF access.","how":"probe: WordPress media endpoint answers; 16 files match, newest 2025-12-02, e.g. '2025-12-02 PROTOKOLL Budgetversammlung VA 2026 sig'; body guessed from the URL"}]},{"bfs_id":3007,"name":"Waldstatt","canton":"AR","status":"not_examined","website":"https://www.waldstatt.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3021,"name":"Bühler","canton":"AR","status":"blocked_js","website":"https://www.buehlerar.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3022,"name":"Gais","canton":"AR","status":"not_examined","website":"https://www.gais.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed official public document sections and representative robots-permitted PDF bytes. Historical finance, assembly and regulations PDFs collected without title filters; any shared storage permissions are limited to reviewed municipality-specific directories or exact linked files.","publications":[]},{"bfs_id":3023,"name":"Speicher","canton":"AR","status":"not_examined","website":"http://www.speicher.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3024,"name":"Teufen","canton":"AR","status":"not_examined","website":"https://www.teufen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3025,"name":"Trogen","canton":"AR","status":"blocked_js","website":"https://www.trogen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3031,"name":"Grub","canton":"AR","status":"blocked_js","website":"https://www.grub.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3032,"name":"Heiden","canton":"AR","status":"not_examined","website":"https://www.heiden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3033,"name":"Lutzenberg","canton":"AR","status":"not_examined","website":"https://www.lutzenberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 8 sessions since 2019 (Orientierungsveranstaltung, Orientierungsversammlung, Orientierungsversammlung vom 18. August 2020, Öffentliche Versamml); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3034,"name":"Rehetobel","canton":"AR","status":"not_examined","website":"https://www.rehetobel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3035,"name":"Reute","canton":"AR","status":"not_examined","website":"https://www.reute.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3036,"name":"Wald","canton":"AR","status":"candidate","website":"https://www.wald.ar.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wald.ar.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2026-04-16, e.g. 'Protokoll Ersatzwahl GR Stille Wahl 16.04.2026'; body guessed from the URL"}]},{"bfs_id":3037,"name":"Walzenhausen","canton":"AR","status":"not_examined","website":"https://www.walzenhausen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3038,"name":"Wolfhalden","canton":"AR","status":"blocked_js","website":"https://www.wolfhalden.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":301,"name":"Aarberg","canton":"BE","status":"not_published","website":"https://www.aarberg.ch/","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.aarberg.ch/de/politik-verwaltung/politik/gemeindeversammlung.php","from":null,"to":null,"cadence":null,"obstacle":"assembly page and Publikationen page contain no Protokoll","how":"ask commune"}]},{"bfs_id":302,"name":"Bargen","canton":"BE","status":"configured","website":"https://www.bargen-be.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.bargen-be.ch/politik/gemeindeversammlung.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":303,"name":"Grossaffoltern","canton":"BE","status":"candidate","website":"https://www.grossaffoltern.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grossaffoltern.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2026-06-01, e.g. 'Protokoll der GV vom 01.06.2026'; body guessed from the URL"}]},{"bfs_id":304,"name":"Kallnach","canton":"BE","status":"not_examined","website":"https://www.kallnach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":305,"name":"Kappelen","canton":"BE","status":"not_examined","website":"https://www.kappelen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2012 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":306,"name":"Lyss","canton":"BE","status":"upstream_only","website":"https://www.lyss.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. wAssets PDF storage with HTML document index Scoped section navigation collects history without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_306.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":307,"name":"Meikirch","canton":"BE","status":"candidate","website":"http://www.meikirch.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.meikirch.ch/sitzung","from":"2022","to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 8 sessions since 2022; minutes attached to the session pages as 'GV 18.05.2026 Protokoll'"}]},{"bfs_id":309,"name":"Radelfingen","canton":"BE","status":"candidate","website":"http://www.radelfingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.radelfingen.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-01, e.g. '1. Juni 2026'; body guessed from the URL"}]},{"bfs_id":310,"name":"Rapperswil","canton":"BE","status":"candidate","website":"http://www.rapperswil-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rapperswil-be.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 27 dated PDF links on the page, newest 2026-06-08, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":311,"name":"Schüpfen","canton":"BE","status":"candidate","website":"https://www.schuepfen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schuepfen.ch/de/politik/gemeindeversammlung/gemeindeversammlungsdaten/","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-06-03, e.g. 'Protokoll GV vom 03.06.2026'; body guessed from the URL"}]},{"bfs_id":312,"name":"Seedorf","canton":"BE","status":"candidate","website":"https://www.seedorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.seedorf.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2026-06-03, e.g. 'Protokoll Gemeindeversammlung vom 03.06.2026'; body guessed from the URL"}]},{"bfs_id":321,"name":"Aarwangen","canton":"BE","status":"candidate","website":"https://www.aarwangen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aarwangen.ch/gemeindeversammlung","from":"2024","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 6 sessions since 2024; minutes attached to the session pages as 'Protokoll der 2. Versammlung vom 22.06.2026'"}]},{"bfs_id":322,"name":"Auswil","canton":"BE","status":"not_examined","website":"https://www.auswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.auswil.ch/beh%C3%B6rden-verwaltung/gemeindeversammlung/)\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":323,"name":"Bannwil","canton":"BE","status":"not_examined","website":"https://www.bannwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":324,"name":"Bleienbach","canton":"BE","status":"not_examined","website":"https://www.bleienbach.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.bleienbach.ch/behoerden/gemeindeversammlungen) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":325,"name":"Busswil bei Melchnau","canton":"BE","status":"configured","website":"http://www.busswil-bm.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; minutes are news articles with an attached file ('Protokoll Gemeindeversammlung vom 25. Juni 2026 (668.49 KB)', 'Protokoll Geindeversammlung vom 01.12.2025'); the news list shows attachments inline, 10 per page; /behoerden/gemeindeversammlungen itself has none; 2 found on page 1, 2 dated; no date range stated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://busswil-bm.ch/leben/aktuelles","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":326,"name":"Gondiswil","canton":"BE","status":"not_examined","website":"https://www.gondiswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.gondiswil.ch/portrait-1/informationen/gemeindeversammlung/)\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":329,"name":"Langenthal","canton":"BE","status":"upstream_only","website":"https://www.langenthal.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_329.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":331,"name":"Lotzwil","canton":"BE","status":"not_examined","website":"https://www.lotzwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.lotzwil.ch/de/veranstaltungen/56_gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":332,"name":"Madiswil","canton":"BE","status":"not_examined","website":"https://www.madiswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 14 sessions since 2019 (Gemeindeversammlung, Gemeindeversammlung vom 1. Dezember 2022, Gemeindeversammlung vom 10. Juni 2025, Gemeindeversammlun); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":333,"name":"Melchnau","canton":"BE","status":"not_examined","website":"https://www.melchnau.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://melchnau.ch/politik/gemeindeversammlung/, https://melchnau.ch/gemeindeversammlung/)\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[]},{"bfs_id":335,"name":"Oeschenbach","canton":"BE","status":"not_examined","website":"http://www.oeschenbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":336,"name":"Reisiswil","canton":"BE","status":"configured","website":"http://www.reisiswil.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live WordPress source review","notes":"Endpoint and document titles checked on 2026-09-11. Archive scope also permits related municipal documents and versions; no extracted decisions inferred from inclusion. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.reisiswil.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public PDF results for the protocol search, up to 50 per run"}]},{"bfs_id":337,"name":"Roggwil","canton":"BE","status":"candidate","website":"https://www.roggwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.roggwil.ch/sitzung","from":"2020","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 16 sessions since 2020; minutes attached to the session pages as 'Protokoll GV vom 22.06.2026'"}]},{"bfs_id":338,"name":"Rohrbach","canton":"BE","status":"not_examined","website":"https://www.rohrbach-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.rohrbach-be.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":339,"name":"Rohrbachgraben","canton":"BE","status":"not_examined","website":"https://www.rohrbachgraben.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":340,"name":"Rütschelen","canton":"BE","status":"not_examined","website":"http://www.ruetschelen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":341,"name":"Schwarzhäusern","canton":"BE","status":"not_examined","website":"http://www.schwarzhaeusern.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.schwarzhaeusern.ch/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":342,"name":"Thunstetten","canton":"BE","status":"not_examined","website":"https://www.thunstetten.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 6 sessions since 2024 (Versammlung, a.o. Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":344,"name":"Ursenbach","canton":"BE","status":"not_examined","website":"http://www.ursenbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.ursenbach.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":345,"name":"Wynau","canton":"BE","status":"not_examined","website":"https://www.wynau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2021 (Gemeindeversammlung, ausserordentliche Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":351,"name":"Bern","canton":"BE","status":"upstream_only","website":"https://www.bern.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Stadtrat minutes come from the OpenParlData export; the municipal site is blocked (docs/CITY-SOURCES.md)\n\n2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. Plone .pdf/download document route Scoped section navigation collects history without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_351.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_waf","listing_url":"https://stadtrat.bern.ch/de/sitzungen/","from":null,"to":null,"cadence":null,"obstacle":"JavaScript session list; the WAF blocks non-browser clients","how":"static detail pages with CMI Axioma document ids ending in -332"}]},{"bfs_id":352,"name":"Bolligen","canton":"BE","status":"not_examined","website":"https://www.bolligen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.bolligen.ch/politik-verwaltung/politik/gemeindeversammlung-gv/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":353,"name":"Bremgarten bei Bern","canton":"BE","status":"not_published","website":"https://www.3047.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"website www.3047.ch\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.3047.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"descriptive text with the dates of the next assemblies, no Protokoll","how":"ask commune"}]},{"bfs_id":354,"name":"Kirchlindach","canton":"BE","status":"candidate","website":"https://www.kirchlindach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kirchlindach.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-06-01, e.g. 'Protokoll der Gemeindeversammlung vom 01.06.2026'; body guessed from the URL"}]},{"bfs_id":355,"name":"Köniz","canton":"BE","status":"configured","website":"https://www.koeniz.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.koeniz.ch/politik/gemeindeparlament/parlamentssitzungen.page/1725/opendcategory/1228","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":356,"name":"Muri bei Bern","canton":"BE","status":"configured","website":"https://www.muri-guemligen.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.muri-guemligen.ch/politik-verwaltung/politik/grosser-gemeinderat/sitzungen/archiv-parlamentssitzungen.html/237/opendcategory/329","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":357,"name":"Oberbalm","canton":"BE","status":"not_examined","website":"http://oberbalm.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":358,"name":"Stettlen","canton":"BE","status":"not_examined","website":"https://www.stettlen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 4 sessions since 2024 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":359,"name":"Vechigen","canton":"BE","status":"configured","website":"https://www.vechigen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.vechigen.ch/de/politik/gemeindeversammlung.php","from":"2021-12-04","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":360,"name":"Wohlen bei Bern","canton":"BE","status":"configured","website":"http://www.wohlen-be.ch","vendor":"weblication","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"Gemeindeversammlung; about 10 Protokolle 2024-2026, all undated (documents_discovered is the hand count)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.wohlen-be.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":361,"name":"Zollikofen","canton":"BE","status":"upstream_only","website":"https://www.zollikofen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_361.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":362,"name":"Ittigen","canton":"BE","status":"candidate","website":"https://www.ittigen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ittigen.ch/sitzung","from":"2008","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 42 sessions since 2008; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 09.06.2026 (pseudonymisiert)'"}]},{"bfs_id":363,"name":"Ostermundigen","canton":"BE","status":"configured","website":"https://www.ostermundigen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Grosser Gemeinderat; verbatim minutes named P<yyyymmdd>.pdf; monthly Beschlussprotokolle (decision records) on the same page carry no day and were left out; archive pages 2016-2018 contain no protocol links (they cost a retry each and were dropped)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.ostermundigen.ch/de/politik-verwaltung/politik/grosser-gemeinderat/protokolle.php","from":"2005-01-27","to":"2026-02-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop, listing_urls with archive year pages {2019..2021}, date_regex P<yyyymmdd> (ymd)"}]},{"bfs_id":371,"name":"Biel/Bienne","canton":"BE","status":"configured","website":"https://www.biel-bienne.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.biel-bienne.ch/de/protokolle.html/752","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":372,"name":"Evilard","canton":"BE","status":"not_examined","website":"https://www.evilard.ch/de","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.evilard.ch/de/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":381,"name":"Arch","canton":"BE","status":"candidate","website":"http://www.arch-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.arch-be.ch/de/verwaltung-politik/politik/gemeindeversammlung/","from":null,"to":"2025-11-27","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2025-11-27, e.g. 'Protokoll der Gemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":382,"name":"Büetigen","canton":"BE","status":"not_examined","website":"https://www.bueetigen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 10 sessions since 2023 (Gemeindeversammlung, Gemeindeversammlung (+ Wahl Präsidium), Gemeindeversammlung (Gesamterneuerungswahlen), Gemeindevers); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":383,"name":"Büren an der Aare","canton":"BE","status":"candidate","website":"https://www.bueren.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.bueren.ch/de/aktuelles/meldungen/Gemeinderatsbeschluesse-vom-25.-August-2026.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeinderatsbeschlüsse vom 25. August 20' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":385,"name":"Diessbach bei Büren","canton":"BE","status":"not_examined","website":"https://www.diessbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.diessbach.ch/de/behoerden/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":386,"name":"Dotzigen","canton":"BE","status":"candidate","website":"https://www.dotzigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dotzigen.ch/de/politik/gemeindsversammlung/","from":null,"to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: 4 dated PDF links on the page, newest 2026-06-02, e.g. 'Gde.-Versammlung vom 02.06.2026'; body guessed from the URL"}]},{"bfs_id":387,"name":"Lengnau","canton":"BE","status":"not_published","website":"https://www.lengnau.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.lengnau.ch/aktuelles/publikationen/","from":null,"to":null,"cadence":null,"obstacle":"per-Gemeindeversammlung publication pages carry Botschaft and budget only","how":"ask commune"}]},{"bfs_id":388,"name":"Leuzigen","canton":"BE","status":"candidate","website":"https://www.leuzigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.leuzigen.ch/einwohnergemeinde-leuzigen/behoerden/aktuelles-gemeindeversammlung.php","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-04, e.g. 'Beschlüsse vom 04.06.2026'; body guessed from the URL"}]},{"bfs_id":389,"name":"Meienried","canton":"BE","status":"not_examined","website":"https://meienried.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":390,"name":"Meinisberg","canton":"BE","status":"not_examined","website":"https://www.meinisberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.meinisberg.ch/index.asp?inc=downloads.asp&typ=Nav2&cat=171)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":391,"name":"Oberwil bei Büren","canton":"BE","status":"candidate","website":"https://oberwil-bueren.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://oberwil-bueren.ch/web/politik/gemeindeversammlung/gemeindeversammlung.php","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-17, e.g. 'Protokoll der Gemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":392,"name":"Pieterlen","canton":"BE","status":"configured","website":"https://www.pieterlen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.pieterlen.ch/de/politik-verwaltung/politik/gemeindeversammlungen/index.php","from":"2023-12-07","to":"2026-06-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":393,"name":"Rüti bei Büren","canton":"BE","status":"not_examined","website":"https://www.ruetibeibueren.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.ruetibeibueren.ch/meldungen/beitraege/Gemeindeversammlung-vom-4.12.2025.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":394,"name":"Wengi","canton":"BE","status":"configured","website":"https://www.wengi-be.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://wengi-be.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":401,"name":"Aefligen","canton":"BE","status":"not_examined","website":"https://www.aefligen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.aefligen.ch/de/behoerden-politik/gemeindeversammlung/, https://www.aefligen.ch/de/aktuell/veranstaltungen/details/gemeindeversammlung-winter-2026/)","publications":[]},{"bfs_id":402,"name":"Alchenstorf","canton":"BE","status":"not_examined","website":"https://www.alchenstorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 15 sessions since 2018 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":403,"name":"Bäriswil","canton":"BE","status":"not_examined","website":"https://www.baeriswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.baeriswil.ch/de/politik/gemeindeversammlung/index.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":404,"name":"Burgdorf","canton":"BE","status":"configured","website":"https://www.burgdorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.burgdorf.ch/de/verwaltung-politik/politik/stadtrat-sitzungsprotokolle.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":405,"name":"Ersigen","canton":"BE","status":"configured","website":"https://www.ersigen.ch","vendor":"onegov","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"OneGov Cloud; robots Crawl-delay 10 and Disallow /auth/; register guess: document_kind minutes because the file is named 'Protokoll' although the item is titled 'Beschluesse Gemeindeversammlung'; docs/VENDOR-PATTERNS.md only","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.ersigen.ch/topics/kommunikation/publikationen","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":406,"name":"Hasle bei Burgdorf","canton":"BE","status":"configured","website":"https://www.hasle.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"old-style TYPO3 (index.php?id=51); Protokolle 2013-2024 on one page under relative hrefs; 3 files undated (Protokoll.pdf, gv_2014_01.pdf); Bern TYPO3 template","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.hasle.ch/index.php?id=51&L=0","from":"2013-12-02","to":"2024-12-09","cadence":null,"obstacle":null,"how":"html_links, 1 hop, selector on 'inhalte/' without leading slash"}]},{"bfs_id":407,"name":"Heimiswil","canton":"BE","status":"candidate","website":"https://www.heimiswil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: partial, Gemeinderat decision notices (the two newest only); kind corrected from minutes to decisions","publications":[{"body":"executive","kind":"decisions","status":"candidate","listing_url":"https://www.heimiswil.ch/de/behoerden-politik/gemeinderat","from":"2026-06-08","to":"2026-06-30","cadence":null,"obstacle":"only the two newest notices are kept ('Beschluesse des Gemeinderates: Sitzung vom 08. Juni 2026, Sitzung vom 30. Juni 2026' -> /inhalte/02_Aktuell/Veroeffentlichte_Gemeinderatsbeschluesse/GR_08.06.2026_-_Veroeffentlichung_Beschluesse.pdf); the 'Archiv 2014-2024' pages belong to the Gemeindeinfo bulletin; below the three-document threshold","how":"html_links, 1 hop, would take the two current notices; revisit when more accumulate"}]},{"bfs_id":408,"name":"Hellsau","canton":"BE","status":"not_examined","website":"https://www.hellsau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2019 (ABGESAGT - Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung Hellsau); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":409,"name":"Hindelbank","canton":"BE","status":"candidate","website":"https://www.hindelbank.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hindelbank.ch/de/politik-und-verwaltung/verwaltung/gemeindeversammlung.php","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2025-12-01, e.g. 'Einladung zur Gemeindeversammlung vom 1. Dezember 2025'; body guessed from the URL"}]},{"bfs_id":410,"name":"Höchstetten","canton":"BE","status":"not_examined","website":"https://www.hoechstetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2019 (ABGESAGT- Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung Höchstetten); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":411,"name":"Kernenried","canton":"BE","status":"candidate","website":"https://www.kernenried.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Shared Hoststar storage is limited to 45 individually attributed URLs; no shared-host crawl or broad prefix.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.kernenried.ch/informationen/beschl%C3%BCsse","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Beschlüsse' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":412,"name":"Kirchberg","canton":"BE","status":"candidate","website":"https://www.kirchberg-be.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kirchberg-be.ch/sitzung","from":"2018","to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 18 sessions since 2018; minutes attached to the session pages as 'Protokoll GV 08.06.2026'"}]},{"bfs_id":413,"name":"Koppigen","canton":"BE","status":"not_examined","website":"https://www.koppigen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2017 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":414,"name":"Krauchthal","canton":"BE","status":"candidate","website":"https://www.krauchthal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.krauchthal.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: 22 dated PDF links on the page, newest 2026-06-09, e.g. 'Protokoll Gemeindeversammlung 09.06.2026 Protokoll-GV-vom-09'; body guessed from the URL"}]},{"bfs_id":415,"name":"Lyssach","canton":"BE","status":"not_examined","website":"https://www.lyssach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 35 sessions since 2008 (Gemeindeversammlung, Urnenabstimmung anstelle Gemeindeversammlung, Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":418,"name":"Oberburg","canton":"BE","status":"candidate","website":"https://www.oberburg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberburg.ch/de/verwaltung-politik/politik/gemeindeversammlungen/","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2026-06-01, e.g. 'Protokoll vom 01.06.2026'; body guessed from the URL"}]},{"bfs_id":420,"name":"Rüdtligen-Alchenflüh","canton":"BE","status":"not_examined","website":"https://www.ruedtligen-alchenflueh.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Reviewed public municipal document sections, historical meeting attachments and representative PDF bytes. No document-title filters; downloads remain scoped to reviewed public sections.","publications":[]},{"bfs_id":421,"name":"Rumendingen","canton":"BE","status":"not_examined","website":"https://www.rumendingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2021 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":422,"name":"Rüti bei Lyssach","canton":"BE","status":"not_examined","website":"https://ruetibeilyssach.jimdofree.com/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":423,"name":"Willadingen","canton":"BE","status":"not_examined","website":"https://www.willadingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 13 sessions since 2017 (Gemeindeversammlung, Versammlung ABGESAGT); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":424,"name":"Wynigen","canton":"BE","status":"not_examined","website":"https://www.wynigen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 43 sessions since 2007 (ABGESAGT - Gemeindeversammlung, Ausserordentliche Gemeindeversammlung, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":431,"name":"Corgémont","canton":"BE","status":"not_examined","website":"https://www.corgemont.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":432,"name":"Cormoret","canton":"BE","status":"not_examined","website":"https://www.cormoret.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Reviewed public municipal document sections, historical meeting attachments and representative PDF bytes. No document-title filters; downloads remain scoped to reviewed public sections.","publications":[]},{"bfs_id":433,"name":"Cortébert","canton":"BE","status":"not_examined","website":"https://www.cortebert.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":434,"name":"Courtelary","canton":"BE","status":"configured","website":"https://www.courtelary.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.courtelary.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":435,"name":"La Ferrière","canton":"BE","status":"not_examined","website":"https://www.laferriere.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.laferriere.ch/index.php?option=com_content&view=article&id=114&Itemid=177)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":437,"name":"Mont-Tramelan","canton":"BE","status":"not_examined","website":"https://www.mont-tramelan.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.mont-tramelan.ch/https/-/mont-tramelan-ch/PORTRAIT/, https://mont-tramelan.ch/PUBLICATIONS/, https://mont-tramelan.ch/.cm4all/uproc.php/0/assembl%C3%A9e%20communale/Publication%20d%C3%A9p%C3%B4t%20public%20pv%20ass_mun_ordi%206_2025_1.pdf?cdp=a&_=19f4ccaae49)\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[]},{"bfs_id":438,"name":"Orvin","canton":"BE","status":"configured","website":"https://orvin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live WordPress source review","notes":"Endpoint and document titles checked on 2026-09-11. Archive scope also permits related municipal documents and versions; no extracted decisions inferred from inclusion. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://orvin.ch/wp-json/wp/v2/media?search=verbal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public PDF results for the protocol search, up to 50 per run"}]},{"bfs_id":441,"name":"Renan","canton":"BE","status":"not_examined","website":"https://renan.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://renan.ch/officiel/conseil-communal/)","publications":[]},{"bfs_id":442,"name":"Romont","canton":"BE","status":"candidate","website":"http://www.romont-jb.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.romont-jb.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2024-12-05","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 22 files match, newest 2024-12-05, e.g. 'PV AB 2 du 05.12.2024'; body guessed from the URL"}]},{"bfs_id":443,"name":"Saint-Imier","canton":"BE","status":"configured","website":"https://www.saint-imier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil de ville; all PVs on one page; robots.txt asks for Crawl-delay 10, honoured (a full run takes about 20 minutes)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.saint-imier.ch/autorites/conseil-de-ville/","from":"2006-03-16","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":444,"name":"Sonceboz-Sombeval","canton":"BE","status":"candidate","website":"http://www.sonceboz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sonceboz.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 14 files match, newest 2026-06-29, e.g. '20260629_PV_AMU dépôt public internet'; body guessed from the URL"}]},{"bfs_id":445,"name":"Sonvilier","canton":"BE","status":"candidate","website":"http://www.sonvilier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://sonvilier.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-08-20","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 24 files match, newest 2026-08-20, e.g. '260828_FOC_AC 20.08.2026 &#8211; dépôt public pv'; body guessed from the URL"}]},{"bfs_id":446,"name":"Tramelan","canton":"BE","status":"configured","website":"https://www.tramelan.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.tramelan.ch/politique/conseil-g%C3%A9n%C3%A9ral.html","from":"2026-03-02","to":"2026-06-29","cadence":null,"obstacle":"partial: Conseil general; 3 dated 2026 session PVs plus one undated PV compilation per year 2019-2025 (pv-cg-2025.pdf); report status ok, register partial (7 of 10 undated)","how":"html_links, 1 hop; date from a heading or year for the yearly compilations"}]},{"bfs_id":448,"name":"Villeret","canton":"BE","status":"not_examined","website":"https://www.villeret.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.villeret.ch/fr/Autorites-politiques/Conseil-municipal/Conseil-municipal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":449,"name":"Sauge","canton":"BE","status":"not_examined","website":"http://www.sauge-jb.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":450,"name":"Péry-La Heutte","canton":"BE","status":"not_examined","website":"https://www.pery-laheutte.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://pery-laheutte.ch/famille-daccueil/)","publications":[]},{"bfs_id":491,"name":"Brüttelen","canton":"BE","status":"not_examined","website":"http://www.bruettelen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 1 sessions since 2026 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":492,"name":"Erlach","canton":"BE","status":"candidate","website":"https://www.erlach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.erlach.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2025-12-03","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2025-12-03, e.g. 'Protokoll der Gemeindeversammlung vom 3. Dezember 2025'; body guessed from the URL"}]},{"bfs_id":493,"name":"Finsterhennen","canton":"BE","status":"configured","website":"https://www.finsterhennen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://finsterhennen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":494,"name":"Gals","canton":"BE","status":"not_published","website":"https://www.gals.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"drupal batch: not started (batch order reached after 44 communes and about 500 requests; not looked at); result taken from docs/VENDOR-PATTERNS.md","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"Drupal 7 site; /downloads has 38 regulations, no minutes","how":"ask commune"}]},{"bfs_id":495,"name":"Gampelen","canton":"BE","status":"not_examined","website":"https://www.gampelen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript","publications":[]},{"bfs_id":496,"name":"Ins","canton":"BE","status":"candidate","website":"https://www.ins.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ins.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-06-12, e.g. 'Gemeindeversammlung vom 12.06.2026'; body guessed from the URL"}]},{"bfs_id":497,"name":"Lüscherz","canton":"BE","status":"not_examined","website":"https://www.luescherz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.luescherz.ch/organisation/gemeindeversammlung)","publications":[]},{"bfs_id":498,"name":"Müntschemier","canton":"BE","status":"not_examined","website":"https://www.muentschemier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public municipal document sections, historical meeting attachments and representative PDF bytes. Observed meeting detail pages are exact seeds; future query-ID detail pages need further discovery support.","publications":[]},{"bfs_id":499,"name":"Siselen","canton":"BE","status":"candidate","website":"https://www.siselen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.siselen.ch/politik/gemeindeversammlung/","from":null,"to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-11, e.g. 'Medienmitteilung zur Gemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":500,"name":"Treiten","canton":"BE","status":"not_examined","website":"http://www.treiten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.treiten.ch/gemeinde-treiten/politik/gemeindeversammlungen/index.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":501,"name":"Tschugg","canton":"BE","status":"not_examined","website":"http://www.tschugg.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://tschugg.ch/politik/gemeindeversammlung/)","publications":[]},{"bfs_id":502,"name":"Vinelz","canton":"BE","status":"candidate","website":"https://www.vinelz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vinelz.ch/verwaltung/gemeindeversammlung","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 21 dated PDF links on the page, newest 2026-06-10, e.g. 'Gemeindeversammlungsprotokoll vom 10. Juni 2026'; body guessed from the URL"}]},{"bfs_id":533,"name":"Bätterkinden","canton":"BE","status":"configured","website":"http://www.baetterkinden.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"anchor text 'Protokoll der Gemeindeversammlung vom 15. Juni 2026', relative hrefs inhalte/3-Politik/...","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.baetterkinden.ch/de/politik/gemeindeversammlung/","from":"2021-06-14","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop, selector on 'inhalte/'"}]},{"bfs_id":535,"name":"Deisswil bei Münchenbuchsee","canton":"BE","status":"candidate","website":"https://www.deisswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.deisswil.ch/de/behoerden/gemeindeversammlung-protokoll-21-11-2019","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeindeversammlung' has 2 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":538,"name":"Fraubrunnen","canton":"BE","status":"not_published","website":"https://www.fraubrunnen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"the newest protocol is overwritten per assembly\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.fraubrunnen.ch/de/verwaltung-und-politik/politik/gemeindeversammlung/","from":"2026-06-02","to":"2026-06-02","cadence":null,"obstacle":"only the newest Protokoll (02.06.2026) is online; the Dokumente page has none","how":"ask commune for the archive"}]},{"bfs_id":540,"name":"Jegenstorf","canton":"BE","status":"configured","website":"https://www.jegenstorf.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"one Protokoll PDF per session folder","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.jegenstorf.ch/de/politik/gemeindeversammlung/","from":"2024-06-14","to":"2026-06-09","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from the folder name"}]},{"bfs_id":541,"name":"Iffwil","canton":"BE","status":"configured","website":"https://www.iffwil.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://iffwil.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":543,"name":"Mattstetten","canton":"BE","status":"not_examined","website":"https://www.mattstetten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.mattstetten.ch/de/politik/gemeindeversammlung/index.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":544,"name":"Moosseedorf","canton":"BE","status":"not_published","website":"https://www.moosseedorf.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.moosseedorf.ch/de/gemeinde-politik/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"only the current assembly's Publikation, Botschaft and Reglemente; no Protokoll","how":"ask commune"}]},{"bfs_id":546,"name":"Münchenbuchsee","canton":"BE","status":"configured","website":"https://www.muenchenbuchsee.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Grosser Gemeinderat; there is no protocol page; each protocol is attached to the next session as Traktandum 1 ('Protokoll vom 22. Januar 2026', Tr-1-2-Beilage-2-GGR-Protokoll-vom-22.-Januar-2026.pdf)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.muenchenbuchsee.ch/de/politik-verwaltung/politik/grosser-gemeinderat/sitzungsdaten.php","from":"2020-10-15","to":"2026-05-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop, text_regex ^Protokoll vom"}]},{"bfs_id":551,"name":"Urtenen-Schönbühl","canton":"BE","status":"candidate","website":"http://www.urtenen-schoenbuehl.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.urtenen-schoenbuehl.ch/gemeindeversammlung","from":"2009","to":"2026-05-26","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2009; minutes attached to the session pages as 'Protokoll GV 26.05.2026'"}]},{"bfs_id":552,"name":"Utzenstorf","canton":"BE","status":"configured","website":"http://www.utzenstorf.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"47 Protokolle 2001-2024 on one page; anchor text is month and year only; Bern TYPO3 template","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.utzenstorf.ch/de/behoerden/gv/","from":"2001-03-30","to":"2024-11-20","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":553,"name":"Wiggiswil","canton":"BE","status":"not_examined","website":"https://wiggiswil.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://wiggiswil.ch/de/behoerden/Gemeindeversammlung-1)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":554,"name":"Wiler bei Utzenstorf","canton":"BE","status":"not_examined","website":"https://www.wiler.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again\n\n2026-09-26 coverage review: Reviewed public municipal document sections, historical meeting attachments and representative PDF bytes. No document-title filters; downloads remain scoped to reviewed public sections.","publications":[]},{"bfs_id":556,"name":"Zielebach","canton":"BE","status":"candidate","website":"http://www.zielebach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 24 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zielebach.ch/verwaltung-politik/gemeindeversammlung/","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-12-01, e.g. ''; body guessed from the URL"}]},{"bfs_id":557,"name":"Zuzwil","canton":"BE","status":"candidate","website":"http://www.zuzwil-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zuzwil-be.ch/de/politik-und-verwaltung/politik/gemeindeversammlung.php","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 6 dated PDF links on the page, newest 2026-06-03, e.g. '2026-06-03 Gemeindeversammlungsprotokoll'; body guessed from the URL"}]},{"bfs_id":561,"name":"Adelboden","canton":"BE","status":"candidate","website":"https://www.3715.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.3715.ch/politik/gemeindeversammlung.html/41","from":null,"to":"2026-04-24","cadence":null,"obstacle":null,"how":"probe: 42 dated PDF links on the page, newest 2026-04-24, e.g. 'GV 24.04.2026'; body guessed from the URL"}]},{"bfs_id":562,"name":"Aeschi bei Spiez","canton":"BE","status":"not_examined","website":"https://www.aeschi.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":563,"name":"Frutigen","canton":"BE","status":"not_examined","website":"https://www.frutigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.frutigen.ch/de/politik-verwaltung/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":564,"name":"Kandergrund","canton":"BE","status":"not_examined","website":"https://www.kandergrund.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.kandergrund.ch/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":565,"name":"Kandersteg","canton":"BE","status":"not_examined","website":"https://www.gemeindekandersteg.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.gemeindekandersteg.ch/portrait/gemeindeversammlung)","publications":[]},{"bfs_id":566,"name":"Krattigen","canton":"BE","status":"not_examined","website":"https://www.krattigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":567,"name":"Reichenbach im Kandertal","canton":"BE","status":"not_examined","website":"https://www.reichenbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.reichenbach.ch/de/gemeinde/politik-und-verwaltung/politik/gemeindeversammlung/, https://www.reichenbach.ch/de/gemeinde/politik-und-verwaltung/politik/sitzungstage-gemeinderat/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":571,"name":"Beatenberg","canton":"BE","status":"not_examined","website":"https://www.beatenberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Official HTML templates declare public Wappler content endpoints. Reviewed JSON content fields expose complete section document links despite an empty HTML shell. Regulations, budgets, accounts, meeting documents and newsletters were verified with robots-permitted PDF responses; persistent collection uses exact observed API seeds without JavaScript execution or document-title filters.","publications":[]},{"bfs_id":572,"name":"Bönigen","canton":"BE","status":"not_published","website":"https://www.boenigen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://boenigen.ch/home-2/gemeinderat/","from":null,"to":null,"cadence":null,"obstacle":"no Gemeindeversammlung or Protokoll page in the navigation; the Gemeinderat page has no documents (checked homepage and Gemeinderat page only)","how":"ask commune"}]},{"bfs_id":573,"name":"Brienz","canton":"BE","status":"not_examined","website":"https://www.brienz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 41 sessions since 2008 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung vom 10. Dezember 2020, Gemeindeversammlu); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":574,"name":"Brienzwiler","canton":"BE","status":"not_examined","website":"https://www.brienzwiler.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":575,"name":"Därligen","canton":"BE","status":"configured","website":"https://www.daerligen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Beschluesse 29.06.2026' assembly decisions since 2025, press reports before ('Pressebericht 29.11.2024'); 3 found 3 dated (8 with press reports); each block has a duplicate 'Herunterladen' anchor; REST media search=beschluesse works but lists .docx twins; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.daerligen.ch/beschluesse-gemeindeversammlung/","from":"2025","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":576,"name":"Grindelwald","canton":"BE","status":"not_published","website":"https://www.gemeinde-grindelwald.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"website corrected by report: grindelwald.com (the website on file) is the tourism domain with a JS redirect, the commune site is www.gemeinde-grindelwald.ch (WordPress); legal note worth recording in docs/decisions/\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.grindelwald.com to https://www.gemeinde-grindelwald.ch/. Unfiltered WordPress PDF endpoint reports 1203 media items; configured for raw collection. Assembly minutes remain not published online according to the official page; this addition is for other public documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.gemeinde-grindelwald.ch/behorden-politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"the commune site states: 'Die Protokolle der Gemeindeversammlungen koennen nicht online veroeffentlicht werden - es fehlt dazu die gesetzliche Grundlage (Datenschutz)', available on request at the Gemeindeschreiberei","how":"ask commune (site cites a missing legal basis)"}]},{"bfs_id":577,"name":"Gsteigwiler","canton":"BE","status":"not_examined","website":"https://www.gsteigwiler.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.gsteigwiler.ch/politik/gemeindeversammlung/)\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":578,"name":"Gündlischwand","canton":"BE","status":"not_examined","website":"https://www.guendlischwand.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":579,"name":"Habkern","canton":"BE","status":"not_examined","website":"https://www.habkern.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Official HTML templates declare public Wappler content endpoints. Reviewed JSON content fields expose complete section document links despite an empty HTML shell. Regulations, budgets, accounts, meeting documents and newsletters were verified with robots-permitted PDF responses; persistent collection uses exact observed API seeds without JavaScript execution or document-title filters.","publications":[]},{"bfs_id":580,"name":"Hofstetten bei Brienz","canton":"BE","status":"not_examined","website":"https://www.hofstetten-ballenberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public municipal document sections, historical meeting attachments and representative PDF bytes. No document-title filters; downloads remain scoped to reviewed public sections.","publications":[]},{"bfs_id":581,"name":"Interlaken","canton":"BE","status":"configured","website":"https://www.interlaken-gemeinde.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.interlaken-gemeinde.ch/politik/grosser-gemeinderat/protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_581.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":582,"name":"Iseltwald","canton":"BE","status":"not_examined","website":"https://www.iseltwald.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2023 (Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":584,"name":"Lauterbrunnen","canton":"BE","status":"candidate","website":"https://www.lauterbrunnen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lauterbrunnen.ch/gemeindeversammlung","from":"2009","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 34 sessions since 2009; minutes attached to the session pages as '260615 Protokoll GV'"}]},{"bfs_id":585,"name":"Leissigen","canton":"BE","status":"candidate","website":"https://www.leissigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.leissigen.ch/aktuell/news/beschluesse-gemeindeversammlung-22-06-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 2 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":586,"name":"Lütschental","canton":"BE","status":"not_examined","website":"https://www.luetschental.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://luetschental.ch/politik-verwaltung/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":587,"name":"Matten bei Interlaken","canton":"BE","status":"not_examined","website":"https://www.matten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2020 (Ordentliche Gemeindeversammlung, Urnenabstimmung anstelle ordentlicher Gemeindevers); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":588,"name":"Niederried bei Interlaken","canton":"BE","status":"not_examined","website":"https://www.niederried-be.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.niederried-be.ch/gemeinde-1/gemeindeversammlung/, https://www.niederried-be.ch/app/download/12079057921/Protokoll+November+2022.pdf?t=1788264951, https://www.niederried-be.ch/app/download/11936333721/Protokoll+Gemeindeversammlung.pdf?t=1788264951)\n\n2026-09-26 coverage review: Reviewed public mixed-document sections and representative PDF bytes; configured generic linked discovery. Titles are not used to limit collection.","publications":[]},{"bfs_id":589,"name":"Oberried am Brienzersee","canton":"BE","status":"not_examined","website":"http://www.oberried.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":590,"name":"Ringgenberg","canton":"BE","status":"candidate","website":"https://www.ringgenberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ringgenberg.ch/sitzung","from":"2020","to":"2026-09-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 14 sessions since 2020; minutes attached to the session pages as '260603 Protokoll der Gemeindeversammlung vom 3. Juni 2026'"}]},{"bfs_id":591,"name":"Saxeten","canton":"BE","status":"not_examined","website":"https://www.saxeten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed official public document sections and representative robots-permitted PDF bytes. Historical finance, assembly and regulations PDFs collected without title filters; any shared storage permissions are limited to reviewed municipality-specific directories or exact linked files.","publications":[]},{"bfs_id":592,"name":"Schwanden bei Brienz","canton":"BE","status":"configured","website":"https://www.schwandenbrienz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.schwandenbrienz.ch/gemeinde/gemeindeversammlung/protokolle/","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":593,"name":"Unterseen","canton":"BE","status":"configured","website":"https://www.unterseen.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"all Gemeindeversammlungsprotokolle on one downloads page; the newest is the Auflageexemplar (draft laid out for inspection)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.unterseen.ch/online-schalter/downloads.html","from":"2009-03-09","to":"2026-06-01","cadence":null,"obstacle":null,"how":"html_links, 1 hop, downloads page"}]},{"bfs_id":594,"name":"Wilderswil","canton":"BE","status":"not_examined","website":"https://www.wilderswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://wilderswil.ch/politik/gemeindeversammlung-abstimmungen-wahlen)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":602,"name":"Arni","canton":"BE","status":"candidate","website":"http://www.arnibe.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.arnibe.ch/behoerden/gemeindeversammlung","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 27 dated PDF links on the page, newest 2026-06-03, e.g. 'Protokoll der Gemeindeversammlung vom 3. Juni 2026'; body guessed from the URL"}]},{"bfs_id":603,"name":"Biglen","canton":"BE","status":"not_examined","website":"https://www.biglen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.biglen.ch/de/politik-verwaltung/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":605,"name":"Bowil","canton":"BE","status":"candidate","website":"https://www.bowil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.bowil.ch/gemeinde-bowil/gemeinde/aktuelles/artikel?tx_news_pi1%5Baction%5D=detail&tx_news_pi1%5Bcontroller%5D=News&tx_news_pi1%5Bnews%5D=34&cHash=05c3a18abb26e60b5aad769f99dbba79","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Fakultatives Referendum - Beschluss von ' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":606,"name":"Brenzikofen","canton":"BE","status":"candidate","website":"https://www.brenzikofen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 89 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://brenzikofen.ch/index.php/gemeindeversammlung/","from":null,"to":"2025-11-27","cadence":null,"obstacle":null,"how":"probe: 12 dated PDF links on the page, newest 2025-11-27, e.g. 'Beschlüsse'; body guessed from the URL"}]},{"bfs_id":607,"name":"Freimettigen","canton":"BE","status":"candidate","website":"https://www.freimettigen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.freimettigen.ch/sitzung","from":"2021","to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 9 sessions since 2021; minutes attached to the session pages as 'Protokoll_GV_04.06.2026'"}]},{"bfs_id":608,"name":"Grosshöchstetten","canton":"BE","status":"not_examined","website":"https://www.grosshoechstetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":609,"name":"Häutligen","canton":"BE","status":"candidate","website":"https://www.haeutligen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.haeutligen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2023-08-04","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2023-08-04, e.g. 'BEILAGE_2023-08-04_Aufnahmeprotokoll_Haeutligen_v3'; body guessed from the URL"}]},{"bfs_id":610,"name":"Herbligen","canton":"BE","status":"not_examined","website":"https://www.herbligen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":611,"name":"Kiesen","canton":"BE","status":"candidate","website":"https://www.kiesen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kiesen.ch/news/%f0%9f%93%9c-oeffentliche-auflage-protokoll-der-gemeindeversammlung-vom-27-november-2025/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page '📜 Öffentliche Auflage – Protokoll der Ge' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":612,"name":"Konolfingen","canton":"BE","status":"configured","website":"https://www.konolfingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.konolfingen.ch/politik/gemeindeversammlung","from":"2019-06-04","to":"2026-06-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":613,"name":"Landiswil","canton":"BE","status":"candidate","website":"https://www.landiswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.landiswil.ch/behoerden/gemeindeversammlung","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-06-17, e.g. 'Gemeindeversammlung vom 17. Juni 2026'; body guessed from the URL"}]},{"bfs_id":614,"name":"Linden","canton":"BE","status":"not_examined","website":"https://www.linden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 41 sessions since 2006 (Gemeindeversammlung, Gemeindeversammlung ABGESAGT, ausserordentliche Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":615,"name":"Mirchel","canton":"BE","status":"not_examined","website":"http://www.mirchel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":616,"name":"Münsingen","canton":"BE","status":"upstream_only","website":"https://www.muensingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. wAssets PDF storage with HTML document index Scoped section navigation collects history without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_616.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":617,"name":"Niederhünigen","canton":"BE","status":"not_examined","website":"http://www.niederhuenigen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.niederhuenigen.ch/politik/gemeindeversammlungen) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":619,"name":"Oberdiessbach","canton":"BE","status":"blocked_js","website":"https://www.oberdiessbach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":620,"name":"Oberthal","canton":"BE","status":"not_examined","website":"https://www.oberthal.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.oberthal.ch/behoerde/gemeindeversammlung/)\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[]},{"bfs_id":622,"name":"Oppligen","canton":"BE","status":"candidate","website":"http://www.oppligen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oppligen.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2026-05-27, e.g. 'Protokoll der Gemeindeversammlung vom 27. Mai 2026'; body guessed from the URL"}]},{"bfs_id":623,"name":"Rubigen","canton":"BE","status":"candidate","website":"https://www.rubigen.swiss/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.rubigen.ch to https://www.rubigen.swiss/. 14 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rubigen.swiss/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-04, e.g. 'Protokoll vom 04.06.2026'; body guessed from the URL"}]},{"bfs_id":626,"name":"Walkringen","canton":"BE","status":"not_examined","website":"http://www.walkringen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":627,"name":"Worb","canton":"BE","status":"configured","website":"https://www.worb.ch/","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.worb.ch/de/politik-verwaltung/politik/legislative/sitzungsprotokolle-legislative/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":628,"name":"Zäziwil","canton":"BE","status":"not_examined","website":"https://www.zaeziwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.zaeziwil.ch/de/politik-verwaltung/politik/gemeindeversammlung.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":629,"name":"Oberhünigen","canton":"BE","status":"not_examined","website":"http://www.oberhuenigen.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.oberhuenigen.ch/oberhuenigen/politik-verwaltung/politik/gemeindeversammlung.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":630,"name":"Allmendingen","canton":"BE","status":"candidate","website":"http://www.allmendingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 46 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.allmendingen.ch/politik/gemeindeversammlung/","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2026-06-10, e.g. 'Protokoll vom 10. Juni 2026'; body guessed from the URL"}]},{"bfs_id":632,"name":"Wichtrach","canton":"BE","status":"not_published","website":"http://www.wichtrach.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents. Document-list pagination currently redirects to its first page; completeness remains unresolved.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.wichtrach.ch/de/ueber-uns/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"only the newest Protokoll (Protokoll-EWG.pdf, undated, overwritten per assembly), no archive","how":"ask commune for the archive"}]},{"bfs_id":662,"name":"Ferenbalm","canton":"BE","status":"candidate","website":"https://www.ferenbalm.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ferenbalm.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-06-01, e.g. 'Protokoll der Gemeindeversammlung vom 01.06.2026'; body guessed from the URL"}]},{"bfs_id":663,"name":"Frauenkappelen","canton":"BE","status":"not_examined","website":"https://www.frauenkappelen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.frauenkappelen.ch/de/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":665,"name":"Gurbrü","canton":"BE","status":"candidate","website":"https://www.gurbrue.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gurbrue.ch/Behoerde-Politik/Gemeindeversammlung/","from":null,"to":"2025-05-26","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2025-05-26, e.g. ''; body guessed from the URL"}]},{"bfs_id":666,"name":"Kriechenwil","canton":"BE","status":"not_examined","website":"https://www.kriechenwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":667,"name":"Laupen","canton":"BE","status":"not_published","website":"https://www.laupen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"soft hyphens in menus","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://laupen.ch/gemeindeversammlung-2/","from":null,"to":null,"cadence":null,"obstacle":"only the next Gemeindeversammlung event page, without documents; no protocol or Botschaft archive found in the navigation","how":"ask commune"}]},{"bfs_id":668,"name":"Mühleberg","canton":"BE","status":"candidate","website":"https://www.muehleberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.muehleberg.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-15, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":669,"name":"Münchenwiler","canton":"BE","status":"candidate","website":"https://www.muenchenwiler.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.muenchenwiler.ch/gemeinde/gemeindeversammlung","from":null,"to":"2026-05-07","cadence":null,"obstacle":null,"how":"probe: 45 dated PDF links on the page, newest 2026-05-07, e.g. 'Protokoll der Versammlung vom 07.05.2026'; body guessed from the URL"}]},{"bfs_id":670,"name":"Neuenegg","canton":"BE","status":"configured","website":"https://www.neuenegg.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"only the last three assembly minutes are kept online; exactly three documents; register guess: kept configured because that is the whole online archive","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.neuenegg.ch/de/verwaltung/dokumente/","from":"2025-05-21","to":"2026-05-27","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":671,"name":"Wileroltigen","canton":"BE","status":"candidate","website":"https://www.wileroltigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wileroltigen.ch/politik-behoerde/gemeindeversammlung","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2026-06-01, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":681,"name":"Belprahon","canton":"BE","status":"candidate","website":"http://www.belprahon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://belprahon.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2023-06-18","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 8 files match, newest 2023-06-18, e.g. 'test procès-verbal de la votation populaire fédérale du 18.0'; body guessed from the URL"}]},{"bfs_id":683,"name":"Champoz","canton":"BE","status":"not_examined","website":"http://www.champoz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":687,"name":"Corcelles","canton":"BE","status":"not_examined","website":"https://www.corcelles-be.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://corcelles-be.ch/autorites/conseil-communal/)","publications":[]},{"bfs_id":690,"name":"Court","canton":"BE","status":"not_examined","website":"https://www.court.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":691,"name":"Crémines","canton":"BE","status":"not_examined","website":"https://www.cremines.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.cremines.ch/conseil.communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":692,"name":"Eschert","canton":"BE","status":"not_examined","website":"http://www.eschert.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":694,"name":"Grandval","canton":"BE","status":"not_examined","website":"https://www.grandval.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":696,"name":"Loveresse","canton":"BE","status":"not_examined","website":"https://www.loveresse.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.loveresse.ch/politiques-locales/conseil-communal/)","publications":[]},{"bfs_id":701,"name":"Perrefitte","canton":"BE","status":"not_examined","website":"https://perrefitte.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":703,"name":"Reconvilier","canton":"BE","status":"not_examined","website":"http://www.reconvilier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":704,"name":"Roches","canton":"BE","status":"not_examined","website":"https://roches.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":706,"name":"Saicourt","canton":"BE","status":"not_examined","website":"http://www.saicourt.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":707,"name":"Saules","canton":"BE","status":"not_examined","website":"https://saules-be.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":708,"name":"Schelten","canton":"BE","status":"not_examined","website":"https://www.gemeinde-schelten.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Official municipality now uses gemeinde-schelten.ch; identity verified. Reviewed public pages yielded no PDF archive, so no download source was added.","publications":[]},{"bfs_id":709,"name":"Seehof","canton":"BE","status":"not_examined","website":null,"vendor":null,"reachable":null,"checked":null,"checked_by":null,"notes":null,"publications":[]},{"bfs_id":711,"name":"Sorvilier","canton":"BE","status":"not_examined","website":"https://www.sorvilier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":713,"name":"Tavannes","canton":"BE","status":"configured","website":"https://tavannes.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"7 Assemblee municipale PVs (anchor text is the date) plus 36 'Informations - Decisions du Conseil municipal' bulletins (document_kind decisions) as a second source with body executive; Crawl-delay 10","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://tavannes.ch/assemblee-municipale/","from":"2023-06-26","to":"2026-08-25","cadence":null,"obstacle":null,"how":"html_links, 2 sources, 1 hop each (assembly PVs; executive decision bulletins as second source)"},{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://tavannes.ch/communication-de-decisions-du-conseil-municipal/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":715,"name":"Rebévelier","canton":"BE","status":"not_examined","website":null,"vendor":null,"reachable":null,"checked":null,"checked_by":null,"notes":null,"publications":[]},{"bfs_id":716,"name":"Petit-Val","canton":"BE","status":"not_examined","website":"http://www.petit-val.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.petit-val.ch/1003-autorites-communales-conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":717,"name":"Valbirse","canton":"BE","status":"candidate","website":"https://www.valbirse.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.valbirse.ch/1122-politiques-locales-proces-verbaux-du-cg","from":null,"to":"2025-11-24","cadence":null,"obstacle":null,"how":"probe: 46 dated PDF links on the page, newest 2025-11-24, e.g. 'PV du 24 novembre 2025'; body guessed from the URL"}]},{"bfs_id":723,"name":"La Neuveville","canton":"BE","status":"candidate","website":"https://www.laneuveville.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.laneuveville.ch/seances","from":"2009","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 79 sessions since 2009; minutes attached to the session pages as 'Pv26-06-24'"}]},{"bfs_id":724,"name":"Nods","canton":"BE","status":"not_examined","website":"https://nods.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":726,"name":"Plateau de Diesse","canton":"BE","status":"not_examined","website":"https://www.leplateaudediesse.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.leplateaudediesse.ch/autorites-administration/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":731,"name":"Aegerten","canton":"BE","status":"candidate","website":"https://www.aegerten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aegerten.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2025-12-01, e.g. 'Protokoll der ordentlichen Gemeindeversammlung vom 1. Dezemb'; body guessed from the URL"}]},{"bfs_id":732,"name":"Bellmund","canton":"BE","status":"not_examined","website":"http://www.bellmund.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.bellmund.ch/de/veranstaltungen/detail/detail.php?i=112)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":733,"name":"Brügg","canton":"BE","status":"configured","website":"https://www.bruegg.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"'Die Beschluesse' press release per assembly (decision record); exactly three documents","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.bruegg.ch/de/politik/gemeindeversammlung/","from":"2024-12-12","to":"2025-12-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date_regex on the file name GV-yymmdd.pdf with date_order ymd"}]},{"bfs_id":734,"name":"Bühl","canton":"BE","status":"not_examined","website":"https://www.buehl.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.buehl.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/, https://www.buehl.ch/de/burgergemeinde/burgergemeindeversammlung-22-05-2026/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":735,"name":"Epsach","canton":"BE","status":"not_examined","website":"https://www.epsach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":736,"name":"Hagneck","canton":"BE","status":"not_examined","website":"https://hagneck.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://hagneck.ch/behoerden/#gemeinde)","publications":[]},{"bfs_id":737,"name":"Hermrigen","canton":"BE","status":"configured","website":"http://www.hermrigen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://hermrigen.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":738,"name":"Jens","canton":"BE","status":"not_examined","website":"https://www.jens.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.jens.ch/de/politik-behoerden/gemeindeversammlung/, https://www.jens.ch/de/aktuell/news/news-details/gemeindeversammlung-vom-01062026-1/, https://www.jens.ch/de/aktuell/agenda/details/sitzung-des-gemeinderates-1/)","publications":[]},{"bfs_id":739,"name":"Ipsach","canton":"BE","status":"candidate","website":"https://www.ipsach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ipsach.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2025-12-05","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2025-12-05, e.g. 'Protokoll der Gemeindeversammlung vom 05.12.2025'; body guessed from the URL"}]},{"bfs_id":740,"name":"Ligerz","canton":"BE","status":"candidate","website":"https://www.ligerz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ligerz.ch/sitzung","from":"2025","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 2 sessions since 2025; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 18.06.2025'"}]},{"bfs_id":741,"name":"Merzligen","canton":"BE","status":"not_examined","website":"https://www.merzligen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://merzligen.ch/politik-behoerden/gemeindeversammlung/, https://merzligen.ch/gemeinderatssitzung-vom-10-august-2026/)","publications":[]},{"bfs_id":742,"name":"Mörigen","canton":"BE","status":"candidate","website":"https://www.moerigen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Drupal host 149.126.4.115; wave 2: one assembly protocol online (Drupal, ruf.ch egovpublic), no archive page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.moerigen.ch/politik","from":"2025-12-01","to":"2025-12-01","cadence":null,"obstacle":"/politik links one node 'Protokoll GV 01.12.2025' (/node/1256) with one PDF; no archive page, /aktuelles/publikationen has none; one document, below the three-document threshold","how":"revisit when more assemblies accumulate"}]},{"bfs_id":743,"name":"Nidau","canton":"BE","status":"upstream_only","website":"https://www.nidau.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. wAssets PDF storage with year-specific parliamentary HTML pages Scoped section navigation collects history without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_743.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":744,"name":"Orpund","canton":"BE","status":"candidate","website":"http://www.orpund.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.orpund.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-06-10, e.g. 'Botschaft Gemeindeversammlung vom 10. Juni 2026'; body guessed from the URL"}]},{"bfs_id":745,"name":"Port","canton":"BE","status":"candidate","website":"https://www.port.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.port.ch/sitzung","from":"2013","to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 25 sessions since 2013; minutes attached to the session pages as 'Protokoll GV 4. Juni 2026'"}]},{"bfs_id":746,"name":"Safnern","canton":"BE","status":"candidate","website":"https://www.safnern.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.safnern.ch/de/politik/gemeindeversammlung/index.php","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 60 dated PDF links on the page, newest 2026-06-10, e.g. 'Beschlüsse'; body guessed from the URL"}]},{"bfs_id":747,"name":"Scheuren","canton":"BE","status":"not_examined","website":"https://scheuren.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals. Registered former domain redirects to scheuren.ch; website corrected to this official destination.","publications":[]},{"bfs_id":748,"name":"Schwadernau","canton":"BE","status":"not_examined","website":"http://www.schwadernau.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.schwadernau.ch/politik/gemeindeversammlungen) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":749,"name":"Studen","canton":"BE","status":"not_examined","website":"https://www.studen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. DynaSite-style /appl/download.php query filename route Scoped section navigation collects history without title filters.","publications":[]},{"bfs_id":750,"name":"Sutz-Lattrigen","canton":"BE","status":"candidate","website":"http://www.sutz-lattrigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sutz-lattrigen.ch/de/politik/gemeindeversammlung/","from":null,"to":"2025-06-04","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2025-06-04, e.g. '04 Juni 2025'; body guessed from the URL"}]},{"bfs_id":751,"name":"Täuffelen","canton":"BE","status":"not_examined","website":"http://www.taeuffelen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.taeuffelen.ch/de/startseite/de/aktuell/unterlagen-gemeindeversammlung/)","publications":[]},{"bfs_id":754,"name":"Walperswil","canton":"BE","status":"candidate","website":"https://www.walperswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.walperswil.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: 6 dated PDF links on the page, newest 2025-11-26, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":755,"name":"Worben","canton":"BE","status":"candidate","website":"https://www.worben.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.worben.ch/de/politik/gemeindeversammlung/","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2025-12-01, e.g. 'Abstimmungsresultate der Gemeindeversammlung vom 01.12.2025'; body guessed from the URL"}]},{"bfs_id":756,"name":"Twann-Tüscherz","canton":"BE","status":"candidate","website":"https://www.twann-tüscherz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.xn--twann-tscherz-2ob.ch/sitzung","from":"2015","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 22 sessions since 2015; minutes attached to the session pages as 'Protokoll GV 2026-01 vom 22.06.2026'"}]},{"bfs_id":761,"name":"Därstetten","canton":"BE","status":"not_examined","website":"https://www.daerstetten.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.daerstetten.ch/de/startseite/de/behoerden/gemeindeversammlung/) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":762,"name":"Diemtigen","canton":"BE","status":"not_examined","website":"https://www.diemtigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.diemtigen.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":763,"name":"Erlenbach im Simmental","canton":"BE","status":"configured","website":"https://www.erlenbach-be.ch","vendor":"weblication","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Gemeindeversammlung 27. November 2025' -> Protokoll-2.-Sitzung-Einwohnergemeindeversammlung-vom-27.11.2025-mit-Unterschriften.pdf; 19 found 19 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.erlenbach-be.ch/de/politik-und-verwaltung/politik/gemeindeversammlung-protokolle-gemeindeversammlung.php","from":"2016","to":"2025","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":766,"name":"Oberwil im Simmental","canton":"BE","status":"candidate","website":"https://www.oberwil-im-simmental.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"executive","kind":"decisions","status":"candidate","listing_url":"https://oberwil-im-simmental.ch/wp-json/wp/v2/media?search=beschl&mime_type=application/pdf&per_page=20","from":null,"to":"2024-12-02","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 7 files match, newest 2024-12-02, e.g. 'PublikationBeschlüsseEWGOberwil_02.12.2024'; body guessed from the URL"}]},{"bfs_id":767,"name":"Reutigen","canton":"BE","status":"not_examined","website":"http://www.reutigen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2015 (ABGESAGT: Gemeindeversammlung, ABGESAGT: Gemeindeversammlung - Neu: Urnenabstimmu, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":768,"name":"Spiez","canton":"BE","status":"configured","website":"https://www.spiez.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Grosser Gemeinderat; 24 in validation (5 sessions followed plus 19 archive); one archive file is misnamed by the commune (GGR_2014_01_12.pdf for 1 Dec 2014) and parses as 2014-01-12; probe hit was protokolle.php","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.spiez.ch/de/politik/cdws/ggr/gremium.php?gid=72216e76123f44a8ba8b8be1ff88ebfe","from":"2014-01-12","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, cdws council module 2 hops (gremium page -> sitzung.php?gid= anchor '287 ( Mo, 24.11.2025 )' -> dok.php?...filename=Sitzungsprotokoll_...&sitzungsdatum=dd.mm.yyyy, date from the sitzungsdatum query parameter), max_follow 80; plus a 1-hop archive source"},{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.spiez.ch/de/politik/grosser-gemeinderat/protokolle.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":769,"name":"Wimmis","canton":"BE","status":"candidate","website":"https://www.wimmis.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wimmis.ch/einwohnergemeinde/politik/gemeindeversammlung/versammlungsbeschluesse.html/329","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-04, e.g. 'Medienmitteilung Gemeindeversammlung 4. Juni 2026'; body guessed from the URL"}]},{"bfs_id":770,"name":"Stocken-Höfen","canton":"BE","status":"candidate","website":"http://www.stocken-hoefen.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.stocken-hoefen.ch/l1/politik-gemeindeversammlung-gemeinde-stocken-hoefen-thun-stockhorn-stockental.php","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-12, e.g. 'Gemeindeversammlung vom 12. Juni 2026'; body guessed from the URL"}]},{"bfs_id":782,"name":"Guttannen","canton":"BE","status":"not_examined","website":"https://www.guttannen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://guttannen.ch/gemeindeversammlung.html)\n\n2026-09-26 coverage review: Reviewed official public document sections and representative robots-permitted PDF bytes. Historical finance, assembly and regulations PDFs collected without title filters; any shared storage permissions are limited to reviewed municipality-specific directories or exact linked files.\n\n2026-09-26 server verification: public HTML pages returned HTTP 401 on Hetzner, while a directly linked PDF returned robots-permitted HTTP 206 with PDF bytes. Added 34 exact observed official PDF links as durable snapshot seeds; future HTML discovery still depends on page access.","publications":[]},{"bfs_id":783,"name":"Hasliberg","canton":"BE","status":"candidate","website":"https://www.hasliberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hasliberg.ch/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeindeversammlung' with 20 dated minutes links, e.g. 'Protokoll 03.06.2026'"}]},{"bfs_id":784,"name":"Innertkirchen","canton":"BE","status":"not_examined","website":"https://www.innertkirchen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2019 (Gemeindeversammlung, a.o. Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":785,"name":"Meiringen","canton":"BE","status":"candidate","website":"https://www.meiringen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.meiringen.ch/sitzung","from":"2014","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 29 sessions since 2014; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 22.06.2026'"}]},{"bfs_id":786,"name":"Schattenhalb","canton":"BE","status":"not_examined","website":"http://www.schattenhalb.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":791,"name":"Boltigen","canton":"BE","status":"candidate","website":"https://www.boltigen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boltigen.ch/behoerden/gemeindeversammlung/ausserordentliche-gemeindeversammlung-vom-22-juli-2025.html/112","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":792,"name":"Lenk","canton":"BE","status":"not_examined","website":"https://www.lenkgemeinde.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 0 sessions since  (); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":793,"name":"St. Stephan","canton":"BE","status":"not_examined","website":"http://www.ststephan.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.ststephan.ch/de/Gemeindeorganisation/Gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":794,"name":"Zweisimmen","canton":"BE","status":"not_examined","website":"https://www.zweisimmen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":841,"name":"Gsteig","canton":"BE","status":"candidate","website":"https://www.gsteig.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gsteig.ch/sitzung","from":"2024","to":"2026-05-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 5 sessions since 2024; minutes attached to the session pages as 'Protokoll vom 29.05.2026'"}]},{"bfs_id":842,"name":"Lauenen","canton":"BE","status":"not_examined","website":"http://www.lauenen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 46 sessions since 2004 (Ausserordentliche Versammlung, Gemeindeversammlung, Ordentliche Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":843,"name":"Saanen","canton":"BE","status":"not_examined","website":"https://www.saanen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.saanen.ch/de/politik/gemeindeversammlung/, https://www.saanen.ch/de/politik/gemeinderat/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":852,"name":"Guggisberg","canton":"BE","status":"configured","website":"https://www.guggisberg-be.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.guggisberg-be.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":853,"name":"Rüschegg","canton":"BE","status":"configured","website":"http://www.rueschegg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.rueschegg.ch/wp-json/wp/v2/media?search=beschl","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":855,"name":"Schwarzenburg","canton":"BE","status":"candidate","website":"https://www.schwarzenburg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune WordPress API verification","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schwarzenburg.ch/politik/gemeindeversammlung/gemeindeversammlung-15-06-2026/","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-15, e.g. 'Botschaft Gemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":861,"name":"Belp","canton":"BE","status":"configured","website":"https://www.belp.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Gemeindeversammlung","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.belp.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":"2020-09-03","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from the file name (Protokoll-GV-18.06.2026.pdf)"}]},{"bfs_id":863,"name":"Burgistein","canton":"BE","status":"not_examined","website":"https://www.burgistein.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.burgistein.ch/de/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":866,"name":"Gerzensee","canton":"BE","status":"candidate","website":"https://www.gerzensee.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gerzensee.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-06-08, e.g. 'Protokoll vom 8. Juni 2026'; body guessed from the URL"}]},{"bfs_id":867,"name":"Gurzelen","canton":"BE","status":"not_examined","website":"https://www.gurzelen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.gurzelen.ch/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":868,"name":"Jaberg","canton":"BE","status":"not_examined","website":"http://www.jaberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":869,"name":"Kaufdorf","canton":"BE","status":"not_examined","website":"https://www.kaufdorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":870,"name":"Kehrsatz","canton":"BE","status":"blocked_js","website":"https://www.kehrsatz.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":872,"name":"Kirchdorf","canton":"BE","status":"not_examined","website":"https://www.kirchdorf-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.kirchdorf-be.ch/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":877,"name":"Niedermuhlern","canton":"BE","status":"candidate","website":"http://www.niedermuhlern.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://niedermuhlern.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 28 files match, newest 2026-06-16, e.g. 'Kurzprotokoll GV vom 16.06.2026'; body guessed from the URL"}]},{"bfs_id":879,"name":"Riggisberg","canton":"BE","status":"candidate","website":"http://www.riggisberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.riggisberg.ch/de/politik/gemeindeversammlung","from":null,"to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: 35 dated PDF links on the page, newest 2026-06-22, e.g. '2026_06_22_GV_Protokoll.pdf'; body guessed from the URL"}]},{"bfs_id":880,"name":"Rüeggisberg","canton":"BE","status":"not_examined","website":"https://www.rueggisberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":883,"name":"Seftigen","canton":"BE","status":"candidate","website":"http://www.seftigen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://seftigen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 20 files match, newest 2026-06-01, e.g. 'Protokoll GV 01.06.2026'; body guessed from the URL"}]},{"bfs_id":884,"name":"Toffen","canton":"BE","status":"not_examined","website":"http://www.toffen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 5 sessions since 2024 (Gemeindeversammlung vom); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":885,"name":"Uttigen","canton":"BE","status":"candidate","website":"https://www.uttigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.uttigen.ch/de/politik/gemeindeversammlung/","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 4 dated PDF links on the page, newest 2026-06-12, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":886,"name":"Wattenwil","canton":"BE","status":"not_examined","website":"https://www.wattenwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.wattenwil.ch/de/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":888,"name":"Wald","canton":"BE","status":"candidate","website":"https://www.wald-be.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wald-be.ch/de/politik/gemeindeversammlung","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-10, e.g. 'Protokoll GV 10. Juni 2026'; body guessed from the URL"}]},{"bfs_id":889,"name":"Thurnen","canton":"BE","status":"not_examined","website":"https://thurnen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.thurnen.ch/de/verwaltung-und-politik/politik/gemeindeversammlung/, https://www.thurnen.ch/de/veranstaltungen/13_gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":901,"name":"Eggiwil","canton":"BE","status":"candidate","website":"https://www.eggiwil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.eggiwil.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-05-27, e.g. 'Gemeindeversammlung 27.05.2026'; body guessed from the URL"}]},{"bfs_id":902,"name":"Langnau im Emmental","canton":"BE","status":"configured","website":"https://www.langnau-ie.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.langnau-ie.ch/politik-verwaltung/politik/grosser-gemeinderat/sitzungsunterlagen.html/35","from":"2026-03-16","to":"2026-06-22","cadence":null,"obstacle":"partial: Grosser Gemeinderat; each news page has the Protokoll plus Beschlussprotokoll and Vorlagen; the news archive (.../35/newsarchive/1) is a POST search form, so the history is not reachable; validated with follow capped at 3; report status ok, register partial","how":"html_links, 2 hops (six newest news items -> news page 'Protokoll GGR-Sitzung ...'), max_follow 80; history needs POST news-archive support"}]},{"bfs_id":903,"name":"Lauperswil","canton":"BE","status":"candidate","website":"https://www.lauperswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lauperswil.ch/aus-lauperswil/gemeindeversammlung","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-06-04, e.g. 'Protokoll der Einwohnergemeindeversammlung vom 04.06.2026'; body guessed from the URL"}]},{"bfs_id":904,"name":"Röthenbach im Emmental","canton":"BE","status":"not_published","website":"https://www.roethenbach.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.roethenbach.ch/politikverwaltung/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"only the upcoming assembly node and a link to a history page; no protocol links (archive page not fetched)","how":"check the archive page"}]},{"bfs_id":905,"name":"Rüderswil","canton":"BE","status":"not_published","website":"https://www.ruederswil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Drupal with top-level slugs (/gemeinderat, /verwaltung, /wahlen-abstimmungen); wave 2: no Gemeindeversammlung, Protokoll or Publikationen page on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.ruederswil.ch","from":null,"to":null,"cadence":null,"obstacle":"Drupal site with a flat menu (Aktuelles, Agenda, Gemeinderat, Kommissionen, Wahlen & Abstimmungen, Verwaltung, Online Schalter); neither the homepage (40 links) nor the Verwaltung page (33 links) carries a Gemeindeversammlung, Protokoll or Publikationen page","how":null}]},{"bfs_id":906,"name":"Schangnau","canton":"BE","status":"not_examined","website":"http://www.schangnau.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":907,"name":"Signau","canton":"BE","status":"candidate","website":"http://www.signau.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.signau.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 28 dated PDF links on the page, newest 2026-06-08, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":908,"name":"Trub","canton":"BE","status":"candidate","website":"https://www.trub.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.trub.ch/politik/gemeindeversammlung/protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokolle' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":909,"name":"Trubschachen","canton":"BE","status":"not_examined","website":"https://www.trubschachen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.trubschachen.ch/politik/organisation/gemeindeversammlungen/)","publications":[]},{"bfs_id":921,"name":"Amsoldingen","canton":"BE","status":"configured","website":"https://www.amsoldingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Gemeindeversammlung vom 09.12.2025' -> /images/files/gemeindeversammlung/GV-20251209_Protokoll-genehmigt.pdf; 8 found 8 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://amsoldingen.ch/politik/gemeindeversammlung","from":"2019","to":"2025","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":922,"name":"Blumenstein","canton":"BE","status":"not_examined","website":"https://www.blumenstein.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.blumenstein.ch/behoerden/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":923,"name":"Buchholterberg","canton":"BE","status":"candidate","website":"https://www.buchholterberg.ch/","vendor":"govis","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.heimenschwand.ch to https://www.buchholterberg.ch/. 22 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buchholterberg.ch/politik/gemeindeversammlung.html/64","from":null,"to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2025-11-26, e.g. 'Protokoll GV 26.11.2025'; body guessed from the URL"}]},{"bfs_id":924,"name":"Eriz","canton":"BE","status":"candidate","website":"https://www.eriz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.eriz.ch/behoerden/gemeindeversammlung","from":null,"to":"2025-11-25","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2025-11-25, e.g. 'Gemeindeversammlungsprotokoll'; body guessed from the URL"}]},{"bfs_id":925,"name":"Fahrni","canton":"BE","status":"not_examined","website":"https://www.gemeinde-fahrni.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":927,"name":"Heiligenschwendi","canton":"BE","status":"not_examined","website":"http://www.heiligenschwendi.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (http://www.heiligenschwendi.ch/gemeindeversammlung.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":928,"name":"Heimberg","canton":"BE","status":"candidate","website":"https://www.heimberg.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: partial, one assembly protocol online; the news archive was checked without result","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.heimberg.ch/politik/gemeindeversammlung.html","from":"2026-06-29","to":"2026-06-29","cadence":null,"obstacle":"only the latest assembly (29.06.2026: Protokoll, Ergebnisse, Folien, Botschaft as fileadmin PDFs) is on the page; the paginated news archive (10 pages) lists 'Publikation' and 'Medienmitteilungen' items whose anchor texts never name an assembly, so no archive of protocols was found; one document, below the three-document threshold","how":"html_links, 1 hop, would take the current Protokoll; revisit when more assemblies accumulate on the page or an archive appears"}]},{"bfs_id":929,"name":"Hilterfingen","canton":"BE","status":"not_published","website":"https://www.hilterfingen.ch","vendor":"incms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"docs/VENDOR-PATTERNS.md agrees: inCMS, vote-result sheets 2008-2026 (32 found, 32 dated offline, 'Resultate der ordentlichen Gemeindeversammlung vom 03.06.2026'), results only; robots disallows /upload/; register guess: document_kind agenda_only for Botschaft plus vote-result sheets\n\n2026-09-26 coverage review: Reviewed mixed public document archives and representative PDF response bytes. inCMS-style root-level PDF links; /upload/ robots-disallowed Scoped section navigation collects history without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.hilterfingen.ch/archiv/gemeindeversammlungen/","from":null,"to":null,"cadence":null,"obstacle":"archive has Botschaft, Abstimmungsresultate and 'Protokoll der Urnenabstimmung' per assembly, but no assembly minutes","how":"ask commune"}]},{"bfs_id":931,"name":"Homberg","canton":"BE","status":"not_examined","website":"https://www.homberg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":932,"name":"Horrenbach-Buchen","canton":"BE","status":"candidate","website":"https://www.horrenbach-buchen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://horrenbach-buchen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-03-17","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2025-03-17, e.g. '2025-03-17 Besprechungsprotokoll zum Infoanlass'; body guessed from the URL"}]},{"bfs_id":934,"name":"Oberhofen am Thunersee","canton":"BE","status":"not_examined","website":"https://www.oberhofen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":935,"name":"Oberlangenegg","canton":"BE","status":"not_examined","website":"https://www.oberlangenegg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 3 sessions since 2025 (Einwohnergemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":936,"name":"Pohlern","canton":"BE","status":"not_examined","website":"http://www.pohlern.ch","vendor":null,"reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.pohlern.ch/pohleren%20-%20affinity/sitzungszimmer.htm, https://www.pohlern.ch/pohleren%20-%20affinity/gemeindeversammlung.htm)","publications":[]},{"bfs_id":938,"name":"Sigriswil","canton":"BE","status":"not_examined","website":"http://www.sigriswil.ch","vendor":null,"reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.sigriswil.ch/de/politik-verwaltung/politik/gemeindeversammlung/?navid=224957224957)","publications":[]},{"bfs_id":939,"name":"Steffisburg","canton":"BE","status":"configured","website":"http://www.steffisburg.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.steffisburg.ch/de/politik-verwaltung/politik/grosser-gemeinderat-ggr-protokolle.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":940,"name":"Teuffenthal","canton":"BE","status":"not_examined","website":"https://www.teuffenthal.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":941,"name":"Thierachern","canton":"BE","status":"not_examined","website":"https://www.thierachern.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":942,"name":"Thun","canton":"BE","status":"upstream_only","website":"http://www.thun.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Stadtrat; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_942.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":943,"name":"Uebeschi","canton":"BE","status":"configured","website":"http://www.uebeschi.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Protokoll der Gemeindeversammlung', 'Botschaft fuer die Gemeindeversammlung' -> /images/files/gemeindeversammlung/2026-Juni/Protokoll-Gemeindeversammlung-15.06.2026.pdf; 7 found, 6 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://uebeschi.ch/behoerden/gemeindeversammlung","from":"2023","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":944,"name":"Uetendorf","canton":"BE","status":"configured","website":"https://www.uetendorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"validated with follow capped at 2; Erlaeuterungen next to the protocols","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.uetendorf.ch/politik/gemeindeversammlung.html/237","from":"2025-03-10","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 2 hops (year pages 2015-2026 -> 'Protokoll Gemeindeversammlung vom dd.mm.yyyy'), max_follow 80"}]},{"bfs_id":945,"name":"Unterlangenegg","canton":"BE","status":"candidate","website":"http://www.unterlangenegg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 73 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.unterlangenegg.ch/politik/gemeindeversammlung/","from":null,"to":"2025-06-04","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2025-06-04, e.g. 'Gemeindeversammlung vom 4. Juni 2025'; body guessed from the URL"}]},{"bfs_id":946,"name":"Wachseldorn","canton":"BE","status":"not_examined","website":"http://www.wachseldorn.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":948,"name":"Forst-Längenbühl","canton":"BE","status":"candidate","website":"https://www.forst-laengenbuehl.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.forst-laengenbuehl.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 4 dated PDF links on the page, newest 2026-06-08, e.g. 'Gemeindeversammlung vom 08.06.2026'; body guessed from the URL"}]},{"bfs_id":951,"name":"Affoltern im Emmental","canton":"BE","status":"candidate","website":"http://www.affolternimemmental.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.affolternimemmental.ch/de/aktuelles/meldungen/Publikation-Genehmigung-Protokoll-GV-04.12.2025.php","from":null,"to":"2025-12-04","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-12-04, e.g. 'das Protokoll'; body guessed from the URL"}]},{"bfs_id":952,"name":"Dürrenroth","canton":"BE","status":"candidate","website":"https://www.duerrenroth.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.duerrenroth.ch/politik/gemeindeversammlung","from":null,"to":"2025-12-09","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-12-09, e.g. 'Protokoll GV vom 9 Dezember 2025'; body guessed from the URL"}]},{"bfs_id":953,"name":"Eriswil","canton":"BE","status":"candidate","website":"https://www.eriswil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.eriswil.ch/de/behoerden-und-politik/gemeindeversammlung/","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 21 dated PDF links on the page, newest 2026-06-03, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":954,"name":"Huttwil","canton":"BE","status":"configured","website":"https://www.huttwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"'Protokoll vom ...' per assembly on the assembly page","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.huttwil.ch/politik/gemeindeversammlung.html/59","from":"2023-06-13","to":"2026-06-09","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":955,"name":"Lützelflüh","canton":"BE","status":"not_published","website":"https://www.luetzelflueh.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.luetzelflueh.ch/de/gemeinde/aktuell/agenda/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"assembly page has no Protokoll","how":"ask commune"}]},{"bfs_id":956,"name":"Rüegsau","canton":"BE","status":"configured","website":"https://www.ruegsau.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"anchor text 'Protokoll GV vom 01.06.2022', relative hrefs inhalte/04_Politik/...; same agency template as Baetterkinden","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.ruegsau.ch/de/politik/gemeindeversammlung/","from":"2022-06-01","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 1 hop, selector on 'inhalte/'"}]},{"bfs_id":957,"name":"Sumiswald","canton":"BE","status":"configured","website":"https://www.sumiswald.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.sumiswald.ch/de/politik/gemeindeversammlung.php","from":"2010-06-22","to":"2026-06-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":958,"name":"Trachselwald","canton":"BE","status":"candidate","website":"https://www.trachselwald.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.trachselwald.ch/politik/gemeindeversammlung/unterlagen-protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeindeversammlung' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":959,"name":"Walterswil","canton":"BE","status":"not_examined","website":"https://www.walterswil-be.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://walterswil-be.ch/gemeindeversammlung/)","publications":[]},{"bfs_id":960,"name":"Wyssachen","canton":"BE","status":"not_published","website":"http://www.wyssachen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Drupal host 149.126.4.110 (same family as Kerzers); docs/VENDOR-PATTERNS.md agrees: Politik pages hold regulations only Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.wyssachen.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"GV page has no document links","how":"ask commune"}]},{"bfs_id":971,"name":"Attiswil","canton":"BE","status":"not_examined","website":"https://www.attiswil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.attiswil.ch/de/startseite/de/behoerden-politik/gemeindeversammlung/) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":972,"name":"Berken","canton":"BE","status":"candidate","website":"https://www.berken.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.berken.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 8 files match, newest 2025-11-26, e.g. 'ProtokollEGV_26.11.2025'; body guessed from the URL"}]},{"bfs_id":973,"name":"Bettenhausen","canton":"BE","status":"candidate","website":"http://www.bettenhausen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bettenhausen.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 33 dated PDF links on the page, newest 2026-06-17, e.g. 'Protokoll vom 17.06.2026'; body guessed from the URL"}]},{"bfs_id":975,"name":"Farnern","canton":"BE","status":"candidate","website":"https://www.farnern.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated; 2026-09-13 bounded archive review: 28 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.farnern.ch/2025/12/08/protokoll-der-gemeindeversammlung-vom-1-dezember-2025/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokoll der Gemeindeversammlung vom 22' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":976,"name":"Graben","canton":"BE","status":"not_examined","website":"https://www.graben.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed official public document sections and representative robots-permitted PDF bytes. Historical finance, assembly and regulations PDFs collected without title filters; any shared storage permissions are limited to reviewed municipality-specific directories or exact linked files.","publications":[]},{"bfs_id":977,"name":"Heimenhausen","canton":"BE","status":"candidate","website":"https://www.heimenhausen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.heimenhausen.ch/politik/gemeindeversammlungen","from":null,"to":"2024-11-25","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2024-11-25, e.g. '25.11.2024'; body guessed from the URL"}]},{"bfs_id":979,"name":"Herzogenbuchsee","canton":"BE","status":"configured","website":"https://www.herzogenbuchsee.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.herzogenbuchsee.ch/politik/gemeindeversammlung/protokoll-gemeindeversammlung.html/147","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":980,"name":"Inkwil","canton":"BE","status":"configured","website":"https://www.inkwil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"probe hit; 'Protokoll vom <date>' anchors; also in docs/VENDOR-PATTERNS.md: span.file--mime-application-pdf a, 6 found 6 dated offline","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.inkwil.ch/behoerden-politik/protokolle-gemeindeversammlung","from":"2023-12-13","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":981,"name":"Niederbipp","canton":"BE","status":"not_examined","website":"http://www.niederbipp.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":982,"name":"Niederönz","canton":"BE","status":"not_examined","website":"http://www.niederoenz.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.niederoenz.ch/gemeinde/gemeindeversammlung/gemeindeversammlung-10-juni-2026.html/137, https://www.niederoenz.ch/public/upload/assets/494/Protokoll%20Gemeindeversammlung%2010.%20Juni%202026.pdf?fp=1)","publications":[]},{"bfs_id":983,"name":"Oberbipp","canton":"BE","status":"not_examined","website":"https://www.oberbipp.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.oberbipp.ch/de/politik/, https://www.oberbipp.ch/de/veranstaltungen/285_gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":985,"name":"Ochlenberg","canton":"BE","status":"not_examined","website":"https://www.ochlenberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.ochlenberg.ch/gemeinde/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":987,"name":"Rumisberg","canton":"BE","status":"candidate","website":"http://www.rumisberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rumisberg.ch/politik/gemeindeversammlungen.html/35","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":988,"name":"Seeberg","canton":"BE","status":"candidate","website":"http://www.seeberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.seeberg.ch/politik/gemeindeversammlung/04122025.html/397","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":989,"name":"Thörigen","canton":"BE","status":"candidate","website":"http://www.thoerigen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.thoerigen.ch/aktuelles-info/beschluesse-des-gemeinderates-vom-25-08-2026.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Beschlüsse des Gemeinderates vom 25.08.2' has 2 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":990,"name":"Walliswil bei Niederbipp","canton":"BE","status":"candidate","website":"http://www.walliswil-bipp.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.walliswil-bipp.ch/walliswil-bipp/politik-verwaltung/politik/Gemeindeversammlung/gemeindeversammlung.php","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-06-23, e.g. 'GV Protokoll 23.06.2026'; body guessed from the URL"}]},{"bfs_id":991,"name":"Walliswil bei Wangen","canton":"BE","status":"not_examined","website":"http://www.walliswil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.walliswil.ch/politik-und-verwaltung/gemeindeversammlung)","publications":[]},{"bfs_id":992,"name":"Wangen an der Aare","canton":"BE","status":"not_examined","website":"https://www.wangen-a-a.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.wangen-a-a.ch/de/politik-verwaltung/politik/gemeindeversammlung/, https://www.wangen-a-a.ch/de/politik-verwaltung/politik/gemeindeversammlung/dok_geschaeft.php?did=0c2a4312af4144858b166d2657928956-332&geschaeft=Gemeindeversammlungs-Protokolle zum Aufschalten auf der Homepage&filename=Protokoll_Gemeindeversammlung_15.06.2026&v=1&r=Original&typ=pdf, https://www.wangen-a-a.ch/de/politik-verwaltung/politik/gemeindeversammlung/dok_geschaeft.php?did=8625e1cfb9444a049b031ae8d8146234-332&geschaeft=Gemeindeversammlungs-Protokolle zum Aufschalten auf der Homepage&filename=Protokoll_Gemeindeversammlung_01.12.2025&v=1&r=Original&typ=pdf)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":995,"name":"Wiedlisbach","canton":"BE","status":"candidate","website":"https://www.wiedlisbach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wiedlisbach.ch/politik/kommunikation/sitzungsentscheide-gemeinderat.html/440","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 43 dated protocol PDFs, e.g. 'Sitzungsentscheide Gemeinderat 31.08.202' (2026-08-31)"}]},{"bfs_id":2761,"name":"Aesch","canton":"BL","status":"candidate","website":"https://www.aesch.bl.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aesch.bl.ch/sitzung","from":"2006","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 60 sessions since 2006; minutes attached to the session pages as 'GV-Protokoll vom 15.06.2026'"}]},{"bfs_id":2762,"name":"Allschwil","canton":"BL","status":"configured","website":"https://www.allschwil.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.allschwil.ch/de/politik/einwohnerrat/traktanden-protokolle-beschluesse.php","from":"2007-02-14","to":"2026-06-16","cadence":null,"obstacle":"partial: Einwohnerrat; anchor text is just 'Protokoll'; 187 of 264 dated; files from 2000-2012 are named P20120523.pdf (yyyymmdd) and stay undated because date_regex allows one shape only; undated links back to 2000; report status ok, register partial (29 percent undated)","how":"html_links, 1 hop, 2 listing pages, date_regex on the URL folder dd-mm-yyyy; several date_regex shapes per source would date the rest"}]},{"bfs_id":2763,"name":"Arlesheim","canton":"BL","status":"configured","website":"https://www.arlesheim.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Gemeindeversammlung; only the current and previous year on the page; the 'Archiv' link goes to the news archive, not to older protocols; register guess: kept configured because no older protocols were found","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.arlesheim.ch/de/politik/Gemeindeversammlung/Unterlagen.php","from":"2023-12-14","to":"2026-06-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2764,"name":"Biel-Benken","canton":"BL","status":"candidate","website":"http://www.biel-benken.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.biel-benken.ch/de/politik/gemeindeversammlung/einladungen-protokolle/18-juni-2026.page/1063","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-18, e.g. 'Einladung EGV 1 vom 18. Juni 2026 - Traktanden und Anträge.p'; body guessed from the URL"}]},{"bfs_id":2765,"name":"Binningen","canton":"BL","status":"configured","website":"https://www.binningen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Einwohnerrat; 13 found, 12 dated, follow capped at 2; Beschluesse and audio files sit next to the protocol; generic anchor text 'Protokoll'","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.binningen.ch/de/gemeinde/politik/einwohnerrat/archiv-einwohnerrat-2003-bis-2025.html/179","from":"2025-01-27","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 2 hops (year pages 2003-2025 in archive plus current-year page -> 'Protokoll' PDF), date_regex ER-Protokoll_<nr>_dd_mm_yyyy, max_follow 80"}]},{"bfs_id":2766,"name":"Birsfelden","canton":"BL","status":"configured","website":"https://www.birsfelden.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Gemeindeversammlung; Beschlussprotokolle (decision minutes)","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.birsfelden.ch/de/verwaltung-politik/politik/gemeindeversammlung/","from":"2016-06-06","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 1 hop, 2 listing pages"}]},{"bfs_id":2767,"name":"Bottmingen","canton":"BL","status":"not_examined","website":"https://www.bottmingen.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://www.bottmingen.ch/de/verwaltung-politik/politik/gemeindeversammlung/, https://www.bottmingen.ch/de/veranstaltungen/12860_einwohnergemeindeversammlung, https://www.bottmingen.ch/de/veranstaltungen/12863_einwohnergemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2768,"name":"Ettingen","canton":"BL","status":"configured","website":"https://www.ettingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Beschlussprotokoll per session 2018-2026 plus 'Beschluesse' 2011-2018 (the report lists the 2011-2018 part as a decision record); needed the adapter's percent-decoding fix (vom%2010.%20Juni%202026.pdf); register guess: document_kind decisions for both parts because both are Beschluss documents","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.ettingen.ch/de/politik/gemeindeversammlung","from":"2011-03-24","to":"2026-06-10","cadence":null,"obstacle":null,"how":"html_links, 2 sources: 2 hops (22 dated session pages 2018-2026 -> Beschlussprotokoll) plus 1 hop for the 21 direct 'Beschluesse dd.mm.yyyy.pdf' links 2011-2018 on the listing page"}]},{"bfs_id":2769,"name":"Münchenstein","canton":"BL","status":"not_examined","website":"https://www.muenchenstein.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 101 sessions since 2000 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2770,"name":"Muttenz","canton":"BL","status":"candidate","website":"https://www.muttenz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.muttenz.ch/sitzung","from":"2004","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 101 sessions since 2004; minutes attached to the session pages as 'Beschlussprotokoll der Gemeindeversammlung vom 16.6.2026'"}]},{"bfs_id":2771,"name":"Oberwil","canton":"BL","status":"candidate","website":"http://www.oberwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberwil.ch/sitzung","from":"2001","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 105 sessions since 2001; minutes attached to the session pages as 'link zum Protokoll'"}]},{"bfs_id":2772,"name":"Pfeffingen","canton":"BL","status":"candidate","website":"http://www.pfeffingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.pfeffingen.ch/sitzung","from":"2011","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 36 sessions since 2011; minutes attached to the session pages as '1. GV-Beschlussprotokoll vom 17.03.2026'"}]},{"bfs_id":2773,"name":"Reinach","canton":"BL","status":"configured","website":"http://www.reinach-bl.ch","vendor":"weblication","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"Einwohnerrat; the site publishes decision lists ('Beschluesse der 520. Sitzung') as PDF; written minutes do not exist, only audio (erprotokoll.reinach-bl.ch); 144 Beschluesse PDFs, all undated; 164 of 203 anchors carry the date in title","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.reinach-bl.ch/de/politik/einwohnerrat/einwohnerratssitzungen.php","from":"2008","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2774,"name":"Schönenbuch","canton":"BL","status":"candidate","website":"http://www.schoenenbuch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.schoenenbuch.ch/politik/gemeindeversammlung.html/32","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-06-16, e.g. 'Beschlussprotokoll'; body guessed from the URL"}]},{"bfs_id":2775,"name":"Therwil","canton":"BL","status":"configured","website":"https://www.therwil.ch/","vendor":"weblication","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"Gemeindeversammlung; decisions are press releases; the probe hit is this page and its generic config finds the PDFs but only 6 to 8 of 17 get a date (those with a full date in the file name)","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.therwil.ch/de/politik-und-verwaltung/politik/gemeindeversammlung-beschluesse-der-gemeindeversammlungen.php","from":"2021","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2781,"name":"Blauen","canton":"BL","status":"not_examined","website":"https://www.blauen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 31 sessions since 2015 (Gemeindeversammlung, Gemeindeversammlung - ABGESAGT); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2782,"name":"Brislach","canton":"BL","status":"not_examined","website":"http://www.brislach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 73 sessions since 2001 (D'Hornvieh-Rundi, Gemeindeversammlung, Gemeindeversammlung vom 2. Dezember 2004, Gemeindeversammlung vom 20. April 2004,); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2783,"name":"Burg im Leimental","canton":"BL","status":"not_examined","website":"http://www.burg-il.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/burg-im-leimental/gemeindeverwaltung/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2784,"name":"Dittingen","canton":"BL","status":"candidate","website":"https://www.dittingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dittingen.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 38 dated PDF links on the page, newest 2026-06-15, e.g. 'Einladung zur Gemeindeversammlung vom 15. Juni 2026'; body guessed from the URL"}]},{"bfs_id":2785,"name":"Duggingen","canton":"BL","status":"candidate","website":"https://www.duggingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 91 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.duggingen.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 46 dated PDF links on the page, newest 2026-06-17, e.g. 'Einladung zur Gemeindeversammlung vom 17.06.2026'; body guessed from the URL"}]},{"bfs_id":2786,"name":"Grellingen","canton":"BL","status":"candidate","website":"https://www.grellingen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grellingen.ch/sitzung","from":"2016","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 32 sessions since 2016; minutes attached to the session pages as 'Beschlussprotokoll EGV 02062026'"}]},{"bfs_id":2787,"name":"Laufen","canton":"BL","status":"configured","website":"https://www.laufen-bl.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.laufen-bl.ch/politik/gemeindeversammlungen-fruehere-jahre.html/446","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":2788,"name":"Liesberg","canton":"BL","status":"not_examined","website":"http://www.liesberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page Review 2026-09-26: Verified public municipal newsletter PDF added as a reviewed seed. Current listing includes a CAPTCHA prompt; deeper discovery remains unresolved.","publications":[]},{"bfs_id":2789,"name":"Nenzlingen","canton":"BL","status":"not_examined","website":"https://www.baselland.ch/politik-und-behorden/gemeinden/nenzlingen","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/nenzlingen on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2790,"name":"Roggenburg","canton":"BL","status":"not_examined","website":"http://www.roggenburg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.roggenburg.ch/politik/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2791,"name":"Röschenz","canton":"BL","status":"not_examined","website":"http://www.roeschenz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 53 sessions since 2009 (ABGESAGT Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung (abgesagt), Gemeindeversammlung - abgesagt, Gemei); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2792,"name":"Wahlen","canton":"BL","status":"not_examined","website":"http://www.wahlen.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 500","publications":[]},{"bfs_id":2793,"name":"Zwingen","canton":"BL","status":"candidate","website":"https://www.zwingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zwingen.ch/sitzung","from":"2012","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 51 sessions since 2012; minutes attached to the session pages as '10.12.25_GV_Protokoll-V1.0'"}]},{"bfs_id":2821,"name":"Arisdorf","canton":"BL","status":"not_examined","website":"https://www.arisdorf.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/arisdorf/verwaltung/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2822,"name":"Augst","canton":"BL","status":"not_examined","website":"https://kanton.baselland.ch/gemeinden/augst","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/augst/politik-und-behoerden/gemeindeversammlung on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2823,"name":"Bubendorf","canton":"BL","status":"configured","website":"https://www.bubendorf.swiss","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Beschlussprotokolle","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.bubendorf.swiss/de/politik/gemeindeversammlung.php","from":"2019-06-18","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop, per-year archive folders on one page"}]},{"bfs_id":2824,"name":"Frenkendorf","canton":"BL","status":"configured","website":"https://www.frenkendorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.frenkendorf.ch/politik/behoerden/gemeindeversammlung.html/61","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":2825,"name":"Füllinsdorf","canton":"BL","status":"configured","website":"https://www.fuellinsdorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"validated with follow capped at 2","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.fuellinsdorf.ch/politik/einwohnergemeindeversammlung/archiv-egv.html/167","from":"2024-12-02","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (year pages 2014-2019, 2020-2026 -> 'Beschlussprotokoll der Einwohnergemeindeversammlung vom ...'), max_follow 80"}]},{"bfs_id":2826,"name":"Giebenach","canton":"BL","status":"not_examined","website":"http://www.giebenach.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/giebenach/politik-und-behoerden/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2827,"name":"Hersberg","canton":"BL","status":"not_examined","website":"http://www.hersberg.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/hersberg/gemeindeverwaltung/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2828,"name":"Lausen","canton":"BL","status":"configured","website":"https://www.lausen.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"assembly publishes 'Beschluesse EGV' (decision record) rather than a full Protokoll","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.lausen.ch/de/verwaltung-politik/politik/gemeindeversammlung/","from":"2020-12-16","to":"2026-03-25","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2829,"name":"Liestal","canton":"BL","status":"upstream_only","website":"https://www.liestal.ch/de","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2829.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2830,"name":"Lupsingen","canton":"BL","status":"candidate","website":"http://www.lupsingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lupsingen.ch/politik/gemeindeversammlung/einladungen-und-protokolle.html/95","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 61 dated PDF links on the page, newest 2026-06-17, e.g. 'Einladung EGV vom 17.06.2026'; body guessed from the URL"}]},{"bfs_id":2831,"name":"Pratteln","canton":"BL","status":"upstream_only","website":"https://www.pratteln.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2831.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2832,"name":"Ramlinsburg","canton":"BL","status":"not_examined","website":"http://www.ramlinsburg.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/ramlinsburg/gemeindeverwaltung/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2833,"name":"Seltisberg","canton":"BL","status":"configured","website":"https://www.seltisberg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Beschlussprotokoll PDFs; the newest also attached as 'Traktandum 1' of the next assembly; one undated 'ABSAGE' file; 195.48.58.86 template","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.seltisberg.ch/politik/gemeindeversammlung","from":"2020","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2834,"name":"Ziefen","canton":"BL","status":"blocked_js","website":"https://www.ziefen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":2841,"name":"Anwil","canton":"BL","status":"candidate","website":"https://www.anwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 6 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"executive","kind":"decisions","status":"candidate","listing_url":"https://www.anwil.ch/index.php?apid=1696991576&apparentid=5111256","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-04, e.g. 'Beschlüsse Geme…einde Anwil.'; body guessed from the URL"}]},{"bfs_id":2842,"name":"Böckten","canton":"BL","status":"candidate","website":"http://www.boeckten.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.boeckten.ch/politik/gemeindeversammlung.html/44","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2025-12-15, e.g. 'Beschlussprotokoll'; body guessed from the URL"}]},{"bfs_id":2843,"name":"Buckten","canton":"BL","status":"candidate","website":"https://www.buckten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Reviewed official public document sections and representative robots-permitted PDF bytes. Historical finance, assembly and regulations PDFs collected without title filters; any shared storage permissions are limited to reviewed municipality-specific directories or exact linked files.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buckten.ch/archiv/cms-page-template","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Archiv Hier finden Sie alle Protokolle u' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":2844,"name":"Buus","canton":"BL","status":"not_published","website":"https://www.buus.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.buus.ch/politik/gemeindeversammlungen","from":null,"to":null,"cadence":null,"obstacle":"GV page carries only a link to the event archive, no documents or nodes","how":"ask commune"}]},{"bfs_id":2845,"name":"Diepflingen","canton":"BL","status":"not_examined","website":"http://www.diepflingen.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/diepflingen/a-z/amtsanzeiger-diepflingen on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2846,"name":"Gelterkinden","canton":"BL","status":"candidate","website":"https://www.gelterkinden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.gelterkinden.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 26 dated PDF links on the page, newest 2026-06-17, e.g. 'Beschlussprotokoll GV 17.06.2026 Beschlussprotokoll-GV-17.06'; body guessed from the URL"}]},{"bfs_id":2847,"name":"Häfelfingen","canton":"BL","status":"candidate","website":"http://www.haefelfingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.haefelfingen.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-17, e.g. 'Beschlussprotokoll GV 17.06.2026'; body guessed from the URL"}]},{"bfs_id":2848,"name":"Hemmiken","canton":"BL","status":"not_published","website":"https://www.hemmiken.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"/politik/gemeindeversammlungen and /einwohnergemeindeversammlungen have no documents","how":"ask commune"}]},{"bfs_id":2849,"name":"Itingen","canton":"BL","status":"candidate","website":"https://www.itingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.itingen.ch/gemeindeversammlung","from":"2014","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 18 sessions since 2014; decisions attached to the session pages as 'EGV 01_17.06.2026_Beschlüsse zur Publikation'"}]},{"bfs_id":2850,"name":"Känerkinden","canton":"BL","status":"not_examined","website":"https://www.kaenerkinden.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.kaenerkinden.ch/politik/gemeindeversammlungen)","publications":[]},{"bfs_id":2851,"name":"Kilchberg","canton":"BL","status":"candidate","website":"https://www.kilchberg-bl.ch","vendor":"drupal","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune shared municipal source verification","notes":"Commune-specific PDF verified on the shared municipal website rue-ki-ze.ch, including the commune name on the first page. Do not attribute the entire shared website to this commune. Evidence and source URLs: docs/DRUPAL-REVIEW-2026-09-11.md. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2852,"name":"Läufelfingen","canton":"BL","status":"configured","website":"https://www.laeufelfingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"both 'Beschluesse der EGV vom ...' and 'Beschlussprotokoll vom ...' files per assembly; 195.48.58.86 template","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.laeufelfingen.ch/informationen/gemeindeversammlungen","from":"2019-12-05","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2853,"name":"Maisprach","canton":"BL","status":"not_examined","website":"https://www.maisprach.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/maisprach/politik-und-behoerden/gemeindeversammlung on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2854,"name":"Nusshof","canton":"BL","status":"not_examined","website":"http://www.nusshof.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/nusshof on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2855,"name":"Oltingen","canton":"BL","status":"not_examined","website":"https://kanton.baselland.ch/gemeinden/oltingen","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://kanton.baselland.ch/gemeinden/oltingen/gemeindeverwaltung/formulare-gesuche on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2856,"name":"Ormalingen","canton":"BL","status":"configured","website":"https://www.ormalingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Beschlussprotokoll PDFs under /system/files/; 195.48.58.86 Drupal product; also in docs/VENDOR-PATTERNS.md: Drupal view with views-field-field-protokoll column, 6 found 6 dated offline","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.ormalingen.ch/politik/gemeindeversammlungen","from":"2023-12-08","to":"2025-12-05","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2857,"name":"Rickenbach","canton":"BL","status":"configured","website":"http://www.rickenbach-bl.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.rickenbach-bl.ch/aktuelles/gemeindeversammlung-protokoll","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2858,"name":"Rothenfluh","canton":"BL","status":"candidate","website":"https://www.rothenfluh.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.rothenfluh.ch/politik-behoerden/gemeindeversammlung","from":null,"to":"2026-04-14","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-04-14, e.g. 'Beschlussprotokoll der EGV vom 14.04.2026'; body guessed from the URL"}]},{"bfs_id":2859,"name":"Rümlingen","canton":"BL","status":"not_examined","website":"https://www.ruemlingen.ch","vendor":"wordpress","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again","publications":[]},{"bfs_id":2860,"name":"Rünenberg","canton":"BL","status":"candidate","website":"http://www.ruenenberg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune shared municipal source verification","notes":"Commune-specific PDF verified on the shared municipal website rue-ki-ze.ch, including the commune name on the first page. Do not attribute the entire shared website to this commune. Evidence and source URLs: docs/DRUPAL-REVIEW-2026-09-11.md. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2861,"name":"Sissach","canton":"BL","status":"candidate","website":"https://www.sissach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.sissach.ch/sitzung","from":"2013","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2013; decisions attached to the session pages as 'Beschlüsse der Gemeindeversammlung vom 16.06.2026'"}]},{"bfs_id":2862,"name":"Tecknau","canton":"BL","status":"candidate","website":"https://www.tecknau.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.tecknau.ch/politik-behoerde/gemeindeversammlung","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: 33 dated PDF links on the page, newest 2026-06-23, e.g. 'Beschlussprotokoll BGV'; body guessed from the URL"}]},{"bfs_id":2863,"name":"Tenniken","canton":"BL","status":"configured","website":"https://www.tenniken.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Beschlussprotokoll PDFs on one page; URL slug ends in _old but is the linked page; 195.48.58.86 template","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.tenniken.ch/politik/veranstaltungen/gemeindeversammlungen_old","from":"2021-06-22","to":"2026-06-23","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2864,"name":"Thürnen","canton":"BL","status":"candidate","website":"http://www.thuernen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.thuernen.ch/sitzung","from":"2008","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 44 sessions since 2008; minutes attached to the session pages as 'Einwohnergemeindeversammlung vom 11. Dezember 2025 (Beschlussprotokoll)'"}]},{"bfs_id":2865,"name":"Wenslingen","canton":"BL","status":"candidate","website":"https://www.wenslingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.wenslingen.ch/politik-behoerden/gemeindeversammlung","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-06-23, e.g. 'Beschlussprotokoll EGV vom 23.06.2026'; body guessed from the URL"}]},{"bfs_id":2866,"name":"Wintersingen","canton":"BL","status":"not_examined","website":"https://www.wintersingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2867,"name":"Wittinsburg","canton":"BL","status":"not_examined","website":"http://www.wittinsburg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.wittinsburg.ch/politik/gemeindeversammlungen)","publications":[]},{"bfs_id":2868,"name":"Zeglingen","canton":"BL","status":"candidate","website":"http://www.zeglingen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune shared municipal source verification","notes":"Commune-specific PDF verified on the shared municipal website rue-ki-ze.ch, including the commune name on the first page. Do not attribute the entire shared website to this commune. Evidence and source URLs: docs/DRUPAL-REVIEW-2026-09-11.md. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2869,"name":"Zunzgen","canton":"BL","status":"candidate","website":"http://www.zunzgen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.zunzgen.ch/sitzung","from":"2012","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 81 sessions since 2012; decisions attached to the session pages as 'Beschlüsse BGV 06.2026'"}]},{"bfs_id":2881,"name":"Arboldswil","canton":"BL","status":"not_examined","website":"https://www.arboldswil.com","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Verified current official municipal website after an obsolete registered address; identity, document listings and PDF response bytes checked. Official Jimdo downloads redirect to the reviewed municipality-specific storage subdomain.","publications":[]},{"bfs_id":2882,"name":"Bennwil","canton":"BL","status":"candidate","website":"http://www.bennwil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"batch order reached after 44 communes and about 500 requests; not looked at; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.bennwil.ch/politik-behoerden/gemeindeversammlungen","from":null,"to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: 16 dated PDF links on the page, newest 2026-06-22, e.g. 'Beschlussprotokoll'; body guessed from the URL"}]},{"bfs_id":2883,"name":"Bretzwil","canton":"BL","status":"candidate","website":"https://www.bretzwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bretzwil.ch/de/verwaltung/Gemeindeversammlung/Buerger-und-Einwohnergemeindeversammlungen.php","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 30 dated PDF links on the page, newest 2026-06-12, e.g. 'Bürger- und Einwohnergemeindeversammlung 12.06.2026'; body guessed from the URL"}]},{"bfs_id":2884,"name":"Diegten","canton":"BL","status":"configured","website":"https://www.diegten.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.diegten.ch/politik/gemeindeversammlungen-0","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":2885,"name":"Eptingen","canton":"BL","status":"not_examined","website":"http://www.eptingen.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/eptingen/gemeindeverwaltung/gemeindereglemente on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2886,"name":"Hölstein","canton":"BL","status":"not_examined","website":"https://www.hoelstein.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: page 'Gemeindeversammlung' carries 11 protocol-like links without parseable dates: https://www.hoelstein.ch/gemeindeversammlung","publications":[]},{"bfs_id":2887,"name":"Lampenberg","canton":"BL","status":"not_examined","website":"http://www.lampenberg.ch","vendor":"unknown","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Exact public PDF links reviewed on https://www.baselland.ch/politik-und-behorden/gemeinden/lampenberg on 2026-09-26. HTML listings return HTTP 403 to the collector; separately published file links pass robots and full GET checks. This is a reviewed seed snapshot, not automatic discovery of subsequent additions.","publications":[]},{"bfs_id":2888,"name":"Langenbruck","canton":"BL","status":"configured","website":"http://www.langenbruck.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 31 sessions 2016-2026 (/gemeindeversammlung/buerger-und-einwohnergemeindeversammlung-vom-23-juni-2026/); 'Protokoll der Einwohnergemeindeversammlung vom 11. Dezember 2025', 'Protokoll der Buergergemeindeversammlung vom 7.12.16'; hop 1: 31 dated sessions, hop 2: 2 dated minutes on the 2026 page (documents_discovered is the hop-2 count); docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://langenbruck.ch/gemeindeversammlung/","from":"2016","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":2889,"name":"Lauwil","canton":"BL","status":"candidate","website":"https://www.lauwil.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lauwil.ch/de/politik-und-behoerden/gemeindeversammlung/","from":null,"to":"2026-08-24","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2026-08-24, e.g. 'Einladung zur Einwohnergemeindeversammlung vom 24.08.2026 ei'; body guessed from the URL"}]},{"bfs_id":2890,"name":"Liedertswil","canton":"BL","status":"not_examined","website":"https://www.liedertswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2891,"name":"Niederdorf","canton":"BL","status":"configured","website":"https://www.niederdorf.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Beschlussprotokoll EGV PDFs; a few undated; 195.48.58.86 template","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.niederdorf.ch/politik-behoerden/gemeindeversammlung","from":"2022","to":"2025-11-24","cadence":null,"obstacle":null,"how":"html_links, 1 hop, two listing pages (current page and archive)"}]},{"bfs_id":2892,"name":"Oberdorf","canton":"BL","status":"not_examined","website":"https://oberdorf.bl.ch","vendor":"drupal","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Reviewed official municipal website and public PDF bytes. New official Oberdorf BL site identifies the municipality at Dorfmattstrasse 6, 4436 Oberdorf; former registered domain no longer resolves. Current Drupal archive, regulations and historical assembly documents verified.","publications":[]},{"bfs_id":2893,"name":"Reigoldswil","canton":"BL","status":"not_examined","website":"https://www.reigoldswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2894,"name":"Titterten","canton":"BL","status":"not_examined","website":"https://www.titterten.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.titterten.ch/de/politik-behoerden/gemeindeversammlung/)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2895,"name":"Waldenburg","canton":"BL","status":"not_examined","website":"http://www.waldenburg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2701,"name":"Basel","canton":"BS","status":"candidate","website":"https://www.bs.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.bs.ch/apps/regierungsratsbeschluesse","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Regierungsratsbeschlüsse Jeden Mittwoch ' has 17 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":2702,"name":"Bettingen","canton":"BS","status":"configured","website":"https://www.bs.ch/bettingen","vendor":"canton-portal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"vendor corrected: canton Basel-Stadt portal (bs.ch), PDFs on media.bs.ch; robots Crawl-delay 10 honoured; anchor text uses u plus combining diaeresis so NFC normalisation is needed; Beschlussprotokoll files exist too (not taken); some older full protocols are split into page ranges","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.bs.ch/bettingen/politik/gemeindeversammlung","from":"2024-04-23","to":"2026-04-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop, text_regex 'Ausf.{1,3}hrliches Protokoll'"}]},{"bfs_id":2703,"name":"Riehen","canton":"BS","status":"upstream_only","website":"https://www.riehen.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"robots.txt asks for a crawl delay of 10 seconds, honoured (docs/CITY-SOURCES.md)\n\n2026-09-26 coverage review: Reviewed official municipal website and public PDF bytes. Riehen public finance and council archives verified; generic CDWS download handler carries explicit PDF type. Crawl delay of ten seconds retained.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2703.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2008,"name":"Châtillon","canton":"FR","status":"not_examined","website":"https://www.chatillon-broye.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.chatillon-broye.ch/autorites)\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2011,"name":"Cugy","canton":"FR","status":"candidate","website":"https://cugy-fr.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://cugy-fr.ch/administration-autorites-poste/conseil-general","from":null,"to":"2026-05-06","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2026-05-06, e.g. 'Procès-verbal'; body guessed from the URL"}]},{"bfs_id":2022,"name":"Gletterens","canton":"FR","status":"not_examined","website":"https://www.gletterens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2025,"name":"Lully","canton":"FR","status":"not_examined","website":"http://www.lully-fr.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.lully-fr.ch/administration/conseil-communal)","publications":[]},{"bfs_id":2029,"name":"Montagny","canton":"FR","status":"not_examined","website":"https://www.montagny-fr.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2035,"name":"Nuvilly","canton":"FR","status":"candidate","website":"https://www.nuvilly.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://nuvilly.ch/administration-autorite/proces-verbaux-des-assemblees","from":null,"to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-05-28, e.g. 'Procès-verbal assemblée communale du 28 mai 2026'; body guessed from the URL"}]},{"bfs_id":2038,"name":"Prévondavaux","canton":"FR","status":"not_examined","website":"https://www.prevondavaux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2041,"name":"Saint-Aubin","canton":"FR","status":"candidate","website":"https://saint-aubin.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune official website verification","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://saint-aubin.ch/administration-et-autorites/assemblee-communale-1","from":null,"to":"2026-06-30","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-06-30, e.g. 'Procès-verbal'; body guessed from the URL"}]},{"bfs_id":2043,"name":"Sévaz","canton":"FR","status":"not_examined","website":"https://www.sevaz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://sevaz.ch/administration-et-autorites/conseil-communal)","publications":[]},{"bfs_id":2044,"name":"Surpierre","canton":"FR","status":"candidate","website":"http://www.surpierre-fr.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://surpierre-fr.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-05","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 31 files match, newest 2026-05-05, e.g. '20260505_PV provisoire seance constitutive CG'; body guessed from the URL"}]},{"bfs_id":2045,"name":"Vallon","canton":"FR","status":"not_examined","website":"http://www.vallon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.vallon.ch/fr/la-commune/politique/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2050,"name":"Les Montets","canton":"FR","status":"not_examined","website":"https://www.les-montets.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://les-montets.ch/administration-autorites/conseil-communal)","publications":[]},{"bfs_id":2051,"name":"Delley-Portalban","canton":"FR","status":"candidate","website":"http://www.delley-portalban.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.delley-portalban.ch/article/aiee-proces-verbaux-assemblees-des-delegues","from":null,"to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-05-18, e.g. 'Procès-verbal provisoire du 18 mai 2026'; body guessed from the URL"}]},{"bfs_id":2053,"name":"Belmont-Broye","canton":"FR","status":"configured","website":"https://belmont-broye.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil general; includes provisional versions and annexes; bsk-pdf-manager under uploads/bsk-pdf-manager/; same agency template as Riaz","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://belmont-broye.ch/autorites-communales/conseil-general/","from":"2025-04-14","to":"2026-05-04","cadence":null,"obstacle":null,"how":"html_links, primary source 1 hop (newest PVs on the page) plus extra source 2 hops (/seance-du-conseil-ge/ session pages, 'PV de la derniere seance')"}]},{"bfs_id":2054,"name":"Estavayer","canton":"FR","status":"configured","website":"https://www.estavayer.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; each PV appears twice (signed copy in its own session folder, approval copy in the next session's folder), so about 53 distinct sessions","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.estavayer.ch/autorites-administration/conseil-general/seances-du-conseil-general","from":"2017-01-10","to":"2026-05-05","cadence":null,"obstacle":null,"how":"html_links, year pages 2017-2026 (slugs seances-2017 ... seances-2024-1-1) as listing_urls, url_regex"}]},{"bfs_id":2055,"name":"Cheyres-Châbles","canton":"FR","status":"candidate","website":"http://www.cheyres-chables.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cheyres-chables.ch/assembleecommunale","from":"2017","to":"2026-05-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 40 sessions since 2017; minutes attached to the session pages as '1 PV de la séance du 01.12.2025'"}]},{"bfs_id":2056,"name":"Fétigny-Ménières","canton":"FR","status":"not_examined","website":"https://fetigny-menieres.ch/","vendor":"wordpress","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again","publications":[]},{"bfs_id":2063,"name":"Billens-Hennens","canton":"FR","status":"not_examined","website":"http://www.billens-hennens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://www.billens-hennens.ch/files/1781431883-fr_votation-proces-verbalcommunal_confederation_billens-hennens-7433.pdf, https://www.billens-hennens.ch/files/1765884184-proces-verbal-assemblee-communale-13-05-2025-valide-7164.pdf, https://www.billens-hennens.ch/files/1725435923-proces-verbal-de-l-assemblee-du-27-05-2019-4439.pdf)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2067,"name":"Le Châtelard","canton":"FR","status":"not_examined","website":"http://www.le-chatelard.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2068,"name":"Châtonnaye","canton":"FR","status":"not_examined","website":"https://www.chatonnaye.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2079,"name":"Grangettes","canton":"FR","status":"not_examined","website":"https://grangettes-pres-romont.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2086,"name":"Massonnens","canton":"FR","status":"not_examined","website":"http://www.massonnens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2087,"name":"Mézières","canton":"FR","status":"not_examined","website":"https://www.mezieres-fr.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2096,"name":"Romont","canton":"FR","status":"candidate","website":"https://www.romont.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.romont.ch/assemblees","from":"2013","to":"2026-05-07","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 56 sessions since 2013; minutes attached to the session pages as 'Procès-verbal séance constitutive Conseil général - 07.05.2026 - version non app'"}]},{"bfs_id":2097,"name":"Rue","canton":"FR","status":"candidate","website":"https://www.rue.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://rue.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2025-09-08","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2025-09-08, e.g. '01.Procès-verbal CG 08.09.2025'; body guessed from the URL"}]},{"bfs_id":2099,"name":"Siviriez","canton":"FR","status":"configured","website":"http://www.siviriez.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; typo3 batch: not started (not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants)); result taken from docs/VENDOR-PATTERNS.md: Conseil general, 'Proces-verbal provisoire de la seance du 21 avril 2026 (y.c. annexe)', 'Proces-verbal approuve de la seance du 9 decembre 2025', 18 found 18 dated; register guess: configured on the strength of the offline extract_links verification only, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.siviriez.ch/autorites-administration/conseil-general","from":"2021","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2102,"name":"Ursy","canton":"FR","status":"configured","website":"https://www.ursy.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"assemblee communale; anchor text 'Proces-verbal du 20 avril 2026'","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.ursy.ch/autorites/assemblee-communale","from":"2017-05-22","to":"2026-06-01","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2113,"name":"Vuisternens-devant-Romont","canton":"FR","status":"candidate","website":"https://vuisternens.ch","vendor":"typo3","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune official website verification","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vuisternens.ch/autorites-secretariat/assemblee-communale","from":null,"to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: 50 dated PDF links on the page, newest 2026-05-18, e.g. '18.05.2026*'; body guessed from the URL"}]},{"bfs_id":2114,"name":"Villorsonnens","canton":"FR","status":"not_examined","website":"https://villorsonnens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. Official Villorsonnens site has moved from the former .com site to villorsonnens.ch.","publications":[]},{"bfs_id":2115,"name":"Torny","canton":"FR","status":"candidate","website":"https://torny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://torny.ch/index.php/administration/proces-verbaux","from":null,"to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-05-28, e.g. 'Procès-verbal de l’Assemblée communale du 28 mai 2026'; body guessed from the URL"}]},{"bfs_id":2117,"name":"Villaz","canton":"FR","status":"not_examined","website":"https://www.communevillaz.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2121,"name":"Haut-Intyamon","canton":"FR","status":"configured","website":"http://www.haut-intyamon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://haut-intyamon.ch/wp-json/wp/v2/media?search=verbal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":2122,"name":"Pont-en-Ogoz","canton":"FR","status":"not_examined","website":"http://www.pont-en-ogoz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.pont-en-ogoz.ch/fr/accueil--sujets-des-seances-du-conseil-communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2123,"name":"Botterens","canton":"FR","status":"candidate","website":"https://www.botterens.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.botterens.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-19","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 16 files match, newest 2026-05-19, e.g. 'pv AC 19.05.2026'; body guessed from the URL"}]},{"bfs_id":2124,"name":"Broc","canton":"FR","status":"configured","website":"https://www.broc.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"assemblee communale; anchor text '2026_PV-AC_16.06.2026'","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.broc.ch/autorites-et-services/assemblee-communale","from":"2021-07-06","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2125,"name":"Bulle","canton":"FR","status":"upstream_only","website":"https://www.bulle.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2125.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2128,"name":"Châtel-sur-Montsalvens","canton":"FR","status":"not_examined","website":"https://www.chatel-montsalvens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://chatel-montsalvens.ch/conseil-communal/)","publications":[]},{"bfs_id":2129,"name":"Corbières","canton":"FR","status":"configured","website":"https://www.corbieres.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://corbieres.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":2130,"name":"Crésuz","canton":"FR","status":"candidate","website":"https://www.cresuz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cresuz.ch/autorites-administration/assemblee-communale","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: 34 dated PDF links on the page, newest 2026-06-24, e.g. 'Presentation_AC_24.06.2026.pdf'; body guessed from the URL"}]},{"bfs_id":2131,"name":"Echarlens","canton":"FR","status":"not_examined","website":"https://echarlens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2134,"name":"Grandvillard","canton":"FR","status":"not_examined","website":"https://www.grandvillard.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2135,"name":"Gruyères","canton":"FR","status":"candidate","website":"https://www.gruyeres.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gruyeres.ch/seances","from":"2016","to":"2026-05-06","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2016; minutes attached to the session pages as 'Procès-verbal de la séance constitutive du Conseil général du 6 mai 2026'"}]},{"bfs_id":2137,"name":"Hauteville","canton":"FR","status":"not_examined","website":"https://www.hauteville.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.hauteville.ch/administration/administration-communale/conseil-communal, https://www.hauteville.ch/accueil/actualites/archives-news/896-election-tacite-conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2138,"name":"Jaun","canton":"FR","status":"not_examined","website":"https://www.jaun.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.jaun.ch/gemeindeversammlung)\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2140,"name":"Marsens","canton":"FR","status":"not_examined","website":"http://www.marsens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.marsens.ch/fr/autorite-_-administration/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2143,"name":"Morlon","canton":"FR","status":"not_examined","website":"http://www.morlon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2145,"name":"Le Pâquier","canton":"FR","status":"candidate","website":"http://www.lepaquier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lepaquier.ch/fr/Autorites-politiques/Assemblees-communales/Proces-verbaux/Assemblees.html","from":null,"to":"2026-04-20","cadence":null,"obstacle":null,"how":"probe: 67 dated PDF links on the page, newest 2026-04-20, e.g. 'PV'; body guessed from the URL"}]},{"bfs_id":2147,"name":"Pont-la-Ville","canton":"FR","status":"not_examined","website":"http://www.pont-la-ville.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.pont-la-ville.ch/v2/index.php/autorites-et-administration/autorites-communales/conseil-communal)\n\n2026-09-26 coverage review: Reviewed public municipal documents, budgets and regulations; representative PDF bytes and robots permissions verified. External asset permissions are limited to observed exact files or site-specific storage directories.","publications":[]},{"bfs_id":2148,"name":"Riaz","canton":"FR","status":"configured","website":"https://riaz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil general; same site template as Belmont-Broye; 14 sessions listed back to 2023-10; validated with max_follow 5; final and provisional versions","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://riaz.ch/autorites-administration/autorites-communales/conseil-general/seances-du-conseil-general/","from":"2025-05-13","to":"2026-05-05","cadence":null,"obstacle":null,"how":"html_links, 2 hops (/seance-du-conseil-ge/ session pages carrying the PV), max_follow 80"}]},{"bfs_id":2149,"name":"La Roche","canton":"FR","status":"candidate","website":"http://www.la-roche.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.la-roche.ch/sitzung","from":"2020","to":"2026-04-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 13 sessions since 2020; minutes attached to the session pages as 'Procès-verbal assemblée du 11.12.2025'"}]},{"bfs_id":2152,"name":"Sâles","canton":"FR","status":"configured","website":"http://www.sales.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live WordPress source review","notes":"Endpoint and document titles checked on 2026-09-11. Archive scope also permits related municipal documents and versions; no extracted decisions inferred from inclusion. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://commune-sales.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public PDF results for the protocol search, up to 50 per run"}]},{"bfs_id":2153,"name":"Sorens","canton":"FR","status":"configured","website":"https://www.sorens.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'PV de l'assemblee communale du 01.12.25', 'PV provisoire de l'assemblee communale du 20.04.26'; 11 found 11 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.sorens.ch/administration/assemblee-communale","from":"2021","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2155,"name":"Vaulruz","canton":"FR","status":"candidate","website":"https://www.vaulruz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live endpoint check","notes":"The WordPress endpoint was found earlier, but the 2026-09-11 verification received HTTP 429 with Retry-After 3600 seconds from robots.txt and the listing. Deferred from this wave; no further attempt during the requested wait.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vaulruz.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-03","cadence":null,"obstacle":"HTTP 429, Retry-After 3600 seconds during verification; not onboarded in this wave.","how":"probe: WordPress media endpoint answers; 3 files match, newest 2026-06-03, e.g. 'Procès-verbal de l&rsquo;assemblée du 30 avril'; body guessed from the URL"}]},{"bfs_id":2160,"name":"Vuadens","canton":"FR","status":"candidate","website":"http://www.vuadens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.vuadens.ch/politique/seances-du-conseil-general/","from":null,"to":"2026-04-22","cadence":null,"obstacle":null,"how":"probe: 6 dated PDF links on the page, newest 2026-04-22, e.g. 'Procès-verbal provisoire de la séance du 22 avril 2026'; body guessed from the URL"}]},{"bfs_id":2162,"name":"Bas-Intyamon","canton":"FR","status":"not_examined","website":"https://www.bas-intyamon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.bas-intyamon.ch/administration-et-autorites/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2163,"name":"Val-de-Charmey","canton":"FR","status":"candidate","website":"https://www.val-de-charmey.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://val-de-charmey.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 49 files match, newest 2025-12-15, e.g. '3_PV_Seance_20251215'; body guessed from the URL"}]},{"bfs_id":2173,"name":"Autigny","canton":"FR","status":"candidate","website":"https://www.autigny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.autigny.ch/administration/autorite/pv-assemblee-communale/","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 38 dated PDF links on the page, newest 2026-06-15, e.g. 'PV Assemblée communale 15 juin 2026 (provisoire)'; body guessed from the URL"}]},{"bfs_id":2174,"name":"Avry","canton":"FR","status":"candidate","website":"https://www.avry.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.avry.ch/seances","from":"2011","to":"2026-01-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 12 sessions since 2011; minutes attached to the session pages as 'CG 2026.05.05 Procès-verbal provisoire de la séance du Conseil général du 5 mai '"}]},{"bfs_id":2175,"name":"Belfaux","canton":"FR","status":"configured","website":"http://www.belfaux.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; anchor text is the date ('7 octobre 2025'), file names contain PV_CG","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.belfaux.ch/autorites/conseil-general/proces-verbaux.html","from":"2010-05-11","to":"2026-05-27","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2177,"name":"Chénens","canton":"FR","status":"not_examined","website":"http://www.chenens.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2183,"name":"Corminboeuf","canton":"FR","status":"not_examined","website":"https://corminboeuf.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://corminboeuf.ch/administration/conseil-communal)","publications":[]},{"bfs_id":2186,"name":"Cottens","canton":"FR","status":"not_examined","website":"https://www.cottens-fr.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://cottens-fr.ch/administration-autorites/conseil-communal/#wrapper-main-title, https://cottens-fr.ch/administration-autorites/conseil-communal/#anchor-top-page)","publications":[]},{"bfs_id":2194,"name":"Ferpicloz","canton":"FR","status":"not_examined","website":"https://www.ferpicloz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2196,"name":"Fribourg","canton":"FR","status":"configured","website":"https://www.ville-fribourg.ch","vendor":"drupal","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.ville-fribourg.ch/conseil-general/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2196.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2197,"name":"Givisiez","canton":"FR","status":"not_examined","website":"https://www.givisiez.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.givisiez.ch/autorites-administration/le-bureau-communal/conseiller-communal, https://www.givisiez.ch/messages-du-conseil-communal) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2198,"name":"Granges-Paccot","canton":"FR","status":"configured","website":"https://granges-paccot.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Assemblee communale PV on per-assembly pages; 6 assemblies listed, one duplicate URL; includes a provisional PV; Elementor 'Details' listing","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://granges-paccot.ch/assemblees-communales/","from":"2025-05-26","to":"2026-02-23","cadence":null,"obstacle":null,"how":"html_links, 2 hops (/assemblees-communale/<slug>/ pages)"}]},{"bfs_id":2206,"name":"Marly","canton":"FR","status":"configured","website":"http://www.marly.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; anchor text 'PV de la seance du ...'","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.marly.ch/cg/pv-cg","from":"2011-05-04","to":"2026-05-27","cadence":null,"obstacle":null,"how":"html_links, 2 sources: current legislature on one page (1 hop) plus archive year pages 2011-2021 (2 hops)"}]},{"bfs_id":2208,"name":"Matran","canton":"FR","status":"not_examined","website":"https://www.matran.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://matran.ch/administration-et-autorites/conseil-communal, https://matran.ch/administration-et-autorites/conseil-communal/election-du-conseil-communal)","publications":[]},{"bfs_id":2211,"name":"Neyruz","canton":"FR","status":"candidate","website":"https://www.neyruz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.neyruz.ch/politique/conseil-general","from":null,"to":"2026-05-12","cadence":null,"obstacle":null,"how":"probe: 32 dated PDF links on the page, newest 2026-05-12, e.g. 'PV_de_la_seance_du_CG_12.05.2026_provisoire.pdf'; body guessed from the URL"}]},{"bfs_id":2216,"name":"Pierrafortscha","canton":"FR","status":"not_examined","website":"https://www.pierrafortscha.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 404\n\n2026-09-26 coverage review: Reviewed official municipal document sections with robots-permitted PDF response bytes. Published budgets, regulations, assembly documents and other municipal files are collected without title filters.","publications":[]},{"bfs_id":2220,"name":"Le Mouret","canton":"FR","status":"candidate","website":"http://www.le-mouret.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: protocol_page_undated","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://le-mouret.ch/article/pv-de-lassemblee-communale-du-28-mai-2024-1-1-1","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Lire la suite' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":2226,"name":"Treyvaux","canton":"FR","status":"not_examined","website":"https://www.treyvaux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.treyvaux.ch/La-commune/Conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2228,"name":"Villars-sur-Glâne","canton":"FR","status":"configured","website":"https://www.villars-sur-glane.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil general; document-category archive; 6 pages today, page 7 is slack and returns 404 (logged as a warning)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.villars-sur-glane.ch/cat_doc/proces-verbal/page/{1..7}/","from":"2008-07-03","to":"2026-06-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop, /page/{1..7}/"}]},{"bfs_id":2230,"name":"Villarsel-sur-Marly","canton":"FR","status":"candidate","website":"https://www.villarsel-sur-marly.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.villarsel-sur-marly.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-21","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 51 files match, newest 2026-04-21, e.g. 'PV AC 21.04.2026_non approuvé'; body guessed from the URL"}]},{"bfs_id":2233,"name":"Hauterive","canton":"FR","status":"not_examined","website":"https://www.hauterivefr.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://hauterivefr.ch/administration/conseil-communal)","publications":[]},{"bfs_id":2234,"name":"La Brillaz","canton":"FR","status":"not_examined","website":"https://labrillaz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://labrillaz.ch/autorite/conseil-communal/)","publications":[]},{"bfs_id":2235,"name":"La Sonnaz","canton":"FR","status":"candidate","website":"http://www.lasonnaz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://lasonnaz.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 18 files match, newest 2025-12-16, e.g. '16.12.2025_PV AC_provisoire_pour publication'; body guessed from the URL"}]},{"bfs_id":2236,"name":"Gibloux","canton":"FR","status":"configured","website":"https://www.commune-gibloux.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; the newest legislature lives under the odd slug reglements-communaux/titre-par-defaut; anchor text 'Proces-verbal du 30 octobre 2025'","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://commune-gibloux.ch/administration-autorites/reglements-communaux/titre-par-defaut","from":"2016-01-18","to":"2026-05-28","cadence":null,"obstacle":null,"how":"html_links, 3 listing_urls (one page per legislature 2016-2021, 2021-2026, 2026-2031)"}]},{"bfs_id":2237,"name":"Prez","canton":"FR","status":"candidate","website":"https://prez.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://prez.ch/autorites-administration/pv-et-documents-du-conseil-general","from":null,"to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: 321 dated PDF links on the page, newest 2026-06-02, e.g. 'Procès-verbal provisoire du Conseil général de Prez du 2 jui'; body guessed from the URL"}]},{"bfs_id":2238,"name":"Bois-d'Amont","canton":"FR","status":"candidate","website":"https://www.bois-damont.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bois-damont.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-26","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 54 files match, newest 2026-05-26, e.g. '20260526_PV_AC-constitutive_prov'; body guessed from the URL"}]},{"bfs_id":2239,"name":"Grolley-Ponthaux","canton":"FR","status":"candidate","website":"https://grolley-ponthaux.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.grolley-ponthaux.ch/seances-assemblees-conseil-general","from":"2025","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 7 sessions since 2025; minutes attached to the session pages as 'PV provisoire séance 02.06.2026 Comptes 2025'"}]},{"bfs_id":2250,"name":"Courgevaux","canton":"FR","status":"candidate","website":"https://courgevaux.ch/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from https://www.courgevaux-gurwolf.ch to https://courgevaux.ch/. 37 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.\n\n2026-09-26: official Courgevaux finance and administration pages publish separate /images/pdf/ assets. A full GET of the audited 2025 accounts succeeds on Hetzner with robots permission despite HTTP 403 on the HTML listings. Exact observed asset seeds include budgets and accounts; this does not establish continuous discovery while listings fail.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://courgevaux.ch/index.php/fr/administration/proces-verbaux","from":null,"to":"2026-05-19","cadence":null,"obstacle":null,"how":"probe: 74 dated PDF links on the page, newest 2026-05-19, e.g. ''; body guessed from the URL"}]},{"bfs_id":2254,"name":"Courtepin","canton":"FR","status":"not_published","website":"https://www.courtepin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://courtepin.ch/conseil-general/","from":null,"to":null,"cadence":null,"obstacle":"Conseil general page holds only reglements; the A-Z service list has no PV entry","how":"ask commune"}]},{"bfs_id":2257,"name":"Cressier","canton":"FR","status":"candidate","website":"https://www.cressier.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cressier.ch/autorites/assemblee-communale/proces-verbaux","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: 26 dated PDF links on the page, newest 2026-06-23, e.g. 'Procès-verbal de l'Assemblée communale du 23 juin 2026 (prov'; body guessed from the URL"}]},{"bfs_id":2258,"name":"Fräschels","canton":"FR","status":"candidate","website":"https://www.fraeschels.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fraeschels.ch/news/protokoll-gemeindeversammlung-vom-28052026-vor-genehmigung-gv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokoll Gemeindeversammlung vom 28.05.' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":2261,"name":"Greng","canton":"FR","status":"candidate","website":"http://www.greng.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.greng.ch/de/behoerde/gemeindeversammlung","from":null,"to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-05-11, e.g. 'Protokoll GV 11.05.2026 prov.'; body guessed from the URL"}]},{"bfs_id":2262,"name":"Gurmels","canton":"FR","status":"candidate","website":"https://www.gurmels.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gurmels.ch/sitzung","from":"2013","to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 30 sessions since 2013; minutes attached to the session pages as 'Protokoll GV 09.02.2026'"}]},{"bfs_id":2265,"name":"Kerzers","canton":"FR","status":"configured","website":"https://www.kerzers.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"older protocols link to a node page holding the PDF, the newest links to the PDF directly; file names '2026 04 22 Protokoll.pdf'; Drupal host family 149.126.4.x, PDFs under /system/files/download/; also in docs/VENDOR-PATTERNS.md (hop 1: 3 dated nodes, hop 2: 1 dated); a documents_on_listing flag would make this one source","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.kerzers.ch/politik/gemeindeversammlung","from":"2025-05-15","to":"2026-07-02","cadence":null,"obstacle":null,"how":"html_links, 2 sources: 2 hops via /node/ page plus 1 hop for the direct PDF link; date_regex 'yyyy mm dd' with spaces (ymd)"}]},{"bfs_id":2266,"name":"Kleinbösingen","canton":"FR","status":"blocked_robots","website":"http://www.kleinboesingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: listing readable back to 2011, downloads blocked by robots.txt","publications":[{"body":"assembly","kind":"minutes","status":"blocked_robots","listing_url":"https://www.kleinboesingen.ch/protokolle.html","from":"2011-04-08","to":"2026-04-24","cadence":null,"obstacle":"robots.txt has 'Disallow: /uploads/' for every agent and all files are under /uploads/ (.pdf.html URLs)","how":"34 dated 'Protokoll der Gemeindeversammlung ... am 24. April 2026' links on the page (read by hand)"}]},{"bfs_id":2271,"name":"Meyriez","canton":"FR","status":"candidate","website":"https://www.merlach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.merlach.ch/de/politik/gemeindeversammlung/protokolle.html/167","from":null,"to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: 25 dated PDF links on the page, newest 2026-05-11, e.g. 'Protokoll der Gemeindeversammlung vom 11.05.2026'; body guessed from the URL"}]},{"bfs_id":2272,"name":"Misery-Courtion","canton":"FR","status":"configured","website":"https://www.miserycourtion.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-26","checked_by":"official domain, media API and PDF byte checks","notes":"2026-09-26: canonical website verified as www.miserycourtion.ch; media API advertises 503 PDFs, two full PDF GET samples passed robots and byte checks. Earlier onboarding note: listing: https://miserycourtion.ch/assemblees-communales/ (redirects to /documents-officiels/assemblees-communales-comptes-et-budgets/); validated by the onboarding agent but not in communes.yaml yet; 'PV de l'assemblee communale du 30 mars 2026', 'PV provisoire de l'assemblee communale du 15 juin 2026', annexes and accounts in the second cell; 17 found 17 dated; REST media search=PV works; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.miserycourtion.ch/documents-officiels/assemblees-communales-comptes-et-budgets/","from":"2019","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2274,"name":"Muntelier","canton":"FR","status":"not_examined","website":"https://www.muntelier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed official municipal document sections with robots-permitted PDF response bytes. Published budgets, regulations, assembly documents and other municipal files are collected without title filters.","publications":[]},{"bfs_id":2275,"name":"Murten","canton":"FR","status":"candidate","website":"https://www.murten-morat.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.murten-morat.ch/sitzung","from":"2008","to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 78 sessions since 2008; minutes attached to the session pages as '20260603_01_1. Protokoll vom 29.04.2026'"}]},{"bfs_id":2276,"name":"Ried bei Kerzers","canton":"FR","status":"candidate","website":"http://www.ried.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ried.ch/de/politik/gemeindeversammlung.php","from":null,"to":"2026-04-23","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2026-04-23, e.g. 'Einladung zur Gemeindeversammlung 23.4.2026'; body guessed from the URL"}]},{"bfs_id":2284,"name":"Mont-Vully","canton":"FR","status":"configured","website":"http://mont-vully.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"assemblee communale; anchor text 'Proces-verbal de l'assemblee communale du 30 juin 2026'; also in docs/VENDOR-PATTERNS.md: div.ce-bodytext p a, 23 found 23 dated offline","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://mont-vully.ch/administration-autorites/assemblee-communale/proces-verbaux","from":"2017-05-02","to":"2026-06-30","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2292,"name":"Brünisried","canton":"FR","status":"not_examined","website":"https://www.bruenisried.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2293,"name":"Düdingen","canton":"FR","status":"not_examined","website":"https://www.duedingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 27 sessions since 2021 (Generalratssitzung (Konstituierung) am 18. Mai 202, Generalratssitzung am 11. Dezember 2023, Generalratssitzung am 12. M); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2294,"name":"Giffers","canton":"FR","status":"candidate","website":"https://www.giffers.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.giffers.ch/sitzung","from":"2006","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 47 sessions since 2006; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 12.06.2026 zuhanden der Gemeindeversammlun'"}]},{"bfs_id":2295,"name":"Bösingen","canton":"FR","status":"candidate","website":"https://www.boesingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boesingen.ch/sitzung","from":"2011","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 35 sessions since 2011; minutes attached to the session pages as 'Protokoll 01_2026 vom 24.04.2026_provisorische Fassung'"}]},{"bfs_id":2296,"name":"Heitenried","canton":"FR","status":"candidate","website":"https://www.heitenried.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.heitenried.ch/sitzung","from":"2021","to":"2026-05-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2021; minutes attached to the session pages as 'L21-26_Protokoll_Gemeindeversammlung 08.05.2026_nicht genehmigt'"}]},{"bfs_id":2299,"name":"Plaffeien","canton":"FR","status":"not_examined","website":"https://www.plaffeien.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 26 sessions since 2017 (1. ausserordentliche Gemeindeversammlung, 1. ordentliche Gemeindeversammlung, 2. ausserordentliche Gemeindeversammlung, ); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2300,"name":"Plasselb","canton":"FR","status":"candidate","website":"https://www.plasselb.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.plasselb.ch/sitzung","from":"2011","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 38 sessions since 2011; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 22. April 2026 -- GR genehmigt'"}]},{"bfs_id":2301,"name":"Rechthalten","canton":"FR","status":"candidate","website":"http://www.rechthalten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rechthalten.ch/sitzung","from":"2010","to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 38 sessions since 2010; minutes attached to the session pages as 'GV_2026-06-29_Protokoll_prov. Fassung'"}]},{"bfs_id":2303,"name":"St. Silvester","canton":"FR","status":"not_examined","website":"http://www.stsilvester.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2304,"name":"St. Ursen","canton":"FR","status":"candidate","website":"http://www.stursen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.stursen.ch/sitzung","from":"2011","to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 31 sessions since 2011; minutes attached to the session pages as '20260424_Protokolll GV_genehmigt'"}]},{"bfs_id":2305,"name":"Schmitten","canton":"FR","status":"candidate","website":"http://www.schmitten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schmitten.ch/sitzung","from":"2016","to":"2026-06-26","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2016; minutes attached to the session pages as '1_Protokoll Gemeindeversammlung vom 24. April 2026'"}]},{"bfs_id":2306,"name":"Tafers","canton":"FR","status":"not_examined","website":"https://www.tafers.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2307,"name":"Tentlingen","canton":"FR","status":"configured","website":"http://www.tentlingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.tentlingen.ch/protokolle-gv.html","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2308,"name":"Ueberstorf","canton":"FR","status":"candidate","website":"http://www.ueberstorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ueberstorf.ch/sitzung","from":"2016","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 14 sessions since 2016; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 17.06.2026_PROVISORISCH'"}]},{"bfs_id":2309,"name":"Wünnewil-Flamatt","canton":"FR","status":"not_published","website":"http://www.wuennewil-flamatt.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://wuennewil-flamatt.ch/politik/behoerden/generalrat/","from":null,"to":null,"cadence":null,"obstacle":"Generalrat page lists sessions (/sitzungen-protokol/<date>/, Elementor pagination ?e-page-...=N) but the session pages contain no documents at all","how":"ask commune"}]},{"bfs_id":2321,"name":"Attalens","canton":"FR","status":"configured","website":"https://www.attalens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.attalens.ch/conseil-general/","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2323,"name":"Bossonnens","canton":"FR","status":"not_examined","website":"http://www.bossonnens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.bossonnens.ch/conseil-communal/, https://www.bossonnens.ch/2026/08/19/seance-dinformation-publique-centre-de-natation-et-salle-de-sport-triple-de-la-veveyse/, https://www.bossonnens.ch/2026/05/05/conseil-communal-repartition-des-dicasteres-2/)","publications":[]},{"bfs_id":2325,"name":"Châtel-Saint-Denis","canton":"FR","status":"configured","website":"https://www.chatel-st-denis.ch","vendor":"neos","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"vendor corrected: Neos CMS (_Resources/Persistent paths), not TYPO3; Conseil general, anchor text 'Proces-verbal du ...'; one 2019 PV undated in the text (date only in the URL as yyyymmdd inside a %20-separated name); probe hit","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.chatel-st-denis.ch/fr/administration-et-autorites/autorites-politiques/conseil-general/proces-verbaux-messages-et-decisions","from":"2020-06-03","to":"2025-12-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2328,"name":"Granges","canton":"FR","status":"configured","website":"https://www.granges-veveyse.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.granges-veveyse.ch/wp-json/wp/v2/media?search=verbal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":2333,"name":"Remaufens","canton":"FR","status":"configured","website":"http://www.remaufens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"http://remaufens.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":2335,"name":"Saint-Martin","canton":"FR","status":"configured","website":"http://www.saint-martin-fr.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.saint-martin-fr.ch/wp-json/wp/v2/media?search=verbal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":2336,"name":"Semsales","canton":"FR","status":"candidate","website":"http://www.semsales.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.semsales.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2018-12-18","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2018-12-18, e.g. 'proces-verbal-du-18-decembre-2018'; body guessed from the URL"}]},{"bfs_id":2337,"name":"Le Flon","canton":"FR","status":"not_examined","website":"http://www.leflon.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://leflon.ch/administration/conseil-communal)","publications":[]},{"bfs_id":2338,"name":"La Verrerie","canton":"FR","status":"configured","website":"http://www.laverrerie.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://la-verrerie.ch/wp-json/wp/v2/media?search=verbal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":6601,"name":"Aire-la-Ville","canton":"GE","status":"candidate","website":"http://www.aire-la-ville.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aire-la-ville.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 68 files match, newest 2026-05-28, e.g. '20260528_CM_pv'; body guessed from the URL"}]},{"bfs_id":6602,"name":"Anières","canton":"GE","status":"configured","website":"https://anieres.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal PV inside a mixed 'Documents' archive (14 pages of all kinds of documents); page 15 is slack and returns 404","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://anieres.ch/documents/page/{1..15}/","from":"2021-10-19","to":"2026-05-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop, /page/{1..15}/, text_regex 'PV du Conseil municipal du <date>'"}]},{"bfs_id":6603,"name":"Avully","canton":"GE","status":"candidate","website":"https://www.avully.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 62 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://avully.ch/vie-politique-executif-et-deliberatif/","from":null,"to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: 50 dated PDF links on the page, newest 2026-05-21, e.g. 'Procès-verbal de la séance du 21 mai 2026 Icon_Document Copy'; body guessed from the URL"}]},{"bfs_id":6604,"name":"Avusy","canton":"GE","status":"candidate","website":"https://www.avusy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media; 2026-09-13 bounded archive review: 136 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.avusy.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 132 files match, newest 2026-05-11, e.g. 'pv-cm-11-05-2026'; body guessed from the URL"}]},{"bfs_id":6605,"name":"Bardonnex","canton":"GE","status":"configured","website":"https://www.bardonnex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal PV (PVCM_yyyy-mm-dd.pdf), anchor text is the date; the first request answered 429, a retry a few minutes later was fine; Crawl-delay 10","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.bardonnex.ch/proces-verbaux/","from":"2022-09-13","to":"2026-05-12","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6606,"name":"Bellevue","canton":"GE","status":"candidate","website":"http://www.mairie-bellevue.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mairie-bellevue.ch/seances","from":"1990","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 296 sessions since 1990; minutes attached to the session pages as 'pv-cm_2026.04.28'"}]},{"bfs_id":6607,"name":"Bernex","canton":"GE","status":"configured","website":"https://www.bernex.ch","vendor":"iomedia-nuxt","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.bernex.ch/ma-mairie/vie-politique/conseil-municipal/seances-du-conseil-municipal-226","from":"2021-09-28","to":"2026-02-03","cadence":null,"obstacle":"partial: Conseil municipal; this Nuxt variant server-renders the document list; anchor text 'Proces-verbal du 19 octobre approuve' lacks the year for older items; older years may be behind a client-side year filter (not verified); report status 'ok (partial)'","how":"html_links, 1 hop, date_regex (20\\d{2})(\\d{2})(\\d{2}) ymd on file names like 20211019-cm-pv11-corrige.pdf"}]},{"bfs_id":6608,"name":"Carouge","canton":"GE","status":"configured","website":"https://www.carouge.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; publications view filtered by category 165 (proces-verbaux); 10 per page, pager shows 3 pages; validated with page 0 only (3 nodes)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.carouge.ch/publications?category%5B165%5D=165&page={0..6}","from":"2026-02-19","to":"2026-04-30","cadence":null,"obstacle":null,"how":"html_links, 2 hops (publications view -> node with one PDF), ?page={0..6}, max_follow 80"}]},{"bfs_id":6609,"name":"Cartigny","canton":"GE","status":"candidate","website":"https://www.cartigny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cartigny.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 143 files match, newest 2026-03-16, e.g. '20260316 PV CM'; body guessed from the URL"}]},{"bfs_id":6610,"name":"Céligny","canton":"GE","status":"candidate","website":"https://www.celigny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.celigny.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-31","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 25 files match, newest 2026-03-31, e.g. 'PV séance de CM du 31 mars 2026_approuvé'; body guessed from the URL"}]},{"bfs_id":6611,"name":"Chancy","canton":"GE","status":"candidate","website":"http://www.chancy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.chancy.ch/politique/proces-verbaux/","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: 91 dated PDF links on the page, newest 2026-06-16, e.g. 'Procès-verbal de la séance du 16 juin 2026'; body guessed from the URL"}]},{"bfs_id":6612,"name":"Chêne-Bougeries","canton":"GE","status":"configured","website":"https://chene-bougeries.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal; validated with max_follow 12 (7 PVs); full history (2020 onward) not verified; future sessions and sessions without adopted PV yield nothing","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://chene-bougeries.ch/administration-et-autorites/conseil-municipal/seances-du-conseil-municipal/","from":"2025-03-20","to":"2026-05-19","cadence":null,"obstacle":null,"how":"html_links, 2 hops (53 session event pages -> wp-file-download link /download/<cat>/<slug>/<id>/<file>.pdf), max_follow 80"}]},{"bfs_id":6613,"name":"Chêne-Bourg","canton":"GE","status":"blocked_js","website":"http://www.chene-bourg.ch","vendor":"iomedia-nuxt","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil municipal\n\n2026-09-26 coverage review: Reviewed public municipal HTML document pages and sample PDF bytes. Broad accounts, regulations and council sections collected through public HTML; blocked allinone.io API is not used.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://www.chene-bourg.ch/mairie/conseil-municipal/seances","from":null,"to":null,"cadence":null,"obstacle":"the sessions page has no anchors and the word 'verbal' does not occur in the 1.5 MB server HTML; data loaded client-side","how":"iomedia JSON adapter"}]},{"bfs_id":6614,"name":"Choulex","canton":"GE","status":"candidate","website":"http://www.choulex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://choulex.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 58 files match, newest 2026-06-15, e.g. 'PVCM-06-15.06.2026 PV'; body guessed from the URL"}]},{"bfs_id":6615,"name":"Collex-Bossy","canton":"GE","status":"candidate","website":"http://www.collex-bossy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.collex-bossy.ch/fr/proces-verbaux/","from":null,"to":"2026-05-26","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2026-05-26, e.g. 'Séance du Conseil municipal du 26 mai 2026'; body guessed from the URL"}]},{"bfs_id":6616,"name":"Collonge-Bellerive","canton":"GE","status":"not_examined","website":"https://www.collonge-bellerive.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 109 sessions since 2015 (Séance d'installation du Conseil municipal, Séance du Conseil Municipal, Séance du Conseil municipal, Séance du Conseil ); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6617,"name":"Cologny","canton":"GE","status":"configured","website":"https://www.cologny.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; 10 per page, 7 pages (about 70 PVs); anchor text 'Seance du Conseil municipal ... du 7 mai 2026'; validated with page 0 only","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.cologny.ch/politique-administration/conseil-municipal/proces-verbaux?page={0..8}","from":"2025-06-25","to":"2026-05-07","cadence":null,"obstacle":null,"how":"html_links, 1 hop, ?page={0..6}"}]},{"bfs_id":6618,"name":"Confignon","canton":"GE","status":"not_examined","website":"http://www.confignon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 149 sessions since 2008 (Conseil municipal, Conseil municipal - SEANCE ANNULEE, Conseil municipal ANNULE, Conseil municipal SÉANCE FERMÉE AU PUBL); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6619,"name":"Corsier","canton":"GE","status":"candidate","website":"http://www.corsier.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.corsier.ch/proces-verbaux-archive/533176","from":"2022","to":"2026-09-08","cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux 2020-2025' with 38 dated minutes links, e.g. '2025.05.13 - PV de la séance du Conseil municipal du 13 mai 2025'"}]},{"bfs_id":6620,"name":"Dardagny","canton":"GE","status":"candidate","website":"https://www.dardagny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://dardagny.ch/conseil-municipal/#pv-cm","from":null,"to":"2026-05-12","cadence":null,"obstacle":null,"how":"probe: 107 dated PDF links on the page, newest 2026-05-12, e.g. 'Séance du 12 mai 2026'; body guessed from the URL"}]},{"bfs_id":6621,"name":"Genève","canton":"GE","status":"needs_feature","website":"https://www.geneve.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Conseil municipal; verified by research on 2026-09-06 (docs/CITY-SOURCES.md); wave 2: partial, the seances page yields one PV; the archive needs an adapter over the plan de travail dates or the JavaScript document search Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"needs_feature","listing_url":"https://www.geneve.ch/autorites-administration/conseil-municipal/seances-plenieres","from":"2026-06-22","to":"2026-06-22","cadence":null,"obstacle":"the seances plenieres page links the PV of the last session and the ODJ of the next ones only; the complete list is a JavaScript search (/autorites-administration/conseil-municipal/documents?categorie=session&ssType=pv, a <div id='app'> without links) and /search/ is disallowed by robots; no HTML archive found (Memorial page, sitemap pages 1-2 of 16); one dated document, below the three-document rule","how":"deterministic PV path per session date: https://www.geneve.ch/sites/default/files/filecm/CM/sessions/<YYYY-MM-DD>/PV/PV-session-CM-geneve-<YYYY-MM-DD>.pdf; enumerate the dates from the plan de travail; confirmed 2026-09-10: HEAD on the derived 2026-06-02 and 2025-06-02 files answered 200 application/pdf; session dates in the plan de travail PDF (/document/plan-travail-<year>); a proposed html_links entry a[href*='/filecm/CM/sessions/'] with url_regex /PV/ gives the newest PV per run"}]},{"bfs_id":6622,"name":"Genthod","canton":"GE","status":"candidate","website":"https://www.genthod.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.genthod.ch/seances","from":"2002","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 231 sessions since 2002; decisions attached to the session pages as 'Avis décisions CM 2026.06.02'"}]},{"bfs_id":6623,"name":"Le Grand-Saconnex","canton":"GE","status":"configured","website":"https://www.grand-saconnex.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.grand-saconnex.ch/politique/seances?f%5B0%5D=cm_archives_name%3AProc%C3%A8s-verbal&page={0..2}","from":"2019","to":"2026-03-23","cadence":null,"obstacle":"partial: Conseil municipal; PVs from 2025 carry the date in the file name; 2019-2024 (about 40 of 71) are proces-verbal_NN.pdf with the date only in a preceding h4.section-title, discovered undated; report status ok, register partial because most of the archive is undated; disagreement: table gives page={0..1}, feature list gives &page={0..2}","how":"html_links, 1 hop, facet filter with &page range; date_selector feature (preceding h4.section-title) would date the 2019-2024 files"}]},{"bfs_id":6624,"name":"Gy","canton":"GE","status":"not_examined","website":"http://www.mairie-gy.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":6625,"name":"Hermance","canton":"GE","status":"not_examined","website":"https://www.hermance.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 195 sessions since 2007 (Séance du Conseil municipal, Séance du Conseil municipal - ANNULEE, Séance du Conseil municipal - ANNULEE/DEPLACEE, Séan); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6626,"name":"Jussy","canton":"GE","status":"not_examined","website":"https://www.jussy.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 115 sessions since 2013 (Conseil Municipal, Conseil municipal, Séance / assemblée); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6627,"name":"Laconnex","canton":"GE","status":"candidate","website":"http://www.laconnex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.laconnex.ch/politique/conseil-municipal/proces-verbaux/","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2025-12-15, e.g. 'Séance du conseil municipal du 15 décembre'; body guessed from the URL"}]},{"bfs_id":6628,"name":"Lancy","canton":"GE","status":"configured","website":"https://www.lancy.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; Drupal views load-more pager with 12 view displays; session news pages carry ordre du jour, decisions and PV (PV after approval); ~10 sessions/yr back to 2017 on page 5; validated with reduced range (2 pages, 4 sessions); needs follow_next feature to avoid guessed upper bound","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lancy.ch/actualites?page=%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C{0..12}","from":"2025-06-19","to":"2026-02-12","cadence":null,"obstacle":null,"how":"html_links, 2 hops (news page -> session page), page range {0..12}, max_follow 80"}]},{"bfs_id":6629,"name":"Meinier","canton":"GE","status":"configured","website":"https://www.meinier.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; one page; anchor text 'Seance du 7 mai' without year","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.meinier.ch/politique/archives-pv/proces-verbaux-des-seances-du-conseil-municipal","from":"2004-01-22","to":"2026-05-07","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from file name (pvcm2026-05-07em.pdf)"}]},{"bfs_id":6630,"name":"Meyrin","canton":"GE","status":"configured","website":"https://www.meyrin.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; anchor text is the session date; annexes and presentations excluded via negative lookahead because exclude_regex was not applied by html_links; also in docs/VENDOR-PATTERNS.md: Bootstrap tabs per legislature, 233 found 230 dated offline, generic Drupal config reads only 75 of 230; disagreement: 214 (crawler) vs 233 (offline extract) is a filter difference, not a conflict","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.meyrin.ch/fr/votre-mairie-politique-conseil-municipal/pv-des-seances","from":"2005-05-17","to":"2026-04-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop, one page all years, negative lookahead in text_regex"}]},{"bfs_id":6631,"name":"Onex","canton":"GE","status":"configured","website":"https://www.onex.ch","vendor":"iomedia-nuxt","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.onex.ch/ma-ville/conseil-municipal/seances-du-conseil-municipal/","from":"2024-11-26","to":"2026-05-26","cadence":null,"obstacle":"partial: Conseil municipal; Tailwind Nuxt variant; server HTML lists the newest about 16 sessions with their PVs; the year dropdown (2015-2026) is client-side and ?year= is ignored; report status 'ok (partial)'","how":"html_links, 1 hop over the server-rendered newest sessions; older years need the iomedia API"}]},{"bfs_id":6632,"name":"Perly-Certoux","canton":"GE","status":"not_examined","website":"http://www.perly-certoux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public finance, regulations and council archive sections, including historical meeting links, with representative PDF byte checks. Documents are collected without topic or title filtering.","publications":[]},{"bfs_id":6633,"name":"Plan-les-Ouates","canton":"GE","status":"configured","website":"https://www.plan-les-ouates.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil municipal; vendor corrected: custom CMS, not Drupal; file names yymmdd (260526_pvcm_avec_annexes.pdf)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.plan-les-ouates.ch/pages/la-commune/conseil-municipal/pv-des-seances","from":"2017-01-24","to":"2026-05-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop, one page of 'PV du <date>' anchors under /files/"}]},{"bfs_id":6634,"name":"Pregny-Chambésy","canton":"GE","status":"candidate","website":"http://www.pregny-chambesy.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.pregny-chambesy.ch/seances","from":"2023","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 37 sessions since 2023; minutes attached to the session pages as 'PV CM 19.05.2026_Signée'"}]},{"bfs_id":6635,"name":"Presinge","canton":"GE","status":"candidate","website":"http://www.presinge.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.presinge.ch/proces-verbaux/","from":null,"to":"2026-04-03","cadence":null,"obstacle":null,"how":"probe: 33 dated PDF links on the page, newest 2026-04-03, e.g. 'Séance du 26 avril'; body guessed from the URL"}]},{"bfs_id":6636,"name":"Puplinge","canton":"GE","status":"not_examined","website":"http://www.puplinge.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6637,"name":"Russin","canton":"GE","status":"candidate","website":"https://www.russin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.russin.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2014-10-13","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2014-10-13, e.g. 'Procès-verbal_2013_octobre'; body guessed from the URL"}]},{"bfs_id":6638,"name":"Satigny","canton":"GE","status":"blocked_robots","website":"https://www.satigny.ch/","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"listing URL from the probe; docs/VENDOR-PATTERNS.md agrees (blocked; it also lists 'Disallow: /fr/')","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.satigny.ch/seances/","from":null,"to":null,"cadence":null,"obstacle":"robots.txt has 'Disallow: /*.pdf$' for all agents and 'Crawl-delay: 10'; urllib.robotparser ignores the wildcard and would allow the PDFs, but the intent is clear, so nothing was fetched","how":"wildcard robots block: ask commune; also translate * and $ in robots rules to Google-style matching in Politeness.allowed"}]},{"bfs_id":6639,"name":"Soral","canton":"GE","status":"candidate","website":"https://www.soral.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.soral.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2017-09-09","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 51 files match, newest 2017-09-09, e.g. 'Procès verbal du 9 septembre 2017'; body guessed from the URL"}]},{"bfs_id":6640,"name":"Thônex","canton":"GE","status":"configured","website":"https://www.thonex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal; anchor text 'seance du <date>'; the 2011-2015 legislature page yields no links (probably empty); executive bulletins 'Juillet - aout' with the year only in the URL not configured","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.thonex.ch/votre-mairie/le-conseil-municipal/seances-passees/","from":"2015-06-02","to":"2026-05-12","cadence":null,"obstacle":null,"how":"html_links, 1 hop, 4 listing_urls"}]},{"bfs_id":6641,"name":"Troinex","canton":"GE","status":"configured","website":"https://troinex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal PV (pv-cm-*.pdf) on the same page as the ordres du jour; one 2020 file is under /images/ (old site); 3 undated; Crawl-delay 10","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://troinex.ch/votre-mairie/vie-politique/conseil-municipal/","from":"2020-02-03","to":"2026-04-20","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6642,"name":"Vandoeuvres","canton":"GE","status":"not_published","website":"http://www.vandoeuvres.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"a sample PDF was downloaded before the entry was dropped","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://www.vandoeuvres.ch/politique/seances-ordinaires/","from":"2026-05-11","to":"2026-05-11","cadence":null,"obstacle":"only the newest Conseil municipal PV (PV_CM_2026_05_11.pdf) is published, no archive; below the three-document threshold, entry not shipped","how":"ask commune for the archive"}]},{"bfs_id":6643,"name":"Vernier","canton":"GE","status":"upstream_only","website":"https://www.vernier.ch","vendor":"drupal","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6643.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6644,"name":"Versoix","canton":"GE","status":"configured","website":"https://www.versoix.ch","vendor":"iomedia-classic","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil municipal; iomedia classic (server-rendered, non-Nuxt); validated with years 2024-2026 and 6 sessions followed (4 PVs); archive goes back to 2015; sessions without a PV yet (cancelled, most recent) yield nothing","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.versoix.ch/vie-politique/conseil-municipal/seances-du-conseil/seances-du-conseil-municipal-285?archives=1&year={2015..2026}&type=CM","from":"2025-12-15","to":"2026-05-18","cadence":null,"obstacle":null,"how":"html_links, 2 hops (year archive pages {2015..2026} -> session page ?type=CM&date=<id>, anchor '2 mars 2026' -> /media/document/.../2026-03-02-cm-proces-verbal.pdf), max_follow 80"}]},{"bfs_id":6645,"name":"Veyrier","canton":"GE","status":"configured","website":"https://veyrier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil municipal; 2022 PVs are linked through /cf_docs/<slug>/ pages that 302 to the PDF (crawler follows); Deliberations (decision extracts) on the same page were left out","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://veyrier.ch/votre-commune/autorites-politique/deliberations-et-proces-vebaux-du-conseil-municipal/","from":"2018-01-23","to":"2026-05-19","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":1630,"name":"Glarus Nord","canton":"GL","status":"configured","website":"https://www.glarus-nord.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"PDFs up to 43 MB; validated with max_follow 2 per hop, archive depth checked by hand; a separate script app exists at gemeindeversammlung.glarus-nord.ch/assembly/<date>","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.glarus-nord.ch/online-schalter/unterlagen-gemeindeversammlungen/unterlagen-vergangener-gemeindeversammlungen.html/2678","from":"2025-11-10","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 3 hops (year pages 2009-2026 -> assembly page -> 'Protokoll der Gemeindeversammlung vom ...'), max_follow 80"}]},{"bfs_id":1631,"name":"Glarus Süd","canton":"GL","status":"configured","website":"https://www.glarus-sued.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"validated with follow capped at 3; generic anchor text; separate script app gemeindeversammlung.glarus-sued.ch/assembly/<date> for the newest assemblies; date_regex adjusted offline after the adapter change; two sample PDFs downloaded","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.glarus-sued.ch/politik/gemeindeversammlungen/vergangene-gemeindeversammlungen.html/7614","from":"2024-11-21","to":"2025-11-20","cadence":null,"obstacle":null,"how":"html_links, 2 hops (overview 'dd.mm.yyyy ordentliche GV' pages 2011-2025 -> 'Protokoll' PDF with date in file name), max_follow 80"}]},{"bfs_id":1632,"name":"Glarus","canton":"GL","status":"configured","website":"https://www.glarus.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"validated with follow capped at 3; since November 2025 a separate script app (gemeindeversammlung.glarus.ch/assemblies) is used in parallel","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.glarus.ch/politik/gemeindeversammlung/vergangene-gemeindeversammlungen.html/5923","from":"2025-06-13","to":"2025-11-28","cadence":null,"obstacle":null,"how":"html_links, 2 hops (overview page linking every assembly 2008-2026 -> assembly page 'Protokoll der Gemeindeversammlung vom ...'), max_follow 80"}]},{"bfs_id":3506,"name":"Vaz/Obervaz","canton":"GR","status":"configured","website":"http://www.vazobervaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.vazobervaz.ch/behoerden/gemeinderat/protokolle/","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 77 dated PDF links on the page, newest 2026-06-25; body guessed from the URL"},{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.vazobervaz.ch/behoerden/gemeinderat/protokolle/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3513,"name":"Lantsch/Lenz","canton":"GR","status":"candidate","website":"http://www.lantsch-lenz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lantsch-lenz.ch/behoerden/politische-gemeinde/gemeindeversammlungen/protokoll-der-gemeindeversammlung-vom-23062026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokoll der Gemeindeversammlung vom 23' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3514,"name":"Schmitten","canton":"GR","status":"candidate","website":"https://www.schmitten-gr.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schmitten-gr.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-11-27","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 42 files match, newest 2025-11-27, e.g. 'Protokoll-Gemeindeversammlung-27.11.2025'; body guessed from the URL"}]},{"bfs_id":3542,"name":"Albula/Alvra","canton":"GR","status":"candidate","website":"https://www.albula-alvra.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.albula-alvra.ch/sitzung","from":"2015","to":"2026-08-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2015; minutes attached to the session pages as 'Protokoll'"}]},{"bfs_id":3543,"name":"Surses","canton":"GR","status":"not_examined","website":"https://surses.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3544,"name":"Bergün Filisur","canton":"GR","status":"not_examined","website":"https://www.berguenfilisur.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3551,"name":"Brusio","canton":"GR","status":"candidate","website":"https://www.brusio.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-14 GR gap review: PDF paths disallowed by robots.txt; no archive configured. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.brusio.ch/autorita/assemblea-comunale","from":null,"to":"2026-08-21","cadence":null,"obstacle":null,"how":"probe: 71 dated PDF links on the page, newest 2026-08-21, e.g. 'Convocazione Assemblea comunale del 21 agosto 2026'; body guessed from the URL"}]},{"bfs_id":3561,"name":"Poschiavo","canton":"GR","status":"candidate","website":"https://www.poschiavo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated; 2026-09-14 GR gap review: PDF paths disallowed by robots.txt; no archive configured. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.poschiavo.ch/it/decisioni-e-verbali-della-giunta-comunale/61-vitae-laoreet-massa","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 0 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3572,"name":"Falera","canton":"GR","status":"candidate","website":"http://www.falera.net","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.falera.net/gemeinde/gemeindeversammlungen/","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 35 dated PDF links on the page, newest 2026-06-12, e.g. 'Gemeindeversammlung vom 12.06.2026'; body guessed from the URL"}]},{"bfs_id":3575,"name":"Laax","canton":"GR","status":"candidate","website":"http://www.laax-gr.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.laax-gr.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2024-09-22","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 11 files match, newest 2024-09-22, e.g. 'Protokoll Kantonale Volksabstimmung vom 22.09.2024'; body guessed from the URL"}]},{"bfs_id":3581,"name":"Sagogn","canton":"GR","status":"candidate","website":"https://www.sagogn.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sagogn.ch/politik/gemeindeversammlungen/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeindeversammlungen' with 12 dated minutes links, e.g. 'Kurzprotokoll 12.06.2026'"}]},{"bfs_id":3582,"name":"Schluein","canton":"GR","status":"not_examined","website":"https://www.schluein.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 5 sessions since 2025 (Radunonza communala | Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3603,"name":"Vals","canton":"GR","status":"candidate","website":"http://www.vals.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vals.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2024-11-09","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 7 files match, newest 2024-11-09, e.g. 'Protokoll 6.vordentliche GV_2024.11.09_def_'; body guessed from the URL"}]},{"bfs_id":3618,"name":"Lumnezia","canton":"GR","status":"configured","website":"https://www.lumnezia.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"German anchor text 'Protokoll der Gemeindeversammlung vom ...', PDFs in Romansh (Protocol radunonza communala); language rm","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.lumnezia.ch/de/gemeinde/politik/gemeindeversammlungen","from":"2013-02-08","to":"2026-08-07","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3619,"name":"Ilanz/Glion","canton":"GR","status":"configured","website":"http://www.ilanz-glion.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Gemeindeparlament Beschlussprotokolle; anchor text is the date ('18. Februar 2026'); sessions without a protocol yet (24. Juni 2026) trigger the crawler's retry; probe hit","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.ilanz-glion.ch/gemeinde/politik/gemeindeparlament/protokolle","from":"2019-02-06","to":"2026-04-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (session pages in the sub-navigation grouped by year folders with irregular slugs 2025-1, 2023-1 -> PDF)"}]},{"bfs_id":3633,"name":"Fürstenau","canton":"GR","status":"configured","website":"https://www.fuerstenau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; page-builder with ed-element markup; 'Gemeindeversammlungsprotokoll vom 9. Juni 2026' -> /document/26357293/Nr.66vom9.Juni2026_anonymisiert-<hash>.pdf; anonymised minutes; 8 found 8 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.fuerstenau.ch/protokolle","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3637,"name":"Rothenbrunnen","canton":"GR","status":"candidate","website":"http://www.rothenbrunnen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-12 archive review: 27 exact PDF URLs linked from official municipal listings configured in linked-sources.yaml; one PDF signature verified. External cdn1.site-media.eu scope is limited to the observed file URLs. Documents enter the untagged archive; existing minutes-publication statuses are unchanged. See docs/GR-SG-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rothenbrunnen.ch/meldung/protokoll-gemeindeversamlung-vom-4-dezember-2025","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":3638,"name":"Scharans","canton":"GR","status":"candidate","website":"https://www.scharans.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://scharans.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2022-03-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2022-03-10, e.g. 'Protokoll der Gemeindeversammlung vom 10.03.2022'; body guessed from the URL"}]},{"bfs_id":3640,"name":"Sils im Domleschg","canton":"GR","status":"not_examined","website":"https://www.sils-id.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.sils-id.ch/gemeindeversammlung/)","publications":[]},{"bfs_id":3661,"name":"Cazis","canton":"GR","status":"candidate","website":"http://www.cazis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cazis.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 35 files match, newest 2026-06-14, e.g. 'Protokoll der VA vom 14.06.2026'; body guessed from the URL"}]},{"bfs_id":3662,"name":"Flerden","canton":"GR","status":"configured","website":"http://www.flerden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.flerden.ch/protokolle-beschluesse","from":null,"to":"2026-03-26","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-03-26; body guessed from the URL"},{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.flerden.ch/protokolle-beschluesse","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3663,"name":"Masein","canton":"GR","status":"candidate","website":"http://www.masein.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n\n2026-09-12 archive review: 9 exact PDF URLs linked from official municipal listings configured in linked-sources.yaml; one PDF signature verified. External cdn1.site-media.eu scope is limited to the observed file URLs. Documents enter the untagged archive; existing minutes-publication statuses are unchanged. See docs/GR-SG-REVIEW-2026-09-12.md.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.masein.ch/protokolle-beschluesse","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokolle / Beschlüsse' has 3 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3668,"name":"Thusis","canton":"GR","status":"configured","website":"https://thusis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"redacted versions; Crawl-delay 10; WP REST media API lists the 20 assembly protocol PDFs; soft hyphens in menus","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://thusis.ch/politik/gemeindeversammlung/","from":"2023-08-30","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3669,"name":"Tschappina","canton":"GR","status":"not_examined","website":"https://www.tschappina.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 404; 2026-09-14 GR gap review: 24 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md. Corrected official website from http://www.heinzenberg.ch/tschappina.html to https://www.tschappina.ch.","publications":[]},{"bfs_id":3670,"name":"Urmein","canton":"GR","status":"candidate","website":"https://www.urmein.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-12 archive review: 31 exact PDF URLs linked from official municipal listings configured in linked-sources.yaml; one PDF signature verified. External cdn1.site-media.eu scope is limited to the observed file URLs. The unreviewed gvg.gr.ch link is excluded. Documents enter the untagged archive; existing minutes-publication statuses are unchanged. See docs/GR-SG-REVIEW-2026-09-12.md.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.urmein.ch/aktuelles/bekanntgabe-genehmigungsbeschluss-ortsplanung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":3672,"name":"Safiental","canton":"GR","status":"not_examined","website":"https://gemeinde.safiental.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3673,"name":"Domleschg","canton":"GR","status":"candidate","website":"https://domleschg.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site address review","notes":"probe 2026-09-10: wp_media\n\n2026-09-12: Official municipal identity verified at https://domleschg.ch/; replaces stale address http://www.tomils.ch. Public PDF source verified and connected to the raw archive. See docs/WEBSITE-ADDRESS-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://domleschg.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 45 files match, newest 2026-03-11, e.g. 'GV-Protokoll 11.03.2026'; body guessed from the URL"}]},{"bfs_id":3681,"name":"Avers","canton":"GR","status":"candidate","website":"https://gemeindeavers.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://gemeindeavers.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 42 files match, newest 2026-06-12, e.g. 'Protokoll Gemeindeversammlung 12.06.2026'; body guessed from the URL"}]},{"bfs_id":3695,"name":"Sufers","canton":"GR","status":"candidate","website":"http://www.sufers.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://sufers.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2023-12-08","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 13 files match, newest 2023-12-08, e.g. 'Protokoll GV_2023-12-08_Auflage Homepage Sufers'; body guessed from the URL"}]},{"bfs_id":3701,"name":"Andeer","canton":"GR","status":"candidate","website":"https://www.gemeinde-andeer.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeinde-andeer.ch/sitzung","from":"2005","to":"2026-08-19","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 86 sessions since 2005; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 19. August 2026_Auflage'"}]},{"bfs_id":3711,"name":"Rongellen","canton":"GR","status":"candidate","website":"http://www.rongellen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rongellen.ch/protokoll-der-gemeindeversammlung-vom-01052026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokoll der Gemeindeversammlung vom 01' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":3712,"name":"Zillis-Reischen","canton":"GR","status":"not_examined","website":"http://www.zillis-reischen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3713,"name":"Ferrera","canton":"GR","status":"candidate","website":"http://www.ferrera.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://ferrera.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-29","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2026-04-29, e.g. 'Protokoll der Gemeindeversammlung vom 29.04.2026'; body guessed from the URL"}]},{"bfs_id":3714,"name":"Rheinwald","canton":"GR","status":"not_examined","website":"https://rheinwald.ch/","vendor":"unknown","reachable":false,"checked":"2026-10-01","checked_by":"Codex, review of cantonal GEFIS BFS row and permitted PDF signature","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: robots.txt disallows the site root; 2026-09-14 GR gap review: Root disallowed by robots.txt; no archive configured. See docs/GR-GAPS-REVIEW-2026-09-14.md. 2026-10-01: The official Graubünden GEFIS index explicitly maps BFS 3714 to a public municipal finance profile, whose PDF prefix passes robots and TLS checks. Vendor remains unidentified (unknown); only the exact canton-published file is configured, without municipal-site listings or changes to publication statuses. See docs/reviews/evidence/2026-10-01-gr-gefis.json.","publications":[]},{"bfs_id":3715,"name":"Muntogna da Schons","canton":"GR","status":"candidate","website":"https://mdschons.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://mdschons.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 29 files match, newest 2026-06-14, e.g. 'Protokoll_Regierungswahlen_14.06.2026'; body guessed from the URL"}]},{"bfs_id":3721,"name":"Bonaduz","canton":"GR","status":"candidate","website":"http://www.bonaduz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://bonaduz.ch/gemeinde-verwaltung/gemeindeversammlungen","from":null,"to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: 34 dated PDF links on the page, newest 2026-05-28, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":3722,"name":"Domat/Ems","canton":"GR","status":"candidate","website":"http://www.domat-ems.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.domat-ems.ch/sitzung","from":"2020","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 55 sessions since 2020; minutes attached to the session pages as 'Protokoll vom 27.04.2026'"}]},{"bfs_id":3723,"name":"Rhäzüns","canton":"GR","status":"not_examined","website":"http://www.rhaezuens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://rhaezuens.ch/behoerden/gemeindeversammlung/); 2026-09-14 GR gap review: 14 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[]},{"bfs_id":3731,"name":"Felsberg","canton":"GR","status":"not_examined","website":"https://www.felsberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 62 sessions since 2004 (Gemeindeversammlung, Gemeindeversammlung (Budget), Gemeindeversammlung (Budget) vom Freitag, Gemeindeversammlung (Wahlen); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3732,"name":"Flims","canton":"GR","status":"not_examined","website":"http://www.gemeindeflims.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 27 sessions since 2019 (ABGESAGT - Gemeindeversammlung, ABGESAGT- Gemeindeversammlung vom 11. Mai 2020, Gemeindeversammlung, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3733,"name":"Tamins","canton":"GR","status":"candidate","website":"https://www.tamins.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tamins.ch/gmeindeversammlung","from":"2020","to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 18 sessions since 2020; minutes attached to the session pages as 'Protokoll vom 21. Mai 2026'"}]},{"bfs_id":3734,"name":"Trin","canton":"GR","status":"candidate","website":"http://www.trin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.trin.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-26","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 48 files match, newest 2026-06-26, e.g. '2026 06 26 Auflage Protokoll Gemeindeversammlung 19. Juni 20'; body guessed from the URL"}]},{"bfs_id":3746,"name":"Zernez","canton":"GR","status":"candidate","website":"https://www.zernez.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zernez.ch/aktuell/protokolle/gemeindevorstand/","from":null,"to":"2023-03-06","cadence":null,"obstacle":null,"how":"probe: 232 dated PDF links on the page, newest 2023-03-06, e.g. 'Protocol #05-2023'; body guessed from the URL"}]},{"bfs_id":3752,"name":"Samnaun","canton":"GR","status":"candidate","website":"https://www.samnaun.swiss","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.samnaun.swiss/gemeindeversammlung","from":"2010","to":"2026-07-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 22 sessions since 2010; minutes attached to the session pages as '01. Protokoll_Gemeindeversammlung 2026'"}]},{"bfs_id":3762,"name":"Scuol","canton":"GR","status":"blocked_robots","website":"https://www.scuol.net/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Romansh site; wave 2: assembly minutes page found, the files sit behind an Ajax block under /route/ (robots); an executive minutes page 'Protocols da la suprastanza cumuenala' exists as well (same sitemap, not examined)","publications":[{"body":"assembly","kind":"minutes","status":"blocked_robots","listing_url":"https://www.scuol.net/rm/sur-dal-cumuen-da-scuol/autoritats/protocols-da-las-radunanzas-cumuenalas.html/247","from":"2015","to":"2026","cadence":null,"obstacle":"the GOViS DMS folder tree (year folders 2015-2026) is filled by an Ajax block under /route/ (data-ajax-load-url=/route/cms-index-renderAjaxBlock/...), which robots.txt disallows; the opendcategory/<id> pages render the collapsed tree without files; a dry run over all twelve year folders found no document","how":"'Protocols da las radunanzas cumuenalas' found through the Romansh sitemap; only the vendor (Backslash AG) or the commune can open it; the host answered HTTP 429 on 3 of 17 requests"}]},{"bfs_id":3764,"name":"Valsot","canton":"GR","status":"blocked_js","website":"https://www.valsot.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3781,"name":"Bever","canton":"GR","status":"candidate","website":"https://www.gemeinde-bever.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeinde-bever.ch/gemeinde/gemeindehaus/behoerden/gemeindeversammlung","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 31 dated PDF links on the page, newest 2026-06-25, e.g. 'Gemeindeversammlung vom 25. Juni 2026'; body guessed from the URL"}]},{"bfs_id":3782,"name":"Celerina/Schlarigna","canton":"GR","status":"candidate","website":"http://www.gemeinde-celerina.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeinde-celerina.ch/gemeinde-celerina/protokolle-gemeindeversammlung","from":null,"to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: 12 dated PDF links on the page, newest 2026-06-01, e.g. 'Gemeindeversammlung Nr. 3/2026'; body guessed from the URL"}]},{"bfs_id":3783,"name":"Madulain","canton":"GR","status":"needs_feature","website":"https://www.madulain.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: year pages 2022-2026 with undated anchors; needs the preceding-heading date rule","publications":[{"body":"assembly","kind":"minutes","status":"needs_feature","listing_url":"https://www.madulain.ch/gemeinde/gemeindeversammlung/","from":"2022","to":"2026","cadence":null,"obstacle":"Elementor year pages (the parent page for 2026, protokolle-jahr-2025/ to -2022/ for earlier years, 3 to 4 files each); the PDF anchor text and file name are 'Protokoll-GV-02-2025' (no date), the date is only in an h4 heading widget above the anchor ('Protokoll Gemeindeversammlung 26. Mai 2025')","how":"date from the nearest preceding heading (context: preceding), same shape as Ottenbach"}]},{"bfs_id":3784,"name":"Pontresina","canton":"GR","status":"not_examined","website":"https://www.gemeinde-pontresina.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript; 2026-09-14 GR gap review: 10 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[]},{"bfs_id":3785,"name":"La Punt Chamues-ch","canton":"GR","status":"candidate","website":"https://gemeinde-lapunt.ch/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site address review","notes":"probe 2026-09-10: protocol_page_undated\n\n2026-09-12: Official municipal identity verified at https://gemeinde-lapunt.ch/; replaces stale address https://www.lapunt.ch. Public PDF source verified and connected to the raw archive. See docs/WEBSITE-ADDRESS-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://gemeinde-lapunt.ch/verwaltung/politik","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Official politics page links assembly minutes and invitations for 2023–2026, alongside separate executive reports. Raw collection does not infer decision tags."}]},{"bfs_id":3786,"name":"Samedan","canton":"GR","status":"blocked_js","website":"http://www.samedan.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":3787,"name":"St. Moritz","canton":"GR","status":"configured","website":"https://www.gemeinde-stmoritz.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"Gemeinderat (legislative) and Gemeindeversammlung protocols; anchor text is 'PDF', the title attribute holds the session name; election-result PDFs on the same page filtered by url_regex /pdf/protokolle/; probe hit","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.gemeinde-stmoritz.ch/aktuelles/protokolle","from":"2025-01-29","to":"2026-01-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3788,"name":"S-chanf","canton":"GR","status":"not_examined","website":"https://www.s-chanf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 67 sessions since 2014 (RADUNANZA CUMÜNELA / GEMEINDEVERSAMMLUNG, RADUNANZA D'ORIENTAZIUN / ORIENTIERUNGSVERSAMMLUNG, RADUNANZA D'ORIENTAZIUN RE); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3789,"name":"Sils im Engadin/Segl","canton":"GR","status":"candidate","website":"http://www.sils-segl.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sils-segl.ch/einladungen-botschaften-gemeindeversammlung-2864.html","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: 37 dated PDF links on the page, newest 2026-06-18, e.g. 'Botschaft Gemeindeversammlung 2026 06 18.pdf (4,1 MiB)'; body guessed from the URL"}]},{"bfs_id":3790,"name":"Silvaplana","canton":"GR","status":"candidate","website":"https://gemeinde-silvaplana.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://gemeinde-silvaplana.ch/verwaltung/politik/gemeindeversammlung","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 57 dated PDF links on the page, newest 2026-06-25, e.g. 'Einladung zur 2. Gemeindeversammlung am Mittwoch, 25. Juni 2'; body guessed from the URL"}]},{"bfs_id":3791,"name":"Zuoz","canton":"GR","status":"not_examined","website":"https://www.zuoz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3792,"name":"Bregaglia","canton":"GR","status":"not_examined","website":"https://comunedibregaglia.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?); 2026-09-14 GR gap review: 83 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md. Corrected official website from http://portalebregaglia.ch to https://comunedibregaglia.ch.","publications":[]},{"bfs_id":3804,"name":"Buseno","canton":"GR","status":"not_examined","website":"https://www.buseno.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.buseno.ch/albo-comunale/1038-decisione-assemblea-comunale-del-01-09-2026, https://www.buseno.ch/servizi-e-atti/assemblea-comunale)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":3805,"name":"Castaneda","canton":"GR","status":"candidate","website":"http://www.castaneda.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.castaneda.ch/servizi-e-atti/assemblea-comunale","from":null,"to":"2026-08-27","cadence":null,"obstacle":null,"how":"probe: 32 dated PDF links on the page, newest 2026-08-27, e.g. '27.08.2026 - Decisioni Assemblea comunale 27.08.2026'; body guessed from the URL"}]},{"bfs_id":3808,"name":"Rossa","canton":"GR","status":"not_examined","website":"https://www.rossa.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.rossa.ch/il-comune/autorita, https://www.rossa.ch/servizi-e-atti/assemblea-comunale); 2026-09-14 GR gap review: 17 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[]},{"bfs_id":3810,"name":"Santa Maria in Calanca","canton":"GR","status":"candidate","website":"https://www.santamariaic.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.santamariaic.ch/albo-comunale/risoluzioni","from":null,"to":"2025-12-18","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-12-18, e.g. '2025.12.18-Verbale-assemblea-comunale_4b5a9.pdf'; body guessed from the URL"}]},{"bfs_id":3821,"name":"Lostallo","canton":"GR","status":"not_examined","website":"http://www.lostallo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.lostallo.ch/il-comune/autorita)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3822,"name":"Mesocco","canton":"GR","status":"not_examined","website":"https://www.mesocco.swiss","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.mesocco.swiss/il-comune/autorita)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3823,"name":"Soazza","canton":"GR","status":"not_examined","website":"https://www.soazza.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.soazza.ch/servizi-e-atti/assemblea-comunale)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":3831,"name":"Cama","canton":"GR","status":"not_examined","website":"https://www.cama.swiss","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page; 2026-09-14 GR gap review: 12 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md. Corrected official website from http://www.valcama.ch to https://www.cama.swiss.","publications":[]},{"bfs_id":3832,"name":"Grono","canton":"GR","status":"candidate","website":"https://www.grono.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.grono.ch/albo-comunale/1997-risoluzioni-municipio-1-settembre-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni Municipio: 1 settembre 2026' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3834,"name":"Roveredo","canton":"GR","status":"not_examined","website":"https://www.roveredo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.roveredo.ch/il-comune/autorita, https://www.roveredo.ch/servizi-e-atti/documentazione-del-consiglio-comunale?id=84)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3835,"name":"San Vittore","canton":"GR","status":"candidate","website":"https://www.sanvittore.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.sanvittore.ch/albo-comunale/risoluzioni-municipio","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni Municipio' has 21 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":3837,"name":"Calanca","canton":"GR","status":"candidate","website":"https://www.calanca.ch/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site address review","notes":"probe 2026-09-10: protocol_page_undated\n\n2026-09-12: Official municipal identity verified at https://www.calanca.ch/; replaces stale address http://www.comunedicalanca.ch. Public PDF source verified and connected to the raw archive. See docs/WEBSITE-ADDRESS-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.calanca.ch/albo-comunale/comunicati/1204-risoluzioni-municipali-del-07-07-2026-e-04-08-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni municipali del 07.07.2026 e ' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3847,"name":"Val Müstair","canton":"GR","status":"not_examined","website":"https://www.cdvm.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: no link mentioning minutes or a council on the home page; 2026-09-14 GR gap review: 34 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md. Corrected official website from http://www.muenstertal.ch to https://www.cdvm.ch.","publications":[]},{"bfs_id":3851,"name":"Davos","canton":"GR","status":"not_examined","website":"https://www.gemeindedavos.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3861,"name":"Fideris","canton":"GR","status":"candidate","website":"http://www.fideris.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fideris.ch/sitzung","from":"2024","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 7 sessions since 2024; minutes attached to the session pages as 'Beschlussprotokoll'"}]},{"bfs_id":3862,"name":"Furna","canton":"GR","status":"configured","website":"http://www.furna.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Protokoll der Gemeindeversammlung vom 25.06.2025', 'Botschaft GV 25.06.2026'; the site's text and file-name years disagree in places; 10 found 10 dated; REST media search=protokoll works; register correction: probe_all.json says canton VS, the vendor doc says GR, Furna (BFS 3862) is in GR; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://furna.ch/gemeindeversammlung/","from":"2023","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3863,"name":"Jenaz","canton":"GR","status":"configured","website":"http://www.jenaz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live WordPress source review","notes":"Endpoint and document titles checked on 2026-09-11. Archive scope also permits related municipal documents and versions; no extracted decisions inferred from inclusion. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://jenaz.ch/wp-json/wp/v2/media?search=protokoll","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public PDF results for the protocol search, up to 50 per run"}]},{"bfs_id":3871,"name":"Klosters","canton":"GR","status":"candidate","website":"https://www.gemeindeklosters.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.gemeindeklosters.ch/gemeindeversammlung","from":"2010","to":"2026-09-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 147 sessions since 2010; minutes attached to the session pages as '260622_Protokoll_GRS17'"}]},{"bfs_id":3881,"name":"Conters im Prättigau","canton":"GR","status":"candidate","website":"http://www.conters.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.conters.ch/sitzung","from":"2022","to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2022; minutes attached to the session pages as 'Beschlussprotokoll'"}]},{"bfs_id":3882,"name":"Küblis","canton":"GR","status":"candidate","website":"https://www.kueblis.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kueblis.ch/de/politik/gemeindeversammlung.php","from":null,"to":"2025-11-21","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2025-11-21, e.g. 'Protokoll 21.11.2025'; body guessed from the URL"}]},{"bfs_id":3891,"name":"Luzein","canton":"GR","status":"not_published","website":"https://www.luzein.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"canton corrected by report: batch says VS, Luzein is GR","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.luzein.ch/de/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"GV page links only to 'Anlaesse & Protokolle', which holds protocols of village events, not of the assembly","how":"ask commune"}]},{"bfs_id":3901,"name":"Chur","canton":"GR","status":"candidate","website":"https://www.chur.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; Gemeinderat (parliament); i-web host, unreachable from the crawler's network; probe 2026-09-10: i-web session module read","publications":[{"body":"executive","kind":"decisions","status":"candidate","listing_url":"https://www.chur.ch/sitzung","from":"2010","to":"2026-09-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 141 sessions since 2010; decisions attached to the session pages as 'GR Beschlüsse Amtsblatt'"}]},{"bfs_id":3911,"name":"Churwalden","canton":"GR","status":"candidate","website":"https://churwalden.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://churwalden.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 54 files match, newest 2026-06-16, e.g. 'Protokoll GVE 02-26 vom 16062026'; body guessed from the URL"}]},{"bfs_id":3921,"name":"Arosa","canton":"GR","status":"not_examined","website":"https://www.gemeindearosa.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 3 sessions since 2025 (1. Gemeindeparlamentssitzung, 2. Gemeindeparlamentssitzung (Jahresrechnung), Gemeindeparlament-Sitzung (Budget)); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3945,"name":"Trimmis","canton":"GR","status":"configured","website":"https://www.trimmis.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"canton GR confirmed by report","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.trimmis.ch/politik/gemeindeversammlung","from":"2025-06-04","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3946,"name":"Untervaz","canton":"GR","status":"candidate","website":"http://www.untervaz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.untervaz.ch/sitzung","from":"2022","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 12 sessions since 2022; minutes attached to the session pages as 'Gemeindeversammlung 16.6.2026_Protokoll_geschwärzt_unterzeichnet'"}]},{"bfs_id":3947,"name":"Zizers","canton":"GR","status":"configured","website":"https://zizers.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Gemeindeversammlung protocols (GVyymmdd.pdf), anchor text is the date; probe hit correct; also in docs/VENDOR-PATTERNS.md: Avada accordion per year, 31 found 31 dated offline; WP REST media search 'protokoll' is mixed (the real minutes named GVyymmdd.pdf do not match)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://zizers.ch/protokolle/","from":"2013-10-18","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":3951,"name":"Fläsch","canton":"GR","status":"not_examined","website":"https://www.flaesch.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.flaesch.ch/politik-verwaltung/gemeindeversammlung, https://www.flaesch.ch/politik-verwaltung/gemeindeversammlung/naechste-gemeindeversammlungen, https://www.flaesch.ch/politik-verwaltung/gemeindeversammlung/letzte-gemeindeversammlungen)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3952,"name":"Jenins","canton":"GR","status":"blocked_js","website":"https://www.jenins.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call; 2026-09-14 GR gap review: No PDF found in bounded review; earlier route restriction remains; no archive configured. See docs/GR-GAPS-REVIEW-2026-09-14.md.\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Observed GOViS sections use generic persistent linked discovery without topic filters.","publications":[]},{"bfs_id":3953,"name":"Maienfeld","canton":"GR","status":"candidate","website":"https://www.maienfeld.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.maienfeld.ch/sitzung","from":"2016","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2016; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 11.12.2025'"}]},{"bfs_id":3954,"name":"Malans","canton":"GR","status":"candidate","website":"https://www.malans.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.malans.ch/sitzung","from":"2011","to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 51 sessions since 2011; minutes attached to the session pages as 'Kurzprotokoll der Gemeindeversammlung 2026.06.08'"}]},{"bfs_id":3955,"name":"Landquart","canton":"GR","status":"configured","website":"https://www.landquart.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"the tmstv value changes on every page render, so the fetch index never matches and the crawler re-downloads each run (sha dedup prevents duplicate files); needs strip_query or url_key_regex","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.landquart.ch/landquart-online/publikationen/protokolle-gemeindeversammlung/","from":"2018-11-28","to":"2026-06-25","cadence":null,"obstacle":null,"how":"html_links, 1 hop, /dl/<id>/?tmstv=<timestamp> download links"}]},{"bfs_id":3961,"name":"Grüsch","canton":"GR","status":"candidate","website":"https://www.gruesch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gruesch.ch/verwaltung/politik/gemeindeversammlung.html/118/opendcategory/27","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: 12 dated PDF links on the page, newest 2026-06-18, e.g. 'GV-Protokoll 18.06.2026'; body guessed from the URL"}]},{"bfs_id":3962,"name":"Schiers","canton":"GR","status":"candidate","website":"https://www.schiers.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schiers.ch/sitzung","from":"2019","to":"2026-08-28","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 27 sessions since 2019; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 19.06.2026'"}]},{"bfs_id":3972,"name":"Seewis im Prättigau","canton":"GR","status":"candidate","website":"https://www.seewis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.seewis.ch/gemeindeversammlung/#collapse4","from":null,"to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: 36 dated PDF links on the page, newest 2026-06-19, e.g. 'Botschaft_2026-06-19'; body guessed from the URL"}]},{"bfs_id":3981,"name":"Breil/Brigels","canton":"GR","status":"candidate","website":"https://www.breil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.breil.ch/de/publikationen/gemeinderat/protokoll-der-sitzung-des-gemeinderats-vom-30012026/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'De utsch' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":3982,"name":"Disentis/Mustér","canton":"GR","status":"not_examined","website":"http://www.disentis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3983,"name":"Medel","canton":"GR","status":"not_examined","website":"https://www.medel.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3985,"name":"Sumvitg","canton":"GR","status":"not_examined","website":"https://www.sumvitg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page; 2026-09-14 GR gap review: 213 document candidates observed; verified seeds and reviewed sources configured in linked-sources.yaml. Broad documents remain untagged; counts are candidate links, not downloaded totals. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[]},{"bfs_id":3986,"name":"Tujetsch","canton":"GR","status":"not_published","website":"https://www.tujetsch.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"Romansh/German site; the council page (/de/suprastonza-communala/) has no files, only 'Botschaften Gemeinderat'; ask commune; docs/VENDOR-PATTERNS.md only; register guess: body unknown (the page examined is the executive's, the assembly was not located)","publications":[]},{"bfs_id":3987,"name":"Trun","canton":"GR","status":"not_examined","website":"https://www.trun.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":3988,"name":"Obersaxen Mundaun","canton":"GR","status":"candidate","website":"https://www.obersaxenmundaun.swiss","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-14 GR gap review: PDF paths disallowed by robots.txt; no archive configured. See docs/GR-GAPS-REVIEW-2026-09-14.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.obersaxenmundaun.swiss/publikationen/gemeindeversammlungen/","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2026-06-12, e.g. 'Protokoll der GV vom 12.06.2026'; body guessed from the URL"}]},{"bfs_id":6702,"name":"Boécourt","canton":"JU","status":"candidate","website":"https://www.boecourt.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boecourt.ch/fr/Autorites-politiques/Assemblee-communale/Decisions/PV-Assemblee-communale/PV-Assemblee-communale.html","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2026-06-15, e.g. 'PV de l'Assemblée communale du 15.06.2026 (à approuver)'; body guessed from the URL"}]},{"bfs_id":6703,"name":"Bourrignon","canton":"JU","status":"candidate","website":"http://www.bourrignon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bourrignon.ch/br/Autorites-politiques/Assemblee-communale/Proces-verbaux/Proces-verbaux.html","from":null,"to":"2025-12-17","cadence":null,"obstacle":null,"how":"probe: 31 dated PDF links on the page, newest 2025-12-17, e.g. 'PV de l'Assemblée communale du 17 décembre 2025'; body guessed from the URL"}]},{"bfs_id":6704,"name":"Châtillon","canton":"JU","status":"configured","website":"http://www.chatillon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://chatillon.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":6706,"name":"Courchapoix","canton":"JU","status":"configured","website":"https://www.courchapoix.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://courchapoix.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":6708,"name":"Courrendlin","canton":"JU","status":"candidate","website":"https://www.courrendlin.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.courrendlin.ch/fr/Autorites-politiques/Assemblee-communale/Proces-verbaux-et-presentations/Proces-verbaux.html","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2026-06-08, e.g. '2026.06.08 - PV Assemblée communale ordinaire'; body guessed from the URL"}]},{"bfs_id":6709,"name":"Courroux","canton":"JU","status":"not_examined","website":"https://www.courroux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.courroux.ch/fr/Autorites-politiques/Conseil-communal/Conseil-communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6710,"name":"Courtételle","canton":"JU","status":"not_examined","website":"https://www.courtetelle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.courtetelle.ch/fr/Autorites-politiques/Conseil-communal/Presentation/Presentation.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6711,"name":"Delémont","canton":"JU","status":"configured","website":"https://www.delemont.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed public finance, regulations and council archive sections, including historical meeting links, with representative PDF byte checks. Documents are collected without topic or title filtering.","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.delemont.ch/fr/Autorites-politiques/Conseil-de-Ville-Legislatif/Seances-du-Conseil-de-Ville/Seances-du-Conseil-de-Ville.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":6712,"name":"Develier","canton":"JU","status":"candidate","website":"http://www.develier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.develier.ch/fr/Autorites-politiques/Assemblees-communales/Proces-verbaux/Proces-verbaux.html","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 47 dated PDF links on the page, newest 2025-12-15, e.g. 'Procès-verbal de l'Assemblée communale du 15 décembre 2025'; body guessed from the URL"}]},{"bfs_id":6713,"name":"Ederswiler","canton":"JU","status":"not_examined","website":"https://ederswiler.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":6715,"name":"Mervelier","canton":"JU","status":"candidate","website":"https://www.mervelier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://mervelier.ch/index.php/services-communaux/pv-assemblee","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV assemblée' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6716,"name":"Mettembert","canton":"JU","status":"not_examined","website":null,"vendor":null,"reachable":null,"checked":null,"checked_by":null,"notes":null,"publications":[]},{"bfs_id":6718,"name":"Movelier","canton":"JU","status":"candidate","website":"https://www.movelier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.movelier.ch/informations.html#PV%20assembl%C3%A9e%20communale","from":null,"to":"2026-09-04","cadence":null,"obstacle":null,"how":"probe: 52 dated PDF links on the page, newest 2026-09-04, e.g. 'Tout ménage 4.9.2026 publication zone de rencontre'; body guessed from the URL"}]},{"bfs_id":6719,"name":"Pleigne","canton":"JU","status":"candidate","website":"https://www.pleigne.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.pleigne.ch/fr/ACTUALITES-INFORMATIONS/Actualites-2/PV-de-l-assemblee-communale-ordinaire-du-17-06-2026.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV de l'assemblée communale ordinaire du' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6721,"name":"Rossemaison","canton":"JU","status":"not_examined","website":"http://www.rossemaison.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.rossemaison.ch/autorites-politiques/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6722,"name":"Saulcy","canton":"JU","status":"not_examined","website":"http://www.saulcy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6724,"name":"Soyhières","canton":"JU","status":"not_examined","website":"https://www.soyhieres.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.soyhieres.ch/fr/Autorites-politiques/Conseil-communal/Presentation/Presentation.html, https://www.soyhieres.ch/fr/Autorites-politiques/Conseil-communal/Representations-du-conseil-communal/Representations-du-conseil-communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6729,"name":"Haute-Sorne","canton":"JU","status":"not_examined","website":"https://www.haute-sorne.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 8 pages tested (https://www.haute-sorne.ch/fr/Autorites-politiques/Conseil-communal/Le-Conseil-communal.html, https://www.haute-sorne.ch/fr/Autorites-politiques/Conseil-general/Conseil-general.html, https://www.haute-sorne.ch/fr/Autorites-politiques/Conseil-general/Calendrier-des-seances/Calendrier-des-seances-du-Conseil-general.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6730,"name":"Val Terbi","canton":"JU","status":"configured","website":"https://www.val-terbi.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.val-terbi.ch/fr/Autorites-politiques/Conseil-general/Proces-verbaux/Proces-verbaux.html","from":null,"to":"2018-06-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6741,"name":"Le Bémont","canton":"JU","status":"not_examined","website":"http://lebemont.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://lebemont.ch/conseil-communal/)","publications":[]},{"bfs_id":6742,"name":"Les Bois","canton":"JU","status":"candidate","website":"https://www.lesbois.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lesbois.ch/fr/Autorites-politiques/Conseil-general/Proces-verbaux/Proces-verbaux.html","from":null,"to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: 45 dated PDF links on the page, newest 2026-06-29, e.g. 'Procès-verbal du Conseil général du 29 juin 2026'; body guessed from the URL"}]},{"bfs_id":6743,"name":"Les Breuleux","canton":"JU","status":"not_examined","website":"https://www.breuleux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.breuleux.ch/Services-publics/Conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6745,"name":"Les Enfers","canton":"JU","status":"candidate","website":"https://lesenfers.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://lesenfers.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-24","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 15 files match, newest 2026-04-24, e.g. '2026-04-24, PV'; body guessed from the URL"}]},{"bfs_id":6748,"name":"Les Genevez","canton":"JU","status":"candidate","website":"https://www.lesgenevez.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lesgenevez.ch/Guichet-virtuel/PV-des-assemblees-communales","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: 30 dated PDF links on the page, newest 2026-06-24, e.g. 'PV assemblée du 24 juin 2026'; body guessed from the URL"}]},{"bfs_id":6750,"name":"Lajoux","canton":"JU","status":"candidate","website":"http://www.lajoux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lajoux.ch/Administration/PV-assemblee-communale","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2025-12-16, e.g. 'Assemblée communale ordinaire du 16 décembre 2025'; body guessed from the URL"}]},{"bfs_id":6751,"name":"Montfaucon","canton":"JU","status":"not_examined","website":"http://www.montfaucon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.montfaucon.ch/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6753,"name":"Muriaux","canton":"JU","status":"not_examined","website":"https://www.muriaux.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[]},{"bfs_id":6754,"name":"Le Noirmont","canton":"JU","status":"not_examined","website":"https://www.noirmont.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6757,"name":"Saignelégier","canton":"JU","status":"not_examined","website":"https://www.saignelegier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.saignelegier.ch/Autorites/Conseil-communal, https://www.saignelegier.ch/Autorites/Conseil-communal, https://www.saignelegier.ch/News/cc2)\n\n2026-09-26 coverage review: Reviewed official public municipal documents and representative robots-permitted PDF bytes. Generic numeric file downloads and JDownloads routes retain normal byte validation and source provenance.","publications":[]},{"bfs_id":6758,"name":"Saint-Brais","canton":"JU","status":"candidate","website":"https://saint-brais.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links; 2026-09-13 bounded archive review: 26 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://saint-brais.ch/pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV des assemblées' has 25 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":6759,"name":"Soubey","canton":"JU","status":"candidate","website":"https://www.soubey.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.soubey.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2025-10-19","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2025-10-19, e.g. 'Microsoft Word &#8211; 20251019_Soubey_proces_verbal_suffrag'; body guessed from the URL"}]},{"bfs_id":6771,"name":"Alle","canton":"JU","status":"candidate","website":"https://www.alle.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.alle.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2021-10-28","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 54 files match, newest 2021-10-28, e.g. 'PV &#8211; 2021.10.28, Assemble╠üe communale extraordinaire'; body guessed from the URL"}]},{"bfs_id":6774,"name":"Boncourt","canton":"JU","status":"candidate","website":"http://www.boncourt.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boncourt.ch/documents-officiels/proc%C3%A8s-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6778,"name":"Bure","canton":"JU","status":"not_examined","website":"http://www.bure.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.bure.ch/fr/Administration/Conseil-communal/Conseil-communal.html, https://www.bure.ch/fr/Administration/Conseil-communal/Representations-du-conseil-communal/Representations-du-conseil-communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6781,"name":"Coeuve","canton":"JU","status":"not_examined","website":"https://coeuve.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://coeuve.ch/ma-commune/conseil-communal/, https://coeuve.ch/eau-potable/, https://coeuve.ch/pacom/)","publications":[]},{"bfs_id":6782,"name":"Cornol","canton":"JU","status":"candidate","website":"https://www.cornol.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cornol.ch/sitzung","from":"2014","to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 33 sessions since 2014; minutes attached to the session pages as 'PV 26.03.2026 avec annexe'"}]},{"bfs_id":6783,"name":"Courchavon","canton":"JU","status":"configured","website":"https://www.courchavon-mormont.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.courchavon-mormont.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":6784,"name":"Courgenay","canton":"JU","status":"not_examined","website":"https://www.courgenay.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 53 sessions since 2008 (Assemblée communale extraordinaire, Assemblée communale ordinaire); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6785,"name":"Courtedoux","canton":"JU","status":"candidate","website":"http://www.courtedoux.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://courtedoux.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 6 files match, newest 2026-06-11, e.g. 'PV du 11 juin 2026'; body guessed from the URL"}]},{"bfs_id":6789,"name":"Fahy","canton":"JU","status":"not_examined","website":"https://fahy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://fahy.ch/le-conseil-communal/)","publications":[]},{"bfs_id":6790,"name":"Fontenais","canton":"JU","status":"not_examined","website":"https://www.fontenais.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6792,"name":"Grandfontaine","canton":"JU","status":"candidate","website":"http://www.grandfontaine.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://grandfontaine.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 10 files match, newest 2025-12-16, e.g. '16 décembre 2025'; body guessed from the URL"}]},{"bfs_id":6800,"name":"Porrentruy","canton":"JU","status":"candidate","website":"https://porrentruy.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.porrentruy.ch/seances","from":"2018","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 56 sessions since 2018; minutes attached to the session pages as '3. Procès-verbal de la séance du 21 mai 2026'"}]},{"bfs_id":6806,"name":"Vendlincourt","canton":"JU","status":"candidate","website":"http://www.vendlincourt.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 24 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.vendlincourt.ch/proces-verbaux-assemblees-communales-2","from":null,"to":"2026-04-13","cadence":null,"obstacle":null,"how":"probe: 18 dated PDF links on the page, newest 2026-04-13, e.g. 'PV AC 13.04.2026 pour site'; body guessed from the URL"}]},{"bfs_id":6807,"name":"Basse-Allaine","canton":"JU","status":"not_examined","website":"http://www.basse-allaine.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6808,"name":"Clos du Doubs","canton":"JU","status":"not_examined","website":"https://closdudoubs.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals.","publications":[]},{"bfs_id":6809,"name":"Haute-Ajoie","canton":"JU","status":"configured","website":"http://www.hauteajoie.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://hauteajoie.ch/wp-json/wp/v2/media?search=pv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"wp_media; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":6810,"name":"La Baroche","canton":"JU","status":"not_examined","website":"https://www.labaroche.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.labaroche.ch/fr/Autorites-politiques/Conseil-communal/Conseil-communal.html, https://www.labaroche.ch/fr/Autorites-politiques/Conseil-communal/Conseil-communal.html)\n\n2026-09-26 coverage review: Reviewed public finance, regulations and council archive sections, including historical meeting links, with representative PDF byte checks. Official registered domain redirects to labaroche.ch; municipal identity verified on destination pages.","publications":[]},{"bfs_id":6811,"name":"Damphreux-Lugnez","canton":"JU","status":"not_examined","website":"https://www.damphreux-lugnez.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6812,"name":"Basse-Vendline","canton":"JU","status":"candidate","website":"https://www.basse-vendline.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.basse-vendline.ch/fr/Autorites-politiques/Assemblee-communale/Proces-verbaux-des-assemblees-communales/Proces-verbaux.html","from":null,"to":"2026-07-01","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2026-07-01, e.g. 'PV assemblée communale du 01.07.2026'; body guessed from the URL"}]},{"bfs_id":6831,"name":"Moutier","canton":"JU","status":"configured","website":"https://moutier.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://moutier.ch/autorites/conseil-de-ville/proces-verbal/","from":"2019-01-28","to":"2026-02-23","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":1001,"name":"Doppleschwand","canton":"LU","status":"not_examined","website":"https://www.doppleschwand.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.doppleschwand.ch/doppleschwand/politik/gemeindeversammlungen/, https://www.doppleschwand.ch/blog/2026/06/12/gemeindeversammlungs-abstimmungsergebnis-vom-montag-8-juni-2026/)","publications":[]},{"bfs_id":1002,"name":"Entlebuch","canton":"LU","status":"candidate","website":"http://www.entlebuch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.entlebuch.ch/politik/gemeindeversammlungen.html/41","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":1004,"name":"Flühli","canton":"LU","status":"not_examined","website":"http://www.fluehli.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; canton corrected by report: batch says AG, Fluehli is LU; probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1005,"name":"Hasle","canton":"LU","status":"not_examined","website":"http://www.hasle-lu.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1007,"name":"Romoos","canton":"LU","status":"not_examined","website":"https://www.romoos.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1008,"name":"Schüpfheim","canton":"LU","status":"not_published","website":"http://www.schuepfheim.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"canton corrected by report: batch says AG, the commune is in LU","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.schuepfheim.ch/category/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"per-assembly posts with Botschaft and result publication, no protocol","how":"ask commune"}]},{"bfs_id":1009,"name":"Werthenstein","canton":"LU","status":"candidate","website":"https://www.werthenstein.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://werthenstein.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 19 files match, newest 2026-05-27, e.g. 'Publikation Protokollauflage GV 27.05.2026'; body guessed from the URL"}]},{"bfs_id":1010,"name":"Escholzmatt-Marbach","canton":"LU","status":"not_published","website":"https://www.escholzmatt-marbach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"canton corrected by report: batch says AG, the commune is in LU; wp-download-manager site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.escholzmatt-marbach.ch/gemeinde/politik/gemeindeversammlungen/","from":null,"to":null,"cadence":null,"obstacle":"Abstimmungsergebnisse, Botschaft and accounts per Gemeindeversammlung, no protocol","how":"ask commune"}]},{"bfs_id":1021,"name":"Aesch","canton":"LU","status":"not_examined","website":"https://www.aesch-lu.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 8 sessions since 2023 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1023,"name":"Ballwil","canton":"LU","status":"not_examined","website":"http://www.ballwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2015 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1024,"name":"Emmen","canton":"LU","status":"not_examined","website":"http://www.emmen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; Einwohnerrat; i-web host, unreachable from the crawler's network; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"i-web /sitzung pattern, inferred from indexed URLs (docs/CITY-SOURCES.md)"}]},{"bfs_id":1025,"name":"Ermensee","canton":"LU","status":"candidate","website":"https://www.ermensee.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ermensee.ch/sitzung","from":"2007","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 40 sessions since 2007; minutes attached to the session pages as '18 GR Protokoll Rechnung 2025'"}]},{"bfs_id":1026,"name":"Eschenbach","canton":"LU","status":"blocked_js","website":"https://www.eschenbach-luzern.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":1030,"name":"Hitzkirch","canton":"LU","status":"configured","website":"https://www.hitzkirch.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"'Ergebnis der Gemeindeversammlung vom ...' result sheets (Beschluesse) per assembly, plus Botschaft and zip bundles; no full protocol","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.hitzkirch.ch/politik/gemeindeversammlung.html/47","from":"2020-10-22","to":"2026-06-08","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":1031,"name":"Hochdorf","canton":"LU","status":"not_published","website":"https://www.hochdorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"register guess: body executive because the commune has no assembly","publications":[{"body":"executive","kind":"minutes","status":"not_published","listing_url":"https://www.hochdorf.ch/politik/gemeinderat.html/39","from":null,"to":null,"cadence":null,"obstacle":"ballot commune (Orientierungsversammlungen instead of a Gemeindeversammlung); no protocol or Beschluesse page in the Politik section","how":"ask commune"}]},{"bfs_id":1032,"name":"Hohenrain","canton":"LU","status":"blocked_js","website":"http://www.hohenrain.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":1033,"name":"Inwil","canton":"LU","status":"not_published","website":"http://www.inwil.ch","vendor":"cloudrexx","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Collection remains scoped to reviewed sections; no topic or title filters.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"Gemeindeversammlung page holds Botschaft, Budget, Rechnung, no minutes","how":"ask commune"}]},{"bfs_id":1037,"name":"Rain","canton":"LU","status":"candidate","website":"https://www.rain.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rain.ch/sitzung","from":"2003","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 51 sessions since 2003; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 26.11.2025'"}]},{"bfs_id":1039,"name":"Römerswil","canton":"LU","status":"not_examined","website":"http://www.roemerswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":1040,"name":"Rothenburg","canton":"LU","status":"not_examined","website":"http://www.rothenburg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 31 sessions since 2010 (Gemeindeversammlung, ausserordentliche Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1041,"name":"Schongau","canton":"LU","status":"not_examined","website":"https://www.schongau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1051,"name":"Adligenswil","canton":"LU","status":"not_published","website":"https://www.adligenswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"register guess: body executive because the commune has no assembly","publications":[{"body":"executive","kind":"minutes","status":"not_published","listing_url":"https://www.adligenswil.ch/politik-und-verwaltung/orientierungsversammlungen.html/115","from":null,"to":null,"cadence":null,"obstacle":"ballot commune with Orientierungsversammlungen; no protocol page in the homepage navigation (only the homepage was fetched)","how":"ask commune"}]},{"bfs_id":1052,"name":"Buchrain","canton":"LU","status":"not_examined","website":"https://www.buchrain.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Public document sections and site-specific asset storage are used without title filters.","publications":[]},{"bfs_id":1053,"name":"Dierikon","canton":"LU","status":"not_examined","website":"https://www.dierikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 31 sessions since 2013 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung ABGESAGT COVID-19, Orientierungsversamml); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1054,"name":"Ebikon","canton":"LU","status":"not_published","website":"http://www.ebikon.ch","vendor":"onegov","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only; parliament records probably in a separate system\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"Einwohnerrat pages (Sitzungstermine, Sitzungen, Geschaefte) hold schedules only; minutes not found in 4 pages","how":"ask commune"}]},{"bfs_id":1055,"name":"Gisikon","canton":"LU","status":"candidate","website":"https://www.gisikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gisikon.ch/politik/gemeindeversammlungen-.html/38","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 8 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":1056,"name":"Greppen","canton":"LU","status":"not_examined","website":"https://www.greppen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2016 (ABGESAGT: Gemeindeversammlung Budget 2021, ABGESAGT: Gemeindeversammlung Rechnung 2019, Ausserordentliche Gemeindeversam); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1058,"name":"Horw","canton":"LU","status":"upstream_only","website":"http://www.horw.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_1058.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":1059,"name":"Kriens","canton":"LU","status":"configured","website":"https://www.stadt-kriens.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.stadtparlament-kriens.ch/sitzungsplan/sitzungsuebersicht.page/1734","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":1061,"name":"Luzern","canton":"LU","status":"upstream_only","website":"https://www.stadtluzern.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Grosser Stadtrat; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_1061.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":1062,"name":"Malters","canton":"LU","status":"not_examined","website":"https://www.malters.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":1063,"name":"Meggen","canton":"LU","status":"not_published","website":"https://www.meggen.ch","vendor":"onegov","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"search?q=Protokoll (server-rendered, paginated) lists attachments named 'Anhang 4_Protokoll.pdf'; no assembly minutes","how":"ask commune"}]},{"bfs_id":1064,"name":"Meierskappel","canton":"LU","status":"blocked_js","website":"https://www.meierskappel.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":1065,"name":"Root","canton":"LU","status":"not_examined","website":"https://www.gemeinde-root.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 39 sessions since 2010 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung, Orientierungsversammlung, Orientierungsversammlung zur Fusio); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1066,"name":"Schwarzenberg","canton":"LU","status":"not_examined","website":"https://www.schwarzenberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.schwarzenberg.ch/verwaltung-politik/abstimmungen-wahlen-gemeindeversammlung)\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Public document sections and site-specific asset storage are used without title filters.","publications":[]},{"bfs_id":1067,"name":"Udligenswil","canton":"LU","status":"candidate","website":"http://www.udligenswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.udligenswil.ch/sitzung","from":"2012","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 30 sessions since 2012; minutes attached to the session pages as 'Bekanntmachung Protokoll Gemeindeversammlung vom 2. Juni 2025'"}]},{"bfs_id":1068,"name":"Vitznau","canton":"LU","status":"candidate","website":"https://www.vitznau.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vitznau.ch/sitzung","from":"2021","to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2021; minutes attached to the session pages as '4 Bekanntmachung Protokoll'"}]},{"bfs_id":1069,"name":"Weggis","canton":"LU","status":"candidate","website":"https://www.weggis.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.weggis.ch/sitzung","from":"2022","to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 9 sessions since 2022; minutes attached to the session pages as 'Auflage Protokoll Gemeindeversammlung vom 11.05.2026'"}]},{"bfs_id":1081,"name":"Beromünster","canton":"LU","status":"candidate","website":"https://www.beromuenster.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; register correction: batch file says canton AG, Beromuenster (BFS 1081) is in LU; no report processed this commune; probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.beromuenster.ch/de/politik-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2021-12-01","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2021-12-01, e.g. 'Abstimmungsergebnisse ordentliche Gemeindeversammlung vom 1.'; body guessed from the URL"}]},{"bfs_id":1082,"name":"Büron","canton":"LU","status":"not_examined","website":"http://www.bueron.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Anthrazit index.php navigation is same-site, bounded by the persistent crawler and excludes unsafe action parameters.","publications":[]},{"bfs_id":1083,"name":"Buttisholz","canton":"LU","status":"candidate","website":"https://www.buttisholz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buttisholz.ch/sitzung","from":"2023","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 8 sessions since 2023; minutes attached to the session pages as 'Bekanntmachung Protokoll'"}]},{"bfs_id":1084,"name":"Eich","canton":"LU","status":"candidate","website":"https://www.eich.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.eich.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-06-03","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 11 files match, newest 2025-06-03, e.g. 'Publikation Bekanntmachung Protokoll 03.06.2025'; body guessed from the URL"}]},{"bfs_id":1085,"name":"Geuensee","canton":"LU","status":"not_examined","website":"http://www.geuensee.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.geuensee.ch/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":1086,"name":"Grosswangen","canton":"LU","status":"not_examined","website":"https://www.grosswangen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1088,"name":"Hildisrieden","canton":"LU","status":"not_examined","website":"https://www.hildisrieden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 21 sessions since 2015 (Gemeindeversammlung, Kommunale Urnenabstimmung, Rechnungs-Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1089,"name":"Knutwil","canton":"LU","status":"not_examined","website":"https://www.knutwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 9 sessions since 2022 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1091,"name":"Mauensee","canton":"LU","status":"candidate","website":"https://www.mauensee.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mauensee.ch/politik/gemeindeversammlung/18062026.html/407","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 6 dated protocol PDFs, e.g. 'Anordnung Gemeindeversammlung vom 18.06.' (2026-06-18)"}]},{"bfs_id":1093,"name":"Neuenkirch","canton":"LU","status":"not_published","website":"http://www.neuenkirch.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"canton corrected by report: batch says AG, Neuenkirch is LU","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.neuenkirch.ch/politik/gemeindeversammlungen.html/43","from":null,"to":null,"cadence":null,"obstacle":"text only","how":"ask commune"}]},{"bfs_id":1094,"name":"Nottwil","canton":"LU","status":"not_examined","website":"http://www.nottwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1095,"name":"Oberkirch","canton":"LU","status":"not_examined","website":"http://www.oberkirch.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 26 sessions since 2014 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung abgesagt); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1097,"name":"Rickenbach","canton":"LU","status":"not_published","website":"https://www.rickenbach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"listing: https://www.rickenbach.ch/startseite-gemeinde/gemeinderat/; no Gemeindeversammlung page; Gemeinderat page has only the Interessenbindungen PDF; ask commune; canton corrected by report: batch says AG, the commune is Rickenbach LU","publications":[]},{"bfs_id":1098,"name":"Ruswil","canton":"LU","status":"not_published","website":"https://www.ruswil.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"canton corrected by report: batch says AG, Ruswil is LU; politics section has Gemeinderat, Kommissionen, Orientierungsversammlung, Parteien, Wahlen; register guess: body executive because there is no assembly Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"executive","kind":"minutes","status":"not_published","listing_url":"https://ruswil.ch/gemeinde-politik/politik/gemeinderat/","from":null,"to":null,"cadence":null,"obstacle":"ballot commune: decisions go to the ballot box, no assembly, no published Gemeinderat decisions found","how":"ask commune"}]},{"bfs_id":1099,"name":"Schenkon","canton":"LU","status":"not_examined","website":"http://www.schenkon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1100,"name":"Schlierbach","canton":"LU","status":"not_examined","website":"https://www.schlierbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.schlierbach.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1102,"name":"Sempach","canton":"LU","status":"not_examined","website":"https://www.sempach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 20 sessions since 2017 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1103,"name":"Sursee","canton":"LU","status":"candidate","website":"https://www.sursee.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sursee.ch/sitzung","from":"2011","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 59 sessions since 2011; minutes attached to the session pages as 'Bekanntmachung Protokoll Gemeindeversammlung 02.06.2026'"}]},{"bfs_id":1104,"name":"Triengen","canton":"LU","status":"not_examined","website":"https://www.triengen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 48 sessions since 2004 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung /, Informationsveranstaltung, ausserorde); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1107,"name":"Wolhusen","canton":"LU","status":"not_published","website":"http://www.wolhusen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"canton corrected by report: batch says AG, Wolhusen is LU; register guess: body executive because no assembly was found","publications":[{"body":"executive","kind":"minutes","status":"not_published","listing_url":"http://www.wolhusen.ch/politik-verwaltung/politik/","from":null,"to":null,"cadence":null,"obstacle":"no assembly and no minutes page found from the homepage navigation (Gemeinderat, Gemeindestrategie, Kommissionen, Ortsparteien, 'Nachrichten aus dem Gemeinderat' HTML news); not verified beyond the homepage navigation","how":"ask commune"}]},{"bfs_id":1121,"name":"Alberswil","canton":"LU","status":"candidate","website":"https://www.alberswil.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.alberswil.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2026-05-27, e.g. '2026.05.27 Protokoll-Auflage'; body guessed from the URL"}]},{"bfs_id":1122,"name":"Altbüron","canton":"LU","status":"not_examined","website":"https://www.altbueron.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1123,"name":"Altishofen","canton":"LU","status":"candidate","website":"https://www.altishofen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.altishofen.ch/gemeinde/politik/gemeindeversammlungen.html/33","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 21 dated protocol PDFs, e.g. 'Protokollauflage GV 09.06.2026.' (2026-06-09)"}]},{"bfs_id":1125,"name":"Dagmersellen","canton":"LU","status":"not_published","website":"http://www.dagmersellen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"docs/VENDOR-PATTERNS.md agrees: accordion with 'Botschaft' and 'Abstimmungsergebnisse Gemeindeversammlung vom 16.06.2025', no minutes","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://dagmersellen.ch/gemeinde/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"Botschaft and Abstimmungsergebnisse per Gemeindeversammlung, no protocol","how":"ask commune"}]},{"bfs_id":1127,"name":"Egolzwil","canton":"LU","status":"not_examined","website":"https://www.egolzwil.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 23 sessions since 2016 (Budget-Gemeindeversammlung, Budget-Gemeindeversammlung - Abgesagt, Budgetgemeindeversammlung, Gemeindeversammlung Ortspl); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1128,"name":"Ettiswil","canton":"LU","status":"not_published","website":"https://www.ettiswil.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://ettiswil.ch/politik-verwaltung/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"Botschaft and accounts per Gemeindeversammlung, no protocol or Beschluesse PDF","how":"ask commune"}]},{"bfs_id":1129,"name":"Fischbach","canton":"LU","status":"not_examined","website":"http://www.fischbach-lu.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.fischbach-lu.ch/politik/finanzen)\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Public document sections and site-specific asset storage are used without title filters.","publications":[]},{"bfs_id":1131,"name":"Grossdietwil","canton":"LU","status":"candidate","website":"https://www.grossdietwil.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grossdietwil.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 14 files match, newest 2026-06-17, e.g. 'Bekanntmachung Protokoll 17.06.2026'; body guessed from the URL"}]},{"bfs_id":1132,"name":"Hergiswil bei Willisau","canton":"LU","status":"not_examined","website":"https://www.hergiswil-lu.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://hergiswil-lu.ch/wp-content/uploads/2021/04/Protokoll-stille-Wahl-Ersatzmitglied-Bildungskommission.pdf, https://hergiswil-lu.ch/media/PDF/Abstimmungen_Wahlen/Controllingkommission_Protokoll_stille_Wahl.pdf, https://hergiswil-lu.ch/media/PDF/Abstimmungen_Wahlen/Bildungskommission_Protokoll_stille_Wahl.pdf)","publications":[]},{"bfs_id":1135,"name":"Luthern","canton":"LU","status":"not_examined","website":"https://www.luthern.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals.","publications":[]},{"bfs_id":1136,"name":"Menznau","canton":"LU","status":"not_examined","website":"https://www.menznau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 13 sessions since 2020 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1137,"name":"Nebikon","canton":"LU","status":"candidate","website":"http://www.nebikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.nebikon.ch/politik/gemeindeversammlungen.html/20","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":1139,"name":"Pfaffnau","canton":"LU","status":"blocked_js","website":"http://www.pfaffnau.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":1140,"name":"Reiden","canton":"LU","status":"not_published","website":"http://www.reiden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.reiden.ch/politik-behoerden-und-verwaltung/gemeindeversammlungen.html/40","from":null,"to":null,"cadence":null,"obstacle":"page describes the assembly's tasks; no documents","how":"ask commune"}]},{"bfs_id":1142,"name":"Roggliswil","canton":"LU","status":"candidate","website":"https://www.roggliswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.roggliswil.ch/sitzung","from":"2016","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2016; minutes attached to the session pages as 'Bekanntmachung Protokoll der Gemeindeversammlung'"}]},{"bfs_id":1143,"name":"Schötz","canton":"LU","status":"not_published","website":"http://www.schoetz.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.schoetz.ch/de/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"one news page per assembly with Anordnung, Botschaft, results and a 'Bekanntmachung Protokoll' notice (minutes laid out at the office), no Protokoll PDF","how":"ask commune (minutes laid out at the office)"}]},{"bfs_id":1145,"name":"Ufhusen","canton":"LU","status":"not_published","website":"http://www.ufhusen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only; older ul.ce-uploads li.pdf markup","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"/politik/gemeindeversammlung/ has no documents","how":"ask commune"}]},{"bfs_id":1146,"name":"Wauwil","canton":"LU","status":"blocked_js","website":"https://www.wauwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":1147,"name":"Wikon","canton":"LU","status":"candidate","website":"https://www.wikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wikon.ch/gemeinde/politik/gemeindeversammlung.html/95","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 14 dated protocol PDFs, e.g. 'Botschaft' (2026-05-26)"}]},{"bfs_id":1150,"name":"Zell","canton":"LU","status":"not_examined","website":"http://www.zell-lu.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 14 sessions since 2020 (Gemeindeabstimmung im Urnenverfahren, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1151,"name":"Willisau","canton":"LU","status":"configured","website":"https://www.willisau.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://willisau.ch/verwaltung-politik/politik/gemeindeversammlung/","from":"2023-05-22","to":"2026-05-18","cadence":null,"obstacle":"partial: anchor text 'Protokoll', files under /files/; 6 of 11 undated: file names use dd.mm.yy (Protokoll_Gemeindeversammlung_24.11.25.pdf) or compact yyyymmdd (20250519Protokoll_komplett.pdf), neither parsed; report status ok, register partial (55 percent undated)","how":"html_links, 1 hop; date from heading above each block would date the rest"}]},{"bfs_id":6404,"name":"Boudry","canton":"NE","status":"configured","website":"https://www.boudry.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; SICO template; 2020 and 2021 missing; most PVs are linked twice (own session and approval item of the next), partly under different URLs","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.boudry.ch/politique/conseil-general/rapports-et-proces-verbaux","from":"2017-12-18","to":"2026-05-04","cadence":null,"obstacle":null,"how":"html_links, static year pages annee-2017 ... annee-2026 as listing_urls, date_regex PV_yyyymmdd (ymd)"}]},{"bfs_id":6408,"name":"Cortaillod","canton":"NE","status":"not_examined","website":"https://cortaillod.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Documents are collected without subject filters; linked archive detail pages remain in the reviewed crawl scope.","publications":[]},{"bfs_id":6413,"name":"Rochefort","canton":"NE","status":"needs_feature","website":"https://www.rochefort.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Conseil general; wave 2: 24 PV files on the page, blocked by the URL-before-row date rule; the same SICO TYPO3 build serves other NE communes (La Sagne works because its anchors carry the date)","publications":[{"body":"parliament","kind":"minutes","status":"needs_feature","listing_url":"https://www.rochefort.ch/politique/conseil-general/rapports-et-proces-verbaux","from":"2024-12-13","to":"2026-03-19","cadence":null,"obstacle":"SICO TYPO3 accordion with one table per session; the PV anchor text is 'Annexe', the PV title with its date sits in the first cell of the row, and the file URL carries the date of the approving session (/2026/19.03.2026/2_..._Proces-verbal_..._12_decembre_2025.pdf); the adapter reads the URL before the row, so every PV would get the next session's date","how":"row date before URL date when context: row is set (or a date_from: row step option); a config with url_regex Proces-verbal_de_la_seance and exclude_regex Annexe_au returns the 24 PV files"}]},{"bfs_id":6416,"name":"Milvignes","canton":"NE","status":"configured","website":"http://www.milvignes.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; same SICO template as Val-de-Ruz; also in docs/VENDOR-PATTERNS.md: hop 1 15 year links, hop 2 5 dated on the 2026 page offline","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.milvignes.ch/politique/proces-verbaux","from":"2012-12-17","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 2 hops ('Toutes' cHash link -> tx_documents list)"}]},{"bfs_id":6417,"name":"La Grande Béroche","canton":"NE","status":"configured","website":"https://www.lagrandeberoche.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; SICO template; the PV of a session is published on the next session's page (file 2__PV-CG_du_20.04.2026.pdf); validated with 5 session pages; roughly 55 PVs back to 2017 expected","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lagrandeberoche.ch/politique/conseil-general/rapports-et-proces-verbaux","from":"2025-11-10","to":"2026-06-29","cadence":null,"obstacle":null,"how":"html_links, 2 hops (57 session pages 2017-2026 in the sub-navigation -> 'Proces-verbal' agenda item), max_follow 80"}]},{"bfs_id":6421,"name":"La Chaux-de-Fonds","canton":"NE","status":"candidate","website":"https://www.chaux-de-fonds.ch","vendor":"arcantel","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Review 2026-09-26: Direct municipal Arcantel council archive configured for current sessions and all observed historical year links; no dependency on OpenParlData. Public page and list APIs verified with PDF bytes.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.chaux-de-fonds.ch/autorites/conseil-general/seances","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Direct municipal Arcantel page, list and navigation APIs; untagged PDFs via linked archive."}]},{"bfs_id":6422,"name":"Les Planchettes","canton":"NE","status":"not_examined","website":"https://www.les-planchettes.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6423,"name":"La Sagne","canton":"NE","status":"configured","website":"https://www.lasagne.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lasagne.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6432,"name":"La Brévine","canton":"NE","status":"candidate","website":"https://www.labrevine.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.labrevine.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 38 dated PDF links on the page, newest 2026-06-03, e.g. '- ordre du jour'; body guessed from the URL"}]},{"bfs_id":6433,"name":"Brot-Plamboz","canton":"NE","status":"candidate","website":"http://www.brot-plamboz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.brot-plamboz.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":"2025-12-08","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2025-12-08, e.g. 'Procès-verbal de la séance du 8 décembre 2025'; body guessed from the URL"}]},{"bfs_id":6434,"name":"Le Cerneux-Péquignot","canton":"NE","status":"candidate","website":"https://www.cerneux-pequignot.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cerneux-pequignot.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 54 dated PDF links on the page, newest 2026-06-15, e.g. 'convocation'; body guessed from the URL"}]},{"bfs_id":6435,"name":"La Chaux-du-Milieu","canton":"NE","status":"candidate","website":"https://www.chaux-du-milieu.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.chaux-du-milieu.ch/politique/conseil-general/proces-verbaux","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 63 dated PDF links on the page, newest 2026-06-15, e.g. 'Procès-verbal'; body guessed from the URL"}]},{"bfs_id":6436,"name":"Le Locle","canton":"NE","status":"not_examined","website":"https://www.lelocle.ch","vendor":null,"reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.lelocle.ch/administration/autorites/conseil-general/, https://www.lelocle.ch/administration/autorites/conseil-communal/, https://www.lelocle.ch/administration/nouveaux-bureaux-du-conseil-communal-et-du-conseil-general/)","publications":[]},{"bfs_id":6437,"name":"Les Ponts-de-Martel","canton":"NE","status":"candidate","website":"https://www.lesponts-de-martel.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lesponts-de-martel.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Rapports et procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6451,"name":"Cornaux","canton":"NE","status":"not_examined","website":"https://www.cornaux.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Documents are collected without subject filters; linked archive detail pages remain in the reviewed crawl scope.","publications":[]},{"bfs_id":6452,"name":"Cressier","canton":"NE","status":"candidate","website":"https://www.cressier-ne.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cressier-ne.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2026-06-25, e.g. 'CONVOCATION'; body guessed from the URL"}]},{"bfs_id":6455,"name":"Le Landeron","canton":"NE","status":"configured","website":"https://www.landeron.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; SICO template (same as Val-de-Ruz and Milvignes)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.landeron.ch/politique/conseil-general/rapports-et-proces-verbaux/proces-verbaux","from":"2016-06-30","to":"2026-03-19","cadence":null,"obstacle":null,"how":"html_links, 2 hops ('Toutes' link -> tx_documents list)"}]},{"bfs_id":6456,"name":"Lignières","canton":"NE","status":"candidate","website":"https://www.lignieres.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lignieres.ch/politique/conseil-general/rapports-et-proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Rapports et procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6458,"name":"Neuchâtel","canton":"NE","status":"configured","website":"https://www.neuchatelville.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.neuchatelville.ch/votre-commune/conseil-general/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":6487,"name":"Val-de-Ruz","canton":"NE","status":"configured","website":"https://www.val-de-ruz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil general; tx_documents list defaults to the current year, the 'Toutes' link on the page reaches all years; newest PV labelled 'Document' and dated from the folder of the approving session (one session later); SICO/Neuchatel TYPO3 template","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.val-de-ruz.ch/politique/conseil-general/rapports-et-proces-verbaux","from":"2012-06-27","to":"2026-06-29","cadence":null,"obstacle":null,"how":"html_links, 2 hops ('Toutes' year-filter link with cHash -> tx_documents list)"}]},{"bfs_id":6504,"name":"La Côte-aux-Fées","canton":"NE","status":"candidate","website":"http://www.lacote-aux-fees.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lacote-aux-fees.ch/politique/conseil-general/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":6511,"name":"Les Verrières","canton":"NE","status":"not_examined","website":"https://www.lesverrieres.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.lesverrieres.ch/conseil-general.html, https://www.lesverrieres.ch/conseil-general.html#ConseilCommunal)\n\n2026-09-26 coverage review: Reviewed official public municipal documents and representative robots-permitted PDF bytes. Observed PDF URLs embedded in encoded page markup are exact seeds; newly added embedded URLs will require renewed review until generic discovery is supported.","publications":[]},{"bfs_id":6512,"name":"Val-de-Travers","canton":"NE","status":"configured","website":"https://www.val-de-travers.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil general; PV anchors directly on the listing page, text without date, file name '260511 - PVCG.pdf'; a few older free-form file names stay undated (most dated); parent-hop date inheritance would remove the per-site regex","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.val-de-travers.ch/seances","from":"2020","to":"2026-05-11","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date_regex yymmdd (ymd) on file name"}]},{"bfs_id":6513,"name":"Laténa","canton":"NE","status":"configured","website":"https://commune-latena.ch/","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; archive of the predecessor commune Saint-Blaise ('Proces-verbal de la seance du 5 decembre 2024 Fichier PDF - 711.08 Ko', in-page year anchors 2016-2023); the merged commune's own page (/page/conseil-general) holds one file; 43 found 43 dated; register partial because only the predecessor archive is covered; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry; wave 2: configured and validated with the crawler (Saint-Blaise archive 2016-2024); the current sessions' PVs sit on latena.geco-portal.ch (robots Disallow: /)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://commune-latena.ch/page/proces-verbaux-saint-blaise","from":"2016-11-24","to":"2024-12-05","cadence":null,"obstacle":null,"how":"html_links, 1 hop, span.bigfile a; archive of the predecessor commune Saint-Blaise"},{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://commune-latena.ch/conseil-general/seances","from":"2024","to":null,"cadence":null,"obstacle":"the merged commune's own sessions (14 since June 2024) link their PV on latena.geco-portal.ch (/public-document/<id>), whose robots.txt is 'Disallow: /' for every agent","how":null}]},{"bfs_id":1501,"name":"Beckenried","canton":"NW","status":"configured","website":"https://www.beckenried.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.beckenried.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 21 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1502,"name":"Buochs","canton":"NW","status":"configured","website":"https://www.buochs.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.buochs.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 2 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1503,"name":"Dallenwil","canton":"NW","status":"configured","website":"https://www.dallenwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.dallenwil.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 5 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1504,"name":"Emmetten","canton":"NW","status":"configured","website":"http://www.emmetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.emmetten.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 2 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1505,"name":"Ennetbürgen","canton":"NW","status":"configured","website":"http://www.ennetbuergen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.ennetbuergen.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 36 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1506,"name":"Ennetmoos","canton":"NW","status":"configured","website":"https://www.ennetmoos.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.ennetmoos.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 4 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1507,"name":"Hergiswil","canton":"NW","status":"configured","website":"http://www.hergiswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.hergiswil.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 9 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1508,"name":"Oberdorf","canton":"NW","status":"configured","website":"http://www.oberdorf-nw.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.oberdorf-nw.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 14 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1509,"name":"Stans","canton":"NW","status":"configured","website":"http://www.stans.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.stans.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 16 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1510,"name":"Stansstad","canton":"NW","status":"not_published","website":"https://www.stansstad.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.stansstad.ch/politik/gemeindeversammlung.html/27","from":null,"to":null,"cadence":null,"obstacle":"text only","how":"ask commune"}]},{"bfs_id":1511,"name":"Wolfenschiessen","canton":"NW","status":"configured","website":"http://www.wolfenschiessen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, proxy listing and sample PDF review","notes":"Public municipal document archive verified through the explicitly enabled proxy. Mixed political/parish meeting pages are retained; parish-only meetings are excluded. Sample counts are not the complete archive. Use fetch --proxy; see docs/reviews/2026-09-11-nidwalden-proxy.md.","publications":[{"body":"assembly","kind":"documents","status":"configured","listing_url":"https://www.wolfenschiessen.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Session overview to attachment pages; 17 unique attachment links in the sample; one real PDF downloaded and reviewed. Includes minutes, assembly booklets and financial documents where published."}]},{"bfs_id":1401,"name":"Alpnach","canton":"OW","status":"not_examined","website":"https://www.alpnach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 31 sessions since 2011 (Gemeindeversammlung, Gemeindeversammlung - abgesagt); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1402,"name":"Engelberg","canton":"OW","status":"not_examined","website":"http://www.gde-engelberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":1403,"name":"Giswil","canton":"OW","status":"not_examined","website":"http://www.giswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 32 sessions since 2010 (Gemeindeversammlung, Gemeindeversammlung ABGESAGT, Gemeindeversammlung vorerst ausgesetzt); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1404,"name":"Kerns","canton":"OW","status":"not_examined","website":"https://www.kerns.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 41 sessions since 2008 (Ausserordentliche Gemeindeverammlung, Ausserordentliche Gemeindeversammlung, Frühlingsgemeindeverammlung, Frühlingsgemei); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1405,"name":"Lungern","canton":"OW","status":"candidate","website":"https://www.lungern.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lungern.ch/sitzung","from":"2016","to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 21 sessions since 2016; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 22. Mai 2025'"}]},{"bfs_id":1406,"name":"Sachseln","canton":"OW","status":"not_examined","website":"https://www.sachseln.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 43 sessions since 2004 (Gemeindeversammlung, Gemeindeversammlungen, Kirchgemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1407,"name":"Sarnen","canton":"OW","status":"candidate","website":"https://www.sarnen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sarnen.ch/sitzung","from":"2004","to":"2026-05-19","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 47 sessions since 2004; minutes attached to the session pages as 'Protokoll Einwohnergemeindeversammlung vom 20. Mai 2025'"}]},{"bfs_id":3201,"name":"Häggenschwil","canton":"SG","status":"not_examined","website":"https://www.haeggenschwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 2 sessions since 2025 (Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3202,"name":"Muolen","canton":"SG","status":"not_examined","website":"https://www.muolen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3203,"name":"St. Gallen","canton":"SG","status":"configured","website":"https://www.stadt.sg.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"robots.txt disallows the pages of earlier legislatures (docs/CITY-SOURCES.md)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.stadt.sg.ch/home/verwaltung-politik/demokratie-politik/stadtparlament/sitzungen/2025_2028.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_3203.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":3204,"name":"Wittenbach","canton":"SG","status":"not_examined","website":"https://www.wittenbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3211,"name":"Berg","canton":"SG","status":"not_examined","website":"https://www.bergsg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3212,"name":"Eggersriet","canton":"SG","status":"not_examined","website":"https://www.eggersriet.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 10 sessions since 2019 (Ausserordentliche Bürgerversammlung, Bürgerversammlung, Ordentliche Bürgerversammlung, Ordentliche Bürgerversammlung (ab); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3213,"name":"Goldach","canton":"SG","status":"not_examined","website":"https://www.goldach.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 18 sessions since 2008 (Bürgerversammlung 2008, Bürgerversammlung 2009, Bürgerversammlung 2010, Bürgerversammlung 2011, Bürgerversammlung 2012, ); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3214,"name":"Mörschwil","canton":"SG","status":"not_examined","website":"https://www.moerschwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 6 sessions since 2022 (Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3215,"name":"Rorschach","canton":"SG","status":"not_published","website":"https://www.rorschach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://rorschach.ch/buergerversammlung/","from":null,"to":null,"cadence":null,"obstacle":"Buergerversammlung page lists events; event page and 'Amtliche Publikationen' (feed of publikationen.sg.ch notices) hold no protocols","how":"ask commune"}]},{"bfs_id":3216,"name":"Rorschacherberg","canton":"SG","status":"configured","website":"https://rorschacherberg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://rorschacherberg.ch/buergerversammlung/","from":"2019","to":"2026","cadence":null,"obstacle":"partial: one anonymised Buergerversammlung protocol per year; anchor text and file names carry only the year, so all four documents are undated; report status ok, register partial (all undated)","how":"html_links, 2 hops (/publikation/<slug>/ pages); partial-date (year) support or date from the PDF text"}]},{"bfs_id":3217,"name":"Steinach","canton":"SG","status":"not_published","website":"https://www.steinach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"site uses wp-download-manager (/download/<slug>/)","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://steinach.ch/","from":null,"to":null,"cadence":null,"obstacle":"Politik menu has only Abstimmungen, Behoerdenmitglieder, Parteien; /politik/ redirects to the homepage","how":"ask commune"}]},{"bfs_id":3218,"name":"Tübach","canton":"SG","status":"candidate","website":"http://www.tuebach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tuebach.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 29 files match, newest 2026-06-14, e.g. 'Protokoll kantonale Volksabstimmung 14.06.2026'; body guessed from the URL"}]},{"bfs_id":3219,"name":"Untereggen","canton":"SG","status":"not_examined","website":"https://www.untereggen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3231,"name":"Au","canton":"SG","status":"candidate","website":"https://www.au.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site address review","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-12: Official municipal identity verified at https://www.au.ch/; replaces stale address http://www.au.sg.ch. Public PDF source verified and connected to the raw archive. See docs/WEBSITE-ADDRESS-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://www.au.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Official Au SG homepage links this Bürgerversammlung listing; iWeb discovery handles linked public documents."}]},{"bfs_id":3232,"name":"Balgach","canton":"SG","status":"not_examined","website":"https://www.balgach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3233,"name":"Berneck","canton":"SG","status":"candidate","website":"https://www.berneck.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.berneck.ch/sitzung","from":"2010","to":"2026-03-27","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 17 sessions since 2010; minutes attached to the session pages as 'Protokoll Bürgerversammlung 2026'"}]},{"bfs_id":3234,"name":"Diepoldsau","canton":"SG","status":"not_published","website":"http://www.diepoldsau.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Buergerversammlung page on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.diepoldsau.ch/politik.html/4","from":null,"to":null,"cadence":null,"obstacle":"Politik subnavigation (Abstimmungen und Wahlen, Behoerden/Kommissionen, Parteien, Ziele/Strategie, Finanzen), sitemap (122 links) and Publikationen/Merkblaetter (76 links) carry no Buergerversammlung page; only vote-result sheets and a photo page 'Buergerversammlung 2024'","how":null}]},{"bfs_id":3235,"name":"Rheineck","canton":"SG","status":"not_examined","website":"https://www.rheineck.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3236,"name":"St. Margrethen","canton":"SG","status":"not_published","website":"http://www.stmargrethen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.stmargrethen.ch/politik-verwaltung/politik/buergerversammlungen.html/361","from":null,"to":null,"cadence":null,"obstacle":"Buergerversammlungen page is text only","how":"ask commune"}]},{"bfs_id":3237,"name":"Thal","canton":"SG","status":"not_examined","website":"https://www.thal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-12 archive review: 24 exact PDF URLs linked from official municipal listings configured in linked-sources.yaml; one PDF signature verified. The public Lunuc noscript route exposes /verwaltung/reglemente?__ssr=1; preserve that query for server-rendered document links. Documents enter the untagged archive; existing minutes-publication statuses are unchanged. See docs/GR-SG-REVIEW-2026-09-12.md.","publications":[]},{"bfs_id":3238,"name":"Widnau","canton":"SG","status":"not_examined","website":"https://www.widnau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3251,"name":"Altstätten","canton":"SG","status":"not_examined","website":"https://www.altstaetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 36 sessions since 2009 (Bürgerversammlung, Bürgerversammlung (Budget 2018), Bürgerversammlung (Budget 2019), Bürgerversammlung (Budget 2020), Bü); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3252,"name":"Eichberg","canton":"SG","status":"not_examined","website":"https://www.eichberg.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3253,"name":"Marbach","canton":"SG","status":"not_examined","website":"https://www.marbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3254,"name":"Oberriet","canton":"SG","status":"candidate","website":"https://www.oberriet.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberriet.ch/sitzung","from":"2008","to":"2026-03-27","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 21 sessions since 2008; minutes attached to the session pages as 'Protokoll Bürgerversammlung 2026'"}]},{"bfs_id":3255,"name":"Rebstein","canton":"SG","status":"not_examined","website":"https://www.rebstein.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3256,"name":"Rüthi","canton":"SG","status":"candidate","website":"https://www.ruethi.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://ruethi.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 27 files match, newest 2026-06-14, e.g. 'Abstimmungsprotokoll_Kant_20260614 (1)'; body guessed from the URL"}]},{"bfs_id":3271,"name":"Buchs","canton":"SG","status":"not_published","website":"https://buchs-sg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-11","checked_by":"Codex, source review","notes":"Verified the assembly listing and Rechnung 2025 article on 2026-09-11. The article links accounts and invitations; it states that the minutes are available for inspection at the city office from 11 to 26 May 2026. No downloadable minutes found.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://buchs-sg.ch/buergerversammlungen/","from":null,"to":null,"cadence":null,"obstacle":"No protocol download found. Current article explicitly announces physical inspection at the Stadtkanzlei.","how":"ask commune"}]},{"bfs_id":3272,"name":"Gams","canton":"SG","status":"blocked_js","website":"https://www.gams.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3273,"name":"Grabs","canton":"SG","status":"not_examined","website":"https://www.grabs.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 4 sessions since 2016 (Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3274,"name":"Sennwald","canton":"SG","status":"not_examined","website":"http://www.sennwald.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3275,"name":"Sevelen","canton":"SG","status":"not_examined","website":"http://www.sevelen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 3 sessions since 2024 (Bürgerversammlung (Budget 2026), Bürgerversammlung (Rechnung 2023), Bürgerversammlung (Rechnung 2024)); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3276,"name":"Wartau","canton":"SG","status":"not_examined","website":"http://www.wartau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 21 sessions since 2008 (Bürgerversammlung, Bürgerversammlung (abgesagt) - Urnenabstimmung vom, ausserordentliche Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3291,"name":"Bad Ragaz","canton":"SG","status":"not_examined","website":"http://www.badragaz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3292,"name":"Flums","canton":"SG","status":"not_examined","website":"https://www.flums.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 2 sessions since 2025 (Bürgerversammlung 2025, Bürgerversammlung 2026); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3293,"name":"Mels","canton":"SG","status":"not_examined","website":"https://www.mels.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 13 sessions since 2018 (Budgetversammlung, Ordentliche Bürgerversammlung, Ordentliche Bürgerversammlung / Urnenabstimmung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3294,"name":"Pfäfers","canton":"SG","status":"not_examined","website":"http://www.pfaefers.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2015 (Bürgerversammlung 2024, Bürgerversammlung 2025, Bürgerversammlung der Politischen Gemeinde Pfäfers); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3295,"name":"Quarten","canton":"SG","status":"not_examined","website":"http://www.quarten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 4 sessions since 2022 (Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3296,"name":"Sargans","canton":"SG","status":"not_examined","website":"https://www.sargans.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3297,"name":"Vilters-Wangs","canton":"SG","status":"not_examined","website":"http://www.vilters-wangs.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2014 (Ausserordentliche Bürgerversammlung, Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3298,"name":"Walenstadt","canton":"SG","status":"not_examined","website":"https://www.walenstadt.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 2 sessions since 2025 (Budgetversammlung, Bürgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3311,"name":"Amden","canton":"SG","status":"not_examined","website":"https://www.gemeinde-amden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2009 (Bürgerversammlung, Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3312,"name":"Benken","canton":"SG","status":"not_examined","website":"https://www.benken.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 34 sessions since 2013 (ABGESAGT: Bürgerversammlung Kath. Kirchgemeinde, ABGESAGT: Bürgerversammlung Polit. Gemeinde, Bürgerversammlung Kath. Ki); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3313,"name":"Kaltbrunn","canton":"SG","status":"not_published","website":"https://www.kaltbrunn.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.kaltbrunn.ch/politik-und-behoerden/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"assembly page has no documents; Publikationen holds only Jahresrechnung, Budget and flyers","how":"ask commune"}]},{"bfs_id":3315,"name":"Schänis","canton":"SG","status":"candidate","website":"https://www.schaenis.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schaenis.ch/sitzung","from":"2004","to":"2026-04-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 27 sessions since 2004; minutes attached to the session pages as 'BV2024-04-05 - Protokoll - öffentliche Auflage'"}]},{"bfs_id":3316,"name":"Weesen","canton":"SG","status":"not_examined","website":"https://www.weesen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 9 sessions since 2019 (Ausserordentliche Bürgerversammlung 2025, Bürgerversammlung 2019, Bürgerversammlung 2020 - ABGESAGT, Bürgerversammlung 2); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3338,"name":"Schmerikon","canton":"SG","status":"not_examined","website":"https://www.schmerikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2021 (Bürgerversammlung, Bürgerversammlung - ABGESAGT, Informationsveranstaltung zur Urnenabstimmung, Ordentliche Bürgerversam); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3339,"name":"Uznach","canton":"SG","status":"not_published","website":"http://www.uznach.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.uznach.ch/politik/buergerversammlung.html/145","from":null,"to":null,"cadence":null,"obstacle":"Buergerversammlung page is text only","how":"ask commune"}]},{"bfs_id":3340,"name":"Rapperswil-Jona","canton":"SG","status":"configured","website":"https://www.rapperswil-jona.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, source review","notes":"Public protocol links verified on 2026-09-11; replaces the earlier incomplete listing probe.","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.rapperswil-jona.ch/buergerversammlung","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, two hops; dated session pages to explicitly labelled protocol PDFs"}]},{"bfs_id":3341,"name":"Gommiswald","canton":"SG","status":"not_published","website":"https://gommiswald.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://gommiswald.ch/gemeinde/politik/gemeinderat/","from":null,"to":null,"cadence":null,"obstacle":"no Buergerversammlung or Protokoll page in the navigation; Gemeinderat page has no documents","how":"ask commune"}]},{"bfs_id":3342,"name":"Eschenbach","canton":"SG","status":"not_examined","website":"https://www.eschenbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3352,"name":"Ebnat-Kappel","canton":"SG","status":"not_examined","website":"https://www.ebnat-kappel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3359,"name":"Wildhaus-Alt St. Johann","canton":"SG","status":"not_examined","website":"http://www.wildhaus-altstjohann.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.wildhaus-altstjohann.ch/politik/gemeindeversammlung.html/27)","publications":[]},{"bfs_id":3360,"name":"Nesslau","canton":"SG","status":"not_examined","website":"http://www.nesslau.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3374,"name":"Lichtensteig","canton":"SG","status":"not_examined","website":"https://www.lichtensteig.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3379,"name":"Wattwil","canton":"SG","status":"not_examined","website":"https://www.wattwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2013 (ABGESAGT: Bürgerversammlung, ABGESAGT: Bürgerversammlung stattdessen Urnenabsti, ABGESAGT: öffentliche Versammlung (Vorg); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3392,"name":"Kirchberg","canton":"SG","status":"not_published","website":"http://www.kirchberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Buergerversammlung commune; wave 2: no Buergerversammlung, Protokoll or Publikationen page anywhere on the site. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.kirchberg.ch/politik.html/4","from":null,"to":null,"cadence":null,"obstacle":"Politik page, Gemeinderat page, Dienstleistungen list (209 links) and sitemap (137 links) carry no Buergerversammlung, Protokoll or Publikationen page; the Politik text only says the Buergerversammlung decides budget and accounts once a year","how":null}]},{"bfs_id":3393,"name":"Lütisburg","canton":"SG","status":"blocked_js","website":"https://www.luetisburg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":3394,"name":"Mosnang","canton":"SG","status":"not_examined","website":"https://www.mosnang.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3395,"name":"Bütschwil-Ganterschwil","canton":"SG","status":"not_published","website":"http://buetschwil-ganterschwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Buergerversammlung, Protokoll, Gutachten or Publikationen page on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.buetschwil-ganterschwil.ch/gemeinde/behoerden.html/104","from":null,"to":null,"cadence":null,"obstacle":"Behoerden redirects to Gemeinderat; the Gemeinderat page and the sitemap (161 links) carry no Buergerversammlung, Protokoll, Gutachten or Publikationen page","how":null}]},{"bfs_id":3396,"name":"Neckertal","canton":"SG","status":"not_examined","website":"https://www.neckertal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3401,"name":"Degersheim","canton":"SG","status":"not_published","website":"https://www.degersheim.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.degersheim.ch/DE/9/Politik.htm","from":null,"to":null,"cadence":null,"obstacle":"Politik and Vorversammlung pages carry no Buergerversammlung protocols","how":"ask commune"}]},{"bfs_id":3402,"name":"Flawil","canton":"SG","status":"not_examined","website":"https://www.flawil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3405,"name":"Jonschwil","canton":"SG","status":"not_examined","website":"https://www.jonschwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3407,"name":"Oberuzwil","canton":"SG","status":"not_examined","website":"https://www.oberuzwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2011 (Abgesagt: Bürgerversammlung Einheitsgemeinde Oberu, Bürgerversammlung Einheitsgemeinde Oberuzwil, Bürgerversammlung der ); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3408,"name":"Uzwil","canton":"SG","status":"not_published","website":"http://www.uzwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Gemeinderat (executive) and Buergerversammlung\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"not_published","listing_url":"https://www.uzwil.ch/de/politik-verwaltung/politik","from":null,"to":null,"cadence":null,"obstacle":"homepage, Politik and Gemeinderat pages link only to the cantonal publication portal (publikationen.sg.ch) and a Konstituierungsliste; no protocol PDFs","how":"ask commune"}]},{"bfs_id":3422,"name":"Niederbüren","canton":"SG","status":"candidate","website":"http://www.niederbueren.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://niederbueren.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 33 files match, newest 2026-06-14, e.g. 'Abstimmungsprotokoll Kant 20260614'; body guessed from the URL"}]},{"bfs_id":3423,"name":"Niederhelfenschwil","canton":"SG","status":"not_examined","website":"http://www.niederhelfenschwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":3424,"name":"Oberbüren","canton":"SG","status":"not_published","website":"http://www.oberbueren.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Buergerversammlung or Protokoll page on the site; Geschaeftsberichte holds annual reports only","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.oberbueren.ch/politik.html/3","from":null,"to":null,"cadence":null,"obstacle":"Politik redirects to Gemeinderat; the subnavigation (Gemeinderat, GPK, Geschaeftsberichte, Kommissionen, Legislaturziele, Wahlen/Abstimmungen) and the sitemap (117 links) carry no Buergerversammlung or Protokoll page; Geschaeftsberichte holds annual reports 2018-2025 only","how":null}]},{"bfs_id":3426,"name":"Zuzwil","canton":"SG","status":"not_published","website":"http://www.zuzwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Buergerversammlung, Protokoll or Gutachten page on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.zuzwil.ch/politik.html/14","from":null,"to":null,"cadence":null,"obstacle":"Politik redirects to Abstimmungen und Wahlen; the Politik subnavigation (Gemeinderat, GPK, Kommissionen, Reglementssammlung, Korporationen, Parteien) and the sitemap (123 links) carry no Buergerversammlung, Protokoll or Gutachten page","how":null}]},{"bfs_id":3427,"name":"Wil","canton":"SG","status":"configured","website":"https://www.stadtwil.ch","vendor":"onegov","reachable":true,"checked":"2026-09-11","checked_by":"Codex, source review","notes":"Public protocol links verified on 2026-09-11; replaces the earlier incomplete listing probe.","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.stadtwil.ch/meetings","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, two hops; dated session pages to explicitly labelled protocol PDFs"}]},{"bfs_id":3441,"name":"Andwil","canton":"SG","status":"not_examined","website":"http://www.andwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":3442,"name":"Gaiserwald","canton":"SG","status":"not_examined","website":"https://www.gaiserwald.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2015 (Bürgerversammlung Gemeinde Gaiserwald, Bürgerversammlung Gemeinde Gaiserwald (abgesagt), Bürgerversammlung Gemeinde Gais); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3443,"name":"Gossau","canton":"SG","status":"configured","website":"https://www.stadtgossau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-11","checked_by":"Codex, source review","notes":"Public protocol links verified on 2026-09-11; replaces the earlier incomplete listing probe.","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.stadtgossau.ch/beschluesse2","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, two hops; dated session pages to explicitly labelled protocol PDFs"}]},{"bfs_id":3444,"name":"Waldkirch","canton":"SG","status":"not_examined","website":"http://www.waldkirch.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2901,"name":"Gächlingen","canton":"SH","status":"configured","website":"http://www.gaechlingen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-10","checked_by":"sh_cms adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: minutes as file nodes behind the assembly article's buttons","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.gaechlingen.ch/CMS/content?contentid=4350086&language=DE","from":null,"to":null,"cadence":null,"obstacle":null,"how":"sh_cms, 2 hops: assembly article node, file nodes"}]},{"bfs_id":2903,"name":"Löhningen","canton":"SH","status":"not_examined","website":"https://www.loehningen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.loehningen.ch/home/news/1019-aus-den-verhandlungen-des-gemeinderates-sitzung-vom-25-august-2026)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2904,"name":"Neunkirch","canton":"SH","status":"configured","website":"https://www.neunkirch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; table per session with attachments; decision notices 'Versammlungsbeschluesse vom 20. August 2026 (Teil 2) [pdf, 85 KB]', 'Versammlungsbeschluesse vom 18. Juni 2026 [pdf, 50 KB]', also posted as news; no full minutes; 4 found 4 dated; no date range stated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.neunkirch.ch/politik-verwaltung/politik/gemeindeversammlung.html/58","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2914,"name":"Büttenhardt","canton":"SH","status":"not_examined","website":"https://www.buettenhardt.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://buettenhardt.ch/politik/gemeindeversammlung/)\n\n2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals.","publications":[]},{"bfs_id":2915,"name":"Dörflingen","canton":"SH","status":"blocked_js","website":"https://www.doerflingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2917,"name":"Lohn","canton":"SH","status":"not_examined","website":"https://www.lohn.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.lohn.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2919,"name":"Stetten","canton":"SH","status":"candidate","website":"https://www.stetten.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://stetten.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-05","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 13 files match, newest 2026-05-05, e.g. 'GV Protokoll 05.05.2026'; body guessed from the URL"}]},{"bfs_id":2920,"name":"Thayngen","canton":"SH","status":"blocked_js","website":"http://www.thayngen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Kanton Schaffhausen CMS; the commune has an Einwohnerrat\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Public Schaffhausen CMS lists explicitly expose download-category nodes and their published file children.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://thayngen.ch/CMS/Webseite/Home-110410-DE.html","from":null,"to":null,"cadence":null,"obstacle":"homepage is a JS shell whose content is escaped JSON (data_text_widget); no navigation anchors; a content URL returned HTTP 500 'Maintenance Page'","how":"browser inspection; no JSON endpoint visible in the HTML"}]},{"bfs_id":2931,"name":"Bargen","canton":"SH","status":"configured","website":"https://www.bargen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-10","checked_by":"sh_cms adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: minutes as file nodes behind the assembly article's buttons","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.bargen.ch/CMS/content?contentid=7690306&language=DE","from":null,"to":null,"cadence":null,"obstacle":null,"how":"sh_cms, 2 hops: assembly article node, file nodes"}]},{"bfs_id":2932,"name":"Beringen","canton":"SH","status":"configured","website":"https://www.beringen.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Einwohnerrat; file names contain spaces","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.beringen.ch/de/protokolle-einwohnerrat","from":"2017-01-10","to":"2026-06-30","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2933,"name":"Buchberg","canton":"SH","status":"blocked_js","website":"http://www.buchberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2936,"name":"Merishausen","canton":"SH","status":"blocked_js","website":"https://www.merishausen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"Java CMS whose navigation is rendered client-side (9 anchors in the HTML, all backend links); nothing to select without JavaScript; browser inspection; docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Public Schaffhausen CMS lists explicitly expose download-category nodes and their published file children.","publications":[]},{"bfs_id":2937,"name":"Neuhausen am Rheinfall","canton":"SH","status":"upstream_only","website":"http://www.neuhausen.ch","vendor":"unknown","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2937.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":2938,"name":"Rüdlingen","canton":"SH","status":"configured","website":"https://www.ruedlingen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-10","checked_by":"sh_cms adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: minutes as file nodes behind the assembly article's buttons","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.ruedlingen.ch/CMS/content?contentid=6198033&language=DE","from":null,"to":null,"cadence":null,"obstacle":null,"how":"sh_cms, 2 hops: assembly article node, file nodes"}]},{"bfs_id":2939,"name":"Schaffhausen","canton":"SH","status":"upstream_only","website":"https://www.stadt-schaffhausen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Grosser Stadtrat; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2939.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":2951,"name":"Beggingen","canton":"SH","status":"candidate","website":"https://www.beggingen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://beggingen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 25 files match, newest 2026-06-24, e.g. 'Protokoll GV 24.06.2026'; body guessed from the URL"}]},{"bfs_id":2952,"name":"Schleitheim","canton":"SH","status":"candidate","website":"https://www.schleitheim.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schleitheim.ch/sitzung","from":"2022","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 15 sessions since 2022; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 18.06.2026 V1'"}]},{"bfs_id":2953,"name":"Siblingen","canton":"SH","status":"not_found","website":"https://www.siblingen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-11","checked_by":"manual check of the CMS nodes (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: no assembly article in the home page data and none named after minutes; a person should look through the navigation\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Schaffhausen CMS document widgets and public file metadata are followed dynamically; only published PDF nodes are downloaded.","publications":[]},{"bfs_id":2961,"name":"Buch","canton":"SH","status":"not_examined","website":"https://www.buch-sh.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.buch-sh.ch/event/gemeindeversammlung-4/)","publications":[]},{"bfs_id":2962,"name":"Hemishofen","canton":"SH","status":"not_examined","website":"https://www.hemishofen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2963,"name":"Ramsen","canton":"SH","status":"not_examined","website":"https://www.ramsen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 30 sessions since 2014 (Gemeindeversammlung, Gemeindeversammlung (Budget 2024), Gemeindeversammlung (Budget 2025), Gemeindeversammlung (Budget 2); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2964,"name":"Stein am Rhein","canton":"SH","status":"candidate","website":"https://www.steinamrhein.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.steinamrhein.ch/politik/einwohnerrat/protokolle.html/613","from":null,"to":"2026-04-10","cadence":null,"obstacle":null,"how":"probe: 32 dated PDF links on the page, newest 2026-04-10, e.g. 'Sitzungsprotokoll vom 10. April 2026'; body guessed from the URL"}]},{"bfs_id":2971,"name":"Hallau","canton":"SH","status":"configured","website":"https://www.hallau.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-10","checked_by":"sh_cms adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: minutes as file nodes behind the assembly article's buttons","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.hallau.ch/CMS/content?contentid=4040278&language=DE","from":null,"to":null,"cadence":null,"obstacle":null,"how":"sh_cms, 2 hops: assembly article node, file nodes"}]},{"bfs_id":2972,"name":"Oberhallau","canton":"SH","status":"not_published","website":"https://www.oberhallau.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-11","checked_by":"manual check of the CMS nodes (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: the assembly article carries budgets, accounts and info sheets, no minutes\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Schaffhausen CMS document widgets and public file metadata are followed dynamically; only published PDF nodes are downloaded.","publications":[]},{"bfs_id":2973,"name":"Trasadingen","canton":"SH","status":"candidate","website":"https://www.trasadingen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://trasadingen.ch/verwaltung-2/gemeinderatsbeschluesse/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Gemeinderatsbeschlüsse' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":2974,"name":"Wilchingen","canton":"SH","status":"not_published","website":"https://www.wilchingen.ch","vendor":"sh-cms","reachable":true,"checked":"2026-09-11","checked_by":"manual check of the CMS nodes (session of 11 September 2026)","notes":"Schaffhausen cantonal CMS: the assembly article carries budgets, accounts and the Gmaands-Info sheets, no minutes\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Schaffhausen CMS document widgets and public file metadata are followed dynamically; only published PDF nodes are downloaded.","publications":[]},{"bfs_id":2401,"name":"Egerkingen","canton":"SO","status":"not_examined","website":"http://www.egerkingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 60 sessions since 2010 (Budget-GV Bürgergemeinde, Budget-GV Einwohnergemeinde, Budget-GV der Bürgergemeinde Egerkingen, Budget-GV der Einwohnerg); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2402,"name":"Härkingen","canton":"SO","status":"candidate","website":"http://www.haerkingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.haerkingen.ch/politik/gemeindeversammlung/gv2025-1.html/326","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 2 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":2403,"name":"Kestenholz","canton":"SO","status":"blocked_js","website":"https://www.kestenholz.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":2404,"name":"Neuendorf","canton":"SO","status":"not_examined","website":"https://www.neuendorf.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2405,"name":"Niederbuchsiten","canton":"SO","status":"candidate","website":"https://www.niederbuchsiten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.niederbuchsiten.ch/sitzung","from":"2017","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 22 sessions since 2017; minutes attached to the session pages as '00 Protokoll Budgetgemeinde 2025 12 10 gen. und sign.'"}]},{"bfs_id":2406,"name":"Oberbuchsiten","canton":"SO","status":"not_examined","website":"https://www.oberbuchsiten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2407,"name":"Oensingen","canton":"SO","status":"candidate","website":"http://www.oensingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oensingen.ch/sitzung","from":"2017","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2017; minutes attached to the session pages as '260615 Protokoll GV'"}]},{"bfs_id":2408,"name":"Wolfwil","canton":"SO","status":"candidate","website":"https://www.wolfwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wolfwil.ch/sitzung","from":"2004","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2004; minutes attached to the session pages as '2. Protokoll Budget-Gemeindeversammlung vom 11. Dezember 2025'"}]},{"bfs_id":2421,"name":"Aedermannsdorf","canton":"SO","status":"candidate","website":"http://www.aedermannsdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aedermannsdorf.ch/sitzung","from":"2022","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 10 sessions since 2022; minutes attached to the session pages as '0126 Protokoll Gemeindeversammlung 24.06.2026'"}]},{"bfs_id":2422,"name":"Balsthal","canton":"SO","status":"not_examined","website":"https://www.balsthal.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2424,"name":"Herbetswil","canton":"SO","status":"candidate","website":"https://www.herbetswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.herbetswil.ch/sitzung","from":"2017","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 20 sessions since 2017; minutes attached to the session pages as 'Protokoll_Rechnungsgemeindeversammlung_2026-06-18'"}]},{"bfs_id":2425,"name":"Holderbank","canton":"SO","status":"not_examined","website":"http://www.holderbank-so.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.holderbank-so.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2426,"name":"Laupersdorf","canton":"SO","status":"configured","website":"https://www.laupersdorf.ch","vendor":"weblication","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.laupersdorf.ch/de/politik/gemeinderat/protokolle/","from":null,"to":"2026-08-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2427,"name":"Matzendorf","canton":"SO","status":"candidate","website":"http://www.matzendorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.matzendorf.ch/sitzung","from":"2024","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 6 sessions since 2024; minutes attached to the session pages as 'Protokoll G131 genehmigt-1'"}]},{"bfs_id":2428,"name":"Mümliswil-Ramiswil","canton":"SO","status":"candidate","website":"https://www.muemliswil-ramiswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.muemliswil-ramiswil.ch/politik/gemeindeversammlung.html/32","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 2 dated protocol PDFs, e.g. 'Protokoll Gemeindeversammlung 10. Juni 2' (2024-06-10)"}]},{"bfs_id":2430,"name":"Welschenrohr-Gänsbrunnen","canton":"SO","status":"configured","website":"https://welschenrohr.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"listing: https://welschenrohr.ch/politik/protokolle.html/73 and https://welschenrohr.ch/politik/gemeindeversammlung.html/55; validated by the onboarding agent but not in communes.yaml yet; 45 'Gemeinderatssitzung vom 12.01.2026 [pdf, 192 KB]' executive session minutes 2024-2026 on the first page plus 1 assembly protocol 'Protokoll Gemeindeversammlung vom 08.12.2025 [pdf, 330 KB]' on the second; all dated; probe pattern generic_pdf_page; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.welschenrohr.ch/politik/protokolle.html/73","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2445,"name":"Biezwil","canton":"SO","status":"candidate","website":"http://www.biezwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 58 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.biezwil.ch/beh%C3%B6rden/gemeindeversammlung/","from":null,"to":"2025-11-24","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2025-11-24, e.g. ''; body guessed from the URL"}]},{"bfs_id":2455,"name":"Lüterkofen-Ichertswil","canton":"SO","status":"not_examined","website":"https://www.lueterkofen-ichertswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 20 sessions since 2017 (Gemeindeversammlung (Budget), Gemeindeversammlung (Rechnung), Gemeindeversammlung (Rechnung) verschoben auf); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2457,"name":"Messen","canton":"SO","status":"not_published","website":"https://www.messen.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.messen.ch/politik/gemeindeversammlungen","from":null,"to":null,"cadence":null,"obstacle":"GV page and its event archive carry no documents","how":"ask commune"}]},{"bfs_id":2461,"name":"Schnottwil","canton":"SO","status":"candidate","website":"https://www.schnottwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schnottwil.ch/sitzung","from":"2018","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 33 sessions since 2018; minutes attached to the session pages as 'Protokoll Einwohnergemeindeversammlung 10.12.2025'"}]},{"bfs_id":2463,"name":"Unterramsern","canton":"SO","status":"not_examined","website":"http://www.unterramsern.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Public document sections and site-specific asset storage are used without title filters.","publications":[]},{"bfs_id":2464,"name":"Lüsslingen-Nennigkofen","canton":"SO","status":"not_examined","website":"https://www.luesslingen-nennigkofen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 38 sessions since 2012 (1. Versammlung der Fusionsgemeinde, Budget-Gemeindeversammlung, Budget-Gemeindeversammlung L-N, Budget-Gemeindeversammlu); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2465,"name":"Buchegg","canton":"SO","status":"candidate","website":"https://www.buchegg-so.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buchegg-so.ch/sitzung","from":"2024","to":"2026-08-27","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 6 sessions since 2024; minutes attached to the session pages as 'R02_Protokoll der 2. GMV vom 4. Dezember 2025_genehmigt_unterschrieben'"}]},{"bfs_id":2471,"name":"Bättwil","canton":"SO","status":"candidate","website":"http://www.baettwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.baettwil.ch/politik/gemeindeversammlung.html/39","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-10, e.g. 'Einladung zur Gemeindeversammlung vom 10. Juni 2026'; body guessed from the URL"}]},{"bfs_id":2472,"name":"Büren","canton":"SO","status":"blocked_js","website":"http://www.bueren-so.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2473,"name":"Dornach","canton":"SO","status":"candidate","website":"https://www.dornach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dornach.ch/sitzung","from":"2011","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 35 sessions since 2011; minutes attached to the session pages as '2026-06-17 GV-Protokoll'"}]},{"bfs_id":2474,"name":"Gempen","canton":"SO","status":"configured","website":"http://www.gempen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://gempen.ch/verschiedenes/","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2475,"name":"Hochwald","canton":"SO","status":"candidate","website":"https://www.hochwald.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hochwald.ch/de/gemeinde/gemeindeorganisation/einwohnergemeinde/protokolle.html","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: 35 dated PDF links on the page, newest 2026-06-24, e.g. 'Protokoll Einwohnergemeindeversammlung 24.06.2026'; body guessed from the URL"}]},{"bfs_id":2476,"name":"Hofstetten-Flüh","canton":"SO","status":"not_examined","website":"http://www.hofstettenflueh.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 43 sessions since 2007 (Ausserordentliche Gemeindeversammlung vom 14. Mai , Gemeindeversammlung vom 03. November 2020, Gemeindeversammlung vom 0); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2477,"name":"Metzerlen-Mariastein","canton":"SO","status":"not_examined","website":"http://www.metzerlen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2478,"name":"Nuglar-St. Pantaleon","canton":"SO","status":"not_published","website":"https://www.nuglar.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"195.48.58.86 template; Messen's identical archive was empty","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.nuglar.ch/politik/gemeindeversammlungen-0","from":null,"to":null,"cadence":null,"obstacle":"GV page has no documents, only an event-archive link (archive not fetched)","how":"ask commune"}]},{"bfs_id":2479,"name":"Rodersdorf","canton":"SO","status":"not_examined","website":"https://www.rodersdorf.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2480,"name":"Seewen","canton":"SO","status":"candidate","website":"https://www.seewen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.seewen.ch/sitzung","from":"2010","to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 40 sessions since 2010; minutes attached to the session pages as 'Protokoll GV 11.12.2025'"}]},{"bfs_id":2481,"name":"Witterswil","canton":"SO","status":"configured","website":"https://www.witterswil.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"'GV Protokoll vom dd.mm.yyyy' anchors in a Protokolle panel; 195.48.58.86 template; also in docs/VENDOR-PATTERNS.md: span.file a, 7 found 7 dated offline","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.witterswil.ch/politik/gemeindeversammlung","from":"2023-08-22","to":"2026-06-09","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2491,"name":"Hauenstein-Ifenthal","canton":"SO","status":"not_examined","website":"http://www.hauenstein-ifenthal.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":2492,"name":"Kienberg","canton":"SO","status":"not_examined","website":"http://www.kienberg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (http://www.kienberg.ch/politik-und-verwaltung/gemeindeversammlungen/, http://www.kienberg.ch/gemeinderatssitzungen/)","publications":[]},{"bfs_id":2493,"name":"Lostorf","canton":"SO","status":"candidate","website":"http://www.lostorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lostorf.ch/sitzung","from":"2004","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 75 sessions since 2004; minutes attached to the session pages as 'GV2026_01_Protokoll'"}]},{"bfs_id":2495,"name":"Niedergösgen","canton":"SO","status":"not_examined","website":"https://www.niedergoesgen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2016 (Gemeindeversammlung, Gemeindeversammlung (Budget 2018), Gemeindeversammlung (Budget 2019), Gemeindeversammlung (Budget 2); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2497,"name":"Obergösgen","canton":"SO","status":"candidate","website":"https://www.obergoesgen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.obergoesgen.ch/sitzung","from":"2017","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 20 sessions since 2017; minutes attached to the session pages as '2 - Protokoll ausserordentliche Gemeindeversammlung vom 21.04.2026'"}]},{"bfs_id":2499,"name":"Stüsslingen","canton":"SO","status":"not_examined","website":"http://www.stuesslingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.stuesslingen.ch/politik/gemeindeversammlung/die-versammlung.html/170, https://www.stuesslingen.ch/verwaltung/aktuelles.html/13/news/1844)","publications":[]},{"bfs_id":2500,"name":"Trimbach","canton":"SO","status":"not_examined","website":"http://www.trimbach.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Anthrazit index.php navigation is same-site, bounded by the persistent crawler and excludes unsafe action parameters.","publications":[]},{"bfs_id":2501,"name":"Winznau","canton":"SO","status":"candidate","website":"https://www.winznau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.winznau.ch/sitzung","from":"2017","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 20 sessions since 2017; minutes attached to the session pages as '02 GV Protokoll BGV 2025'"}]},{"bfs_id":2502,"name":"Wisen","canton":"SO","status":"not_examined","website":"http://www.wisen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2012 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2503,"name":"Erlinsbach","canton":"SO","status":"not_examined","website":"http://www.erlinsbach-so.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.erlinsbach-so.ch/gemeindeversammlung.html/374)","publications":[]},{"bfs_id":2511,"name":"Aeschi","canton":"SO","status":"candidate","website":"http://www.aeschi-so.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aeschi-so.ch/sitzung","from":"2016","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2016; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 18.12.2025'"}]},{"bfs_id":2513,"name":"Biberist","canton":"SO","status":"configured","website":"https://www.biberist.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.biberist.ch/de/politik/gemeindeversammlung/","from":"2023-06-29","to":"2026-06-25","cadence":null,"obstacle":"partial: Gemeindeversammlung; anchor text is 'GV-Protokoll Nr. 2', the year is only in the section heading; 5 of 19 dated (files with a date in the name such as ...vom-20260625.pdf or GV-Protokoll-27.11.2025.pdf parse, files like 2017-01.pdf do not); report status 'ok (partial dates)'","how":"html_links, 1 hop; date (year) from the enclosing section heading would date the rest"}]},{"bfs_id":2514,"name":"Bolken","canton":"SO","status":"candidate","website":"http://www.bolken.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bolken.ch/sitzung","from":"2023","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 7 sessions since 2023; minutes attached to the session pages as 'Protokoll_BGV_10.12.2025_genehmigt 12.01.26'"}]},{"bfs_id":2516,"name":"Deitingen","canton":"SO","status":"candidate","website":"http://www.deitingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n\n2026-09-26 coverage review: Reviewed mixed public finance, regulations and historical assembly attachments; representative robots-permitted PDF bytes verified. Public document sections and site-specific asset storage are used without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.deitingen.ch/dokumente/bg-gemeindeversammlung-protokoll-nr-1-2025---2029-vom-09-dezember-2025","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":2517,"name":"Derendingen","canton":"SO","status":"not_published","website":"https://www.derendingen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Gemeinderatssitzungen are HTML news posts\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://derendingen.ch/politik/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":"Gemeindeversammlung event pages carry Traktandenliste and Botschaften only; Downloads page has no protocols","how":"ask commune"}]},{"bfs_id":2518,"name":"Etziken","canton":"SO","status":"candidate","website":"http://etziken.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.etziken.ch/politik/protokolle.html/171","from":null,"to":"2026-07-08","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2026-07-08, e.g. 'Gemeinderatssitzung vom 08-07-2026.'; body guessed from the URL"}]},{"bfs_id":2519,"name":"Gerlafingen","canton":"SO","status":"not_examined","website":"http://www.gerlafingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":2523,"name":"Horriwil","canton":"SO","status":"not_examined","website":"http://www.horriwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2524,"name":"Hüniken","canton":"SO","status":"not_examined","website":"http://www.hueniken.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.hueniken.ch/gemeinderatssitzung-27, https://www.hueniken.ch/gemeinderatssitzung-28, https://www.hueniken.ch/gemeinderatssitzung-29) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":2525,"name":"Kriegstetten","canton":"SO","status":"candidate","website":"https://www.kriegstetten.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kriegstetten.ch/politik/gemeindeversammlung/protokolle.html/157","from":null,"to":"2026-03-26","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-03-26, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":2526,"name":"Lohn-Ammannsegg","canton":"SO","status":"candidate","website":"http://www.lohn-ammannsegg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lohn-ammannsegg.ch/politik/gemeinderat/gemeinderatssitzungen/archiv-gemeinderatssitzungen.html/42","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 51 dated protocol PDFs, e.g. 'Beschlüsse_10_2022' (2022-11-14)"}]},{"bfs_id":2527,"name":"Luterbach","canton":"SO","status":"candidate","website":"http://www.luterbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.luterbach.ch/sitzung","from":"2019","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 16 sessions since 2019; minutes attached to the session pages as 'GV-Protokoll'"}]},{"bfs_id":2528,"name":"Obergerlafingen","canton":"SO","status":"candidate","website":"http://www.obergerlafingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.obergerlafingen.ch/gemeindeversammlung.html","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: 36 dated PDF links on the page, newest 2026-06-24, e.g. 'Rechnungsgemeinde 24.06.2026'; body guessed from the URL"}]},{"bfs_id":2530,"name":"Recherswil","canton":"SO","status":"candidate","website":"https://www.recherswil.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.recherswil.ch/verwalten/gemeinderat/gemeinderatsprotokolle.html/432","from":null,"to":"2026-07-02","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-07-02, e.g. 'GR-Protokoll vom 02. Juli 2026'; body guessed from the URL"}]},{"bfs_id":2532,"name":"Subingen","canton":"SO","status":"not_examined","website":"https://www.subingen.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2534,"name":"Zuchwil","canton":"SO","status":"configured","website":"https://www.zuchwil.ch","vendor":"weblication","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Gemeindeversammlung; the sitzungsdatum query parameter is the same bogus value for all files; the Gemeinderat (executive) protocol page protokolle_gr showed no document links","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.zuchwil.ch/de/politik/protokolle_gv/","from":"2020-06-22","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 1 hop, cdws document module (dok.php?...filename=Protokoll_GV_vom_22.06.2026), date from the anchor text"}]},{"bfs_id":2535,"name":"Drei Höfe","canton":"SO","status":"candidate","website":"http://www.dreihoefe.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dreihoefe.ch/politik_gmdversammlungen.php","from":null,"to":"2025-12-03","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2025-12-03, e.g. 'Protokoll Budget-GV vom 03.12.2025'; body guessed from the URL"}]},{"bfs_id":2541,"name":"Balm bei Günsberg","canton":"SO","status":"configured","website":"http://www.balm-balmberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.balm-balmberg.ch/protokolle","from":null,"to":"2026-07-02","cadence":null,"obstacle":null,"how":"html_links, 1 hop"},{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.balm-balmberg.ch/protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2542,"name":"Bellach","canton":"SO","status":"not_published","website":"http://www.bellach.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.bellach.ch/politik/gemeindeversammlung.html/16","from":null,"to":null,"cadence":null,"obstacle":"Gemeindeordnung only","how":"ask commune"}]},{"bfs_id":2543,"name":"Bettlach","canton":"SO","status":"not_published","website":"https://www.bettlach.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://bettlach.ch/site.html?sid=120&OID=213","from":"2025-12-09","to":"2026-06-09","cadence":null,"obstacle":"only the last two GV-Protokolle (/documents/2771.PDF, /documents/2708.PDF; Dec 2025 and Jun 2026) are online, below the three-document threshold; no archive under Einwohnergemeinde or Behoerden","how":"ask commune for the archive"}]},{"bfs_id":2544,"name":"Feldbrunnen-St. Niklaus","canton":"SO","status":"configured","website":"https://www.feldbrunnen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.feldbrunnen.ch/politik/protokolle/","from":null,"to":"2026-03-03","cadence":null,"obstacle":null,"how":"probe: 4 dated PDF links on the page, newest 2026-03-03; body guessed from the URL"},{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.feldbrunnen.ch/politik/protokolle/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2545,"name":"Flumenthal","canton":"SO","status":"not_examined","website":"https://www.flumenthal.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.flumenthal.ch/aktuelles-und-portrait/behoerden-und-verwaltung/gemeinderat/#c128, https://www.flumenthal.ch/aktuelles-und-portrait/behoerden-und-verwaltung/gemeindeversammlung/#c130)","publications":[]},{"bfs_id":2546,"name":"Grenchen","canton":"SO","status":"candidate","website":"https://www.grenchen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grenchen.ch/protokollefs","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Protokolle' with 95 dated minutes links, e.g. 'Protokoll vom 1. Juli 2026'"}]},{"bfs_id":2547,"name":"Günsberg","canton":"SO","status":"candidate","website":"https://www.guensberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.guensberg.ch/politik/gemeindeversammlung/2021.html/173","from":null,"to":"2025-12-08","cadence":null,"obstacle":null,"how":"probe: 12 dated PDF links on the page, newest 2025-12-08, e.g. '2025.12.08_Protokoll_Budget Gemeindeversammlung 2025'; body guessed from the URL"}]},{"bfs_id":2548,"name":"Hubersdorf","canton":"SO","status":"not_examined","website":"http://www.hubersdorf.ch","vendor":"wix","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.hubersdorf.ch/politik) Review 2026-09-26: Reviewed public Wix rich-content PDF attachments in municipal news; linked archive with file-owner scoping. Discovery of other Wix file-list widgets remains incomplete.","publications":[]},{"bfs_id":2549,"name":"Kammersrohr","canton":"SO","status":"not_examined","website":null,"vendor":null,"reachable":null,"checked":null,"checked_by":null,"notes":null,"publications":[]},{"bfs_id":2550,"name":"Langendorf","canton":"SO","status":"candidate","website":"https://www.langendorf-so.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://langendorf-so.ch/politik/gemeindeversammlung","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-15, e.g. 'Protokoll Nr. 1 vom 15. Juni 2026'; body guessed from the URL"}]},{"bfs_id":2551,"name":"Lommiswil","canton":"SO","status":"configured","website":"https://www.lommiswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.lommiswil.ch/protokolle.html","from":null,"to":"2026-08-06","cadence":null,"obstacle":null,"how":"html_links, 2 hops"},{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.lommiswil.ch/protokolle.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":2553,"name":"Oberdorf","canton":"SO","status":"candidate","website":"https://www.oberdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberdorf.ch/sitzung","from":"2020","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 13 sessions since 2020; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 15.12.2026'"}]},{"bfs_id":2554,"name":"Riedholz","canton":"SO","status":"not_examined","website":"http://www.riedholz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2555,"name":"Rüttenen","canton":"SO","status":"not_examined","website":"http://www.ruettenen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Documents are collected without subject filters; linked archive detail pages remain in the reviewed crawl scope.","publications":[]},{"bfs_id":2556,"name":"Selzach","canton":"SO","status":"blocked_js","website":"https://www.selzach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2571,"name":"Boningen","canton":"SO","status":"candidate","website":"http://www.boningen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boningen.ch/dienstleistungen/downloads/protokolle.html/103","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-16, e.g. 'Protokoll der Bürgerversammlung vom 16.06.2026_öffentlich'; body guessed from the URL"}]},{"bfs_id":2572,"name":"Däniken","canton":"SO","status":"candidate","website":"http://www.daeniken.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.daeniken.ch/sitzung","from":"2002","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2002; minutes attached to the session pages as 'GV-Protokoll 15.06.2026_genehmigt GR'"}]},{"bfs_id":2573,"name":"Dulliken","canton":"SO","status":"not_examined","website":"http://www.dulliken.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 42 sessions since 2008 (Budgetgemeindeversammlung, Rechnungsgemeindeversammlung, a. o. Gemeindeversammlung, a.o. Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2574,"name":"Eppenberg-Wöschnau","canton":"SO","status":"not_examined","website":"http://www.eppenberg-woeschnau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.eppenberg-woeschnau.ch/startseite-copy-5, https://www.eppenberg-woeschnau.ch/startseite-copy-4-3)\n\n2026-09-26 coverage review: Reviewed public municipal archive sections and representative PDF bytes with robots checks. Documents are collected without subject filters; linked archive detail pages remain in the reviewed crawl scope.","publications":[]},{"bfs_id":2575,"name":"Fulenbach","canton":"SO","status":"candidate","website":"http://www.fulenbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fulenbach.ch/sitzung","from":"2004","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 43 sessions since 2004; minutes attached to the session pages as '00 GV Protokoll vom 11.12.2025'"}]},{"bfs_id":2576,"name":"Gretzenbach","canton":"SO","status":"blocked_js","website":"https://www.gretzenbach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2578,"name":"Gunzgen","canton":"SO","status":"not_examined","website":"http://www.gunzgen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 2 sessions since 2025 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2579,"name":"Hägendorf","canton":"SO","status":"candidate","website":"http://www.haegendorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.haegendorf.ch/sitzung","from":"2017","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 28 sessions since 2017; minutes attached to the session pages as '00.02_Protokoll_Gemeindeversammlung_20251211'"}]},{"bfs_id":2580,"name":"Kappel","canton":"SO","status":"not_examined","website":"https://www.kappel-so.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.kappel-so.ch/index.asp?inc=termine.asp&&typ=Nav4&cat=6&ID=2224)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2581,"name":"Olten","canton":"SO","status":"upstream_only","website":"https://www.olten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Gemeindeparlament; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_2581.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":2582,"name":"Rickenbach","canton":"SO","status":"not_examined","website":"https://www.rickenbachso.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.rickenbachso.ch/de/gemeindeversammlung.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":2583,"name":"Schönenwerd","canton":"SO","status":"not_examined","website":"https://www.schoenenwerd.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 33 sessions since 2011 (Ausserordentliche Gemeindeversammlung, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2584,"name":"Starrkirch-Wil","canton":"SO","status":"not_examined","website":"https://www.starrkirch-wil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 22 sessions since 2017 (Ausserordentliche Gemeindeversammlung, Ordentliche Budget-Gemeindeversammlung, Ordentliche Rechnungs-Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2585,"name":"Walterswil","canton":"SO","status":"blocked_js","website":"https://www.walterswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":2586,"name":"Wangen bei Olten","canton":"SO","status":"configured","website":"https://www.wangenbo.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"the probe hit (https://www.wangenbo.ch/behoerden/gemeinderat/gr-protokolle#protokolle) was the executive's page; the assembly page has minutes back to 2018; 27 of 31 dated, 4 undated because of two-digit years (Protokoll_Gemeindeversammlung_17.06.19.pdf); needed the adapter's percent-decoding fix (Gemeindeversammlung%2024.06.2026.pdf had been read as 2024-06-20)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.wangenbo.ch/behoerden/gemeindeversammlung","from":"2018-12-03","to":"2026-06-29","cadence":null,"obstacle":null,"how":"html_links, 2 sources, 1 hop each"},{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.wangenbo.ch/behoerden/gemeinderat/gr-protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":2601,"name":"Solothurn","canton":"SO","status":"not_examined","website":"https://www.stadt-solothurn.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 48 sessions since 2005 (Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2611,"name":"Bärschwil","canton":"SO","status":"candidate","website":"https://www.baerschwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.baerschwil.ch/sitzung","from":"2022","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 8 sessions since 2022; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 08.12.2025'"}]},{"bfs_id":2612,"name":"Beinwil","canton":"SO","status":"configured","website":"https://www.beinwil-so.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.beinwil-so.ch/politik/gemeinderat/gemeinderatsbeschluesse","from":null,"to":"2026-08-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2613,"name":"Breitenbach","canton":"SO","status":"candidate","website":"http://www.breitenbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.breitenbach.ch/sitzung","from":"2022","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 16 sessions since 2022; minutes attached to the session pages as 'Protokoll_GV_20251215'"}]},{"bfs_id":2614,"name":"Büsserach","canton":"SO","status":"candidate","website":"https://www.buesserach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buesserach.ch/sitzung","from":"2022","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2022; minutes attached to the session pages as 'Protokoll Gemeindeversammlung Einwohnergemeinde vom 22. Juni 2026'"}]},{"bfs_id":2615,"name":"Erschwil","canton":"SO","status":"blocked_robots","website":"http://www.erschwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: robots.txt answers HTTP 500, which the crawler treats as disallow-all; kind corrected from minutes to decisions","publications":[{"body":"executive","kind":"decisions","status":"blocked_robots","listing_url":"https://www.erschwil.ch/gemeinderatsbeschluesse.html","from":null,"to":"2026-08-17","cadence":null,"obstacle":"www.erschwil.ch answers HTTP 500 on /robots.txt (twice, 40 minutes apart); the crawler treats a 5xx robots.txt as disallow-all; retry when the server is fixed","how":"probe: 13 dated PDF links on the page, newest 2026-08-17; body guessed from the URL; wave 2: Gemeinderatsbeschluesse (decisions of the executive)"}]},{"bfs_id":2616,"name":"Fehren","canton":"SO","status":"configured","website":"http://www.fehren.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"executive","kind":"minutes","status":"configured","listing_url":"https://www.fehren.ch/beschluesse","from":null,"to":"2026-06-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":2617,"name":"Grindel","canton":"SO","status":"candidate","website":"http://www.grindel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grindel.ch/sitzung","from":"2021","to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 17 sessions since 2021; minutes attached to the session pages as 'Bürger Protokoll Budgetversammlung vom 08.12.2025'"}]},{"bfs_id":2618,"name":"Himmelried","canton":"SO","status":"blocked_js","website":"http://www.himmelried.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":2619,"name":"Kleinlützel","canton":"SO","status":"candidate","website":"https://www.kleinluetzel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kleinluetzel.ch/sitzung","from":"2017","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 19 sessions since 2017; minutes attached to the session pages as 'Beschlussprotokoll GV 18.6.2026'"}]},{"bfs_id":2620,"name":"Meltingen","canton":"SO","status":"not_examined","website":"https://www.meltingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2020 (Budget-Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung Budget 2026, Gemeindeversammlung Rechnung 2024, Inf); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":2621,"name":"Nunningen","canton":"SO","status":"candidate","website":"https://www.nunningen.swiss/","vendor":"govis","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.nunningen.ch to https://www.nunningen.swiss/. 72 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"executive","kind":"decisions","status":"candidate","listing_url":"https://www.nunningen.swiss/politik/gemeinderat/gemeinderatsbeschluesse/aktuelle-beschluesse.html/159","from":null,"to":"2026-08-24","cadence":null,"obstacle":null,"how":"probe: 12 dated PDF links on the page, newest 2026-08-24, e.g. 'GR_12_Beschlussprotokoll 24.08.2026'; body guessed from the URL"}]},{"bfs_id":2622,"name":"Zullwil","canton":"SO","status":"candidate","website":"http://www.zullwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-27","checked_by":"OpenCommune official archive and full PDF review","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the server answers 403 to the crawler\n\n2026-09-27: Official download page reviewed through web search; exact linked assembly minutes and municipal regulation on storage.e.jimdo.com pass robots and full GET. Listing HTTP 403 remains; two seeds are not complete coverage.","publications":[]},{"bfs_id":1301,"name":"Einsiedeln","canton":"SZ","status":"configured","website":"https://www.einsiedeln.ch","vendor":"onebyone","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Bezirksgemeinde (assembly; the Bezirk is the commune); 'Ergebnisprotokoll' (results only) excluded; the 'Archiv' page is a copy of the same list; probe hit; also in docs/VENDOR-PATTERNS.md: details per session, 31 found 31 dated offline, date only in the file name (/libraries.files/protokoll_der_bezirksgemeinde_vom_13_april_2026.pdf)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.einsiedeln.ch/politik/bezirksgemeinde/botschaften-und-gemeindeprotokolle","from":"2015-10-05","to":"2026-04-13","cadence":null,"obstacle":null,"how":"html_links, 1 hop, url_regex excludes Ergebnisprotokoll"}]},{"bfs_id":1311,"name":"Gersau","canton":"SZ","status":"configured","website":"https://www.gersau.ch","vendor":"onegov","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; Bezirk Gersau; 'Mitteilung des Bezirksrates vom 10. Dezember 2024' -> /storage/<sha256>; executive communications, not minutes; 17 found 17 dated; Crawl-delay 10; register guess: document_kind decisions for the Bezirksrat communications; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.gersau.ch/topics/behoerden-politik/bezirksrat/mitteilungen-aus-dem-bezirksrat","from":"2023","to":"2025","cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":1321,"name":"Feusisberg","canton":"SZ","status":"not_published","website":"https://www.feusisberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.feusisberg.ch/politik/gemeindeversammlung.html/43","from":null,"to":null,"cadence":null,"obstacle":"Rechnung and Voranschlag brochures per assembly 2022-2026; no protocol","how":"ask commune"}]},{"bfs_id":1322,"name":"Freienbach","canton":"SZ","status":"candidate","website":"https://www.freienbach.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.freienbach.ch/gemeindeversammlung","from":"2012","to":"2026-04-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 34 sessions since 2012; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 10.04.2026'"}]},{"bfs_id":1323,"name":"Wollerau","canton":"SZ","status":"not_examined","website":"http://www.wollerau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 35 sessions since 2012 (Abgesagt - Gemeindeversammlung a.o., Ausserordentliche Gemeindeversammlung, Ausserordentliche Gemeindeversammlung (abges); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1331,"name":"Küssnacht","canton":"SZ","status":"configured","website":"https://www.kuessnacht.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.kuessnacht.ch/politik/bezirksgemeinde.html/24","from":"2019-12-09","to":"2026-04-20","cadence":null,"obstacle":"partial: Bezirksgemeinde (assembly of the Bezirk); 'Protokoll der Bezirksgemeinde ...'; 20 found, 14 dated: the 2015-2018 entries name only month and year; date_regex adjusted offline after the adapter's percent-decoding change; report status ok, register partial (30 percent undated)","how":"html_links, 1 hop, flat page 2015-2026, date_regex yyyymmdd (ymd) on file name"}]},{"bfs_id":1341,"name":"Altendorf","canton":"SZ","status":"not_published","website":"http://www.altendorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.altendorf.ch/politik/gemeindeversammlung.html/29","from":null,"to":null,"cadence":null,"obstacle":"Jahresbericht and Voranschlag brochures per assembly 2022-2026; no protocol","how":"ask commune"}]},{"bfs_id":1342,"name":"Galgenen","canton":"SZ","status":"candidate","website":"http://www.galgenen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.galgenen.ch/gemeindeversammlung","from":"2020","to":"2026-06-26","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 13 sessions since 2020; minutes attached to the session pages as 'Protokoll vom 26. Juni 2026 ausserordentliche Gemeindeversammlung'"}]},{"bfs_id":1343,"name":"Innerthal","canton":"SZ","status":"not_examined","website":"https://www.innerthal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.innerthal.ch/behoerden/gemeindeversammlung-1400)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1344,"name":"Lachen","canton":"SZ","status":"configured","website":"https://www.lachen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"ten assembly events 2021-2026 on the page; event links carry no date in their text, so hop 1 keeps listing order; validated with follow capped at 3","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.lachen.ch/services/gemeindeversammlungen.html/21/l/de","from":"2025-12-03","to":"2026-04-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (event module -> event page 'Protokoll dd.mm.yyyy'), max_follow 80"}]},{"bfs_id":1345,"name":"Reichenburg","canton":"SZ","status":"blocked_js","website":"https://www.reichenburg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":1346,"name":"Schübelbach","canton":"SZ","status":"candidate","website":"https://www.schuebelbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web content page with dated attachments","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schuebelbach.ch/erweiterunggutenbrunnen","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Am 18. Juni 2023 haben die Stimmbürgerinnen und St' with 5 dated document links, e.g. 'MarchAnzeiger_20260120_Spatenstich Gutenbrunnen'; kind and filter to be set by the reviewer"}]},{"bfs_id":1347,"name":"Tuggen","canton":"SZ","status":"blocked_js","website":"https://www.tuggen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":1348,"name":"Vorderthal","canton":"SZ","status":"not_examined","website":"https://www.vorderthal.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1349,"name":"Wangen","canton":"SZ","status":"not_published","website":"https://www.wangensz.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.wangensz.ch/politik/gemeindeversammlung.html/83","from":null,"to":null,"cadence":null,"obstacle":"Botschaften and Rechnung PDFs; no protocol","how":"ask commune"}]},{"bfs_id":1361,"name":"Alpthal","canton":"SZ","status":"not_examined","website":"https://www.alpthal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.alpthal.ch/gemeindeversammlung)\n\n2026-09-26 coverage review: Reviewed official municipal document sections with robots-permitted PDF response bytes. Published budgets, regulations, assembly documents and other municipal files are collected without title filters.","publications":[]},{"bfs_id":1362,"name":"Arth","canton":"SZ","status":"candidate","website":"https://www.arth.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.arth.ch/gemeindeversammlung","from":"2013","to":"2026-04-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 29 sessions since 2013; minutes attached to the session pages as 'Ergebnisprotokoll GVers 22.04.2026'"}]},{"bfs_id":1363,"name":"Illgau","canton":"SZ","status":"candidate","website":"https://www.illgau.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://illgau.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 11 files match, newest 2026-06-14, e.g. 'Abstimmungsprotokoll Kanton vom 14. Juni 2026'; body guessed from the URL"}]},{"bfs_id":1364,"name":"Ingenbohl","canton":"SZ","status":"candidate","website":"http://www.ingenbohl.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ingenbohl.ch/sitzung","from":"2006","to":"2026-04-13","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 41 sessions since 2006; minutes attached to the session pages as 'Ergebnisprotokoll Gemeindeversammlung 15. Dezember 2025'"}]},{"bfs_id":1365,"name":"Lauerz","canton":"SZ","status":"not_published","website":"https://www.lauerz.ch","vendor":"onegov","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only; register guess: recorded as no_minutes_online although the cause is a login wall, not an absence of documents\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"the Gemeindeversammlung topic is empty for anonymous visitors (login link)","how":"ask commune (login-gated topic)"}]},{"bfs_id":1366,"name":"Morschach","canton":"SZ","status":"not_examined","website":"http://www.morschach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2023 (Gemeindeversammlung vom 10. Dezember 2025, Gemeindeversammlung vom 11. Dezember 2024, Gemeindeversammlung vom 13. Dezemb); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1367,"name":"Muotathal","canton":"SZ","status":"not_published","website":"https://www.muotathal.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.muotathal.ch/politik/gemeindeversammlung","from":null,"to":null,"cadence":null,"obstacle":"Gemeindeversammlung page is text only, no PDF links; no Protokolle section in the navigation","how":"ask commune"}]},{"bfs_id":1368,"name":"Oberiberg","canton":"SZ","status":"not_examined","website":"https://www.oberiberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.oberiberg.ch/termine/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1369,"name":"Riemenstalden","canton":"SZ","status":"not_examined","website":"https://www.riemenstalden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":1370,"name":"Rothenthurm","canton":"SZ","status":"not_examined","website":"https://www.rothenthurm.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":1371,"name":"Sattel","canton":"SZ","status":"not_examined","website":"https://www.sattel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 12 sessions since 2021 (Gemeindeversammlung Rechnung 2020, Gemeindeversammlung Rechnung 2021, Gemeindeversammlung Rechnung 2022, Gemeindeversamm); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1372,"name":"Schwyz","canton":"SZ","status":"candidate","website":"https://www.gemeindeschwyz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeindeschwyz.ch/sitzung","from":"2018","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 19 sessions since 2018; minutes attached to the session pages as 'Gemeindeversammlung vom 17. Juni 2026; Protokoll'"}]},{"bfs_id":1373,"name":"Steinen","canton":"SZ","status":"candidate","website":"https://www.steinen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.steinen.ch/sitzung","from":"2023","to":"2026-04-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 7 sessions since 2023; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 10.04.2026'"}]},{"bfs_id":1374,"name":"Steinerberg","canton":"SZ","status":"candidate","website":"https://www.steinerberg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.steinerberg.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-19","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 21 files match, newest 2026-04-19, e.g. '20260419_Steinerberg_Kommunales_Wahlprotokoll_Gemeinde'; body guessed from the URL"}]},{"bfs_id":1375,"name":"Unteriberg","canton":"SZ","status":"candidate","website":"https://www.unteriberg.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: protocol_page_no_pdfs","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.unteriberg.ch/politik/gemeinderat/protokolle-archiv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":4401,"name":"Arbon","canton":"TG","status":"upstream_only","website":"https://www.arbon.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4401.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4406,"name":"Dozwil","canton":"TG","status":"not_examined","website":"https://www.dozwil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4411,"name":"Egnach","canton":"TG","status":"not_examined","website":"https://www.egnach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 20 sessions since 2015 (Abgesagt Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung (ausserordentlich)); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4416,"name":"Hefenhofen","canton":"TG","status":"candidate","website":"https://www.hefenhofen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hefenhofen.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2026-05-27, e.g. 'Protokoll 27.05.2026'; body guessed from the URL"}]},{"bfs_id":4421,"name":"Horn","canton":"TG","status":"not_examined","website":"https://www.horn.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 21 sessions since 2016 (ABGESAGT - Budgetgemeindeversammlung, ABGESAGT - Rechnungsgemeindeversammlung, Budgetgemeindeversammlung, Rechnungsgemei); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4426,"name":"Kesswil","canton":"TG","status":"not_examined","website":"https://www.kesswil.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4431,"name":"Roggwil","canton":"TG","status":"blocked_js","website":"https://www.roggwil-tg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4436,"name":"Romanshorn","canton":"TG","status":"not_published","website":"https://www.romanshorn.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.romanshorn.ch/politik/gemeindeversammlungen.html/18","from":null,"to":null,"cadence":null,"obstacle":"page lists assembly dates and Budget and Rechnung subpages; no protocol link (subpages not fetched)","how":"check the Budget and Rechnung subpages; ask commune"}]},{"bfs_id":4441,"name":"Salmsach","canton":"TG","status":"not_examined","website":"http://www.salmsach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 20 sessions since 2013 (Budget-Gemeindeversammlung 2017, Budget-Gemeindeversammlung 2018, Budget-Gemeindeversammlung 2019, Budget-Gemeindeversam); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4446,"name":"Sommeri","canton":"TG","status":"candidate","website":"https://www.sommeri.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://sommeri.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 5 files match, newest 2026-06-14, e.g. 'Abstimmungsprotokoll_Kant_20260614 (1)'; body guessed from the URL"}]},{"bfs_id":4451,"name":"Uttwil","canton":"TG","status":"blocked_js","website":"https://www.uttwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4461,"name":"Amriswil","canton":"TG","status":"not_examined","website":"https://www.amriswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4471,"name":"Bischofszell","canton":"TG","status":"candidate","website":"https://www.bischofszell.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bischofszell.ch/sitzung","from":"2004","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2004; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 01.12.2025'"}]},{"bfs_id":4476,"name":"Erlen","canton":"TG","status":"not_examined","website":"http://www.erlen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2023 (Ausserordentliche Gemeindeversammlung, Sanierung &, Gemeindeversammlung Budget 2024, Gemeindeversammlung Budget 2025, Ge); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4486,"name":"Hauptwil-Gottshaus","canton":"TG","status":"not_examined","website":"https://www.hauptwil-gottshaus.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":4495,"name":"Hohentannen","canton":"TG","status":"candidate","website":"http://www.hohentannen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hohentannen.ch/politik/gemeinderat/gemeindeversammlung.html","from":null,"to":"2025-11-19","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2025-11-19, e.g. 'Protokoll Budget-Gemeindeversammlung Hohentannen 19.11.2025'; body guessed from the URL"}]},{"bfs_id":4501,"name":"Kradolf-Schönenberg","canton":"TG","status":"configured","website":"https://kradolf-schoenenberg.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Budget- and Rechnungs-Gemeindeversammlung protocols; anchor texts contain soft hyphens (Pro&shy;tokoll), so the filter is on the URL; stripping U+00AD before matching would fix it","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://kradolf-schoenenberg.ch/gemeinde/gemeindeversammlung/","from":"2023-11-28","to":"2025-11-27","cadence":null,"obstacle":null,"how":"html_links, 1 hop, url_regex (anchor texts contain soft hyphens)"}]},{"bfs_id":4506,"name":"Sulgen","canton":"TG","status":"blocked_js","website":"https://www.sulgen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4511,"name":"Zihlschlacht-Sitterdorf","canton":"TG","status":"not_examined","website":"https://www.zihlschlacht-sitterdorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4536,"name":"Basadingen-Schlattingen","canton":"TG","status":"blocked_js","website":"https://www.basadingen-schlattingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Observed GOViS sections use generic persistent linked discovery without topic filters. Former registered official website redirects to https://www.basadingen-schlattingen.ch; registered website corrected.","publications":[]},{"bfs_id":4545,"name":"Diessenhofen","canton":"TG","status":"candidate","website":"https://www.diessenhofen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.diessenhofen.ch/gemeinde/politik/gemeindeversammlung.html/20","from":null,"to":"2026-05-08","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-05-08, e.g. 'Botschaft zur Gemeindeversammlung vom 8. Mai 2026'; body guessed from the URL"}]},{"bfs_id":4546,"name":"Schlatt","canton":"TG","status":"candidate","website":"https://www.schlatt.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schlatt.ch/politik/gemeindeversammlung.html/232","from":null,"to":"2025-06-16","cadence":null,"obstacle":null,"how":"probe: 15 dated PDF links on the page, newest 2025-06-16, e.g. '54. Protokoll - 16. Juni 2025 - Rechnungsgemeinde'; body guessed from the URL"}]},{"bfs_id":4551,"name":"Aadorf","canton":"TG","status":"configured","website":"https://www.aadorf.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.aadorf.ch/verwaltung/dienstleistungen.html/209/service/451","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4561,"name":"Felben-Wellhausen","canton":"TG","status":"candidate","website":"http://www.felben-wellhausen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.felben-wellhausen.ch/politik/abstimmungen-wahlen-gemeindeversammlung.html/77","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 2 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4566,"name":"Frauenfeld","canton":"TG","status":"configured","website":"https://www.frauenfeld.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.frauenfeld.ch/politik-verwaltung/politik/gemeinderat/archiv-der-gemeinderatsprotokolle.html/520","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4566.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4571,"name":"Gachnang","canton":"TG","status":"configured","website":"https://www.gachnang.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"'Protokoll Gemeindeversammlung <date>'; probe hit; also in docs/VENDOR-PATTERNS.md: main p a, 9 found 9 dated offline, file names like Protokoll GV 6. Juni 2024.docx.pdf.pdf","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.gachnang.ch/politik/protokolle-gemeindeversammlung.html/386","from":"2022-06-09","to":"2026-06-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop, flat list"}]},{"bfs_id":4590,"name":"Hüttlingen","canton":"TG","status":"blocked_js","website":"https://www.huettlingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":4591,"name":"Matzingen","canton":"TG","status":"not_examined","website":"http://www.matzingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4601,"name":"Neunforn","canton":"TG","status":"candidate","website":"https://www.neunforn.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.neunforn.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-01-02","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 32 files match, newest 2026-01-02, e.g. 'Protokoll der GV vom 02.01.2026'; body guessed from the URL"}]},{"bfs_id":4606,"name":"Stettfurt","canton":"TG","status":"candidate","website":"http://www.stettfurt.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.stettfurt.ch/gemeinde/politik/gemeindeversammlung/protokolle.html/185","from":null,"to":"2025-11-25","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2025-11-25, e.g. 'Protokoll vom 25. November 2025'; body guessed from the URL"}]},{"bfs_id":4611,"name":"Thundorf","canton":"TG","status":"candidate","website":"http://www.thundorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.thundorf.ch/sitzung","from":"2016","to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2016; minutes attached to the session pages as 'Gemeindeversammlung_19.01.2026_Protokoll'"}]},{"bfs_id":4616,"name":"Uesslingen-Buch","canton":"TG","status":"not_examined","website":"https://www.uesslingen-buch.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.uesslingen-buch.ch/gemeinde/politik/gemeindeversammlung.html/13) Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":4621,"name":"Warth-Weiningen","canton":"TG","status":"not_examined","website":"http://www.warth-weiningen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4641,"name":"Altnau","canton":"TG","status":"not_examined","website":"https://www.altnau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 10 sessions since 2024 (Gemeindeversammlung, Orientierungsversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4643,"name":"Bottighofen","canton":"TG","status":"candidate","website":"https://www.bottighofen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bottighofen.ch/sitzung","from":"2018","to":"2026-05-12","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 15 sessions since 2018; minutes attached to the session pages as 'Gemeindeversammlung Protokoll 12.05.2026'"}]},{"bfs_id":4646,"name":"Ermatingen","canton":"TG","status":"candidate","website":"https://www.ermatingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ermatingen.ch/de/Gemeindepolitik/Gemeindeversammlung","from":null,"to":"2026-05-26","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-05-26, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":4651,"name":"Gottlieben","canton":"TG","status":"blocked_js","website":"https://www.gottlieben.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":4656,"name":"Güttingen","canton":"TG","status":"not_examined","website":"http://www.guettingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.guettingen.ch/politik/aus-dem-gemeinderat.html/203/news/2068, https://www.guettingen.ch/politik/aus-dem-gemeinderat.html/203/news/2052, https://www.guettingen.ch/politik/aus-dem-gemeinderat.html/203/news/2026)","publications":[]},{"bfs_id":4666,"name":"Kemmental","canton":"TG","status":"candidate","website":"https://www.kemmental.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kemmental.ch/politik/gemeindeversammlung/rechnung-2025.html/312","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 2 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":4671,"name":"Kreuzlingen","canton":"TG","status":"upstream_only","website":"https://www.kreuzlingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed official municipal document sections with robots-permitted PDF response bytes. Structured JSON in the public file-manager widget exposes exact download routes; the collector parses the JSON without executing JavaScript.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_4671.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":4681,"name":"Langrickenbach","canton":"TG","status":"not_examined","website":"https://www.langrickenbach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.langrickenbach.ch/gemeinde/politik/gemeindeversammlungen.html/45)","publications":[]},{"bfs_id":4683,"name":"Lengwil","canton":"TG","status":"candidate","website":"https://www.lengwil.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lengwil.ch/politik/gemeindeversammlung.html/25","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2025-12-15, e.g. 'Protokoll der Gemeindeversammlung vom 15. Dezember 2025'; body guessed from the URL"}]},{"bfs_id":4691,"name":"Münsterlingen","canton":"TG","status":"candidate","website":"https://www.muensterlingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.muensterlingen.ch/sitzung","from":"2023","to":"2025-11-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 3 sessions since 2023; minutes attached to the session pages as 'Gemeindeversammlung 18.11.2025 - Protokoll'"}]},{"bfs_id":4696,"name":"Tägerwilen","canton":"TG","status":"configured","website":"https://www.taegerwilen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"file names 'yyyy-mm-dd Protokoll GV.pdf'","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.taegerwilen.ch/politik/gemeindeversammlung/protokoll-der-gemeindeversammlungen.html/37","from":"2014-11-17","to":"2026-05-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop, flat list"}]},{"bfs_id":4701,"name":"Wäldi","canton":"TG","status":"blocked_js","website":"https://www.waeldi.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4711,"name":"Affeltrangen","canton":"TG","status":"candidate","website":"http://www.affeltrangen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.affeltrangen.ch/politik-verwaltung/gemeindeversammlung.html/189","from":null,"to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-11-26, e.g. '20251126_Protokoll Gemeindeversammlung.pdf'; body guessed from the URL"}]},{"bfs_id":4716,"name":"Bettwiesen","canton":"TG","status":"candidate","website":"https://www.bettwiesen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bettwiesen.ch/politik/gemeindeversammlung/archiv.html/134","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 13 dated protocol PDFs, e.g. 'Botschaft zur Gemeindeversammlung, 25. N' (2024-11-25)"}]},{"bfs_id":4721,"name":"Bichelsee-Balterswil","canton":"TG","status":"candidate","website":"http://www.bichelsee-balterswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bichelsee-balterswil.ch/gemeinde/politik/gemeindeversammlungen/2023-gemeindeversammlungen.html/664","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 2 dated protocol PDFs, e.g. 'Protokoll Budgetgemeinde 2023' (2023-11-20)"}]},{"bfs_id":4723,"name":"Braunau","canton":"TG","status":"not_examined","website":"http://www.braunau.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.braunau.ch/gemeindeversammlung/)","publications":[]},{"bfs_id":4724,"name":"Eschlikon","canton":"TG","status":"configured","website":"https://www.eschlikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Protokolle page under Verwaltung/Gemeindekanzlei; anchors like 'Budgetgemeinde 2026 vom 25.11.2025'; every PDF in main is a protocol","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.eschlikon.ch/verwaltung/einwohner-und-behoerdendienste/gemeindekanzlei/protokolle-gemeindeversammlung.html/338-340-358-87-408","from":"2013-11-27","to":"2025-11-25","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4726,"name":"Fischingen","canton":"TG","status":"not_examined","website":"https://www.fischingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.fischingen.ch/gemeinde/politik/gemeindeversammlungen.html/58)","publications":[]},{"bfs_id":4741,"name":"Lommis","canton":"TG","status":"candidate","website":"https://www.lommis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://lommis.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 39 files match, newest 2025-12-01, e.g. 'Protokoll Gemeindeversammlung vom 01.12.2025 unterzeichnet'; body guessed from the URL"}]},{"bfs_id":4746,"name":"Münchwilen","canton":"TG","status":"not_published","website":"http://www.muenchwilen-tg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: the assembly subpages carry the agenda (Botschaft, Budget, Jahresrechnung, flyer) only Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.muenchwilen-tg.ch/politik/abstimmungen-und-wahlen.html/30","from":null,"to":null,"cadence":null,"obstacle":"the two assembly subpages (26.11.2025, 1.6.2026) hold Botschaft, Budget, Jahresrechnung and flyer PDFs only (agenda material), no Protokoll and no Beschluesse","how":null}]},{"bfs_id":4751,"name":"Rickenbach","canton":"TG","status":"candidate","website":"https://www.rickenbach-tg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rickenbach-tg.ch/gemeinde/aktuelles/amtliche-publikationen-archiv/protokoll-gemeindeversammlung-vom-4.-dezember-2025.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 3 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":4756,"name":"Schönholzerswilen","canton":"TG","status":"candidate","website":"https://www.schoenholzerswilen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schoenholzerswilen.ch/sitzung","from":"2024","to":"2026-04-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 5 sessions since 2024; minutes attached to the session pages as '01_GV_Protokoll_22.04.2026'"}]},{"bfs_id":4761,"name":"Sirnach","canton":"TG","status":"not_published","website":"http://www.sirnach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: no Gemeindeversammlung or Protokoll page on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.sirnach.ch/de/politik/politik.html/89","from":null,"to":null,"cadence":null,"obstacle":"Politik redirects to Gemeinderat; the subnavigation (Gemeinderat, Legislaturziele, Kommissionen, Parteien, Rechtssammlung), the Dienstleistungen A-Z list (144 links) and the sitemap (147 links) carry no Gemeindeversammlung or Protokoll page","how":null}]},{"bfs_id":4776,"name":"Tobel-Tägerschen","canton":"TG","status":"candidate","website":"http://www.tobel-taegerschen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tobel-taegerschen.ch/gemeinde/aktuelles/news/archiv/abstimmungsprotokoll-gemeindeversammlung-24.-juni-2026.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":4781,"name":"Wängi","canton":"TG","status":"not_published","website":"http://www.waengi.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: the only assembly documents are the Botschaft (agenda), budgets and accounts","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.waengi.ch/gemeinde/politik/budget-rechnung.html/227","from":null,"to":null,"cadence":null,"obstacle":"Politik redirects to Gemeinderat; the only assembly documents are on Budget & Rechnung: 'Botschaft Gemeindeversammlung 2019-2025', budgets and accounts (agenda material); no Protokoll or Beschluesse anywhere in the Politik subnavigation","how":null}]},{"bfs_id":4786,"name":"Wilen","canton":"TG","status":"not_examined","website":"http://www.wilen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 8 sessions since 2013 (Gemeindeversammlung, Gemeindeversammlung Abstimmung an der Urne); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4791,"name":"Wuppenau","canton":"TG","status":"candidate","website":"https://www.wuppenau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wuppenau.ch/sitzung","from":"2018","to":"2026-03-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 10 sessions since 2018; minutes attached to the session pages as '3 Protokoll Gemeindeversammlung'"}]},{"bfs_id":4801,"name":"Berlingen","canton":"TG","status":"not_examined","website":"https://www.berlingen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4806,"name":"Eschenz","canton":"TG","status":"blocked_js","website":"http://www.eschenz.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4811,"name":"Herdern","canton":"TG","status":"blocked_js","website":"https://www.herdern.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":4816,"name":"Homburg","canton":"TG","status":"candidate","website":"https://www.homburg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links; 2026-09-13 bounded archive review: 10 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.homburg.ch/Publikationen_Protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Publikationen / Protokolle' has 4 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":4821,"name":"Hüttwilen","canton":"TG","status":"candidate","website":"http://www.huettwilen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.huettwilen.ch/sitzung","from":"2006","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 45 sessions since 2006; minutes attached to the session pages as 'Protokoll 59 GV vom 19 Juni 2025'"}]},{"bfs_id":4826,"name":"Mammern","canton":"TG","status":"not_examined","website":"https://www.mammern.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4831,"name":"Müllheim","canton":"TG","status":"not_examined","website":"http://www.muellheim.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":4841,"name":"Pfyn","canton":"TG","status":"not_examined","website":"http://www.pfyn.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4846,"name":"Raperswilen","canton":"TG","status":"blocked_js","website":"https://www.raperswilen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4851,"name":"Salenstein","canton":"TG","status":"not_examined","website":"https://www.salenstein.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 30 sessions since 2013 (Budget-Gemeindeversammlung, Gemeindeversammlung, Gemeindeversammlung Budget 2019, Gemeindeversammlung Budget 2020, Gemei); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":4864,"name":"Steckborn","canton":"TG","status":"not_examined","website":"https://www.steckborn.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":4871,"name":"Wagenhausen","canton":"TG","status":"candidate","website":"https://www.wagenhausen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wagenhausen.ch/gemeindeversammlung/gemeindeversammlung-25062026.html/352","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-06-25, e.g. 'Einladung / Traktanden Gemeindeversammlung 25.06.2026'; body guessed from the URL"}]},{"bfs_id":4881,"name":"Amlikon-Bissegg","canton":"TG","status":"candidate","website":"https://www.amlikon-bissegg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.amlikon-bissegg.ch/gemeinde/politik/gemeindeversammlungen.html/209","from":null,"to":"2026-04-30","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2026-04-30, e.g. 'Protokoll GV 30.04.2026'; body guessed from the URL"}]},{"bfs_id":4891,"name":"Berg","canton":"TG","status":"not_examined","website":"http://www.berg-tg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.berg-tg.ch/gemeindeversammlung.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":4901,"name":"Birwinken","canton":"TG","status":"candidate","website":"http://www.birwinken.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.birwinken.ch/verwaltung/gemeindeversammlungen.html/349","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 6 dated protocol PDFs, e.g. 'Protokoll der Gemeindeversammlung vom 29' (2021-11-29)"}]},{"bfs_id":4911,"name":"Bürglen","canton":"TG","status":"blocked_js","website":"https://www.buerglen-tg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":4921,"name":"Bussnang","canton":"TG","status":"candidate","website":"http://www.bussnang.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bussnang.ch/index.php/pages/gemeindeversammlung","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 37 dated PDF links on the page, newest 2026-06-15, e.g. 'Protokoll der Gemeindeversammlung vom 15. Juni 2026'; body guessed from the URL"}]},{"bfs_id":4941,"name":"Märstetten","canton":"TG","status":"candidate","website":"https://www.maerstetten.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.maerstetten.ch/politik/gemeindeversammlung/protokolle.html/39","from":null,"to":"2025-11-13","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2025-11-13, e.g. 'Protokoll der Gemeindeversammlung vom 13.11.2025'; body guessed from the URL"}]},{"bfs_id":4946,"name":"Weinfelden","canton":"TG","status":"configured","website":"https://www.weinfelden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Stadtparlament; 'Parlamentsprotokoll vom ...' PDFs on one long page among Botschaften and answers to questions","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.weinfelden.ch/stadt/politik/stadtparlament/beschluesse.html/268","from":"2019-06-20","to":"2026-06-11","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":4951,"name":"Wigoltingen","canton":"TG","status":"not_examined","website":"https://www.wigoltingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 31 sessions since 2009 (Budget Gemeindeversammlung, Budgetgemeindeversammlung, Budgetgemeindeversammlung PGW, Budgetgemeindeversammlung PGW wird); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5001,"name":"Arbedo-Castione","canton":"TI","status":"configured","website":"https://www.arbedocastione.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Verbale della seduta since Dec 2019 (the crawler saw 18, the cached page 5); document links carry a volatile panntime= parameter (https://www.arbedocastione.ch/Verbale-della-seduta-del-15122025-616a2a00?i=1&pannorg=4414&panntime=...&MasterId=g1_1807) so every run re-downloads (sha check discards duplicates); needs strip_params","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.arbedocastione.ch/Atti-Consiglio-Comunale-478eac00","from":"2019-12-16","to":"2025-12-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop, a[href*='?i=1'], text_regex ^Verbale"}]},{"bfs_id":5002,"name":"Bellinzona","canton":"TI","status":"configured","website":"https://www.bellinzona.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.bellinzona.ch/Sedute","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_5002.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":5003,"name":"Cadenazzo","canton":"TI","status":"configured","website":"http://www.cadenazzo.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.cadenazzo.ch/Risoluzioni-e-ordini-del-giorno-35668a00?vis=2","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5009,"name":"Isone","canton":"TI","status":"configured","website":"https://www.isone.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.isone.ch/Estratti-risoluzioni-2aac4c00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5010,"name":"Lumino","canton":"TI","status":"candidate","website":"http://www.lumino.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lumino.ch/Risoluzioni-municipali-b98c0b00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni municipali' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5017,"name":"Sant'Antonino","canton":"TI","status":"not_examined","website":"https://www.santonino.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 7 pages tested (https://www.santonino.ch/nuova-pagina-consiglio-comunale/, https://www.santonino.ch/comunicazioni-consiglio-comunale/, https://www.santonino.ch/?smd_process_download=1&download_id=9416); 2026-09-13 Ticino archive review: 78 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5048,"name":"Acquarossa","canton":"TI","status":"blocked_robots","website":"http://www.acquarossa.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Consiglio comunale; wave 2: listing readable back to 2008, PDF downloads blocked by robots.txt","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.acquarossa.ch/documenti-consiglio-comunale/verbali-approvati/","from":"2008-04-14","to":"2026-03-17","cadence":null,"obstacle":"robots.txt says 'Disallow: /*.pdf$' and '/*.PDF$', so the crawler refuses every download (error kind robots); the wp_media endpoint would return the same .pdf URLs","how":"WordPress document list, 4 pages joined by a 'li.next a' pager (next_selector works): 65 dated 'Verbale seduta ordinaria/straordinaria/costitutiva <date>' back to 2008 in 6 requests"}]},{"bfs_id":5049,"name":"Blenio","canton":"TI","status":"candidate","website":"https://blenio.assolo.net/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 identity review: official http://www.comuneblenio.ch/ redirects HTTP 307 to https://blenio.assolo.net/; council listing and PDF verified there.\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://blenio.assolo.net/Comune-di-Blenio-d95c6b00?fric=3847&param_cat0=0&param_cat1=0&param_cat2=0&param_cat3=0&param_cat4=0&catinv=70&param_textsearch=&param_data=0000-00-00&param_data1=0000-00-00&param_data2=0000-00-00&param_parint=0#p3847","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Cons. com. - Estratto risoluzioni' has 4 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5050,"name":"Serravalle","canton":"TI","status":"configured","website":"https://www.serravalle.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.serravalle.ch/Politica/Documenti-Consiglio-comunale/Risoluzioni-ff4ee300","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5061,"name":"Airolo","canton":"TI","status":"not_examined","website":"http://www.comuneairolo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5063,"name":"Bedretto","canton":"TI","status":"not_examined","website":"https://www.bedretto.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[]},{"bfs_id":5071,"name":"Dalpe","canton":"TI","status":"not_examined","website":"http://www.dalpe.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://dalpe.ch/?page_id=119); 2026-09-13 Ticino archive review: 68 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5072,"name":"Faido","canton":"TI","status":"not_examined","website":"https://www.faido.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript; 2026-09-13 Ticino archive review: 160 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5073,"name":"Giornico","canton":"TI","status":"configured","website":"https://www.giornico.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.giornico.ch/Convocazioni-e-risoluzioni-del-Consiglio-comunale-9d3edf00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5076,"name":"Personico","canton":"TI","status":"candidate","website":"https://www.personico.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.personico.ch/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2026-02-09","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 11 files match, newest 2026-02-09, e.g. 'CC_20260209_Pubblicazione_risoluzioni'; body guessed from the URL"}]},{"bfs_id":5077,"name":"Pollegio","canton":"TI","status":"not_examined","website":"https://www.pollegio.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.pollegio.ch/Consiglio-Comunale); 2026-09-13 Ticino archive review: 79 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5079,"name":"Quinto","canton":"TI","status":"candidate","website":"https://www.tiquinto.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tiquinto.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 27 files match, newest 2026-03-16, e.g. '2026 Verbale 16 marzo'; body guessed from the URL"}]},{"bfs_id":5091,"name":"Ascona","canton":"TI","status":"needs_feature","website":"https://www.ascona.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"Consiglio comunale; 20 sessions on page 1 alone (Oct 2021 to Jun 2026), about 42 sessions over 3 pages 2012-2026; 'Verbale delle risoluzioni' next to it; wave 2: context: row does not reach the date; needs the preceding-text date rule; 2026-09-13 Ticino archive review: 176 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"needs_feature","listing_url":"https://www.ascona.ch/Sedute-del-Consiglio-Comunale","from":"2021-10-05","to":"2026-06-09","cadence":null,"obstacle":"context: row tried: 18 'Verbale delle discussioni' found on page 1, 0 dated; the anchor's closest tr is the row of an inner one-cell table, the session date is an h3 in the preceding sibling tr of an ancestor table; one anchor says 'discussioni' but its URL says 'risoluzioni' (site error)","how":"date from the nearest preceding text (context: preceding); entry ready: a.ElelinkLink-Doc with text_regex ^Verbale delle discussioni; the pager says 42 sessions over 3 pages (ris_pg=1, ris_pg=2; pages 2 and 3 not fetched); Crawl-delay 30"}]},{"bfs_id":5096,"name":"Brione sopra Minusio","canton":"TI","status":"configured","website":"http://www.brione.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.brione.ch/Risoluzioni-del-Consiglio-Comunale-94812900","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5097,"name":"Brissago","canton":"TI","status":"candidate","website":"http://www.brissago.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.brissago.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2021-10-24","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 5 files match, newest 2021-10-24, e.g. '24.10.21 &#8211; Verbale delle discussioni'; body guessed from the URL"}]},{"bfs_id":5108,"name":"Gordola","canton":"TI","status":"configured","website":"https://www.gordola.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"published resolutions of the Consiglio comunale (decision record), no verbatim Verbali online","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.gordola.ch/Risoluzioni-Consiglio-comunale-8ecf0300","from":"2010-03-29","to":"2026-06-08","cadence":null,"obstacle":null,"how":"html_links, 1 hop, paged listing_urls"}]},{"bfs_id":5112,"name":"Lavertezzo","canton":"TI","status":"candidate","website":"https://www.lavertezzo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links; 2026-09-13 bounded archive review: public PDF links found, but sampled document paths are disallowed by robots.txt. No archive source added. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.\n\n2026-09-26 coverage review: Reviewed official public municipal documents and representative robots-permitted PDF bytes. Generic numeric file downloads and JDownloads routes retain normal byte validation and source provenance.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lavertezzo.ch/documenti-albo-comunale/verbali-legislativo/anno-2017","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Anno 2017' has 14 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5113,"name":"Locarno","canton":"TI","status":"upstream_only","website":"https://www.locarno.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_5113.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":5115,"name":"Losone","canton":"TI","status":"configured","website":"http://www.losone.ch","vendor":"custom","reachable":true,"checked":"2026-09-11","checked_by":"Codex, live listing and PDF review","notes":"Broader archive scope authorised on 2026-09-11. Listing and one PDF verified; mixed document types and unknown dates are allowed, with no inferred decision tags. Coordinates derived from repository municipality polygons. Council documents identify the Consiglio comunale, hence parliament rather than the probe’s guessed assembly.","publications":[{"body":"parliament","kind":"documents","status":"configured","listing_url":"https://www.losone.ch/Verbali-76816f00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links; public municipal PDF archive including related documents; one actual PDF checked"}]},{"bfs_id":5117,"name":"Mergoscia","canton":"TI","status":"not_examined","website":"https://mergoscia.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":5118,"name":"Minusio","canton":"TI","status":"configured","website":"http://www.minusio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; custom-a batch: not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; result taken from docs/VENDOR-PATTERNS.md: table rows 'Verbale Consiglio comunale 15.06.2026' -> /Verbale-Consiglio-comunale-15062026-603d0a00?i=1&pannorg=5435&panntime=1788853389, served as application/pdf (confirmed %PDF-1.7), 16 verbali 2024-2026, 16 found 16 dated; whether panntime is stable across renders was not tested (custom-b found it volatile on sibling sites); register guess: configured on the strength of the offline extract_links verification only, no crawler run, no communes.yaml entry","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.minusio.ch/Verbali-09cb0900","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5120,"name":"Muralto","canton":"TI","status":"not_examined","website":"https://www.muralto.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://www.muralto.ch/Consiglio-comunale/IT-f342b400, https://www.muralto.ch/Sedute-del-Consiglio-comunale/IT-3f656400, https://www.muralto.ch/Sedute-del-Consiglio-comunale/Pubblicazione-delle-risoluzioni-Consiglio-comunale-del-22-giugno-2026-58f4e600?i=1&MasterId=g1_667); 2026-09-13 Ticino archive review: 212 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5121,"name":"Orselina","canton":"TI","status":"not_examined","website":"http://www.orselina.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.orselina.ch/downdoc.php?id_doc=4426&lng=1&i=1&vis=2&rif=41b0c919d5); 2026-09-13 Ticino archive review: 18 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5125,"name":"Ronco sopra Ascona","canton":"TI","status":"not_examined","website":"http://www.ronco-s-ascona.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://ronco-s-ascona.ch/istituzione/consiglio-comunale/, https://ronco-s-ascona.ch/albo-comunale/consiglio-comunale/); 2026-09-13 Ticino archive review: robots check blocked collection; no new source configured. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5131,"name":"Tenero-Contra","canton":"TI","status":"not_examined","website":"https://www.tenero-contra.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (http://www.tenero-contra.ch/Risoluzioni-del-Consiglio-Comunale-a0f22a00, http://www.tenero-contra.ch/Risoluzioni-di-Municipio-0d733d00, http://www.tenero-contra.ch/Risoluzioni-municipali-del-10-e-17-agosto-2026-6fcbe200?i=1); 2026-09-13 Ticino archive review: 87 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md. Corrected registered address from http://www.tenero-contra.ch to https://www.tenero-contra.ch.","publications":[]},{"bfs_id":5136,"name":"Onsernone","canton":"TI","status":"candidate","website":"http://www.onsernone.swiss","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.onsernone.swiss/Verbali-Consiglio-Comunale-e9f4e000","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali Consiglio Comunale' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5138,"name":"Cugnasco-Gerra","canton":"TI","status":"candidate","website":"https://www.cugnasco-gerra.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.cugnasco-gerra.ch/Bollettini-risoluzioni-del-Municipio-19c5fc00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni del Municipio' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5141,"name":"Agno","canton":"TI","status":"configured","website":"https://www.agno.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"'Pubblicazione risoluzioni' per session (decision record); sibling system of the Ticino CMS; links (downdoc.php?id_doc=...&pannorg=4790&panntime=...) carry a volatile panntime= parameter, needs strip_params","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.agno.ch/index.php?node=318&lng=1&rif=6055cba7a6","from":"2021-12-13","to":"2026-06-10","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5143,"name":"Aranno","canton":"TI","status":"not_examined","website":"https://www.aranno.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://www.aranno.ch/Consiglio-comunale-f342b400, https://www.aranno.ch/Sedute-del-Consiglio-comunale-04399800, https://www.aranno.ch/Pubblicazione-risoluzioni-CC-del-18052026-4e150800?i=1&MasterId=g1_120); 2026-09-13 Ticino archive review: 101 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5144,"name":"Arogno","canton":"TI","status":"candidate","website":"https://www.arogno.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.arogno.ch/scopri/documenti/decisioni-del-consiglio-comunale","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: 38 dated PDF links on the page, newest 2026-06-18, e.g. 'Avviso decisioni del Consiglio Comunale del 18 giugno 2026'; body guessed from the URL"}]},{"bfs_id":5148,"name":"Bedano","canton":"TI","status":"candidate","website":"http://www.bedano.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.bedano.ch/Verbali-Consiglio-Comunale-89914c00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali Consiglio Comunale' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5151,"name":"Bioggio","canton":"TI","status":"not_examined","website":"http://www.bioggio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 10 pages tested (https://www.bioggio.ch/8-settembre-2026-estratto-risoluzioni-municipali-640f8f00?i=1&vis=2, https://www.bioggio.ch/1-settembre-2026-estratto-risoluzioni-municipali-45977b00?i=1&vis=2, https://www.bioggio.ch/Consiglio-Comunale?vis=2); 2026-09-13 Ticino archive review: 170 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5154,"name":"Bissone","canton":"TI","status":"candidate","website":"https://bissone.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://bissone.ch/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2026-02-23","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 24 files match, newest 2026-02-23, e.g. 'Pubblicazione-risoluzioni-seduta-23.02.2026'; body guessed from the URL"}]},{"bfs_id":5160,"name":"Brusino Arsizio","canton":"TI","status":"candidate","website":"https://www.brusinoarsizio.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.brusinoarsizio.ch/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2020-12-21","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2020-12-21, e.g. 'Risoluzioni Consiglio Comunale del 21 dicembre 2020'; body guessed from the URL"}]},{"bfs_id":5161,"name":"Cademario","canton":"TI","status":"not_examined","website":"https://www.cademario.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.cademario.ch/Estratto-risoluzioni-seduta-di-Municipio-del-31082026-973c1a00?i=1, https://www.cademario.ch/Estratto-risoluzioni-seduta-di-Municipio-del-17082026-dfd45800?i=1, https://www.cademario.ch/Estratto-risoluzioni-seduta-di-Municipio-del-10082026-6bd21400?i=1); 2026-09-13 Ticino archive review: 21 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5162,"name":"Cadempino","canton":"TI","status":"candidate","website":"http://www.cadempino.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cadempino.ch/comune/risoluzioni/","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 26 dated PDF links on the page, newest 2026-06-15, e.g. 'Risoluzioni Consiglio comunale del 15.06.2026'; body guessed from the URL"}]},{"bfs_id":5167,"name":"Canobbio","canton":"TI","status":"candidate","website":"http://www.canobbio.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media; 2026-09-13 bounded archive review: 42 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://canobbio.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2019-07-01","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 12 files match, newest 2019-07-01, e.g. 'Verbale seduta ordinaria Consiglio comunale 01.07.2019'; body guessed from the URL"}]},{"bfs_id":5171,"name":"Caslano","canton":"TI","status":"configured","website":"https://www.caslano.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.caslano.ch/Verbali-Consiglio-Comunale-fea0a100","from":"2021-05-11","to":"2025-12-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5176,"name":"Comano","canton":"TI","status":"not_examined","website":"http://www.comano.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.comano.ch/Bollettino-risoluzioni-Municipali-07092026-01306c00?i=1, https://www.comano.ch/Bollettino-risoluzioni-Municipali-31082026-f8a32b00?i=1, https://www.comano.ch/Bollettino-risoluzioni-municipali-20082026-f875e500?i=1); 2026-09-13 Ticino archive review: 611 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5180,"name":"Cureglia","canton":"TI","status":"candidate","website":"https://www.cureglia.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cureglia.ch/Risoluzioni-del-Consiglio-comunale-e9f4e000","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni del Consiglio comunale' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5186,"name":"Grancia","canton":"TI","status":"candidate","website":"https://www.grancia.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grancia.ch/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-27","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 14 files match, newest 2026-04-27, e.g. 'Risoluzioni-CC-27.04.2026'; body guessed from the URL"}]},{"bfs_id":5187,"name":"Gravesano","canton":"TI","status":"candidate","website":"http://www.gravesano.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gravesano.ch/Risoluzioni-35668a00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5189,"name":"Lamone","canton":"TI","status":"candidate","website":"http://www.lamone.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 138 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lamone.ch/istituzioni/documenti-cc/","from":null,"to":"2025-10-27","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2025-10-27, e.g. ''; body guessed from the URL"}]},{"bfs_id":5192,"name":"Lugano","canton":"TI","status":"configured","website":"https://www.lugano.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lugano.ch/consiglio-comunale/Calendario-sedute/content/0.html?ajax=true&currentPage={1..24}","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5193,"name":"Magliaso","canton":"TI","status":"candidate","website":"http://www.magliaso.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.magliaso.ch/Risoluzioni-sedute-municipali-3ebcda00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni sedute municipali' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5194,"name":"Manno","canton":"TI","status":"not_examined","website":"http://www.manno.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.manno.ch/manno/Il-Comune/Consiglio-comunale.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5196,"name":"Massagno","canton":"TI","status":"not_examined","website":"http://www.massagno.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.massagno.ch/Consiglio-comunale); 2026-09-13 Ticino archive review: 235 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5198,"name":"Melide","canton":"TI","status":"not_examined","website":"https://www.melide.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5199,"name":"Mezzovico-Vira","canton":"TI","status":"candidate","website":"http://www.mezzovico-vira.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mezzovico-vira.ch/Verbali-discussioni-21d1c000","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali discussioni' has 6 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5203,"name":"Morcote","canton":"TI","status":"not_examined","website":"https://www.morcote.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript; 2026-09-13 Ticino archive review: 40 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5205,"name":"Muzzano","canton":"TI","status":"candidate","website":"https://www.muzzano.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.muzzano.ch/Pubblicazione-risoluzioni-Consiglio-comunale-c4943900","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Pubblicazione risoluzioni' has 25 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5206,"name":"Neggio","canton":"TI","status":"candidate","website":"http://www.neggio.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.neggio.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-18","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 9 files match, newest 2025-12-18, e.g. 'verbale firmato_20251218_0001'; body guessed from the URL"}]},{"bfs_id":5208,"name":"Origlio","canton":"TI","status":"candidate","website":"https://www.origlio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.origlio.ch/comune/il-consiglio-comunale/risoluzioni","from":null,"to":"2025-06-16","cadence":null,"obstacle":null,"how":"probe: 64 dated PDF links on the page, newest 2025-06-16, e.g. ''; body guessed from the URL"}]},{"bfs_id":5210,"name":"Paradiso","canton":"TI","status":"blocked_robots","website":"https://paradiso.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"34 risoluzioni PDFs discovered; entry not shipped\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[{"body":"parliament","kind":"decisions","status":"blocked_robots","listing_url":"https://paradiso.ch/risoluzioni-del-consiglio-comunale/","from":"2014-04-28","to":"2026-06-17","cadence":null,"obstacle":"robots.txt has 'Disallow: /cms/wp-content/' (and /wp-content/), so the download is refused","how":"ask commune to allow /cms/wp-content/ in robots.txt"}]},{"bfs_id":5212,"name":"Ponte Capriasca","canton":"TI","status":"configured","website":"https://www.pontecapriasca.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"year select 2024-2026 (form, not tested); docs/VENDOR-PATTERNS.md only","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://pontecapriasca.ch/Sedute-del-Consiglio-comunale","from":"2024","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":5214,"name":"Porza","canton":"TI","status":"not_examined","website":"https://www.porza.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 404; 2026-09-13 Ticino archive review: 103 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md. Corrected registered address from http://www.ti.ch/porza to https://www.porza.ch.","publications":[]},{"bfs_id":5216,"name":"Pura","canton":"TI","status":"not_examined","website":"https://www.pura.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.pura.ch/Risoluzioni-del-Consiglio-comunale-5089f900, https://www.pura.ch/Consiglio-Comunale-fcc18300, https://www.pura.ch/Documenti-del-Consiglio-comunale-73449400); 2026-09-13 Ticino archive review: 167 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5221,"name":"Savosa","canton":"TI","status":"not_examined","website":"http://www.savosa.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.savosa.ch/Riesame-della-risoluzione-governativa-RG-n-5645-del-19-novembre-2025-relativa-all-approvazione-delle-varianti-del-Piano-regolatore-PR-del-Comune-di-Savosa-concernenti-alcune-varianti-puntuali-608d5f00?i=1, https://www.savosa.ch/Consiglio-comunale-740c0c00); 2026-09-13 Ticino archive review: 68 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5225,"name":"Sorengo","canton":"TI","status":"candidate","website":"https://www.sorengo.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.sorengo.ch/Verbali-CC-294ae700","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali CC' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5226,"name":"Capriasca","canton":"TI","status":"candidate","website":"https://www.capriasca.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.capriasca.ch/Estratti-delle-risoluzioni-e-ordini-del-giorno-2d7f5f00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Estratti delle risoluzioni e ordini del ' has 16 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5227,"name":"Torricella-Taverne","canton":"TI","status":"configured","website":"https://www.torricella-taverne.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.torricella-taverne.ch/verbali-e-risoluzioni-cc/","from":"2021-03-29","to":"2025-12-22","cadence":null,"obstacle":"partial: Verbali delle discussioni of the Consiglio comunale; 6 undated; probe hit correct; report status ok, register partial (29 percent undated)","how":"html_links, 1 hop, url_regex verb*.pdf (icon anchors with empty text), titles fall back to the file name"}]},{"bfs_id":5230,"name":"Vernate","canton":"TI","status":"candidate","website":"http://www.vernate.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vernate.ch/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 38 files match, newest 2026-06-10, e.g. 'Risoluzioni 10.06.2026'; body guessed from the URL"}]},{"bfs_id":5231,"name":"Vezia","canton":"TI","status":"candidate","website":"https://www.vezia.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links; 2026-09-13 Ticino archive review: 71 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.vezia.ch/Verbali-Consiglio-Comunale-e9f4e000","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali Consiglio Comunale' has 19 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5233,"name":"Vico Morcote","canton":"TI","status":"candidate","website":"https://www.vicomorcote.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vicomorcote.ch/Sedute-e-risoluzioni-3b232300","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Sedute e risoluzioni' has 72 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5236,"name":"Collina d'Oro","canton":"TI","status":"configured","website":"https://www.collinadoro.swiss","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"the homepage is a splash page ('Entra'), the site starts at /Home","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.collinadoro.swiss/Verbali-delle-sedute","from":"2021-05-17","to":"2026-04-20","cadence":null,"obstacle":null,"how":"html_links, 1 hop, paged listing_urls"}]},{"bfs_id":5237,"name":"Alto Malcantone","canton":"TI","status":"candidate","website":"https://www.altomalcantone.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.altomalcantone.ch/Verbali-sedute-8e0b0200","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali sedute' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5238,"name":"Monteceneri","canton":"TI","status":"configured","website":"https://www.monteceneri.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"'Pubblicazione risoluzioni' per session (decision record); no verbatim Verbali","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.monteceneri.ch/it/consiglio-comunale","from":"2010-12-14","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop, 'Sedute' accordion"}]},{"bfs_id":5239,"name":"Tresa","canton":"TI","status":"candidate","website":"https://www.tresa.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tresa.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 6 files match, newest 2026-06-10, e.g. '2026.06.10 &#8211; Risoluzioni Verbale'; body guessed from the URL"}]},{"bfs_id":5240,"name":"Val Mara","canton":"TI","status":"candidate","website":"https://www.valmara.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.valmara.ch/Consiglio-Comunale#p3942","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni' has 15 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5242,"name":"Balerna","canton":"TI","status":"candidate","website":"http://www.balerna.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.balerna.ch/Estratto-risoluzioni-CC-eef54900","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Estratto risoluzioni CC' has 55 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5249,"name":"Castel San Pietro","canton":"TI","status":"candidate","website":"https://castelsanpietro.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://castelsanpietro.ch/Estratto-risoluzione-del-Consiglio-comunale-94812900","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Estratto risoluzione del Consiglio comun' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5250,"name":"Chiasso","canton":"TI","status":"configured","website":"https://www.chiasso.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Risoluzioni (decision lists) of the Consiglio comunale, one PDF per session; no full verbali online; also in docs/VENDOR-PATTERNS.md: 7 found 7 dated on the current legislature page offline","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.chiasso.ch/documenti/risoluzioni-consiglio-comunale/","from":"2021-05-17","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (index page -> legislature sub-pages)"}]},{"bfs_id":5251,"name":"Coldrerio","canton":"TI","status":"candidate","website":"https://coldrerio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://coldrerio.ch/Pubblicazione-risoluzioni-CC-3f656400","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Pubblicazione risoluzioni CC' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5254,"name":"Mendrisio","canton":"TI","status":"upstream_only","website":"https://mendrisio.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed official public municipal documents and representative robots-permitted PDF bytes. Main municipal notices are collected; the separate legislative JSON API needs a durable adapter and is not represented as collected.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_5254.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":5257,"name":"Morbio Inferiore","canton":"TI","status":"configured","website":"https://www.morbioinf.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"'Verbale del riassunto delle discussioni' per session; the Risoluzioni on the same page are excluded","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.morbioinf.ch/Verbali-Consiglio-Comunale-94812900","from":"2022-06-14","to":"2025-12-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop, paged listing_urls"}]},{"bfs_id":5260,"name":"Novazzano","canton":"TI","status":"not_examined","website":"https://novazzano.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":5263,"name":"Riva San Vitale","canton":"TI","status":"not_examined","website":"https://www.rivasanvitale.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.rivasanvitale.ch/Consiglio-comunale-e6086a00, https://www.rivasanvitale.ch/Convocazione-seduta-Consiglio-comunale-12-ottobre-2026-bc705b00?i=1, https://www.rivasanvitale.ch/Area-Consiglio-Comunale-38d19f00)\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[]},{"bfs_id":5266,"name":"Stabio","canton":"TI","status":"configured","website":"https://stabio.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Consiglio comunale publishes 'Estratto delle risoluzioni' (decision extracts) per session, not full verbali; anchor text carries the size ('[254 KB PDF]')","publications":[{"body":"parliament","kind":"extracts","status":"configured","listing_url":"https://stabio.ch/istituzioni/consiglio-comunale/sedute-consiglio-comunale","from":"2016-05-09","to":"2026-06-08","cadence":null,"obstacle":null,"how":"html_links, 3 listing_urls (current page plus archive pages 2016-2021, 2021-2024), date from file name dd.mm.yyyy"}]},{"bfs_id":5268,"name":"Vacallo","canton":"TI","status":"candidate","website":"https://www.vacallo.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vacallo.ch/Risoluzioni-35657f00","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni' has 34 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5269,"name":"Breggia","canton":"TI","status":"candidate","website":"http://www.comunebreggia.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.comunebreggia.ch/Verbali-Consiglio-Comunale-94812900","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Verbali Consiglio Comunale' has 20 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5281,"name":"Biasca","canton":"TI","status":"candidate","website":"http://www.biasca.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.biasca.ch/Pubblicazione-risoluzioni-2b0b3300","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Pubblicazione risoluzioni' has 3 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5287,"name":"Riviera","canton":"TI","status":"configured","website":"https://www.comuneriviera.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"same menu slug Verbali-Consiglio-Comunale-e9f4e000 as Gambarogno","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.comuneriviera.ch/Verbali-Consiglio-Comunale-e9f4e000","from":"2017-05-23","to":"2025-12-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop, paged listing_urls"}]},{"bfs_id":5304,"name":"Bosco/Gurin","canton":"TI","status":"not_examined","website":"https://www.bosco-gurin.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page; 2026-09-13 Ticino archive review: 16 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5307,"name":"Campo","canton":"TI","status":"not_published","website":"https://www.campo-vallemaggia.ch/","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"Albo comunale empty; ask commune; docs/VENDOR-PATTERNS.md only; 53 inhabitants; 2026-09-13 Ticino archive review: 18 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5309,"name":"Cerentino","canton":"TI","status":"not_examined","website":"https://cerentino.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://cerentino.ch/Assemblea-comunale); 2026-09-13 Ticino archive review: 29 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5310,"name":"Cevio","canton":"TI","status":"candidate","website":"https://www.cevio.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cevio.ch/wp-json/wp/v2/media?search=verbale&mime_type=application/pdf&per_page=20","from":null,"to":"2025-06-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 7 files match, newest 2025-06-16, e.g. '2025.06.16 Verbale seduta ordinaria definitivo'; body guessed from the URL"}]},{"bfs_id":5315,"name":"Linescio","canton":"TI","status":"not_examined","website":"https://www.linescio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.linescio.ch/Assemblea-comunale_it); 2026-09-13 Ticino archive review: 137 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5317,"name":"Maggia","canton":"TI","status":"candidate","website":"http://www.maggia.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.maggia.ch/it/albo-comunale/2017-04-26-risoluzioni-consiglio-consortile-csbv","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5323,"name":"Lavizzara","canton":"TI","status":"candidate","website":"https://lavizzara.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://lavizzara.ch/it_CH/albo/risoluzioni-del-consiglio-comunale","from":null,"to":"2025-12-18","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2025-12-18, e.g. 'Risoluzioni del Consiglio comunale 18.12.2025'; body guessed from the URL"}]},{"bfs_id":5324,"name":"Avegno Gordevio","canton":"TI","status":"candidate","website":"http://www.avegnogordevio.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.avegnogordevio.ch/it/documentazione-consiglio-comunale","from":null,"to":"2024-12-17","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2024-12-17, e.g. ''; body guessed from the URL"}]},{"bfs_id":5395,"name":"Lema","canton":"TI","status":"candidate","website":"https://www.lema.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 Ticino archive review: observed official document links and a PDF signature verified; linked-sources.yaml collects untagged PDFs. Opaque file URLs do not imply a date or document category.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lema.ch/Risoluzioni-del-CC","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Risoluzioni del CC' has 6 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5396,"name":"Terre di Pedemonte","canton":"TI","status":"not_examined","website":"https://www.pedemonte.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.pedemonte.ch/Consiglio-Comunale-fcc18300, https://www.pedemonte.ch/Assemblea-Genitori-5178a400, https://www.pedemonte.ch/Verbale-gruppo-genitori-b8606b00); 2026-09-13 Ticino archive review: 39 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":5397,"name":"Centovalli","canton":"TI","status":"candidate","website":"https://centovalli.swiss/","vendor":"wordpress","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: wp_media\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://intragna.ch/ to https://centovalli.swiss/. Unfiltered WordPress PDF endpoint reports 1366 media items; configured for raw collection. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://centovalli.swiss/wp-json/wp/v2/media?search=risoluzioni&mime_type=application/pdf&per_page=20","from":null,"to":"2023-05-03","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 6 files match, newest 2023-05-03, e.g. 'Risoluzioni-assemblea-del-3-maggio-23'; body guessed from the URL"}]},{"bfs_id":5398,"name":"Gambarogno","canton":"TI","status":"configured","website":"https://www.gambarogno.ch","vendor":"ticino-cms","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"paging works only with the full parameter string including ris_n (total count), which drifts as sessions are added (page 0 is the bare URL, the short form ?ris_pg=1 returns page 0 again)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.gambarogno.ch/Verbali-Consiglio-Comunale-e9f4e000","from":"2010-05-19","to":"2025-10-13","cadence":null,"obstacle":null,"how":"html_links, 1 hop, paged listing_urls ris_pg={1..3} with the full parameter string"}]},{"bfs_id":5399,"name":"Verzasca","canton":"TI","status":"not_examined","website":"https://www.verzasca.swiss","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.verzasca.swiss/Consiglio-comunale-ba9c8600, https://www.verzasca.swiss/Documenti-Consiglio-comunale-d5961d00, https://www.verzasca.swiss/Risoluzioni-Consiglio-comunale-del-15062026-c7c14700?i=1); 2026-09-13 Ticino archive review: 96 same-site document candidates observed; verified PDF seed and reviewed listings/pagination configured in linked-sources.yaml for recurring collection. Broad PDFs remain untagged; candidate count is not a downloaded total. See docs/TICINO-GAPS-REVIEW-2026-09-13.md.","publications":[]},{"bfs_id":1201,"name":"Altdorf","canton":"UR","status":"not_published","website":"https://www.altdorf.ch","vendor":"craft","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Craft CMS (SEOmatic)\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Observed flat archive detail URLs are explicit seeds; further unseen flat routes require review.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://altdorf.ch/organisation/politik/gemeindeversammlung/letzte-versammlungen","from":null,"to":null,"cadence":null,"obstacle":"pages for the next and last assemblies carry no protocol PDFs; the word Protokoll does not occur on the politics pages","how":"ask commune"}]},{"bfs_id":1202,"name":"Andermatt","canton":"UR","status":"candidate","website":"https://www.gemeinde-andermatt.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.gemeinde-andermatt.ch/politik/gemeindeversammlung.html/30","from":null,"to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2026-05-21, e.g. 'Beschlussprotokoll'; body guessed from the URL"}]},{"bfs_id":1203,"name":"Attinghausen","canton":"UR","status":"candidate","website":"http://www.attinghausen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.attinghausen.ch/index.php/politik/gemeindeversammlung","from":null,"to":"2026-05-18","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2026-05-18, e.g. 'Beschlussprotokoll'; body guessed from the URL"}]},{"bfs_id":1205,"name":"Bürglen","canton":"UR","status":"candidate","website":"https://www.buerglen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buerglen.ch/sitzung","from":"2019","to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 15 sessions since 2019; minutes attached to the session pages as 'Protokoll GV 21.05.2026_Beschlüsse'"}]},{"bfs_id":1206,"name":"Erstfeld","canton":"UR","status":"not_examined","website":"https://www.erstfeld.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://erstfeld.ch/politik/gemeindeversammlungen)","publications":[]},{"bfs_id":1207,"name":"Flüelen","canton":"UR","status":"candidate","website":"https://flueelen.ch/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from https://www.fluelen.ch to https://flueelen.ch/. 54 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://flueelen.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: 26 dated PDF links on the page, newest 2026-05-28, e.g. 'Bericht und Beschlüsse vom 28. Mai 2026 PDF'; body guessed from the URL"}]},{"bfs_id":1208,"name":"Göschenen","canton":"UR","status":"not_examined","website":"https://www.goeschenen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.goeschenen.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":1209,"name":"Gurtnellen","canton":"UR","status":"not_examined","website":"https://www.gurtnellen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1210,"name":"Hospental","canton":"UR","status":"not_examined","website":"https://www.hospental.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":1211,"name":"Isenthal","canton":"UR","status":"configured","website":"https://www.isenthal.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; 'Protokoll 29. April 2026' plus 'Einladung und Botschaft' per session; file names carry no date (Protokoll-GV-2026-1.pdf), the anchor text does; 21 found, 20 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://isenthal.ch/politik/gemeinde-versammlung/","from":"2017","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":1212,"name":"Realp","canton":"UR","status":"not_examined","website":"https://www.realp.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1213,"name":"Schattdorf","canton":"UR","status":"needs_feature","website":"https://www.schattdorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"files under /media/municipality/documents/Gemeindeversammlung/; wave 2: context: row does not reach the date; needs the preceding-text date rule\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"assembly","kind":"minutes","status":"needs_feature","listing_url":"https://schattdorf.ch/bewirken/offene-dorfgemeinde","from":"2024-04-22","to":"2026-04-20","cadence":null,"obstacle":"context: row tried: 5 Protokoll found (plus 5 Beschlussprotokoll, 5 Botschaft), 0 dated; the anchors sit in div.downloads__entry (no tr, li or p anywhere in the section); the date is the h3 in div.downloads__header of the same div.downloads; file names are Protokoll_<year>-<n>.pdf","how":"date from the nearest preceding text (context: preceding); entry ready: div.downloads a[href$='.pdf'] with url_regex /Protokoll_\\d{4}-\\d+\\.pdf$"}]},{"bfs_id":1214,"name":"Seedorf","canton":"UR","status":"candidate","website":"http://www.seedorf-uri.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.seedorf-uri.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-22","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2026-05-22, e.g. 'Beschluss-Protokoll'; body guessed from the URL"}]},{"bfs_id":1215,"name":"Seelisberg","canton":"UR","status":"candidate","website":"https://www.seelisberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.seelisberg.ch/politik/gemeindeversammlung","from":null,"to":"2025-11-28","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2025-11-28, e.g. 'Beschlussprotokoll_GV_28.11.2025'; body guessed from the URL"}]},{"bfs_id":1216,"name":"Silenen","canton":"UR","status":"not_examined","website":"https://www.silenen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1217,"name":"Sisikon","canton":"UR","status":"not_examined","website":"http://www.sisikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":1218,"name":"Spiringen","canton":"UR","status":"candidate","website":"http://www.spiringen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://spiringen.ch/politik/gemeindeversammlung","from":null,"to":"2026-05-21","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-05-21, e.g. 'Botschaft für Gemeindeversammlung'; body guessed from the URL"}]},{"bfs_id":1219,"name":"Unterschächen","canton":"UR","status":"not_examined","website":"https://www.unterschaechen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.unterschaechen.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":1220,"name":"Wassen","canton":"UR","status":"not_examined","website":"https://www.wassen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5401,"name":"Aigle","canton":"VD","status":"not_published","website":"https://www.aigle.ch","vendor":"quicksite","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal; Quicksite does not expose the conseilcommunal document module here\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://www.aigle.ch/N387/conseil-communal.html","from":null,"to":null,"cadence":null,"obstacle":"only 'Dates des seances'; no PV page, no PDFs","how":"ask commune"}]},{"bfs_id":5402,"name":"Bex","canton":"VD","status":"blocked_js","website":"https://www.bex.ch","vendor":"quicksite","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"Conseil communal; Conseil communal; wave 2: the PV list is a Miru document viewer (JavaScript) on bex.swisscommune.ch\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Existing homepage retained; publication access reviewed. 6 reviewed document URLs configured as untagged raw documents. The separate Miru minutes viewer remains unavailable to the crawler under its robots rules. Existing minute-specific blocked status is preserved. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://bex.swisscommune.ch/","from":null,"to":null,"cadence":null,"obstacle":"the PVs are behind bex.swisscommune.ch, a 1 KB shell that loads a viewer script from ch.miru.digital (webservices_json.php?...&miruService=getViewerScript); nothing is server-rendered","how":"linked from https://www.bex.ch/N21772/proces-verbaux-du-conseil-communal.html ('peuvent etre consultes en suivant ce lien'); the Ollon-style conseilcommunal document module answers 404 on bex.ch; the Miru JSON service may expose a document list (third-party host, not probed)"}]},{"bfs_id":5403,"name":"Chessel","canton":"VD","status":"candidate","website":"http://www.chessel.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.chessel.ch/officiel/autorites/conseil-general","from":null,"to":"2026-04-20","cadence":null,"obstacle":null,"how":"probe: 34 dated PDF links on the page, newest 2026-04-20, e.g. '20.04.2026 - PV Conseil général'; body guessed from the URL"}]},{"bfs_id":5404,"name":"Corbeyrier","canton":"VD","status":"candidate","website":"https://www.corbeyrier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://corbeyrier.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 18 files match, newest 2026-06-19, e.g. 'Extrait du PV du Conseil Communal de Corbeyrier Séance du 19'; body guessed from the URL"}]},{"bfs_id":5405,"name":"Gryon","canton":"VD","status":"not_examined","website":"https://www.gryon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5406,"name":"Lavey-Morcles","canton":"VD","status":"not_examined","website":"http://www.lavey.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5407,"name":"Leysin","canton":"VD","status":"configured","website":"https://leysin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; file names PV-seance-dd.mm.yyyy-approuve.pdf; Crawl-delay 10","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://leysin.ch/politique/conseil-communal/","from":"2016-06-24","to":"2026-06-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5408,"name":"Noville","canton":"VD","status":"candidate","website":"https://www.noville.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.noville.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-07","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 46 files match, newest 2026-04-07, e.g. 'PV_ELECTION_SYNDIC_07.04.2026'; body guessed from the URL"}]},{"bfs_id":5409,"name":"Ollon","canton":"VD","status":"configured","website":"https://www.ollon.ch","vendor":"quicksite","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal; Quicksite 'conseilcommunal' document module, server-rendered, paginated (10 per page), filterable by document type (5 = Proces-verbal); two anchors per document (icon plus file name PV_CC_24.04.2026_Annexe.pdf); downloads via download.asp?d=<id> are served as PDF; 52 of 56 dated (2013 files undated)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.ollon.ch/conseilcommunal/public/documents/recherche/?lngDocumentTypeFK=5&page={1..6}","from":"2014-06-05","to":"2026-04-24","cadence":null,"obstacle":null,"how":"html_links, 1 hop, page range {1..6}, text_regex ^PV keeps the file-name anchor"}]},{"bfs_id":5410,"name":"Ormont-Dessous","canton":"VD","status":"not_examined","website":"https://www.ormont-dessous.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5411,"name":"Ormont-Dessus","canton":"VD","status":"candidate","website":"http://www.ormont-dessus.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ormont-dessus.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-11-30","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 23 files match, newest 2025-11-30, e.g. 'PV_30.11.2025'; body guessed from the URL"}]},{"bfs_id":5412,"name":"Rennaz","canton":"VD","status":"candidate","website":"http://www.rennaz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://rennaz.ch/legislature-2021-2026-proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions municipales d'intérêt général' with 5 dated decisions links, e.g. 'Décisions du 1er semestre du 1er janvier au 30 juin 2024'"}]},{"bfs_id":5413,"name":"Roche","canton":"VD","status":"candidate","website":"http://www.roche-vd.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.roche-vd.ch/conseilcommunal/public/documents/recherche/?strThemeIdentity=&strThemeDescription=&lngDocumentTypeFK=105","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV' has 3 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5414,"name":"Villeneuve","canton":"VD","status":"candidate","website":"https://www.villeneuve.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.villeneuve.ch/seance-ordre-du-jour-pv","from":"2021","to":"2026-09-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 70 sessions since 2021; minutes attached to the session pages as 'PV de la Préfecture - Assermentation des Autorités du 19.06.2026'"}]},{"bfs_id":5415,"name":"Yvorne","canton":"VD","status":"candidate","website":"https://www.yvorne.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.yvorne.ch/N509/decisions-municipales-d-interet-general.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions municipales d'intérêt général' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5422,"name":"Aubonne","canton":"VD","status":"configured","website":"https://www.aubonne.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; one page pairing 'Ordre du jour' and 'Proces-verbal' per session; 8 older PVs undated","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.aubonne.ch/officiel/conseil-communal/agenda-des-seances-proces-verbal","from":"2016-01-19","to":"2026-08-13","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from file name PV_2026.01.27.pdf"}]},{"bfs_id":5423,"name":"Ballens","canton":"VD","status":"candidate","website":"http://www.ballens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://ballens.ch/proces-verbaux-du-conseil","from":null,"to":"2025-12-18","cadence":null,"obstacle":null,"how":"probe: 21 dated PDF links on the page, newest 2025-12-18, e.g. 'Séance du 18 décembre 2025'; body guessed from the URL"}]},{"bfs_id":5424,"name":"Berolle","canton":"VD","status":"candidate","website":"http://www.berolle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Reviewed public municipal documents and representative PDF bytes with robots checks. Filename metadata exposes opaque download handlers; no topic filters. Collection follows reviewed archive sections, including their pagination where present.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.berolle.ch/administration/municipalite/decisions-municipales","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions municipales' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5425,"name":"Bière","canton":"VD","status":"candidate","website":"https://www.biere-vd.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.biere-vd.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2023-11-30","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2023-11-30, e.g. 'Extrait_de_procès_verbal &#8211; Décisions 30.11.2023'; body guessed from the URL"}]},{"bfs_id":5426,"name":"Bougy-Villars","canton":"VD","status":"not_examined","website":"https://www.bougy-villars.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: page 'PV - Ordre du jour - Préavis - rapports et décisio' carries 4 protocol-like links without parseable dates: https://bougy-villars.ch/pv-ordre-du-jour-preavis-rapports-et-decision-2026","publications":[]},{"bfs_id":5427,"name":"Féchy","canton":"VD","status":"candidate","website":"https://www.fechy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fechy.ch/officiel/conseil/procesverbaux.php","from":null,"to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: 98 dated PDF links on the page, newest 2026-06-22, e.g. 'Séance d'installation des autorités du 22 juin 2026'; body guessed from the URL"}]},{"bfs_id":5428,"name":"Gimel","canton":"VD","status":"candidate","website":"http://www.gimel.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.gimel.ch/conseil-communal-seances-proces-verbal-preavis-rapport-2012-2013-fr9179.html","from":null,"to":"2013-06-24","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2013-06-24, e.g. 'CC, Convocation, 2013 06 24.pdf'; body guessed from the URL"}]},{"bfs_id":5429,"name":"Longirod","canton":"VD","status":"candidate","website":"http://www.longirod.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs Review 2026-09-26: Verified public Odoo construction-form download configured. Council reports use kDrive public shares; their reader remains unresolved and is not counted as collected.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.longirod.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5430,"name":"Marchissy","canton":"VD","status":"candidate","website":"https://www.marchissy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.marchissy.ch/index.php/administration/pv-du-conseil-general","from":null,"to":"2026-05-04","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2026-05-04, e.g. '10.01-cg-pv-2026-05-04'; body guessed from the URL"}]},{"bfs_id":5431,"name":"Mollens","canton":"VD","status":"candidate","website":"https://www.mollensvd.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mollensvd.ch/N529/proces-verbaux.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5434,"name":"Saint-George","canton":"VD","status":"not_examined","website":"https://www.saint-george.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[]},{"bfs_id":5435,"name":"Saint-Livres","canton":"VD","status":"not_examined","website":"https://st-livres.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: page 'Procès-verbaux - Séances - Décisions' carries 8 protocol-like links without parseable dates: https://st-livres.ch/proces-verbaux-seances-decisions","publications":[]},{"bfs_id":5436,"name":"Saint-Oyens","canton":"VD","status":"candidate","website":"http://www.saint-oyens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.saint-oyens.ch/proces-verbaux-du-conseil-general-fr80.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' has 5 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5437,"name":"Saubraz","canton":"VD","status":"candidate","website":"http://www.saubraz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://saubraz.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2025-09-25","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 2 files match, newest 2025-09-25, e.g. 'Extrait_de_procès_verbal &#8211; Décisions_25.09.2025'; body guessed from the URL"}]},{"bfs_id":5451,"name":"Avenches","canton":"VD","status":"blocked_robots","website":"https://www.commune-avenches.ch","vendor":"joomla","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"website corrected by report: www.avenches.ch (the website on file) is the tourism site, the municipal site was not found; MyCity site with server-rendered menu (tourism only), Cloudflare Turnstile loaded; wave 2: the municipal site is www.commune-avenches.ch (Joomla), found through a web search; the PV listing is readable, the downloads are blocked by robots.txt","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.commune-avenches.ch/ma-commune/conseil-communal/proces-verbaux.html","from":"2024-02-22","to":"2026-05-21","cadence":null,"obstacle":"robots.txt disallows /images/, where the PVs live (/images/CC_2021_2026/PV/PV_20260521.pdf); the crawler refuses the download (error kind robots)","how":"html_links, 1 hop: 'Proces-verbal de la seance du 21 mai 2026', 16 dated PVs 2024-2026 listed; earlier legislatures probably under other /images/ folders (not checked)"}]},{"bfs_id":5456,"name":"Cudrefin","canton":"VD","status":"candidate","website":"https://www.cudrefin.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 151 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cudrefin.ch/autorites/conseil-communal/proces-verbaux-du-conseil-communal","from":null,"to":"2026-04-30","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2026-04-30, e.g. 'Procès-verbal du 30.04.2026'; body guessed from the URL"}]},{"bfs_id":5458,"name":"Faoug","canton":"VD","status":"candidate","website":"http://www.faoug.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.faoug.ch/seances-a-venir","from":"2025","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 5 sessions since 2025; minutes attached to the session pages as '2025-12-09_CC_PV'"}]},{"bfs_id":5464,"name":"Vully-les-Lacs","canton":"VD","status":"not_examined","website":"https://www.vully-les-lacs.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5471,"name":"Bettens","canton":"VD","status":"candidate","website":"http://www.commune-bettens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.commune-bettens.ch/municipalite/archives-decisions-muni","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions municipales' has 48 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5472,"name":"Bournens","canton":"VD","status":"candidate","website":"https://www.bournens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bournens.ch/proces-verbaux-2021-2026-fr7160.html","from":null,"to":"2025-12-11","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2025-12-11, e.g. 'PV 11-12-2025'; body guessed from the URL"}]},{"bfs_id":5473,"name":"Boussens","canton":"VD","status":"candidate","website":"http://www.boussens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://boussens.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-26","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 12 files match, newest 2026-03-26, e.g. 'pv_conseil_2026_03_26'; body guessed from the URL"}]},{"bfs_id":5474,"name":"La Chaux","canton":"VD","status":"candidate","website":"https://www.lachaux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lachaux.ch/N708/proces-verbaux.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'sitemap' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5475,"name":"Chavannes-le-Veyron","canton":"VD","status":"candidate","website":"http://www.chavannes-le-veyron.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://chavannes-le-veyron.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2023-06-05","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 11 files match, newest 2023-06-05, e.g. '2023-06-05_PV'; body guessed from the URL"}]},{"bfs_id":5476,"name":"Chevilly","canton":"VD","status":"not_examined","website":"https://www.chevilly.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.chevilly.ch/autorites/le-conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5477,"name":"Cossonay","canton":"VD","status":"candidate","website":"https://www.cossonay.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Reviewed official document sections, robots rules and representative PDF bytes. Existing generic collection follows reviewed sections and includes municipal records without topic filters.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cossonay.ch/conseil-communal/decisions-du-conseil-communal","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions du conseil' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5479,"name":"Cuarnens","canton":"VD","status":"candidate","website":"https://www.cuarnens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cuarnens.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-04","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 14 files match, newest 2025-12-04, e.g. 'PV04.12.25'; body guessed from the URL"}]},{"bfs_id":5480,"name":"Daillens","canton":"VD","status":"candidate","website":"https://www.daillens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.daillens.ch/seances-du-conseil-fr442.html","from":null,"to":"2025-06-23","cadence":null,"obstacle":null,"how":"probe: 26 dated PDF links on the page, newest 2025-06-23, e.g. 'PV 23.06.25.pdf'; body guessed from the URL"}]},{"bfs_id":5481,"name":"Dizy","canton":"VD","status":"not_examined","website":"http://www.dizy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.dizy.ch/conseil-general-fr23.html)\n\n2026-09-26 coverage review: Reviewed public municipal documents and representative PDF bytes with robots checks. Filename metadata exposes opaque download handlers; no topic filters. Collection follows reviewed archive sections, including their pagination where present.","publications":[]},{"bfs_id":5482,"name":"Eclépens","canton":"VD","status":"not_published","website":"https://www.eclepens.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"WebForge; the conseil communal page has the reglement only","how":"ask commune"}]},{"bfs_id":5483,"name":"Ferreyres","canton":"VD","status":"not_examined","website":"http://www.ferreyres.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5484,"name":"Gollion","canton":"VD","status":"not_examined","website":"http://www.gollion.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":5485,"name":"Grancy","canton":"VD","status":"candidate","website":"http://www.grancy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: 71 municipal document candidates configured in linked-sources.yaml; sample PDF signature verified. Broad documents remain untagged; this is not a downloaded count or a minutes-completeness claim. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://grancy.ch/vie-politique/conseil-general/","from":null,"to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: 15 dated PDF links on the page, newest 2026-06-15, e.g. 'Conseil général 15 juin 2026 12.06.2026'; body guessed from the URL"}]},{"bfs_id":5486,"name":"L'Isle","canton":"VD","status":"candidate","website":"https://www.lisle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lisle.ch/proces-verbaux-fr207.html","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: 60 dated PDF links on the page, newest 2026-06-17, e.g. 'Séance du 17 juin 2026'; body guessed from the URL"}]},{"bfs_id":5487,"name":"Lussery-Villars","canton":"VD","status":"not_examined","website":"http://www.lussery-villars.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5488,"name":"Mauraz","canton":"VD","status":"not_examined","website":"http://www.mauraz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5489,"name":"Mex","canton":"VD","status":"candidate","website":"https://www.mex.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.mex.ch/officiel/conseil-general/2-non-categorise/66-pv-cg-2024","from":null,"to":"2024-12-09","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2024-12-09, e.g. 'Procès-verbal du Conseil général du 9 décembre 2024'; body guessed from the URL"}]},{"bfs_id":5490,"name":"Moiry","canton":"VD","status":"not_examined","website":"http://www.moiry.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://moiry.ch/autorites/conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5491,"name":"Mont-la-Ville","canton":"VD","status":"not_examined","website":"https://www.mont-la-ville.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://mont-la-ville.ch/conseil-general/, https://mont-la-ville.ch/repertoire-de-documents-pour-le-conseil-general/, https://mont-la-ville.ch/conseil-general-dates-2024/)","publications":[]},{"bfs_id":5492,"name":"Montricher","canton":"VD","status":"candidate","website":"https://www.montricher.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.montricher.ch/Vie-politique-et-reglements#_3","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Ordres du jour et PV' has 80 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5493,"name":"Orny","canton":"VD","status":"not_examined","website":"https://www.orny.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5495,"name":"Penthalaz","canton":"VD","status":"blocked_js","website":"https://www.penthalaz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://www.penthalaz.ch/fichiers/?Conseil%20communal/PV%20du%20conseil","from":null,"to":null,"cadence":null,"obstacle":"PVs live in a PHP file browser (/fichiers/?<folder>) that renders the listing client-side (index.php JSON config, toastify/sweetalert scripts); the HTML has one anchor and no PDF links","how":"adapter for the PHP file browser JSON (index.php) or direct file URLs /fichiers/<folder>/<file>.pdf?_t=<timestamp>"}]},{"bfs_id":5496,"name":"Penthaz","canton":"VD","status":"candidate","website":"https://www.penthaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.penthaz.ch/conseil-communal-fr35.html","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: 4 dated PDF links on the page, newest 2026-06-24, e.g. 'Ordre du jour de la séance du 24 juin 2026'; body guessed from the URL"}]},{"bfs_id":5497,"name":"Pompaples","canton":"VD","status":"not_examined","website":"http://www.pompaples.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 7 pages tested (https://www.pompaples.ch/N669/proces-verbal-de-la-seance-du-jeudi-19-juin-2014.html, https://www.pompaples.ch/N670/proces-verbal-de-la-seance-du-jeudi-4-decembre-2014.html, https://www.pompaples.ch/N671/proces-verbal-de-la-seance-du-jeudi-11-juin-2015.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5498,"name":"La Sarraz","canton":"VD","status":"candidate","website":"https://www.lasarraz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lasarraz.ch/officiel/autorites-politiques/conseil-communal/ordres-du-jour-et-proces-verbaux.html","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 80 dated PDF links on the page, newest 2026-06-12, e.g. 'Ordre du jour de la séance du 12 juin 2026'; body guessed from the URL"}]},{"bfs_id":5499,"name":"Senarclens","canton":"VD","status":"not_examined","website":"https://senarclens.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://senarclens.ch/vie-officielle/autorites/conseil-general, https://senarclens.ch/vie-pratique/news/seance-publique-dinformation)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5501,"name":"Sullens","canton":"VD","status":"candidate","website":"https://www.sullens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.sullens.ch/officiel/conseil-communal_s%C3%A9ances-2026","from":null,"to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: 3 dated PDF links on the page, newest 2026-06-11, e.g. 'Résultats du Conseil communal'; body guessed from the URL"}]},{"bfs_id":5503,"name":"Vufflens-la-Ville","canton":"VD","status":"candidate","website":"https://www.vufflens-la-ville.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://vufflens-la-ville.ch/conseil-communal","from":null,"to":"2026-04-01","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2026-04-01, e.g. 'procès-verbal'; body guessed from the URL"}]},{"bfs_id":5511,"name":"Assens","canton":"VD","status":"not_examined","website":"https://www.assens.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":5512,"name":"Bercher","canton":"VD","status":"not_examined","website":"https://www.bercher-vd.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.bercher-vd.ch/N786/conseil-communal.html, https://www.bercher-vd.ch/N1434/seances-du-conseil-communal.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5514,"name":"Bottens","canton":"VD","status":"candidate","website":"https://www.bottens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bottens.ch/archive-pv/557626","from":"2025","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: page 'Archives procès-verbaux' with 19 dated minutes links, e.g. 'Procès-verbal 21 juin 2021'"}]},{"bfs_id":5515,"name":"Bretigny-sur-Morrens","canton":"VD","status":"candidate","website":"http://www.bretigny.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://bretigny.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' with 30 dated minutes links, e.g. 'Extrait Procès-verbal 2026-06-11'"}]},{"bfs_id":5516,"name":"Cugy","canton":"VD","status":"candidate","website":"https://www.cugy-vd.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cugy-vd.ch/Vie-politique-et-reglements#_12","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux des séances du Conseil co' has 113 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5518,"name":"Echallens","canton":"VD","status":"configured","website":"https://www.echallens.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Conseil communal; 40 of 41 dated; mixed /files/ URLs without extension (served as application/octet-stream, content starts with %PDF-) and /images/ PDFs; 'Extraits du proces-verbal' excluded only because the text does not start with the regex anchor","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.echallens.ch/ma-commune/politique/conseil-communal/proces-verbaux-du-conseil-communal.html","from":"2019-01-23","to":"2026-05-28","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5520,"name":"Essertines-sur-Yverdon","canton":"VD","status":"not_examined","website":"https://essertines-sur-yverdon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://essertines-sur-yverdon.ch/officiel/conseil-communal/, https://essertines-sur-yverdon.ch/evenement/seance-du-conseil-communal-3/, https://essertines-sur-yverdon.ch/evenement/seance-du-conseil-communal-4/)","publications":[]},{"bfs_id":5521,"name":"Etagnières","canton":"VD","status":"not_examined","website":"https://etagnieres.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.etagnieres.ch/N612/conseil-communal.html)\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[]},{"bfs_id":5522,"name":"Fey","canton":"VD","status":"not_examined","website":"http://www.fey-vd.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://fey-vd.ch/conseil-general.html, https://fey-vd.ch/calendrier-conseil-general.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5523,"name":"Froideville","canton":"VD","status":"candidate","website":"http://www.froideville.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.froideville.ch/seances","from":"2011","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 74 sessions since 2011; minutes attached to the session pages as 'Extrait PV CC 2026 06 16 Préavis 67-2026'"}]},{"bfs_id":5527,"name":"Morrens","canton":"VD","status":"candidate","website":"https://www.morrens.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.morrens.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2024-10-07","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 27 files match, newest 2024-10-07, e.g. 'PV 07.10.2024'; body guessed from the URL"}]},{"bfs_id":5529,"name":"Oulens-sous-Echallens","canton":"VD","status":"not_examined","website":"https://www.oulens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5530,"name":"Pailly","canton":"VD","status":"not_examined","website":"https://www.pailly.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.pailly.ch/Vie-politique-et-reglements#_8)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5531,"name":"Penthéréaz","canton":"VD","status":"not_examined","website":"http://www.penthereaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.penthereaz.ch/N1205/conseil-general-extraordinaire.html, https://www.penthereaz.ch/N1208/conseil-general.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5533,"name":"Poliez-Pittet","canton":"VD","status":"not_examined","website":"http://www.poliez-pittet.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.poliez-pittet.ch/autorites-administration/conseil-general/)","publications":[]},{"bfs_id":5534,"name":"Rueyres","canton":"VD","status":"candidate","website":"http://www.rueyres.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.rueyres.ch/autorites/le-conseil-general/","from":null,"to":"2024-03-25","cadence":null,"obstacle":null,"how":"probe: 27 dated PDF links on the page, newest 2024-03-25, e.g. ''; body guessed from the URL"}]},{"bfs_id":5535,"name":"Saint-Barthélemy","canton":"VD","status":"configured","website":"http://www.st-barthelemy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://st-barthelemy.ch/proces-verbaux","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2025-12-15; body guessed from the URL"},{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://st-barthelemy.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5537,"name":"Villars-le-Terroir","canton":"VD","status":"candidate","website":"http://www.villars-le-terroir.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.villars-le-terroir.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2023-10-09","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 17 files match, newest 2023-10-09, e.g. 'PV 9 du 9.10.23'; body guessed from the URL"}]},{"bfs_id":5539,"name":"Vuarrens","canton":"VD","status":"candidate","website":"https://www.vuarrens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.vuarrens.ch/conseil-communal/","from":null,"to":"2026-03-10","cadence":null,"obstacle":null,"how":"probe: 19 dated PDF links on the page, newest 2026-03-10, e.g. '10 mars 2026'; body guessed from the URL"}]},{"bfs_id":5540,"name":"Montilliez","canton":"VD","status":"candidate","website":"http://www.montilliez.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.montilliez.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 77 files match, newest 2026-06-24, e.g. '20260624-Extrait PV'; body guessed from the URL"}]},{"bfs_id":5541,"name":"Goumoëns","canton":"VD","status":"candidate","website":"https://www.goumoens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.goumoens.ch/proces-verbaux-2026-fr6841.html","from":null,"to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: 16 dated PDF links on the page, newest 2026-06-03, e.g. 'PV n° 1_installation des autorités_3.06.2026.pdf'; body guessed from the URL"}]},{"bfs_id":5551,"name":"Bonvillars","canton":"VD","status":"candidate","website":"https://www.bonvillars.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://bonvillars.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-08-18","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 17 files match, newest 2026-08-18, e.g. 'extrait de PV 18.08.2026-1'; body guessed from the URL"}]},{"bfs_id":5552,"name":"Bullet","canton":"VD","status":"not_examined","website":"https://www.bullet.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://bullet.ch/conseil-communal/). Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5553,"name":"Champagne","canton":"VD","status":"not_examined","website":"https://www.champagne.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Public WordPress media endpoint verified; representative PDF passed robots.txt and returned PDF bytes. Mixed municipal PDFs collected without title filters; API totals are media counts, not guaranteed PDF totals.","publications":[]},{"bfs_id":5554,"name":"Concise","canton":"VD","status":"configured","website":"https://www.concise.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"Conseil communal; wave 2: partial, 5 of 17 PVs reachable (the rest are Dropbox links)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://concise.ch/proces-verbaux-du-conseil-communal-2021-2026/","from":"2021","to":"2025-12-08","cadence":null,"obstacle":"12 of the 17 PVs 2021-2025 on the page are Dropbox share links (www.dropbox.com/scl/fi/...&dl=0, an HTML preview page, and dropbox.com robots.txt disallows /scl/); only the 5 files under /wp-content/uploads/ (2024-06-17 to 2025-12-08) are crawled","how":"html_links, 1 hop; Crawl-delay 10 s"}]},{"bfs_id":5555,"name":"Corcelles-près-Concise","canton":"VD","status":"candidate","website":"https://www.corcelles-concise.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.corcelles-concise.ch/administration/conseil-general/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5556,"name":"Fiez","canton":"VD","status":"candidate","website":"https://www.fiez.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.fiez.ch/index.php/autorites/conseil-general","from":null,"to":"2022-09-22","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2022-09-22, e.g. 'SDIS - Extrait du PV de l'assembée du 22 septembre 2022'; body guessed from the URL"}]},{"bfs_id":5557,"name":"Fontaines-sur-Grandson","canton":"VD","status":"not_examined","website":"https://www.fontaines-sur-grandson.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5559,"name":"Giez","canton":"VD","status":"configured","website":"https://www.giez.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://giez.ch/officiel/conseil-general/proces-verbaux/","from":null,"to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2026-06-29; body guessed from the URL"},{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://giez.ch/officiel/conseil-general/proces-verbaux/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5560,"name":"Grandevent","canton":"VD","status":"candidate","website":"http://www.grandevent.ch","vendor":"custom","reachable":true,"checked":"2026-09-27","checked_by":"OpenCommune official archive and full PDF review","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-27: Verified public Joomla archive under /cms/index.php, with assembly minutes back to 2021 and regulations. Full PDF GET validated; configured as untagged raw documents.","publications":[]},{"bfs_id":5561,"name":"Grandson","canton":"VD","status":"configured","website":"https://www.grandson.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; file names yyyy-mm-dd_PV_ConsCom.pdf; Crawl-delay 10; probe hit correct","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.grandson.ch/officiel/conseil-communal/pv-et-decisions/","from":"2015-03-19","to":"2026-04-30","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5562,"name":"Mauborget","canton":"VD","status":"not_examined","website":"https://www.mauborget.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. The registered municipal homepage explicitly links https://mauborget.wixsite.com/mauborget. Its municipal pages link the tenant-specific filesusr.com PDF library. Reviewed 2026-09-26; shared hosting is restricted to this tenant and its published files.","publications":[]},{"bfs_id":5563,"name":"Mutrux","canton":"VD","status":"not_examined","website":"https://mutrux.swiss","vendor":"custom","reachable":null,"checked":null,"checked_by":null,"notes":"2026-09-26 coverage review: New official website identified and municipal identity verified; previously no website recorded. Public documents and representative PDF bytes verified. Flat reviewed document pages are explicit seeds; collection is not a whole-site completeness claim.","publications":[]},{"bfs_id":5564,"name":"Novalles","canton":"VD","status":"candidate","website":"https://www.novalles.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.novalles.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-10-08","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 7 files match, newest 2025-10-08, e.g. 'SDIS_Extrait PV_08.10.2025'; body guessed from the URL"}]},{"bfs_id":5565,"name":"Onnens","canton":"VD","status":"candidate","website":"https://www.onnens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.onnens.ch/administration/conseil-general","from":null,"to":"2025-10-06","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2025-10-06, e.g. 'Le procès verbal'; body guessed from the URL"}]},{"bfs_id":5566,"name":"Provence","canton":"VD","status":"candidate","website":"https://www.provence.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.provence.ch/pilier-public/104-acrg-extrait-pv-du-18-08-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'ACRG extrait PV du 18.08.2026' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5568,"name":"Sainte-Croix","canton":"VD","status":"not_examined","website":"https://www.sainte-croix.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5571,"name":"Tévenon","canton":"VD","status":"not_examined","website":"https://www.villars-burquin.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.villars-burquin.ch/autorites/conseil-general, https://www.villars-burquin.ch/agenda-communal/conseil-general-22)\n\n2026-09-26 coverage review: Reviewed official document sections, robots rules and representative PDF bytes. Existing generic collection follows reviewed sections and includes municipal records without topic filters.","publications":[]},{"bfs_id":5581,"name":"Belmont-sur-Lausanne","canton":"VD","status":"not_examined","website":"http://www.belmont.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: connection timed out\n\n2026-09-26 coverage review: Reviewed official document sections, robots rules and representative PDF bytes. Existing generic collection follows reviewed sections and includes municipal records without topic filters.","publications":[]},{"bfs_id":5582,"name":"Cheseaux-sur-Lausanne","canton":"VD","status":"configured","website":"https://www.cheseaux.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.cheseaux.ch/fr/seances-conseil-11.html","from":"2021-12-14","to":"2026-05-05","cadence":null,"obstacle":"partial: Conseil communal; 14 of 19 dated; 5 older PVs undated (PV14mars.pdf, pv210622.pdf); one PV under /data/secure/ may need a login; 'Proces-verbal decisionnel' extracts excluded; report status ok, register partial (26 percent undated)","how":"html_links, 1 hop, negative lookahead ^Proces-verbal(?! decisionnel) because exclude_regex was not applied; two-digit-year fallback would date more"}]},{"bfs_id":5583,"name":"Crissier","canton":"VD","status":"blocked_robots","website":"http://www.crissier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; listing works (66 PVs); entry not shipped","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.crissier.ch/crissier-officiel/politique/conseil-communal/proces-verbaux/","from":"2011-06-16","to":"2026-06-22","cadence":null,"obstacle":"robots.txt has 'Disallow: /wp/' and every PDF lives under /wp/wp-content/uploads/; the crawler refuses the download","how":"ask commune to allow /wp/wp-content/uploads/ in robots.txt"}]},{"bfs_id":5584,"name":"Epalinges","canton":"VD","status":"configured","website":"https://www.epalinges.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.epalinges.ch/vie-politique/conseil-communal/seances-du-conseil/","from":"2009-06-23","to":"2026-05-19","cadence":null,"obstacle":"partial: Conseil communal; anchor text is just 'Proces-Verbal'; 21 older files named pv_cc_yyyymmdd stay undated; the upload path /uploads/2025/10/20260519_PV_CC19Mai.pdf parses as a false date without date_regex; report status ok, register partial (29 percent undated)","how":"html_links, 1 hop, date_regex yyyymmdd_PV; digit-boundary guards and a compact yyyymmdd form would date the rest"}]},{"bfs_id":5585,"name":"Jouxtens-Mézery","canton":"VD","status":"candidate","website":"https://www.jouxtens-mezery.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.jouxtens-mezery.ch/N667/ordres-du-jour-et-proces-verbaux-du-conseil-communal.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Ordres du jour et procès-verbaux du Cons' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5586,"name":"Lausanne","canton":"VD","status":"configured","website":"https://www.lausanne.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lausanne.ch/apps/agir/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5587,"name":"Le Mont-sur-Lausanne","canton":"VD","status":"configured","website":"http://www.lemontsurlausanne.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; PV anchors read 'Proces-verbal', date only in the file name (PV_seance_CC_20250224); a JPG named like a PV excluded with a .pdf selector; 3 PVs undated","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lemontsurlausanne.ch/administration-et-autorites/conseil-communal/seances","from":"2016-06-27","to":"2026-06-29","cadence":null,"obstacle":null,"how":"html_links, year pages 2016-2026 (slugs 2024-1, 2016-2020/2019), date_regex yyyymmdd (ymd), .pdf selector"}]},{"bfs_id":5588,"name":"Paudex","canton":"VD","status":"candidate","website":"http://www.paudex.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.paudex.ch/seances-fr4229.html","from":null,"to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: 33 dated PDF links on the page, newest 2026-05-11, e.g. 'PV 20260511 OCR.pdf'; body guessed from the URL"}]},{"bfs_id":5589,"name":"Prilly","canton":"VD","status":"configured","website":"http://www.prilly.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; one page per session ('Seance du 30 mars 2026') with 'Proces-verbal du ...' plus 'Proces-verbal decisionnel' (excluded); validated with the archive hops limited to 2 years x 4 sessions; about 10 sessions per year so around 100 PVs 2016-2026 expected; PVs 2009-2016 exist on static year pages but are numbered without a day date (not covered); 'no links' retry doubles requests on session pages without a PV\n\n2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks. Council archive moved to /ville-administration/autorites-politiques/conseil-communal; several historical document links still return 404, while current regulations and budget PDFs work. Historical link counts do not establish downloadable coverage.","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.prilly.ch/prilly-officiel/conseil/seances-du-conseil","from":"2025-10-06","to":"2026-03-30","cadence":null,"obstacle":null,"how":"html_links, 2 sources: current year 2 hops (seances-du-conseil -> session page); archive 3 hops (seances-passees-du-conseil year -> session -> PDF), max_follow 80"},{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.prilly.ch/prilly-officiel/conseil/seances-passees-du-conseil","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5590,"name":"Pully","canton":"VD","status":"configured","website":"https://www.pully.ch","vendor":"umbraco","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.pully.ch/pully-officiel/conseil-communal","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5591,"name":"Renens","canton":"VD","status":"blocked_js","website":"https://www.renens.ch/","vendor":"iomedia-nuxt","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal\n\n2026-09-26 coverage review: Reviewed public municipal HTML document pages and sample PDF bytes. Public sitemap exposes 1,884 document detail pages; three sampled pages link public PDFs. Blocked allinone.io API is not used.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://www.renens.ch/officielle/autorites/seances/","from":null,"to":null,"cadence":null,"obstacle":"the sessions page and the documents page contain no anchors and no PDF URLs at all in the server HTML (1.4 MB of Nuxt state without session data); everything comes from /api/contents client-side","how":"iomedia JSON adapter"}]},{"bfs_id":5592,"name":"Romanel-sur-Lausanne","canton":"VD","status":"configured","website":"http://www.romanel-sur-lausanne.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; anchor text 'Conseil communal du 21 mai 2026'; probe hit","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.romanel-sur-lausanne.ch/officiel/conseil-communal/seances-du-conseil-communal/proces-verbaux/","from":"2011-09-01","to":"2026-06-11","cadence":null,"obstacle":null,"how":"html_links, 2 hops (legislature pages 2011-2016 to 2026-2031 with irregular slugs like legislature-2016-2021-1 from the sub-navigation, first hop on 'PV du Conseil communal' links -> PDF)"}]},{"bfs_id":5601,"name":"Chexbres","canton":"VD","status":"candidate","website":"http://www.chexbres.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://chexbres.ch/officiel/autorites/preavis-municipaux-et-decisions.html","from":null,"to":"2026-06-20","cadence":null,"obstacle":null,"how":"probe: 55 dated PDF links on the page, newest 2026-06-20, e.g. 'Préavis n° 6-2026 - C omptes 2025 - partie 1'; body guessed from the URL"}]},{"bfs_id":5604,"name":"Forel","canton":"VD","status":"candidate","website":"http://www.forel.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not reached within the request budget (batch processed largest first; last 17 communes under 3,200 inhabitants); examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.forel.ch/officiel/municipalite/decisions-municipales-2022","from":null,"to":"2025-10-20","cadence":null,"obstacle":null,"how":"probe: 47 dated PDF links on the page, newest 2025-10-20, e.g. 'Séance du 20 octobre 2025'; body guessed from the URL"}]},{"bfs_id":5606,"name":"Lutry","canton":"VD","status":"configured","website":"https://www.lutry.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; the PV of a session is linked on the next session's page (soumis a approbation); validated with 6 session pages (6 PVs, 2 undated because the file name has no date); delivered entry follows 80 pages, about 14 years; register guess: kept configured although 2 of 6 trial documents were undated (parent-hop date would fix it)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.lutry.ch/lutry-officiel/conseil-communal/seances-du-conseil-communal/calendrier-et-documents","from":"2025-09-15","to":"2026-05-11","cadence":null,"obstacle":null,"how":"html_links, 2 hops (124 session pages 2003-2026 in the sub-navigation, anchor 'Lundi 23 mars 2026' -> 'Proces-verbal'), max_follow 80"}]},{"bfs_id":5607,"name":"Puidoux","canton":"VD","status":"candidate","website":"http://www.puidoux.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.puidoux.ch/seances","from":"2021","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2021; minutes attached to the session pages as 'PV 20 - 30.04.2026'"}]},{"bfs_id":5609,"name":"Rivaz","canton":"VD","status":"not_examined","website":"https://www.rivaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.rivaz.ch/conseil-general-fr1733.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5610,"name":"Saint-Saphorin","canton":"VD","status":"not_examined","website":"https://www.saint-saphorin.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":5611,"name":"Savigny","canton":"VD","status":"configured","website":"https://savigny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; anchor text 'Proces verbal'; only two years online; register guess: kept configured because nothing older is known to exist","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://savigny.ch/vie-politique/seances-du-conseil-communal/","from":"2024-06-24","to":"2025-12-01","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date_regex yyyymmdd_pv"}]},{"bfs_id":5613,"name":"Bourg-en-Lavaux","canton":"VD","status":"configured","website":"https://www.b-e-l.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.b-e-l.ch/fr/officiel/conseil-communal/s%C3%A9ances-du-conseil","from":"2016-06-20","to":"2026-03-23","cadence":null,"obstacle":"partial: Conseil communal; 1.6 MB page with every seance document; 46 of 76 dated; 30 older PVs (2014-2016) undated because of two-digit years (PV_seance_CC_29.06.15.pdf); 'Extrait PV ...' excluded only by the regex anchor; report status ok, register partial (39 percent undated)","how":"html_links, 1 hop; a two-digit-year dd.mm.yy fallback would date the rest"}]},{"bfs_id":5621,"name":"Aclens","canton":"VD","status":"not_examined","website":"https://www.aclens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 8 pages tested (https://www.aclens.ch/N607/proces-verbal-de-la-seance-du-25.03.2025.html, https://www.aclens.ch/N608/proces-verbal-de-la-seance-du-17.06.2025.html, https://www.aclens.ch/N609/proces-verbal-de-la-seance-du-24.04.2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5622,"name":"Bremblens","canton":"VD","status":"not_examined","website":"http://www.bremblens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://bremblens.ch/conseil.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5623,"name":"Buchillon","canton":"VD","status":"candidate","website":"http://www.buchillon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://buchillon.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' with 32 dated minutes links, e.g. 'CC - pv du 17.03.2026'"}]},{"bfs_id":5624,"name":"Bussigny","canton":"VD","status":"blocked_robots","website":"http://www.bussigny.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal; the listing works (PV_20260423_Dind_OCR_V2.pdf, date_regex ymd), 51 found, 50 dated; not entered","publications":[{"body":"parliament","kind":"minutes","status":"blocked_robots","listing_url":"https://www.bussigny.ch/ma-commune/le-conseil-communal/seances","from":"2020-02-07","to":"2026-04-23","cadence":null,"obstacle":"robots.txt disallows /images/, where every PDF lives; the crawler refused the download","how":"ask commune to allow /images/ in robots.txt"}]},{"bfs_id":5627,"name":"Chavannes-près-Renens","canton":"VD","status":"candidate","website":"https://www.chavannes.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.chavannes.ch/officiel/conseil-communal/proc%C3%A8s-verbaux.html","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 155 dated PDF links on the page, newest 2026-06-25, e.g. 'Séance du 25 juin 2026'; body guessed from the URL"}]},{"bfs_id":5628,"name":"Chigny","canton":"VD","status":"not_examined","website":"http://www.chigny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5629,"name":"Clarmont","canton":"VD","status":"candidate","website":"http://www.clarmont.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-26 coverage review: Official document libraries reviewed with representative robots-permitted PDF byte checks. WordPress media API was unavailable, but public HTML libraries contain downloadable municipal PDFs.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.clarmont.ch/officiel/conseil-general/","from":null,"to":"2023-02-22","cadence":null,"obstacle":null,"how":"probe: 16 dated PDF links on the page, newest 2023-02-22, e.g. 'PV de la séance extraordinaire du 22 février 2023'; body guessed from the URL"}]},{"bfs_id":5631,"name":"Denens","canton":"VD","status":"candidate","website":"https://www.denens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://denens.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès verbaux' with 29 dated minutes links, e.g. 'Procès-verbal de l'installation des autorités communales 15 juin 2026'"}]},{"bfs_id":5632,"name":"Denges","canton":"VD","status":"candidate","website":"http://www.denges.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.denges.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 36 files match, newest 2026-03-16, e.g. 'Procès verbal'; body guessed from the URL"}]},{"bfs_id":5633,"name":"Echandens","canton":"VD","status":"configured","website":"https://echandens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal PV grouped by year; anchor text has day and month only ('8 decembre (PDF, 694ko)') and the upload folder year is wrong for December sessions; Crawl-delay 10","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://echandens.ch/conseil-communal/","from":"2012-04-30","to":"2026-03-02","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date_regex dd-mm-yyyy on the file name"}]},{"bfs_id":5634,"name":"Echichens","canton":"VD","status":"candidate","website":"https://www.echichens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.echichens.ch/seances","from":"2019","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 37 sessions since 2019; decisions attached to the session pages as 'Extrait de Décision_Préavis_2026-01'"}]},{"bfs_id":5635,"name":"Ecublens","canton":"VD","status":"configured","website":"https://www.ecublens.ch","vendor":"joomla","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal; 244 of 249 dated; the PV page is not in the main menu (the menu's 'Conseil communal' link is a 404), found through the Joomla search; files under /images/","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.ecublens.ch/politique/conseil-communal/proces-verbaux","from":"2006-10-05","to":"2026-06-25","cadence":null,"obstacle":null,"how":"html_links, 1 hop, exclude_regex for annexes, date_regex for names like 13_6_24_PV"}]},{"bfs_id":5636,"name":"Etoy","canton":"VD","status":"candidate","website":"https://www.etoy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.etoy.ch/N604/preavis-et-decisions.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Préavis et décisions' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5637,"name":"Lavigny","canton":"VD","status":"candidate","website":"http://www.lavigny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://lavigny.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-01","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 63 files match, newest 2026-04-01, e.g. 'Extrait Du PV 1.04.26 Signé'; body guessed from the URL"}]},{"bfs_id":5638,"name":"Lonay","canton":"VD","status":"candidate","website":"http://www.lonay.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://lonay.ch/extraits-cc","from":null,"to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: 59 dated PDF links on the page, newest 2026-06-23, e.g. 'Extrait des décisions'; body guessed from the URL"}]},{"bfs_id":5639,"name":"Lully","canton":"VD","status":"not_examined","website":"http://www.lully.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 9 pages tested (https://www.lully.ch/N536/pv-de-la-seance-du-09.12.2024.html, https://www.lully.ch/N547/pv-de-la-seance-du-11.11.2024.html, https://www.lully.ch/N554/pv-de-la-seance-dsu-07.10.2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5640,"name":"Lussy-sur-Morges","canton":"VD","status":"not_examined","website":"http://www.lussy-sur-morges.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.lussy-sur-morges.ch/vie-politique/conseil-general)\n\n2026-09-26 coverage review: Reviewed public municipal documents and representative PDF bytes with robots checks. Filename metadata exposes opaque download handlers; no topic filters. Collection follows reviewed archive sections, including their pagination where present.","publications":[]},{"bfs_id":5642,"name":"Morges","canton":"VD","status":"configured","website":"https://www.morges.ch","vendor":"iomedia","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.morges.ch/seances","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5643,"name":"Préverenges","canton":"VD","status":"candidate","website":"http://www.preverenges.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.preverenges.ch/sitzung","from":"2015","to":"2026-09-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 81 sessions since 2015; minutes attached to the session pages as '3. Procès-verbal du 30.4.26 approuvé le 18.6.26'"}]},{"bfs_id":5645,"name":"Romanel-sur-Morges","canton":"VD","status":"not_examined","website":"https://www.romanel-sur-morges.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.romanel-sur-morges.ch/conseil-general/)\n\n2026-09-26 coverage review: Reviewed public municipal documents and representative PDF bytes with robots checks. Filename metadata exposes opaque download handlers; no topic filters. Council detail URLs are explicit observed seeds because fresh pages have flat root slugs outside current crawl scopes.","publications":[]},{"bfs_id":5646,"name":"Saint-Prex","canton":"VD","status":"configured","website":"https://www.saint-prex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"decisions of the Conseil communal (pilier public extracts), anchor text 'Telecharger'; full PVs are on the councillors' intranet only; register guess: document_kind extracts per the report's wording","publications":[{"body":"parliament","kind":"extracts","status":"configured","listing_url":"https://www.saint-prex.ch/officiel/pilier-public/decisions/","from":"2025-08-20","to":"2026-08-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from file name"}]},{"bfs_id":5648,"name":"Saint-Sulpice","canton":"VD","status":"configured","website":"https://www.st-sulpice.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Conseil communal; all PVs on one page under /fileadmin/.../CC-pv/, anchor text 'Seance du 27 mai 2026'","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.st-sulpice.ch/officiel/conseil-communal/proces-verbaux","from":"2014-03-05","to":"2026-06-17","cadence":null,"obstacle":null,"how":"html_links, 1 hop, text filter excludes annexes"}]},{"bfs_id":5649,"name":"Tolochenaz","canton":"VD","status":"not_examined","website":"http://www.tolochenaz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 37 sessions since 2018 (Séance, Séance / assemblée, Séance d'installation des autorités communales - L, Séance du Conseil communal, Séance extra); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5650,"name":"Vaux-sur-Morges","canton":"VD","status":"candidate","website":"http://www.vaux-sur-morges.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.vaux-sur-morges.ch/Vie-politique-et-reglements#_20","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV du Conseil général' has 85 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5651,"name":"Villars-Sainte-Croix","canton":"VD","status":"candidate","website":"http://www.villars-sainte-croix.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://villars-sainte-croix.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2018-12-13","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 50 files match, newest 2018-12-13, e.g. '2018_12_13_Extrait_PV_CISTEP_15_2018'; body guessed from the URL"}]},{"bfs_id":5652,"name":"Villars-sous-Yens","canton":"VD","status":"not_examined","website":"http://www.villars-sous-yens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.villars-sous-yens.ch/conseil-geacuteneacuteral.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5653,"name":"Vufflens-le-Château","canton":"VD","status":"candidate","website":"https://www.vufflens-le-chateau.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.vufflens-le-chateau.ch/Vie-politique-et-reglements#_41","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbal Conseil général' has 135 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5654,"name":"Vullierens","canton":"VD","status":"not_examined","website":"https://www.vullierens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5655,"name":"Yens","canton":"VD","status":"not_examined","website":"https://www.yens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.yens.ch/la-commune/autorites-communales/conseil-communal, https://www.yens.ch/la-commune/autorites-communales/conseil-communal/seances)\n\n2026-09-26 coverage review: Reviewed public municipal documents and representative PDF bytes with robots checks. Filename metadata exposes opaque download handlers; no topic filters. Collection follows reviewed archive sections, including their pagination where present.","publications":[]},{"bfs_id":5656,"name":"Hautemorges","canton":"VD","status":"candidate","website":"https://www.hautemorges.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hautemorges.ch/seances","from":"2021","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 32 sessions since 2021; minutes attached to the session pages as 'PV no 31 CC du 04.05.2026'"}]},{"bfs_id":5661,"name":"Boulens","canton":"VD","status":"candidate","website":"http://www.boulens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.boulens.ch/administration/conseil-general.html","from":null,"to":"2025-03-25","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2025-03-25, e.g. 'PV 25-03-2025'; body guessed from the URL"}]},{"bfs_id":5663,"name":"Bussy-sur-Moudon","canton":"VD","status":"candidate","website":"http://bussy-sur-moudon.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://bussy-sur-moudon.ch/proces-verbaux/pv-12-12-2024/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV 12.12.2024' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5665,"name":"Chavannes-sur-Moudon","canton":"VD","status":"candidate","website":"https://www.chavannes-sur-moudon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.chavannes-sur-moudon.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2022-05-15","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 22 files match, newest 2022-05-15, e.g. 'PV_Communal_15mai22'; body guessed from the URL"}]},{"bfs_id":5669,"name":"Curtilles","canton":"VD","status":"not_examined","website":"https://www.curtilles.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.curtilles.ch/index.php/administration/reglements/conseil-general, https://www.curtilles.ch/index.php/activites/61-conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5671,"name":"Dompierre","canton":"VD","status":"candidate","website":"http://www.dompierre-vd.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://dompierre-vd.ch/index.php/vie-politique-et-reglements/#conseilgeneral","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2025-12-16, e.g. 'Conseil général du 16 décembre 2025'; body guessed from the URL"}]},{"bfs_id":5673,"name":"Hermenches","canton":"VD","status":"candidate","website":"http://www.hermenches.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hermenches.ch/N532/preavis-extraits-de-pv.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Préavis, Extraits de PV' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5674,"name":"Lovatens","canton":"VD","status":"not_examined","website":"https://www.lovatens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 0 sessions since  (); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5675,"name":"Lucens","canton":"VD","status":"configured","website":"https://www.lucens.ch","vendor":"quicksite","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Conseil communal; 'Conclusions du Conseil communal' per session (decision record); the seances page lists only agendas","publications":[{"body":"parliament","kind":"decisions","status":"configured","listing_url":"https://www.lucens.ch/N3283/decisions-du-conseil-communal.html","from":"2019-06-17","to":"2025-09-01","cadence":null,"obstacle":null,"how":"html_links, 1 hop, anchors under /data/dataimages/Upload/"}]},{"bfs_id":5678,"name":"Moudon","canton":"VD","status":"configured","website":"https://www.moudon.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"Conseil communal; Drupal 11; homepage navigation is JS-rendered but listing and session pages are static; 49 session pages 2016-2026 in the sitemap; each session page has preavis, rapports and the PV once approved; validated with 3 sessions followed (2 PVs)","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://moudon.ch/administration/conseil-communal/seances-du-conseil-communal","from":"2026-03-03","to":"2026-05-05","cadence":null,"obstacle":null,"how":"html_links, 2 hops (listing -> session page 'Proces-verbal du <date>'), max_follow 80"}]},{"bfs_id":5680,"name":"Ogens","canton":"VD","status":"candidate","website":"https://www.ogens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ogens.ch/PV-et-convocations-dassemblees","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV et convocations d'assemblées' has 44 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5683,"name":"Prévonloup","canton":"VD","status":"candidate","website":"http://www.prevonloup.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.prevonloup.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-07","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 26 files match, newest 2026-04-07, e.g. 'Procès-verbal d&rsquo;élection tacite'; body guessed from the URL"}]},{"bfs_id":5684,"name":"Rossenges","canton":"VD","status":"candidate","website":"https://rossenges.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://rossenges.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2024-11-27","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2024-11-27, e.g. 'AIEHJ_Extrait PV séance CI 27.11.24'; body guessed from the URL"}]},{"bfs_id":5688,"name":"Syens","canton":"VD","status":"not_examined","website":"http://www.syens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5690,"name":"Villars-le-Comte","canton":"VD","status":"not_examined","website":"http://www.villars-le-comte.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (http://www.villars-le-comte.ch/autorites/conseil-general/)","publications":[]},{"bfs_id":5692,"name":"Vucherens","canton":"VD","status":"candidate","website":"http://www.vucherens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vucherens.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-31","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 47 files match, newest 2026-03-31, e.g. '31.03.2026, version corrigée'; body guessed from the URL"}]},{"bfs_id":5693,"name":"Montanaire","canton":"VD","status":"not_published","website":"http://www.montanaire.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://montanaire.ch/administration/conseil-communal/","from":"2026-06-18","to":"2026-06-18","cadence":null,"obstacle":"only the newest Conseil communal PV (PVglobal_Seance-du-Conseil-communal-du-18.06.2026.pdf) is linked; no archive; below the threshold, entry not shipped","how":"ask commune for the archive"}]},{"bfs_id":5701,"name":"Arnex-sur-Nyon","canton":"VD","status":"not_examined","website":"http://www.arnex-sur-nyon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (http://www.arnex-sur-nyon.ch/Vie-politique-et-reglements#_4)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5702,"name":"Arzier-Le Muids","canton":"VD","status":"not_examined","website":"http://www.arzier.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: page 'Procès-verbaux, 2026-' carries 6 protocol-like links without parseable dates: https://arzier.ch/proces-verbaux-2026","publications":[]},{"bfs_id":5703,"name":"Bassins","canton":"VD","status":"candidate","website":"http://www.bassins.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bassins.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 309 files match, newest 2025-12-11, e.g. 'PV du conseil du 11 décembre 2025'; body guessed from the URL"}]},{"bfs_id":5704,"name":"Begnins","canton":"VD","status":"candidate","website":"https://www.begnins.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.begnins.ch/sitzung","from":"2024","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2024; minutes attached to the session pages as 'PV 28.04.2026_signe'"}]},{"bfs_id":5705,"name":"Bogis-Bossey","canton":"VD","status":"not_examined","website":"http://www.bogis-bossey.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (http://www.bogis-bossey.ch/Vie-politique-et-reglements#_4)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5706,"name":"Borex","canton":"VD","status":"not_examined","website":"http://www.borex.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (http://www.borex.ch/Documents-du-Conseil-communal, http://www.borex.ch/Documents-du-Conseil-communal#_1, http://www.borex.ch/1784/Conseil-Communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5707,"name":"Chavannes-de-Bogis","canton":"VD","status":"not_examined","website":"http://www.chavannes-de-bogis.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.chavannes-de-bogis.ch/N1778/decisions-du-conseil-communal-seance-du-29.04.2026.html, https://www.chavannes-de-bogis.ch/N597/proces-verbal-seance-du-9-octobre-2024.html, https://www.chavannes-de-bogis.ch/N600/proces-verbal-seance-du-26-juin-2024.html)\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[]},{"bfs_id":5708,"name":"Chavannes-des-Bois","canton":"VD","status":"candidate","website":"http://www.chavannes-des-bois.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://chavannes-des-bois.ch/proces-verbaux-des-seances","from":null,"to":"2024-10-07","cadence":null,"obstacle":null,"how":"probe: 25 dated PDF links on the page, newest 2024-10-07, e.g. 'Liste des membres'; body guessed from the URL"}]},{"bfs_id":5709,"name":"Chéserex","canton":"VD","status":"candidate","website":"http://www.cheserex.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cheserex.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' with 37 dated minutes links, e.g. 'Procès-verbal de la séance 26 mars 2026'"}]},{"bfs_id":5710,"name":"Coinsins","canton":"VD","status":"not_examined","website":"https://coinsins.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5711,"name":"Commugny","canton":"VD","status":"not_examined","website":"https://www.commugny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 5 pages tested (https://www.commugny.ch/N5153/pv-de-la-seance-du-18-mai-2022.html, https://www.commugny.ch/N5154/pv-de-la-seance-du-9-mars-2022.html, https://www.commugny.ch/N5155/pv-de-la-seance-du-17-mars-2021.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5712,"name":"Coppet","canton":"VD","status":"candidate","website":"https://www.coppet.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.coppet.ch/seances","from":"2012","to":"2026-08-31","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 106 sessions since 2012; decisions attached to the session pages as 'Extrait de décision-préavis-01-2026-2027'"}]},{"bfs_id":5713,"name":"Crans","canton":"VD","status":"not_examined","website":"https://www.cransvd.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 503\n\n2026-09-26 coverage review: Official document libraries reviewed with representative robots-permitted PDF byte checks. Official Crans VD website is cransvd.ch; municipal identity and administration address verified after the old Crans-pres-Celigny domain returned 503. Council library exposes 254 candidate PDF links.","publications":[]},{"bfs_id":5714,"name":"Crassier","canton":"VD","status":"not_examined","website":"http://www.crassier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 9 pages tested (https://www.crassier.ch/N652/proces-verbal-35-2024.html, https://www.crassier.ch/N654/proces-verbal-34-2024.html, https://www.crassier.ch/N656/proces-verbal-33-2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5715,"name":"Duillier","canton":"VD","status":"candidate","website":"https://www.duillier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.duillier.ch/N720/proces-verbaux-du-conseil-communal.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-Verbaux du Conseil communal' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5716,"name":"Eysins","canton":"VD","status":"not_examined","website":"http://www.eysins.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5717,"name":"Founex","canton":"VD","status":"not_examined","website":"https://www.founex.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.founex.ch/N956/proces-verbal-du-05.05.2025.html, https://www.founex.ch/N962/proces-verbal-du-03.03.2025.html, https://www.founex.ch/N977/proces-verbal-du-09.12.2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5718,"name":"Genolier","canton":"VD","status":"not_examined","website":"http://www.genolier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.genolier.ch/N799/proces-verbal-election-du-syndic.html, https://www.genolier.ch/N800/proces-verbal-election-des-suppleant-e-s-du-conseil-communal.html, https://www.genolier.ch/N801/proces-verbal-election-du-conseil-communal-2eme-tour.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5719,"name":"Gingins","canton":"VD","status":"not_examined","website":"https://www.gingins.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.gingins.ch/N1067/proces-verbal-du-13-mars-2024.html, https://www.gingins.ch/N1414/proces-verbal-du-20-juin-2024.html, https://www.gingins.ch/N1564/proces-verbal-du-9-octobre-2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5720,"name":"Givrins","canton":"VD","status":"not_examined","website":"https://www.givrins.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 7 pages tested (https://www.givrins.ch/N838/proces-verbal.html, https://www.givrins.ch/N839/proces-verbal.html, https://www.givrins.ch/N840/proces-verbal.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5721,"name":"Gland","canton":"VD","status":"configured","website":"https://gland.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.gland.ch/ma-ville/conseil-communal/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5722,"name":"Grens","canton":"VD","status":"candidate","website":"http://www.grens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.grens.ch/Vie-politique-et-reglements#_4","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Conseil Général: Ordre du jour et PV' has 56 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5723,"name":"Mies","canton":"VD","status":"not_examined","website":"http://www.mies.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 7 pages tested (https://www.mies.ch/N992/03.10.2021-proces-verbal.html, https://www.mies.ch/N993/10.03.2021-extrait-du-proces-verbal.html, https://www.mies.ch/N999/13.10.2021-proces-verbal.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5724,"name":"Nyon","canton":"VD","status":"blocked_js","website":"http://www.nyon.ch","vendor":"iomedia-nuxt","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil communal; bundle /_nuxt/5ea42bf.js sends the request as JSON; not entered because the history is unreachable; robots.txt also disallows named AI bots; the session list is an iomedia Nuxt app (issue #30, #10)\n\n2026-09-26 coverage review: Reviewed public municipal HTML document pages and sample PDF bytes. Broad accounts, regulations and council sections collected through public HTML; blocked allinone.io API is not used.","publications":[{"body":"parliament","kind":"minutes","status":"blocked_js","listing_url":"https://www.nyon.ch/nyon-officiel/autorites/conseil-communal/seances-1640","from":"2026","to":"2026","cadence":null,"obstacle":"server HTML holds only the current year's sessions; the year picker (2010-2026) is a Vue component that queries the iomedia API /api/contents client-side; a GET on /api/contents returns 404","how":"iomedia JSON adapter (/api/contents, type seances, date_start/date_end, JSON request)"}]},{"bfs_id":5725,"name":"Prangins","canton":"VD","status":"candidate","website":"https://www.prangins.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://prangins.ch/autorites-communales/bienvenue/Agenda_CC/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Dates et PV des séances du Conseil commu' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5726,"name":"La Rippe","canton":"VD","status":"candidate","website":"https://www.larippe.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_dated_links\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.larippe.ch/N1593/les-extraits-de-decisions.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Lire l'article' has 6 dated document links whose URLs do not end in .pdf; needs a selector"}]},{"bfs_id":5727,"name":"Saint-Cergue","canton":"VD","status":"not_examined","website":"https://www.st-cergue.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5728,"name":"Signy-Avenex","canton":"VD","status":"not_examined","website":"https://www.signy.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (https://www.signy.ch/N533/conseil-general.html, https://www.signy.ch/N535/prochaines-seances-du-conseil-general-en-2026.html, https://www.signy.ch/N1583/communications-du-conseil-general.html)\n\n2026-09-26 coverage review: Official former signy-avenex.ch domain redirects to signy.ch; register website corrected. Public regulations and council-document widgets and representative PDF bytes verified.","publications":[]},{"bfs_id":5729,"name":"Tannay","canton":"VD","status":"candidate","website":"http://www.tannay.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.tannay.ch/preavis-decisions-fr9259.html","from":null,"to":"2024-05-29","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2024-05-29, e.g. 'Rapport de la commission ad-hoc fusion du 29.05.2024 - Préav'; body guessed from the URL"}]},{"bfs_id":5730,"name":"Trélex","canton":"VD","status":"candidate","website":"https://www.trelex.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n\n2026-09-26 coverage review: Official document libraries reviewed with representative robots-permitted PDF byte checks. Observed Quicksite document widgets expose scoped public search endpoints and pagination; the existing collector handles them.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.trelex.ch/documents-conseil-communal?t=tagstext%3A'documents.Proc%C3%A8s+verbal'&M=896","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5731,"name":"Le Vaud","canton":"VD","status":"not_examined","website":"http://www.levaud.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":5732,"name":"Vich","canton":"VD","status":"candidate","website":"https://www.vich.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vich.ch/seances-2016-2021","from":null,"to":"2021-06-22","cadence":null,"obstacle":null,"how":"probe: 30 dated PDF links on the page, newest 2021-06-22, e.g. 'Décisions'; body guessed from the URL"}]},{"bfs_id":5741,"name":"L'Abergement","canton":"VD","status":"candidate","website":"https://www.labergement.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.labergement.ch/conseil-general-fr1182.html","from":null,"to":"2025-12-08","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2025-12-08, e.g. 'PV Conseil 08.12.2025.pdf'; body guessed from the URL"}]},{"bfs_id":5742,"name":"Agiez","canton":"VD","status":"candidate","website":"https://agiez.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://agiez.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-05-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 10 files match, newest 2026-05-11, e.g. '20260511 &#8211; PV'; body guessed from the URL"}]},{"bfs_id":5743,"name":"Arnex-sur-Orbe","canton":"VD","status":"candidate","website":"https://www.arnex-sur-orbe.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.arnex-sur-orbe.ch/documents-2021-2026-fr7296.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions du Conseil 2026/2031' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5744,"name":"Ballaigues","canton":"VD","status":"candidate","website":"http://www.ballaigues.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.ballaigues.ch/ballaigues-officiel/conseil-communal/pv-s%C3%A9ances-conseil-communal-2021.html","from":null,"to":"2023-12-01","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2023-12-01, e.g. '8PV_20_1er_décembre_2023_v2.pdf'; body guessed from the URL"}]},{"bfs_id":5745,"name":"Baulmes","canton":"VD","status":"not_examined","website":"https://www.baulmes.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5746,"name":"Bavois","canton":"VD","status":"not_examined","website":"https://www.bavois.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 4 pages tested (https://www.bavois.ch/files/1641300816-proces-verbal_conseil-5-10-2021-2482.pdf, https://www.bavois.ch/files/1641301101-proces-verbal-2393.pdf, https://www.bavois.ch/files/1641301098-proces-verbal-2255.pdf)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5747,"name":"Bofflens","canton":"VD","status":"not_examined","website":"https://www.bofflens.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5748,"name":"Bretonnières","canton":"VD","status":"not_examined","website":"https://bretonnieres.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the website address does not resolve (stale address in the commune list?)\n\n2026-09-26 coverage review: Reviewed official document sections, robots rules and representative PDF bytes. New official bretonnieres.ch domain replaces obsolete 1329.ch; municipal identity verified.","publications":[]},{"bfs_id":5749,"name":"Chavornay","canton":"VD","status":"not_examined","website":"http://www.chavornay.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 50 sessions since 2018 (Assermentation des membres du Conseil communal et , Conseil Communal du 12 décembre 2019, Conseil Communal du 12 mars 20); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5750,"name":"Les Clées","canton":"VD","status":"candidate","website":"https://www.lesclees.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.lesclees.ch/conseil-general-fr578.html","from":null,"to":"2025-12-09","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2025-12-09, e.g. 'Procès-verbal décisionnel (extrait) - Séance du 09.12.2025'; body guessed from the URL"}]},{"bfs_id":5752,"name":"Croy","canton":"VD","status":"candidate","website":"http://www.croy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://croy.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2025-12-15, e.g. '36. PV 15.12.2025versionvotée'; body guessed from the URL"}]},{"bfs_id":5754,"name":"Juriens","canton":"VD","status":"candidate","website":"https://www.juriens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.juriens.ch/N959/proces-verbaux.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' names the minutes but links no PDF (subpages or JavaScript); needs a look"}]},{"bfs_id":5755,"name":"Lignerolle","canton":"VD","status":"not_examined","website":"https://www.lignerolle.ch","vendor":"custom","reachable":null,"checked":null,"checked_by":null,"notes":"2026-09-26 coverage review: New official website identified and municipal identity verified; previously no website recorded. Public documents and representative PDF bytes verified. Flat reviewed document pages are explicit seeds; collection is not a whole-site completeness claim.","publications":[]},{"bfs_id":5756,"name":"Montcherand","canton":"VD","status":"not_published","website":"https://www.montcherand.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":"Infomaniak Site Creator; the conseil general page has the reglement, the archive page 60 PDFs without PV","how":"ask commune"}]},{"bfs_id":5757,"name":"Orbe","canton":"VD","status":"configured","website":"https://www.orbe.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.orbe.ch/officiel/autorites/conseil-communal/proces-verbaux.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5758,"name":"La Praz","canton":"VD","status":"candidate","website":"https://lapraz.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lapraz.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-07","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2026-04-07, e.g. 'PV-Election-syndicature-20260407-1'; body guessed from the URL"}]},{"bfs_id":5759,"name":"Premier","canton":"VD","status":"not_examined","website":"http://www.premier.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://premier.ch/municipalite-conseil/)","publications":[]},{"bfs_id":5760,"name":"Rances","canton":"VD","status":"not_examined","website":"https://www.rances.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://rances.ch/conseil-general/)","publications":[]},{"bfs_id":5761,"name":"Romainmôtier-Envy","canton":"VD","status":"candidate","website":"http://www.romainmotier.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://romainmotier.ch/ma-commune/conseil-general/proces-verbaux-des-conseils-generaux-legislature-2021-2026/","from":null,"to":"2025-10-07","cadence":null,"obstacle":null,"how":"probe: 15 dated PDF links on the page, newest 2025-10-07, e.g. 'PV du Conseil du 7 octobre 202'; body guessed from the URL"}]},{"bfs_id":5762,"name":"Sergey","canton":"VD","status":"candidate","website":"https://www.sergey.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.sergey.ch/conseil-general-fr1182.html","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2026-06-10, e.g. 'Procès-verbal décisionnel du 10 juin 2026'; body guessed from the URL"}]},{"bfs_id":5763,"name":"Valeyres-sous-Rances","canton":"VD","status":"not_examined","website":"https://www.valeyres-sous-rances.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5764,"name":"Vallorbe","canton":"VD","status":"not_examined","website":"https://www.vallorbe.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 82 sessions since 2013 (La séance du Conseil communal est ANNULEE, Séance du Conseil communal, Séance du Conseil communal - ANNULEE, Séance du C); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5765,"name":"Vaulion","canton":"VD","status":"candidate","website":"https://www.vaulion.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vaulion.ch/proces-verbaux","from":null,"to":"2025-06-19","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2025-06-19, e.g. 'Séance du 19 juin 2025'; body guessed from the URL"}]},{"bfs_id":5766,"name":"Vuiteboeuf","canton":"VD","status":"not_examined","website":"http://www.vuiteboeuf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5785,"name":"Corcelles-le-Jorat","canton":"VD","status":"not_examined","website":"https://www.corcelles-le-jorat.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5790,"name":"Maracon","canton":"VD","status":"candidate","website":"https://www.maracon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://maracon.ch/officiel/conseil-general/#preavis-decisions","from":null,"to":"2026-01-28","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-01-28, e.g. 'Décisions du 28 janvier 2026'; body guessed from the URL"}]},{"bfs_id":5792,"name":"Montpreveyres","canton":"VD","status":"candidate","website":"http://www.montpreveyres.ch","vendor":"localcities","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Observed flat archive detail URLs are explicit seeds; further unseen flat routes require review.","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://www.montpreveyres.ch/seances-ordinaires-de-la-municipalite-fr234.html","from":null,"to":"2026-08-24","cadence":null,"obstacle":null,"how":"probe: 94 dated PDF links on the page, newest 2026-08-24, e.g. 'Décisions municipales du 24 août 2026'; body guessed from the URL"}]},{"bfs_id":5798,"name":"Ropraz","canton":"VD","status":"not_examined","website":"http://www.ropraz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.ropraz.ch/N714/proces-verbal.html, https://www.ropraz.ch/N715/proces-verbal.html, https://www.ropraz.ch/N716/proces-verbal.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5799,"name":"Servion","canton":"VD","status":"not_examined","website":"http://www.servion.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 8 pages tested (https://www.servion.ch/N1344/proces-verbal-de-la-seance-du-18-mars-2024.html, https://www.servion.ch/N1362/proces-verbal-de-la-seance-du-1-decembre-2023.html, https://www.servion.ch/N1376/proces-verbal-de-la-seance-du-30-octobre-2023.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5803,"name":"Vulliens","canton":"VD","status":"candidate","website":"http://www.vulliens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.vulliens.ch/Vie-politique-et-reglements#_10","from":null,"to":"2026-01-06","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-01-06, e.g. 'Règlement sur le cimetière et les inhumations du 06.01.2026'; body guessed from the URL"}]},{"bfs_id":5804,"name":"Jorat-Menthue","canton":"VD","status":"candidate","website":"http://www.jorat-menthue.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.jorat-menthue.ch/conseil.php","from":null,"to":"2025-12-08","cadence":null,"obstacle":null,"how":"probe: 7 dated PDF links on the page, newest 2025-12-08, e.g. 'PV séance'; body guessed from the URL"}]},{"bfs_id":5805,"name":"Oron","canton":"VD","status":"configured","website":"https://www.oron.ch","vendor":"quicksite","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Conseil communal; the visible page /documents-conseil is client-rendered; the widget (section.tplDeepsearch data-elasticsearch-* attributes plus /coreapi/elasticsearch/projects/<project>/assets/js/elasticsearch.js) GETs <view>/search with the data attributes as query parameters","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.oron.ch/coreapi/elasticsearch/projects/oron25/documentconseildates/search?q=&elasticsearchNode=727&elasticsearchPagesize=500&elasticsearchParentnode=727&elasticsearchSort=date_extid_asc_rank&elasticsearchView=documentconseildates&query=&date_from=&date_to=&page={1..4}","from":"2012-03-26","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 1 hop over the search widget's GET endpoint (returns server HTML), page range {1..4}, PVs selected by text"}]},{"bfs_id":5806,"name":"Jorat-Mézières","canton":"VD","status":"candidate","website":"http://www.jorat-mezieres.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.jorat-mezieres.ch/decisions-municipales-fr4180.html","from":null,"to":"2026-08-31","cadence":null,"obstacle":null,"how":"probe: 73 dated PDF links on the page, newest 2026-08-31, e.g. 'Séance du 31 août 2026'; body guessed from the URL"}]},{"bfs_id":5812,"name":"Champtauroz","canton":"VD","status":"not_examined","website":"https://champtauroz.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Official document libraries reviewed with representative robots-permitted PDF byte checks. External asset scope is restricted to the reviewed document directory linked by the official municipality.","publications":[]},{"bfs_id":5813,"name":"Chevroux","canton":"VD","status":"not_examined","website":"http://www.chevroux.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.chevroux.ch/N696/proces-verbal-de-la-seance-du-conseil-general-du-7-octobre-2024.html, https://www.chevroux.ch/N697/proces-verbal-de-la-seance-du-conseil-general-du-24-juin-2024.html, https://www.chevroux.ch/N698/proces-verbal-de-la-seance-du-conseil-general-du-25-mars-2024.html)\n\n2026-09-26 coverage review: Verified public Quicksite document listings and sample PDF bytes. Scoped search widgets, pagination and legacy file-node links enter the resumable archive without title filters; final PDF bytes are verified during download.","publications":[]},{"bfs_id":5816,"name":"Corcelles-près-Payerne","canton":"VD","status":"candidate","website":"https://www.corcelles.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://corcelles.ch/proces-verbaux","from":null,"to":"2026-03-18","cadence":null,"obstacle":null,"how":"probe: 32 dated PDF links on the page, newest 2026-03-18, e.g. 'Procès-verbal de la séance du 18 mars 2026'; body guessed from the URL"}]},{"bfs_id":5817,"name":"Grandcour","canton":"VD","status":"candidate","website":"https://www.grandcour.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.grandcour.ch/officiel/autorites/conseil-communal-proc%C3%A8s-verbaux.html","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 8 dated PDF links on the page, newest 2026-06-25, e.g. 'PV du CC du 25.06.2026.pdf'; body guessed from the URL"}]},{"bfs_id":5819,"name":"Henniez","canton":"VD","status":"not_examined","website":"http://www.commune-henniez.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5821,"name":"Missy","canton":"VD","status":"not_examined","website":"https://www.missy.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5822,"name":"Payerne","canton":"VD","status":"candidate","website":"https://www.payerne.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-27","checked_by":"OpenCommune official archive and full PDF review","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)\n\n2026-09-27: Official WordPress council, budgets/accounts, regulations and newsletter archive verified. Server omits the DigiCert intermediate; official issuer validated against existing roots restores verified TLS. Full PDF GET validated. Raw linked archive configured without year or title filters.","publications":[]},{"bfs_id":5827,"name":"Trey","canton":"VD","status":"not_examined","website":"https://www.trey.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.trey.ch/conseilGeneral/index.php)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5828,"name":"Treytorrens","canton":"VD","status":"not_examined","website":"https://www.treytorrens.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.treytorrens.ch/officiel.html#content12-3t)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5830,"name":"Villarzel","canton":"VD","status":"candidate","website":"https://villarzel.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://villarzel.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-11-28","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 17 files match, newest 2025-11-28, e.g. 'PV_Conseil Général_28.11.2025'; body guessed from the URL"}]},{"bfs_id":5831,"name":"Valbroye","canton":"VD","status":"candidate","website":"http://www.valbroye.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.valbroye.ch/toutes-les-actualites/1281-d-cisions-du-conseil-communal.html","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions du Conseil communal' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5841,"name":"Château-d'Oex","canton":"VD","status":"not_examined","website":"https://www.chateaudoex-admin.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 72 sessions since 2016 (Installation des autorités communales 2026-2031, Séance Assermentation des autorités communales, Séance d'information ex); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5842,"name":"Rossinière","canton":"VD","status":"candidate","website":"https://rossiniere.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://rossiniere.ch/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Procès-verbaux' with 13 dated minutes links, e.g. 'Procès-verbal de la séance du 25 mars 2025'"}]},{"bfs_id":5843,"name":"Rougemont","canton":"VD","status":"not_examined","website":"https://rougemont.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5851,"name":"Allaman","canton":"VD","status":"not_examined","website":"https://www.allaman.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 66 sessions since 2011 (Assermentation des autorités (Législatif - Exécuti, Conseil Général, Conseil Général - Séance extraordinaire, Détails à ); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5852,"name":"Bursinel","canton":"VD","status":"not_examined","website":"http://www.bursinel.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (http://bursinel.ch/administration/conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5853,"name":"Bursins","canton":"VD","status":"candidate","website":"https://www.bursins.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bursins.ch/Vie-politique-et-reglements#_7","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV et convocation d'assemblée' has 57 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5854,"name":"Burtigny","canton":"VD","status":"not_examined","website":"https://www.burtigny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 8 pages tested (https://www.burtigny.ch/N1625/proces-verbal-du-conseil-du-8-decembre.html, https://www.burtigny.ch/N1626/proces-verbal-du-conseil-du-23-septembre.html, https://www.burtigny.ch/N1627/proces-verbal-du-conseil-du-10-decembre.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5855,"name":"Dully","canton":"VD","status":"not_examined","website":"http://www.dully.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":5856,"name":"Essertines-sur-Rolle","canton":"VD","status":"candidate","website":"https://www.essertines-sur-rolle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.essertines-sur-rolle.ch/Vie-politique-et-reglements#_8","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Odj et PV' has 37 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5857,"name":"Gilly","canton":"VD","status":"candidate","website":"https://www.gilly.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gilly.ch/Vie-politique-et-reglements#_5","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV et convocation d'assemblée' has 120 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5858,"name":"Luins","canton":"VD","status":"candidate","website":"http://www.luins.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.luins.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 20 files match, newest 2025-12-11, e.g. 'Extrait PV Conseil 11.12.2025-Budget 2026'; body guessed from the URL"}]},{"bfs_id":5859,"name":"Mont-sur-Rolle","canton":"VD","status":"candidate","website":"https://www.mont-sur-rolle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://mont-sur-rolle.ch/officiel/autorites/preavis-municipaux-et-decisions.html","from":null,"to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: 52 dated PDF links on the page, newest 2026-06-19, e.g. 'Ordre du jour'; body guessed from the URL"}]},{"bfs_id":5860,"name":"Perroy","canton":"VD","status":"candidate","website":"https://www.perroy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.perroy.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-26","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 96 files match, newest 2026-03-26, e.g. 'CC_PV 26.03.2026_signé'; body guessed from the URL"}]},{"bfs_id":5861,"name":"Rolle","canton":"VD","status":"not_examined","website":"https://www.rolle.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; probe 2026-09-10: no dated protocol PDFs on 6 pages tested (https://www.rolle.ch/N1811/proces-verbal.html, https://www.rolle.ch/N1812/proces-verbal.html, https://www.rolle.ch/N1813/proces-verbal.html)\n\n2026-09-26 coverage review: Additional public Quicksite document sections and representative PDF bytes verified. Both current widgets and older document templates enter the resumable linked archive, without title filters.","publications":[]},{"bfs_id":5862,"name":"Tartegnin","canton":"VD","status":"not_examined","website":"https://www.tartegnin.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.tartegnin.ch/Documents-du-conseil#_1)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5863,"name":"Vinzel","canton":"VD","status":"not_examined","website":"http://www.vinzel.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.vinzel.ch/conseil-general/)","publications":[]},{"bfs_id":5871,"name":"L'Abbaye","canton":"VD","status":"candidate","website":"https://www.labbaye.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.labbaye.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-09-08","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 43 files match, newest 2026-09-08, e.g. 'Extrait de PV du 08.09.2026'; body guessed from the URL"}]},{"bfs_id":5872,"name":"Le Chenit","canton":"VD","status":"configured","website":"https://www.communeduchenit.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; anchor text 'PDF'; 5 pages today, page 6 is slack","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.communeduchenit.ch/seances/page/{1..6}/","from":"2022-06-27","to":"2026-05-11","cadence":null,"obstacle":null,"how":"html_links, 1 hop, /page/{1..6}/, date from file name PV-CC-Chenit-dd.mm.yyyy.pdf"}]},{"bfs_id":5873,"name":"Le Lieu","canton":"VD","status":"not_examined","website":"https://www.lelieu.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 54 sessions since 2009 (Conseil communal, Séance / assemblée); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":5882,"name":"Chardonne","canton":"VD","status":"configured","website":"https://www.chardonne.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal PV next to the ordres du jour; Crawl-delay 10","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.chardonne.ch/conseil-communal/","from":"2024-03-26","to":"2026-06-23","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":5883,"name":"Corseaux","canton":"VD","status":"candidate","website":"https://www.corseaux.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.corseaux.ch/calendriers-des-seances","from":"2026","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 4 sessions since 2026; minutes attached to the session pages as 'PV du Conseil communal - déance du 27.04.2026'"}]},{"bfs_id":5884,"name":"Corsier-sur-Vevey","canton":"VD","status":"configured","website":"https://www.corsier-sur-vevey.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://corsier-sur-vevey.ch/agenda/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 2 hops"}]},{"bfs_id":5885,"name":"Jongny","canton":"VD","status":"candidate","website":"http://www.jongny.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://jongny.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 13 files match, newest 2025-12-10, e.g. 'Pv_CC_10.12.25_provisoire_ok'; body guessed from the URL"}]},{"bfs_id":5886,"name":"Montreux","canton":"VD","status":"configured","website":"https://www.montreux.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.montreux.ch/autorites-et-services-communaux/conseilcommunal","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5889,"name":"La Tour-de-Peilz","canton":"VD","status":"configured","website":"https://www.la-tour-de-peilz.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.la-tour-de-peilz.ch/politique/proces-verbaux.php","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5890,"name":"Vevey","canton":"VD","status":"configured","website":"https://www.vevey.ch","vendor":"drupal","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.vevey.ch/vie-politique/conseil-communal/seances-passees-et-videos?page={0..12}","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5891,"name":"Veytaux","canton":"VD","status":"not_examined","website":"https://www.veytaux.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: page 'Ordres du jour et procès-verbaux' carries 70 protocol-like links without parseable dates: https://veytaux.ch/ordres-du-jour-et-proces-verbaux","publications":[]},{"bfs_id":5892,"name":"Blonay - Saint-Légier","canton":"VD","status":"candidate","website":"https://www.blonay-saint-legier.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.blonay-saint-legier.ch/seances","from":"2011","to":"2026-09-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 234 sessions since 2011; minutes attached to the session pages as 'Procès-verbal du 23 juin 2026'"}]},{"bfs_id":5902,"name":"Belmont-sur-Yverdon","canton":"VD","status":"not_examined","website":"http://www.belmont-sur-yverdon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5903,"name":"Bioley-Magnoux","canton":"VD","status":"candidate","website":"https://www.bioley-magnoux.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"executive","kind":"minutes","status":"candidate","listing_url":"https://bioley-magnoux.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-29","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 5 files match, newest 2026-03-29, e.g. 'PV Tirage au sort Election Municipalité 2ème tour 29 mars '; body guessed from the URL"}]},{"bfs_id":5904,"name":"Chamblon","canton":"VD","status":"candidate","website":"http://www.chamblon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://chamblon.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 112 files match, newest 2026-06-10, e.g. 'Assermentation et installation des autotorités du 10.06.2026'; body guessed from the URL"}]},{"bfs_id":5905,"name":"Champvent","canton":"VD","status":"candidate","website":"https://www.champvent.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://champvent.ch/conseil-general","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2025-12-16, e.g. 'Procès-verbal | Conseil Général du 16.12.2025'; body guessed from the URL"}]},{"bfs_id":5907,"name":"Chavannes-le-Chêne","canton":"VD","status":"candidate","website":"http://www.chavannes-le-chene.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://chavannes-le-chene.ch/administration/conseil-general","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2026-06-10, e.g. 'Convocation au Conseil général 10 juin 2026'; body guessed from the URL"}]},{"bfs_id":5908,"name":"Chêne-Pâquier","canton":"VD","status":"not_examined","website":"https://www.chene-paquier.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.chene-paquier.ch/administration-autorites/conseil-general)","publications":[]},{"bfs_id":5909,"name":"Cheseaux-Noréaz","canton":"VD","status":"candidate","website":"https://www.cheseaux-noreaz.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://cheseaux-noreaz.ch/officiel/documents/proces-verbaux","from":null,"to":"2025-12-09","cadence":null,"obstacle":null,"how":"probe: 14 dated PDF links on the page, newest 2025-12-09, e.g. 'Procès-verbal de la séance du 9 décembre 2025'; body guessed from the URL"}]},{"bfs_id":5910,"name":"Cronay","canton":"VD","status":"not_examined","website":"https://www.cronay.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.cronay.ch/index.php/officiel/conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5911,"name":"Cuarny","canton":"VD","status":"candidate","website":"http://www.cuarny.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.cuarny.ch/conseil-general/proces-verbaux","from":null,"to":"2025-12-15","cadence":null,"obstacle":null,"how":"probe: 16 dated PDF links on the page, newest 2025-12-15, e.g. 'PV n°15 : 15 décembre 2025'; body guessed from the URL"}]},{"bfs_id":5912,"name":"Démoret","canton":"VD","status":"not_examined","website":"https://www.demoret.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://demoret.ch/2026_seance-de-tir-base-logo/)","publications":[]},{"bfs_id":5913,"name":"Donneloye","canton":"VD","status":"candidate","website":"https://www.donneloye.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.donneloye.ch/officiel/conseil-general","from":null,"to":"2025-12-03","cadence":null,"obstacle":null,"how":"probe: 9 dated PDF links on the page, newest 2025-12-03, e.g. 'Lors de la séance du conseil général de Donneloye le mercred'; body guessed from the URL"}]},{"bfs_id":5914,"name":"Ependes","canton":"VD","status":"configured","website":"https://www.ependesvd.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; Conseil general; the PV is bundled with the convocation ('Ordre du jour - PV - Preavis' -> Conseil-du-10.06.2026.pdf), older years have 'Proces verbal' -> PV-15.06.2022.pdf; 5 found 5 dated of about 10 PV files; vendor doc marks it partial; no date range stated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry; wave 2: configured and validated with the crawler (one PDF downloaded); body corrected to assembly (the VD Conseil general is the citizens' assembly), the parliament publication of the first examination was dropped","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://ependesvd.ch/vie-politique/conseil-general/","from":"2021-12-08","to":"2026-06-10","cadence":null,"obstacle":"since 2023 the PV is bundled with the next convocation and preavis in one file ('Ordre du jour - PV - Preavis' -> Conseil-du-10.06.2026.pdf, 80 MB scanned), so the listing date is the convocation's session, not the PV's; 2021-2022 have plain 'Proces verbal' files; two 'Ordre du jour et PV' files carry no date","how":"html_links, 1 hop, Elementor tabs per year; 9 found, 7 dated; Crawl-delay 10 s"}]},{"bfs_id":5919,"name":"Mathod","canton":"VD","status":"candidate","website":"http://www.mathod.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.mathod.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 8 files match, newest 2026-06-16, e.g. 'Extrait PV 16.6.26'; body guessed from the URL"}]},{"bfs_id":5921,"name":"Molondin","canton":"VD","status":"not_published","website":"https://www.molondin.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"docs/VENDOR-PATTERNS.md only","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://molondin.ch/conseil-general/proces-verbaux","from":null,"to":null,"cadence":null,"obstacle":"the PV page exists in the menu but contains no documents (municipal /municipalite/proces-verbaux holds preavis only)","how":"ask commune"}]},{"bfs_id":5922,"name":"Montagny-près-Yverdon","canton":"VD","status":"candidate","website":"http://www.montagny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.montagny.ch/conseil.php","from":null,"to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: 16 dated PDF links on the page, newest 2026-06-22, e.g. 'Extrait de procès-verbal'; body guessed from the URL"}]},{"bfs_id":5923,"name":"Oppens","canton":"VD","status":"not_examined","website":"http://www.oppens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":5924,"name":"Orges","canton":"VD","status":"not_examined","website":"https://www.orges.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.orges.ch/conseil-general)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5925,"name":"Orzens","canton":"VD","status":"not_examined","website":"http://www.orzens.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://orzens.ch/conseil-general/)","publications":[]},{"bfs_id":5926,"name":"Pomy","canton":"VD","status":"not_examined","website":"http://www.pomy.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://pomy.ch/conseil-general/?doing_wp_cron=1789046221.4395179748535156250000#titre-conseil-general)\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[]},{"bfs_id":5928,"name":"Rovray","canton":"VD","status":"not_examined","website":"http://www.rovray.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5929,"name":"Suchy","canton":"VD","status":"not_examined","website":"http://www.suchy.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://suchy.ch/cadre-politique-juridique/conseil-general/)","publications":[]},{"bfs_id":5930,"name":"Suscévaz","canton":"VD","status":"not_examined","website":"http://www.suscevaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5931,"name":"Treycovagnes","canton":"VD","status":"candidate","website":"http://treycovagnes.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://treycovagnes.ch/Vie-politique-et-reglements#_14","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Conseil Communal - Préavis et PV' has 26 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":5932,"name":"Ursins","canton":"VD","status":"not_examined","website":"https://www.ursins.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.ursins.ch/conseil-general/, https://www.ursins.ch/conseil-general/)","publications":[]},{"bfs_id":5933,"name":"Valeyres-sous-Montagny","canton":"VD","status":"not_examined","website":"http://www.valeyres-sous-montagny.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 3 pages tested (http://www.valeyres-sous-montagny.ch/autorites/conseil-general, http://www.valeyres-sous-montagny.ch/files/50/2025/292/Preavis-N6-2025-annexe-1---extrait-du-PV-seance-conseil-intercommunal, http://www.valeyres-sous-montagny.ch/files/44/2023/143/Preavis-N3-2023-Annexe-2---Extrait-du-proces-verbal-de-la-seance-du-22-septembre-2022-du-Conseil-intercommunal-du-SDIS-Nord-vaudois)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":5934,"name":"Valeyres-sous-Ursins","canton":"VD","status":"candidate","website":"https://www.valeyres-sous-ursins.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://valeyres-sous-ursins.ch/preavis/","from":null,"to":"2025-12-01","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2025-12-01, e.g. 'Procès–verbal du 1er décembre 2025'; body guessed from the URL"}]},{"bfs_id":5935,"name":"Villars-Epeney","canton":"VD","status":"candidate","website":"http://www.villars-epeney.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"http://www.villars-epeney.ch/autorites/conseil-general/proces-verbaux","from":null,"to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: 43 dated PDF links on the page, newest 2026-06-16, e.g. ''; body guessed from the URL"}]},{"bfs_id":5937,"name":"Vugelles-La Mothe","canton":"VD","status":"candidate","website":"https://vugelleslamothe.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vugelleslamothe.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2026-04-29","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 22 files match, newest 2026-04-29, e.g. 'ASIGE-Extrait de PV_29_04_2026_gestion 24-25'; body guessed from the URL"}]},{"bfs_id":5938,"name":"Yverdon-les-Bains","canton":"VD","status":"configured","website":"https://www.yverdon-les-bains.ch","vendor":"typo3","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.yverdon-les-bains.ch/vie-politique/conseil-communal/seances","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":5939,"name":"Yvonand","canton":"VD","status":"configured","website":"https://yvonand.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil communal; anchor text CC_dd.mm.yyyy_PV no. N; a few files sit under /wp-content/sabai/File/files/<hash>.pdf (Sabai directory plugin); wp-download-manager site","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://yvonand.ch/vie-politique/proces-verbaux-du-conseil-communal/","from":"2019-01-28","to":"2026-06-25","cadence":null,"obstacle":null,"how":"html_links, 1 hop, selector on /wp-content/"}]},{"bfs_id":6002,"name":"Brig-Glis","canton":"VS","status":"configured","website":"https://www.brig-glis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Urversammlung protocols; Stadtrat decisions ('Ratsentscheide') are published as HTML posts, one per session, not as PDF; WP REST media API lists 20 Urversammlung protocol PDFs","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.brig-glis.ch/politik-verwaltung/behoerden/urversammlungen/","from":"2020-08-20","to":"2025-11-26","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6004,"name":"Eggerberg","canton":"VS","status":"not_examined","website":"https://www.eggerberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6007,"name":"Naters","canton":"VS","status":"configured","website":"https://www.naters.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"'Ratssitzung vom <date>' decision bulletins of the Gemeinderat, all on one page; Urversammlung info brochures exist but no assembly protocols","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.naters.ch/administratives-amtliches/infosdownload/","from":"2015-02-23","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6008,"name":"Ried-Brig","canton":"VS","status":"configured","website":"https://www.ried-brig.ch/","vendor":"megaphone","reachable":true,"checked":"2026-09-10","checked_by":"megaphone adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Megaphone site: minutes read through api.megaphone.info with the commune's origin","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://api.megaphone.info/v1/websites/25/pages/by_slug?lang=de&slug=/urversammlung&origin=https://ried-brig.ch","from":null,"to":null,"cadence":null,"obstacle":null,"how":"megaphone, 2 hops: page components, HTML blocks or attachment lists"}]},{"bfs_id":6009,"name":"Simplon","canton":"VS","status":"not_examined","website":"https://gemeinde-simplon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6010,"name":"Termen","canton":"VS","status":"not_examined","website":"https://www.termen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6011,"name":"Zwischbergen","canton":"VS","status":"candidate","website":"http://www.gondo.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://gondo.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2023-10-23","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 3 files match, newest 2023-10-23, e.g. 'Protokoll Nationalratswahlen 2023 10 23'; body guessed from the URL"}]},{"bfs_id":6021,"name":"Ardon","canton":"VS","status":"not_examined","website":"https://www.ardon.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6022,"name":"Chamoson","canton":"VS","status":"candidate","website":"https://www.chamoson.net","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.chamoson.net/fr/administration/vie-politique/decisions-1509/","from":null,"to":"2026-06-30","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2026-06-30, e.g. 'Population'; body guessed from the URL"}]},{"bfs_id":6023,"name":"Conthey","canton":"VS","status":"configured","website":"https://www.conthey.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.conthey.ch/fr/vie-officielle/autorites/conseil-general-2671/","from":"2024-12-10","to":"2025-12-16","cadence":null,"obstacle":"partial: Conseil general; same in-house system as Martigny; file names start with the posting date (2025.03.25-CG-PV-seance-constitutive-du-21.01.2025.pdf), so the parsed date is the posting date, not the session date; only the current legislature is on the page; report status 'ok (partial)'","how":"html_links, 1 hop, a[href*='/files/']"}]},{"bfs_id":6024,"name":"Nendaz","canton":"VS","status":"not_examined","website":"http://www.nendaz.org","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"not started: the agent stopped after 35 examined communes; the report table labels these rows 'needs manual work' with 'Not started'; examine site; batch website http://www.nendaz.org; probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6025,"name":"Vétroz","canton":"VS","status":"upstream_only","website":"http://www.vetroz.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6025.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6032,"name":"Bourg-Saint-Pierre","canton":"VS","status":"not_examined","website":"https://www.bourg-saint-pierre.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6033,"name":"Liddes","canton":"VS","status":"not_examined","website":"https://www.liddes.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6034,"name":"Orsières","canton":"VS","status":"configured","website":"https://orsieres.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"primary source: 33 fortnightly 'Extraits du Conseil' decision bulletins of the executive (anchor 'Telechargez le document', date in file name); second source: Assemblee primaire PV (document_kind minutes), only the newest one (2025-12-10) is online; register guess: kept configured although the assembly source has one document","publications":[{"body":"executive","kind":"extracts","status":"configured","listing_url":"https://orsieres.ch/publications/extraits-du-conseil/","from":"2025-01-15","to":"2026-06-03","cadence":null,"obstacle":null,"how":"html_links, 2 sources, 1 hop each"},{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://orsieres.ch/publications/assemblee-primaire/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":6035,"name":"Sembrancher","canton":"VS","status":"candidate","website":"https://www.sembrancher.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page; 2026-09-13 bounded archive review: public PDF links found, but sampled document paths are disallowed by robots.txt. No archive source added. See docs/CANDIDATE-SUBSET-REVIEW-2026-09-13.md.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.sembrancher.ch/page/publications/seances-du-conseil-municipal/","from":null,"to":"2026-07-15","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-07-15, e.g. 'Communication des discussions et décisions des 1er et 15 jui'; body guessed from the URL"}]},{"bfs_id":6037,"name":"Val de Bagnes","canton":"VS","status":"upstream_only","website":"https://www.valdebagnes.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6037.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6052,"name":"Bellwald","canton":"VS","status":"not_examined","website":"https://gemeinde.bellwald.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6054,"name":"Binn","canton":"VS","status":"not_examined","website":"https://www.binn.ch","vendor":"indual","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: home page carries no navigation without JavaScript; Megaphone application, but api.megaphone.info answers 'Website not found' for the site's origin (11 September 2026); the site may have moved\n\n2026-09-26 coverage review: Reviewed public municipal HTML document pages and sample PDF bytes. The current site is Indual, not Megaphone; opaque get_file links are PDF candidates.","publications":[]},{"bfs_id":6056,"name":"Ernen","canton":"VS","status":"not_examined","website":"https://www.ernen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6057,"name":"Fiesch","canton":"VS","status":"not_examined","website":"https://www.gemeinde-fiesch.ch/","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6058,"name":"Fieschertal","canton":"VS","status":"not_examined","website":"http://www.fieschertal.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6061,"name":"Lax","canton":"VS","status":"not_examined","website":"http://www.lax.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6076,"name":"Obergoms","canton":"VS","status":"not_examined","website":"https://gemeinde.obergoms.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6077,"name":"Goms","canton":"VS","status":"not_examined","website":"https://www.gemeinde-goms.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.gemeinde-goms.ch/gemeinde/sale-sitzungszimmer)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6082,"name":"Ayent","canton":"VS","status":"upstream_only","website":"http://www.ayent.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6082.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6083,"name":"Evolène","canton":"VS","status":"not_examined","website":"https://www.commune-evolene.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6084,"name":"Hérémence","canton":"VS","status":"candidate","website":"https://www.heremence.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"candidate","listing_url":"https://www.heremence.ch/commune/decisions-conseil-communal-1009.html","from":null,"to":"2025-10-30","cadence":null,"obstacle":null,"how":"probe: 15 dated PDF links on the page, newest 2025-10-30, e.g. 'Décisions du conseil communal du 30 octobre 2025'; body guessed from the URL"}]},{"bfs_id":6087,"name":"Saint-Martin","canton":"VS","status":"not_examined","website":"http://www.saint-martin.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6089,"name":"Vex","canton":"VS","status":"candidate","website":"http://www.vex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://vex.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2023-06-06","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 18 files match, newest 2023-06-06, e.g. 'PV-AP 2023.06.06'; body guessed from the URL"}]},{"bfs_id":6090,"name":"Mont-Noble","canton":"VS","status":"not_examined","website":"https://www.mont-noble.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6101,"name":"Agarn","canton":"VS","status":"not_examined","website":"http://www.agarn.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6102,"name":"Albinen","canton":"VS","status":"configured","website":"https://www.albinen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; Gemeinderat decision bulletins (Publikation Gemeinderatsbeschluesse) 2022-2026; Divi text modules, one p > strong > a per session; date only in the URL (2026_08_26-Publikation-Gemeinderatsbeschluesse-26.08.2026.pdf); 33 found, 32 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://albinen.ch/politik-verwaltung/gemeinderat-beschluesse/","from":"2022","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6104,"name":"Ergisch","canton":"VS","status":"not_examined","website":"https://www.ergisch.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6109,"name":"Inden","canton":"VS","status":"not_examined","website":"https://www.inden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":6110,"name":"Leuk","canton":"VS","status":"configured","website":"https://leuk.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-10","checked_by":"megaphone adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Megaphone site: minutes read through api.megaphone.info with the commune's origin","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://api.megaphone.info/v1/websites/89/pages/by_slug?lang=de&slug=/publikationen&origin=https://leuk.ch","from":null,"to":null,"cadence":null,"obstacle":null,"how":"megaphone, 2 hops: page components, HTML blocks or attachment lists"}]},{"bfs_id":6111,"name":"Leukerbad","canton":"VS","status":"not_examined","website":"https://www.leukerbad.org","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 7 sessions since 2021 (Urversammlung, Urversammlung vom, a.o. Urversammlung 5.12.2023); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6112,"name":"Oberems","canton":"VS","status":"not_examined","website":"https://www.oberems.ch","vendor":"custom","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 404\n\n2026-09-26 coverage review: The obsolete registered /gemeinde/index.htm path returns 404; the current official root and administration pages expose municipal PDF libraries. Identity, robots permissions and PDF response bytes verified.","publications":[]},{"bfs_id":6113,"name":"Salgesch","canton":"VS","status":"not_examined","website":"https://www.salgesch.ch","vendor":"wordpress","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: the homepage did not answer during the run but does now; probe again","publications":[]},{"bfs_id":6116,"name":"Varen","canton":"VS","status":"not_examined","website":"http://www.varen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 28 sessions since 2013 (Ausserordentl. Urversammlung, Urversammlung, Urversammlung (findet erst im Februar 2025 statt), Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6117,"name":"Guttet-Feschel","canton":"VS","status":"candidate","website":"https://www.guttet-feschel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.guttet-feschel.ch/sitzung","from":"2013","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 28 sessions since 2013; minutes attached to the session pages as 'UV_Protokoll_16032026_öffentlich'"}]},{"bfs_id":6118,"name":"Gampel-Bratsch","canton":"VS","status":"not_examined","website":"http://www.gampel-bratsch.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":6119,"name":"Turtmann-Unterems","canton":"VS","status":"not_examined","website":"https://www.turtmann-unterems.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6131,"name":"Bovernier","canton":"VS","status":"not_examined","website":"https://www.bovernier.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6133,"name":"Fully","canton":"VS","status":"upstream_only","website":"https://www.fully.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed public PDF response bytes and municipal provenance. Megaphone site identity and origin verified through the public tenant API; only reviewed page slugs and their public document components are collected.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6133.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6134,"name":"Isérables","canton":"VS","status":"candidate","website":"https://iserables.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://iserables.ch/wp-json/wp/v2/media?search=verbal&mime_type=application/pdf&per_page=20","from":null,"to":"2024-06-20","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 4 files match, newest 2024-06-20, e.g. 'Procès-verbal de l&rsquo;Assemblée Primaire &#8211; 20 juin '; body guessed from the URL"}]},{"bfs_id":6135,"name":"Leytron","canton":"VS","status":"not_examined","website":"http://www.leytron.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6136,"name":"Martigny","canton":"VS","status":"configured","website":"https://www.martigny.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil general; in-house site (URL shape /fr/<section>/<name>-<id>/, files under /files/), same shape as Conthey; one page, all years; nothing newer than May 2025 on the page","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.martigny.ch/fr/votre-municipalite/autorites/conseil-general-30/","from":"2021-01-19","to":"2025-05-27","cadence":null,"obstacle":null,"how":"html_links, 1 hop, a[href*='/files/'] with a PV regex"}]},{"bfs_id":6137,"name":"Martigny-Combe","canton":"VS","status":"not_examined","website":"https://www.martigny-combe.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6139,"name":"Riddes","canton":"VS","status":"not_found","website":"https://www.riddes.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: the search finds 'verbal' only on the budget page, no minutes; conseil pages carry other documents\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6140,"name":"Saillon","canton":"VS","status":"candidate","website":"https://www.saillon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.saillon.ch/assemblees","from":"2021","to":"2026-05-28","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2021; minutes attached to the session pages as 'Procès-verbal assemblée bourgeoisiale du 27 novembre 2025'"}]},{"bfs_id":6141,"name":"Saxon","canton":"VS","status":"configured","website":"https://www.saxon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.saxon.ch/protocoles-des-assemblees/","from":"2010-06-24","to":"2026-06-16","cadence":null,"obstacle":"partial: Assemblee primaire protocols; 20 of 34 undated because text and file name carry month and year only; one wrong date from the upload path (/uploads/2023/01/20221215_ read as 2022-01-23); bimonthly 'Decisions du conseil' bulletins of the executive on /decisions-du-conseil/ (undated anchor text) not configured; report status ok, register partial (59 percent undated)","how":"html_links, 1 hop; partial-date (month and year) support would date the rest"}]},{"bfs_id":6142,"name":"Trient","canton":"VS","status":"not_examined","website":"https://www.trient.ch","vendor":"drupal","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://trient.ch/administration/conseil-communal)","publications":[]},{"bfs_id":6151,"name":"Champéry","canton":"VS","status":"not_examined","website":"https://www.admin-champery.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":6152,"name":"Collombey-Muraz","canton":"VS","status":"not_published","website":"http://www.collombey-muraz.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Conseil general\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"parliament","kind":"minutes","status":"not_published","listing_url":"https://www.collombey-muraz.ch/commune/proces-verbal-seances-411.html","from":null,"to":null,"cadence":null,"obstacle":"the PV page says 'L'ensemble des PV seront rajoutes prochainement' and holds no PDF","how":"re-check later; ask commune"}]},{"bfs_id":6153,"name":"Monthey","canton":"VS","status":"configured","website":"https://www.monthey.ch","vendor":"qsportal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"Conseil general; vendor corrected: not WordPress but qsPortal custom CMS (the wp-content marker came from an external link); pagination is a form field that also works as a GET parameter","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.monthey.ch/N1406/pv-des-seances-du-conseil-general.html?Page_dphchildslinks={1..5}","from":"2009-02-12","to":"2026-03-23","cadence":null,"obstacle":null,"how":"html_links, 1 hop, page range {1..5}"}]},{"bfs_id":6154,"name":"Port-Valais","canton":"VS","status":"not_published","website":"https://www.port-valais.ch/","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.port-valais.ch/fr/assemblee-primaire-1463.html","from":null,"to":null,"cadence":null,"obstacle":"Assemblee primaire page has only news and enquete PDFs","how":"ask commune"}]},{"bfs_id":6155,"name":"Saint-Gingolph","canton":"VS","status":"candidate","website":"https://st-gingolph.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://st-gingolph.ch/administration/decisions-communales/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'Décisions communales' has 4 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":6156,"name":"Troistorrents","canton":"VS","status":"not_published","website":"http://www.troistorrents.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.troistorrents.ch/commune/assemblees-primaires-2859.html","from":null,"to":null,"cadence":null,"obstacle":"Assemblees primaires page and 'Decisions communales' (extract of executive decisions) carry no documents","how":"ask commune"}]},{"bfs_id":6157,"name":"Val-d'Illiez","canton":"VS","status":"not_examined","website":"https://www.illiez.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6158,"name":"Vionnaz","canton":"VS","status":"configured","website":"https://www.vionnaz.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-10","checked_by":"megaphone adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Megaphone site: minutes read through api.megaphone.info with the commune's origin","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://api.megaphone.info/v1/websites/81/pages/by_slug?lang=fr&slug=/assemblee-primaire&origin=https://www.vionnaz.ch","from":null,"to":null,"cadence":null,"obstacle":null,"how":"megaphone, 2 hops: page components, HTML blocks or attachment lists"}]},{"bfs_id":6159,"name":"Vouvry","canton":"VS","status":"blocked_js","website":"https://www.vouvry.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"2026-09-26 coverage review: Reviewed public PDF response bytes and municipal provenance. Megaphone site identity and origin verified through the public tenant API; only reviewed page slugs and their public document components are collected.","publications":[{"body":"assembly","kind":"minutes","status":"blocked_js","listing_url":"https://vouvry.ch/","from":null,"to":null,"cadence":null,"obstacle":"homepage HTML has zero anchors, everything is rendered client-side (Angular bundle main-QLHPHJ7N.js)","how":"browser inspection; no JSON endpoint visible in the HTML"}]},{"bfs_id":6172,"name":"Bister","canton":"VS","status":"not_examined","website":"https://www.gemeinde-bister.ch","vendor":"custom","reachable":null,"checked":null,"checked_by":null,"notes":"2026-09-26 coverage review: New official website identified and municipal identity verified; previously no website recorded. Public documents and representative PDF bytes verified. Bister homepage explicitly identifies BFS6172 and the municipal administration.","publications":[]},{"bfs_id":6173,"name":"Bitsch","canton":"VS","status":"not_examined","website":"https://www.bitsch.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6177,"name":"Grengiols","canton":"VS","status":"not_examined","website":"https://www.grengiols.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6181,"name":"Riederalp","canton":"VS","status":"not_found","website":"https://www.gemeinde-riederalp.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: the Gemeindeversammlung page carries no minutes\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6191,"name":"Ausserberg","canton":"VS","status":"not_examined","website":"http://www.ausserberg.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6192,"name":"Blatten","canton":"VS","status":"not_examined","website":"https://www.blatten-vs.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6193,"name":"Bürchen","canton":"VS","status":"not_examined","website":"https://gemeinde.buerchen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6194,"name":"Eischoll","canton":"VS","status":"candidate","website":"https://www.eischoll.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.eischoll.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2023-11-25","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 8 files match, newest 2023-11-25, e.g. 'Protokoll_GV_25112023'; body guessed from the URL"}]},{"bfs_id":6195,"name":"Ferden","canton":"VS","status":"not_examined","website":"https://www.ferden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6197,"name":"Kippel","canton":"VS","status":"not_examined","website":"https://www.kippel.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6198,"name":"Niedergesteln","canton":"VS","status":"configured","website":"https://www.niedergesteln.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-10","checked_by":"megaphone adapter, dry run and one downloaded PDF (session of 11 September 2026)","notes":"Megaphone site: minutes read through api.megaphone.info with the commune's origin","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://api.megaphone.info/v1/websites/42/pages/by_slug?lang=de&slug=/urversammlung&origin=https://niedergesteln.ch","from":null,"to":null,"cadence":null,"obstacle":null,"how":"megaphone, 2 hops: page components, HTML blocks or attachment lists"}]},{"bfs_id":6199,"name":"Raron","canton":"VS","status":"candidate","website":"https://www.raron.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://raron.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 41 files match, newest 2026-06-10, e.g. '20260610 Protokoll UV'; body guessed from the URL"}]},{"bfs_id":6201,"name":"Unterbäch","canton":"VS","status":"candidate","website":"https://www.unterbaech.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://unterbaech.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-03-31","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 16 files match, newest 2026-03-31, e.g. 'Protokoll der VV'; body guessed from the URL"}]},{"bfs_id":6202,"name":"Wiler","canton":"VS","status":"not_examined","website":"https://www.wilervs.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6203,"name":"Mörel-Filet","canton":"VS","status":"not_examined","website":"http://www.moerel-filet.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6204,"name":"Steg-Hohtenn","canton":"VS","status":"not_examined","website":"https://www.steg-hohtenn.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 32 sessions since 2017 (Ausserordentliche Burgerversammlung, Ausserordentliche Urversammlung, Burgerversammlung / Budget 2022, Burgerversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6205,"name":"Bettmeralp","canton":"VS","status":"not_found","website":"https://gemeinde.bettmeralp.ch/","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: the Gemeinderat und Burgerrat page carries no minutes\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6211,"name":"Collonges","canton":"VS","status":"candidate","website":"https://www.collonges.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: protocol_page_undated\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.collonges.ch/index.php/nos-infos/affichoir-public/667-pv-de-la-seance-du-25-aout-2026","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: page 'PV de la séance du 25 août 2026' has 1 PDF links, none with a date the parser reads; needs a look"}]},{"bfs_id":6212,"name":"Dorénaz","canton":"VS","status":"not_found","website":"http://www.dorenaz.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: no assembly or council page with minutes\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6213,"name":"Evionnaz","canton":"VS","status":"candidate","website":"https://www.evionnaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.evionnaz.ch/fr/proces-verbaux-1825.html","from":null,"to":"2026-09-04","cadence":null,"obstacle":null,"how":"probe: 2 dated PDF links on the page, newest 2026-09-04, e.g. 'Salanfe SA - Remplacement vanne de vidange de fond du barrag'; body guessed from the URL"}]},{"bfs_id":6214,"name":"Finhaut","canton":"VS","status":"not_examined","website":"https://www.finhaut.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":6215,"name":"Massongex","canton":"VS","status":"candidate","website":"http://www.massongex.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"http://www.massongex.ch/wp-json/wp/v2/media?search=pv&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 22 files match, newest 2025-12-16, e.g. 'PV_16.12.2025_Bourg'; body guessed from the URL"}]},{"bfs_id":6217,"name":"Saint-Maurice","canton":"VS","status":"configured","website":"https://www.st-maurice.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":"Conseil general; website corrected by report: www.saint-maurice.ch (the website on file) is the tourism site, the commune is www.st-maurice.ch; anchor texts are bare dates","publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.st-maurice.ch/fr/administration/politique-et-autorites/conseil-general-61/","from":"2013-01-30","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6218,"name":"Salvan","canton":"VS","status":"not_examined","website":"https://www.salvan.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":6219,"name":"Vernayaz","canton":"VS","status":"not_examined","website":"https://www.vernayaz.ch","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: TLS certificate error (hostname mismatch or incomplete chain)","publications":[]},{"bfs_id":6220,"name":"Vérossaz","canton":"VS","status":"not_examined","website":"https://verossaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-26","checked_by":"Manual official-site and PDF verification","notes":"probe 2026-09-10: home page carries no navigation without JavaScript; Megaphone application, but api.megaphone.info answers 'Website not found' for the site's origin (11 September 2026); the site may have moved; 26 September 2026: current official PHP site and municipal regulations verified after respecting the observed one-hour 429 cooldown. Reviewed listing pages and PDF response returned HTTP 200; old Megaphone classification no longer applies.","publications":[]},{"bfs_id":6232,"name":"Chalais","canton":"VS","status":"not_examined","website":"https://www.chalais.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.chalais.ch/commune/phases-plan-restriction-1577.html)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6235,"name":"Chippis","canton":"VS","status":"not_examined","website":"http://www.chippis.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://chippis.ch/administration/autorites-et-commissions)","publications":[]},{"bfs_id":6238,"name":"Grône","canton":"VS","status":"not_examined","website":"https://www.grone.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6239,"name":"Icogne","canton":"VS","status":"not_examined","website":"http://www.icogne.ch","vendor":"umbraco","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Collection remains scoped to reviewed sections; no topic or title filters.","publications":[]},{"bfs_id":6240,"name":"Lens","canton":"VS","status":"not_published","website":"https://www.lens.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-b","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.lens.ch/cmsscripts/default.aspx?lang=fr&page=HomeInfo","from":null,"to":null,"cadence":null,"obstacle":"'Lens officiel', 'Documents officiels' and 'La vie politique' carry no assemblee primaire PVs, only 'Echos du Conseil' (executive news)","how":"ask commune"}]},{"bfs_id":6246,"name":"Saint-Léonard","canton":"VS","status":"not_published","website":"http://www.st-leonard.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://st-leonard.ch/administration/autorites/assemblee-primaire/","from":null,"to":null,"cadence":null,"obstacle":"Assemblee primaire page has budgets and accounts only; the 'Comptes, budgets & PV' page belongs to the Bourgeoisie, not the political commune","how":"ask commune"}]},{"bfs_id":6248,"name":"Sierre","canton":"VS","status":"upstream_only","website":"https://www.sierre.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: Reviewed public PDF response bytes and municipal provenance. Public robots-advertised sitemap and scoped municipal document detail pages expose archive history; no separate allinone API access.","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6248.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":6252,"name":"Anniviers","canton":"VS","status":"not_examined","website":"https://www.anniviers.org","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6253,"name":"Crans-Montana","canton":"VS","status":"configured","website":"https://www.commune-cransmontana.ch","vendor":"iomedia-classic","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Assemblee primaire; robots.txt asks for a 10 s crawl delay (honoured); the newest PV is hosted on cransmontana2022.allinone.io, whose robots.txt disallows it; the newest PV is hosted on allinone.io, which robots.txt disallows (issue #30)","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.commune-cransmontana.ch/pages/assemblee-primaire/assemblee-primaire-773","from":"2017-03-30","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop, url_regex restricted to the commune host"}]},{"bfs_id":6254,"name":"Noble-Contrée","canton":"VS","status":"not_examined","website":"https://www.noble-contree.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6261,"name":"Arbaz","canton":"VS","status":"candidate","website":"http://www.arbaz.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.arbaz.ch/commune/comptes-budgets-proces-verbaux.html","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2025-12-16, e.g. 'ICI'; body guessed from the URL"}]},{"bfs_id":6263,"name":"Grimisuat","canton":"VS","status":"candidate","website":"https://www.grimisuat.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.grimisuat.ch/fr/administration/services-communaux/finances-taxes-et-contributions/comptes-budgets-pv-437/","from":null,"to":"2026-09-03","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2026-09-03, e.g. '3 Sep 2026 Mise à l’enquête publique Publication du 3 septem'; body guessed from the URL"}]},{"bfs_id":6265,"name":"Savièse","canton":"VS","status":"not_published","website":"https://www.saviese.ch","vendor":"custom","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Assemblee primaire\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.saviese.ch/fr/proces-verbaux-assemblees-primaires-622.html","from":null,"to":null,"cadence":null,"obstacle":"the 'Proces-verbaux des assemblees primaires et bourgeoisiales' page holds no PV document","how":"ask commune"}]},{"bfs_id":6266,"name":"Sion","canton":"VS","status":"upstream_only","website":"https://www.sion.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Conseil général; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_6266.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":6267,"name":"Veysonnaz","canton":"VS","status":"not_examined","website":"https://veysonnaz.org","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://veysonnaz.org/vie_politique/politique/conseil-communal)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6281,"name":"Baltschieder","canton":"VS","status":"not_examined","website":"http://www.baltschieder.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6282,"name":"Eisten","canton":"VS","status":"not_found","website":"https://www.eisten.ch","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: the Verwaltung and Gemeinderat pages carry no minutes\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6283,"name":"Embd","canton":"VS","status":"not_examined","website":"http://www.embd.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6285,"name":"Grächen","canton":"VS","status":"candidate","website":"https://gemeinde.graechen.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: wp_media\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.gemeinde-graechen.ch to https://gemeinde.graechen.ch/. Unfiltered WordPress PDF endpoint reports 374 media items; configured for raw collection. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://gemeinde.graechen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-16","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 7 files match, newest 2025-12-16, e.g. '20251216 Protokoll Urversammlung vom 16.12.2025 uz'; body guessed from the URL"}]},{"bfs_id":6286,"name":"Lalden","canton":"VS","status":"not_examined","website":"http://www.lalden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Discovery follows reviewed public sections without document-title filters.","publications":[]},{"bfs_id":6287,"name":"Randa","canton":"VS","status":"not_examined","website":"https://www.randa.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6288,"name":"Saas-Almagell","canton":"VS","status":"not_examined","website":"https://www.saas-almagell.org","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 2 sessions since 2023 (2. Wahlgang Ständerat, Ur- und Burgerversammlung vom); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":6289,"name":"Saas-Balen","canton":"VS","status":"not_examined","website":"http://gemeinde-saas-balen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":6290,"name":"Saas-Fee","canton":"VS","status":"candidate","website":"https://www.3906.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.3906.ch/sitzung","from":"2001","to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 55 sessions since 2001; minutes attached to the session pages as 'Protokoll_UV_15122025'"}]},{"bfs_id":6291,"name":"Saas-Grund","canton":"VS","status":"candidate","website":"https://www.3910.ch","vendor":"contao","reachable":true,"checked":"2026-09-11","checked_by":"OpenCommune official website and CMS verification","notes":"Earlier probe used saas-grund.ch; the cantonal directory identifies 3910.ch as the municipal website. Verified public PDF listings on 2026-09-11; HTML generator identifies Contao Open Source CMS.","publications":[]},{"bfs_id":6292,"name":"St. Niklaus","canton":"VS","status":"not_found","website":"https://st-niklaus.ch/de","vendor":"megaphone","reachable":true,"checked":"2026-09-11","checked_by":"manual check through the Megaphone API (session of 11 September 2026)","notes":"Megaphone site: the search finds 'Protokoll' only on a commission page; Ur- and Burgerversammlung pages carry no minutes\n\n2026-09-26 coverage review: Verified public Megaphone tenant/page API and CDN PDF bytes. Persistent page/component discovery uses the official Origin and checks municipal-page, API and PDF robots rules. Shared CDN discovery is never attempted.","publications":[]},{"bfs_id":6293,"name":"Stalden","canton":"VS","status":"not_examined","website":"https://www.stalden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6294,"name":"Staldenried","canton":"VS","status":"not_examined","website":"http://www.staldenried.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":6295,"name":"Täsch","canton":"VS","status":"candidate","website":"https://www.gemeinde-taesch.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.gemeinde-taesch.ch/protokolle-burger-urversammlungen","from":"2024","to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: page 'Protokolle der Burger- & Urversammlungen' with 24 dated minutes links, e.g. '2020_-_Protokoll_der_Burgerversammlung_18.06.2020.pdf'"}]},{"bfs_id":6296,"name":"Törbel","canton":"VS","status":"not_examined","website":"https://www.toerbel.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 2 pages tested (https://www.toerbel.ch/online-schalter/veranstaltungen/koordinationssitzung-fur-veranstaltungen-2026, https://www.toerbel.ch/online-schalter/veranstaltungen/gemeinde-koordinationssitzung-veranstaltungen-2025)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":6297,"name":"Visp","canton":"VS","status":"not_published","website":"http://www.visp.ch","vendor":"indual","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch custom-a","notes":"Urversammlung / Gemeinderat\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Collection remains scoped to reviewed sections; no topic or title filters.","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.visp.ch/de/gemeinde-visp/gemeinderat-behoerden/gemeinderat","from":null,"to":null,"cadence":null,"obstacle":"no protocol or Urversammlung link in the navigation, none on the Gemeinderat page","how":"ask commune"}]},{"bfs_id":6298,"name":"Visperterminen","canton":"VS","status":"not_examined","website":"https://www.heidadorf.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed municipal finance, regulations, assembly and public notice sections; representative robots-permitted PDF bytes verified. Official municipality domain redirects to heidadorf.ch; links and municipal finance documents confirm identity. Storyblok storage is restricted to this observed project directory.","publications":[]},{"bfs_id":6299,"name":"Zeneggen","canton":"VS","status":"configured","website":"https://www.zeneggen.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; Urversammlung; notice board with 'Protokoll Urversammlung vom 22.11.2025 (pdf)' and 'Einladung Urversammlung (pdf)'; 9 found 9 dated; docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.zeneggen.ch/verwaltung/anschlagsbrett","from":"2021","to":"2025","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":6300,"name":"Zermatt","canton":"VS","status":"not_examined","website":"https://gemeinde.zermatt.ch/","vendor":null,"reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: the homepage answers HTTP 429","publications":[]},{"bfs_id":1701,"name":"Baar","canton":"ZG","status":"configured","website":"https://www.baar.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.baar.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":1702,"name":"Cham","canton":"ZG","status":"candidate","website":"https://www.cham.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.cham.ch/sitzung","from":"1998","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 69 sessions since 1998; minutes attached to the session pages as 'Gesamtprotokoll GV 15. Dezember 2025'"}]},{"bfs_id":1703,"name":"Hünenberg","canton":"ZG","status":"configured","website":"https://www.zg.ch/behoerden/gemeinden/hunenberg/de","vendor":"onegov","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.zg.ch/behoerden/gemeinden/hunenberg/de/politik/gemeinderat/Gemeinderatsbeschluesse","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":1704,"name":"Menzingen","canton":"ZG","status":"candidate","website":"https://www.zg.ch/behoerden/gemeinden/menzingen/de","vendor":"onegov","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: protocol_page_no_pdfs\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Existing homepage retained; publication access reviewed. 39 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://www.zg.ch/behoerden/gemeinden/menzingen/de/verwaltung/gemeindeversammlung/gemeindeversammlung/","from":null,"to":null,"cadence":null,"obstacle":null,"how":"Municipal assembly result pages checked with their PDF attachments. Previous rrb.zg.ch reference was a cantonal source and was removed."}]},{"bfs_id":1705,"name":"Neuheim","canton":"ZG","status":"candidate","website":"https://www.neuheim.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.neuheim.ch/sitzung","from":"2017","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 19 sessions since 2017; minutes attached to the session pages as 'Kurzprotokoll Einwohnergemeindeversammlung 06_2026'"}]},{"bfs_id":1706,"name":"Oberägeri","canton":"ZG","status":"candidate","website":"http://www.oberaegeri.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberaegeri.ch/sitzung","from":"2003","to":"2026-09-07","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2003; minutes attached to the session pages as 'Protokoll GV 15.06.2026'"}]},{"bfs_id":1707,"name":"Risch","canton":"ZG","status":"not_published","website":"https://www.zg.ch/behoerden/gemeinden/risch-rotkreuz","vendor":"plone","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch vendor-doc","notes":"Politik section holds the Rechtssammlung only; ask commune; vendor corrected: Plone page on zg.ch misfingerprinted as OneGov (https://www.zg.ch/behoerden/gemeinden/risch-rotkreuz); docs/VENDOR-PATTERNS.md only\n\n2026-09-26 coverage review: Reviewed broad public finance, regulation and assembly document sections, including historical records; representative PDF response bytes verified. Collection remains scoped to reviewed sections; no topic or title filters.","publications":[]},{"bfs_id":1708,"name":"Steinhausen","canton":"ZG","status":"configured","website":"https://www.steinhausen.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; vendor corrected: Plone page on zg.ch misfingerprinted as OneGov; folder listing (type icon, title, modified date); 'Gemeinderatsbeschluesse vom 31.08.2026'; executive decision extracts, current folder 2022-2026, older year folders not checked; 27 found, 15 dated by title; register partial (44 percent undated); docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"executive","kind":"extracts","status":"configured","listing_url":"https://www.zg.ch/behoerden/gemeinden/steinhausen/gemeinde/politik/gemeinderat/protokolle/archiv","from":"2022","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 2 hops"},{"body":"executive","kind":"extracts","status":"configured","listing_url":"https://www.zg.ch/behoerden/gemeinden/steinhausen/gemeinde/politik/gemeinderat/protokolle","from":null,"to":null,"cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":1709,"name":"Unterägeri","canton":"ZG","status":"not_examined","website":"https://www.unteraegeri.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 39 sessions since 2007 (ABGESAGT: Einwohnergemeindeversammlung, Einwohner-gemeindeversammlung, Einwohnergemeindeversammlung, Einwohnergemeindeve); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":1710,"name":"Walchwil","canton":"ZG","status":"candidate","website":"https://www.walchwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.walchwil.ch/politik/gemeindeversammlung/ds-gemeindeversammlung/gemeindeversammlung-19-juni-2007.html/84","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 1 protocol PDFs whose dates the parser does not read; needs a date rule"}]},{"bfs_id":1711,"name":"Zug","canton":"ZG","status":"configured","website":"https://www.stadtzug.ch","vendor":"cmi-ratsinfo","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://ratsinfo.stadtzug.ch/api/meetings","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_1711.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":1,"name":"Aeugst am Albis","canton":"ZH","status":"candidate","website":"http://www.aeugst-albis.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.aeugst-albis.ch/politik/gemeindeversammlung/aktuelle-gemeindeversammlung.html/609","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 4 dated protocol PDFs, e.g. 'Beleuchtender Bericht Anpassung Baurecht' (2026-06-09)"}]},{"bfs_id":2,"name":"Affoltern am Albis","canton":"ZH","status":"not_examined","website":"https://www.stadtaffoltern.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 46 sessions since 2014 (Gemeindeversammlung, Gemeindeversammlung - Abgesagt); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":3,"name":"Bonstetten","canton":"ZH","status":"candidate","website":"http://www.bonstetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.bonstetten.ch/sitzung","from":"2009","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 39 sessions since 2009; decisions attached to the session pages as 'Beschluss der Gemeindeversammlung vom 23. Juni 2026'"}]},{"bfs_id":4,"name":"Hausen am Albis","canton":"ZH","status":"candidate","website":"http://www.hausen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hausen.ch/sitzung","from":"2014","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 30 sessions since 2014; minutes attached to the session pages as 'Protokoll'"}]},{"bfs_id":5,"name":"Hedingen","canton":"ZH","status":"candidate","website":"http://www.hedingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.hedingen.ch/politik/gemeindeversammlungen.html/41","from":null,"to":"2026-06-11","cadence":null,"obstacle":null,"how":"probe: 5 dated PDF links on the page, newest 2026-06-11, e.g. 'Publikation Beschlüsse'; body guessed from the URL"}]},{"bfs_id":6,"name":"Kappel am Albis","canton":"ZH","status":"candidate","website":"https://www.kappel-am-albis.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.kappel-am-albis.ch/sitzung","from":"2014","to":"2026-06-05","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 26 sessions since 2014; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 5. Juni 2026'"}]},{"bfs_id":7,"name":"Knonau","canton":"ZH","status":"candidate","website":"http://www.knonau.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.knonau.ch/politik/politische-rechte/gemeindeversammlungen/protokolle/protokolle-gemeindeversammlungen.html/839","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 29 dated PDF links on the page, newest 2026-06-25, e.g. '2026.06.25 Protokoll Gemeindeversammlung Politische Gemeinde'; body guessed from the URL"}]},{"bfs_id":8,"name":"Maschwanden","canton":"ZH","status":"candidate","website":"https://www.maschwanden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.maschwanden.ch/de/politik-und-verwaltung/politik/gemeindeversammlung/","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 23 dated PDF links on the page, newest 2026-06-08, e.g. 'Einladung zu den Gemeindeversammlungen vom 8. Juni 2026 Einl'; body guessed from the URL"}]},{"bfs_id":9,"name":"Mettmenstetten","canton":"ZH","status":"not_published","website":"http://www.mettmenstetten.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.mettmenstetten.ch/politik-verwaltung/gemeindeversammlungen.html/105","from":null,"to":null,"cadence":null,"obstacle":"text only","how":"ask commune"}]},{"bfs_id":10,"name":"Obfelden","canton":"ZH","status":"configured","website":"https://www.obfelden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"all documents per assembly incl. 'Protokoll Gemeindeversammlung vom ...'; the June 2026 assembly has its own page (.../gemeindeversammlung-vom-24-juni-2026.html/399) not yet in the archive","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.obfelden.ch/politik/gemeindeversammlungen/archiv-gemeindeversammlungen.html/174","from":"2022-06-09","to":"2025-12-04","cadence":null,"obstacle":null,"how":"html_links, 1 hop, archive page"}]},{"bfs_id":11,"name":"Ottenbach","canton":"ZH","status":"needs_feature","website":"https://www.ottenbach.ch","vendor":"onegov","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"OneGov Cloud; Crawl-delay 10; the /api endpoint (Collection+JSON) lists topics, news, events but not files; docs/VENDOR-PATTERNS.md only; wave 2: context: row does not reach the date; needs the preceding-text date rule\n\n2026-09-26 coverage review: Reviewed public document libraries, finance/publication sections and representative PDF bytes. Added resumable, title-agnostic linked archive collection with robots checks; earlier minutes-only assessment does not imply absence of other documents.","publications":[{"body":"assembly","kind":"minutes","status":"needs_feature","listing_url":"https://www.ottenbach.ch/topics/politik-verwaltung/politik/gemeindeversammlung","from":"2023-03-30","to":"2026-06-10","cadence":null,"obstacle":"context: row tried: 9 found, 0 dated; the date is not in an h3 (the h3 before the block is empty) but in a <p><strong>Gemeindeversammlung vom 10. Juni 2026</strong></p> preceding the <p> that holds the anchors; in the 2024 block the date is inside the same <p> before a <br>, where the row rule resets","how":"date from the nearest preceding text (context: preceding); entry ready: div.page-text a[href*='/storage/'] with text_regex ^Protokoll; Crawl-delay 10"}]},{"bfs_id":12,"name":"Rifferswil","canton":"ZH","status":"candidate","website":"https://www.rifferswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rifferswil.ch/sitzung","from":"2022","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 12 sessions since 2022; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 24. Juni 2026'"}]},{"bfs_id":13,"name":"Stallikon","canton":"ZH","status":"candidate","website":"https://www.stallikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.stallikon.ch/politik/gemeindeversammlung/archiv-gemeindeversammlungen.html/544","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 3 dated protocol PDFs, e.g. 'Protokoll' (2026-04-15)"}]},{"bfs_id":14,"name":"Wettswil am Albis","canton":"ZH","status":"configured","website":"https://www.wettswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"'Protokoll' anchor per assembly (generic text 'Protokoll [pdf, 162 KB]'); 11 found, 10 dated","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.wettswil.ch/politik/gemeindeversammlung.html/387","from":"2021-12-06","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop, date from file name"}]},{"bfs_id":22,"name":"Benken","canton":"ZH","status":"blocked_js","website":"http://www.benken-zh.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":23,"name":"Berg am Irchel","canton":"ZH","status":"candidate","website":"https://www.bergamirchel.ch/","vendor":"custom","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"probe 2026-09-10: generic_pdf_page\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from https://www.berg-am-irchel.ch to https://www.bergamirchel.ch/. 41 reviewed document URLs configured as untagged raw documents. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bergamirchel.ch/politik-und-behoerden/gemeindeversammlung/","from":null,"to":"2026-06-19","cadence":null,"obstacle":null,"how":"probe: 22 dated PDF links on the page, newest 2026-06-19, e.g. 'Protokoll'; body guessed from the URL"}]},{"bfs_id":24,"name":"Buch am Irchel","canton":"ZH","status":"candidate","website":"http://www.buchamirchel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.buchamirchel.ch/sitzung","from":"2014","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 27 sessions since 2014; minutes attached to the session pages as 'Protokoll'"}]},{"bfs_id":25,"name":"Dachsen","canton":"ZH","status":"candidate","website":"http://www.dachsen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dachsen.ch/gemeindeversammlung","from":"2021","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 12 sessions since 2021; minutes attached to the session pages as 'Protokoll vom 16. Juni 2026'"}]},{"bfs_id":26,"name":"Dorf","canton":"ZH","status":"candidate","website":"http://www.dorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dorf.ch/politik/gemeindeversammlung.html/49","from":null,"to":"2026-06-12","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-06-12, e.g. 'Protokoll der Gemeindeversammlung vom 12. Juni 2026'; body guessed from the URL"}]},{"bfs_id":27,"name":"Feuerthalen","canton":"ZH","status":"candidate","website":"https://www.feuerthalen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.feuerthalen.ch/politik/gemeindeversammlungen.html/39","from":null,"to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2026-06-02, e.g. 'Protokoll GV_2026-06-02'; body guessed from the URL"}]},{"bfs_id":28,"name":"Flaach","canton":"ZH","status":"candidate","website":"https://www.flaach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.flaach.ch/sitzung","from":"2020","to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 12 sessions since 2020; decisions attached to the session pages as 'Publikation Beschlüsse'"}]},{"bfs_id":29,"name":"Flurlingen","canton":"ZH","status":"candidate","website":"http://www.flurlingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.flurlingen.ch/sitzung","from":"2016","to":"2026-06-16","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2016; minutes attached to the session pages as 'Gemeindeversammlung vom 16.06.2026, Protokoll'"}]},{"bfs_id":31,"name":"Henggart","canton":"ZH","status":"candidate","website":"http://www.henggart.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.henggart.ch/sitzung","from":"2018","to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 21 sessions since 2018; minutes attached to the session pages as 'Protokoll Gemeindeversammlung Henggart 03.06.2026'"}]},{"bfs_id":33,"name":"Kleinandelfingen","canton":"ZH","status":"not_examined","website":"http://www.kleinandelfingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page","publications":[]},{"bfs_id":34,"name":"Laufen-Uhwiesen","canton":"ZH","status":"candidate","website":"https://www.uhwiesen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.uhwiesen.ch/politik/gemeindeversammlung.html/32","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 15 dated protocol PDFs, e.g. 'GV Protokoll 04.06.2026' (2026-06-04)"}]},{"bfs_id":35,"name":"Marthalen","canton":"ZH","status":"not_examined","website":"https://www.marthalen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 11 sessions since 2020 (Gemeindeversammlung, Rechnungsgemeindeversammlung, Versammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":37,"name":"Ossingen","canton":"ZH","status":"candidate","website":"https://www.ossingen.ch","vendor":"typo3","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ossingen.ch/politik/gemeindeversammlung","from":null,"to":"2025-12-08","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2025-12-08, e.g. 'Einladung Gemeindeversammlungen PSO und GO'; body guessed from the URL"}]},{"bfs_id":38,"name":"Rheinau","canton":"ZH","status":"candidate","website":"https://www.rheinau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.rheinau.ch/sitzung","from":"2004","to":"2026-06-02","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 54 sessions since 2004; decisions attached to the session pages as 'Gemeindeversammlungsbeschlüsse vom 04.06.2025'"}]},{"bfs_id":39,"name":"Thalheim an der Thur","canton":"ZH","status":"not_examined","website":"http://www.thalheim.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[]},{"bfs_id":40,"name":"Trüllikon","canton":"ZH","status":"candidate","website":"http://www.truellikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.truellikon.ch/gemeindeversammlung","from":"2025","to":"2026-06-23","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 2 sessions since 2025; minutes attached to the session pages as 'Politische Gemeinde Trüllikon, Protokoll 23.06.2026, unterzeichnet'"}]},{"bfs_id":41,"name":"Truttikon","canton":"ZH","status":"candidate","website":"http://www.truttikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.truttikon.ch/sitzung","from":"2016","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 26 sessions since 2016; minutes attached to the session pages as 'Politische Gemeinde_Protokoll 17.06.2026'"}]},{"bfs_id":43,"name":"Volken","canton":"ZH","status":"candidate","website":"http://www.volken.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.volken.ch/sitzung","from":"2022","to":"2026-06-05","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 8 sessions since 2022; minutes attached to the session pages as 'Protokoll GV 05.06.2026'"}]},{"bfs_id":51,"name":"Bachenbülach","canton":"ZH","status":"candidate","website":"http://www.bachenbuelach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bachenbuelach.ch/politik/gemeindeversammlung.html/13","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 11 dated PDF links on the page, newest 2026-06-08, e.g. 'Protokoll GV 8. Juni 2026'; body guessed from the URL"}]},{"bfs_id":52,"name":"Bassersdorf","canton":"ZH","status":"configured","website":"https://www.bassersdorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.bassersdorf.ch/politik-verwaltung/politik/gemeindeversammlung/archiv.html/419","from":"2021-03-18","to":"2022-12-13","cadence":null,"obstacle":"partial: archive holds 2021-2022 only; from 2023 the assembly documents live in an embedded VoteInfo iframe (https://app.statistik.zh.ch/wahlen_abstimmungen/prod/?embed=true&types=g&gebiet=52) rendered client-side; executive Beschluesse page (/politik-verwaltung/politik/gemeinderat/beschluesse.html/267) not checked; report status ok, register partial (history after 2022 unreachable)","how":"html_links, 1 hop for 2021-2022; from 2023 a VoteInfo (app.statistik.zh.ch) JSON adapter is needed"}]},{"bfs_id":53,"name":"Bülach","canton":"ZH","status":"not_examined","website":"https://www.buelach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":54,"name":"Dietlikon","canton":"ZH","status":"configured","website":"https://www.dietlikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"one PDF per Gemeinderatsbeschluss, named '<year>-<nr>; dd.mm.yyyy; <subject>'; validated with follow capped at 2; the assembly archive (.../gemeindeversammlungen/archiv.html/200) holds only 2020-2022, newer assemblies are event boxes (not configured); two sample PDFs downloaded","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.dietlikon.ch/politik-verwaltung/verwaltung/publikationen/beschluesse.html/184","from":"2025-01-14","to":"2026-08-28","cadence":null,"obstacle":null,"how":"html_links, 2 hops document tree ('Beschluesse <year>' 2020-2026 -> PDF), max_follow 80"}]},{"bfs_id":55,"name":"Eglisau","canton":"ZH","status":"configured","website":"https://www.eglisau.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"Gemeinderatsbeschluesse with the session date in the anchor text; max_documents cap of 500 reached, pages go back to January 2019; no assembly minutes online (session pages carry only Weisungsheft and budgets); probe hit","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.eglisau.ch/de/aktuelles-dossiers/beschluesse-des-gemeinderates/","from":"2020-07-06","to":"2026-09-01","cadence":null,"obstacle":null,"how":"html_links, 2 hops (half-year pages januar-juni-YYYY, juli-dezember-YYYY with irregular slugs from the sub-navigation -> one PDF per decision)"}]},{"bfs_id":56,"name":"Embrach","canton":"ZH","status":"candidate","website":"http://www.embrach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.embrach.ch/sitzung","from":"2005","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2005; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 22.06.2026'"}]},{"bfs_id":57,"name":"Freienstein-Teufen","canton":"ZH","status":"candidate","website":"https://www.freienstein-teufen.ch/","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.freienstein-teufen.ch/politik/gemeindeversammlung.html/27","from":null,"to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: 10 dated PDF links on the page, newest 2025-11-26, e.g. 'GV-Protokoll vom 26.11.2025'; body guessed from the URL"}]},{"bfs_id":58,"name":"Glattfelden","canton":"ZH","status":"configured","website":"https://www.glattfelden.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"'Gemeindeversammlungsprotokoll vom ...'","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.glattfelden.ch/politik-verwaltung/politik/gemeindeversammlung/archiv-gemeindeversammlungen.html/37","from":"2020-12-08","to":"2026-06-16","cadence":null,"obstacle":null,"how":"html_links, 1 hop, flat archive"}]},{"bfs_id":59,"name":"Hochfelden","canton":"ZH","status":"not_examined","website":"http://www.hochfelden.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://hochfelden.ch/politik/gemeindeversammlung)\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-2.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":60,"name":"Höri","canton":"ZH","status":"candidate","website":"http://www.hoeri.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hoeri.ch/sitzung","from":"2020","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 13 sessions since 2020; minutes attached to the session pages as 'Protokoll GV 24.06.2026'"}]},{"bfs_id":61,"name":"Hüntwangen","canton":"ZH","status":"candidate","website":"https://www.huentwangen.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.huentwangen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 18 files match, newest 2026-06-17, e.g. '20260617_GV_Protokoll_Website'; body guessed from the URL"}]},{"bfs_id":62,"name":"Kloten","canton":"ZH","status":"upstream_only","website":"http://www.kloten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_62.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":63,"name":"Lufingen","canton":"ZH","status":"candidate","website":"https://www.lufingen.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lufingen.ch/sitzung","from":"2006","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 42 sessions since 2006; minutes attached to the session pages as 'Protokoll GV vom 24.06.2026'"}]},{"bfs_id":64,"name":"Nürensdorf","canton":"ZH","status":"not_published","website":"http://www.nuerensdorf.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.nuerensdorf.ch/politik/gemeindeversammlung.html/36","from":null,"to":null,"cadence":null,"obstacle":"dates only","how":"ask commune"}]},{"bfs_id":65,"name":"Oberembrach","canton":"ZH","status":"candidate","website":"http://www.oberembrach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberembrach.ch/sitzung","from":"2009","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 37 sessions since 2009; minutes attached to the session pages as 'GV_Protokoll_Gemeinde_10-06-2026_u'"}]},{"bfs_id":66,"name":"Opfikon","canton":"ZH","status":"upstream_only","website":"http://www.opfikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_66.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":67,"name":"Rafz","canton":"ZH","status":"candidate","website":"https://www.rafz.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rafz.ch/sitzung","from":"2005","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 55 sessions since 2005; minutes attached to the session pages as 'Gemeindeversammlung vom 15.06.2026, Protokoll'"}]},{"bfs_id":68,"name":"Rorbas","canton":"ZH","status":"candidate","website":"https://www.rorbas.ch","vendor":"custom","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page\n2026-09-12 archive review: public PDF response and same-site listing URLs verified against the registered municipal website; configured in linked-sources.yaml as untagged documents. Existing minute-specific findings unchanged.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rorbas.ch/generalversammlung","from":null,"to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: 17 dated PDF links on the page, newest 2026-06-18, e.g. 'Beleuchtender Bericht und Einladung Gemeindeversammlung 18.0'; body guessed from the URL"}]},{"bfs_id":69,"name":"Wallisellen","canton":"ZH","status":"candidate","website":"https://www.wallisellen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wallisellen.ch/sitzung","from":"2016","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2016; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 8. Juni 2026'"}]},{"bfs_id":70,"name":"Wasterkingen","canton":"ZH","status":"blocked_js","website":"https://www.wasterkingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit-3.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":71,"name":"Wil","canton":"ZH","status":"candidate","website":"http://www.wil-zh.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wil-zh.ch/sitzung","from":"2012","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 34 sessions since 2012; minutes attached to the session pages as 'Protokoll Gemeindeversammlung Juni-GV'"}]},{"bfs_id":72,"name":"Winkel","canton":"ZH","status":"candidate","website":"http://www.winkel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.winkel.ch/sitzung","from":"2016","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 26 sessions since 2016; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung'"}]},{"bfs_id":81,"name":"Bachs","canton":"ZH","status":"not_examined","website":"https://www.bachs.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[]},{"bfs_id":82,"name":"Boppelsen","canton":"ZH","status":"candidate","website":"http://www.boppelsen.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.boppelsen.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2025-12-11","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 25 files match, newest 2025-12-11, e.g. '20251211 Protokoll unterzeichnet'; body guessed from the URL"}]},{"bfs_id":83,"name":"Buchs","canton":"ZH","status":"not_examined","website":"http://www.buchs-zh.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 38 sessions since 2017 (Anstelle der Gemeindeversammlung findet am 13. Sep, Ausserordentliche Gemeindeversammlung, Ausserordentliche Gemeindever); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":84,"name":"Dällikon","canton":"ZH","status":"candidate","website":"https://www.daellikon.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.daellikon.ch/sitzung","from":"2017","to":"2026-09-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 40 sessions since 2017; minutes attached to the session pages as '2026-06-09 Protokoll Gemeindeversammlung'"}]},{"bfs_id":85,"name":"Dänikon","canton":"ZH","status":"configured","website":"http://www.daenikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents), merged by the coordinator","notes":"validated by the onboarding agent but not in communes.yaml yet; table: first cell the session date ('11.06.2026'), second cell the title and ul li a 'Protokoll Gemeindeversammlung [pdf, 842 KB]' plus 'ePublikation Beschluss der Gemeindeversammlung'; file names carry the date (Gemeindeversammlung%20Protokoll%2011.06.2026.pdf), the oldest four are P20131212.pdf; 35 found, 31 dated; the URL-encoded space before the date broke the ISO parser (fixed later by URL unquoting); docs/VENDOR-PATTERNS.md only; register guess: status from the offline extract_links verification on saved HTML, no crawler run, no PDF download, no communes.yaml entry","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.daenikon.ch/politik/gemeindeversammlung/archiv-gemeindeversammlungen.html/693","from":"2010","to":"2026","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":86,"name":"Dielsdorf","canton":"ZH","status":"candidate","website":"http://www.dielsdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.dielsdorf.ch/sitzung","from":"2014","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 24 sessions since 2014; minutes attached to the session pages as '2025-12-01. Protokoll der Gemeindeversammlung.'"}]},{"bfs_id":87,"name":"Hüttikon","canton":"ZH","status":"candidate","website":"http://www.huettikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.huettikon.ch/politik/gemeindeversammlung.html/18","from":null,"to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: 20 dated PDF links on the page, newest 2026-06-09, e.g. 'Einladung zur Gemeindeversammlung vom 9. Juni 2026'; body guessed from the URL"}]},{"bfs_id":88,"name":"Neerach","canton":"ZH","status":"candidate","website":"http://www.neerach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.neerach.ch/politik/gemeindeversammlung/protokolle.html/272","from":null,"to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: 13 dated PDF links on the page, newest 2026-06-08, e.g. 'Protokoll Gemeindeversammlung vom 8. Juni 2026'; body guessed from the URL"}]},{"bfs_id":89,"name":"Niederglatt","canton":"ZH","status":"not_examined","website":"http://www.niederglatt.zh.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 29 sessions since 2013 (Gemeindeversammlung, Gemeindeversammlung abgesagt, Kreisgemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":90,"name":"Niederhasli","canton":"ZH","status":"candidate","website":"https://www.niederhasli.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.niederhasli.ch/sitzung","from":"2012","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 31 sessions since 2012; decisions attached to the session pages as 'Publikation Beschlüsse GV vom 9. Juni 2026'"}]},{"bfs_id":91,"name":"Niederweningen","canton":"ZH","status":"blocked_js","website":"http://www.niederweningen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page carries PDFs but none named after minutes or decisions","publications":[]},{"bfs_id":92,"name":"Oberglatt","canton":"ZH","status":"not_published","website":"https://www.oberglatt.ch/","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.oberglatt.ch/politik-verwaltung/politik/gemeindeversammlung.html/525","from":"2026-06-17","to":"2026-06-17","cadence":null,"obstacle":"only the newest protocol is linked; no archive, below the three-document threshold","how":"ask commune for the archive"}]},{"bfs_id":93,"name":"Oberweningen","canton":"ZH","status":"candidate","website":"http://www.oberweningen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.oberweningen.ch/sitzung","from":"2004","to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 53 sessions since 2004; decisions attached to the session pages as 'Jahresrechnung 2026, Gemeinderatsbeschluss'"}]},{"bfs_id":94,"name":"Otelfingen","canton":"ZH","status":"candidate","website":"https://www.otelfingen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.otelfingen.ch/gemeinde/politik/politische-mitbestimmung/gemeindeversammlung.html/43","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 19 dated protocol PDFs, e.g. 'Beleuchtender Bericht' (2026-06-25)"}]},{"bfs_id":95,"name":"Regensberg","canton":"ZH","status":"candidate","website":"https://www.regensberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py, GOViS sitemap re-check (unverified)","notes":"probe 2026-09-10: GOViS site with the /route/ variant on the home page, but the assembly page itself is server-rendered","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.regensberg.ch/politik/gemeindeversammlung/archiv-gemeindeversammlungen.html/103","from":null,"to":null,"cadence":null,"obstacle":null,"how":"probe: assembly page from the sitemap is server-rendered with 16 dated protocol PDFs, e.g. 'Einladung Gemeindeversammlung vom 10.12.' (2025-12-10)"}]},{"bfs_id":96,"name":"Regensdorf","canton":"ZH","status":"candidate","website":"http://www.regensdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.regensdorf.ch/sitzung","from":"2008","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 72 sessions since 2008; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 22.06.2026'"}]},{"bfs_id":97,"name":"Rümlang","canton":"ZH","status":"not_examined","website":"http://www.ruemlang.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 23 sessions since 2021 (ABGESAGT - Gemeindeversammlung, Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":98,"name":"Schleinikon","canton":"ZH","status":"not_examined","website":"http://www.schleinikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: page 'Protokolle Gemeindeversammlung' carries 1 protocol-like links without parseable dates: https://www.schleinikon.ch/protokollegv","publications":[]},{"bfs_id":99,"name":"Schöfflisdorf","canton":"ZH","status":"candidate","website":"http://www.schoefflisdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schoefflisdorf.ch/sitzung","from":"2020","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 14 sessions since 2020; minutes attached to the session pages as 'Protokoll vom 9. Juni 2026'"}]},{"bfs_id":100,"name":"Stadel","canton":"ZH","status":"not_examined","website":"https://www.stadel.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 25 sessions since 2014 (Gemeindeversammlung, Gemeindeversammlung Stadel); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":101,"name":"Steinmaur","canton":"ZH","status":"not_examined","website":"http://www.steinmaur.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":102,"name":"Weiach","canton":"ZH","status":"blocked_js","website":"https://www.weiach.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call","publications":[]},{"bfs_id":111,"name":"Bäretswil","canton":"ZH","status":"candidate","website":"https://www.baeretswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.baeretswil.ch/sitzung","from":"2014","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 30 sessions since 2014; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 10.06.2026 final'"}]},{"bfs_id":112,"name":"Bubikon","canton":"ZH","status":"not_examined","website":"http://www.bubikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 32 sessions since 2018 (Abgesagt Gemeindeversammlung, Abgesagt Rechnungs-Gemeindeversammlung, Abgesagt a.o. Gemeindeversammlung, Ausserordentlic); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":113,"name":"Dürnten","canton":"ZH","status":"candidate","website":"http://www.duernten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.duernten.ch/sitzung","from":"2024","to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 5 sessions since 2024; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 4. Juni 2026'"}]},{"bfs_id":114,"name":"Fischenthal","canton":"ZH","status":"candidate","website":"https://www.fischenthal.ch/","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.fischenthal.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2026-06-14","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 24 files match, newest 2026-06-14, e.g. 'Protokoll Wahlbüro, Kantonale Volksabstimmung vom 14. Juni 2'; body guessed from the URL"}]},{"bfs_id":115,"name":"Gossau","canton":"ZH","status":"configured","website":"https://www.gossau-zh.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"only 2025 onward on the page (a ZIP of the 2025 protocols is offered too); older protocols not found (Downloadbereich checked); wp-download-manager site; register guess: kept configured because no older protocols were found anywhere","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.gossau-zh.ch/ueber-uns/verwaltung/praesidialabteilung/gemeindeversammlungen/","from":"2025-06-16","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 1 hop"}]},{"bfs_id":116,"name":"Grüningen","canton":"ZH","status":"not_examined","website":"https://www.grueningen.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no dated protocol PDFs on 1 pages tested (https://www.grueningen.ch/gemeinde/politik/gemeindeversammlung.html/53)","publications":[]},{"bfs_id":117,"name":"Hinwil","canton":"ZH","status":"candidate","website":"http://www.hinwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hinwil.ch/sitzung","from":"2003","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 74 sessions since 2003; minutes attached to the session pages as 'PG; Protokoll GV vom 18.03.2026'"}]},{"bfs_id":118,"name":"Rüti","canton":"ZH","status":"configured","website":"https://www.rueti.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"report calls this a partial validation: the capped run (max_follow 3) picked the 7 Sept 2026 assembly (no protocol yet) twice (URL with and without /l/de); the 1 Dec 2025 page checked by hand has a Protokoll PDF; generic anchor text 'Hier'; register guess: kept configured as the report did","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.rueti.ch/politik-verwaltung/gemeindeversammlung.html/246","from":"2026-06-22","to":"2026-06-22","cadence":null,"obstacle":null,"how":"html_links, 3 hops (year links 2021-2026 -> first assembly page of the year -> sibling assembly pages -> PDF anchor 'Hier' filtered by url_regex Protokoll), path regex ends in \\.html/\\d+(/l/de)?$, max_follow 80"}]},{"bfs_id":119,"name":"Seegräben","canton":"ZH","status":"candidate","website":"https://www.seegraeben.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.seegraeben.ch/versammlung","from":"2002","to":"2026-03-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 72 sessions since 2002; minutes attached to the session pages as '20251209_Protokoll Gemeindeversammlung'"}]},{"bfs_id":120,"name":"Wald","canton":"ZH","status":"candidate","website":"https://www.wald-zh.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from https://www.wald.zh.ch to https://www.wald-zh.ch/. Corrected official hostname is now used by the register-driven iWeb sync queue. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wald-zh.ch/gv","from":"2012","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 39 sessions since 2012; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 25. Juni 2026'"}]},{"bfs_id":121,"name":"Wetzikon","canton":"ZH","status":"configured","website":"https://www.wetzikon.ch","vendor":"custom","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.wetzikon.ch/de/politik/stadtrat/stadtratsbeschluesse/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_121.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":131,"name":"Adliswil","canton":"ZH","status":"upstream_only","website":"https://www.adliswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_131.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":135,"name":"Kilchberg","canton":"ZH","status":"configured","website":"https://www.kilchberg.ch/","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":null,"publications":[{"body":"assembly","kind":"decisions","status":"configured","listing_url":"https://www.kilchberg.ch/themen/politik-verwaltung/gemeindeversammlung","from":"2018-11-27","to":"2026-06-16","cadence":null,"obstacle":"partial: canton corrected by report: batch says VS, BFS 135 is Kilchberg ZH; 'Beschluesse der Gemeindeversammlung' (about 17 KB) per assembly on one page, no full minutes; 6 older files undated (Beschluesse.pdf, 170627_PUB__GV.pdf); report status ok, register partial (29 percent undated)","how":"html_links, 1 hop"}]},{"bfs_id":136,"name":"Langnau am Albis","canton":"ZH","status":"candidate","website":"https://www.langnauamalbis.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.langnauamalbis.ch/sitzung","from":"2004","to":"2026-06-04","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 52 sessions since 2004; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 04.06.2026'"}]},{"bfs_id":137,"name":"Oberrieden","canton":"ZH","status":"configured","website":"https://www.oberrieden.ch","vendor":"drupal","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch drupal-onegov","notes":"canton corrected by report: batch says VS, Oberrieden is ZH; archive lists 68 GV news items; each item carries the signed GV-Protokoll and per-item GV-Beschluss PDFs; validated with 3 nodes; archive pagination not checked","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.oberrieden.ch/aktuell/archiv/Gemeindeversammlung","from":"2024-06-06","to":"2025-06-05","cadence":null,"obstacle":null,"how":"html_links, 2 hops (news archive -> 'Gemeindeversammlung vom ...' item), max_follow 80"}]},{"bfs_id":138,"name":"Richterswil","canton":"ZH","status":"not_examined","website":"https://www.richterswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":139,"name":"Rüschlikon","canton":"ZH","status":"candidate","website":"http://www.rueschlikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.rueschlikon.ch/sitzung","from":"2003","to":"2026-06-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 59 sessions since 2003; minutes attached to the session pages as 'Protokoll GV 08.06.2026'"}]},{"bfs_id":141,"name":"Thalwil","canton":"ZH","status":"candidate","website":"http://www.thalwil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.thalwil.ch/sitzung","from":"2008","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 73 sessions since 2008; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 20260618'"}]},{"bfs_id":151,"name":"Erlenbach","canton":"ZH","status":"configured","website":"https://www.erlenbach.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch wordpress","notes":"assembly pages under /gemeindeversammlungen/, one per session, each with its protocol; a 2020 announcement labelled 'Protokoll' is excluded by URL","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.erlenbach.ch/de/politik/gemeinderversammlungen-uebersicht/","from":"2015","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (26 Gemeindeversammlung event pages back to 2015 -> redacted protocol PDF), max_follow 80; 22 minutes since June 2015 on 11 September 2026; the assembly pages of 2017 and early 2018 link no protocol (Ergebnisse and Weisung only), hence the gap"}]},{"bfs_id":152,"name":"Herrliberg","canton":"ZH","status":"configured","website":"https://www.herrliberg.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.herrliberg.ch/politik/gemeindeversammlung.html/41","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":153,"name":"Hombrechtikon","canton":"ZH","status":"configured","website":"http://www.hombrechtikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.hombrechtikon.ch/politik/gemeinderatsbeschluesse.html/567","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":154,"name":"Küsnacht","canton":"ZH","status":"not_published","website":"https://www.kuesnacht.ch/","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":".page/<id> URL variant of GOViS; register guess: document_kind decisions for the single Resultatmeldung","publications":[{"body":"assembly","kind":"decisions","status":"not_published","listing_url":"https://www.kuesnacht.ch/gemeinde/politik/gemeindeversammlung.page/829","from":null,"to":null,"cadence":null,"obstacle":"page holds only the latest assembly's Beschluesse (Resultatmeldung), Kurzbericht and Weisung PDFs; no protocol and no archive found (news archive not checked)","how":"check the news archive; ask commune"}]},{"bfs_id":155,"name":"Männedorf","canton":"ZH","status":"candidate","website":"https://www.maennedorf.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.maennedorf.ch/sitzung","from":"2010","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2010; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 15. Juni 2026'"}]},{"bfs_id":156,"name":"Meilen","canton":"ZH","status":"candidate","website":"https://www.meilen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-14","checked_by":"Codex, official pages and PDF response verified","notes":"2026-09-14: The former /sitzung probe missed the renamed archive. The existing iWeb parser reads 62 assembly entries from /termine-und-archiv-2025 and 15 direct finance PDF links from /budgetrechnung. Older assembly details contain attachments. The page labelled archive from December 2025 embeds the cantonal voting application; that external source is not yet collected. See docs/MEILEN-REVIEW-2026-09-14.md. Counts are discovered links, not held files.","publications":[{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://www.meilen.ch/termine-und-archiv-2025","from":"2014","to":null,"cadence":null,"obstacle":null,"how":"Existing iWeb embedded-table parser; follow observed assembly detail links."},{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://www.meilen.ch/budgetrechnung","from":"2016","to":null,"cadence":null,"obstacle":null,"how":"Direct PDFs and linked publication details; budgets and annual accounts."},{"body":"assembly","kind":"documents","status":"candidate","listing_url":"https://www.meilen.ch/_rte/publikation/596726","from":"2025","to":null,"cadence":null,"obstacle":null,"how":"Budget 2026, publication dated 15 December 2025; PDF response verified."},{"body":"assembly","kind":"documents","status":"blocked_robots","listing_url":"https://www.meilen.ch/termine-archiv-dez-2025","from":null,"to":null,"cadence":null,"obstacle":"Verified 2026-09-14: app.statistik.zh.ch/robots.txt allows /wahlen_abstimmungen/prod but disallows the /wahlen_abstimmungen/data_prod JSON index and assembly data. The public UI works; automatic collection of that data is restricted.","how":"Request a permitted data feed or obtain the newer documents from the commune."}]},{"bfs_id":157,"name":"Oetwil am See","canton":"ZH","status":"not_published","website":"http://www.oetwil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.oetwil.ch/politik/gemeindeversammlung.html/27","from":null,"to":null,"cadence":null,"obstacle":"per assembly: Beleuchtender Bericht and the Gemeinderat's motions (GRB ...); no protocol","how":"ask commune"}]},{"bfs_id":158,"name":"Stäfa","canton":"ZH","status":"configured","website":"https://www.staefa.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"govis report: validated with follow capped at 2, one document seen; by hand the 2025 page has four assemblies with protocols; the one document has a typo in its anchor year (2023) versus its file name (2022); generic anchor text; disagreement: docs/VENDOR-PATTERNS.md found the same archive year pages 2019-2025 as empty shells filled from /route/ (JS variant, robots-disallowed) and marked Staefa unreachable; register keeps the govis result because the crawler downloaded a PDF","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.staefa.ch/politik/gemeindeversammlungen/archiv.html/757","from":"2023-11-28","to":"2023-11-28","cadence":null,"obstacle":null,"how":"html_links, 3 hops (year pages 2019-2025 -> assembly page -> 'Protokoll' PDF with date in file name), max_follow 80"}]},{"bfs_id":159,"name":"Uetikon am See","canton":"ZH","status":"candidate","website":"https://www.uetikonamsee.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from http://www.uetikon.org to https://www.uetikonamsee.ch/. Corrected official hostname is now used by the register-driven iWeb sync queue. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.uetikonamsee.ch/sitzung","from":"2013","to":"2026-06-22","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 42 sessions since 2013; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 22.06.2026'"}]},{"bfs_id":160,"name":"Zumikon","canton":"ZH","status":"candidate","website":"http://www.zumikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zumikon.ch/sitzung","from":"2011","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 48 sessions since 2011; minutes attached to the session pages as '04 - Protokoll Gemeindeversammlung'"}]},{"bfs_id":161,"name":"Zollikon","canton":"ZH","status":"configured","website":"https://www.zollikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.zollikon.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":172,"name":"Fehraltorf","canton":"ZH","status":"not_examined","website":"http://www.fehraltorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 17 sessions since 2022 (Ausserordentliche-Gemeindeversammlung - abgesagt, Budget-Gemeindeversammlung, Rechnungs-Gemeindeversammlung); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":173,"name":"Hittnau","canton":"ZH","status":"not_examined","website":"https://www.hittnau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":176,"name":"Lindau","canton":"ZH","status":"candidate","website":"https://www.lindau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.lindau.ch/sitzung","from":"2013","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 31 sessions since 2013; minutes attached to the session pages as 'Protokoll GV vom 15.06.2026'"}]},{"bfs_id":177,"name":"Pfäffikon","canton":"ZH","status":"configured","website":"https://www.pfaeffikon.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"2026-09-26 coverage review: WordPress media API unavailable, but public HTML document sections expose ordinary PDF links. Reviewed regulations, finances and council sections plus representative PDF bytes; collect through linked archive without title filters or restricted API access.","publications":[{"body":"executive","kind":"decisions","status":"configured","listing_url":"https://www.pfaeffikon.ch/politik/informationen/gemeinderatsbeschluesse/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":178,"name":"Russikon","canton":"ZH","status":"not_examined","website":"http://www.russikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":180,"name":"Weisslingen","canton":"ZH","status":"candidate","website":"http://www.weisslingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.weisslingen.ch/sitzung","from":"2021","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 17 sessions since 2021; minutes attached to the session pages as 'Protokoll GV 15.06.2026 signiert'"}]},{"bfs_id":181,"name":"Wila","canton":"ZH","status":"blocked_js","website":"http://www.wila.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: no assembly or protocol page in the sitemap","publications":[]},{"bfs_id":182,"name":"Wildberg","canton":"ZH","status":"candidate","website":"http://www.wildberg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wildberg.ch/sitzung","from":"2007","to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 49 sessions since 2007; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 24. Juni 2026'"}]},{"bfs_id":191,"name":"Dübendorf","canton":"ZH","status":"configured","website":"http://www.duebendorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.duebendorf.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_191.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":192,"name":"Egg","canton":"ZH","status":"not_examined","website":"http://www.egg.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":193,"name":"Fällanden","canton":"ZH","status":"candidate","website":"http://www.faellanden.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.faellanden.ch/sitzung","from":"2007","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 46 sessions since 2007; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 17. Juni 2026'"}]},{"bfs_id":194,"name":"Greifensee","canton":"ZH","status":"candidate","website":"https://www.greifensee.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.greifensee.ch/sitzung","from":"2018","to":"2025-11-26","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 21 sessions since 2018; minutes attached to the session pages as 'Gemeindeversammlung Protokoll 26.11.2025'"}]},{"bfs_id":195,"name":"Maur","canton":"ZH","status":"configured","website":"https://www.maur.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"Broschuere, Ergebnis and 'Protokoll der Gemeindeversammlung vom ...' per assembly","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.maur.ch/politik/gemeindeversammlungen/archiv.html/772","from":"2016-06-06","to":"2026-06-08","cadence":null,"obstacle":null,"how":"html_links, 1 hop, flat archive"}]},{"bfs_id":196,"name":"Mönchaltorf","canton":"ZH","status":"not_examined","website":"http://www.moenchaltorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":197,"name":"Schwerzenbach","canton":"ZH","status":"configured","website":"http://www.schwerzenbach.ch","vendor":"typo3","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch typo3","notes":"anchor text of the PDF is the file name; the site also has per-session Gemeinderat decision pages (aktuelles/beschluesse-des-gemeinderates/gr-sitzung-ddmmyyyy), apparently HTML, not checked","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.schwerzenbach.ch/politik/gemeindeversammlungen/","from":"2023-06-16","to":"2026-06-17","cadence":null,"obstacle":null,"how":"html_links, 2 hops (one page per assembly, slug yyyymmdd, anchor text the date -> Protokoll PDF), date from the folder"}]},{"bfs_id":198,"name":"Uster","canton":"ZH","status":"configured","website":"https://www.uster.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.uster.ch/sitzung","from":null,"to":null,"cadence":null,"obstacle":null,"how":null},{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_198.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":199,"name":"Volketswil","canton":"ZH","status":"configured","website":"https://www.volketswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":null,"publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.volketswil.ch/politik/gemeindeversammlung.html/10","from":"2015-09-18","to":"2026-06-12","cadence":null,"obstacle":"partial: anchor text always 'Protokoll der GV'; 19 of 28 dated, about 9 files carry no date in the name and the date sits in the sibling table cell; report status ok, register partial (32 percent undated)","how":"html_links, 1 hop, flat tables per year, date_regex yyyymmdd_ (ymd); row-cell date feature would date the rest"}]},{"bfs_id":200,"name":"Wangen-Brüttisellen","canton":"ZH","status":"candidate","website":"http://www.wangen-bruettisellen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.wangen-bruettisellen.ch/sitzung","from":"2004","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 88 sessions since 2004; minutes attached to the session pages as 'Gemeindeversammlung 09.06.2026 - Protokoll - 09.06.2026'"}]},{"bfs_id":211,"name":"Altikon","canton":"ZH","status":"candidate","website":"http://www.altikon.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.altikon.ch/politik/gemeindeversammlungen/protokolle.html/151","from":null,"to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: 15 dated PDF links on the page, newest 2026-06-29, e.g. 'Protokoll der Gemeindeversammlung vom 29.06.2026'; body guessed from the URL"}]},{"bfs_id":213,"name":"Brütten","canton":"ZH","status":"candidate","website":"http://www.bruetten.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bruetten.ch/gemeindeversammlung","from":"2013","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 33 sessions since 2013; minutes attached to the session pages as 'Protokoll für Hompage der Gemeindeversammlung vom 12. Juni 2025'"}]},{"bfs_id":214,"name":"Dägerlen","canton":"ZH","status":"candidate","website":"https://www.daegerlen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.daegerlen.ch/sitzung","from":"2020","to":"2026-06-18","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 14 sessions since 2020; minutes attached to the session pages as 'KIRCHE_GV_Protokoll'"}]},{"bfs_id":215,"name":"Dättlikon","canton":"ZH","status":"candidate","website":"http://www.daettlikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.daettlikon.ch/sitzung","from":"2017","to":"2026-06-24","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 19 sessions since 2017; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 4. Dezember 2025'"}]},{"bfs_id":216,"name":"Dinhard","canton":"ZH","status":"blocked_js","website":"https://www.dinhard.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call. Reviewed broader public PDF listings on 2026-09-26; see docs/reviews/2026-09-26-archive-audit.md. These mixed documents are archived without inferred decision tags.","publications":[]},{"bfs_id":218,"name":"Ellikon an der Thur","canton":"ZH","status":"candidate","website":"http://www.ellikonanderthur.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: generic_pdf_page","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.ellikonanderthur.ch/politik/gemeindeversammlung.html/147","from":null,"to":"2026-06-25","cadence":null,"obstacle":null,"how":"probe: 24 dated PDF links on the page, newest 2026-06-25, e.g. 'Protokoll Gemeindeversammlung Politische Gemeinde Donnerstag'; body guessed from the URL"}]},{"bfs_id":219,"name":"Elsau","canton":"ZH","status":"candidate","website":"http://www.elsau.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.elsau.ch/sitzung","from":"2012","to":"2026-06-09","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 32 sessions since 2012; minutes attached to the session pages as 'Protokoll Gemeindeversammlung vom 9. Juni 2026'"}]},{"bfs_id":220,"name":"Hagenbuch","canton":"ZH","status":"blocked_js","website":"https://www.hagenbuch-zh.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: GOViS variant that renders page content from /route/, which robots.txt disallows; only the vendor or the commune can open it; sitemap re-check 2026-09-10: the assembly page is empty without the robots-disallowed /route/ call\n\n2026-09-26 coverage review: Public mixed finance, regulations and assembly archive reviewed; representative PDF bytes verified. Observed GOViS sections use generic persistent linked discovery without topic filters. Former registered official website redirects to https://www.hagenbuch-zh.ch; registered website corrected.","publications":[]},{"bfs_id":221,"name":"Hettlingen","canton":"ZH","status":"candidate","website":"http://www.hettlingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.hettlingen.ch/sitzung","from":"2010","to":"2026-06-01","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 39 sessions since 2010; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 01.06.2026_20260605'"}]},{"bfs_id":223,"name":"Neftenbach","canton":"ZH","status":"candidate","website":"http://www.neftenbach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.neftenbach.ch/sitzung","from":"2016","to":"2026-06-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 23 sessions since 2016; minutes attached to the session pages as 'Protokoll GV vom 03.06.2026'"}]},{"bfs_id":224,"name":"Pfungen","canton":"ZH","status":"candidate","website":"https://www.pfungen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.pfungen.ch/sitzung","from":"2012","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 39 sessions since 2012; minutes attached to the session pages as '6.0 Protokoll der Gemeindeversammlung vom 11. Juni 2026'"}]},{"bfs_id":225,"name":"Rickenbach","canton":"ZH","status":"not_examined","website":"https://www.rickenbach-zh.ch","vendor":"weblication","reachable":false,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"homepage did not answer during the probe of 2026-09-08; probe 2026-09-10: homepage did not answer\n\n2026-09-26 remaining-89 review: untagged public PDF archive configured in linked-sources.yaml. Reviewed 2026-09-26: public municipal document listings; archive documents remain unclassified. Robots exclusions and redirect checks remain enforced.","publications":[]},{"bfs_id":226,"name":"Schlatt","canton":"ZH","status":"candidate","website":"http://www.schlatt-zh.ch","vendor":"wordpress","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: wp_media","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.schlatt-zh.ch/wp-json/wp/v2/media?search=protokoll&mime_type=application/pdf&per_page=20","from":null,"to":"2023-10-22","cadence":null,"obstacle":null,"how":"probe: WordPress media endpoint answers; 9 files match, newest 2023-10-22, e.g. 'WP_20231022_4_Gemeindeprotokoll'; body guessed from the URL"}]},{"bfs_id":227,"name":"Seuzach","canton":"ZH","status":"not_examined","website":"http://www.seuzach.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: no session module and no protocol page on /sitemap","publications":[]},{"bfs_id":228,"name":"Turbenthal","canton":"ZH","status":"blocked_js","website":"http://www.turbenthal.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"onboarding wave 2 (agents)","notes":"wave 2: assembly decisions on epublikation.ch (JavaScript app), no minutes on the site","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.turbenthal.ch/gemeinderat.html/20","from":null,"to":null,"cadence":null,"obstacle":"the sitemap (202 links) has no Gemeindeversammlung or Protokoll page; no full minutes found","how":null},{"body":"assembly","kind":"decisions","status":"blocked_js","listing_url":"https://www.turbenthal.ch/amtliche-publikationen.html/298","from":null,"to":null,"cadence":null,"obstacle":"'Amtliche Publikationen' links the assembly decisions ('Beschluesse der Gemeindeversammlung vom 15.06.2026') on epublikation.ch, a hash-routed JavaScript app (#!/search/publications/detail/<uuid>) without PDF links","how":"an adapter for the cantonal platform epublikation.ch (meant to have a public API, not verified) would open the decision lists of many ZH communes"}]},{"bfs_id":230,"name":"Winterthur","canton":"ZH","status":"upstream_only","website":"https://stadt.winterthur.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":"Grosser Gemeinderat; i-web host, unreachable from the crawler's network","publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_230.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"},{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"municipal site: i-web /sitzung pattern, inferred (docs/CITY-SOURCES.md); minutes come from the OpenParlData export"}]},{"bfs_id":231,"name":"Zell","canton":"ZH","status":"candidate","website":"http://www.zell.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.zell.ch/sitzung","from":"2013","to":"2026-06-15","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 38 sessions since 2013; minutes attached to the session pages as 'Protokoll Gemeindeversammlung 15.06.2026'"}]},{"bfs_id":241,"name":"Aesch","canton":"ZH","status":"not_examined","website":"https://www.aesch-zh.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 55 sessions since 2005 ((VERSCHOBEN) a.o. Gemeindeversammlung, Ausserordentliche Gemeindeversammlung, Ausserordn. Gemeindeversammlung, Budget-Ge); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":242,"name":"Birmensdorf","canton":"ZH","status":"candidate","website":"http://www.birmensdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.birmensdorf.ch/gemeindeversammlungen","from":"2002","to":"2026-09-08","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 79 sessions since 2002; minutes attached to the session pages as 'Politische Gemeinde Birmensdorf, Protokoll 9.6.2026'"}]},{"bfs_id":243,"name":"Dietikon","canton":"ZH","status":"not_examined","website":"http://www.dietikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; Gemeinderat (parliament); i-web host, unreachable from the crawler's network; probe 2026-09-10: /sitzung lists 207 sessions since 2006 (Absage: Gemeinderatssitzung, Gemeinderatssitzung, Gemeinderatssitzung (Doppelsitzung), Gemeinderatssitzung (Konstituieru); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[{"body":"parliament","kind":"minutes","status":"blocked_network","listing_url":null,"from":null,"to":null,"cadence":null,"obstacle":null,"how":"i-web /sitzung pattern, inferred from indexed URLs (docs/CITY-SOURCES.md)"}]},{"bfs_id":244,"name":"Geroldswil","canton":"ZH","status":"configured","website":"https://www.geroldswil.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"per-item Beschluesse (GVB_...) next to the protocol; validated with follow capped at 3","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.geroldswil.ch/verwaltungpolitik/politik/gemeindeversammlung.html/110","from":"2025-12-08","to":"2026-06-15","cadence":null,"obstacle":null,"how":"html_links, 2 hops (assembly pages 2023-2026 linked as 'Zu den Geschaeften / Ergebnissen' -> 'GV Protokoll dd.mm.yyyy'), max_follow 80"}]},{"bfs_id":245,"name":"Oberengstringen","canton":"ZH","status":"candidate","website":"http://www.oberengstringen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.oberengstringen.ch/sitzung","from":"2003","to":"2026-09-07","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 52 sessions since 2003; minutes attached to the session pages as '2026.06.08_Protokoll_Gemeindeversammlung_prov'"}]},{"bfs_id":246,"name":"Oetwil an der Limmat","canton":"ZH","status":"not_examined","website":"https://www.oetwiladl.ch","vendor":"govis","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_vendors.py (unverified)","notes":"probe 2026-09-10: no link mentioning minutes or a council on the home page\n\n2026-09-26 coverage review: Reviewed current public document, council and finance listings; configured bounded linked discovery and untagged PDF archiving with robots checks. Former registered domain redirects to www.oetwiladl.ch; registered website corrected to official destination.","publications":[]},{"bfs_id":247,"name":"Schlieren","canton":"ZH","status":"upstream_only","website":"https://www.schlieren.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_247.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":248,"name":"Uitikon","canton":"ZH","status":"candidate","website":"http://www.uitikon.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.uitikon.ch/sitzung","from":"2021","to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 11 sessions since 2021; minutes attached to the session pages as 'Protokoll der Gemeindeversammlung vom 27. Mai 2026'"}]},{"bfs_id":249,"name":"Unterengstringen","canton":"ZH","status":"candidate","website":"http://www.unterengstringen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.unterengstringen.ch/sitzung","from":"2022","to":"2026-06-10","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 10 sessions since 2022; minutes attached to the session pages as 'Gemeindeversammlungsprotokoll 24.09.2025'"}]},{"bfs_id":250,"name":"Urdorf","canton":"ZH","status":"not_examined","website":"http://www.urdorf.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 40 sessions since 2009 (Gemeindeversammlung Urdorf, Gemeindeversammlung Urdorf (ABGESAGT)); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":251,"name":"Weiningen","canton":"ZH","status":"not_examined","website":"http://www.weiningen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: /sitzung lists 13 sessions since 2022 (Gemeindeversammlung Kreisgemeinde Weiningen, Gemeindeversammlung Weiningen, Gemeindeversammlung vom 27. Juni 2024, Gemei); the newest three carry no minutes or decision list; /sitemap names no protocol page","publications":[]},{"bfs_id":261,"name":"Zürich","canton":"ZH","status":"configured","website":"https://www.gemeinderat-zuerich.ch","vendor":"cmi-paris","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"configured","listing_url":"https://www.gemeinderat-zuerich.ch/api/sitzung/searchdetails/","from":null,"to":null,"cadence":null,"obstacle":null,"how":null}]},{"bfs_id":291,"name":"Andelfingen","canton":"ZH","status":"candidate","website":"https://www.andelfingen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.andelfingen.ch/sitzung","from":"2006","to":"2026-05-27","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 42 sessions since 2006; decisions attached to the session pages as '26.05.21 Beschluss Gemeindeversammlung'"}]},{"bfs_id":292,"name":"Stammheim","canton":"ZH","status":"candidate","website":"https://www.stammheim.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.stammheim.ch/sitzung","from":"2019","to":"2026-06-17","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 20 sessions since 2019; minutes attached to the session pages as 'Protokoll GV 17.06.2026'"}]},{"bfs_id":293,"name":"Wädenswil","canton":"ZH","status":"upstream_only","website":"http://www.waedenswil.ch","vendor":"i-web","reachable":true,"checked":"2026-09-06","checked_by":"prototype onboarding (communes.yaml)","notes":null,"publications":[{"body":"parliament","kind":"minutes","status":"upstream_only","listing_url":"https://files.openparldata.ch/exports/docs/docs_293.ndjson.gz","from":null,"to":null,"cadence":null,"obstacle":null,"how":"OpenParlData export (docs/decisions/0003)"}]},{"bfs_id":294,"name":"Elgg","canton":"ZH","status":"configured","website":"https://www.elgg.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"event pages also hold Gemeinderat Protokollauszuege, dropped by text_regex (exclude_regex was a no-op at validation time; fixed by commit 74b44a1); validated with follow capped at 5","publications":[{"body":"assembly","kind":"minutes","status":"configured","listing_url":"https://www.elgg.ch/politik-verwaltung/politik/gemeindeversammlung.html/83","from":"2025-09-09","to":"2026-06-18","cadence":null,"obstacle":null,"how":"html_links, 2 hops (event module, nine assembly events 2025-2026 -> event page 'Protokoll Gemeindeversammlung vom ...'), max_follow 80"}]},{"bfs_id":295,"name":"Horgen","canton":"ZH","status":"not_published","website":"https://www.horgen.ch","vendor":"govis","reachable":true,"checked":"2026-09-08","checked_by":"onboarding agent, batch govis","notes":"canton corrected by report: batch says VS, Horgen is ZH; only 2026 dates and one party-slate PDF","publications":[{"body":"assembly","kind":"minutes","status":"not_published","listing_url":"https://www.horgen.ch/ueber-horgen/politik/gemeindeversammlungen.html/144","from":null,"to":null,"cadence":null,"obstacle":"page states that documents of earlier assemblies are not online after a system change and are available on request by email","how":"ask commune"}]},{"bfs_id":296,"name":"Illnau-Effretikon","canton":"ZH","status":"candidate","website":"https://www.ilef.ch/","vendor":"i-web","reachable":true,"checked":"2026-09-12","checked_by":"OpenCommune official-site and PDF review","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read\n\n2026-09-12: Official municipal site and a linked PDF signature verified. Website corrected from https://www.illnau-effretikon.ch to https://www.ilef.ch/. Corrected official hostname is now used by the register-driven iWeb sync queue. See docs/ADDRESS-CANDIDATES-REVIEW-2026-09-12.md.","publications":[{"body":"parliament","kind":"decisions","status":"candidate","listing_url":"https://www.ilef.ch/sitzung","from":"2014","to":"2026-09-03","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 108 sessions since 2014; decisions attached to the session pages as '20260903_BER_Beschlüsse der 2. STAPA-Sitzung'"}]},{"bfs_id":297,"name":"Bauma","canton":"ZH","status":"candidate","website":"https://www.bauma.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"minutes","status":"candidate","listing_url":"https://www.bauma.ch/sitzung","from":"2012","to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 47 sessions since 2012; minutes attached to the session pages as 'Protokoll'"}]},{"bfs_id":298,"name":"Wiesendangen","canton":"ZH","status":"candidate","website":"https://www.wiesendangen.ch","vendor":"i-web","reachable":true,"checked":"2026-09-10","checked_by":"scripts/probe_iweb.py (unverified)","notes":"the /sitzung listing pattern is likely; probe 2026-09-10: i-web session module read","publications":[{"body":"assembly","kind":"decisions","status":"candidate","listing_url":"https://www.wiesendangen.ch/sitzung","from":"2013","to":"2026-06-29","cadence":null,"obstacle":null,"how":"probe: /sitzung lists 28 sessions since 2013; decisions attached to the session pages as 'PVO-Revision Beschluss Gemeinderat'"}]}]