Skip to content
This repository was archived by the owner on Jun 6, 2026. It is now read-only.
This repository was archived by the owner on Jun 6, 2026. It is now read-only.

Build cross-border corridor scaffolding for Luxembourg's top 4 partner countries #40

@TommiLindfors

Description

@TommiLindfors

Context

The Luxembourg bereavement workflow currently contains data for a single jurisdiction. In practice, almost every family using Clarvia will face cross-border complexity: 47%% of Luxembourg residents are foreign nationals, ~225,000 frontaliers commute daily from France, Germany, and Belgium, and the Portuguese community (~100,000 residents) is the largest foreign nationality group.

The schema already supports cross-border scenarios (scenario_type: 'cross_border' and 'corridor') but no data uses them yet. This issue builds the infrastructure - scenarios, conditions, sources, and institutions - that cross-border workflows will plug into.

This is infrastructure only. No new tasks, no workflow modifications, no checklist content.


What to build

1. Corridor scenarios (4 new files)

Create one scenario per corridor in data/scenarios/:

  • corridor-lu-fr.yaml - Luxembourg - France (~120,000 frontaliers)
  • corridor-lu-de.yaml - Luxembourg - Germany (~55,000 frontaliers)
  • corridor-lu-be.yaml - Luxembourg - Belgium (~50,000 frontaliers)
  • corridor-lu-pt.yaml - Luxembourg - Portugal (~100,000 residents)

Each uses scenario_type: 'corridor', countries: ['LU', 'XX'], and references the conditions and sources created below. Follow scenario.schema.json.

2. Cross-border conditions (new files in data/conditions/)

Create conditions that trigger cross-border logic:

  • deceased-is-foreign-national.yaml - the deceased holds a non-LU nationality
  • deceased-is-frontalier.yaml - the deceased commuted across borders for work
  • survivor-resides-abroad.yaml - the surviving family member lives outside Luxembourg
  • assets-in-multiple-jurisdictions.yaml - the estate includes property or accounts in more than one country
  • repatriation-of-remains.yaml - the family wishes to transport the body or ashes to another country

Follow condition.schema.json.

3. EU-level source records (new files in data/sources/eu/)

Create source records for the key EU regulations:

4. Foreign government source records

For each country, create source records for their official bereavement/administrative portals in data/sources/XX/:

France (data/sources/fr/):

  • service-public-deces.yaml - French bereavement guidance on service-public.gouv.fr
  • info-retraite-reversion.yaml - French survivor pension (pension de reversion) filing via Info Retraite

Germany (data/sources/de/):

  • drv-hinterbliebenenrente.yaml - DRV survivor pension (Hinterbliebenenrente) page
  • drv-rente-und-ausland.yaml - DRV cross-border pension services (Rente und Ausland)

Belgium (data/sources/be/):

  • belgium-be-deces.yaml - Belgian death registration and succession on belgium.be

Portugal (data/sources/pt/):

  • gov-pt-obito.yaml - Portuguese bereavement guidance on gov.pt (Family > death theme)

5. Foreign institution records

For each corridor, create institution records in data/institutions/XX/ for organisations a Luxembourg family would interact with:

France:

  • carsat.yaml - Caisse d'Assurance Retraite et de la Santé au Travail (survivor pension)
  • scec.yaml - Service central d'etat civil (death transcription for deaths occurring in Luxembourg)

Germany:

  • drv.yaml - Deutsche Rentenversicherung (survivor pension and cross-border pension services)

Belgium:

  • sfp.yaml - Service federal des Pensions / Federale Pensioendienst (survivor pension)

Portugal:

  • seguranca-social.yaml - Seguranca Social / Centro Nacional de Pensoes (survivor pension and social security)

Key research findings to encode

Our research (linked below) found these high-confidence facts to include in notes and descriptions:

France: Death abroad must be registered locally. French transcription of a Luxembourg death certificate goes via the Service central d'etat civil (SCEC). Survivor pension (reversion) can be claimed through a single online request on Info Retraite covering all base and complementary schemes. If filed within 1 year of death, start date is first day of month after death.

Germany: DRV has dedicated cross-border pension services ('Rente und Ausland') and international advisory days. Survivor pension requires marriage/partnership at death and 5-year qualifying period. 'Sterbevierteljahr': 3 months after death month, pension paid at deceased's full rate with no income offset.

Belgium: Death declared to municipality where person died (usually by undertaker). Certificate forwarded to municipality of last residence. Succession duties are regional and depend on fiscal residence.

Portugal: Official gov.pt portal has Family/death theme with English access. Funeral subsidy via CGA exists. Detailed survivor-pension routing and death transcription process need further verification (see issue #XX for source verification task).


PR strategy

Submit as 4 separate PRs, one per corridor:

  1. PR 1: EU-level sources + cross-border conditions (the shared foundation)
  2. PR 2: France corridor (scenario + sources + institutions)
  3. PR 3: Germany corridor (scenario + sources + institutions)
  4. PR 4: Belgium + Portugal corridors (scenarios + sources + institutions)

Or if you prefer, one PR per country after the foundation PR. Either way, the foundation PR must merge first since the corridor PRs reference its conditions and EU sources.


What NOT to build

  • No new tasks (checklist content is a separate funded project)
  • No modifications to luxembourg-alpha.yaml (the workflow stays at 1 task)
  • No publication status above draft
  • No hard-coded business rules for pension claiming or succession - only source records and institutional metadata

Schema guidance

  • Read every schema in schemas/v0.1/ before writing. All schemas use additionalProperties: false
  • Source IDs follow pattern source:XX:short-name where XX is the 2-letter country code
  • Institution IDs follow pattern institution:XX:short-name
  • Scenario IDs follow pattern scenario:corridor-name
  • Condition IDs follow pattern condition:descriptive-name
  • Set verification_status: 'structured-from-source' where you have a source URL you've verified loads correctly
  • Set verification_status: 'discovered' where the source exists but you could not fully verify the content
  • Use the notes field to document your source evidence and any caveats

Acceptance criteria

  • python3 scripts/validate.py passes after each PR
  • All new files follow their respective schemas exactly
  • Every source record has a verified URL that loads
  • Every institution record has an official_site that loads
  • PR bodies document source evidence with quoted text where available
  • All files have trailing newlines
  • Foundation PR merges before corridor PRs

Difficulty

Large multi-PR research project. ~20-25 new files across 4 PRs. Requires reading foreign-language government portals and encoding findings as schema-compliant YAML. Builds directly on your experience with source research, institution records, and schema compliance from PRs #34, #35, #38, and #39.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions