This repository was archived by the owner on Jun 6, 2026. It is now read-only.
Commit 5e65f62
authored
Part 4 of 4 for issue #40. Completes the cross-border corridor
infrastructure with Belgium and Portugal.
---
## Context
This PR adds the two remaining corridors:
- **Belgium** — ~50,000 daily frontaliers, third largest corridor
- **Portugal** — ~100,000 residents, the largest foreign national
community in Luxembourg
---
## Files added
### `data/sources/be/belgium-be-deces.yaml`
**URL verified:** https://www.belgium.be/fr/famille/deces — loads
correctly, title confirmed as "Décès".
- `source_type: government_portal`
- `verification_status: source-checked`
- `languages: [fr, nl, de]` — belgium.be is trilingual
- Includes `title_fr`, `title_de`, `description_fr`, `description_de`
**Key facts documented in notes (from issue #40 research):**
- Death must be declared to the municipality where the person died,
usually handled by the undertaker
- Death certificate is then forwarded to the municipality of last
residence
- Succession duties in Belgium are regional and depend on fiscal
residence
---
### `data/institutions/be/sfp.yaml`
**URL verified:** https://www.sfpd.fgov.be — loads correctly as "Federal
Pensions Service".
- `id: institution:be:sfp`
- `verification_status: structured-from-source`
- `languages: [fr, nl, de]` — Belgian trilingual institution (SFP in
French, FPD in Dutch)
- References `source:be:belgium-be-deces`
**Key facts documented in notes:**
- Survivor pension applications submitted via mypension.be
- Coordinates with CNAP via EU social security coordination for
cross-border cases
- Covers ~50,000 Belgian frontaliers
---
### `data/scenarios/corridor-lu-be.yaml`
- `scenario_type: corridor`
- `countries: [LU, BE]`
- `publication_status: draft`
- References all 5 PR1 conditions and both EU sources + BE source
---
### `data/sources/pt/gov-pt-obito.yaml`
**URL:** https://eportugal.gov.pt/en/temas/familia/morte — identified
from official ePortugal portal structure; page was inaccessible during
creation.
- `source_type: government_portal`
- `verification_status: discovered` — honest status, URL could not be
confirmed loading
- `last_verified_at: null`
- Notes explicitly state full content verification requires further
access
**Key facts encoded from issue #40 research:**
- Death of a Portuguese citizen abroad must be declared in Portugal
- Survivor pension (pensão de sobrevivência) requires minimum 36 months
of contributions
- Application via Segurança Social Direta using form RP 5075
---
### `data/institutions/pt/seguranca-social.yaml`
**URL:** https://www.seg-social.pt — confirmed loading from research.
- `id: institution:pt:seguranca-social`
- `verification_status: discovered` — consistent with PT source status
- `languages: [pt]`
**Key facts documented in notes:**
- Portugal has the largest foreign national community in Luxembourg
(~100,000 residents)
- 36-month contribution requirement for survivor pension
- Death of Portuguese national abroad must be registered in Portugal via
consular services
- Centro Nacional de Pensões (CNP) within ISS handles international
pension coordination
---
### `data/scenarios/corridor-lu-pt.yaml`
- `scenario_type: corridor`
- `countries: [LU, PT]`
- `publication_status: draft`
- Notes explicitly flag that further source verification is needed for
full PT corridor detail
---
## Verification status honesty
Belgium sources are `source-checked` — URLs verified loading, content
confirmed.
Portugal sources are `discovered` — URL identified from official portal
structure but could not be verified loading during creation. This is
consistent with issue #40's own note: "Detailed survivor-pension routing
and death transcription process need further verification."
---
## Issue #40 complete
With this PR all four corridors are now in main:
- PR 1/4 (#47) — EU foundation (conditions + EU regulations) ✅
- PR 2/4 (#48) — France corridor ✅
- PR 3/4 (#49) — Germany corridor ✅
- PR 4/4 (this PR) — Belgium + Portugal corridors
Total new files across all 4 PRs: 25 files covering 2 EU regulations, 5
cross-border conditions, 4 corridor scenarios, 6 foreign sources, 5
foreign institutions.
---
## Schema compliance
- All schemas read before writing — `additionalProperties: false`
respected throughout
- All condition IDs reference conditions from PR 1 (merged)
- All EU source IDs reference sources from PR 1 (merged)
- `institution_ids` and `source_ids` cross-references consistent within
each PR
---
## Verified
- `python3 scripts/validate.py` — passes (34 data files, up from 28)
- All 6 trailing newlines confirmed `0a`
- 6 new files, 0 existing files modified
- `git status` confirmed no unintended changes
1 parent 865fb47 commit 5e65f62
6 files changed
Lines changed: 158 additions & 0 deletions
File tree
- data
- institutions
- be
- pt
- scenarios
- sources
- be
- pt
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
0 commit comments