{
  "schemaVersion": "1.0.0",
  "publishedAt": "2026-08-31",
  "scope": "Variables analytiques et catégories de conservation du laboratoire public. Les secrets, jetons bruts, coordonnées et textes privés sont exclus des sorties publiques.",
  "tables": [
    {
      "name": "responses",
      "purpose": "Expérience émotionnelle versionnée.",
      "retentionDays": 365,
      "publicOutput": "agrégats uniquement au-dessus du seuil public",
      "fields": [
        "experiment_id",
        "protocol_version",
        "stimulus_version",
        "emotion",
        "ai_awareness",
        "intensity_before",
        "intensity_after",
        "emotion_shift",
        "permission",
        "source_channel",
        "campaign_id",
        "landing_variant",
        "consent_version",
        "created_at"
      ],
      "privateFields": [
        "id",
        "reflection",
        "quote_consent",
        "tiktok_handle",
        "contact_consent",
        "referral_id",
        "status"
      ]
    },
    {
      "name": "autonomy_responses",
      "purpose": "Évaluation des cinq pouvoirs de reprise dans un scénario versionné.",
      "retentionDays": 365,
      "publicOutput": "agrégats uniquement au-dessus du seuil public",
      "fields": [
        "experiment_id",
        "protocol_version",
        "stimulus_version",
        "choose_control",
        "verify_control",
        "stop_control",
        "correct_control",
        "rule_control",
        "delegation_choice",
        "autonomy_score",
        "source_channel",
        "campaign_id",
        "consent_version",
        "created_at"
      ],
      "privateFields": ["id"]
    },
    {
      "name": "debate_statements",
      "purpose": "Affirmations proposées et modérées.",
      "retentionDays": 365,
      "publicOutput": "texte, thème et version après publication",
      "fields": [
        "id",
        "statement",
        "theme",
        "protocol_version",
        "source",
        "moderation_status",
        "created_at",
        "updated_at"
      ],
      "privateFields": ["normalized_hash", "moderation_reason"]
    },
    {
      "name": "debate_votes",
      "purpose": "Position actuelle pseudonyme sur une affirmation.",
      "retentionDays": 365,
      "publicOutput": "répartition au-dessus de cinq votes",
      "fields": [
        "statement_id",
        "vote",
        "protocol_version",
        "source_channel",
        "campaign_id",
        "created_at",
        "updated_at"
      ],
      "privateFields": ["id", "voter_hash"]
    },
    {
      "name": "project_contributions",
      "purpose": "Débat éditorial et récits vécus, privés par défaut.",
      "retentionDays": 365,
      "publicOutput": "résumé anonymisé après accord et modération",
      "fields": [
        "contribution_type",
        "question_id",
        "position",
        "factual_status",
        "created_at"
      ],
      "privateFields": [
        "id",
        "comment",
        "ai_role",
        "human_control",
        "consequence",
        "tiktok_handle",
        "display_alias",
        "status"
      ]
    },
    {
      "name": "book_design_votes",
      "purpose": "Préférences argumentées de titre et de couverture.",
      "retentionDays": 365,
      "publicOutput": "classements descriptifs au-dessus du seuil public",
      "fields": ["title_id", "cover_id", "created_at"],
      "privateFields": [
        "id",
        "custom_title",
        "expectation",
        "reason",
        "quote_consent",
        "status"
      ]
    },
    {
      "name": "interaction_events",
      "purpose": "Mesure minimale du parcours sans identifiant de session.",
      "retentionDays": 90,
      "publicOutput": "aucune ligne brute",
      "fields": ["event_name", "source", "created_at"],
      "privateFields": ["id"]
    },
    {
      "name": "community_interests",
      "purpose": "Préférences e-mail confirmées séparément.",
      "retentionDays": "jusqu’au retrait ; demandes non confirmées supprimées après 90 jours",
      "publicOutput": "aucun",
      "fields": [
        "wants_fragments",
        "wants_early_access",
        "wants_debates",
        "consent_version",
        "status",
        "source",
        "created_at",
        "updated_at"
      ],
      "privateFields": [
        "id",
        "email",
        "confirmation_token_hash",
        "unsubscribe_token_hash"
      ]
    }
  ],
  "publicAggregateThreshold": 5,
  "interpretationThreshold": 30,
  "liveReport": "/api/public-report"
}
