{
  "baseline_id": "0.3.0-core-contracts",
  "dependencies": {
    "declared_runtime_dependencies": [
      "alembic>=1.18,<2",
      "fastapi>=0.116,<1",
      "httpx>=0.28,<1",
      "jsonschema>=4.25.1,<4.27",
      "keyring>=25.7,<26",
      "platformdirs>=4.5,<5",
      "prompt-toolkit>=3.0.52,<4",
      "pydantic>=2.12,<3",
      "python-dateutil>=2.9,<3",
      "rapidfuzz>=3.14,<4",
      "rich>=15,<16",
      "sqlalchemy>=2.0,<3",
      "sqlcipher3>=0.6.2,<0.7",
      "sqlglot>=28,<31",
      "tomli-w>=1.2,<2",
      "uvicorn>=0.35,<1"
    ],
    "digest": "ca42369af4bacf89066cb79295bb52f4a50795bf3ddd88eb188e9b3c88dbb239",
    "lockfile_sha256": "01d59f2fcbca6cb028e3a51c5713407f67d14db45a963f1b28cd3bc8391b5418",
    "module_graph": {
      "ancestryllm": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "importlib"
        ]
      },
      "ancestryllm.__main__": {
        "external": [],
        "internal": [
          "ancestryllm.cli"
        ],
        "standard_library": []
      },
      "ancestryllm.api": {
        "external": [],
        "internal": [
          "ancestryllm.api.app",
          "ancestryllm.api.contracts",
          "ancestryllm.api.errors",
          "ancestryllm.api.server",
          "ancestryllm.api.settings"
        ],
        "standard_library": []
      },
      "ancestryllm.api.app": {
        "external": [
          "fastapi"
        ],
        "internal": [
          "ancestryllm.api.capabilities",
          "ancestryllm.api.contracts",
          "ancestryllm.api.errors",
          "ancestryllm.api.gedcom_intake",
          "ancestryllm.api.middleware",
          "ancestryllm.api.settings",
          "ancestryllm.application.executor",
          "ancestryllm.application.gedcom_jobs",
          "ancestryllm.application.jobs",
          "ancestryllm.application.secret_management",
          "ancestryllm.application.settings",
          "ancestryllm.core.errors",
          "ancestryllm.llm.chat",
          "ancestryllm.llm.chat_streaming",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.endpoint_validation",
          "ancestryllm.llm.provider_configuration",
          "ancestryllm.storage.diagnostics"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "json",
          "typing"
        ]
      },
      "ancestryllm.api.capabilities": {
        "external": [],
        "internal": [
          "ancestryllm.api.contracts",
          "ancestryllm.api.settings",
          "ancestryllm.application.executor",
          "ancestryllm.core.commands"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "hashlib",
          "hmac",
          "typing"
        ]
      },
      "ancestryllm.api.contracts": {
        "external": [
          "pydantic"
        ],
        "internal": [
          "ancestryllm.application.chat",
          "ancestryllm.application.dto",
          "ancestryllm.application.operations"
        ],
        "standard_library": [
          "__future__",
          "json",
          "math",
          "typing"
        ]
      },
      "ancestryllm.api.errors": {
        "external": [
          "fastapi"
        ],
        "internal": [
          "ancestryllm.api.contracts",
          "ancestryllm.application.errors",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "secrets"
        ]
      },
      "ancestryllm.api.gedcom_intake": {
        "external": [],
        "internal": [
          "ancestryllm.application._artifacts",
          "ancestryllm.application.dto",
          "ancestryllm.application.gedcom_jobs",
          "ancestryllm.application.jobs",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "pathlib",
          "re",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.api.middleware": {
        "external": [
          "starlette"
        ],
        "internal": [
          "ancestryllm.api.contracts",
          "ancestryllm.api.errors",
          "ancestryllm.api.settings"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "hmac",
          "re",
          "typing"
        ]
      },
      "ancestryllm.api.openapi": {
        "external": [
          "fastapi"
        ],
        "internal": [
          "ancestryllm.api.app",
          "ancestryllm.api.gedcom_intake",
          "ancestryllm.api.settings",
          "ancestryllm.application.executor",
          "ancestryllm.application.gedcom_jobs",
          "ancestryllm.application.secret_management",
          "ancestryllm.application.settings",
          "ancestryllm.core.commands",
          "ancestryllm.core.config",
          "ancestryllm.core.secrets"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "json",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.api.server": {
        "external": [
          "starlette",
          "uvicorn"
        ],
        "internal": [],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.api.settings": {
        "external": [],
        "internal": [
          "ancestryllm.api.contracts"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "re"
        ]
      },
      "ancestryllm.api.sidecar": {
        "external": [
          "fastapi",
          "platformdirs",
          "uvicorn"
        ],
        "internal": [
          "ancestryllm.api.app",
          "ancestryllm.api.contracts",
          "ancestryllm.api.gedcom_intake",
          "ancestryllm.api.server",
          "ancestryllm.api.settings",
          "ancestryllm.application._artifacts",
          "ancestryllm.application.executor",
          "ancestryllm.application.gedcom_jobs",
          "ancestryllm.application.jobs",
          "ancestryllm.application.secret_management",
          "ancestryllm.application.settings",
          "ancestryllm.core.commands",
          "ancestryllm.core.config",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs",
          "ancestryllm.core.secrets",
          "ancestryllm.gedcom.service",
          "ancestryllm.llm.chat",
          "ancestryllm.llm.chat_streaming",
          "ancestryllm.llm.endpoint_validation",
          "ancestryllm.llm.profiles",
          "ancestryllm.llm.provider_configuration",
          "ancestryllm.llm.registry",
          "ancestryllm.llm.service",
          "ancestryllm.observability.structured_diagnostics",
          "ancestryllm.storage.database",
          "ancestryllm.storage.diagnostics",
          "ancestryllm.storage.job_events"
        ],
        "standard_library": [
          "__future__",
          "asyncio",
          "collections",
          "contextlib",
          "ctypes",
          "dataclasses",
          "json",
          "os",
          "pathlib",
          "socket",
          "sys",
          "tempfile",
          "typing"
        ]
      },
      "ancestryllm.application": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.events",
          "ancestryllm.application.executor",
          "ancestryllm.application.genealogy",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.application.results"
        ],
        "standard_library": []
      },
      "ancestryllm.application._artifacts": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.ports",
          "ancestryllm.core.publication",
          "ancestryllm.domain.errors"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "hashlib",
          "os",
          "pathlib",
          "secrets",
          "stat",
          "typing"
        ]
      },
      "ancestryllm.application._compat": {
        "external": [],
        "internal": [
          "ancestryllm.application.events",
          "ancestryllm.core.cancellation",
          "ancestryllm.domain.errors"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.application._rootsmagic": {
        "external": [],
        "internal": [
          "ancestryllm.application.events",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.config",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.domain.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.service",
          "ancestryllm.rootsmagic.core"
        ],
        "standard_library": [
          "__future__",
          "json",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.application._rootsmagic_export": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.core.publication",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.serializer",
          "ancestryllm.gedcom.validator",
          "ancestryllm.rootsmagic.mapping"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "os",
          "pathlib",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.application._secrets": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "secrets",
          "threading"
        ]
      },
      "ancestryllm.application.chat": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "datetime",
          "enum",
          "math",
          "typing"
        ]
      },
      "ancestryllm.application.deployment": {
        "external": [],
        "internal": [
          "ancestryllm.core.deployment",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "copy",
          "dataclasses",
          "hashlib",
          "hmac",
          "ipaddress",
          "json",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.application.dto": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "enum",
          "json",
          "math",
          "types",
          "typing"
        ]
      },
      "ancestryllm.application.errors": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.core.errors",
          "ancestryllm.domain.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "types",
          "typing"
        ]
      },
      "ancestryllm.application.events": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.application.executor": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.results",
          "ancestryllm.core.commands",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "typing"
        ]
      },
      "ancestryllm.application.gedcom_jobs": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.errors",
          "ancestryllm.application.jobs",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs",
          "ancestryllm.domain.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "hashlib",
          "hmac",
          "json",
          "re",
          "secrets",
          "typing"
        ]
      },
      "ancestryllm.application.genealogy": {
        "external": [],
        "internal": [
          "ancestryllm.application.operations",
          "ancestryllm.domain.genealogy"
        ],
        "standard_library": [
          "__future__",
          "dataclasses"
        ]
      },
      "ancestryllm.application.jobs": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "enum",
          "math",
          "queue",
          "threading",
          "time",
          "typing"
        ]
      },
      "ancestryllm.application.mutations": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum",
          "re"
        ]
      },
      "ancestryllm.application.operations": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.core.commands"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "types",
          "typing"
        ]
      },
      "ancestryllm.application.ports": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.events",
          "ancestryllm.application.mutations",
          "ancestryllm.application.operations"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.application.results": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto"
        ],
        "standard_library": [
          "__future__",
          "abc",
          "dataclasses",
          "enum",
          "math",
          "typing"
        ]
      },
      "ancestryllm.application.secret_management": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.domain.secrets"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "typing"
        ]
      },
      "ancestryllm.application.settings": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "copy",
          "dataclasses",
          "math",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.cli": {
        "external": [],
        "internal": [
          "ancestryllm.application.results",
          "ancestryllm.core.commands",
          "ancestryllm.core.config",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.execution.common",
          "ancestryllm.terminal.dispatch",
          "ancestryllm.terminal.entrypoint",
          "ancestryllm.terminal.parser",
          "ancestryllm.terminal.presentation"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "getpass",
          "json",
          "pathlib",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.console": {
        "external": [],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.console.app": {
        "external": [
          "prompt_toolkit"
        ],
        "internal": [
          "ancestryllm.console.shell",
          "ancestryllm.core.context"
        ],
        "standard_library": [
          "__future__",
          "asyncio",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.console.completion": {
        "external": [
          "prompt_toolkit"
        ],
        "internal": [
          "ancestryllm.console.router",
          "ancestryllm.core.commands",
          "ancestryllm.core.secrets"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "os",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.console.history": {
        "external": [
          "prompt_toolkit"
        ],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "json",
          "os",
          "pathlib",
          "stat",
          "typing"
        ]
      },
      "ancestryllm.console.multiline": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.console.parser": {
        "external": [],
        "internal": [
          "ancestryllm.terminal.parser"
        ],
        "standard_library": []
      },
      "ancestryllm.console.presentation": {
        "external": [],
        "internal": [
          "ancestryllm.terminal.presentation"
        ],
        "standard_library": []
      },
      "ancestryllm.console.progress": {
        "external": [
          "rich"
        ],
        "internal": [
          "ancestryllm.core.jobs"
        ],
        "standard_library": [
          "__future__",
          "threading"
        ]
      },
      "ancestryllm.console.router": {
        "external": [],
        "internal": [
          "ancestryllm.application.results",
          "ancestryllm.console.parser",
          "ancestryllm.console.security",
          "ancestryllm.core.commands",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.core.help",
          "ancestryllm.core.modules"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum",
          "typing"
        ]
      },
      "ancestryllm.console.security": {
        "external": [],
        "internal": [
          "ancestryllm.core.commands"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "re",
          "shlex",
          "typing"
        ]
      },
      "ancestryllm.console.shell": {
        "external": [
          "prompt_toolkit"
        ],
        "internal": [
          "ancestryllm.application._compat",
          "ancestryllm.application.results",
          "ancestryllm.console.completion",
          "ancestryllm.console.history",
          "ancestryllm.console.multiline",
          "ancestryllm.console.parser",
          "ancestryllm.console.presentation",
          "ancestryllm.console.progress",
          "ancestryllm.console.router",
          "ancestryllm.console.security",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs",
          "ancestryllm.terminal.dispatch"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "asyncio",
          "contextlib",
          "pathlib",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.container_gateway": {
        "external": [
          "fastapi",
          "uvicorn"
        ],
        "internal": [
          "ancestryllm",
          "ancestryllm.api",
          "ancestryllm.application.executor",
          "ancestryllm.application.secret_management",
          "ancestryllm.application.settings",
          "ancestryllm.container_runtime",
          "ancestryllm.core.commands",
          "ancestryllm.core.config",
          "ancestryllm.core.secrets"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "pathlib",
          "secrets",
          "signal",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.container_healthcheck": {
        "external": [],
        "internal": [
          "ancestryllm",
          "ancestryllm.api",
          "ancestryllm.container_runtime"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "http",
          "json",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.container_inventory": {
        "external": [],
        "internal": [
          "ancestryllm.container_runtime"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "hashlib",
          "importlib",
          "json",
          "pathlib",
          "platform",
          "re",
          "typing"
        ]
      },
      "ancestryllm.container_runtime": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "contextlib",
          "errno",
          "os",
          "pathlib",
          "secrets"
        ]
      },
      "ancestryllm.container_worker": {
        "external": [],
        "internal": [
          "ancestryllm",
          "ancestryllm.container_runtime"
        ],
        "standard_library": [
          "__future__",
          "json",
          "signal",
          "sys",
          "threading"
        ]
      },
      "ancestryllm.core": {
        "external": [],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.core.atomic_file": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.mutations",
          "ancestryllm.core",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.mutation"
        ],
        "standard_library": [
          "__future__",
          "ctypes",
          "dataclasses",
          "hashlib",
          "msvcrt",
          "os",
          "pathlib",
          "re",
          "stat",
          "time",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.core.bundle_mutation": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.mutations",
          "ancestryllm.core",
          "ancestryllm.core.atomic_file",
          "ancestryllm.core.mutation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "dataclasses",
          "os",
          "pathlib",
          "re",
          "time",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.core.cancellation": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "contextvars",
          "dataclasses",
          "datetime",
          "logging",
          "threading",
          "time"
        ]
      },
      "ancestryllm.core.commands": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum"
        ]
      },
      "ancestryllm.core.config": {
        "external": [
          "platformdirs",
          "tomli_w"
        ],
        "internal": [
          "ancestryllm.core.atomic_file",
          "ancestryllm.core.deployment",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.core.mutation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "dataclasses",
          "math",
          "os",
          "pathlib",
          "tomllib",
          "typing"
        ]
      },
      "ancestryllm.core.context": {
        "external": [],
        "internal": [
          "ancestryllm.core.config",
          "ancestryllm.core.secrets",
          "ancestryllm.llm.profiles",
          "ancestryllm.llm.registry",
          "ancestryllm.llm.service",
          "ancestryllm.prompts.service",
          "ancestryllm.research.service",
          "ancestryllm.storage.database"
        ],
        "standard_library": [
          "__future__",
          "dataclasses"
        ]
      },
      "ancestryllm.core.deployment": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "enum",
          "re",
          "urllib"
        ]
      },
      "ancestryllm.core.directory_mutation": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.mutations",
          "ancestryllm.core",
          "ancestryllm.core.atomic_file",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.mutation"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "json",
          "os",
          "pathlib",
          "re",
          "sqlite3",
          "stat",
          "time",
          "typing",
          "unicodedata",
          "uuid"
        ]
      },
      "ancestryllm.core.errors": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "asyncio",
          "contextlib",
          "dataclasses",
          "typing"
        ]
      },
      "ancestryllm.core.help": {
        "external": [],
        "internal": [
          "ancestryllm.core.commands"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.core.ingress": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.publication"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "enum",
          "hashlib",
          "io",
          "json",
          "math",
          "os",
          "pathlib",
          "stat",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.core.jobs": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "concurrent",
          "contextlib",
          "dataclasses",
          "datetime",
          "enum",
          "hmac",
          "logging",
          "secrets",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.core.modules": {
        "external": [],
        "internal": [
          "ancestryllm.core.commands",
          "ancestryllm.core.context"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.core.mutation": {
        "external": [],
        "internal": [
          "ancestryllm.application.mutations",
          "ancestryllm.core.errors",
          "ancestryllm.core.windows_mutation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "dataclasses",
          "errno",
          "fcntl",
          "hashlib",
          "hmac",
          "importlib",
          "json",
          "os",
          "pathlib",
          "pwd",
          "sqlite3",
          "stat",
          "time",
          "typing",
          "unicodedata",
          "uuid"
        ]
      },
      "ancestryllm.core.publication": {
        "external": [],
        "internal": [
          "ancestryllm.core.bundle_mutation",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.mutation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "ctypes",
          "dataclasses",
          "errno",
          "functools",
          "hashlib",
          "importlib",
          "msvcrt",
          "os",
          "pathlib",
          "secrets",
          "stat",
          "sys",
          "tempfile",
          "threading",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.core.secrets": {
        "external": [
          "keyring"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.domain.secrets"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum",
          "hmac",
          "os",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.core.windows_mutation": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "ctypes",
          "pathlib",
          "re",
          "stat",
          "typing"
        ]
      },
      "ancestryllm.domain": {
        "external": [],
        "internal": [
          "ancestryllm.domain.genealogy",
          "ancestryllm.domain.models",
          "ancestryllm.domain.secrets"
        ],
        "standard_library": []
      },
      "ancestryllm.domain.errors": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum",
          "math"
        ]
      },
      "ancestryllm.domain.genealogy": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum"
        ]
      },
      "ancestryllm.domain.models": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "dataclasses",
          "enum",
          "typing"
        ]
      },
      "ancestryllm.domain.secrets": {
        "external": [],
        "internal": [],
        "standard_library": [
          "typing"
        ]
      },
      "ancestryllm.execution": {
        "external": [],
        "internal": [
          "ancestryllm.execution.runtime"
        ],
        "standard_library": []
      },
      "ancestryllm.execution.common": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.executor",
          "ancestryllm.application.results",
          "ancestryllm.core.commands",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.llm.policy"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "decimal",
          "enum",
          "pathlib",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.execution.database": {
        "external": [],
        "internal": [
          "ancestryllm.application._artifacts",
          "ancestryllm.application.executor",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.execution.common",
          "ancestryllm.storage.diagnostics"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.deployment": {
        "external": [],
        "internal": [
          "ancestryllm.application.deployment",
          "ancestryllm.application.executor",
          "ancestryllm.application.operations",
          "ancestryllm.core.context",
          "ancestryllm.core.deployment",
          "ancestryllm.core.errors",
          "ancestryllm.execution.common"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.gedcom": {
        "external": [],
        "internal": [
          "ancestryllm.application._artifacts",
          "ancestryllm.application.dto",
          "ancestryllm.application.executor",
          "ancestryllm.application.operations",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.domain.errors",
          "ancestryllm.execution.common",
          "ancestryllm.gedcom.service",
          "ancestryllm.gedcom.sync_cli",
          "ancestryllm.gedcom.sync_contracts"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.execution.modules": {
        "external": [],
        "internal": [
          "ancestryllm.application.executor",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.core.modules",
          "ancestryllm.execution.common"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.ocr": {
        "external": [],
        "internal": [
          "ancestryllm.application.executor",
          "ancestryllm.core.context",
          "ancestryllm.core.ingress",
          "ancestryllm.execution.common",
          "ancestryllm.ocr.service"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.people": {
        "external": [],
        "internal": [
          "ancestryllm.application.executor",
          "ancestryllm.core.context",
          "ancestryllm.domain.models",
          "ancestryllm.execution.common"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.prompts": {
        "external": [],
        "internal": [
          "ancestryllm.application.executor",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.execution.common"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.providers": {
        "external": [],
        "internal": [
          "ancestryllm.application.executor",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.execution.common",
          "ancestryllm.llm.contracts"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.rootsmagic": {
        "external": [],
        "internal": [
          "ancestryllm.application._artifacts",
          "ancestryllm.application.executor",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.execution.common",
          "ancestryllm.rootsmagic.service"
        ],
        "standard_library": [
          "__future__",
          "hashlib",
          "os",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.execution.runtime": {
        "external": [],
        "internal": [
          "ancestryllm.application._secrets",
          "ancestryllm.application.executor",
          "ancestryllm.application.ports",
          "ancestryllm.core.commands",
          "ancestryllm.core.context",
          "ancestryllm.core.deployment",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.execution.database",
          "ancestryllm.execution.deployment",
          "ancestryllm.execution.gedcom",
          "ancestryllm.execution.modules",
          "ancestryllm.execution.ocr",
          "ancestryllm.execution.people",
          "ancestryllm.execution.prompts",
          "ancestryllm.execution.providers",
          "ancestryllm.execution.rootsmagic",
          "ancestryllm.execution.secrets"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.execution.secrets": {
        "external": [],
        "internal": [
          "ancestryllm.application._secrets",
          "ancestryllm.application.executor",
          "ancestryllm.application.results",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.execution.common"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.gedcom": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom.service"
        ],
        "standard_library": []
      },
      "ancestryllm.gedcom.artifact_publication": {
        "external": [],
        "internal": [
          "ancestryllm.core.publication"
        ],
        "standard_library": [
          "__future__",
          "os",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.gedcom.contracts": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.quality"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "typing"
        ]
      },
      "ancestryllm.gedcom.engine": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom"
        ],
        "standard_library": [
          "__future__"
        ]
      },
      "ancestryllm.gedcom.graph": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.model"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.gedcom.identity": {
        "external": [
          "dateutil",
          "rapidfuzz"
        ],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.model"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "difflib",
          "heapq",
          "logging",
          "math",
          "pathlib",
          "re",
          "types",
          "typing"
        ]
      },
      "ancestryllm.gedcom.incremental": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom"
        ],
        "standard_library": [
          "__future__"
        ]
      },
      "ancestryllm.gedcom.model": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "dataclasses",
          "pathlib",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.parser": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.gedcom.graph",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.validator"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "logging",
          "pathlib",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.quality": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.graph",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.serialization",
          "ancestryllm.gedcom.serializer"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "hashlib",
          "json",
          "pathlib",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.serialization": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.publication",
          "ancestryllm.gedcom.artifact_publication",
          "ancestryllm.gedcom.graph",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.quality",
          "ancestryllm.gedcom.serializer",
          "ancestryllm.gedcom.validator"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "itertools",
          "logging",
          "pathlib",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.serializer": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom.model"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.gedcom.service": {
        "external": [],
        "internal": [
          "ancestryllm.application._artifacts",
          "ancestryllm.application.dto",
          "ancestryllm.application.errors",
          "ancestryllm.application.genealogy",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.core.publication",
          "ancestryllm.domain.errors",
          "ancestryllm.domain.genealogy",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.graph",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.parser",
          "ancestryllm.gedcom.quality",
          "ancestryllm.gedcom.serialization",
          "ancestryllm.gedcom.sync",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.service"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "hashlib",
          "os",
          "pathlib",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.gedcom.sync": {
        "external": [],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.events",
          "ancestryllm.application.ports",
          "ancestryllm.core.ingress",
          "ancestryllm.domain.errors",
          "ancestryllm.gedcom",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.sync_cli",
          "ancestryllm.gedcom.sync_contracts",
          "ancestryllm.gedcom.sync_kernel",
          "ancestryllm.gedcom.sync_operations"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.gedcom.sync_algorithms": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.sync_contracts"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "copy",
          "dataclasses",
          "datetime",
          "hashlib",
          "json",
          "math",
          "pathlib",
          "re",
          "types",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.gedcom.sync_cli": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.sync_contracts",
          "ancestryllm.gedcom.sync_manifest",
          "ancestryllm.gedcom.sync_operations"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "dataclasses",
          "pathlib",
          "types",
          "typing"
        ]
      },
      "ancestryllm.gedcom.sync_contracts": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.gedcom.contracts"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "pathlib",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.sync_gedcom": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom.graph",
          "ancestryllm.gedcom.identity",
          "ancestryllm.gedcom.parser",
          "ancestryllm.gedcom.quality",
          "ancestryllm.gedcom.serialization"
        ],
        "standard_library": [
          "__future__"
        ]
      },
      "ancestryllm.gedcom.sync_kernel": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "enum",
          "hashlib",
          "json",
          "re",
          "typing"
        ]
      },
      "ancestryllm.gedcom.sync_manifest": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.ingress",
          "ancestryllm.gedcom.sync_algorithms",
          "ancestryllm.gedcom.sync_contracts"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "datetime",
          "itertools",
          "pathlib",
          "re",
          "types",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.gedcom.sync_operations": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.directory_mutation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.core.mutation",
          "ancestryllm.gedcom",
          "ancestryllm.gedcom.contracts",
          "ancestryllm.gedcom.serialization",
          "ancestryllm.gedcom.sync_algorithms",
          "ancestryllm.gedcom.sync_contracts",
          "ancestryllm.gedcom.sync_manifest"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "copy",
          "dataclasses",
          "datetime",
          "pathlib",
          "types",
          "typing"
        ]
      },
      "ancestryllm.gedcom.sync_publication": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.directory_mutation",
          "ancestryllm.gedcom.sync_contracts"
        ],
        "standard_library": [
          "__future__",
          "contextlib",
          "ctypes",
          "dataclasses",
          "errno",
          "fcntl",
          "msvcrt",
          "os",
          "pathlib",
          "stat",
          "sys",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.gedcom.validator": {
        "external": [],
        "internal": [
          "ancestryllm.gedcom.model"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "re",
          "typing"
        ]
      },
      "ancestryllm.llm": {
        "external": [],
        "internal": [
          "ancestryllm.llm.contracts"
        ],
        "standard_library": []
      },
      "ancestryllm.llm.async_stream": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "asyncio",
          "collections",
          "concurrent",
          "contextvars",
          "dataclasses",
          "threading"
        ]
      },
      "ancestryllm.llm.chat": {
        "external": [],
        "internal": [
          "ancestryllm.application.chat",
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.profiles",
          "ancestryllm.llm.registry",
          "ancestryllm.llm.service"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "dataclasses",
          "secrets",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.llm.chat_streaming": {
        "external": [],
        "internal": [
          "ancestryllm.application.chat",
          "ancestryllm.core.errors",
          "ancestryllm.llm.chat",
          "ancestryllm.llm.service"
        ],
        "standard_library": [
          "__future__",
          "asyncio",
          "collections",
          "contextlib",
          "dataclasses",
          "datetime",
          "json",
          "secrets",
          "typing"
        ]
      },
      "ancestryllm.llm.contracts": {
        "external": [
          "pydantic"
        ],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "enum",
          "typing"
        ]
      },
      "ancestryllm.llm.endpoint_validation": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.policy"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "hashlib",
          "ipaddress",
          "socket",
          "ssl",
          "typing",
          "urllib"
        ]
      },
      "ancestryllm.llm.execution": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "contextlib",
          "dataclasses",
          "threading",
          "time",
          "typing"
        ]
      },
      "ancestryllm.llm.policy": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "fnmatch",
          "ipaddress",
          "urllib"
        ]
      },
      "ancestryllm.llm.profiles": {
        "external": [
          "pydantic"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.endpoint_validation",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.registry",
          "ancestryllm.storage.database",
          "ancestryllm.storage.models",
          "ancestryllm.storage.repositories"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "datetime",
          "hmac",
          "json",
          "re",
          "typing"
        ]
      },
      "ancestryllm.llm.provider_configuration": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.endpoint_validation",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.profiles",
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "hashlib",
          "hmac",
          "json",
          "math",
          "re",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.llm.providers": {
        "external": [],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.llm.providers.anthropic": {
        "external": [
          "anthropic",
          "httpx"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.validation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.llm.providers.gemini": {
        "external": [
          "google",
          "httpx"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.validation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "math",
          "typing"
        ]
      },
      "ancestryllm.llm.providers.none": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.llm.providers.ollama": {
        "external": [
          "httpx",
          "ollama"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.validation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "logging",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.llm.providers.openai": {
        "external": [
          "openai"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.validation"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.llm.registry": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.core.secrets",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.providers.anthropic",
          "ancestryllm.llm.providers.gemini",
          "ancestryllm.llm.providers.none",
          "ancestryllm.llm.providers.ollama",
          "ancestryllm.llm.providers.openai"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "logging",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.llm.service": {
        "external": [
          "sqlalchemy"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.llm.async_stream",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.execution",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.profiles",
          "ancestryllm.llm.registry",
          "ancestryllm.llm.validation",
          "ancestryllm.storage.database",
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__",
          "asyncio",
          "collections",
          "datetime",
          "hashlib",
          "hmac",
          "importlib",
          "secrets",
          "threading",
          "time",
          "typing"
        ]
      },
      "ancestryllm.llm.validation": {
        "external": [
          "jsonschema"
        ],
        "internal": [
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "json",
          "typing"
        ]
      },
      "ancestryllm.observability": {
        "external": [],
        "internal": [
          "ancestryllm.observability.structured_diagnostics"
        ],
        "standard_library": []
      },
      "ancestryllm.observability.structured_diagnostics": {
        "external": [],
        "internal": [],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "datetime",
          "enum",
          "json",
          "os",
          "pathlib",
          "re",
          "stat",
          "types",
          "typing",
          "uuid"
        ]
      },
      "ancestryllm.ocr": {
        "external": [],
        "internal": [
          "ancestryllm.ocr.service"
        ],
        "standard_library": []
      },
      "ancestryllm.ocr.service": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.llm.contracts",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.service"
        ],
        "standard_library": [
          "__future__",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.prompts": {
        "external": [],
        "internal": [
          "ancestryllm.prompts.service"
        ],
        "standard_library": []
      },
      "ancestryllm.prompts.service": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.storage.database",
          "ancestryllm.storage.repositories"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "json",
          "re",
          "string",
          "typing"
        ]
      },
      "ancestryllm.research": {
        "external": [],
        "internal": [
          "ancestryllm.research.service"
        ],
        "standard_library": []
      },
      "ancestryllm.research.service": {
        "external": [],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.domain.models",
          "ancestryllm.storage.database",
          "ancestryllm.storage.repositories"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "typing"
        ]
      },
      "ancestryllm.rootsmagic": {
        "external": [],
        "internal": [
          "ancestryllm.rootsmagic.core",
          "ancestryllm.rootsmagic.export",
          "ancestryllm.rootsmagic.exporter",
          "ancestryllm.rootsmagic.query",
          "ancestryllm.rootsmagic.service"
        ],
        "standard_library": []
      },
      "ancestryllm.rootsmagic.core": {
        "external": [],
        "internal": [
          "ancestryllm.rootsmagic.schema",
          "ancestryllm.rootsmagic.source"
        ],
        "standard_library": []
      },
      "ancestryllm.rootsmagic.export": {
        "external": [],
        "internal": [
          "ancestryllm.rootsmagic.exporter",
          "ancestryllm.rootsmagic.mapping"
        ],
        "standard_library": []
      },
      "ancestryllm.rootsmagic.exporter": {
        "external": [],
        "internal": [
          "ancestryllm.application",
          "ancestryllm.application._rootsmagic_export"
        ],
        "standard_library": [
          "__future__",
          "sys"
        ]
      },
      "ancestryllm.rootsmagic.mapping": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress",
          "ancestryllm.gedcom.model",
          "ancestryllm.gedcom.serializer",
          "ancestryllm.rootsmagic.core"
        ],
        "standard_library": [
          "__future__",
          "collections",
          "dataclasses",
          "hashlib",
          "json",
          "pathlib",
          "re",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.rootsmagic.query": {
        "external": [],
        "internal": [
          "ancestryllm.application._rootsmagic"
        ],
        "standard_library": []
      },
      "ancestryllm.rootsmagic.reader": {
        "external": [],
        "internal": [
          "ancestryllm.rootsmagic"
        ],
        "standard_library": [
          "__future__",
          "sys"
        ]
      },
      "ancestryllm.rootsmagic.schema": {
        "external": [],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.rootsmagic.source"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "pathlib",
          "re",
          "typing",
          "unicodedata"
        ]
      },
      "ancestryllm.rootsmagic.schema_adapter": {
        "external": [],
        "internal": [
          "ancestryllm.rootsmagic"
        ],
        "standard_library": [
          "__future__",
          "sys"
        ]
      },
      "ancestryllm.rootsmagic.service": {
        "external": [],
        "internal": [
          "ancestryllm.application._rootsmagic_export",
          "ancestryllm.application.operations",
          "ancestryllm.application.ports",
          "ancestryllm.core.config",
          "ancestryllm.core.ingress",
          "ancestryllm.llm.policy",
          "ancestryllm.llm.service",
          "ancestryllm.rootsmagic.core",
          "ancestryllm.rootsmagic.query"
        ],
        "standard_library": [
          "__future__",
          "pathlib",
          "typing"
        ]
      },
      "ancestryllm.rootsmagic.source": {
        "external": [
          "sqlglot"
        ],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.ingress"
        ],
        "standard_library": [
          "__future__",
          "base64",
          "collections",
          "contextlib",
          "contextvars",
          "ctypes",
          "dataclasses",
          "errno",
          "hashlib",
          "math",
          "msvcrt",
          "os",
          "pathlib",
          "sqlite3",
          "tempfile",
          "threading",
          "time",
          "typing"
        ]
      },
      "ancestryllm.storage": {
        "external": [],
        "internal": [
          "ancestryllm.storage.database"
        ],
        "standard_library": []
      },
      "ancestryllm.storage.database": {
        "external": [
          "sqlalchemy",
          "sqlcipher3"
        ],
        "internal": [
          "ancestryllm.core.cancellation",
          "ancestryllm.core.errors",
          "ancestryllm.core.publication",
          "ancestryllm.core.secrets",
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__",
          "base64",
          "contextlib",
          "dataclasses",
          "os",
          "pathlib",
          "secrets",
          "typing"
        ]
      },
      "ancestryllm.storage.diagnostics": {
        "external": [
          "sqlcipher3"
        ],
        "internal": [
          "ancestryllm.core.errors",
          "ancestryllm.core.secrets",
          "ancestryllm.storage.database"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "os",
          "pathlib",
          "platform",
          "stat",
          "sys",
          "typing"
        ]
      },
      "ancestryllm.storage.job_events": {
        "external": [
          "sqlalchemy"
        ],
        "internal": [
          "ancestryllm.application.jobs",
          "ancestryllm.core.errors",
          "ancestryllm.core.jobs",
          "ancestryllm.storage.database",
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "datetime",
          "threading",
          "typing"
        ]
      },
      "ancestryllm.storage.migrations": {
        "external": [],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.storage.migrations.env": {
        "external": [
          "alembic"
        ],
        "internal": [
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__"
        ]
      },
      "ancestryllm.storage.migrations.versions.0001_initial": {
        "external": [
          "alembic",
          "sqlalchemy"
        ],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.storage.migrations.versions.0002_job_persistence": {
        "external": [
          "alembic",
          "sqlalchemy"
        ],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.storage.models": {
        "external": [
          "sqlalchemy"
        ],
        "internal": [],
        "standard_library": [
          "__future__",
          "datetime",
          "uuid"
        ]
      },
      "ancestryllm.storage.repositories": {
        "external": [
          "sqlalchemy"
        ],
        "internal": [
          "ancestryllm.storage.models"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "json",
          "typing"
        ]
      },
      "ancestryllm.terminal": {
        "external": [],
        "internal": [],
        "standard_library": []
      },
      "ancestryllm.terminal.dispatch": {
        "external": [],
        "internal": [
          "ancestryllm.application._secrets",
          "ancestryllm.application.errors",
          "ancestryllm.application.executor",
          "ancestryllm.application.ports",
          "ancestryllm.application.results",
          "ancestryllm.core.cancellation",
          "ancestryllm.core.context",
          "ancestryllm.core.errors",
          "ancestryllm.domain.errors",
          "ancestryllm.execution.runtime",
          "ancestryllm.terminal.parser",
          "ancestryllm.terminal.presentation"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "typing"
        ]
      },
      "ancestryllm.terminal.entrypoint": {
        "external": [],
        "internal": [
          "ancestryllm.console.shell",
          "ancestryllm.core.context"
        ],
        "standard_library": [
          "__future__",
          "typing"
        ]
      },
      "ancestryllm.terminal.parser": {
        "external": [],
        "internal": [
          "ancestryllm",
          "ancestryllm.application.dto",
          "ancestryllm.application.executor",
          "ancestryllm.core.commands",
          "ancestryllm.core.errors",
          "ancestryllm.core.help"
        ],
        "standard_library": [
          "__future__",
          "argparse",
          "collections",
          "contextlib",
          "dataclasses",
          "io",
          "pathlib",
          "shlex",
          "typing"
        ]
      },
      "ancestryllm.terminal.presentation": {
        "external": [
          "rich"
        ],
        "internal": [
          "ancestryllm.application.dto",
          "ancestryllm.application.errors",
          "ancestryllm.application.results",
          "ancestryllm.core.errors"
        ],
        "standard_library": [
          "__future__",
          "dataclasses",
          "json",
          "pathlib",
          "typing"
        ]
      }
    }
  },
  "environment": {
    "implementation": "CPython",
    "machine": "arm64",
    "python": "3.14.7",
    "system": "Darwin"
  },
  "fixture_digest": "7f92042dffe50c687dbe738f641cb77246235ba020e96e6f94e5b459dd5a2daa",
  "fixture_sha256": {
    "tests/fixtures/gedcom_adversarial/minimal-551.ged": "4634efa88467c981f0f2d2197d6a9d931ce9754bf1f687f595d118ef82bd71d0",
    "tests/fixtures/gedcom_adversarial/minimal-555.ged": "37ba6120959a631fb9fcd58d20c1e9db9c3d8f040f5800a688040ac7c1240e23",
    "tests/fixtures/gedcom_adversarial/preserve-extensions.ged": "8c18c790e80aada5c85f7ef097f18cd440c530c30807185bfabb645648d40309",
    "tests/fixtures/gedcom_adversarial/xref-source-a.ged": "9096981d55413b1bc3a71494f0ddb54009ab562654fa4e75e3ea0ec43528064d",
    "tests/fixtures/gedcom_adversarial/xref-source-b.ged": "69c6ae8e621d9d3db4cead5bf3050f19985a63d079d455d8d06e173ef9398870",
    "tests/fixtures/gedcom_incremental/ancestry-snapshot-v1.ged": "efaad2608ab181f15099137c5968786149b5155570e665e56460a488c550575e",
    "tests/fixtures/gedcom_incremental/ancestry-snapshot-v2.ged": "9f47f447db3333c1d8f294a2dfb0b0067352b34abbe587199bddd71f74abcb22",
    "tests/fixtures/gedcom_incremental/baseline-master.ged": "a622211c73377be4f44b2317fa71e9fc9c231b2a87f882bad60265238e1c942b",
    "tests/fixtures/gedcom_incremental/myheritage-snapshot-v1.ged": "929056e9047edf44ccd046973a4fffe5d015ac580cccd3d3fa38bac6d2dacf43",
    "tests/fixtures/gedcom_incremental/myheritage-snapshot-v2.ged": "912d7af54bd22ec2cfd5a881bac8f207a04d9ca847f32ff42fbd0bdda25b34c8",
    "tests/fixtures/gedcom_merge/malformed-rejected.ged": "f319b2f8b9e160d0e755fc677e62c715cad34e2f949431334569d412be32b3f7",
    "tests/fixtures/gedcom_merge/quality-source-a.ged": "cc2df8fed19c274a229af33199b735349c5d184c6008baef1ab3e9e101908df6",
    "tests/fixtures/gedcom_merge/quality-source-b.ged": "7525bd837a1e160c313cd5852b592b9b58fb9adea48006bd09bc67bac1018fb2"
  },
  "inventory": {
    "fixtures": 13,
    "public_facades": 10,
    "semantic_groups": 5,
    "test_nodes": 51
  },
  "performance": {
    "cli_cold_start": {
      "elapsed_ms_samples": [
        1096.472,
        1099.62,
        1117.028,
        1075.359,
        1047.57,
        1070.633,
        1067.544
      ],
      "median_elapsed_ms": 1075.359,
      "median_peak_rss_bytes": 100466688,
      "operation": "cli-cold-start",
      "peak_rss_bytes_samples": [
        100909056,
        100204544,
        100597760,
        100286464,
        100401152,
        100581376,
        100466688
      ],
      "runs": 7
    },
    "offline_gedcom_merge": {
      "elapsed_ms_samples": [
        1079.056,
        1078.878,
        1055.058,
        1088.58,
        1297.608,
        1120.812,
        1117.022
      ],
      "iterations": 60,
      "median_elapsed_ms": 1088.58,
      "median_peak_rss_bytes": 57311232,
      "operation": "offline-gedcom-merge",
      "peak_rss_bytes_samples": [
        57311232,
        57688064,
        57491456,
        57262080,
        57671680,
        57294848,
        57262080
      ],
      "people_read": 6,
      "people_written": 4,
      "result_digest": "27be1afa27ad157ac3db0445521e31e918a6d8e099251e07980bd46e964b6640",
      "runs": 7
    }
  },
  "performance_policy": {
    "cold_start_regression_floor_ms": 100.0,
    "cold_start_regression_percent": 10.0,
    "peak_rss_regression_percent": 10.0,
    "runs": 7,
    "warm_iterations_per_run": 60,
    "warm_regression_minimum_ms": 500.0,
    "warm_regression_percent": 10.0
  },
  "schema_version": 1,
  "semantic_digest": "d4394e3eb52dba6b0302ad40d87e411981b0da35b715aff4ff885f82ce61799e",
  "semantic_groups": [
    {
      "elapsed_ms": 1436.18,
      "id": "gedcom-parse-serialize-root-loss",
      "status": "passed",
      "test_nodes": [
        "tests/test_gedcom_adversarial.py::test_manifest_is_a_complete_fictional_catalog",
        "tests/test_gedcom_adversarial.py::test_committed_minimal_versions_parse",
        "tests/test_gedcom_adversarial.py::test_extensions_alternatives_and_continuations_are_preserved",
        "tests/test_gedcom_adversarial.py::test_xref_collisions_and_dangling_references_are_namespaced_per_source",
        "tests/test_gedcom_adversarial.py::test_555_validator_preserves_semantic_anomalies_for_quality_findings",
        "tests/test_gedcom_adversarial.py::test_555_validator_accepts_a_deep_acyclic_family_graph",
        "tests/test_gedcom_adversarial.py::test_semantic_property_corpus_survives_serialize_reparse",
        "tests/modular/test_gedcom_rooted_reference_closure.py::test_subtree_retains_only_transitive_referenced_level_zero_records"
      ]
    },
    {
      "elapsed_ms": 12058.166,
      "id": "cli-repl-contract",
      "status": "passed",
      "test_nodes": [
        "tests/modular/test_cli_console.py::test_action_matrix_covers_every_shipped_module_action",
        "tests/modular/test_cli_console.py::test_one_shot_returns_expected_dtos_for_every_action",
        "tests/modular/test_cli_console.py::test_every_action_serializes_json_and_repl_routes_direct_and_module_context",
        "tests/modular/test_cli_console.py::test_stable_service_error_code_and_exit_are_preserved",
        "tests/modular/test_cli_console.py::test_invalid_values_missing_files_and_json_parser_failures_are_sanitized",
        "tests/modular/test_cli_console.py::test_disabled_modules_are_not_imported_or_dispatched",
        "tests/modular/test_cli_console.py::test_disabled_module_has_matching_repl_code_exit_and_message",
        "tests/modular/test_cli_console.py::test_secret_values_never_reach_one_shot_status_output",
        "tests/modular/test_cli_console.py::test_clean_install_entry_points_and_json_smoke"
      ]
    },
    {
      "elapsed_ms": 1882.342,
      "id": "provider-consent-offline",
      "status": "passed",
      "test_nodes": [
        "tests/modular/test_llm_provider_contracts.py::test_remote_provider_consent_denial_precedes_any_adapter_call",
        "tests/modular/test_llm_provider_contracts.py::test_provider_failure_redacts_exception_text_and_secret",
        "tests/modular/test_llm_provider_contracts.py::test_none_is_strictly_offline_with_keys_and_sdk_modules_present",
        "tests/modular/test_gedcom_provider_boundary.py::test_only_provider_adapters_import_network_clients",
        "tests/modular/test_gedcom_provider_boundary.py::test_identity_adjudication_uses_shared_generation_contract",
        "tests/modular/test_gedcom_provider_boundary.py::test_quality_refinement_uses_shared_generation_contract",
        "tests/modular/test_gedcom_provider_boundary.py::test_provider_error_is_not_swallowed_or_copied_into_merge_output",
        "tests/modular/test_gedcom_provider_boundary.py::test_provider_none_never_constructs_a_gedcom_resolver"
      ]
    },
    {
      "elapsed_ms": 2477.004,
      "id": "incremental-state-provenance-recovery",
      "status": "passed",
      "test_nodes": [
        "tests/modular/test_incremental.py::test_initial_allocation_is_independent_of_snapshot_argument_order",
        "tests/modular/test_incremental.py::test_initial_allocation_is_independent_of_snapshot_record_order",
        "tests/modular/test_incremental.py::test_incremental_initialization_is_offline_and_publishes_atomic_bundle",
        "tests/modular/test_incremental.py::test_incremental_active_snapshot_is_idempotent",
        "tests/modular/test_incremental.py::test_incremental_replaces_changed_snapshots_and_preserves_snapshot_history",
        "tests/modular/test_incremental.py::test_rebase_requires_confirmation_then_tombstones_manual_deletions",
        "tests/modular/test_incremental.py::test_changed_fact_cannot_bypass_a_manual_tombstone",
        "tests/modular/test_incremental.py::test_explicit_manual_revival_retires_the_matching_tombstone",
        "tests/modular/test_incremental.py::test_update_writes_rollback_metadata_and_cleans_up_interrupted_publish",
        "tests/modular/test_incremental.py::test_failure_contract_preserves_existing_sentinel_and_creates_no_report",
        "tests/modular/test_incremental.py::test_moved_destination_and_failed_rollback_never_claims_commit"
      ]
    },
    {
      "elapsed_ms": 4876.086,
      "id": "rootsmagic-readonly-bounded-artifacts",
      "status": "passed",
      "test_nodes": [
        "tests/modular/test_rootsmagic_issue29_hardening.py::test_export_contract_matrix_is_structural_private_and_deterministic",
        "tests/modular/test_rootsmagic_issue29_hardening.py::test_source_revalidation_failure_rolls_back_the_complete_prior_pair",
        "tests/modular/test_rootsmagic_export.py::test_header_only_sqlite_input_fails_stably_across_query_and_export",
        "tests/modular/test_rootsmagic_export.py::test_export_result_json_preserves_the_public_field_set",
        "tests/modular/test_rootsmagic_export.py::test_failed_atomic_output_replacement_keeps_prior_output_and_source_unchanged",
        "tests/modular/test_rootsmagic_export.py::test_changed_source_discards_completed_export_and_report",
        "tests/modular/test_rootsmagic_export.py::test_query_service_enforces_row_limits_and_requires_explicit_provider",
        "tests/modular/test_rootsmagic_export.py::test_generated_sql_retains_prompt_injection_as_data_and_authorizer_blocks_extension",
        "tests/modular/test_rootsmagic_issue78_adversarial.py::test_invalid_database_families_fail_stably_without_artifacts_or_source_changes",
        "tests/modular/test_rootsmagic_issue78_adversarial.py::test_malformed_declared_schema_is_rejected_without_disclosing_schema_text",
        "tests/modular/test_rootsmagic_issue78_adversarial.py::test_quoted_hostile_unknown_identifier_is_data_not_executable_sql",
        "tests/modular/test_rootsmagic_issue78_adversarial.py::test_orphans_self_parenting_and_cycles_are_deterministic_and_source_read_only",
        "tests/modular/test_rootsmagic_cancellation.py::test_public_read_progress_interruption_becomes_job_cancellation",
        "tests/modular/test_rootsmagic_cancellation.py::test_sqlite_timeout_wins_race_with_later_cancellation",
        "tests/modular/test_rootsmagic_cancellation.py::test_bound_copy_cancellation_removes_partial_snapshot_and_preserves_source"
      ]
    }
  ],
  "source_revision": "8f79c0b93e093c8dedcde06c62593f2e0bdaeb62",
  "source_tree_sha256": "87421c84767df961aabf440eb9b685d4100c495b560823bbbfd24a3062fce83e"
}
