{
  "auditVersion": 2,
  "auditedAt": "2026-07-28",
  "sources": [
    {
      "path": "D:\\Codex\\2026-06-25\\si-on-travaille-ensemble-tu-sais\\outputs\\Hom3r",
      "fileCount": 137,
      "modified": false
    },
    {
      "path": "D:\\Codex\\3D\\creality-k1c-overlay",
      "fileCount": 110,
      "modified": false
    }
  ],
  "modules": [
    {
      "id": "sport-overlay",
      "name": "Overlay Sport",
      "sourcePath": "D:\\Codex\\2026-06-25\\si-on-travaille-ensemble-tu-sais\\outputs\\Hom3r",
      "languages": ["PHP", "HTML", "CSS", "JavaScript"],
      "framework": null,
      "entrypoints": [
        "fb-widget-public.php",
        "hb-widget-public.php",
        "bb-widget-public.php",
        "tennis-widget-public.php",
        "mma-widget-public.php",
        "f1-widget-public.php"
      ],
      "dependencies": ["ESPN APIs", "SofaScore", "OpenF1", "PHP cURL"],
      "storage": ["data/*.json", "query parameters"],
      "receives": ["scoreboards", "summaries", "lineups", "timers", "race-control"],
      "emits": ["overlay DOM", "visual animations"],
      "overlayUrls": [
        "/fb-widget-public.php",
        "/hb-widget-public.php",
        "/bb-widget-public.php",
        "/tennis-widget-public.php",
        "/mma-widget-public.php",
        "/f1-widget-public.php"
      ],
      "migrationState": "integrated-filyx-adapter",
      "reusable": ["API normalizers", "sport renderers", "assets", "translations"],
      "adapt": ["multi-tenant settings", "OBS tokens", "versioned contracts"],
      "obsolete": ["unsigned shared query settings"]
    },
    {
      "id": "streambot",
      "name": "StreamBot",
      "sourcePath": "D:\\Codex\\2026-06-25\\si-on-travaille-ensemble-tu-sais\\outputs\\Hom3r\\Widgets\\streambot",
      "languages": ["PHP", "HTML", "CSS", "JavaScript"],
      "framework": null,
      "entrypoints": ["configurer.php", "api.php", "chat-daemon.php", "chat-cron.php"],
      "dependencies": ["PDO optional", "Kick APIs", "Pusher WebSocket", "YouTube"],
      "storage": [
        "streamers.json",
        "settings.json",
        "commands.json",
        "timers.json",
        "queue.json",
        "alert_configs.json",
        "alert_events.json"
      ],
      "receives": ["chat messages", "commands", "timers", "Kick events", "panel actions"],
      "emits": ["chat replies", "alerts", "queue updates", "logs"],
      "overlayUrls": [
        "/Widgets/streambot/overlay/alerts.php",
        "/Widgets/streambot/overlay/soundrequest.php"
      ],
      "migrationState": "integrated-mysql-multichannel",
      "reusable": ["command model", "timer model", "alerts", "sound requests", "panel concepts"],
      "adapt": ["MySQL", "RBAC", "message queue", "HMAC", "tenant isolation"],
      "obsolete": ["streamer Kick OAuth", "personal Kick tokens", "open CORS"]
    },
    {
      "id": "creality-host",
      "name": "Creality overlay host",
      "sourcePath": "D:\\Codex\\3D\\creality-k1c-overlay",
      "languages": ["JavaScript", "HTML", "CSS"],
      "framework": "Express 5 + ws",
      "entrypoints": ["src/server-all.js"],
      "dependencies": ["express@5.1", "ws@8.18"],
      "storage": ["config*.json", "data/game-history.json"],
      "receives": ["HTTP", "WebSocket", "Kick webhooks"],
      "emits": ["WebSocket /live", "overlay alerts", "game events"],
      "overlayUrls": ["/overlay", "/stream-start", "/stream-end"],
      "migrationState": "reference-only",
      "reusable": ["broadcast pattern", "media validation", "reconnect logic"],
      "adapt": ["authentication", "tenant isolation", "contracts"],
      "obsolete": ["Creality-specific product features", "HR3D branding", "Kick OAuth"]
    },
    {
      "id": "quiz",
      "name": "Quiz",
      "sourcePath": "D:\\Codex\\3D\\creality-k1c-overlay",
      "command": "!quiz",
      "entrypoints": ["src/quiz-engine.js", "/api/quiz/*", "/quiz"],
      "content": {"questions": 10000},
      "events": ["quiz-start", "quiz-countdown", "quiz-question", "quiz-correct", "quiz-provisional", "quiz-answer", "quiz-podium", "quiz-idle", "quiz-stopped"],
      "antiRepetition": "per streamer question keys and previous game",
      "migrationState": "integrated-engine-and-original-overlay"
    },
    {
      "id": "motus",
      "name": "Motus",
      "sourcePath": "D:\\Codex\\3D\\creality-k1c-overlay",
      "command": "!motus",
      "entrypoints": ["src/motus-engine.js", "/api/motus/*", "/motus"],
      "content": {"solutions": 275, "acceptedWords": 180370},
      "events": ["motus-state", "motus-round-start", "motus-guess-result", "motus-score-update", "motus-word-reveal", "motus-end"],
      "antiRepetition": "per streamer word keys and previous game",
      "migrationState": "integrated-engine-and-original-overlay"
    },
    {
      "id": "whoami",
      "name": "Qui suis-je",
      "sourcePath": "D:\\Codex\\3D\\creality-k1c-overlay",
      "command": "!quisuisje",
      "entrypoints": ["src/whoami-engine.js", "/api/whoami/*", "/whoami"],
      "content": {"entries": 987},
      "events": ["whoami-round-start", "whoami-guess", "whoami-round-end", "whoami-provisional", "whoami-podium", "whoami-idle"],
      "antiRepetition": "per streamer entry keys and previous game",
      "migrationState": "integrated-engine-and-original-overlay"
    },
    {
      "id": "petitbac",
      "name": "Petit Bac",
      "sourcePath": "D:\\Codex\\3D\\creality-k1c-overlay",
      "command": "!petitbac",
      "entrypoints": ["src/petitbac-engine.js", "/api/petitbac/*", "/petitbac"],
      "content": {"categories": 15},
      "events": ["petitbac-start", "petitbac-letter-draw", "petitbac-category-start", "petitbac-answer", "petitbac-category-stop", "petitbac-provisional", "petitbac-podium", "petitbac-idle"],
      "antiRepetition": "per streamer letters, previous letters and recent categories",
      "migrationState": "integrated-engine-and-original-overlay"
    }
  ],
  "absentGames": ["trouve-intrus", "juste-prix", "blind-test"],
  "globalRisks": [
    "external Kick and sports API availability",
    "local JSON persistence is not transactional",
    "single-channel assumptions",
    "unversioned event contracts",
    "no central outbound queue",
    "potential secrets in local runtime configuration"
  ]
}
