alliance-boreale/docs/constitution/doc_14_registraire_yaml.md
Dan Allaire 6fe18ddaf4
Some checks are pending
CI / yaml-lint (push) Waiting to run
CI / ssot-export (push) Waiting to run
CI / tests (push) Waiting to run
CI / docs (push) Waiting to run
avancement de la ocnstitution de l'Alliance
2025-10-20 17:47:02 -04:00

28 KiB

Document 14 : Structure YAML du Registraire

L'Alliance Boréale — Source de Vérité Unique

Version : 1.0
Date : 20 octobre 2025
Statut : Production
Auteur : L'Alliance Boréale


📋 Table des matières

  1. Philosophie du Registraire
  2. Architecture des Fichiers
  3. Schéma : Fiche Membre (partner.yml)
  4. Schéma : Allocations Réseau (network/allocations.yml)
  5. Schéma : Labels et Conformité (labels/)
  6. Schéma : Gouvernance (governance/)
  7. Schéma : Topologie VPN (network/topology.yml)
  8. Processus de Mise à Jour
  9. Validation et Intégrité
  10. Exemples Complets

1. Philosophie du Registraire

1.1 Principes fondateurs

Le Registraire de L'Alliance Boréale est la source de vérité unique pour :

  • L'identité de chaque membre
  • Les allocations réseau (/16 par membre)
  • Les niveaux de label et dates d'expiration
  • La topologie VPN et tunnels peer-to-peer
  • Les décisions de gouvernance et audits

1.2 Caractéristiques clés

Caractéristique Description
Lisibilité YAML humain ET machine
Versionnement Git avec signatures PGP
Transparence Public par défaut (sauf secrets)
Décentralisation Miroirs chez chaque membre
Automatisation Consommable par Ansible/scripts

1.3 Localisation

registry.alliance-boreale.ca/
├── README.md
├── members/           # Fiches individuelles
├── network/           # Allocations IP et VPN
├── labels/            # Historique des labels
├── governance/        # Décisions et cercles
└── schemas/           # Validation JSONSchema

URL publique : https://registry.alliance-boreale.ca
Dépôt Git : git@forge.alliance-boreale.ca:alliance/registry.git


2. Architecture des Fichiers

2.1 Arborescence complète

registry.alliance-boreale.ca/
│
├── members/
│   ├── czp-001-chezlepro.yml          # Chezlepro inc.
│   ├── nul-002-nuagelibre.yml         # Nuage Libre
│   ├── tli-003-technolibre.yml        # TechnoLibre
│   └── ...
│
├── network/
│   ├── allocations.yml                # Blocs /16 par membre
│   ├── topology.yml                   # Tunnels VPN déclarés
│   └── dns-zones.yml                  # Zones DNS fédérées
│
├── labels/
│   ├── 2025-Q1.yml                    # Labels attribués Q1 2025
│   ├── 2025-Q2.yml
│   └── history/
│       └── czp-001-label-history.yml  # Historique Chezlepro
│
├── governance/
│   ├── circles.yml                    # Composition des cercles
│   ├── decisions/
│   │   ├── 2025-001-admission-nuagelibre.yml
│   │   └── 2025-002-allocation-10.1.0.0.yml
│   └── resolutions/
│       └── 2025-R01-constitution-pilote.yml
│
└── schemas/
    ├── member-schema.json             # Validation fiches membres
    ├── network-schema.json
    └── label-schema.json

2.2 Conventions de nommage

Élément Format Exemple
ID Membre [aaa]-[nnn] czp-001
Fichier Membre [id]-[shortname].yml czp-001-chezlepro.yml
Bloc Réseau 10.[N].0.0/16 10.0.0.0/16
Décision YYYY-[NNN]-[titre].yml 2025-001-admission.yml

3. Schéma : Fiche Membre (partner.yml)

3.1 Schéma complet

# members/czp-001-chezlepro.yml

# ═══════════════════════════════════════════════════════
# IDENTITÉ
# ═══════════════════════════════════════════════════════

id: czp-001
status: active  # active | probation | suspended | exited
shortname: chezlepro

legal:
  name: "Chezlepro inc."
  type: corporation  # corporation | cooperative | npo | sole_proprietorship
  jurisdiction: QC
  registration_number: "1234567890 QC"
  founded: 2018-03-15
  headquarters:
    city: "Saint-Bruno-de-Montarville"
    province: "Québec"
    country: "Canada"

# ═══════════════════════════════════════════════════════
# CONTACTS
# ═══════════════════════════════════════════════════════

contacts:
  legal:
    email: legal@chezlepro.ca
    pgp: "0xABCD1234"
  
  security:
    email: security@chezlepro.ca
    pgp: "0xEF567890"
    phone: "+1-450-555-0100"
  
  noc:  # Network Operations Center
    email: noc@chezlepro.ca
    phone: "+1-450-555-0101"
    oncall: "https://status.chezlepro.ca/oncall"
  
  privacy:
    email: privacy@chezlepro.ca
    officer: "Daniel Laroche"

# ═══════════════════════════════════════════════════════
# ADHÉSION
# ═══════════════════════════════════════════════════════

membership:
  joined: 2025-01-15
  probation_end: 2025-04-15
  sponsor: null  # Membre fondateur
  founding_member: true
  
  roles:
    - "Membre fondateur"
    - "Gardien temporaire"
    - "Coordinateur technique"

# ═══════════════════════════════════════════════════════
# LABEL DE CONFORMITÉ
# ═══════════════════════════════════════════════════════

label:
  level: gold  # bronze | silver | gold | platinum
  score: 88
  issued: 2025-10-12
  valid_until: 2026-10-12
  auditor: nul-002  # Audité par Nuage Libre
  
  domains:
    governance: 5
    security: 5
    privacy: 4
    interoperability: 5
    operations: 5
    sustainability: 4

# ═══════════════════════════════════════════════════════
# RÉSEAU & DNS
# ═══════════════════════════════════════════════════════

network:
  ipv4_block: 10.0.0.0/16
  
  segments:
    management: 10.0.0.0/24
    platform: 10.0.1.0/24
    public_dns: 10.0.2.0/24
    tenant_infra: 10.0.10.0/23
    reserved: 10.0.20.0/22
    expansion: 10.0.128.0/17
  
  gateway: 10.0.0.1
  
  dns:
    primary: 10.0.2.10
    secondary: 10.0.2.11
  
  public_nameservers:
    - name: ns1.chezlepro.ca
      ipv4: 203.0.113.10
      ipv6: 2001:db8:czp::10
    - name: ns2.chezlepro.ca
      ipv4: 203.0.113.11
      ipv6: 2001:db8:czp::11
  
  asn: null  # Optionnel si BGP

# ═══════════════════════════════════════════════════════
# VPN & FÉDÉRATION
# ═══════════════════════════════════════════════════════

vpn:
  topology: selective  # complete | regional | selective
  
  wireguard:
    public_key: "AbCdEf1234567890+GhIjKlMnOpQrStUvWxYz="
    endpoint: vpn.chezlepro.ca:51820
    allowed_ips:
      - 10.0.0.0/16
  
  tunnels:
    - peer_id: nul-002
      subnet: 10.200.0.0/30
      status: active
      established: 2025-02-20
    
    - peer_id: tli-003
      subnet: 10.200.0.4/30
      status: active
      established: 2025-03-10

# ═══════════════════════════════════════════════════════
# SERVICES OFFERTS
# ═══════════════════════════════════════════════════════

services:
  dns:
    enabled: true
    role: primary
    zones:
      - chezlepro.ca
      - alliance-boreale.ca  # Zone fédérée
  
  email:
    enabled: true
    domains:
      - chezlepro.ca
    mx_records:
      - mx1.chezlepro.ca (priority 10)
      - mx2.chezlepro.ca (priority 20)
  
  identity:
    enabled: true
    provider: keycloak
    url: https://id.chezlepro.ca
    realms:
      - boreal  # Realm fédéré
      - chezlepro  # Realm interne
    federation_metadata: https://id.chezlepro.ca/realms/boreal/.well-known/openid-configuration
  
  files:
    enabled: true
    platform: nextcloud
    url: https://nuage.chezlepro.ca
    federation: true
  
  forge:
    enabled: true
    platform: forgejo
    url: https://forge.chezlepro.ca
    federation: true
  
  monitoring:
    enabled: true
    platform: prometheus-grafana
    public_status: https://status.chezlepro.ca
    federation_metrics: https://metrics.chezlepro.ca/federated

# ═══════════════════════════════════════════════════════
# URLS PUBLIQUES
# ═══════════════════════════════════════════════════════

public_urls:
  website: https://chezlepro.ca
  status: https://status.chezlepro.ca
  policies: https://chezlepro.ca/policies
  privacy_policy: https://chezlepro.ca/policies/privacy
  security_policy: https://chezlepro.ca/policies/security
  sustainability: https://chezlepro.ca/sustainability
  federation_metadata: https://id.chezlepro.ca/.well-known/openid-configuration

# ═══════════════════════════════════════════════════════
# VALEURS & ENGAGEMENTS
# ═══════════════════════════════════════════════════════

values:
  open_source: true
  local_hosting: true
  privacy_first: true
  sustainability: true
  libre_software: true
  
  software_stack:
    os: "Debian 12"
    virtualization: "Proxmox VE 8"
    storage: "Ceph Quincy"
    orchestration: "Ansible"
    monitoring: "Prometheus + Grafana"
    dns: "PowerDNS"
    identity: "Keycloak"

# ═══════════════════════════════════════════════════════
# CONTRIBUTIONS À L'ALLIANCE
# ═══════════════════════════════════════════════════════

contributions:
  timebank_balance: 42  # Crédits banque de temps
  
  audits_performed:
    - member_id: nul-002
      date: 2025-09-15
      level: silver
    - member_id: tli-003
      date: 2025-08-20
      level: bronze
  
  tools_contributed:
    - name: ansible-role-powerdns
      repo: https://forge.alliance-boreale.ca/tools/ansible-powerdns
      license: MIT
    - name: monitoring-dashboard-boreal
      repo: https://forge.alliance-boreale.ca/tools/grafana-boreal
      license: AGPL-3.0
  
  documentation:
    - title: "Guide DNS Fédéré"
      url: https://docs.alliance-boreale.ca/dns-federe
    - title: "Template Proxmox SDN"
      url: https://docs.alliance-boreale.ca/proxmox-sdn

# ═══════════════════════════════════════════════════════
# MÉTADONNÉES
# ═══════════════════════════════════════════════════════

metadata:
  created: 2025-01-15T10:00:00Z
  updated: 2025-10-12T14:30:00Z
  schema_version: "1.0"
  
  signatures:
    - signer: "Daniel Laroche (Chezlepro)"
      pgp: "0xABCD1234"
      date: 2025-10-12
      signature: "-----BEGIN PGP SIGNATURE-----..."

4. Schéma : Allocations Réseau

4.1 Fichier global (network/allocations.yml)

# network/allocations.yml

# ═══════════════════════════════════════════════════════
# ALLOCATIONS IPv4 (/16 par membre)
# ═══════════════════════════════════════════════════════

allocations:
  - member_id: czp-001
    block: 10.0.0.0/16
    assigned: 2025-01-15
    status: active
    notes: "Membre fondateur - Chezlepro inc."
  
  - member_id: nul-002
    block: 10.1.0.0/16
    assigned: 2025-02-20
    status: active
    notes: "Nuage Libre - Québec"
  
  - member_id: tli-003
    block: 10.2.0.0/16
    assigned: 2025-03-10
    status: active
    notes: "TechnoLibre - Saguenay"

# Blocs réservés pour croissance
reserved:
  - block: 10.3.0.0/16
    reserved_for: future_member
  - block: 10.4.0.0/16
    reserved_for: future_member
  - block: 10.255.0.0/16
    reserved_for: infrastructure_shared

# ═══════════════════════════════════════════════════════
# RÈGLES D'ALLOCATION
# ═══════════════════════════════════════════════════════

allocation_policy:
  block_size: /16
  range_start: 10.0.0.0/16
  range_end: 10.254.0.0/16
  sequential: true
  
  segments_standard:
    management: /24
    platform: /24
    public_dns: /24
    tenant_infra: /23
    reserved: /22
    expansion: /17

5. Schéma : Labels et Conformité

5.1 Labels trimestriels (labels/2025-Q4.yml)

# labels/2025-Q4.yml

# ═══════════════════════════════════════════════════════
# LABELS ATTRIBUÉS - Q4 2025
# ═══════════════════════════════════════════════════════

quarter: 2025-Q4
issued_date: 2025-10-01
expires_date: 2026-10-01

labels:
  - member_id: czp-001
    member_name: "Chezlepro inc."
    level: gold
    score: 88
    issued: 2025-10-12
    valid_until: 2026-10-12
    auditor: nul-002
    
    scores:
      governance: 5
      security: 5
      privacy: 4
      interoperability: 5
      operations: 5
      sustainability: 4
    
    notes: "Excellent. Recommandation pour Platine en 2026."
  
  - member_id: nul-002
    member_name: "Nuage Libre"
    level: silver
    score: 72
    issued: 2025-09-15
    valid_until: 2026-09-15
    auditor: czp-001
    
    scores:
      governance: 4
      security: 4
      privacy: 5
      interoperability: 4
      operations: 3
      sustainability: 4
    
    notes: "Solide. Plan d'amélioration pour Or en cours."
  
  - member_id: tli-003
    member_name: "TechnoLibre"
    level: bronze
    score: 63
    issued: 2025-08-20
    valid_until: 2026-08-20
    auditor: czp-001
    
    scores:
      governance: 3
      security: 3
      privacy: 4
      interoperability: 4
      operations: 3
      sustainability: 3
    
    notes: "Conforme. Progression vers Argent planifiée."

# ═══════════════════════════════════════════════════════
# STATISTIQUES
# ═══════════════════════════════════════════════════════

statistics:
  total_members: 3
  platinum: 0
  gold: 1
  silver: 1
  bronze: 1
  average_score: 74.3

5.2 Historique individuel (labels/history/czp-001-label-history.yml)

# labels/history/czp-001-label-history.yml

member_id: czp-001
member_name: "Chezlepro inc."

history:
  - quarter: 2025-Q4
    level: gold
    score: 88
    issued: 2025-10-12
    auditor: nul-002
    progression: +3  # Progression depuis dernier audit
  
  - quarter: 2025-Q2
    level: gold
    score: 85
    issued: 2025-04-15
    auditor: external
    progression: "initial"

trends:
  governance: stable
  security: stable
  privacy: improving
  interoperability: stable
  operations: stable
  sustainability: improving

6. Schéma : Gouvernance

6.1 Composition des cercles (governance/circles.yml)

# governance/circles.yml

# ═══════════════════════════════════════════════════════
# CERCLES SOCIOCRATIQUES
# ═══════════════════════════════════════════════════════

version: "1.0"
updated: 2025-10-12

cercle_strategique:
  mandate: "Vision, orientation, admission nouveaux membres"
  term_months: 12
  decision_mode: consentement
  
  members:
    - member_id: czp-001
      role: "Président & Fondateur"
      joined: 2025-01-15
      term_end: 2026-01-15
    
    - member_id: nul-002
      role: "Membre permanent"
      joined: 2025-02-20
      term_end: 2026-02-20
    
    - member_id: tli-003
      role: "Membre permanent"
      joined: 2025-03-10
      term_end: 2026-03-10
  
  next_meeting: 2025-11-15T14:00:00Z
  meeting_frequency: quarterly

cercle_operationnel:
  mandate: "Coordination technique, infrastructure, outils communs"
  term_months: 6
  decision_mode: consentement_avec_vote_majoritaire
  
  members:
    - member_id: czp-001
      role: "Coordinateur technique"
      term_end: 2026-04-15
    
    - member_id: nul-002
      role: "Responsable DNS"
      term_end: 2026-04-15
    
    - member_id: tli-003
      role: "Responsable VPN/Réseau"
      term_end: 2026-04-15
  
  next_meeting: 2025-11-01T10:00:00Z
  meeting_frequency: monthly

cercle_ethique_conformite:
  mandate: "Label, audits, arbitrages, communication publique"
  term_months: 24
  decision_mode: consentement_renforce
  
  members:
    - member_id: czp-001
      role: "Président comité éthique"
      term_end: 2027-01-15
    
    - member_id: nul-002
      role: "Auditeur principal"
      term_end: 2027-02-20
  
  next_meeting: 2025-11-08T13:00:00Z
  meeting_frequency: biweekly

6.2 Décisions (governance/decisions/2025-001-admission-nuagelibre.yml)

# governance/decisions/2025-001-admission-nuagelibre.yml

decision_id: 2025-001
type: admission
title: "Admission de Nuage Libre comme membre"

proposed_by:
  member_id: czp-001
  date: 2025-02-10

proposal:
  subject: "Admission de Nuage Libre (Québec)"
  justification: |
    Nuage Libre remplit tous les critères:
    - Hébergeur local québécois
    - 100% logiciels libres
    - Valeurs alignées
    - Infrastructure compatible    
  
  requested_block: 10.1.0.0/16
  probation_period: 90_days

discussion_period:
  start: 2025-02-10
  end: 2025-02-24
  comments: 3

vote:
  method: consentement
  date: 2025-02-20
  result: adopted
  
  votes:
    - member_id: czp-001
      vote: consent
      comment: "Excellent partenaire"
    
    - member_id: tli-003
      vote: consent
      comment: "Infrastructure solide"

decision:
  status: adopted
  implemented: 2025-02-20
  notes: "Allocation 10.1.0.0/16 effectuée. Probation jusqu'au 2025-05-20."

signatures:
  - member_id: czp-001
    role: "Président Cercle Stratégique"
    date: 2025-02-20
    pgp_signature: "-----BEGIN PGP SIGNATURE-----..."

7. Schéma : Topologie VPN

7.1 Tunnels déclarés (network/topology.yml)

# network/topology.yml

# ═══════════════════════════════════════════════════════
# TOPOLOGIE VPN PEER-TO-PEER
# ═══════════════════════════════════════════════════════

version: "1.0"
updated: 2025-10-12

tunnels:
  - tunnel_id: t001
    peers:
      - member_id: czp-001
        endpoint: vpn.chezlepro.ca:51820
        public_key: "AbCdEf1234567890+GhIjKlMnOpQrStUvWxYz="
      - member_id: nul-002
        endpoint: vpn.nuagelibre.ca:51820
        public_key: "ZyXwVuTsRqPoNmLkJiHgFeDcBa0987654321+="
    
    subnet: 10.200.0.0/30
    czp_ip: 10.200.0.1
    nul_ip: 10.200.0.2
    
    status: active
    established: 2025-02-20
    last_seen: 2025-10-12T14:25:00Z
    
    metrics:
      latency_ms: 12
      packet_loss: 0.01
      bandwidth_mbps: 1000

  - tunnel_id: t002
    peers:
      - member_id: czp-001
        endpoint: vpn.chezlepro.ca:51820
        public_key: "AbCdEf1234567890+GhIjKlMnOpQrStUvWxYz="
      - member_id: tli-003
        endpoint: vpn.technolibre.org:51820
        public_key: "1234567890AbCdEfGhIjKlMnOpQrStUvWxYz+="
    
    subnet: 10.200.0.4/30
    czp_ip: 10.200.0.5
    tli_ip: 10.200.0.6
    
    status: active
    established: 2025-03-10
    last_seen: 2025-10-12T14:26:00Z
    
    metrics:
      latency_ms: 25
      packet_loss: 0.02
      bandwidth_mbps: 500

  - tunnel_id: t003
    peers:
      - member_id: nul-002
        endpoint: vpn.nuagelibre.ca:51821
        public_key: "ZyXwVuTsRqPoNmLkJiHgFeDcBa0987654321+="
      - member_id: tli-003
        endpoint: vpn.technolibre.org:51821
        public_key: "1234567890AbCdEfGhIjKlMnOpQrStUvWxYz+="
    
    subnet: 10.200.0.8/30
    nul_ip: 10.200.0.9
    tli_ip: 10.200.0.10
    
    status: active
    established: 2025-04-05
    last_seen: 2025-10-12T14:27:00Z
    
    metrics:
      latency_ms: 18
      packet_loss: 0.00
      bandwidth_mbps: 750

# ═══════════════════════════════════════════════════════
# STATISTIQUES RÉSEAU
# ═══════════════════════════════════════════════════════

statistics:
  total_tunnels: 3
  active_tunnels: 3
  total_members: 3
  full_mesh: true
  average_latency_ms: 18.3
  average_packet_loss: 0.01

8. Processus de Mise à Jour

8.1 Workflow Git

# Modification d'une fiche membre
cd registry.alliance-boreale.ca
git checkout -b update-czp-001-label

# Éditer la fiche
vim members/czp-001-chezlepro.yml

# Valider avec schema
yamllint members/czp-001-chezlepro.yml
jsonschema -i members/czp-001-chezlepro.yml schemas/member-schema.json

# Commit signé PGP
git add members/czp-001-chezlepro.yml
git commit -S -m "Update: Chezlepro label Gold → Platinum

- Score: 88 → 92
- Sustainability: 4 → 5
- Valid until: 2026-10-12

Audited by: nul-002
Signed-off-by: Daniel Laroche <daniel@chezlepro.ca>"

# Push et merge request
git push origin update-czp-001-label

8.2 Validation automatique

# .gitlab-ci.yml

stages:
  - validate
  - publish

validate_yaml:
  stage: validate
  script:
    - yamllint members/*.yml
    - yamllint network/*.yml
    - yamllint labels/*.yml
    - python3 validate-schemas.py
  
  only:
    - merge_requests

validate_signatures:
  stage: validate
  script:
    - ./scripts/verify-pgp-signatures.sh
  
  only:
    - merge_requests

publish_registry:
  stage: publish
  script:
    - rsync -av . registry.alliance-boreale.ca:/var/www/registry/
    - ./scripts/generate-static-site.sh
  
  only:
    - main

9. Validation et Intégrité

9.1 JSONSchema pour validation

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Alliance Boréale Member Schema",
  "type": "object",
  "required": ["id", "status", "legal", "contacts", "network"],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-z]{3}-[0-9]{3}$"
    },
    "status": {
      "type": "string",
      "enum": ["active", "probation", "suspended", "exited"]
    },
    "legal": {
      "type": "object",
      "required": ["name", "type", "jurisdiction"],
      "properties": {
        "name": {"type": "string"},
        "type": {
          "type": "string",
          "enum": ["corporation", "cooperative", "npo", "sole_proprietorship"]
        }
      }
    },
    "network": {
      "type": "object",
      "required": ["ipv4_block"],
      "properties": {
        "ipv4_block": {
          "type": "string",
          "pattern": "^10\\.[0-9]{1,3}\\.0\\.0/16$"
        }
      }
    }
  }
}

9.2 Signatures PGP

Chaque modification critique doit être signée :

# Signer un commit
git commit -S -m "Critical: Update member czp-001"

# Vérifier les signatures
git log --show-signature

# Vérifier l'intégrité du registre
./scripts/verify-registry-integrity.sh

10. Exemples Complets

10.1 Scénario : Nouveau membre

# members/abc-004-nouveau.yml

id: abc-004
status: probation
shortname: nouveau

legal:
  name: "Nouveau Hébergeur Coop"
  type: cooperative
  jurisdiction: QC
  registration_number: "9876543210 QC"
  founded: 2023-06-01

contacts:
  legal:
    email: legal@nouveau.coop
  security:
    email: security@nouveau.coop
  noc:
    email: noc@nouveau.coop

membership:
  joined: 2025-10-20
  probation_end: 2026-01-20
  sponsor: czp-001

label:
  level: null  # Pas encore évalué
  score: null

network:
  ipv4_block: 10.3.0.0/16
  gateway: 10.3.0.1
  dns:
    primary: 10.3.2.10
    secondary: 10.3.2.11

vpn:
  topology: selective
  wireguard:
    public_key: "NewPublicKey123456789+="
    endpoint: vpn.nouveau.coop:51820
  tunnels: []  # Aucun tunnel établi encore

services:
  dns:
    enabled: false  # En configuration
  email:
    enabled: true
  identity:
    enabled: false  # Planifié

public_urls:
  website: https://nouveau.coop
  status: https://status.nouveau.coop

values:
  open_source: true
  local_hosting: true
  privacy_first: true
  sustainability: true

contributions:
  timebank_balance: 0
  audits_performed: []
  tools_contributed: []

metadata:
  created: 2025-10-20T09:00:00Z
  updated: 2025-10-20T09:00:00Z
  schema_version: "1.0"

10.2 Commande d'allocation réseau

#!/bin/bash
# scripts/allocate-network.sh

MEMBER_ID="abc-004"
MEMBER_NAME="Nouveau Hébergeur Coop"

# Trouver le prochain /16 disponible
NEXT_BLOCK=$(python3 scripts/find-next-block.py)
echo "Allocating: $NEXT_BLOCK to $MEMBER_ID"

# Créer l'entrée dans allocations.yml
cat >> network/allocations.yml <<EOF
  - member_id: $MEMBER_ID
    block: $NEXT_BLOCK
    assigned: $(date -I)
    status: active
    notes: "$MEMBER_NAME"
EOF

# Commit
git add network/allocations.yml
git commit -S -m "Allocate $NEXT_BLOCK to $MEMBER_ID"

echo "✅ Network allocated: $NEXT_BLOCK"

📝 Notes Importantes

Sécurité

  • ⚠️ Jamais de clés privées dans le registre
  • ⚠️ Jamais de mots de passe ou secrets
  • Seulement clés publiques (WireGuard, PGP)
  • Signatures PGP pour traçabilité

Miroirs

  • Chaque membre maintient une copie locale
  • Synchronisation horaire via git pull
  • Fallback si registraire principal inaccessible

Évolution

  • Schema versioning (schema_version: "1.0")
  • Migration scripts pour changements majeurs
  • Rétrocompatibilité garantie 12 mois

🎯 Checklist d'Intégration

Pour un nouveau membre :

  • Créer fiche members/xxx-###-nom.yml
  • Allouer bloc /16 dans network/allocations.yml
  • Générer clés WireGuard publiques
  • Configurer DNS primaire/secondaire
  • Établir tunnels VPN avec pairs
  • Publier métadonnées de fédération
  • Audit initial (probation)
  • Attribution label Bronze minimum
  • Validation par Cercle Stratégique
  • Commit signé + merge

Version : 1.0
Maintenu par : L'Alliance Boréale - Cercle Opérationnel
Licence : CC-BY-SA 4.0
Contact : registry@alliance-boreale.ca


« Le Registraire est notre mémoire collective. »
— L'Alliance Boréale