{
  "schemaVersion": 1,
  "updatedAt": "2026-10-28",
  "analysis": {
    "tool": "Graphify",
    "status": "run",
    "revision": "288c50ffe4f8928a1b7f8ef7ec1f4536a8af4eec",
    "scope": "docs/wiki Markdown 34개를 입력으로 추출. 노드 264, 관계 491, 주제 11. 코드 노드는 문서로 접었고 개념·설계 노드만 항목으로 실었다."
  },
  "sources": [
    {
      "id": "notebuddy-readme",
      "title": "Notebook Pets README",
      "kind": "readme",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "README.md",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/README.md",
      "visibility": "public"
    },
    {
      "id": "notebuddy-api",
      "title": "Notebook Pets game API",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "engine/game_api.py",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/engine/game_api.py",
      "visibility": "public"
    },
    {
      "id": "notebuddy-web",
      "title": "Notebook Pets web Worker",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "web/worker.js",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/web/worker.js",
      "visibility": "public"
    },
    {
      "id": "notebuddy-anna",
      "title": "Notebook Pets Anna Worker",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "anna/executas/notebuddy/game_worker.py",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/anna/executas/notebuddy/game_worker.py",
      "visibility": "public"
    },
    {
      "id": "notebuddy-anna-plugin",
      "title": "Notebook Pets Anna Executa bridge",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "anna/executas/notebuddy/notebuddy_plugin.py",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/anna/executas/notebuddy/notebuddy_plugin.py",
      "visibility": "public"
    },
    {
      "id": "auction-readme",
      "title": "Auction Spot API README",
      "kind": "readme",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "README.md",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/README.md",
      "visibility": "public"
    },
    {
      "id": "auction-upload",
      "title": "Auction Spot upload controller",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/infra/storage/LocalUploadController.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/infra/storage/LocalUploadController.java",
      "visibility": "public"
    },
    {
      "id": "auction-storage",
      "title": "Auction Spot local image storage",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/infra/storage/LocalImageStorageService.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/infra/storage/LocalImageStorageService.java",
      "visibility": "public"
    },
    {
      "id": "auction-files",
      "title": "Auction Spot file serving config",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/infra/storage/LocalFileWebConfig.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/infra/storage/LocalFileWebConfig.java",
      "visibility": "public"
    },
    {
      "id": "auction-bid",
      "title": "Bid command",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/domain/auction/service/BidCommandService.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/domain/auction/service/BidCommandService.java",
      "visibility": "public"
    },
    {
      "id": "auction-lifecycle",
      "title": "Auction lifecycle",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/domain/auction/service/AuctionLifecycleService.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/domain/auction/service/AuctionLifecycleService.java",
      "visibility": "public"
    },
    {
      "id": "auction-cache",
      "title": "Redis auction value cache",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/domain/auction/service/RedisAuctionCache.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/domain/auction/service/RedisAuctionCache.java",
      "visibility": "public"
    },
    {
      "id": "auction-geo",
      "title": "Geolocation resolver",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/domain/common/service/GeoLocationService.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/domain/common/service/GeoLocationService.java",
      "visibility": "public"
    },
    {
      "id": "auction-fcm",
      "title": "FCM notification placeholder",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-api",
      "path": "src/main/java/com/auctionspot/infra/fcm/FcmNotificationService.java",
      "revision": "7c2d9496a5ae0f1dcd0345196483c2674ecff140",
      "url": "https://github.com/kdkrkwhr/auction-spot-api/blob/7c2d9496a5ae0f1dcd0345196483c2674ecff140/src/main/java/com/auctionspot/infra/fcm/FcmNotificationService.java",
      "visibility": "public"
    },
    {
      "id": "notebuddy-ports",
      "title": "Notebook Pets execution ports",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "engine/ports.py",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/engine/ports.py",
      "visibility": "public"
    },
    {
      "id": "notebuddy-store",
      "title": "Notebook Pets browser store",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "web/store.js",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/web/store.js",
      "visibility": "public"
    },
    {
      "id": "notebuddy-evolution",
      "title": "Notebook Pets evolution rules",
      "kind": "code",
      "repository": "kdkrkwhr/notebook-pets",
      "path": "engine/evolution.py",
      "revision": "ca5648b49e6d0a67526856a930090173d0454389",
      "url": "https://github.com/kdkrkwhr/notebook-pets/blob/ca5648b49e6d0a67526856a930090173d0454389/engine/evolution.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-readme",
      "title": "AGENT HUB README",
      "kind": "readme",
      "repository": "kdkrkwhr/agent-hub",
      "path": "README.md",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/README.md",
      "visibility": "public"
    },
    {
      "id": "agent-hub-entry",
      "title": "AGENT HUB entry point",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/__main__.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/__main__.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-server",
      "title": "AGENT HUB HTTP server",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/server.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/server.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-engine",
      "title": "AGENT HUB job engine",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/engine.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/engine.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-adapters",
      "title": "AGENT HUB CLI adapters",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/adapters.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/adapters.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-discussion",
      "title": "AGENT HUB manual discussion",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/manual_discussion.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/manual_discussion.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-workspace",
      "title": "AGENT HUB manual workspace",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/manual_workspace.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/manual_workspace.py",
      "visibility": "public"
    },
    {
      "id": "hub-publication",
      "title": "AGENT HUB explicit publication",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/publication.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/publication.py",
      "visibility": "public"
    },
    {
      "id": "hub-web-app",
      "title": "AGENT HUB web UI",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/static/app.js",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/static/app.js",
      "visibility": "public"
    },
    {
      "id": "agent-hub-pipeline",
      "title": "AGENT HUB pipeline",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/pipeline.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/pipeline.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-voting",
      "title": "AGENT HUB voting",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/voting.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/voting.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-storage",
      "title": "AGENT HUB storage",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "src/agent_hub/storage.py",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/src/agent_hub/storage.py",
      "visibility": "public"
    },
    {
      "id": "agent-hub-security",
      "title": "AGENT HUB security notes",
      "kind": "readme",
      "repository": "kdkrkwhr/agent-hub",
      "path": "SECURITY.md",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/SECURITY.md",
      "visibility": "public"
    },
    {
      "id": "agent-hub-project",
      "title": "AGENT HUB package metadata",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": "pyproject.toml",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/pyproject.toml",
      "visibility": "public"
    },
    {
      "id": "agent-hub-ci",
      "title": "AGENT HUB test workflow",
      "kind": "code",
      "repository": "kdkrkwhr/agent-hub",
      "path": ".github/workflows/tests.yml",
      "revision": "cfe0ac6b341f6edebbf25655fc2e7867492740bd",
      "url": "https://github.com/kdkrkwhr/agent-hub/blob/cfe0ac6b341f6edebbf25655fc2e7867492740bd/.github/workflows/tests.yml",
      "visibility": "public"
    },
    {
      "id": "front-readme",
      "title": "auction-spot-front · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "README.md",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/README.md",
      "visibility": "public"
    },
    {
      "id": "front-main",
      "title": "auction-spot-front · lib/main.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/main.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/main.dart",
      "visibility": "public"
    },
    {
      "id": "front-router",
      "title": "auction-spot-front · lib/core/router/app_router.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/core/router/app_router.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/core/router/app_router.dart",
      "visibility": "public"
    },
    {
      "id": "front-dio",
      "title": "auction-spot-front · lib/core/network/dio_client.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/core/network/dio_client.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/core/network/dio_client.dart",
      "visibility": "public"
    },
    {
      "id": "front-auction",
      "title": "auction-spot-front · lib/features/auction/data/auction_repository.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/features/auction/data/auction_repository.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/features/auction/data/auction_repository.dart",
      "visibility": "public"
    },
    {
      "id": "front-ws",
      "title": "auction-spot-front · lib/features/auction/data/auction_ws_client.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/features/auction/data/auction_ws_client.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/features/auction/data/auction_ws_client.dart",
      "visibility": "public"
    },
    {
      "id": "front-upload",
      "title": "auction-spot-front · lib/features/storage/data/storage_repository.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/features/storage/data/storage_repository.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/features/storage/data/storage_repository.dart",
      "visibility": "public"
    },
    {
      "id": "front-pubspec",
      "title": "auction-spot-front · pubspec.yaml",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "pubspec.yaml",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/pubspec.yaml",
      "visibility": "public"
    },
    {
      "id": "front-starter",
      "title": "auction-spot-front · auction_spot/lib/main.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "auction_spot/lib/main.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/auction_spot/lib/main.dart",
      "visibility": "public"
    },
    {
      "id": "front-constants",
      "title": "auction-spot-front · lib/core/constants/app_constants.dart",
      "kind": "code",
      "repository": "kdkrkwhr/auction-spot-front",
      "path": "lib/core/constants/app_constants.dart",
      "revision": "abb91bc2abe406e821c55f362e9f209ea61c2db9",
      "url": "https://github.com/kdkrkwhr/auction-spot-front/blob/abb91bc2abe406e821c55f362e9f209ea61c2db9/lib/core/constants/app_constants.dart",
      "visibility": "public"
    },
    {
      "id": "env-readme",
      "title": "hermes-env · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-env",
      "path": "README.md",
      "revision": "ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39",
      "url": "https://github.com/kdkrkwhr/hermes-env/blob/ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39/README.md",
      "visibility": "public"
    },
    {
      "id": "env-bootstrap",
      "title": "hermes-env · bootstrap.sh",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-env",
      "path": "bootstrap.sh",
      "revision": "ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39",
      "url": "https://github.com/kdkrkwhr/hermes-env/blob/ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39/bootstrap.sh",
      "visibility": "public"
    },
    {
      "id": "env-agent-guide",
      "title": "hermes-env · AGENT_BOOTSTRAP.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-env",
      "path": "AGENT_BOOTSTRAP.md",
      "revision": "ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39",
      "url": "https://github.com/kdkrkwhr/hermes-env/blob/ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39/AGENT_BOOTSTRAP.md",
      "visibility": "public"
    },
    {
      "id": "env-config",
      "title": "hermes-env · hermes/config.yaml.template",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-env",
      "path": "hermes/config.yaml.template",
      "revision": "ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39",
      "url": "https://github.com/kdkrkwhr/hermes-env/blob/ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39/hermes/config.yaml.template",
      "visibility": "public"
    },
    {
      "id": "env-conventions",
      "title": "hermes-env · docs/conventions.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-env",
      "path": "docs/conventions.md",
      "revision": "ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39",
      "url": "https://github.com/kdkrkwhr/hermes-env/blob/ecf8b93ec6e7003bfd640f67b3cb90e25ad61b39/docs/conventions.md",
      "visibility": "public"
    },
    {
      "id": "area-readme",
      "title": "hermes-agent-area · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "README.md",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/README.md",
      "visibility": "public"
    },
    {
      "id": "area-package",
      "title": "hermes-agent-area · package.json",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "package.json",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/package.json",
      "visibility": "public"
    },
    {
      "id": "area-front",
      "title": "hermes-agent-area · src/main.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "src/main.js",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/src/main.js",
      "visibility": "public"
    },
    {
      "id": "area-connect",
      "title": "hermes-agent-area · src/connectPanel.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "src/connectPanel.js",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/src/connectPanel.js",
      "visibility": "public"
    },
    {
      "id": "area-mock",
      "title": "hermes-agent-area · src/mock.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "src/mock.js",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/src/mock.js",
      "visibility": "public"
    },
    {
      "id": "area-scene",
      "title": "hermes-agent-area · src/scenes/OfficeScene.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "src/scenes/OfficeScene.js",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/src/scenes/OfficeScene.js",
      "visibility": "public"
    },
    {
      "id": "area-server",
      "title": "hermes-agent-area · server/main.py",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "server/main.py",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/server/main.py",
      "visibility": "public"
    },
    {
      "id": "area-test",
      "title": "hermes-agent-area · server/test_gateway_busy.py",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent-area",
      "path": "server/test_gateway_busy.py",
      "revision": "e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5",
      "url": "https://github.com/kdkrkwhr/hermes-agent-area/blob/e3e118fa7eb3fcfcd1fd8ca1d88d63763ddb67a5/server/test_gateway_busy.py",
      "visibility": "public"
    },
    {
      "id": "team-readme",
      "title": "hermes-team-hub · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "README.md",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/README.md",
      "visibility": "public"
    },
    {
      "id": "team-web",
      "title": "hermes-team-hub · js/app.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "js/app.js",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/js/app.js",
      "visibility": "public"
    },
    {
      "id": "team-store",
      "title": "hermes-team-hub · js/store.js",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "js/store.js",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/js/store.js",
      "visibility": "public"
    },
    {
      "id": "team-server",
      "title": "hermes-team-hub · local/app.py",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "local/app.py",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/local/app.py",
      "visibility": "public"
    },
    {
      "id": "team-cli",
      "title": "hermes-team-hub · local/team_hub.py",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "local/team_hub.py",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/local/team_hub.py",
      "visibility": "public"
    },
    {
      "id": "team-model",
      "title": "hermes-team-hub · local/team_hub/model.py",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-team-hub",
      "path": "local/team_hub/model.py",
      "revision": "1406ee05e3ea21a9e0c53aa0856879c976cd3ac5",
      "url": "https://github.com/kdkrkwhr/hermes-team-hub/blob/1406ee05e3ea21a9e0c53aa0856879c976cd3ac5/local/team_hub/model.py",
      "visibility": "public"
    },
    {
      "id": "drift-readme",
      "title": "agent-drift-guard · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "README.md",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/README.md",
      "visibility": "public"
    },
    {
      "id": "drift-buffer",
      "title": "agent-drift-guard · src/drift_guard/buffer.py",
      "kind": "code",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "src/drift_guard/buffer.py",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/src/drift_guard/buffer.py",
      "visibility": "public"
    },
    {
      "id": "drift-inject",
      "title": "agent-drift-guard · src/drift_guard/inject.py",
      "kind": "code",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "src/drift_guard/inject.py",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/src/drift_guard/inject.py",
      "visibility": "public"
    },
    {
      "id": "drift-test",
      "title": "agent-drift-guard · tests/test_buffer.py",
      "kind": "code",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "tests/test_buffer.py",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/tests/test_buffer.py",
      "visibility": "public"
    },
    {
      "id": "drift-hook",
      "title": "agent-drift-guard · hermes_plugin/agent-drift-guard/inject_hook.py",
      "kind": "code",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "hermes_plugin/agent-drift-guard/inject_hook.py",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/hermes_plugin/agent-drift-guard/inject_hook.py",
      "visibility": "public"
    },
    {
      "id": "drift-session",
      "title": "agent-drift-guard · hermes_plugin/agent-drift-guard/session_guards.py",
      "kind": "code",
      "repository": "kdkrkwhr/agent-drift-guard",
      "path": "hermes_plugin/agent-drift-guard/session_guards.py",
      "revision": "7b655505e4c893590b02f7f391e3bba7f73275be",
      "url": "https://github.com/kdkrkwhr/agent-drift-guard/blob/7b655505e4c893590b02f7f391e3bba7f73275be/hermes_plugin/agent-drift-guard/session_guards.py",
      "visibility": "public"
    },
    {
      "id": "standards-current",
      "title": "engineering-standards · README.md",
      "kind": "criteria",
      "repository": "kdkrkwhr/engineering-standards",
      "path": "README.md",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/README.md",
      "visibility": "public"
    },
    {
      "id": "standards-python",
      "title": "engineering-standards · profiles/languages/python.md",
      "kind": "criteria",
      "repository": "kdkrkwhr/engineering-standards",
      "path": "profiles/languages/python.md",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/profiles/languages/python.md",
      "visibility": "public"
    },
    {
      "id": "standards-spring",
      "title": "engineering-standards · profiles/frameworks/spring-boot.md",
      "kind": "criteria",
      "repository": "kdkrkwhr/engineering-standards",
      "path": "profiles/frameworks/spring-boot.md",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/profiles/frameworks/spring-boot.md",
      "visibility": "public"
    },
    {
      "id": "standards-build",
      "title": "engineering-standards · scripts/build_wiki.py",
      "kind": "code",
      "repository": "kdkrkwhr/engineering-standards",
      "path": "scripts/build_wiki.py",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/scripts/build_wiki.py",
      "visibility": "public"
    },
    {
      "id": "standards-check",
      "title": "engineering-standards · scripts/check_docs.py",
      "kind": "code",
      "repository": "kdkrkwhr/engineering-standards",
      "path": "scripts/check_docs.py",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/scripts/check_docs.py",
      "visibility": "public"
    },
    {
      "id": "standards-ci",
      "title": "engineering-standards · .github/workflows/docs.yml",
      "kind": "code",
      "repository": "kdkrkwhr/engineering-standards",
      "path": ".github/workflows/docs.yml",
      "revision": "0ab26dea2102fbb801740ba9f853a004761b7e0c",
      "url": "https://github.com/kdkrkwhr/engineering-standards/blob/0ab26dea2102fbb801740ba9f853a004761b7e0c/.github/workflows/docs.yml",
      "visibility": "public"
    },
    {
      "id": "attendance-readme",
      "title": "attendance-pwa · README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "README.md",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/README.md",
      "visibility": "public"
    },
    {
      "id": "attendance-app",
      "title": "attendance-pwa · js/app.js",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "js/app.js",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/js/app.js",
      "visibility": "public"
    },
    {
      "id": "attendance-config",
      "title": "attendance-pwa · config.js",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "config.js",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/config.js",
      "visibility": "public"
    },
    {
      "id": "attendance-sw",
      "title": "attendance-pwa · sw.js",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "sw.js",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/sw.js",
      "visibility": "public"
    },
    {
      "id": "attendance-commute",
      "title": "attendance-pwa · js/commute-time.js",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "js/commute-time.js",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/js/commute-time.js",
      "visibility": "public"
    },
    {
      "id": "attendance-news",
      "title": "attendance-pwa · js/news-brief.js",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": "js/news-brief.js",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/js/news-brief.js",
      "visibility": "public"
    },
    {
      "id": "attendance-ci",
      "title": "attendance-pwa · .github/workflows/pages.yml",
      "kind": "code",
      "repository": "kdkrkwhr/attendance-pwa",
      "path": ".github/workflows/pages.yml",
      "revision": "4ee370fad304c5a1b142be72c5109d99a04ac0e3",
      "url": "https://github.com/kdkrkwhr/attendance-pwa/blob/4ee370fad304c5a1b142be72c5109d99a04ac0e3/.github/workflows/pages.yml",
      "visibility": "public"
    },
    {
      "id": "msa-architecture-1",
      "title": "msa-architecture: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/msa-architecture",
      "path": "README.md",
      "revision": "daab901385eda3f6cc0c5c7cafb8506affbac1b1",
      "url": "https://github.com/kdkrkwhr/msa-architecture/blob/daab901385eda3f6cc0c5c7cafb8506affbac1b1/README.md",
      "visibility": "public"
    },
    {
      "id": "msa-architecture-2",
      "title": "msa-architecture: spring-eureka/src/main/resources/application.yml",
      "kind": "code",
      "repository": "kdkrkwhr/msa-architecture",
      "path": "spring-eureka/src/main/resources/application.yml",
      "revision": "daab901385eda3f6cc0c5c7cafb8506affbac1b1",
      "url": "https://github.com/kdkrkwhr/msa-architecture/blob/daab901385eda3f6cc0c5c7cafb8506affbac1b1/spring-eureka/src/main/resources/application.yml",
      "visibility": "public"
    },
    {
      "id": "msa-architecture-3",
      "title": "msa-architecture: spring-eureka-zuul/src/main/resources/application.yml",
      "kind": "code",
      "repository": "kdkrkwhr/msa-architecture",
      "path": "spring-eureka-zuul/src/main/resources/application.yml",
      "revision": "daab901385eda3f6cc0c5c7cafb8506affbac1b1",
      "url": "https://github.com/kdkrkwhr/msa-architecture/blob/daab901385eda3f6cc0c5c7cafb8506affbac1b1/spring-eureka-zuul/src/main/resources/application.yml",
      "visibility": "public"
    },
    {
      "id": "msa-architecture-4",
      "title": "msa-architecture: flask-eureka-zuul-service/app.py",
      "kind": "code",
      "repository": "kdkrkwhr/msa-architecture",
      "path": "flask-eureka-zuul-service/app.py",
      "revision": "daab901385eda3f6cc0c5c7cafb8506affbac1b1",
      "url": "https://github.com/kdkrkwhr/msa-architecture/blob/daab901385eda3f6cc0c5c7cafb8506affbac1b1/flask-eureka-zuul-service/app.py",
      "visibility": "public"
    },
    {
      "id": "msa-architecture-5",
      "title": "msa-architecture: spring-eureka-zuul/src/main/java/com/kdk/filter/PreFilter.java",
      "kind": "code",
      "repository": "kdkrkwhr/msa-architecture",
      "path": "spring-eureka-zuul/src/main/java/com/kdk/filter/PreFilter.java",
      "revision": "daab901385eda3f6cc0c5c7cafb8506affbac1b1",
      "url": "https://github.com/kdkrkwhr/msa-architecture/blob/daab901385eda3f6cc0c5c7cafb8506affbac1b1/spring-eureka-zuul/src/main/java/com/kdk/filter/PreFilter.java",
      "visibility": "public"
    },
    {
      "id": "spring-boot-1",
      "title": "spring-boot: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/spring-boot",
      "path": "README.md",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/README.md",
      "visibility": "public"
    },
    {
      "id": "spring-boot-2",
      "title": "spring-boot: spring-kafka/build.gradle",
      "kind": "code",
      "repository": "kdkrkwhr/spring-boot",
      "path": "spring-kafka/build.gradle",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/spring-kafka/build.gradle",
      "visibility": "public"
    },
    {
      "id": "spring-boot-3",
      "title": "spring-boot: spring-security-jwt/build.gradle",
      "kind": "code",
      "repository": "kdkrkwhr/spring-boot",
      "path": "spring-security-jwt/build.gradle",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/spring-security-jwt/build.gradle",
      "visibility": "public"
    },
    {
      "id": "spring-boot-4",
      "title": "spring-boot: spring-crawling/src/main/java/com/kdk/util/CrawlerUtil.java",
      "kind": "code",
      "repository": "kdkrkwhr/spring-boot",
      "path": "spring-crawling/src/main/java/com/kdk/util/CrawlerUtil.java",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/spring-crawling/src/main/java/com/kdk/util/CrawlerUtil.java",
      "visibility": "public"
    },
    {
      "id": "spring-boot-5",
      "title": "spring-boot: spring-elasticsearch/src/main/java/com/kdk/service/BookService.java",
      "kind": "code",
      "repository": "kdkrkwhr/spring-boot",
      "path": "spring-elasticsearch/src/main/java/com/kdk/service/BookService.java",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/spring-elasticsearch/src/main/java/com/kdk/service/BookService.java",
      "visibility": "public"
    },
    {
      "id": "spring-boot-6",
      "title": "spring-boot: spring-fcm-server/src/main/java/com/kdk/service/FcmServerService.java",
      "kind": "code",
      "repository": "kdkrkwhr/spring-boot",
      "path": "spring-fcm-server/src/main/java/com/kdk/service/FcmServerService.java",
      "revision": "b0a8b227af8ed65ef684a5950d0c97d42bf13d41",
      "url": "https://github.com/kdkrkwhr/spring-boot/blob/b0a8b227af8ed65ef684a5950d0c97d42bf13d41/spring-fcm-server/src/main/java/com/kdk/service/FcmServerService.java",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-1",
      "title": "spring-react-template: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "README.md",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/README.md",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-2",
      "title": "spring-react-template: backend/settings.gradle",
      "kind": "code",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "backend/settings.gradle",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/backend/settings.gradle",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-3",
      "title": "spring-react-template: frontend/src/App.js",
      "kind": "code",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "frontend/src/App.js",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/frontend/src/App.js",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-4",
      "title": "spring-react-template: frontend/package.json",
      "kind": "code",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "frontend/package.json",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/frontend/package.json",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-5",
      "title": "spring-react-template: backend/app/api-server/src/main/java/com/kdk/web/UserController.java",
      "kind": "code",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "backend/app/api-server/src/main/java/com/kdk/web/UserController.java",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/backend/app/api-server/src/main/java/com/kdk/web/UserController.java",
      "visibility": "public"
    },
    {
      "id": "spring-react-template-6",
      "title": "spring-react-template: backend/app/api-server/src/main/java/com/kdk/config/SecurityConfig.java",
      "kind": "code",
      "repository": "kdkrkwhr/spring-react-template",
      "path": "backend/app/api-server/src/main/java/com/kdk/config/SecurityConfig.java",
      "revision": "2624ccc506dcc914325bf0e2aa5442e7c4f89621",
      "url": "https://github.com/kdkrkwhr/spring-react-template/blob/2624ccc506dcc914325bf0e2aa5442e7c4f89621/backend/app/api-server/src/main/java/com/kdk/config/SecurityConfig.java",
      "visibility": "public"
    },
    {
      "id": "airport-parking-1",
      "title": "airport-parking: src/main/java/com/kdk/scheduler/MainScheduler.java",
      "kind": "code",
      "repository": "kdkrkwhr/airport-parking",
      "path": "src/main/java/com/kdk/scheduler/MainScheduler.java",
      "revision": "8ff191956a0a8a7746f511810a798754375903e2",
      "url": "https://github.com/kdkrkwhr/airport-parking/blob/8ff191956a0a8a7746f511810a798754375903e2/src/main/java/com/kdk/scheduler/MainScheduler.java",
      "visibility": "public"
    },
    {
      "id": "airport-parking-2",
      "title": "airport-parking: src/main/java/com/kdk/service/RealTimeService.java",
      "kind": "code",
      "repository": "kdkrkwhr/airport-parking",
      "path": "src/main/java/com/kdk/service/RealTimeService.java",
      "revision": "8ff191956a0a8a7746f511810a798754375903e2",
      "url": "https://github.com/kdkrkwhr/airport-parking/blob/8ff191956a0a8a7746f511810a798754375903e2/src/main/java/com/kdk/service/RealTimeService.java",
      "visibility": "public"
    },
    {
      "id": "airport-parking-3",
      "title": "airport-parking: src/main/java/com/kdk/controller/KakaoSkillRestController.java",
      "kind": "code",
      "repository": "kdkrkwhr/airport-parking",
      "path": "src/main/java/com/kdk/controller/KakaoSkillRestController.java",
      "revision": "8ff191956a0a8a7746f511810a798754375903e2",
      "url": "https://github.com/kdkrkwhr/airport-parking/blob/8ff191956a0a8a7746f511810a798754375903e2/src/main/java/com/kdk/controller/KakaoSkillRestController.java",
      "visibility": "public"
    },
    {
      "id": "airport-parking-4",
      "title": "airport-parking: build.gradle",
      "kind": "code",
      "repository": "kdkrkwhr/airport-parking",
      "path": "build.gradle",
      "revision": "8ff191956a0a8a7746f511810a798754375903e2",
      "url": "https://github.com/kdkrkwhr/airport-parking/blob/8ff191956a0a8a7746f511810a798754375903e2/build.gradle",
      "visibility": "public"
    },
    {
      "id": "flask-leaflet-1",
      "title": "flask-leaflet: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/flask-leaflet",
      "path": "README.md",
      "revision": "cccfdf98ef0d6205ac007bcfcb338decb9ec7c50",
      "url": "https://github.com/kdkrkwhr/flask-leaflet/blob/cccfdf98ef0d6205ac007bcfcb338decb9ec7c50/README.md",
      "visibility": "public"
    },
    {
      "id": "flask-leaflet-2",
      "title": "flask-leaflet: app.py",
      "kind": "code",
      "repository": "kdkrkwhr/flask-leaflet",
      "path": "app.py",
      "revision": "cccfdf98ef0d6205ac007bcfcb338decb9ec7c50",
      "url": "https://github.com/kdkrkwhr/flask-leaflet/blob/cccfdf98ef0d6205ac007bcfcb338decb9ec7c50/app.py",
      "visibility": "public"
    },
    {
      "id": "flask-leaflet-3",
      "title": "flask-leaflet: templates/page/cctv_map.html",
      "kind": "code",
      "repository": "kdkrkwhr/flask-leaflet",
      "path": "templates/page/cctv_map.html",
      "revision": "cccfdf98ef0d6205ac007bcfcb338decb9ec7c50",
      "url": "https://github.com/kdkrkwhr/flask-leaflet/blob/cccfdf98ef0d6205ac007bcfcb338decb9ec7c50/templates/page/cctv_map.html",
      "visibility": "public"
    },
    {
      "id": "flask-leaflet-4",
      "title": "flask-leaflet: static/js/cctvMap.js",
      "kind": "code",
      "repository": "kdkrkwhr/flask-leaflet",
      "path": "static/js/cctvMap.js",
      "revision": "cccfdf98ef0d6205ac007bcfcb338decb9ec7c50",
      "url": "https://github.com/kdkrkwhr/flask-leaflet/blob/cccfdf98ef0d6205ac007bcfcb338decb9ec7c50/static/js/cctvMap.js",
      "visibility": "public"
    },
    {
      "id": "flutter-profile-1",
      "title": "flutter-profile: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/flutter-profile",
      "path": "README.md",
      "revision": "9e396bbddaa0178e2ccb99bebdad2ac27b4726ea",
      "url": "https://github.com/kdkrkwhr/flutter-profile/blob/9e396bbddaa0178e2ccb99bebdad2ac27b4726ea/README.md",
      "visibility": "public"
    },
    {
      "id": "flutter-profile-2",
      "title": "flutter-profile: lib/main.dart",
      "kind": "code",
      "repository": "kdkrkwhr/flutter-profile",
      "path": "lib/main.dart",
      "revision": "9e396bbddaa0178e2ccb99bebdad2ac27b4726ea",
      "url": "https://github.com/kdkrkwhr/flutter-profile/blob/9e396bbddaa0178e2ccb99bebdad2ac27b4726ea/lib/main.dart",
      "visibility": "public"
    },
    {
      "id": "flutter-profile-3",
      "title": "flutter-profile: lib/sections/portfolio/portfolio.dart",
      "kind": "code",
      "repository": "kdkrkwhr/flutter-profile",
      "path": "lib/sections/portfolio/portfolio.dart",
      "revision": "9e396bbddaa0178e2ccb99bebdad2ac27b4726ea",
      "url": "https://github.com/kdkrkwhr/flutter-profile/blob/9e396bbddaa0178e2ccb99bebdad2ac27b4726ea/lib/sections/portfolio/portfolio.dart",
      "visibility": "public"
    },
    {
      "id": "flutter-profile-4",
      "title": "flutter-profile: pubspec.yaml",
      "kind": "code",
      "repository": "kdkrkwhr/flutter-profile",
      "path": "pubspec.yaml",
      "revision": "9e396bbddaa0178e2ccb99bebdad2ac27b4726ea",
      "url": "https://github.com/kdkrkwhr/flutter-profile/blob/9e396bbddaa0178e2ccb99bebdad2ac27b4726ea/pubspec.yaml",
      "visibility": "public"
    },
    {
      "id": "flutter-profile-5",
      "title": "flutter-profile: test/widget_test.dart",
      "kind": "code",
      "repository": "kdkrkwhr/flutter-profile",
      "path": "test/widget_test.dart",
      "revision": "9e396bbddaa0178e2ccb99bebdad2ac27b4726ea",
      "url": "https://github.com/kdkrkwhr/flutter-profile/blob/9e396bbddaa0178e2ccb99bebdad2ac27b4726ea/test/widget_test.dart",
      "visibility": "public"
    },
    {
      "id": "dl-object-tracking-1",
      "title": "dl-object-tracking: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/dl-object-tracking",
      "path": "README.md",
      "revision": "c00e0c9b9632b4a19497395b33208d3c9a08cc5f",
      "url": "https://github.com/kdkrkwhr/dl-object-tracking/blob/c00e0c9b9632b4a19497395b33208d3c9a08cc5f/README.md",
      "visibility": "public"
    },
    {
      "id": "dl-object-tracking-2",
      "title": "dl-object-tracking: custom_vehicle_training/README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/dl-object-tracking",
      "path": "custom_vehicle_training/README.md",
      "revision": "c00e0c9b9632b4a19497395b33208d3c9a08cc5f",
      "url": "https://github.com/kdkrkwhr/dl-object-tracking/blob/c00e0c9b9632b4a19497395b33208d3c9a08cc5f/custom_vehicle_training/README.md",
      "visibility": "public"
    },
    {
      "id": "dl-object-tracking-3",
      "title": "dl-object-tracking: custom_vehicle_training/generate_tfrecord.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-object-tracking",
      "path": "custom_vehicle_training/generate_tfrecord.py",
      "revision": "c00e0c9b9632b4a19497395b33208d3c9a08cc5f",
      "url": "https://github.com/kdkrkwhr/dl-object-tracking/blob/c00e0c9b9632b4a19497395b33208d3c9a08cc5f/custom_vehicle_training/generate_tfrecord.py",
      "visibility": "public"
    },
    {
      "id": "dl-object-detecting-1",
      "title": "dl-object-detecting: demo.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-object-detecting",
      "path": "demo.py",
      "revision": "373223b39fdb1401a838cba5b3cf096bc612e71f",
      "url": "https://github.com/kdkrkwhr/dl-object-detecting/blob/373223b39fdb1401a838cba5b3cf096bc612e71f/demo.py",
      "visibility": "public"
    },
    {
      "id": "dl-object-detecting-2",
      "title": "dl-object-detecting: model/yolo_model.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-object-detecting",
      "path": "model/yolo_model.py",
      "revision": "373223b39fdb1401a838cba5b3cf096bc612e71f",
      "url": "https://github.com/kdkrkwhr/dl-object-detecting/blob/373223b39fdb1401a838cba5b3cf096bc612e71f/model/yolo_model.py",
      "visibility": "public"
    },
    {
      "id": "dl-object-detecting-3",
      "title": "dl-object-detecting: model/darknet53.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-object-detecting",
      "path": "model/darknet53.py",
      "revision": "373223b39fdb1401a838cba5b3cf096bc612e71f",
      "url": "https://github.com/kdkrkwhr/dl-object-detecting/blob/373223b39fdb1401a838cba5b3cf096bc612e71f/model/darknet53.py",
      "visibility": "public"
    },
    {
      "id": "dl-object-detecting-4",
      "title": "dl-object-detecting: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/dl-object-detecting",
      "path": "README.md",
      "revision": "373223b39fdb1401a838cba5b3cf096bc612e71f",
      "url": "https://github.com/kdkrkwhr/dl-object-detecting/blob/373223b39fdb1401a838cba5b3cf096bc612e71f/README.md",
      "visibility": "public"
    },
    {
      "id": "dl-data-training-1",
      "title": "dl-data-training: train_car.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-data-training",
      "path": "train_car.py",
      "revision": "a6b6af0142a3d57ebeac89c38c89d9dadd614c59",
      "url": "https://github.com/kdkrkwhr/dl-data-training/blob/a6b6af0142a3d57ebeac89c38c89d9dadd614c59/train_car.py",
      "visibility": "public"
    },
    {
      "id": "dl-tesseract-1",
      "title": "dl-tesseract: main.py",
      "kind": "code",
      "repository": "kdkrkwhr/dl-tesseract",
      "path": "main.py",
      "revision": "d61bd752deb16ef19df40f420a038d81a21519ca",
      "url": "https://github.com/kdkrkwhr/dl-tesseract/blob/d61bd752deb16ef19df40f420a038d81a21519ca/main.py",
      "visibility": "public"
    },
    {
      "id": "dl-tesseract-2",
      "title": "dl-tesseract: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/dl-tesseract",
      "path": "README.md",
      "revision": "d61bd752deb16ef19df40f420a038d81a21519ca",
      "url": "https://github.com/kdkrkwhr/dl-tesseract/blob/d61bd752deb16ef19df40f420a038d81a21519ca/README.md",
      "visibility": "public"
    },
    {
      "id": "algorithms-1",
      "title": "algorithms: src/baekjoon/tuto/TutorialSolution.java",
      "kind": "code",
      "repository": "kdkrkwhr/algorithms",
      "path": "src/baekjoon/tuto/TutorialSolution.java",
      "revision": "e7aacf60b038fff8eb84974d98d138776c46e1c0",
      "url": "https://github.com/kdkrkwhr/algorithms/blob/e7aacf60b038fff8eb84974d98d138776c46e1c0/src/baekjoon/tuto/TutorialSolution.java",
      "visibility": "public"
    },
    {
      "id": "kdkrkwhr.github.com-1",
      "title": "kdkrkwhr.github.com: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/kdkrkwhr.github.com",
      "path": "README.md",
      "revision": "02bb498ac183973e58e6b6489f59971e63691ac3",
      "url": "https://github.com/kdkrkwhr/kdkrkwhr.github.com/blob/02bb498ac183973e58e6b6489f59971e63691ac3/README.md",
      "visibility": "public"
    },
    {
      "id": "kdkrkwhr.github.com-2",
      "title": "kdkrkwhr.github.com: _config.yml",
      "kind": "code",
      "repository": "kdkrkwhr/kdkrkwhr.github.com",
      "path": "_config.yml",
      "revision": "02bb498ac183973e58e6b6489f59971e63691ac3",
      "url": "https://github.com/kdkrkwhr/kdkrkwhr.github.com/blob/02bb498ac183973e58e6b6489f59971e63691ac3/_config.yml",
      "visibility": "public"
    },
    {
      "id": "kdkrkwhr.github.com-3",
      "title": "kdkrkwhr.github.com: _data/projects.yml",
      "kind": "code",
      "repository": "kdkrkwhr/kdkrkwhr.github.com",
      "path": "_data/projects.yml",
      "revision": "02bb498ac183973e58e6b6489f59971e63691ac3",
      "url": "https://github.com/kdkrkwhr/kdkrkwhr.github.com/blob/02bb498ac183973e58e6b6489f59971e63691ac3/_data/projects.yml",
      "visibility": "public"
    },
    {
      "id": "kdkrkwhr.github.com-4",
      "title": "kdkrkwhr.github.com: scripts/publish_blog.py",
      "kind": "code",
      "repository": "kdkrkwhr/kdkrkwhr.github.com",
      "path": "scripts/publish_blog.py",
      "revision": "02bb498ac183973e58e6b6489f59971e63691ac3",
      "url": "https://github.com/kdkrkwhr/kdkrkwhr.github.com/blob/02bb498ac183973e58e6b6489f59971e63691ac3/scripts/publish_blog.py",
      "visibility": "public"
    },
    {
      "id": "resume-1",
      "title": "resume: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/resume",
      "path": "README.md",
      "revision": "31ca11c24755494362212f4bdc9c5718d49bfc64",
      "url": "https://github.com/kdkrkwhr/resume/blob/31ca11c24755494362212f4bdc9c5718d49bfc64/README.md",
      "visibility": "public"
    },
    {
      "id": "resume-2",
      "title": "resume: index.html",
      "kind": "code",
      "repository": "kdkrkwhr/resume",
      "path": "index.html",
      "revision": "31ca11c24755494362212f4bdc9c5718d49bfc64",
      "url": "https://github.com/kdkrkwhr/resume/blob/31ca11c24755494362212f4bdc9c5718d49bfc64/index.html",
      "visibility": "public"
    },
    {
      "id": "resume-3",
      "title": "resume: style.css",
      "kind": "code",
      "repository": "kdkrkwhr/resume",
      "path": "style.css",
      "revision": "31ca11c24755494362212f4bdc9c5718d49bfc64",
      "url": "https://github.com/kdkrkwhr/resume/blob/31ca11c24755494362212f4bdc9c5718d49bfc64/style.css",
      "visibility": "public"
    },
    {
      "id": "kdkrkwhr-1",
      "title": "kdkrkwhr: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/kdkrkwhr",
      "path": "README.md",
      "revision": "ce9cc77955a5de3fa114d1eea1288913b23f3c51",
      "url": "https://github.com/kdkrkwhr/kdkrkwhr/blob/ce9cc77955a5de3fa114d1eea1288913b23f3c51/README.md",
      "visibility": "public"
    },
    {
      "id": "kdk-knowledge-1",
      "title": "kdk-knowledge: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/kdk-knowledge",
      "path": "README.md",
      "revision": "300e554c442c86522e121f7b17dd3ba738fcacd4",
      "url": "https://github.com/kdkrkwhr/kdk-knowledge/blob/300e554c442c86522e121f7b17dd3ba738fcacd4/README.md",
      "visibility": "public"
    },
    {
      "id": "kdk-knowledge-2",
      "title": "kdk-knowledge: scripts/build_wiki.py",
      "kind": "code",
      "repository": "kdkrkwhr/kdk-knowledge",
      "path": "scripts/build_wiki.py",
      "revision": "300e554c442c86522e121f7b17dd3ba738fcacd4",
      "url": "https://github.com/kdkrkwhr/kdk-knowledge/blob/300e554c442c86522e121f7b17dd3ba738fcacd4/scripts/build_wiki.py",
      "visibility": "public"
    },
    {
      "id": "kdk-knowledge-3",
      "title": "kdk-knowledge: scripts/validate.py",
      "kind": "code",
      "repository": "kdkrkwhr/kdk-knowledge",
      "path": "scripts/validate.py",
      "revision": "300e554c442c86522e121f7b17dd3ba738fcacd4",
      "url": "https://github.com/kdkrkwhr/kdk-knowledge/blob/300e554c442c86522e121f7b17dd3ba738fcacd4/scripts/validate.py",
      "visibility": "public"
    },
    {
      "id": "spring-ai-1",
      "title": "spring-ai: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/spring-ai",
      "path": "README.md",
      "revision": "c988e72ab7282bcc352b2155e8cb27ff4b5e0fda",
      "url": "https://github.com/kdkrkwhr/spring-ai/blob/c988e72ab7282bcc352b2155e8cb27ff4b5e0fda/README.md",
      "visibility": "public"
    },
    {
      "id": "spring-ai-2",
      "title": "spring-ai: pom.xml",
      "kind": "code",
      "repository": "kdkrkwhr/spring-ai",
      "path": "pom.xml",
      "revision": "c988e72ab7282bcc352b2155e8cb27ff4b5e0fda",
      "url": "https://github.com/kdkrkwhr/spring-ai/blob/c988e72ab7282bcc352b2155e8cb27ff4b5e0fda/pom.xml",
      "visibility": "public"
    },
    {
      "id": "hermes-agent-1",
      "title": "hermes-agent: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/hermes-agent",
      "path": "README.md",
      "revision": "b1e211ddd15cc72e99aa068254b89e4351f8c278",
      "url": "https://github.com/kdkrkwhr/hermes-agent/blob/b1e211ddd15cc72e99aa068254b89e4351f8c278/README.md",
      "visibility": "public"
    },
    {
      "id": "hermes-agent-2",
      "title": "hermes-agent: package.json",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent",
      "path": "package.json",
      "revision": "b1e211ddd15cc72e99aa068254b89e4351f8c278",
      "url": "https://github.com/kdkrkwhr/hermes-agent/blob/b1e211ddd15cc72e99aa068254b89e4351f8c278/package.json",
      "visibility": "public"
    },
    {
      "id": "hermes-agent-3",
      "title": "hermes-agent: .github/workflows/install-e2e.yml",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent",
      "path": ".github/workflows/install-e2e.yml",
      "revision": "b1e211ddd15cc72e99aa068254b89e4351f8c278",
      "url": "https://github.com/kdkrkwhr/hermes-agent/blob/b1e211ddd15cc72e99aa068254b89e4351f8c278/.github/workflows/install-e2e.yml",
      "visibility": "public"
    },
    {
      "id": "hermes-agent-4",
      "title": "hermes-agent: scripts/dev-sandbox.sh",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent",
      "path": "scripts/dev-sandbox.sh",
      "revision": "b1e211ddd15cc72e99aa068254b89e4351f8c278",
      "url": "https://github.com/kdkrkwhr/hermes-agent/blob/b1e211ddd15cc72e99aa068254b89e4351f8c278/scripts/dev-sandbox.sh",
      "visibility": "public"
    },
    {
      "id": "hermes-agent-5",
      "title": "hermes-agent: scripts/sandbox/stage2-run.sh",
      "kind": "code",
      "repository": "kdkrkwhr/hermes-agent",
      "path": "scripts/sandbox/stage2-run.sh",
      "revision": "b1e211ddd15cc72e99aa068254b89e4351f8c278",
      "url": "https://github.com/kdkrkwhr/hermes-agent/blob/b1e211ddd15cc72e99aa068254b89e4351f8c278/scripts/sandbox/stage2-run.sh",
      "visibility": "public"
    },
    {
      "id": "AgentRadio-1",
      "title": "AgentRadio: README.md",
      "kind": "readme",
      "repository": "kdkrkwhr/AgentRadio",
      "path": "README.md",
      "revision": "9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645",
      "url": "https://github.com/kdkrkwhr/AgentRadio/blob/9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645/README.md",
      "visibility": "public"
    },
    {
      "id": "AgentRadio-2",
      "title": "AgentRadio: multi_agent/coral_multi_agent.py",
      "kind": "code",
      "repository": "kdkrkwhr/AgentRadio",
      "path": "multi_agent/coral_multi_agent.py",
      "revision": "9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645",
      "url": "https://github.com/kdkrkwhr/AgentRadio/blob/9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645/multi_agent/coral_multi_agent.py",
      "visibility": "public"
    },
    {
      "id": "AgentRadio-3",
      "title": "AgentRadio: multi_agent/resume_guard.py",
      "kind": "code",
      "repository": "kdkrkwhr/AgentRadio",
      "path": "multi_agent/resume_guard.py",
      "revision": "9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645",
      "url": "https://github.com/kdkrkwhr/AgentRadio/blob/9ea8df12f3c3becc5d9b66c4e3b8d796ca5b9645/multi_agent/resume_guard.py",
      "visibility": "public"
    }
  ],
  "entities": [
    {
      "id": "notebuddy",
      "type": "project",
      "title": "노트버디",
      "summary": "그림·사진에서 시작한 친구의 행동을 공통 Python 규칙으로 계산하는 공개 프로젝트",
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "auction-spot",
      "type": "project",
      "title": "옥션스팟 API",
      "summary": "동네 경매의 대기열·입찰·낙찰 흐름과 로컬 이미지 저장 구현",
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "auction-spot-front",
      "type": "project",
      "title": "옥션스팟 Flutter",
      "summary": "옥션스팟의 Flutter 클라이언트가 REST·STOMP·이미지 업로드를 호출하는 경로",
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "agent-hub",
      "type": "project",
      "title": "AGENT HUB",
      "summary": "로컬 CLI 에이전트 호출·지속 작업 큐·검토 가능한 작업 사본을 결합한 협업 허브",
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "hermes-env",
      "type": "project",
      "title": "Hermes 환경 템플릿",
      "summary": "Hermes 작업 환경의 경로·프로필·스킬을 다른 머신에 배치하는 부트스트랩 저장소",
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "hermes-agent-area",
      "type": "project",
      "title": "Hermes Agent Area",
      "summary": "Hermes 프로필·칸반·로그를 2D 사무실 상태로 표현하는 Phaser 화면과 로컬 FastAPI 서버",
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "hermes-team-hub",
      "type": "project",
      "title": "Hermes Team Hub",
      "summary": "역할별 팀 로그의 정적 데모와 Hermes 상태를 읽는 로컬 서버를 분리한 허브",
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "agent-drift-guard",
      "type": "project",
      "title": "Agent Drift Guard",
      "summary": "에이전트 메시지를 단계 경계까지 버퍼링하는 실험 코드; README는 Hermes 대상 중단을 명시",
      "evidence": [
        "drift-readme",
        "drift-buffer",
        "drift-inject",
        "drift-test",
        "drift-hook",
        "drift-session"
      ],
      "document": "wiki/agent-drift-guard.html"
    },
    {
      "id": "python-execution",
      "type": "technology",
      "title": "Python 실행 경계",
      "summary": "노트버디의 공통 Python 전이 함수와 브라우저·Anna 호출 경계",
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "attendance-pwa",
      "type": "project",
      "title": "출퇴근 체크 PWA",
      "summary": "브라우저 저장 출퇴근 기록·퇴근 시각 계산·오프라인 캐시와 선택적 외부 연동",
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "image-storage",
      "type": "implementation",
      "title": "로컬 이미지 저장",
      "summary": "옥션스팟 API의 multipart 업로드부터 로컬 파일 URL까지 확인한 구현",
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "local-queue",
      "type": "implementation",
      "title": "로컬 작업 큐",
      "summary": "AGENT HUB의 SQLite 작업 상태와 CLI 서브프로세스 사이의 처리 경계",
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "standards",
      "type": "criteria",
      "title": "개발 기준 자료",
      "summary": "언어·프레임워크별 선택형 기준과 검증 도구를 제공하는 별도 공개 저장소",
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "msa-architecture",
      "type": "project",
      "title": "MSA Architecture 실험",
      "summary": "Eureka 등록·Zuul 경로 분기와 Flask 서비스를 묶은 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "spring-boot",
      "type": "project",
      "title": "Spring Boot 기술 예제 모음",
      "summary": "크롤링·Elasticsearch·FCM·Kafka 등 여러 독립 예제가 든 저장소",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "spring-react-template",
      "type": "project",
      "title": "Spring·React 프로젝트 템플릿",
      "summary": "Gradle 백엔드 골격과 React 시작 화면을 함께 둔 템플릿",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "airport-parking",
      "type": "project",
      "title": "공항 주차 정보 실험",
      "summary": "공개 API XML 수집을 예약 실행하고 Redis와 Kakao 응답 경로를 둔 Spring 프로젝트",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "flask-leaflet",
      "type": "project",
      "title": "Flask·Leaflet 지도 예제",
      "summary": "Flask 라우트가 여러 Leaflet 지도 화면을 제공하는 실험",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "flutter-profile",
      "type": "project",
      "title": "Flutter 프로필 예제",
      "summary": "Flutter 화면·라우트·반응형 섹션을 둔 프로필 앱",
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "dl-object-tracking",
      "type": "project",
      "title": "객체 추적·차량 데이터 실험",
      "summary": "TensorFlow Object Detection 계열 코드와 차량 라벨 변환 자료",
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "dl-object-detecting",
      "type": "project",
      "title": "YOLO v3 객체 검출 예제",
      "summary": "OpenCV 프레임 전처리와 Keras YOLO 추론을 연결한 데모",
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "dl-data-training",
      "type": "project",
      "title": "차량 이미지 분류 학습 스크립트",
      "summary": "단일 Keras 파일에 적힌 CNN 구성과 폴더 입력 학습 흐름",
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "dl-tesseract",
      "type": "project",
      "title": "Tesseract 번호판 OCR 실험",
      "summary": "OpenCV 전처리·윤곽선 필터와 Tesseract 문자 인식 데모",
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "algorithms",
      "type": "project",
      "title": "Java 알고리즘 풀이 기록",
      "summary": "단일 Java 파일에 모은 기초 입력·출력 문제 풀이",
      "evidence": [
        "algorithms-1"
      ],
      "document": "wiki/algorithms.html"
    },
    {
      "id": "kdkrkwhr.github.com",
      "type": "resource",
      "title": "개인 기술 블로그 저장소",
      "summary": "Jekyll 게시 구조와 Markdown 글·발행 확인 스크립트",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "resume",
      "type": "resource",
      "title": "공개 이력서 페이지의 구현",
      "summary": "HTML·CSS로 구성된 정적 이력서 사이트의 게시 구조",
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "kdkrkwhr",
      "type": "resource",
      "title": "GitHub 프로필 README",
      "summary": "계정 프로필이 공개 프로젝트와 관심 기술을 연결하는 인덱스",
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "kdk-knowledge",
      "type": "project",
      "title": "중앙 지식 허브 구현",
      "summary": "공개 원본 커밋을 Markdown 문서·검색·지식 그래프로 빌드하는 저장소",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "spring-ai",
      "type": "reference",
      "title": "Spring AI fork 참조",
      "summary": "upstream Spring AI 코드를 가리키는 fork; 독자 커밋 확인 안 됨",
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "hermes-agent",
      "type": "reference",
      "title": "Hermes Agent fork 변경 범위",
      "summary": "NousResearch upstream의 fork와 기본 브랜치에 확인된 두 변경 커밋",
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "AgentRadio",
      "type": "reference",
      "title": "AgentRadio fork 참조",
      "summary": "Coral-Protocol upstream 연구 코드의 fork; 독자 커밋 확인 안 됨",
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3"
      ],
      "document": "wiki/AgentRadio.html"
    },
    {
      "id": "concept_baekjoon",
      "type": "concept",
      "title": "백준(Baekjoon) 온라인 저지",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "algorithms-1"
      ],
      "documents": [
        "wiki/algorithms.html"
      ]
    },
    {
      "id": "concept_elasticsearch",
      "type": "concept",
      "title": "Elasticsearch",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "concept_eureka",
      "type": "concept",
      "title": "Eureka (서비스 발견)",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "concept_fcm",
      "type": "concept",
      "title": "FCM (Firebase Cloud Messaging)",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "concept_flask",
      "type": "concept",
      "title": "Flask",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_gradle",
      "type": "concept",
      "title": "Gradle",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4",
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6",
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/airport-parking.html",
        "wiki/spring-boot.html",
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_java",
      "type": "concept",
      "title": "Java",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4",
        "algorithms-1",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5",
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6",
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/airport-parking.html",
        "wiki/algorithms.html",
        "wiki/auction-spot.html",
        "wiki/image-storage.html",
        "wiki/msa-architecture.html",
        "wiki/spring-boot.html",
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_jinja",
      "type": "concept",
      "title": "Jinja 템플릿",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_jsoup",
      "type": "concept",
      "title": "Jsoup",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "concept_jwt",
      "type": "concept",
      "title": "JWT",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/auction-spot.html",
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "concept_kafka",
      "type": "concept",
      "title": "Kafka",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6",
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-boot.html",
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_kakao_api",
      "type": "concept",
      "title": "Kakao API",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/airport-parking.html",
        "wiki/auction-spot.html"
      ]
    },
    {
      "id": "concept_py_eureka_client",
      "type": "concept",
      "title": "py_eureka_client",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "concept_react",
      "type": "concept",
      "title": "React",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_redis",
      "type": "concept",
      "title": "Redis",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6",
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/airport-parking.html",
        "wiki/auction-spot.html",
        "wiki/spring-boot.html",
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_spring_boot",
      "type": "concept",
      "title": "Spring Boot",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5",
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6",
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/airport-parking.html",
        "wiki/auction-spot.html",
        "wiki/msa-architecture.html",
        "wiki/spring-boot.html",
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_spring_security",
      "type": "concept",
      "title": "Spring Security",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_zuul",
      "type": "concept",
      "title": "Zuul 게이트웨이",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "msa_architecture_flask_service",
      "type": "concept",
      "title": "flask-eureka-zuul-service app.py",
      "summary": "시작 시 py_eureka_client로 등록. GET /craw/url은 고정 GitHub 주소 크롤링, POST /craw/get_data는 요청 본문 URL·태그를 crawler_parsing에 전달, /craw/test는 파라미터 반환.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "msa_architecture_prefilter",
      "type": "concept",
      "title": "Zuul PreFilter (요청 전 필터)",
      "summary": "모든 요청의 URI·메서드를 기록하는 예제이며 인증이나 대상 URL 검증은 하지 않는다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "spring_boot_bookservice",
      "type": "concept",
      "title": "BookService (Elasticsearch 예제)",
      "summary": "저장소를 통한 책 문서 생성·삭제와 ElasticsearchRestTemplate의 userName 일치 검색을 분리.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "spring_boot_crawlerutil_findbytag",
      "type": "concept",
      "title": "CrawlerUtil.findByTag (Jsoup 크롤링)",
      "summary": "URL의 HTML을 Jsoup로 가져와 지정 class 텍스트 목록을 만든다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "spring_boot_fcmserverservice",
      "type": "concept",
      "title": "FcmServerService (FCM 서버 예제)",
      "summary": "",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "spring_react_template_securityconfig",
      "type": "concept",
      "title": "SecurityConfig (일부 경로만 권한, 프레임 옵션 해제)",
      "summary": "실제 서비스 재사용 시 엔드포인트별 공개 범위와 프레임 정책을 다시 정해야 한다(P1).",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "spring_react_template_usercontroller",
      "type": "concept",
      "title": "UserController (로그인 화면·회원가입·로그아웃)",
      "summary": "회원가입은 서비스에 위임, 로그아웃은 remember-me 쿠키와 Spring Security 컨텍스트를 지움. 프런트 시작 화면이 실제 호출한다는 근거는 없다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "standards_spring_boot_profile",
      "type": "concept",
      "title": "profiles/frameworks/spring-boot.md",
      "summary": "새 프로젝트의 네 계층 기본안을 제시하지만 기존 기능별 구조를 먼저 존중.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "concept_geo_fallback_fixed_region_risk",
      "type": "design",
      "title": "위치 조회 실패를 고정 지역으로 대체하는 위험",
      "summary": "키 부재뿐 아니라 API 오류·빈 응답에서도 요청 좌표와 무관한 고정 지역을 성공처럼 돌려줘 동네 기준 경매에서 잘못된 분류가 날 수 있다. 미확인 상태로 전파해야 한다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/auction-spot.html"
      ]
    },
    {
      "id": "concept_silent_failure_empty_catch",
      "type": "design",
      "title": "빈 catch로 인한 조용한 실패",
      "summary": "예외를 비어 있는 catch가 삼키면 스케줄 로그가 정상 종료처럼 보여 수집 중단을 감지할 수 없다. 기록·전파로 바꿔야 한다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "documents": [
        "wiki/airport-parking.html"
      ]
    },
    {
      "id": "concept_unknown_label_silent_pass",
      "type": "design",
      "title": "미지 라벨의 조용한 통과",
      "summary": "허용 라벨을 명시하고 모르는 라벨은 즉시 오류로 처리해야 잘못된 학습 입력을 앞단에서 찾을 수 있다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-object-tracking.html"
      ]
    },
    {
      "id": "msa_architecture_untrusted_crawl_input",
      "type": "design",
      "title": "입력 신뢰도가 다른 두 크롤 경로",
      "summary": "POST /craw/get_data는 요청 URL·태그를 그대로 크롤러에 넘기므로 외부에 열기 전 입력 대상과 오류 응답을 정의해야 한다(P2).",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "msa_architecture_zuul_routing",
      "type": "design",
      "title": "Zuul 경로 분기 (/api/**→8101, /craw/**→8102)",
      "summary": "설정값으로 확인되지만 서비스를 실제 기동해 증명하지는 않았다. 목적지가 localhost 포트로 고정된 실험 구성.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "documents": [
        "wiki/msa-architecture.html"
      ]
    },
    {
      "id": "spring_boot_crawler_swallows_errors",
      "type": "design",
      "title": "크롤러가 네트워크 오류를 빈 결과로 돌림",
      "summary": "스택 출력 후 빈 결과를 반환해 호출자가 원격 오류와 실제 빈 페이지를 구분하기 어렵다(P2: 명시적 결과로 돌릴 것).",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "documents": [
        "wiki/spring-boot.html"
      ]
    },
    {
      "id": "spring_react_template_frontend_placeholder",
      "type": "design",
      "title": "프런트는 React 기본 시작 화면 (통합 경로 부재)",
      "summary": "README의 설치 지시와 소스가 표현하는 구현 범위를 분리해 읽어야 한다. 프런트 의존성은 예제 시점 버전에 묶여 있다.",
      "origin": "extracted",
      "community": "Java·Spring 백엔드 실험",
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "documents": [
        "wiki/spring-react-template.html"
      ]
    },
    {
      "id": "concept_cnn",
      "type": "concept",
      "title": "CNN (합성곱 신경망)",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-data-training-1"
      ],
      "documents": [
        "wiki/dl-data-training.html"
      ]
    },
    {
      "id": "concept_keras",
      "type": "concept",
      "title": "Keras",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-data-training-1",
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "documents": [
        "wiki/dl-data-training.html",
        "wiki/dl-object-detecting.html"
      ]
    },
    {
      "id": "concept_kim_donggi",
      "type": "concept",
      "title": "김동기 (kdkrkwhr)",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "kdkrkwhr-1"
      ],
      "documents": [
        "wiki/index.html",
        "wiki/kdkrkwhr.html",
        "wiki/repositories.html"
      ]
    },
    {
      "id": "concept_maven",
      "type": "concept",
      "title": "Maven",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "documents": [
        "wiki/spring-ai.html"
      ]
    },
    {
      "id": "concept_opencv",
      "type": "concept",
      "title": "OpenCV",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4",
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3",
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "documents": [
        "wiki/dl-object-detecting.html",
        "wiki/dl-object-tracking.html",
        "wiki/dl-tesseract.html"
      ]
    },
    {
      "id": "concept_python",
      "type": "concept",
      "title": "Python",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3",
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "dl-data-training-1",
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4",
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3",
        "dl-tesseract-1",
        "dl-tesseract-2",
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4",
        "hub-publication",
        "hub-web-app",
        "notebuddy-anna",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/AgentRadio.html",
        "wiki/agent-hub.html",
        "wiki/dl-data-training.html",
        "wiki/dl-object-detecting.html",
        "wiki/dl-object-tracking.html",
        "wiki/dl-tesseract.html",
        "wiki/flask-leaflet.html",
        "wiki/hermes-agent-area.html",
        "wiki/local-queue.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "concept_rag",
      "type": "concept",
      "title": "RAG (벡터 저장소 통합)",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "documents": [
        "wiki/spring-ai.html"
      ]
    },
    {
      "id": "concept_spring_ai",
      "type": "concept",
      "title": "Spring AI",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "documents": [
        "wiki/spring-ai.html"
      ]
    },
    {
      "id": "concept_ssd_detector",
      "type": "concept",
      "title": "SSD (Single Shot Detector)",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-object-tracking.html"
      ]
    },
    {
      "id": "concept_tensorflow",
      "type": "concept",
      "title": "TensorFlow",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4",
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-object-detecting.html",
        "wiki/dl-object-tracking.html"
      ]
    },
    {
      "id": "concept_tesseract",
      "type": "concept",
      "title": "Tesseract OCR",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "documents": [
        "wiki/dl-tesseract.html"
      ]
    },
    {
      "id": "concept_tf_object_detection_api",
      "type": "concept",
      "title": "TensorFlow Object Detection API",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-object-tracking.html"
      ]
    },
    {
      "id": "concept_tfrecord",
      "type": "concept",
      "title": "TFRecord",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-object-tracking.html"
      ]
    },
    {
      "id": "concept_yolo_v3",
      "type": "concept",
      "title": "YOLO v3",
      "summary": "",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "documents": [
        "wiki/dl-object-detecting.html"
      ]
    },
    {
      "id": "concept_hardcoded_paths_hyperparams",
      "type": "design",
      "title": "코드 내 고정 경로·하이퍼파라미터의 재현성 문제",
      "summary": "데이터 위치·epoch·모델 크기·라벨 ID가 스크립트 안에 있어 다른 데이터셋을 쓰려면 원본을 편집해야 한다. 입력값으로 분리하면 해석 오류와 수동 변경이 줄어든다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "dl-data-training-1",
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4",
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "documents": [
        "wiki/dl-data-training.html",
        "wiki/dl-object-detecting.html",
        "wiki/dl-object-tracking.html",
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_opencv_version_coupling",
      "type": "design",
      "title": "OpenCV API 형태 결합(버전 민감성)",
      "summary": "findContours의 반환값 개수가 버전에 따라 달라 README 환경 밖 최신 설치에서 같은 동작을 보장하지 않는다. 의존성 버전과 입력 예제를 기록해야 한다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "documents": [
        "wiki/dl-tesseract.html"
      ]
    },
    {
      "id": "kdkrkwhr_profile_entry_vs_wiki",
      "type": "design",
      "title": "프로필은 입구, 위키는 대조 설명",
      "summary": "README의 기술 이름 목록을 특정 프로젝트에서 사용했다는 증거로 자동 연결하지 않는다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "kdkrkwhr-1"
      ],
      "documents": [
        "wiki/kdkrkwhr.html"
      ]
    },
    {
      "id": "local_queue_sqlite_work_queue",
      "type": "design",
      "title": "SQLite 작업 큐",
      "summary": "웹 요청을 곧바로 모델 응답으로 취급하지 않고 작업 상태를 SQLite에 기록한 뒤 CLI 서브프로세스로 실행한다. 선택 이유·처리량·운영 효과는 확인한 파일에 없다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "repositories_evaluation_rubric",
      "type": "design",
      "title": "냉정한 기술 평가 기준 (양호·보완 필요·위험·미확인, P1~P3)",
      "summary": "구조·설계, 구현 품질, 운영 준비, 유지보수 4축. P1은 공개 실행 전 우선, P2는 다음 변경 때, P3는 기록 차원. 총점·순위는 매기지 않고 fork upstream 구현은 소유자 기여로 평가하지 않는다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [],
      "documents": [
        "wiki/repositories.html"
      ]
    },
    {
      "id": "repositories_static_not_execution",
      "type": "design",
      "title": "정적 분석 ≠ 실행 검증·개인 기여 검증",
      "summary": "non-fork도 단독 저작을 뜻하지 않으며 fork는 기본 브랜치 비교만으로 외부 PR 기여를 배제할 수 없다.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [],
      "documents": [
        "wiki/repositories.html"
      ]
    },
    {
      "id": "spring_ai_no_fork_commits",
      "type": "design",
      "title": "fork 기본 브랜치 앞선 커밋 0개 (2026-10-27 compare)",
      "summary": "기본 브랜치 비교 스냅샷일 뿐 다른 브랜치·외부 PR 기여를 조사한 결과가 아니며, Spring AI를 실제 프로젝트에 적용했다는 근거도 없다. P3: 활용 시 upstream 커밋과 개인 변경분 기록.",
      "origin": "extracted",
      "community": "비전 실험과 저장소 색인",
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "documents": [
        "wiki/spring-ai.html"
      ]
    },
    {
      "id": "concept_geojson",
      "type": "concept",
      "title": "GeoJSON",
      "summary": "",
      "origin": "extracted",
      "community": "지도 클라이언트와 키 노출",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_leaflet",
      "type": "concept",
      "title": "Leaflet",
      "summary": "",
      "origin": "extracted",
      "community": "지도 클라이언트와 키 노출",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_api_key_in_localstorage_risk",
      "type": "design",
      "title": "브라우저 localStorage의 API 키 보관 위험",
      "summary": "선택 기능의 API 키와 생활 설정이 같은 설정 객체에 장기 저장되어 공유 기기·동일 오리진 스크립트 문제에 취약하다. 민감 설정과 일반 UI 설정을 분리해야 한다.",
      "origin": "extracted",
      "community": "지도 클라이언트와 키 노출",
      "evidence": [
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html"
      ]
    },
    {
      "id": "concept_client_side_api_key_exposure",
      "type": "design",
      "title": "클라이언트 코드의 외부 서비스 키 노출",
      "summary": "지도 서비스 키를 브라우저 스크립트에 직접 두면 사용 범위를 통제하기 어렵다. 키 제한·교체 정책과 타일 HTTPS를 정해야 한다.",
      "origin": "extracted",
      "community": "지도 클라이언트와 키 노출",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_bash_shell",
      "type": "concept",
      "title": "Bash 셸 스크립트",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme",
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/hermes-agent.html",
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_cli_subprocess",
      "type": "concept",
      "title": "CLI 서브프로세스 호출",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "concept_coral",
      "type": "concept",
      "title": "Coral",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "concept_coral_protocol",
      "type": "concept",
      "title": "Coral Protocol",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3",
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/AgentRadio.html",
        "wiki/agent-hub.html",
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_hermes",
      "type": "concept",
      "title": "Hermes Agent",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "drift-buffer",
        "drift-hook",
        "drift-inject",
        "drift-readme",
        "drift-session",
        "drift-test",
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme",
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/agent-drift-guard.html",
        "wiki/hermes-agent.html",
        "wiki/hermes-agent-area.html",
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_jsonl",
      "type": "concept",
      "title": "JSONL",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "concept_localstorage",
      "type": "concept",
      "title": "localStorage",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html"
      ]
    },
    {
      "id": "concept_nousresearch",
      "type": "concept",
      "title": "Nous Research",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/hermes-agent.html"
      ]
    },
    {
      "id": "concept_npm",
      "type": "concept",
      "title": "npm",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/hermes-agent.html"
      ]
    },
    {
      "id": "concept_ssot",
      "type": "concept",
      "title": "SSoT (Single Source of Truth) 저장소",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme"
      ],
      "documents": [
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_threadinghttpserver",
      "type": "concept",
      "title": "ThreadingHTTPServer (Python 표준 라이브러리)",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_hubstore",
      "type": "concept",
      "title": "HubStore (js/store.js)",
      "summary": "hermes-team-hub.logs.v1 키로 localStorage에 기록을 추가·조회·삭제. 브라우저별 로컬 상태이며 팀 공유 DB가 아니다.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_jsonl_model",
      "type": "concept",
      "title": "team_hub/model.py JSONL 모델 (append_activity·load_activities)",
      "summary": "역할 검사·시각 채움 후 activities.jsonl에 기록, 날짜·역할·카드·태그 필터로 읽음. Pages의 localStorage와 별도 저장 방식.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_local_app",
      "type": "concept",
      "title": "local/app.py 로컬 HTTP 서버",
      "summary": "ThreadingHTTPServer를 루프백에 바인딩. /api/kanban은 hermes kanban list --json 호출 후 5초 메모리 캐시, /api/agents는 SOUL 문서, /api/coral·/api/logs 조회 경로.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_team_hub_cli",
      "type": "concept",
      "title": "local/team_hub.py CLI (log·view·timeline·report·reset)",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "local_queue_adapters",
      "type": "concept",
      "title": "adapters.py CLI 어댑터",
      "summary": "",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "concept_fork_attribution_boundary",
      "type": "design",
      "title": "fork 기여 귀속 경계",
      "summary": "공개 compare에서 fork가 upstream보다 앞선 커밋이 없거나 소수인 경우, upstream 기능·수치를 계정 소유자의 성과로 귀속하지 않는다.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3",
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4",
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/AgentRadio.html",
        "wiki/dl-object-detecting.html",
        "wiki/hermes-agent.html"
      ]
    },
    {
      "id": "concept_preserve_existing_config_idempotency",
      "type": "design",
      "title": "기존 설정 보존과 제한된 멱등성",
      "summary": "기존 config.yaml·역할 config·.env.local은 건너뛰지만 --with-souls는 SOUL 덮어쓰기를 명시 선택하고 스킬은 cp -r로 복사한다. README의 멱등 설명을 모든 파일 불변으로 확대하지 않는다.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme"
      ],
      "documents": [
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_sandbox_ca_trust_isolation",
      "type": "design",
      "title": "격리 환경 전용 CA 신뢰 경로",
      "summary": "TLS 프록시 CA를 격리 환경(sandbox) 안에서만 npm에 신뢰시켜 호스트 전체 신뢰 설정을 바꾸지 않는다. 실제 격리·설치 결과는 미확인.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "documents": [
        "wiki/hermes-agent.html"
      ]
    },
    {
      "id": "hermes_team_hub_cli_allowlist",
      "type": "design",
      "title": "Hermes 명령 허용 목록",
      "summary": "CLI 명령을 허용 목록으로 제한하지만 목록에 상태 변경 명령이 있고 GET 경로에서 실행되므로 읽기 전용 조회와 분리해야 한다(P1).",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_get_state_change_risk",
      "type": "design",
      "title": "GET 경로 상태 변경·Origin 무검사 위험",
      "summary": "루프백 서비스라도 다른 웹 페이지가 요청을 유도할 수 있으므로 상태 변경 명령을 GET에서 분리하고 요청 출처·확인 경계를 둬야 한다.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_shared_filter_state",
      "type": "design",
      "title": "칸반 검색·상태 필터의 전역 상태 공유",
      "summary": "역할별 검색 입력은 따로 저장하지만 탭 전환 후 필터가 섞일 수 있다는 코드상 판단(실행 확인 아님, P2).",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "hermes_team_hub_static_demo_vs_local_runtime",
      "type": "design",
      "title": "정적 데모(Pages)와 로컬 실행형(local/app.py)의 데이터 경계",
      "summary": "같은 이름의 허브라도 Pages는 브라우저 localStorage 기록, 로컬 서버는 Hermes 칸반·프로필·Coral 상태를 읽으므로 두 경로를 합쳐 실시간 서비스로 설명하지 않는다.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/hermes-team-hub.html"
      ]
    },
    {
      "id": "local_queue_local_not_offline",
      "type": "design",
      "title": "로컬 큐 ≠ 오프라인 전용",
      "summary": "큐·웹 서버가 로컬이어도 CLI는 로그인된 외부 모델 서비스로 작업을 보낼 수 있다. SECURITY.md는 원격 인증 없는 로컬 UI의 공개 노출을 피하라고 설명.",
      "origin": "extracted",
      "community": "Hermes 환경과 fork 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "concept_discord",
      "type": "concept",
      "title": "Discord",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_fastapi",
      "type": "concept",
      "title": "FastAPI",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_github_actions",
      "type": "concept",
      "title": "GitHub Actions",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw",
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html",
        "wiki/attendance-pwa.html",
        "wiki/hermes-agent.html"
      ]
    },
    {
      "id": "concept_google_sheets",
      "type": "concept",
      "title": "Google Sheets",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html"
      ]
    },
    {
      "id": "concept_phaser",
      "type": "concept",
      "title": "Phaser 3",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_pwa",
      "type": "concept",
      "title": "PWA",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html"
      ]
    },
    {
      "id": "concept_role_profiles_pm_dev_infra_qa_ops",
      "type": "concept",
      "title": "역할별 프로필 (pm/dev/infra/qa/ops)",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "env-agent-guide",
        "env-bootstrap",
        "env-config",
        "env-conventions",
        "env-readme"
      ],
      "documents": [
        "wiki/hermes-env.html"
      ]
    },
    {
      "id": "concept_service_worker",
      "type": "concept",
      "title": "Service Worker",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html",
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_vite",
      "type": "concept",
      "title": "Vite",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_debug_bind_all_interfaces_risk",
      "type": "design",
      "title": "debug 모드의 전체 인터페이스 바인딩 위험",
      "summary": "공개 환경에서 debug=True로 0.0.0.0에 바인딩하면 개발용 디버거가 노출된다. 외부 노출 설정에서 debug를 끄고 바인딩을 제한해야 한다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "documents": [
        "wiki/flask-leaflet.html"
      ]
    },
    {
      "id": "concept_desk_brief_optional_pwa_fallback",
      "type": "design",
      "title": "desk-brief의 선택적 PWA 입력과 cron 대체",
      "summary": "날씨·뉴스는 출퇴근 PWA 데이터 폴더의 JSON을 먼저 시도하고 없으면 Hermes cron 출력으로 대체한다. PWA 파일은 선택적 입력이라 설치·실행 의존성이 아니다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_display_name_resolution_order",
      "type": "design",
      "title": "에이전트 표시 이름 해석 순서",
      "summary": "area.json/office.json 설정값 → Discord 연결 이름 → SOUL.md 이름 → CLI 프로필 alias → 프로필 ID 순. default 프로필의 자료 루트는 Hermes 홈 자체다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_local_first_not_offline",
      "type": "design",
      "title": "local-first는 완전 오프라인이 아님",
      "summary": "CLI 인증을 이용하므로 프롬프트와 작업 내용이 모델 서비스로 전송될 수 있다. 원격 사용자 인증이 없어 공개 프록시 노출을 피해야 하며 읽기 전용 CLI 설정도 OS 샌드박스가 아니다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_local_record_optional_network_boundary",
      "type": "design",
      "title": "기본 로컬 저장과 선택적 네트워크 기능의 경계",
      "summary": "중심 기록은 브라우저 로컬이지만 공인 IP 조회·Google Sheet 전송·통근·뉴스는 설정과 사용자 동작에 따라 외부 요청을 보낸다. 둘을 동일하게 '완전 오프라인'으로 설명하지 않는다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw"
      ],
      "documents": [
        "wiki/attendance-pwa.html"
      ]
    },
    {
      "id": "concept_local_websocket_blocked_on_https",
      "type": "design",
      "title": "HTTPS 페이지의 로컬 ws:// 차단",
      "summary": "혼합 콘텐츠 제약으로 HTTPS Pages에서 로컬 ws://가 막히면 OfficeScene은 연결을 건너뛰고 연결 끊김용 mock 칸반을 쓴다. 로컬 프런트엔드나 별도 wss://로 우회를 안내한다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_loopback_csrf_boundary",
      "type": "design",
      "title": "루프백 바인딩·CSRF 요청 경계",
      "summary": "로컬 도구 목적에 맞게 루프백 접근만 허용하고 Host·Origin·CSRF 토큰을 검사한다. 다중 사용자 서비스로 확장하려면 인증·권한 경계를 새로 설계해야 한다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_path_prefix_check_weakness",
      "type": "design",
      "title": "문자열 접두사 경로 검사의 취약점",
      "summary": "/api/file-preview의 허용 경로 검사가 정규화 경로의 문자열 접두사만 비교해 실제 포함 관계와 달라 루트 밖 텍스트를 읽을 수 있다. 경로 객체 기준 포함 검사로 고쳐야 한다(P1).",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_public_demo_local_server_boundary",
      "type": "design",
      "title": "공개 데모와 로컬 서버의 경계",
      "summary": "HTTPS Pages에서는 mock 자료로 장면을 보여 주고, 실제 프로필·칸반·로그는 루프백 로컬 서버에 연결했을 때만 흐른다. 데모 수치를 개인 작업 성과로 읽지 않는다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "documents": [
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_readme_vs_implementation_gap",
      "type": "design",
      "title": "README 설명과 구현의 불일치",
      "summary": "문서가 말하는 큐·알림·저장 방식이 코드와 다르면 잘못된 운영 가정을 낳는다. 문서와 구현 경계를 갱신해야 한다.",
      "origin": "extracted",
      "community": "로컬 서버와 공개 화면의 경계",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/attendance-pwa.html",
        "wiki/auction-spot.html",
        "wiki/auction-spot-front.html",
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_devfolio",
      "type": "concept",
      "title": "DevFolio 템플릿",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "documents": [
        "wiki/flutter-profile.html"
      ]
    },
    {
      "id": "concept_dio",
      "type": "concept",
      "title": "Dio",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_firebase",
      "type": "concept",
      "title": "Firebase (Messaging/FCM)",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot.html",
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_flutter",
      "type": "concept",
      "title": "Flutter",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-upload",
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot-front.html",
        "wiki/flutter-profile.html"
      ]
    },
    {
      "id": "concept_go_router",
      "type": "concept",
      "title": "go_router",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_mysql",
      "type": "concept",
      "title": "MySQL",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/auction-spot.html"
      ]
    },
    {
      "id": "concept_provider_flutter",
      "type": "concept",
      "title": "Provider (Flutter)",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "documents": [
        "wiki/flutter-profile.html"
      ]
    },
    {
      "id": "concept_responsive_builder",
      "type": "concept",
      "title": "responsive_builder",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "documents": [
        "wiki/flutter-profile.html"
      ]
    },
    {
      "id": "concept_riverpod",
      "type": "concept",
      "title": "Riverpod",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_stomp",
      "type": "concept",
      "title": "STOMP",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot.html",
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_websocket",
      "type": "concept",
      "title": "WebSocket",
      "summary": "",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/auction-spot.html",
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "concept_row_lock_bid_validation",
      "type": "design",
      "title": "행 잠금 아래 입찰 검증",
      "summary": "동시 입찰 경쟁에서 상태·금액 규칙을 한 트랜잭션 안의 행 잠금으로 검사해 일관성을 지킨다. 처리량은 검증되지 않았다.",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/auction-spot.html"
      ]
    },
    {
      "id": "concept_token_refresh_reentrancy",
      "type": "design",
      "title": "토큰 갱신 재진입 위험",
      "summary": "401 인터셉터가 같은 Dio 인스턴스로 리프레시를 보내면 갱신 요청도 같은 오류 인터셉터를 통과해 반복 요청이 가능하다. 갱신 전용 클라이언트 또는 경로 제외·동시 요청 조정이 필요하다.",
      "origin": "extracted",
      "community": "옥션스팟 경매 API·앱",
      "evidence": [
        "auction-bid",
        "auction-upload",
        "front-auction",
        "front-constants",
        "front-dio",
        "front-main",
        "front-pubspec",
        "front-readme",
        "front-router",
        "front-starter",
        "front-upload",
        "front-ws"
      ],
      "documents": [
        "wiki/auction-spot-front.html"
      ]
    },
    {
      "id": "concept_claude_code",
      "type": "concept",
      "title": "Claude Code",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_codex_cli",
      "type": "concept",
      "title": "Codex CLI",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_cursor_agent",
      "type": "concept",
      "title": "Cursor Agent",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_sqlite",
      "type": "concept",
      "title": "SQLite",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html",
        "wiki/hermes-agent-area.html"
      ]
    },
    {
      "id": "local_queue_engine",
      "type": "concept",
      "title": "engine.py 작업 엔진",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "local_queue_storage",
      "type": "concept",
      "title": "storage.py 저장 경로 모듈",
      "summary": "설정, DB, 로그, 작업 사본, 산출물 경로를 분리.",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "concept_step_boundary_message_buffering",
      "type": "design",
      "title": "단계 경계 메시지 버퍼링 (0-turn 주입)",
      "summary": "다른 에이전트의 메시지가 추론·도구 호출 중간에 도착하면 흐름을 흐트러뜨린다는 가설에서, 메시지를 단계 경계까지 보류했다가 도구 결과 뒤에 덧붙인다. 새 LLM 턴을 열지 않는 것은 런타임 책임이다.",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "drift-buffer",
        "drift-hook",
        "drift-inject",
        "drift-readme",
        "drift-session",
        "drift-test"
      ],
      "documents": [
        "wiki/agent-drift-guard.html"
      ]
    },
    {
      "id": "concept_workspace_copy_export_boundary",
      "type": "design",
      "title": "작업 사본 export와 원본 반영의 분리",
      "summary": "에이전트는 사본·기준 ZIP·SHA-256 지문 위에서 작업하고 export는 패치·보고서를 만들 뿐 원본 적용·commit·push가 아니다. 웹 파이프라인만 별도 확인 동선(Publication)을 통해 반영한다.",
      "origin": "extracted",
      "community": "로컬 에이전트 작업 허브",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-ci",
        "agent-hub-discussion",
        "agent-hub-engine",
        "agent-hub-entry",
        "agent-hub-pipeline",
        "agent-hub-project",
        "agent-hub-readme",
        "agent-hub-security",
        "agent-hub-server",
        "agent-hub-storage",
        "agent-hub-voting",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app"
      ],
      "documents": [
        "wiki/agent-hub.html"
      ]
    },
    {
      "id": "concept_anna_aps",
      "type": "concept",
      "title": "Anna APS (ETag·요청 영수증)",
      "summary": "",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "concept_compare_and_set",
      "type": "concept",
      "title": "compare-and-set 리비전 갱신",
      "summary": "",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "concept_indexeddb",
      "type": "concept",
      "title": "IndexedDB",
      "summary": "",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "concept_javascript_worker",
      "type": "concept",
      "title": "JavaScript Worker",
      "summary": "",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "concept_pyodide",
      "type": "concept",
      "title": "Pyodide",
      "summary": "",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "notebuddy_anna_game_worker",
      "type": "concept",
      "title": "anna game_worker.py (Anna Worker)",
      "summary": "허용 명령을 확인하고 게임 코어의 transition을 호출.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "notebuddy_evolution",
      "type": "concept",
      "title": "engine/evolution.py 진화 규칙",
      "summary": "다음 단계의 레벨·돌봄·훈련·산책 조건을 계산하고 진행 중 선택을 먼저 끝내야 하는 상황을 구분. AI 설명은 게임 조건 값과 분리.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "notebuddy_executioncontext",
      "type": "concept",
      "title": "ExecutionContext (규칙 데이터·템플릿·시각·난수원·ID 생성기)",
      "summary": "전이 계산에 필요한 외부 입력을 호출자가 건네는 의존 경계. ports.py의 ContextMapping·Dependency는 실행 문맥이 없을 때 다른 모듈로 암묵적으로 넘어가 추적이 어려울 수 있다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "notebuddy_gameapplication",
      "type": "concept",
      "title": "GameApplication (공통 저장 오케스트레이션)",
      "summary": "저장소에서 상태를 읽고 요청 ID·저장 리비전을 검사, 전이 결과가 바뀌면 리비전을 확인해 교체하고 충돌 시 재시도. 저장소 계약은 load·compare_and_set.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "notebuddy_gameservice_invoke",
      "type": "concept",
      "title": "notebuddy_plugin.py GameService.invoke (APS 조건부 쓰기)",
      "summary": "APS 저장값·ETag를 읽고 요청 영수증과 게임 상태를 함께 구성해 조건부로 씀. 기존 행은 ETag 충돌 재시도, 최초 생성은 쓰기 전 재조회만.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "notebuddy_transition",
      "type": "concept",
      "title": "engine/game_api.py transition 함수",
      "summary": "기존 상태·명령·실행 문맥을 받아 TransitionResult(결과·다음 상태·변경 여부·이벤트)를 반환. 명령 형식·접근 범위 검사 후 엔진 명령 분배. 파일 저장은 직접 하지 않는다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "notebuddy_web_store",
      "type": "concept",
      "title": "web/store.js (IndexedDB saves 저장소)",
      "summary": "플레이어 상태를 리비전 비교로 갱신, 플레이어·그림 데이터를 별도 키로 관리하고 교체 시 같은 트랜잭션 사용. 웹 구현에 한정.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "notebuddy_web_worker",
      "type": "concept",
      "title": "web/worker.js (Pyodide Worker)",
      "summary": "Pyodide를 준비해 Python 코어와 규칙 데이터를 브라우저에 적재, 메시지를 받아 transition을 호출하고 결과·상태·뷰를 JavaScript로 반환.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html",
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "local_queue_restart_dedupe",
      "type": "design",
      "title": "재시작 실패 표시와 중복 전달 방지",
      "summary": "끊긴 실행을 실패 상태로 표시하고 채널 메시지의 작업 식별자로 이미 전달된 응답을 재전송하지 않는다. 재검토 가능한 상태를 남기는 경로이지 모든 오류 회복 보장은 아니다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "agent-hub-adapters",
        "agent-hub-engine",
        "agent-hub-security",
        "agent-hub-storage"
      ],
      "documents": [
        "wiki/local-queue.html"
      ]
    },
    {
      "id": "notebuddy_aps_first_create_race",
      "type": "design",
      "title": "APS 최초 생성의 원자적 create-if-absent 부재",
      "summary": "기존 행의 ETag 보호와 다른 경계. 쓰기 직전 재조회로 경쟁 가능성만 줄이므로 GameApplication의 계약을 Anna 구현에 그대로 적용했다고 읽으면 안 된다(P1).",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "notebuddy_transition_storage_separation",
      "type": "design",
      "title": "상태 전이와 저장 결정의 분리",
      "summary": "공통 규칙 계산과 호스트별 저장 책임을 분리하고 실행 입력을 주입한다. 설계 이유는 공개 근거로 확정할 수 없다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "notebuddy_user_chooses_evolution",
      "type": "design",
      "title": "진화 방향 선택은 사용자에게",
      "summary": "레벨만으로 진화하지 않고 활동 조건을 채운 뒤 사용자가 시점과 세 방향 중 하나를 고른다. AI는 설명·외형 제안만 보탠다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-api",
        "notebuddy-evolution",
        "notebuddy-ports",
        "notebuddy-readme",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/notebuddy.html"
      ]
    },
    {
      "id": "python_execution_shared_entrypoint",
      "type": "design",
      "title": "두 호출자가 같은 게임 규칙 진입점을 공유",
      "summary": "브라우저 Worker(Pyodide)와 Anna Worker의 입출력 처리가 같다는 주장이 아니라 진입점(transition)이 같다는 관찰. 웹 저장(IndexedDB)을 Anna 영속화로 일반화하지 않는다.",
      "origin": "extracted",
      "community": "노트버디 상태 전이와 저장",
      "evidence": [
        "notebuddy-anna",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-store",
        "notebuddy-web"
      ],
      "documents": [
        "wiki/python-execution.html"
      ]
    },
    {
      "id": "concept_graphify",
      "type": "concept",
      "title": "Graphify",
      "summary": "",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3",
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/index.html",
        "wiki/kdk-knowledge.html",
        "wiki/maintenance.html",
        "wiki/standards.html"
      ]
    },
    {
      "id": "concept_markdown",
      "type": "concept",
      "title": "Markdown",
      "summary": "",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3",
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdk-knowledge.html",
        "wiki/kdkrkwhr.github.com.html",
        "wiki/maintenance.html"
      ]
    },
    {
      "id": "kdk_knowledge_build_wiki",
      "type": "concept",
      "title": "scripts/build_wiki.py (kdk-knowledge)",
      "summary": "front matter와 본문을 읽어 정적 HTML·Markdown 복사·검색 인덱스·관계 JSON 생성. render_markdown은 제목·평면 목록·링크·코드만 처리하므로 중첩 목록·표는 평문 처리될 수 있다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "documents": [
        "wiki/kdk-knowledge.html"
      ]
    },
    {
      "id": "kdk_knowledge_validate",
      "type": "concept",
      "title": "scripts/validate.py",
      "summary": "등록 근거 URL의 저장소·커밋·경로 일치, 공개 여부, 문서 링크·관계 근거를 검사. 의미적 진실은 판정하지 않는다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "documents": [
        "wiki/kdk-knowledge.html"
      ]
    },
    {
      "id": "maintenance_sources_json",
      "type": "concept",
      "title": "docs/wiki/sources.json 근거 등록",
      "summary": "공개 가능한 파일 URL을 전체 커밋 SHA로 고정해 등록. 공개 범위 불확실한 경력·성과·개인정보는 등록하지 않는다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [],
      "documents": [
        "wiki/maintenance.html"
      ]
    },
    {
      "id": "standards_build_wiki",
      "type": "concept",
      "title": "scripts/build_wiki.py (engineering-standards 용어 위키 생성기)",
      "summary": "용어 JSON과 템플릿에서 HTML·Markdown을 생성하고 커밋 SHA를 링크에 넣는다. kdk-knowledge의 프로젝트 해설과는 편집 원본·설명 대상이 다르다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "standards_check_docs",
      "type": "concept",
      "title": "scripts/check_docs.py",
      "summary": "Markdown 제목·상대 링크·코드 블록 닫힘 검사.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "standards_docs_workflow",
      "type": "concept",
      "title": ".github/workflows/docs.yml 문서 검사 워크플로",
      "summary": "푸시·PR에 문서·위생·용어·위키·검색 검사를 정의. 정적 확인이며 Actions 결과를 재검증한 것은 아니다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "standards_python_profile",
      "type": "concept",
      "title": "profiles/languages/python.md",
      "summary": "이름·모듈·테스트 파일 규칙을 다루되 특정 프레임워크·런타임 버전을 필수로 하지 않는다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "index_pinned_commit_links",
      "type": "design",
      "title": "원본 링크를 확인한 커밋에 고정",
      "summary": "원본 저장소에 별도 위키가 없어도 README·코드·설계 문서만으로 기록할 수 있고, 커밋 고정으로 설명과 근거의 시점을 맞춘다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [],
      "documents": [
        "wiki/index.html"
      ]
    },
    {
      "id": "kdk_knowledge_source_pinning_vs_commentary",
      "type": "design",
      "title": "출처 고정과 사람의 해설 분리",
      "summary": "공개 산출물 범위를 제한하고 근거의 커밋·경로·공개 여부를 검사하되, 자동 생성은 편집의 대체가 아니다. P2: 미지원 Markdown 구조를 빌드에서 명확히 거부.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "documents": [
        "wiki/kdk-knowledge.html"
      ]
    },
    {
      "id": "maintenance_add_project_procedure",
      "type": "design",
      "title": "프로젝트 추가 절차 (대상 선정→근거 등록→문서→관계→빌드·검증)",
      "summary": "저장소 소유만으로 단독 저작을 주장하지 않고, 사실마다 가까운 원본 링크를 두며, build_wiki.py --check·validate.py·unittest를 실행한다. 공개 원본 변경은 해설을 자동 수정하지 않으므로 재대조 필요.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [],
      "documents": [
        "wiki/maintenance.html"
      ]
    },
    {
      "id": "maintenance_test_existence_vs_success",
      "type": "design",
      "title": "테스트 파일 존재 ≠ 테스트 실행 성공",
      "summary": "",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [],
      "documents": [
        "wiki/maintenance.html"
      ]
    },
    {
      "id": "standards_optional_profiles",
      "type": "design",
      "title": "선택형 기준 (특정 언어·아키텍처를 강제하지 않음)",
      "summary": "기준 저장소 커밋을 고정한 뒤 필요한 문서를 소비 프로젝트에 배치하고 기존 지침과 충돌을 검토한다. 언어 프로필과 프레임워크 프로필은 각각 선택.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "standards_reference_not_adoption",
      "type": "design",
      "title": "기준 참조 ≠ 적용 근거",
      "summary": "노트버디·옥션스팟·AGENT HUB가 어떤 기준을 적용했는지는 프로젝트별 결정 기록과 적용 커밋이 있어야 한다. 기준 저장소의 Graphify 분석이 이 허브의 분석을 대체하지 않는다.",
      "origin": "extracted",
      "community": "지식 허브와 문서 기준",
      "evidence": [
        "standards-build",
        "standards-check",
        "standards-ci",
        "standards-current",
        "standards-python",
        "standards-spring"
      ],
      "documents": [
        "wiki/standards.html"
      ]
    },
    {
      "id": "concept_github_pages",
      "type": "concept",
      "title": "GitHub Pages",
      "summary": "",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "area-connect",
        "area-front",
        "area-mock",
        "area-package",
        "area-readme",
        "area-scene",
        "area-server",
        "area-test",
        "attendance-app",
        "attendance-ci",
        "attendance-commute",
        "attendance-config",
        "attendance-news",
        "attendance-readme",
        "attendance-sw",
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4",
        "resume-1",
        "resume-2",
        "resume-3",
        "team-cli",
        "team-model",
        "team-readme",
        "team-server",
        "team-store",
        "team-web"
      ],
      "documents": [
        "wiki/attendance-pwa.html",
        "wiki/hermes-agent-area.html",
        "wiki/hermes-team-hub.html",
        "wiki/kdkrkwhr.github.com.html",
        "wiki/resume.html"
      ]
    },
    {
      "id": "concept_html_css",
      "type": "concept",
      "title": "HTML·CSS 정적 페이지",
      "summary": "",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "documents": [
        "wiki/resume.html"
      ]
    },
    {
      "id": "concept_jekyll",
      "type": "concept",
      "title": "Jekyll",
      "summary": "",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdkrkwhr.github.com.html"
      ]
    },
    {
      "id": "concept_kramdown",
      "type": "concept",
      "title": "Kramdown",
      "summary": "",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdkrkwhr.github.com.html"
      ]
    },
    {
      "id": "kdkrkwhr_github_com_projects_yml",
      "type": "concept",
      "title": "_data/projects.yml 프로젝트 목록 데이터",
      "summary": "프로젝트 목록을 데이터 파일로 분리해 항목 링크를 한곳에서 고친다.",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdkrkwhr.github.com.html"
      ]
    },
    {
      "id": "kdkrkwhr_github_com_publish_blog",
      "type": "concept",
      "title": "scripts/publish_blog.py 게시 확인 스크립트",
      "summary": "공개 URL을 최대 세 차례 조회해 예상 문자열을 확인하지만 실패해도 종료 코드 0을 반환하므로 CI 배포 성공 보증 단계로 쓰면 오류가 성공처럼 전달된다(P2).",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdkrkwhr.github.com.html"
      ]
    },
    {
      "id": "kdkrkwhr_github_com_no_personal_info",
      "type": "design",
      "title": "공개 범위: 연락처·개별 경력 서술 비복제",
      "summary": "원본 README·데이터에 개인 식별 정보가 있을 수 있으므로 위키는 블로그 구조와 소스 경계만 연결한다.",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "documents": [
        "wiki/kdkrkwhr.github.com.html"
      ]
    },
    {
      "id": "resume_privacy_boundary",
      "type": "design",
      "title": "게시와 개인정보 경계",
      "summary": "README가 공개 직책·기간·링크 사전 확인과 회사 저장소 복사 금지를 명시. 공개된 이력서가 다른 자료의 재공개 승인은 아니다.",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "documents": [
        "wiki/resume.html"
      ]
    },
    {
      "id": "resume_relative_css_path",
      "type": "design",
      "title": "상대 경로 스타일 로드 (project·user Pages 모두 고려)",
      "summary": "",
      "origin": "extracted",
      "community": "정적 공개 페이지",
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "documents": [
        "wiki/resume.html"
      ]
    },
    {
      "id": "concept_multipart_upload",
      "type": "concept",
      "title": "multipart 파일 업로드",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "concept_s3",
      "type": "concept",
      "title": "S3",
      "summary": "",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "image_storage_localfilewebconfig",
      "type": "concept",
      "title": "LocalFileWebConfig",
      "summary": "설정된 URL 패턴을 로컬 저장 루트에 매핑. 서비스가 만든 URL과 함께 봐야 조회 경로가 보인다.",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "image_storage_localimagestorageservice",
      "type": "concept",
      "title": "LocalImageStorageService",
      "summary": "빈 파일·콘텐츠 유형·최대 크기 검사, JPEG·PNG·WebP·GIF 허용, items 아래 UUID 이름으로 복사.",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "image_storage_localuploadcontroller",
      "type": "concept",
      "title": "LocalUploadController",
      "summary": "multipart 파일을 받아 서비스에 전달하고 저장 URL을 응답.",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "concept_local_disk_image_storage",
      "type": "design",
      "title": "API 서버 로컬 디스크 이미지 저장",
      "summary": "설계 문서의 S3와 달리 현재 API는 서버 로컬 디스크에 저장해 여러 인스턴스의 파일 공유를 보장하지 않는다. 변경 이유는 미확인.",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-bid",
        "auction-cache",
        "auction-fcm",
        "auction-files",
        "auction-geo",
        "auction-lifecycle",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/auction-spot.html",
        "wiki/image-storage.html"
      ]
    },
    {
      "id": "image_storage_local_disk_vs_s3",
      "type": "design",
      "title": "로컬 디스크 저장 vs S3 설계",
      "summary": "MIME 검사만으로 파일 안전성을 확정할 수 없고, 파일 URL의 운영 접근 제어·배포 구성과 S3와 다르게 구현한 이유는 세 파일만으로 확정하지 않는다.",
      "origin": "extracted",
      "community": "로컬 이미지 저장",
      "evidence": [
        "auction-files",
        "auction-readme",
        "auction-storage",
        "auction-upload"
      ],
      "documents": [
        "wiki/image-storage.html"
      ]
    }
  ],
  "relations": [
    {
      "id": "r-notebuddy-python-execution",
      "from": "notebuddy",
      "to": "python-execution",
      "label": "웹과 Anna가 Python 전이 함수를 호출",
      "origin": "curated",
      "evidence": [
        "notebuddy-api",
        "notebuddy-web",
        "notebuddy-anna"
      ]
    },
    {
      "id": "r-auction-spot-image-storage",
      "from": "auction-spot",
      "to": "image-storage",
      "label": "이미지를 API 서버의 로컬 디스크에 저장·제공",
      "origin": "curated",
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ]
    },
    {
      "id": "r-auction-spot-front-auction-spot",
      "from": "auction-spot-front",
      "to": "auction-spot",
      "label": "입찰 요청·실시간 경매 이벤트와 이미지 업로드가 API 기능에 대응",
      "origin": "curated",
      "evidence": [
        "front-auction",
        "front-ws",
        "front-upload",
        "auction-bid",
        "auction-upload"
      ]
    },
    {
      "id": "r-agent-hub-local-queue",
      "from": "agent-hub",
      "to": "local-queue",
      "label": "에이전트 작업을 SQLite 큐에 기록하고 CLI로 실행",
      "origin": "curated",
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage"
      ]
    },
    {
      "id": "r-hermes-agent-area-attendance-pwa",
      "from": "hermes-agent-area",
      "to": "attendance-pwa",
      "label": "desk-brief가 날씨·뉴스 JSON을 선택적으로 읽고 없으면 cron 결과로 대체",
      "origin": "curated",
      "evidence": [
        "area-server"
      ]
    },
    {
      "id": "r-msa-architecture-spring-boot",
      "from": "msa-architecture",
      "to": "spring-boot",
      "label": "Spring Boot 기반 서비스 발견과 게이트웨이 실험",
      "origin": "curated",
      "evidence": [
        "msa-architecture-1"
      ]
    },
    {
      "id": "r-spring-react-template-spring-boot",
      "from": "spring-react-template",
      "to": "spring-boot",
      "label": "Spring Boot 백엔드 골격을 포함",
      "origin": "curated",
      "evidence": [
        "spring-react-template-1"
      ]
    },
    {
      "id": "r-airport-parking-spring-boot",
      "from": "airport-parking",
      "to": "spring-boot",
      "label": "Spring Boot로 작성한 주차 정보 실험",
      "origin": "curated",
      "evidence": [
        "airport-parking-1"
      ]
    },
    {
      "id": "r-flutter-profile-resume",
      "from": "flutter-profile",
      "to": "resume",
      "label": "개인 프로필을 표현하는 별도 화면 구현",
      "origin": "curated",
      "evidence": [
        "flutter-profile-1"
      ]
    },
    {
      "id": "r-dl-object-detecting-dl-object-tracking",
      "from": "dl-object-detecting",
      "to": "dl-object-tracking",
      "label": "YOLO와 SSD라는 다른 검출 접근을 기록",
      "origin": "curated",
      "evidence": [
        "dl-object-detecting-1"
      ]
    },
    {
      "id": "r-kdkrkwhr.github.com-agent-hub",
      "from": "kdkrkwhr.github.com",
      "to": "agent-hub",
      "label": "블로그 프로젝트 목록이 agent-hub를 연결",
      "origin": "curated",
      "evidence": [
        "kdkrkwhr.github.com-3"
      ]
    },
    {
      "id": "r-kdkrkwhr-agent-hub",
      "from": "kdkrkwhr",
      "to": "agent-hub",
      "label": "프로필 README에서 선택 프로젝트로 연결",
      "origin": "curated",
      "evidence": [
        "kdkrkwhr-1"
      ]
    },
    {
      "id": "r-kdk-knowledge-standards",
      "from": "kdk-knowledge",
      "to": "standards",
      "label": "개발 기준을 한 참고 자료로 문서화",
      "origin": "curated",
      "evidence": [
        "kdk-knowledge-1"
      ]
    },
    {
      "id": "r-AgentRadio-agent-hub",
      "from": "AgentRadio",
      "to": "agent-hub",
      "label": "다중 에이전트 협업 주제의 별도 upstream fork",
      "origin": "curated",
      "evidence": [
        "AgentRadio-1"
      ]
    },
    {
      "id": "x-1",
      "from": "hermes_team_hub_team_hub_cli",
      "to": "hermes_team_hub_jsonl_model",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-2",
      "from": "image_storage_localuploadcontroller",
      "to": "image_storage_localimagestorageservice",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-3",
      "from": "local_queue_engine",
      "to": "local_queue_adapters",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-4",
      "from": "msa_architecture_flask_service",
      "to": "concept_py_eureka_client",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-5",
      "from": "notebuddy_anna_game_worker",
      "to": "notebuddy_transition",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-6",
      "from": "notebuddy_gameapplication",
      "to": "notebuddy_transition",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-7",
      "from": "notebuddy_gameservice_invoke",
      "to": "notebuddy_anna_game_worker",
      "label": "호출",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-8",
      "from": "concept_hermes",
      "to": "concept_nousresearch",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-9",
      "from": "concept_local_disk_image_storage",
      "to": "image-storage",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-10",
      "from": "concept_public_demo_local_server_boundary",
      "to": "concept_local_websocket_blocked_on_https",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-11",
      "from": "hermes-team-hub",
      "to": "concept_github_pages",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-12",
      "from": "hermes_team_hub_local_app",
      "to": "concept_coral",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-13",
      "from": "hermes_team_hub_local_app",
      "to": "concept_hermes",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-14",
      "from": "hermes_team_hub_local_app",
      "to": "concept_python",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-15",
      "from": "image-storage",
      "to": "concept_java",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-16",
      "from": "image-storage",
      "to": "concept_s3",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-19",
      "from": "kdk_knowledge_build_wiki",
      "to": "concept_markdown",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-20",
      "from": "kdk-knowledge",
      "to": "concept_graphify",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-21",
      "from": "kdkrkwhr.github.com",
      "to": "concept_github_pages",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-22",
      "from": "kdkrkwhr.github.com",
      "to": "concept_markdown",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-23",
      "from": "kdkrkwhr",
      "to": "concept_kim_donggi",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "x-24",
      "from": "local-queue",
      "to": "concept_python",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-27",
      "from": "msa_architecture_flask_service",
      "to": "concept_eureka",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-28",
      "from": "msa-architecture",
      "to": "concept_java",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-29",
      "from": "notebuddy_web_worker",
      "to": "notebuddy_transition",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-30",
      "from": "python-execution",
      "to": "concept_indexeddb",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-31",
      "from": "python-execution",
      "to": "concept_pyodide",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-32",
      "from": "python-execution",
      "to": "concept_python",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-34",
      "from": "resume",
      "to": "concept_github_pages",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-35",
      "from": "spring-ai",
      "to": "concept_maven",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-36",
      "from": "spring-ai",
      "to": "concept_rag",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-37",
      "from": "spring-ai",
      "to": "concept_spring_ai",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-38",
      "from": "spring-boot",
      "to": "concept_gradle",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-39",
      "from": "spring-boot",
      "to": "concept_java",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-40",
      "from": "spring-boot",
      "to": "concept_jwt",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-41",
      "from": "spring-boot",
      "to": "concept_kafka",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-42",
      "from": "spring-boot",
      "to": "concept_redis",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-43",
      "from": "spring-react-template",
      "to": "concept_gradle",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-44",
      "from": "spring-react-template",
      "to": "concept_java",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-45",
      "from": "spring-react-template",
      "to": "concept_kafka",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-46",
      "from": "spring-react-template",
      "to": "concept_redis",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-47",
      "from": "spring_react_template_usercontroller",
      "to": "concept_spring_security",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-48",
      "from": "standards_python_profile",
      "to": "concept_python",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-49",
      "from": "standards_spring_boot_profile",
      "to": "concept_spring_boot",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-50",
      "from": "standards",
      "to": "concept_graphify",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-51",
      "from": "agent-hub",
      "to": "concept_sqlite",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-52",
      "from": "attendance-pwa",
      "to": "concept_pwa",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-53",
      "from": "attendance-pwa",
      "to": "concept_service_worker",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-54",
      "from": "auction-spot-front",
      "to": "concept_stomp",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-55",
      "from": "auction-spot-front",
      "to": "concept_dio",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-56",
      "from": "auction-spot",
      "to": "concept_redis",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-57",
      "from": "dl-data-training",
      "to": "concept_cnn",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "x-58",
      "from": "dl-object-detecting",
      "to": "concept_yolo_v3",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-59",
      "from": "dl-object-tracking",
      "to": "concept_tfrecord",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-60",
      "from": "flask-leaflet",
      "to": "concept_flask",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-61",
      "from": "hermes-agent-area",
      "to": "concept_phaser",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-62",
      "from": "hermes-agent-area",
      "to": "concept_fastapi",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-63",
      "from": "hermes-agent",
      "to": "concept_github_actions",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-64",
      "from": "hermes-env",
      "to": "concept_bash_shell",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-65",
      "from": "hermes_team_hub_hubstore",
      "to": "concept_localstorage",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-66",
      "from": "hermes_team_hub_jsonl_model",
      "to": "concept_jsonl",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-67",
      "from": "hermes_team_hub_local_app",
      "to": "concept_threadinghttpserver",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-68",
      "from": "image_storage_localuploadcontroller",
      "to": "concept_multipart_upload",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-69",
      "from": "kdk_knowledge_build_wiki",
      "to": "concept_python",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-70",
      "from": "kdk_knowledge_validate",
      "to": "concept_python",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-71",
      "from": "kdkrkwhr.github.com",
      "to": "concept_jekyll",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-72",
      "from": "kdkrkwhr.github.com",
      "to": "concept_kramdown",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-73",
      "from": "kdkrkwhr_github_com_publish_blog",
      "to": "concept_python",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-74",
      "from": "local_queue_adapters",
      "to": "concept_cli_subprocess",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-75",
      "from": "local_queue_engine",
      "to": "concept_sqlite",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-76",
      "from": "msa_architecture_flask_service",
      "to": "concept_flask",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-77",
      "from": "msa-architecture",
      "to": "concept_eureka",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-78",
      "from": "msa-architecture",
      "to": "concept_spring_boot",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-79",
      "from": "msa-architecture",
      "to": "concept_zuul",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-80",
      "from": "msa_architecture_prefilter",
      "to": "concept_zuul",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-81",
      "from": "notebuddy_gameapplication",
      "to": "concept_compare_and_set",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-82",
      "from": "notebuddy_gameservice_invoke",
      "to": "concept_anna_aps",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-83",
      "from": "notebuddy_transition",
      "to": "concept_python",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-84",
      "from": "notebuddy_web_store",
      "to": "concept_compare_and_set",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-85",
      "from": "notebuddy_web_store",
      "to": "concept_indexeddb",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-86",
      "from": "notebuddy_web_worker",
      "to": "concept_javascript_worker",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-87",
      "from": "notebuddy_web_worker",
      "to": "concept_pyodide",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-88",
      "from": "resume",
      "to": "concept_html_css",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-89",
      "from": "spring_boot_bookservice",
      "to": "concept_elasticsearch",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-90",
      "from": "spring_boot_crawlerutil_findbytag",
      "to": "concept_jsoup",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-91",
      "from": "spring_boot_fcmserverservice",
      "to": "concept_fcm",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-92",
      "from": "spring-boot",
      "to": "concept_spring_boot",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-93",
      "from": "spring_react_template_securityconfig",
      "to": "concept_spring_security",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-94",
      "from": "spring-react-template",
      "to": "concept_react",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-95",
      "from": "spring-react-template",
      "to": "concept_spring_boot",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-96",
      "from": "standards_docs_workflow",
      "to": "concept_github_actions",
      "label": "구현",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-97",
      "from": "concept_api_key_in_localstorage_risk",
      "to": "attendance-pwa",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-98",
      "from": "concept_client_side_api_key_exposure",
      "to": "flask-leaflet",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-99",
      "from": "concept_debug_bind_all_interfaces_risk",
      "to": "flask-leaflet",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-100",
      "from": "concept_desk_brief_optional_pwa_fallback",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-101",
      "from": "concept_display_name_resolution_order",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-102",
      "from": "concept_fork_attribution_boundary",
      "to": "AgentRadio",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3"
      ],
      "document": "wiki/AgentRadio.html"
    },
    {
      "id": "x-103",
      "from": "concept_fork_attribution_boundary",
      "to": "hermes-agent",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-104",
      "from": "concept_geo_fallback_fixed_region_risk",
      "to": "auction-spot",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-105",
      "from": "concept_hardcoded_paths_hyperparams",
      "to": "dl-data-training",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "x-106",
      "from": "concept_hardcoded_paths_hyperparams",
      "to": "dl-object-detecting",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-107",
      "from": "concept_hardcoded_paths_hyperparams",
      "to": "dl-object-tracking",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-108",
      "from": "concept_local_disk_image_storage",
      "to": "auction-spot",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-109",
      "from": "concept_local_first_not_offline",
      "to": "agent-hub",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-110",
      "from": "concept_local_record_optional_network_boundary",
      "to": "attendance-pwa",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-111",
      "from": "concept_local_websocket_blocked_on_https",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-112",
      "from": "concept_loopback_csrf_boundary",
      "to": "agent-hub",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-113",
      "from": "concept_opencv_version_coupling",
      "to": "dl-tesseract",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-114",
      "from": "concept_path_prefix_check_weakness",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-115",
      "from": "concept_preserve_existing_config_idempotency",
      "to": "hermes-env",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-116",
      "from": "concept_public_demo_local_server_boundary",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-117",
      "from": "concept_readme_vs_implementation_gap",
      "to": "auction-spot",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-118",
      "from": "concept_row_lock_bid_validation",
      "to": "auction-spot",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-119",
      "from": "concept_sandbox_ca_trust_isolation",
      "to": "hermes-agent",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-120",
      "from": "concept_silent_failure_empty_catch",
      "to": "airport-parking",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-121",
      "from": "concept_step_boundary_message_buffering",
      "to": "agent-drift-guard",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "drift-readme",
        "drift-buffer",
        "drift-inject",
        "drift-test",
        "drift-hook",
        "drift-session"
      ],
      "document": "wiki/agent-drift-guard.html"
    },
    {
      "id": "x-122",
      "from": "concept_token_refresh_reentrancy",
      "to": "auction-spot-front",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-123",
      "from": "concept_unknown_label_silent_pass",
      "to": "dl-object-tracking",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-124",
      "from": "concept_workspace_copy_export_boundary",
      "to": "agent-hub",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-125",
      "from": "hermes_team_hub_cli_allowlist",
      "to": "hermes_team_hub_local_app",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-126",
      "from": "hermes_team_hub_get_state_change_risk",
      "to": "hermes_team_hub_local_app",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-127",
      "from": "hermes_team_hub_shared_filter_state",
      "to": "hermes-team-hub",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-128",
      "from": "hermes_team_hub_static_demo_vs_local_runtime",
      "to": "hermes-team-hub",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-129",
      "from": "image_storage_local_disk_vs_s3",
      "to": "image-storage",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-131",
      "from": "kdk_knowledge_source_pinning_vs_commentary",
      "to": "kdk-knowledge",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-132",
      "from": "kdkrkwhr_github_com_no_personal_info",
      "to": "kdkrkwhr.github.com",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-133",
      "from": "kdkrkwhr_profile_entry_vs_wiki",
      "to": "kdkrkwhr",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "x-134",
      "from": "local_queue_local_not_offline",
      "to": "local-queue",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-135",
      "from": "local_queue_restart_dedupe",
      "to": "local_queue_engine",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-136",
      "from": "local_queue_sqlite_work_queue",
      "to": "local-queue",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-139",
      "from": "msa_architecture_untrusted_crawl_input",
      "to": "msa_architecture_flask_service",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-140",
      "from": "msa_architecture_zuul_routing",
      "to": "msa-architecture",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-141",
      "from": "notebuddy_aps_first_create_race",
      "to": "notebuddy_gameservice_invoke",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-142",
      "from": "notebuddy_transition_storage_separation",
      "to": "notebuddy",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-143",
      "from": "notebuddy_user_chooses_evolution",
      "to": "notebuddy_evolution",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-144",
      "from": "python_execution_shared_entrypoint",
      "to": "python-execution",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-147",
      "from": "resume_privacy_boundary",
      "to": "resume",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-148",
      "from": "resume_relative_css_path",
      "to": "resume",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-149",
      "from": "spring_ai_no_fork_commits",
      "to": "spring-ai",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-150",
      "from": "spring_boot_crawler_swallows_errors",
      "to": "spring_boot_crawlerutil_findbytag",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-151",
      "from": "spring_react_template_frontend_placeholder",
      "to": "spring-react-template",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-152",
      "from": "standards_optional_profiles",
      "to": "standards",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-153",
      "from": "standards_reference_not_adoption",
      "to": "standards",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-154",
      "from": "agent-drift-guard",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "drift-readme",
        "drift-buffer",
        "drift-inject",
        "drift-test",
        "drift-hook",
        "drift-session"
      ],
      "document": "wiki/agent-drift-guard.html"
    },
    {
      "id": "x-155",
      "from": "agent-drift-guard",
      "to": "concept_hermes",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "drift-readme",
        "drift-buffer",
        "drift-inject",
        "drift-test",
        "drift-hook",
        "drift-session"
      ],
      "document": "wiki/agent-drift-guard.html"
    },
    {
      "id": "x-156",
      "from": "agent-hub",
      "to": "concept_github_actions",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-157",
      "from": "agent-hub",
      "to": "local-queue",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-158",
      "from": "agent-hub",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-159",
      "from": "agent-hub",
      "to": "concept_sqlite",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-160",
      "from": "agent-hub",
      "to": "concept_claude_code",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-161",
      "from": "agent-hub",
      "to": "concept_codex_cli",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-162",
      "from": "agent-hub",
      "to": "concept_coral_protocol",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-163",
      "from": "agent-hub",
      "to": "concept_cursor_agent",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-164",
      "from": "AgentRadio",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3"
      ],
      "document": "wiki/AgentRadio.html"
    },
    {
      "id": "x-165",
      "from": "AgentRadio",
      "to": "concept_coral_protocol",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3"
      ],
      "document": "wiki/AgentRadio.html"
    },
    {
      "id": "x-166",
      "from": "airport-parking",
      "to": "concept_kakao_api",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-167",
      "from": "airport-parking",
      "to": "concept_redis",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-168",
      "from": "airport-parking",
      "to": "concept_gradle",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-169",
      "from": "airport-parking",
      "to": "concept_spring_boot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-170",
      "from": "airport-parking",
      "to": "msa-architecture",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-171",
      "from": "airport-parking",
      "to": "concept_java",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-172",
      "from": "algorithms",
      "to": "concept_java",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "algorithms-1"
      ],
      "document": "wiki/algorithms.html"
    },
    {
      "id": "x-173",
      "from": "attendance-pwa",
      "to": "concept_google_sheets",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-174",
      "from": "attendance-pwa",
      "to": "concept_github_actions",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-175",
      "from": "attendance-pwa",
      "to": "concept_github_pages",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-176",
      "from": "auction-spot",
      "to": "concept_java",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-177",
      "from": "auction-spot",
      "to": "concept_jwt",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-178",
      "from": "auction-spot",
      "to": "concept_mysql",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-179",
      "from": "auction-spot",
      "to": "concept_redis",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-180",
      "from": "auction-spot",
      "to": "concept_spring_boot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-181",
      "from": "auction-spot",
      "to": "concept_stomp",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-182",
      "from": "auction-spot",
      "to": "concept_websocket",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-183",
      "from": "auction-spot",
      "to": "image-storage",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-184",
      "from": "auction-spot",
      "to": "notebuddy",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-185",
      "from": "auction-spot",
      "to": "concept_firebase",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-186",
      "from": "auction-spot-front",
      "to": "auction-spot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-187",
      "from": "auction-spot-front",
      "to": "concept_firebase",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-188",
      "from": "auction-spot-front",
      "to": "concept_flutter",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-189",
      "from": "auction-spot-front",
      "to": "concept_go_router",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-190",
      "from": "auction-spot-front",
      "to": "concept_riverpod",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-191",
      "from": "auction-spot",
      "to": "concept_kakao_api",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-192",
      "from": "dl-data-training",
      "to": "dl-object-tracking",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "x-193",
      "from": "dl-data-training",
      "to": "concept_keras",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "x-194",
      "from": "dl-object-detecting",
      "to": "concept_opencv",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-195",
      "from": "dl-object-detecting",
      "to": "dl-object-tracking",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-196",
      "from": "dl-object-detecting",
      "to": "concept_keras",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-197",
      "from": "dl-object-detecting",
      "to": "concept_tensorflow",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-198",
      "from": "dl-object-tracking",
      "to": "concept_opencv",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-199",
      "from": "dl-object-tracking",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-200",
      "from": "dl-object-tracking",
      "to": "concept_ssd_detector",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-201",
      "from": "dl-object-tracking",
      "to": "concept_tensorflow",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-202",
      "from": "dl-object-tracking",
      "to": "concept_tf_object_detection_api",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-object-tracking-1",
        "dl-object-tracking-2",
        "dl-object-tracking-3"
      ],
      "document": "wiki/dl-object-tracking.html"
    },
    {
      "id": "x-203",
      "from": "dl-tesseract",
      "to": "dl-object-detecting",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-204",
      "from": "dl-tesseract",
      "to": "concept_opencv",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-205",
      "from": "dl-tesseract",
      "to": "concept_tesseract",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-206",
      "from": "flask-leaflet",
      "to": "concept_jinja",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-207",
      "from": "flask-leaflet",
      "to": "concept_geojson",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-208",
      "from": "flask-leaflet",
      "to": "concept_leaflet",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-209",
      "from": "flutter-profile",
      "to": "resume",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-210",
      "from": "flutter-profile",
      "to": "concept_devfolio",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-211",
      "from": "flutter-profile",
      "to": "concept_flutter",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-212",
      "from": "flutter-profile",
      "to": "concept_provider_flutter",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-213",
      "from": "flutter-profile",
      "to": "concept_responsive_builder",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-214",
      "from": "hermes-agent-area",
      "to": "hermes-env",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-215",
      "from": "hermes-agent-area",
      "to": "attendance-pwa",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-216",
      "from": "hermes-agent-area",
      "to": "concept_github_pages",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-217",
      "from": "hermes-agent-area",
      "to": "concept_fastapi",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-218",
      "from": "hermes-agent-area",
      "to": "concept_hermes",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-219",
      "from": "hermes-agent-area",
      "to": "concept_phaser",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-220",
      "from": "hermes-agent-area",
      "to": "concept_vite",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-221",
      "from": "hermes-agent-area",
      "to": "concept_websocket",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-222",
      "from": "hermes-agent-area",
      "to": "concept_service_worker",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-223",
      "from": "hermes-agent-area",
      "to": "concept_discord",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-224",
      "from": "hermes-agent-area",
      "to": "concept_sqlite",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-225",
      "from": "hermes-agent-area",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-226",
      "from": "hermes-agent",
      "to": "concept_hermes",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-227",
      "from": "hermes-agent",
      "to": "concept_nousresearch",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-228",
      "from": "hermes-agent",
      "to": "hermes-agent-area",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-229",
      "from": "hermes-agent",
      "to": "hermes-env",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-230",
      "from": "hermes-agent",
      "to": "hermes-team-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-231",
      "from": "hermes-agent",
      "to": "concept_npm",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-232",
      "from": "hermes-env",
      "to": "concept_role_profiles_pm_dev_infra_qa_ops",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-233",
      "from": "hermes-env",
      "to": "concept_ssot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-234",
      "from": "hermes-env",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-235",
      "from": "hermes-env",
      "to": "concept_coral_protocol",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-236",
      "from": "hermes-env",
      "to": "concept_hermes",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-237",
      "from": "hermes-team-hub",
      "to": "hermes_team_hub_hubstore",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-238",
      "from": "hermes-team-hub",
      "to": "hermes_team_hub_local_app",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-239",
      "from": "hermes-team-hub",
      "to": "hermes_team_hub_team_hub_cli",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-240",
      "from": "hermes-team-hub",
      "to": "hermes-env",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-241",
      "from": "image-storage",
      "to": "image_storage_localfilewebconfig",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-242",
      "from": "image-storage",
      "to": "image_storage_localuploadcontroller",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    },
    {
      "id": "x-275",
      "from": "kdk-knowledge",
      "to": "kdk_knowledge_validate",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-278",
      "from": "kdk-knowledge",
      "to": "kdk_knowledge_build_wiki",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-279",
      "from": "kdk-knowledge",
      "to": "standards",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-280",
      "from": "kdkrkwhr.github.com",
      "to": "kdkrkwhr_github_com_publish_blog",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-281",
      "from": "kdkrkwhr.github.com",
      "to": "notebuddy",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-282",
      "from": "kdkrkwhr.github.com",
      "to": "kdkrkwhr_github_com_projects_yml",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-283",
      "from": "kdkrkwhr.github.com",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr.github.com-1",
        "kdkrkwhr.github.com-2",
        "kdkrkwhr.github.com-3",
        "kdkrkwhr.github.com-4"
      ],
      "document": "wiki/kdkrkwhr.github.com.html"
    },
    {
      "id": "x-285",
      "from": "kdkrkwhr",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "x-290",
      "from": "msa-architecture",
      "to": "spring-boot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-291",
      "from": "msa-architecture",
      "to": "msa_architecture_flask_service",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-292",
      "from": "msa-architecture",
      "to": "msa_architecture_prefilter",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "msa-architecture-1",
        "msa-architecture-2",
        "msa-architecture-3",
        "msa-architecture-4",
        "msa-architecture-5"
      ],
      "document": "wiki/msa-architecture.html"
    },
    {
      "id": "x-293",
      "from": "notebuddy",
      "to": "python-execution",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-294",
      "from": "notebuddy",
      "to": "notebuddy_anna_game_worker",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-295",
      "from": "notebuddy",
      "to": "notebuddy_evolution",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-296",
      "from": "notebuddy",
      "to": "notebuddy_gameapplication",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-297",
      "from": "notebuddy",
      "to": "notebuddy_transition",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-298",
      "from": "notebuddy",
      "to": "notebuddy_web_store",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-299",
      "from": "notebuddy",
      "to": "notebuddy_web_worker",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-300",
      "from": "python-execution",
      "to": "notebuddy_anna_game_worker",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-301",
      "from": "python-execution",
      "to": "notebuddy_web_store",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-302",
      "from": "python-execution",
      "to": "notebuddy_web_worker",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-303",
      "from": "python-execution",
      "to": "notebuddy_executioncontext",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-304",
      "from": "python-execution",
      "to": "notebuddy_transition",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-store"
      ],
      "document": "wiki/python-execution.html"
    },
    {
      "id": "x-331",
      "from": "resume",
      "to": "kdkrkwhr.github.com",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-332",
      "from": "spring-ai",
      "to": "spring-boot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-333",
      "from": "spring-ai",
      "to": "standards",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-334",
      "from": "spring-boot",
      "to": "spring_boot_bookservice",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-335",
      "from": "spring-boot",
      "to": "spring_boot_crawlerutil_findbytag",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-336",
      "from": "spring-boot",
      "to": "spring_boot_fcmserverservice",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-337",
      "from": "spring-boot",
      "to": "spring-react-template",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-338",
      "from": "spring-react-template",
      "to": "standards",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-339",
      "from": "spring-react-template",
      "to": "spring_react_template_securityconfig",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-340",
      "from": "spring-react-template",
      "to": "spring_react_template_usercontroller",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-341",
      "from": "standards",
      "to": "standards_build_wiki",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-342",
      "from": "standards",
      "to": "standards_check_docs",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-343",
      "from": "standards",
      "to": "standards_docs_workflow",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-344",
      "from": "standards",
      "to": "standards_python_profile",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-345",
      "from": "standards",
      "to": "standards_spring_boot_profile",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-346",
      "from": "standards",
      "to": "agent-hub",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-347",
      "from": "standards",
      "to": "auction-spot",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-348",
      "from": "standards",
      "to": "notebuddy",
      "label": "참조",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-349",
      "from": "airport-parking",
      "to": "concept_redis",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-350",
      "from": "attendance-pwa",
      "to": "concept_localstorage",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-351",
      "from": "auction-spot-front",
      "to": "auction-spot",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-352",
      "from": "local_queue_engine",
      "to": "local_queue_storage",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-353",
      "from": "notebuddy_transition",
      "to": "notebuddy_executioncontext",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "EXTRACTED",
      "score": 1.0,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-354",
      "from": "concept_role_profiles_pm_dev_infra_qa_ops",
      "to": "concept_display_name_resolution_order",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-355",
      "from": "agent-drift-guard",
      "to": "agent-hub",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "drift-readme",
        "drift-buffer",
        "drift-inject",
        "drift-test",
        "drift-hook",
        "drift-session"
      ],
      "document": "wiki/agent-drift-guard.html"
    },
    {
      "id": "x-356",
      "from": "auction-spot",
      "to": "airport-parking",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files",
        "auction-bid",
        "auction-lifecycle",
        "auction-cache",
        "auction-geo",
        "auction-fcm"
      ],
      "document": "wiki/auction-spot.html"
    },
    {
      "id": "x-357",
      "from": "dl-tesseract",
      "to": "dl-object-detecting",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-358",
      "from": "flutter-profile",
      "to": "auction-spot-front",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-359",
      "from": "hermes-env",
      "to": "hermes-agent",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "env-readme",
        "env-bootstrap",
        "env-agent-guide",
        "env-config",
        "env-conventions"
      ],
      "document": "wiki/hermes-env.html"
    },
    {
      "id": "x-360",
      "from": "hermes_team_hub_get_state_change_risk",
      "to": "spring_react_template_securityconfig",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.65,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-361",
      "from": "concept_fork_attribution_boundary",
      "to": "dl-object-detecting",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-362",
      "from": "concept_hardcoded_paths_hyperparams",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-363",
      "from": "concept_debug_bind_all_interfaces_risk",
      "to": "concept_loopback_csrf_boundary",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-364",
      "from": "concept_loopback_csrf_boundary",
      "to": "concept_public_demo_local_server_boundary",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-365",
      "from": "concept_silent_failure_empty_catch",
      "to": "concept_geo_fallback_fixed_region_risk",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-366",
      "from": "concept_silent_failure_empty_catch",
      "to": "concept_unknown_label_silent_pass",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "airport-parking-1",
        "airport-parking-2",
        "airport-parking-3",
        "airport-parking-4"
      ],
      "document": "wiki/airport-parking.html"
    },
    {
      "id": "x-367",
      "from": "hermes-agent-area",
      "to": "agent-hub",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-368",
      "from": "hermes_team_hub_get_state_change_risk",
      "to": "local_queue_local_not_offline",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-369",
      "from": "hermes_team_hub_hubstore",
      "to": "notebuddy_web_store",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-370",
      "from": "hermes_team_hub_local_app",
      "to": "local_queue_adapters",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "team-readme",
        "team-web",
        "team-store",
        "team-server",
        "team-cli",
        "team-model"
      ],
      "document": "wiki/hermes-team-hub.html"
    },
    {
      "id": "x-371",
      "from": "kdk_knowledge_source_pinning_vs_commentary",
      "to": "standards_reference_not_adoption",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "kdk-knowledge-1",
        "kdk-knowledge-2",
        "kdk-knowledge-3"
      ],
      "document": "wiki/kdk-knowledge.html"
    },
    {
      "id": "x-372",
      "from": "local_queue_restart_dedupe",
      "to": "notebuddy_gameapplication",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-storage",
        "agent-hub-security"
      ],
      "document": "wiki/local-queue.html"
    },
    {
      "id": "x-373",
      "from": "spring_boot_crawlerutil_findbytag",
      "to": "msa_architecture_flask_service",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "spring-boot-1",
        "spring-boot-2",
        "spring-boot-3",
        "spring-boot-4",
        "spring-boot-5",
        "spring-boot-6"
      ],
      "document": "wiki/spring-boot.html"
    },
    {
      "id": "x-374",
      "from": "standards_check_docs",
      "to": "kdk_knowledge_validate",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-375",
      "from": "hermes-agent-area",
      "to": "attendance-pwa",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.75,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-376",
      "from": "notebuddy_transition",
      "to": "notebuddy_evolution",
      "label": "호출",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-377",
      "from": "standards_docs_workflow",
      "to": "standards_build_wiki",
      "label": "호출",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-378",
      "from": "standards_docs_workflow",
      "to": "standards_check_docs",
      "label": "호출",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-379",
      "from": "AgentRadio",
      "to": "concept_python",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "AgentRadio-1",
        "AgentRadio-2",
        "AgentRadio-3"
      ],
      "document": "wiki/AgentRadio.html"
    },
    {
      "id": "x-380",
      "from": "kdkrkwhr",
      "to": "kdkrkwhr.github.com",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "x-381",
      "from": "kdkrkwhr",
      "to": "resume",
      "label": "개념 연관",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "kdkrkwhr-1"
      ],
      "document": "wiki/kdkrkwhr.html"
    },
    {
      "id": "x-382",
      "from": "concept_readme_vs_implementation_gap",
      "to": "attendance-pwa",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-383",
      "from": "concept_readme_vs_implementation_gap",
      "to": "auction-spot-front",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "front-readme",
        "front-main",
        "front-router",
        "front-dio",
        "front-auction",
        "front-ws",
        "front-upload",
        "front-pubspec",
        "front-starter",
        "front-constants",
        "auction-upload",
        "auction-bid"
      ],
      "document": "wiki/auction-spot-front.html"
    },
    {
      "id": "x-384",
      "from": "concept_readme_vs_implementation_gap",
      "to": "hermes-agent-area",
      "label": "설계 근거",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "area-readme",
        "area-package",
        "area-front",
        "area-connect",
        "area-mock",
        "area-scene",
        "area-server",
        "area-test"
      ],
      "document": "wiki/hermes-agent-area.html"
    },
    {
      "id": "x-385",
      "from": "concept_api_key_in_localstorage_risk",
      "to": "concept_client_side_api_key_exposure",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "attendance-readme",
        "attendance-app",
        "attendance-config",
        "attendance-sw",
        "attendance-commute",
        "attendance-news",
        "attendance-ci"
      ],
      "document": "wiki/attendance-pwa.html"
    },
    {
      "id": "x-386",
      "from": "concept_local_first_not_offline",
      "to": "concept_local_record_optional_network_boundary",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "agent-hub-readme",
        "agent-hub-entry",
        "agent-hub-server",
        "agent-hub-engine",
        "agent-hub-adapters",
        "agent-hub-discussion",
        "agent-hub-workspace",
        "hub-publication",
        "hub-web-app",
        "agent-hub-pipeline",
        "agent-hub-voting",
        "agent-hub-storage",
        "agent-hub-security",
        "agent-hub-project",
        "agent-hub-ci"
      ],
      "document": "wiki/agent-hub.html"
    },
    {
      "id": "x-387",
      "from": "concept_provider_flutter",
      "to": "concept_riverpod",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "flutter-profile-1",
        "flutter-profile-2",
        "flutter-profile-3",
        "flutter-profile-4",
        "flutter-profile-5"
      ],
      "document": "wiki/flutter-profile.html"
    },
    {
      "id": "x-388",
      "from": "concept_yolo_v3",
      "to": "concept_ssd_detector",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-390",
      "from": "notebuddy_gameapplication",
      "to": "notebuddy_gameservice_invoke",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-391",
      "from": "resume_privacy_boundary",
      "to": "kdkrkwhr_github_com_no_personal_info",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "resume-1",
        "resume-2",
        "resume-3"
      ],
      "document": "wiki/resume.html"
    },
    {
      "id": "x-392",
      "from": "spring_ai_no_fork_commits",
      "to": "repositories_static_not_execution",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "spring-ai-1",
        "spring-ai-2"
      ],
      "document": "wiki/spring-ai.html"
    },
    {
      "id": "x-393",
      "from": "standards_build_wiki",
      "to": "kdk_knowledge_build_wiki",
      "label": "유사 구조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "standards-current",
        "standards-python",
        "standards-spring",
        "standards-build",
        "standards-check",
        "standards-ci"
      ],
      "document": "wiki/standards.html"
    },
    {
      "id": "x-394",
      "from": "notebuddy_web_worker",
      "to": "notebuddy_web_store",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "notebuddy-readme",
        "notebuddy-api",
        "notebuddy-ports",
        "notebuddy-web",
        "notebuddy-anna",
        "notebuddy-anna-plugin",
        "notebuddy-store",
        "notebuddy-evolution"
      ],
      "document": "wiki/notebuddy.html"
    },
    {
      "id": "x-395",
      "from": "spring_react_template_usercontroller",
      "to": "spring_react_template_securityconfig",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.85,
      "evidence": [
        "spring-react-template-1",
        "spring-react-template-2",
        "spring-react-template-3",
        "spring-react-template-4",
        "spring-react-template-5",
        "spring-react-template-6"
      ],
      "document": "wiki/spring-react-template.html"
    },
    {
      "id": "x-397",
      "from": "algorithms",
      "to": "concept_baekjoon",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "algorithms-1"
      ],
      "document": "wiki/algorithms.html"
    },
    {
      "id": "x-398",
      "from": "dl-data-training",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "dl-data-training-1"
      ],
      "document": "wiki/dl-data-training.html"
    },
    {
      "id": "x-399",
      "from": "dl-object-detecting",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "dl-object-detecting-1",
        "dl-object-detecting-2",
        "dl-object-detecting-3",
        "dl-object-detecting-4"
      ],
      "document": "wiki/dl-object-detecting.html"
    },
    {
      "id": "x-400",
      "from": "dl-tesseract",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "dl-tesseract-1",
        "dl-tesseract-2"
      ],
      "document": "wiki/dl-tesseract.html"
    },
    {
      "id": "x-401",
      "from": "flask-leaflet",
      "to": "concept_python",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "flask-leaflet-1",
        "flask-leaflet-2",
        "flask-leaflet-3",
        "flask-leaflet-4"
      ],
      "document": "wiki/flask-leaflet.html"
    },
    {
      "id": "x-402",
      "from": "hermes-agent",
      "to": "concept_bash_shell",
      "label": "참조",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "hermes-agent-1",
        "hermes-agent-2",
        "hermes-agent-3",
        "hermes-agent-4",
        "hermes-agent-5"
      ],
      "document": "wiki/hermes-agent.html"
    },
    {
      "id": "x-403",
      "from": "image_storage_localimagestorageservice",
      "to": "image_storage_localfilewebconfig",
      "label": "데이터 공유",
      "origin": "extracted",
      "confidence": "INFERRED",
      "score": 0.95,
      "evidence": [
        "auction-readme",
        "auction-upload",
        "auction-storage",
        "auction-files"
      ],
      "document": "wiki/image-storage.html"
    }
  ]
}
