fix(frontend): remediate frontend + extension audit findings #6137
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| # Run on direct pushes to protected branches only | |
| push: | |
| branches: | |
| - main | |
| # Run CI for PRs targeting these branches | |
| pull_request: | |
| branches: | |
| - main | |
| - dev | |
| workflow_dispatch: | |
| release: | |
| types: [published] | |
| permissions: | |
| contents: read | |
| env: | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| concurrency: | |
| # Ensure newer PR commits cancel older queued runs for the same PR. | |
| group: ci-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| http-client-patch-guard: | |
| name: HTTP Client Patch Guard | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Guard against raw HTTP client patching | |
| run: | | |
| python Helper_Scripts/checks/guard_http_client_patching.py | |
| syntax-check: | |
| name: Syntax Check (compileall) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Compile all Python under tldw_Server_API/app | |
| shell: bash | |
| run: | | |
| python - <<'PY' | |
| import compileall, sys | |
| ok = compileall.compile_dir('tldw_Server_API/app', force=True, quiet=1) | |
| sys.exit(0 if ok else 1) | |
| PY | |
| shard-coverage: | |
| name: Shard coverage guard | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Install PyYAML | |
| run: pip install pyyaml | |
| - name: Verify every test file is assigned to a shard | |
| # Fails if a NEW test file is in no full-suite shard (would be silently | |
| # skipped). Known-unshared backlog is tracked in | |
| # Helper_Scripts/ci/shard_coverage_baseline.txt; shrink it over time. | |
| run: python Helper_Scripts/ci/check_shard_coverage.py --ci-file .github/workflows/ci.yml | |
| quickstart-dry-run: | |
| name: Quickstart Dry-Run Smoke | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Verify quickstart-install target shape | |
| run: | | |
| make -n quickstart-install | |
| lint: | |
| name: Lint & Type Check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| cache: pip | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| - name: Install tools | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install "mypy==1.20.1" "ruff==0.15.10" | |
| - name: Ruff lint (non-blocking, baseline 1419 errors) | |
| continue-on-error: true | |
| run: ruff check tldw_Server_API/ | |
| - name: MyPy (non-blocking, baseline 10191 errors) | |
| continue-on-error: true | |
| run: mypy tldw_Server_API/ | |
| frontend-lint: | |
| name: Frontend Lint (Next.js) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| env: | |
| SKIP_WXT_PREPARE: "1" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3.2" | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| working-directory: apps | |
| - name: Run frontend lint | |
| run: bun run lint | |
| working-directory: apps/tldw-frontend | |
| wizard-tests: | |
| name: Wizard Tests (Coverage Gate) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| services: | |
| postgres: | |
| image: mirror.gcr.io/library/postgres:18-bookworm | |
| env: | |
| POSTGRES_USER: tldw_user | |
| POSTGRES_PASSWORD: TestPassword123! | |
| POSTGRES_DB: tldw_content | |
| ports: | |
| - 5432/tcp | |
| options: >- | |
| --health-cmd "pg_isready -U tldw_user -d tldw_content" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 10 | |
| redis: | |
| image: mirror.gcr.io/library/redis:8-alpine@sha256:9eb6a7ba3d344e1958c7e1589fa3dee90373a934e8159c634562a91d622759a0 | |
| ports: | |
| - 6379/tcp | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| POSTGRES_TEST_HOST: 127.0.0.1 | |
| POSTGRES_TEST_DB: tldw_content | |
| POSTGRES_TEST_USER: tldw_user | |
| POSTGRES_TEST_PASSWORD: TestPassword123! | |
| TEST_DB_HOST: 127.0.0.1 | |
| TEST_DB_USER: tldw_user | |
| TEST_DB_PASSWORD: TestPassword123! | |
| TEST_DB_NAME: tldw_test | |
| TLDW_TEST_POSTGRES_REQUIRED: '1' | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg and PortAudio (Linux) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: 'true' | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.12' | |
| use-uv: 'true' | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev,multiplayer | |
| - name: Install pg client and wait for PG | |
| uses: ./.github/actions/wait-for-postgres | |
| with: | |
| host: 127.0.0.1 | |
| port: ${{ job.services.postgres.ports['5432'] }} | |
| user: tldw_user | |
| - name: Export PG env vars | |
| shell: bash | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| DB_PASSWORD="${POSTGRES_TEST_PASSWORD:?POSTGRES_TEST_PASSWORD is required}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@127.0.0.1:${PORT}/${DB_NAME}" | |
| echo "::add-mask::${DB_PASSWORD}" | |
| echo "::add-mask::${DB_URL}" | |
| { | |
| echo "POSTGRES_TEST_PORT=${PORT}" | |
| echo "TEST_DB_PORT=${PORT}" | |
| echo "TEST_DATABASE_URL=${DB_URL}" | |
| echo "DATABASE_URL=${DB_URL}" | |
| } >> "$GITHUB_ENV" | |
| - name: Ensure base DB exists | |
| shell: bash | |
| env: | |
| PGPASSWORD: ${{ env.POSTGRES_TEST_PASSWORD }} | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| echo "Ensuring database '$DB_NAME' exists on port $PORT as user $DB_USER" | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | grep -q 1 || \ | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -c "CREATE DATABASE ${DB_NAME}" | |
| - name: Run wizard tests (coverage gate) | |
| env: | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: "1" | |
| run: | | |
| # Keep this as a non-regression floor until wizard CLI coverage is expanded. | |
| pytest -q --disable-warnings -p pytest_cov -p pytest_asyncio.plugin \ | |
| tldw_Server_API/tests/wizard \ | |
| --cov=tldw_Server_API/cli/wizard --cov-report=term-missing --cov-fail-under=70 | |
| changes: | |
| name: Detect changed areas | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| outputs: | |
| backend_changed: ${{ steps.detect.outputs.backend_changed }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| - name: Classify changed paths | |
| id: detect | |
| uses: ./.github/actions/detect-required-gate-changes | |
| full-suite-linux-311-smoke: | |
| name: Full Suite (Ubuntu / Python 3.11 / ${{ matrix.shard.name }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| needs: [lint, syntax-check, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: core | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: authnz-unit | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit | |
| - name: config-core-loaders | |
| paths: >- | |
| tldw_Server_API/tests/Config/test_claims_env_int_parsing.py | |
| tldw_Server_API/tests/Config/test_config_adapter.py | |
| tldw_Server_API/tests/Config/test_config_admin_endpoint_sanitizers.py | |
| tldw_Server_API/tests/Config/test_config_precedence_contract.py | |
| tldw_Server_API/tests/Config/test_config_providers_endpoints.py | |
| tldw_Server_API/tests/Config/test_config_sections_typed_loaders.py | |
| tldw_Server_API/tests/Config/test_config_txt_inline_comment_regression.py | |
| tldw_Server_API/tests/Config/test_config_utils_sanitizers.py | |
| tldw_Server_API/tests/Config/test_docs_info_capabilities.py | |
| - name: config-effective-api | |
| paths: >- | |
| tldw_Server_API/tests/Config/test_effective_config_api.py | |
| - name: config-module-yaml | |
| paths: >- | |
| tldw_Server_API/tests/Config/test_module_yaml_integration.py | |
| - name: config-runtime-env | |
| paths: >- | |
| tldw_Server_API/tests/Config/test_env_file_selection.py | |
| tldw_Server_API/tests/Config/test_feature_flags.py | |
| tldw_Server_API/tests/Config/test_local_api_and_custom_openai2_config_keys.py | |
| tldw_Server_API/tests/Config/test_migrate_api_keys.py | |
| tldw_Server_API/tests/Config/test_pyproject_tooling_extra.py | |
| tldw_Server_API/tests/Config/test_redis_config.py | |
| tldw_Server_API/tests/Config/test_web_scraper_config_keys.py | |
| - name: config-routes-startup | |
| paths: >- | |
| tldw_Server_API/tests/Config/test_openapi_config_jobs.py | |
| tldw_Server_API/tests/Config/test_route_and_cors_guards.py | |
| tldw_Server_API/tests/Config/test_route_toggle_evaluations_regressions.py | |
| tldw_Server_API/tests/Config/test_startup_api_key_logging.py | |
| tldw_Server_API/tests/Config/test_startup_validation.py | |
| - name: utils-http | |
| paths: >- | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/http_client | |
| services: | |
| postgres: | |
| image: mirror.gcr.io/library/postgres:18-bookworm | |
| env: | |
| POSTGRES_USER: tldw_user | |
| POSTGRES_PASSWORD: TestPassword123! | |
| POSTGRES_DB: tldw_content | |
| ports: | |
| - 5432/tcp | |
| options: >- | |
| --health-cmd "pg_isready -U tldw_user -d tldw_content" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 10 | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| POSTGRES_TEST_HOST: 127.0.0.1 | |
| POSTGRES_TEST_DB: tldw_content | |
| POSTGRES_TEST_USER: tldw_user | |
| POSTGRES_TEST_PASSWORD: TestPassword123! | |
| TEST_DB_HOST: 127.0.0.1 | |
| TEST_DB_USER: tldw_user | |
| TEST_DB_PASSWORD: TestPassword123! | |
| TEST_DB_NAME: tldw_test | |
| TLDW_TEST_POSTGRES_REQUIRED: '1' | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| RESULTS_DIR: test-results-linux-3.11-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg and PortAudio (Linux) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.11' | |
| use-uv: 'true' | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev,multiplayer | |
| - name: Install pg client and wait for PG | |
| uses: ./.github/actions/wait-for-postgres | |
| with: | |
| host: 127.0.0.1 | |
| port: ${{ job.services.postgres.ports['5432'] }} | |
| user: tldw_user | |
| - name: Export PG env vars | |
| shell: bash | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| DB_PASSWORD="${POSTGRES_TEST_PASSWORD:?POSTGRES_TEST_PASSWORD is required}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@127.0.0.1:${PORT}/${DB_NAME}" | |
| echo "::add-mask::${DB_PASSWORD}" | |
| echo "::add-mask::${DB_URL}" | |
| { | |
| echo "POSTGRES_TEST_PORT=${PORT}" | |
| echo "TEST_DB_PORT=${PORT}" | |
| echo "TEST_DATABASE_URL=${DB_URL}" | |
| echo "DATABASE_URL=${DB_URL}" | |
| } >> "$GITHUB_ENV" | |
| - name: Ensure base DB exists | |
| shell: bash | |
| env: | |
| PGPASSWORD: ${{ env.POSTGRES_TEST_PASSWORD }} | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | grep -q 1 || \ | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -c "CREATE DATABASE ${DB_NAME}" | |
| - name: Install additional deps for PG tests | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install "psycopg[binary]>=3.1" pytest pytest-asyncio | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-linux-py311-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '0' | |
| DEFER_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check | |
| if: always() && matrix.shard.name == 'core' | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '240' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Print smoke server log on failure | |
| if: failure() && matrix.shard.name == 'core' | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python - <<'PY' | |
| import os, pathlib | |
| label = os.environ.get('SERVER_LABEL', 'smoke') | |
| p = pathlib.Path(f'server-{label}.log') | |
| if p.exists(): | |
| print('===== smoke server log =====') | |
| print(p.read_text(encoding='utf-8')) | |
| PY | |
| - name: Smoke stop server | |
| if: always() && matrix.shard.name == 'core' | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Run Python 3.11 compatibility smoke tests | |
| shell: bash | |
| run: | | |
| mkdir -p "${RESULTS_DIR}" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| ${{ matrix.shard.paths }} \ | |
| --durations=50 \ | |
| --junit-xml="${RESULTS_DIR}/smoke.xml" | |
| - name: Upload test results (Linux 3.11 smoke) | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-ubuntu-py3.11-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| full-suite-linux-312-shards: | |
| name: Full Suite shard (Ubuntu / Python 3.12 / ${{ matrix.shard.name }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| needs: [lint, syntax-check, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: gap-verified-1 | |
| paths: >- | |
| tldw_Server_API/tests/Audiobooks | |
| tldw_Server_API/tests/Image_Generation | |
| - name: gap-verified-2 | |
| paths: >- | |
| tldw_Server_API/tests/Claims_Extraction | |
| tldw_Server_API/tests/Discord | |
| tldw_Server_API/tests/Files | |
| tldw_Server_API/tests/Meetings | |
| tldw_Server_API/tests/Notes_Tasks | |
| tldw_Server_API/tests/Sync | |
| tldw_Server_API/tests/Translation | |
| - name: gap-verified-3 | |
| paths: >- | |
| tldw_Server_API/tests/DataTables | |
| tldw_Server_API/tests/Embeddings_isolated | |
| tldw_Server_API/tests/Integrations | |
| tldw_Server_API/tests/PrototypeWorkspaces | |
| tldw_Server_API/tests/UserProfile | |
| tldw_Server_API/tests/VN_Platform | |
| - name: gap-verified-4 | |
| paths: >- | |
| tldw_Server_API/tests/Governance | |
| tldw_Server_API/tests/Ingestion_Sources | |
| tldw_Server_API/tests/Items | |
| tldw_Server_API/tests/Research_Workspace | |
| tldw_Server_API/tests/Skills | |
| tldw_Server_API/tests/StudyPacks | |
| tldw_Server_API/tests/VN_Play | |
| tldw_Server_API/tests/VN_Policy | |
| tldw_Server_API/tests/scripts | |
| - name: gap-verified-5 | |
| paths: >- | |
| tldw_Server_API/tests/Agent_Orchestration | |
| tldw_Server_API/tests/Chat_Workflows | |
| tldw_Server_API/tests/Notes_Graph | |
| tldw_Server_API/tests/Slides tldw_Server_API/tests/Text2SQL | |
| tldw_Server_API/tests/wizard | |
| - name: gap-verified-6 | |
| paths: >- | |
| tldw_Server_API/tests/API_Deps | |
| tldw_Server_API/tests/AuthNZ_Federation | |
| tldw_Server_API/tests/CodeGraph | |
| tldw_Server_API/tests/MCP_Hub | |
| tldw_Server_API/tests/MediaFiles | |
| tldw_Server_API/tests/Scheduler | |
| tldw_Server_API/tests/Slack | |
| tldw_Server_API/tests/VN_Assets | |
| - name: gap-verified-7 | |
| paths: >- | |
| tldw_Server_API/tests/Guardian | |
| - name: gap-verified-8 | |
| paths: >- | |
| tldw_Server_API/tests/Storage | |
| tldw_Server_API/tests/StudySuggestions | |
| tldw_Server_API/tests/Quizzes | |
| - name: gap-verified-9 | |
| paths: >- | |
| tldw_Server_API/tests/Docs tldw_Server_API/tests/performance | |
| - name: gap-verified-10 | |
| paths: >- | |
| tldw_Server_API/tests/Writing | |
| - name: gap-verified-11 | |
| paths: >- | |
| tldw_Server_API/tests/Sharing | |
| tldw_Server_API/tests/VoiceAssistant | |
| - name: gap-verified-12 | |
| paths: >- | |
| tldw_Server_API/tests/Billing | |
| tldw_Server_API/tests/CI | |
| tldw_Server_API/tests/FileArtifacts | |
| - name: core-server-smoke | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/Logging | |
| - name: core-config | |
| paths: >- | |
| tldw_Server_API/tests/Config | |
| - name: core-audit-support | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_audit_*.py | |
| tldw_Server_API/tests/Audit/test_pii_pattern_groups.py | |
| tldw_Server_API/tests/Audit/test_risk_settings_overrides.py | |
| tldw_Server_API/tests/Audit/test_sqlite_runtime_pragmas.py | |
| - name: core-audit-unified | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_unified_audit_service.py | |
| - name: core-security | |
| paths: >- | |
| tldw_Server_API/tests/Security | |
| - name: core-setup-usage | |
| paths: >- | |
| tldw_Server_API/tests/Setup | |
| tldw_Server_API/tests/Usage | |
| - name: core-utils-tooling | |
| paths: >- | |
| tldw_Server_API/tests/Helper_Scripts | |
| tldw_Server_API/tests/Context_Integrity | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/helpers | |
| tldw_Server_API/tests/http_client | |
| tldw_Server_API/tests/lint | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: admin-a-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_a*.py | |
| - name: admin-budgets | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_budgets_*.py | |
| - name: admin-bundle-sanitizers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_bundle_service_sanitizers.py | |
| - name: admin-bundle-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_bundle_ops.py | |
| - name: admin-byok-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_service_sanitizers.py | |
| - name: admin-byok-validation | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_validation_*.py | |
| tldw_Server_API/tests/Admin/test_byok_*.py | |
| - name: admin-backup-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_backup_schedules_api.py | |
| - name: admin-backup-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_backup_*.py | |
| tldw_Server_API/tests/Admin/test_backup_schedules_repo.py | |
| - name: admin-conflicts-data-admin | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_c*.py | |
| tldw_Server_API/tests/Admin/test_admin_data_*.py | |
| - name: admin-data-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_ops.py | |
| - name: admin-data-subject-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_api.py | |
| - name: admin-data-subject-repo-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_repo.py | |
| tldw_Server_API/tests/Admin/test_dsr_*.py | |
| - name: admin-e2e-access | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_are_unavailable_without_flag | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_require_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_reject_wrong_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_fail_closed_without_configured_support_key | |
| - name: admin-e2e-seed | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_stable_fixture_ids | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_debug_role_principals | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_requires_explicit_fixture_passwords | |
| - name: admin-e2e-single-user | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_single_user_login_key | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_single_user_api_key_can_read_users_me | |
| - name: admin-e2e-session-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_rejects_unsafe_backup_paths | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_bootstrap_jwt_session_returns_cookie_payload | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_dsr_seed_supports_real_preview | |
| - name: admin-e2e-reset-backups | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_backup_schedules | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_monitoring_authority_state | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_run_due_backup_schedules_processes_scheduled_run | |
| - name: admin-g-i | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_g*.py | |
| tldw_Server_API/tests/Admin/test_admin_i*.py | |
| - name: admin-llm-providers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_llm_providers_*.py | |
| - name: admin-incidents | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_incidents_*.py | |
| - name: admin-llm-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_llm_usage_endpoints.py | |
| - name: admin-maintenance-misc | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_maintenance_*.py | |
| tldw_Server_API/tests/Admin/test_admin_misc_endpoints.py | |
| tldw_Server_API/tests/Admin/test_maintenance_*.py | |
| - name: admin-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_monitoring_*.py | |
| tldw_Server_API/tests/Admin/test_monitoring_*.py | |
| - name: admin-ops-dependencies | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_dependencies.py | |
| - name: admin-ops-endpoints | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_new_endpoints.py | |
| - name: admin-ops-webhooks-orgs | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_webhooks_reports.py | |
| tldw_Server_API/tests/Admin/test_admin_orgs_*.py | |
| - name: admin-profiles-rate-registration | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_profiles_*.py | |
| tldw_Server_API/tests/Admin/test_admin_rate_limits_*.py | |
| tldw_Server_API/tests/Admin/test_admin_registration_*.py | |
| - name: admin-pricing-retention-roles-router | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_pricing_reload_endpoint.py | |
| tldw_Server_API/tests/Admin/test_retention_policy_preview_api.py | |
| tldw_Server_API/tests/Admin/test_role_*.py | |
| tldw_Server_API/tests/Admin/test_router_analytics_*.py | |
| - name: admin-s-sessions-settings | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_scope_service_enterprise_mode.py | |
| tldw_Server_API/tests/Admin/test_admin_service_log_sanitizers.py | |
| tldw_Server_API/tests/Admin/test_admin_sessions_*.py | |
| tldw_Server_API/tests/Admin/test_admin_settings_service.py | |
| tldw_Server_API/tests/Admin/test_admin_smoke.py | |
| - name: admin-split-storage-tools | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_split_*.py | |
| tldw_Server_API/tests/Admin/test_admin_storage_quotas.py | |
| tldw_Server_API/tests/Admin/test_admin_system_ops_service.py | |
| tldw_Server_API/tests/Admin/test_admin_t*.py | |
| - name: admin-users | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_u*.py | |
| - name: admin-watchlists-webhooks | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_w*.py | |
| - name: admin-system-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_system_ops.py | |
| tldw_Server_API/tests/Admin/test_usage_reporting*.py | |
| - name: auth-integration-admin-auth | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_admin_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_api_key_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_auth_*.py | |
| - name: auth-integration-authnz | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_authnz_*.py | |
| - name: auth-integration-b-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_[b-z]*.py | |
| - name: auth-postgres | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Postgres | |
| - name: auth-core-root-property | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/test*.py | |
| tldw_Server_API/tests/AuthNZ/property/test*.py | |
| - name: auth-core-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[a-l]*.py | |
| - name: auth-core-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[m-z]*.py | |
| - name: auth-sqlite | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_SQLite | |
| - name: auth-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[a-l]*.py | |
| - name: auth-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[m-z]*.py | |
| - name: chacha-core-stores | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chacha_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chachanotes_db.py | |
| - name: chacha-character-conversation | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_character_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_conversation_*.py | |
| - name: chacha-content-persona | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_flashcard*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_note_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_order_by_validation.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_persona_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_quizzes_basic.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_web_clipper_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_assistant_defaults_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_resource_memberships_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_sub_resources_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_writing_playground_db.py | |
| - name: db-privileges | |
| paths: >- | |
| tldw_Server_API/tests/DB | |
| tldw_Server_API/tests/DB_Management | |
| tldw_Server_API/tests/MediaDB2 | |
| tldw_Server_API/tests/PrivilegeCatalog | |
| tldw_Server_API/tests/Privileges | |
| - name: ai-chromadb | |
| paths: >- | |
| tldw_Server_API/tests/ChromaDB | |
| - name: ai-chunking-core | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_async_*.py | |
| tldw_Server_API/tests/Chunking/test_auto_*.py | |
| tldw_Server_API/tests/Chunking/test_chunker_*.py | |
| tldw_Server_API/tests/Chunking/test_process_text_components.py | |
| tldw_Server_API/tests/Chunking/test_process_text_refactor_equivalence.py | |
| tldw_Server_API/tests/Chunking/test_chunking_endpoint.py | |
| tldw_Server_API/tests/Chunking/test_chunking_offsets_property.py | |
| tldw_Server_API/tests/Chunking/test_chunking_overlap_properties.py | |
| tldw_Server_API/tests/Chunking/test_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_chunking_template_endpoint_errors.py | |
| - name: ai-chunking-templates | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestDatabaseOperations | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateInitialization | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateProcessing | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_endpoint_sanitization.py | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_validate_schema.py | |
| tldw_Server_API/tests/Chunking/test_template_*.py | |
| - name: ai-chunking-templates-api | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestAPIEndpoints | |
| - name: ai-chunking-templates-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestIntegration | |
| - name: ai-chunking-code-json-xml | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_code_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_json_*.py | |
| tldw_Server_API/tests/Chunking/test_xml_*.py | |
| - name: ai-chunking-semantic-security | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_hierarchical_*.py | |
| tldw_Server_API/tests/Chunking/test_offsets_additional.py | |
| tldw_Server_API/tests/Chunking/test_option_aliases.py | |
| tldw_Server_API/tests/Chunking/test_overlap_clamp.py | |
| tldw_Server_API/tests/Chunking/test_phase3_3_sanitizers.py | |
| tldw_Server_API/tests/Chunking/test_propositions_strategy.py | |
| tldw_Server_API/tests/Chunking/test_security*.py | |
| tldw_Server_API/tests/Chunking/test_semantic_*.py | |
| tldw_Server_API/tests/Chunking/test_sentence_spans_properties.py | |
| tldw_Server_API/tests/Chunking/test_streaming_overlap.py | |
| tldw_Server_API/tests/Chunking/test_thai_tables_spans.py | |
| tldw_Server_API/tests/Chunking/test_thread_safety.py | |
| tldw_Server_API/tests/Chunking/test_tokens_offsets.py | |
| tldw_Server_API/tests/Chunking/unit/test_tokens_fallback_offsets.py | |
| - name: ai-embeddings-async | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_async_*.py | |
| - name: ai-embeddings-backpressure | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_backpressure*.py | |
| tldw_Server_API/tests/Embeddings/test_batch_rate_headers.py | |
| - name: ai-embeddings-chromadb-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chromadb_*.py | |
| - name: ai-embeddings-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chunk_metadata_backfill.py | |
| tldw_Server_API/tests/Embeddings/test_circuit_breaker_*.py | |
| tldw_Server_API/tests/Embeddings/test_compactor_admin_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_connection_pool_failure_accounting.py | |
| tldw_Server_API/tests/Embeddings/test_contextual_chunking.py | |
| - name: ai-embeddings-dlq-config | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_delete_by_filter_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_dlq_*.py | |
| tldw_Server_API/tests/Embeddings/test_embedding_*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_audit_adapter.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_batch_dimensions.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_dimensions_policy.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_endpoint_cache_identity.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_fallback*.py | |
| - name: ai-embeddings-jobs-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_jobs*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_local_api.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_loop_scoping.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_memory*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_metric*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_model_management.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_optional_deps_import.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_redis*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_rg_sync_helper.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_test_mode_truthiness.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_token_arrays.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_unsupported_provider.py | |
| - name: ai-embeddings-policy | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_policy*.py | |
| tldw_Server_API/tests/Embeddings/test_l2_normalization_policy.py | |
| - name: ai-embeddings-v5-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_production.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_property.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_unit.py | |
| - name: ai-embeddings-v5-integration | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_integration.py | |
| - name: ai-embeddings-hyde-ledger | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_hyde_backfill_cli.py | |
| tldw_Server_API/tests/Embeddings/test_ledger_status_endpoint.py | |
| - name: ai-embeddings-media-validation | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_media_*.py | |
| tldw_Server_API/tests/Embeddings/test_message_validator*.py | |
| - name: ai-embeddings-observability | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_metrics*.py | |
| tldw_Server_API/tests/Embeddings/test_model_eviction_in_use_guard.py | |
| tldw_Server_API/tests/Embeddings/test_multi_tier_cache_sync_async_loop.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_pgvector*.py | |
| tldw_Server_API/tests/Embeddings/test_priority_bump_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_redis_integration_smoke.py | |
| tldw_Server_API/tests/Embeddings/test_reembed_schedule_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_request*.py | |
| tldw_Server_API/tests/Embeddings/test_schema_drift.py | |
| tldw_Server_API/tests/Embeddings/test_stage_controls.py | |
| tldw_Server_API/tests/Embeddings/test_storage_idempotency_property.py | |
| tldw_Server_API/tests/Embeddings/test_trace_headers.py | |
| tldw_Server_API/tests/Embeddings/test_vector*.py | |
| - name: vector-stores-integration | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/integration | |
| - name: vector-stores-api | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/test*.py | |
| - name: vector-stores-unit | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/unit | |
| - name: paper-search | |
| paths: >- | |
| tldw_Server_API/tests/PaperSearch | |
| - name: rag-legacy | |
| paths: >- | |
| tldw_Server_API/tests/RAG | |
| - name: rag-new-integration-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_adapter_guards.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_bm25_weights.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_capabilities_styles.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_health_endpoints.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_integration.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_request_contract_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_source_health_endpoint.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_stream_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_strict_extractive_nli_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_unified_features_endpoint.py | |
| - name: rag-new-integration-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_agentic_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_research_agent_loop.py | |
| - name: rag-new-integration-batch | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_checkpoint_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_resume_api.py | |
| - name: rag-new-integration-research | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_ablate_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_benchmarks_ablation.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_doc_researcher_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_retriever_pgvector_multi_search.py | |
| - name: rag-new-property-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/property/test_*.py | |
| tldw_Server_API/tests/RAG_NEW/test_*.py | |
| - name: rag-new-unit-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_agentic_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_agentic*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_research_agent.py | |
| - name: rag-new-unit-cache-vector | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_cache_invalidation_core.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chromadb*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_embedding_cache_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pgvector_adapter_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rewrite_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_semantic_cache*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_vector*.py | |
| - name: rag-new-unit-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_reranking_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_retrieval_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_flashrank_reranker_init.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_functional_pipeline.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_generation*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_hyde*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_kanban_retriever.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_learned_fusion_simple.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_llamacpp_reranker_topk_full_input.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pipeline*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_post*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pre_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_query*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_request*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_response_writer.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_reranker*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_streaming_executor.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_two_tier_reranker.py | |
| - name: rag-new-unit-unified-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_unified_pipeline*.py | |
| - name: rag-new-unit-rag-contracts | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rag*.py | |
| - name: rag-new-unit-guardrails-source | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_citations_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_guardrails*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_path_validation_security.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_payload_exemplars*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_security_filters_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_source*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_strict_extractive_and_citations.py | |
| - name: rag-new-unit-media-ingest | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_block_to_chunks.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chunk_fts_integration.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_document_processing_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_enhanced_chunking_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_ingest_dedupe_and_chunk_ids.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_media*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_structure_index.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_temporal_filters.py | |
| - name: rag-new-unit-core-misc | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_analytics_db_dev_reconciliation.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_batch*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_clarification_gate.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_corpus_synonyms_expansion.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_evidence_chains_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_feedback_learning.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_fts_query_translation_edge_cases.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_knowledge_source_retrieval_coverage.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_phase_metrics.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_prompt_templates_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_quick_wins_spell_check_compat.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_schema_corpus_alias.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_standard_core_contract_threading.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_suggestion_generator.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_synonyms_registry_logging.py | |
| - name: research-websearch | |
| paths: >- | |
| tldw_Server_API/tests/Research | |
| tldw_Server_API/tests/WebSearch | |
| - name: media-audio | |
| paths: >- | |
| tldw_Server_API/tests/Audio | |
| tldw_Server_API/tests/Audio_Studio | |
| tldw_Server_API/tests/AudioJobs | |
| tldw_Server_API/tests/STT | |
| tldw_Server_API/tests/TTS | |
| tldw_Server_API/tests/TTS_NEW | |
| tldw_Server_API/tests/VLM | |
| - name: media-core-documents | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_document*.py | |
| tldw_Server_API/tests/Media/test_pdf_text_normalization.py | |
| - name: media-core-api | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_archive_member_cap.py | |
| tldw_Server_API/tests/Media/test_auto_chunking_process_endpoints.py | |
| tldw_Server_API/tests/Media/test_cache_index.py | |
| tldw_Server_API/tests/Media/test_ingest_web_content_endpoint_sanitization.py | |
| tldw_Server_API/tests/Media/test_json_*.py | |
| tldw_Server_API/tests/Media/test_media_*.py | |
| tldw_Server_API/tests/Media/test_navigation_policy_contract.py | |
| tldw_Server_API/tests/Media/test_process_code_and_uploads.py | |
| tldw_Server_API/tests/Media/test_upload_sink_security.py | |
| tldw_Server_API/tests/Media/unit | |
| - name: media-ingestion-new-ocr | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/test_*.py | |
| - name: media-ingestion-new-integration | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/integration | |
| - name: media-ingestion-new-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_archive_and_sanitization.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_audio_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_auto_chunking_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_zip_safe_extract.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_processing_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ebook_safe_paths.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_email_endpoint_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_file_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_filename_and_mime_and_archive.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ingest_jobs_batch_lookup.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_add_deps_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_canonical_helpers.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_ingest*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_list_no_slash_redirect.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_upload_failures.py | |
| - name: media-ingestion-new-unit-mediawiki | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_mediawiki_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ms_g_eval_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_analysis_regressions.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_safe_paths.py | |
| - name: media-ingestion-new-unit-persistence | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_persistence_*.py | |
| - name: media-ingestion-new-unit-processing | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_plaintext_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_playlist_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_batch_media_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_document_like_item_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_transcription_models_endpoint.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_utils_time_conversion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_video_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_visual_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_xml_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_youtube_audio_downloads.py | |
| - name: media-ingestion-modification | |
| paths: >- | |
| tldw_Server_API/tests/Media_Ingestion_Modification | |
| - name: media-legacy-free | |
| paths: >- | |
| tldw_Server_API/tests/Media | |
| tldw_Server_API/tests/MediaIngestion_NEW | |
| - name: chat-character-legacy-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_character_chat_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_dictionary_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_settings_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_e2e_mock.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_unified_flag_monkeypatched.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_completions_tool_messages_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_export_includes_tools_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_legacy_complete_deprecation.py | |
| tldw_Server_API/tests/Character_Chat/test_messages_tool_calls_exposure.py | |
| tldw_Server_API/tests/Character_Chat/test_persona_dialogue_tree_character_eval.py | |
| - name: chat-character-legacy-files | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_file_mime_detection.py | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py | |
| - name: chat-character-legacy-worldbook | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_manager_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_prompt_context.py | |
| tldw_Server_API/tests/Character_Chat/unit/test_chat_session_character_scope_api.py | |
| - name: chat-character-db-core | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_ccv3_parser.py | |
| tldw_Server_API/tests/Characters/test_chacha_postgres_sync_log_entity_column.py | |
| tldw_Server_API/tests/Characters/test_character_chat_greetings_api.py | |
| tldw_Server_API/tests/Characters/test_character_chat_lib.py | |
| tldw_Server_API/tests/Characters/test_character_functionality_db.py | |
| tldw_Server_API/tests/Characters/test_characters_world_book_permissions_unit.py | |
| - name: chat-character-db-api | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_characters_endpoint.py | |
| - name: chat-character-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/test_utils.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_cards_fts_bootstrap.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_default_provider.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_manager.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_generation_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_memory.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_prompt_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_templates.py | |
| - name: chat-character-unit-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_completion_precheck.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_grammar_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_create_schema.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_error_mapping.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_settings_merge.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_group_chat_scope_resolution.py | |
| - name: chat-character-unit-persona | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_embeddings.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_selector.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_telemetry.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_png_export.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_postgres_backends.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_stream_persist_lookup.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_appendable.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_manager.py | |
| - name: chat-character-unit-prd | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_prd_round2_endpoints.py | |
| - name: chat-character-property | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/property | |
| - name: chat-character-integration-api | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_exemplars_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_memory_endpoint.py | |
| - name: chat-character-integration-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_auto_routing.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_stream_and_persist.py | |
| - name: chat-character-integration-context | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_conversation_context_primitives.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_role_normalization_and_search.py | |
| - name: chat-legacy-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chat/test*.py | |
| tldw_Server_API/tests/Chat/integration | |
| - name: chat-legacy-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[a-l]*.py | |
| - name: chat-legacy-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[m-z]*.py | |
| - name: chat-new-integration-property | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/integration | |
| tldw_Server_API/tests/Chat_NEW/property | |
| - name: chat-new-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[a-l]*.py | |
| - name: chat-new-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[m-z]*.py | |
| - name: chatbooks-streaming | |
| paths: >- | |
| tldw_Server_API/tests/Chatbooks | |
| tldw_Server_API/tests/Explainer | |
| tldw_Server_API/tests/Streaming | |
| - name: explainer-core | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: llm-adapters-unit | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/unit | |
| tldw_Server_API/tests/LLM_Adapters/benchmarks | |
| - name: llm-adapters-chat-endpoint | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_anthropic_native.py | |
| - name: llm-adapters-chat-errors-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_core_providers.py | |
| - name: llm-adapters-chat-errors-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_google_mistral.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_midstream_error_all.py | |
| - name: llm-adapters-orchestrator-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_anthropic_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_google_mistral.py | |
| - name: llm-adapters-orchestrator-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_groq_openrouter_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_stage3.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_streaming_error_all.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_bedrock_adapter.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_tool_choice_json_mode_endpoint.py | |
| - name: llm-calls-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/test_*.py | |
| - name: llm-calls-property | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/property | |
| - name: llm-local-runtime | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Local | |
| - name: llm-local-backends | |
| paths: >- | |
| tldw_Server_API/tests/LLamaCpp | |
| tldw_Server_API/tests/Local_LLM | |
| - name: product-claims-core | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claim_cluster_upsert_idempotency.py | |
| tldw_Server_API/tests/Claims/test_claim_embeddings_chroma.py | |
| tldw_Server_API/tests/Claims/test_claim_review_rule_assignment.py | |
| tldw_Server_API/tests/Claims/test_claims_alerts_*.py | |
| tldw_Server_API/tests/Claims/test_claims_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_analytics_exports_cleanup.py | |
| tldw_Server_API/tests/Claims/test_claims_api_strict_parse_mode.py | |
| tldw_Server_API/tests/Claims/test_claims_budget_guard.py | |
| tldw_Server_API/tests/Claims/test_claims_cluster*.py | |
| tldw_Server_API/tests/Claims/test_claims_compat_types.py | |
| - name: product-claims-engine | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_dashboard_analytics.py | |
| tldw_Server_API/tests/Claims/test_claims_embedding_refresh_config.py | |
| tldw_Server_API/tests/Claims/test_claims_endpoints_api.py | |
| tldw_Server_API/tests/Claims/test_claims_engine_*.py | |
| tldw_Server_API/tests/Claims/test_claims_extractor*.py | |
| tldw_Server_API/tests/Claims/test_claims_items_api.py | |
| - name: product-claims-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_monitoring_*.py | |
| tldw_Server_API/tests/Claims/test_claims_output_parser.py | |
| tldw_Server_API/tests/Claims/test_claims_prompt_validation.py | |
| tldw_Server_API/tests/Claims/test_claims_rebuild_*.py | |
| tldw_Server_API/tests/Claims/test_claims_response_format_contracts.py | |
| tldw_Server_API/tests/Claims/test_claims_review_*.py | |
| - name: product-claims-service | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_runtime_config.py | |
| tldw_Server_API/tests/Claims/test_claims_service_*.py | |
| tldw_Server_API/tests/Claims/test_claims_settings_*.py | |
| tldw_Server_API/tests/Claims/test_claims_span_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_status_and_envelope_api.py | |
| tldw_Server_API/tests/Claims/test_claims_utils_persistence.py | |
| tldw_Server_API/tests/Claims/test_claims_watchlist_notifications.py | |
| tldw_Server_API/tests/Claims/test_claims_webhook_delivery.py | |
| tldw_Server_API/tests/Claims/test_ingestion_*.py | |
| - name: product-collections | |
| paths: >- | |
| tldw_Server_API/tests/Collections | |
| - name: product-evaluations-abtest | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/embeddings_abtest/test*.py | |
| tldw_Server_API/tests/Evaluations/test_abtest_*.py | |
| tldw_Server_API/tests/Evaluations/test_embeddings_abtest_*.py | |
| - name: product-evaluations-core | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_benchmark_*.py | |
| tldw_Server_API/tests/Evaluations/test_circuit_breaker.py | |
| tldw_Server_API/tests/Evaluations/test_connection_pool.py | |
| tldw_Server_API/tests/Evaluations/test_db_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_error_scenarios.py | |
| tldw_Server_API/tests/Evaluations/test_eval_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluation_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_audit_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_backend_dual.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_core_hardening.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_benchmarks_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_crud_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_datasets_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_migration_cli.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_postgres_crud.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_rag_pipeline_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_stage*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_unified.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_webhooks_*.py | |
| tldw_Server_API/tests/Evaluations/test_mineru_ocr_evaluator.py | |
| tldw_Server_API/tests/Evaluations/test_ms_g_eval.py | |
| tldw_Server_API/tests/Evaluations/test_ocr_metrics.py | |
| tldw_Server_API/tests/Evaluations/test_production_features_integration.py | |
| tldw_Server_API/tests/Evaluations/test_proposition_evaluations.py | |
| tldw_Server_API/tests/Evaluations/test_rag_*.py | |
| tldw_Server_API/tests/Evaluations/test_security.py | |
| tldw_Server_API/tests/Evaluations/test_synthetic_eval_service.py | |
| tldw_Server_API/tests/Evaluations/test_unified_evaluation_service_strict_audit.py | |
| - name: product-evaluations-integration | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/integration/test*.py | |
| tldw_Server_API/tests/Evaluations/property/test*.py | |
| - name: product-evaluations-recipes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_persona_*.py | |
| tldw_Server_API/tests/Evaluations/test_recipe_*.py | |
| - name: product-evaluations-unit | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/unit/test_*.py | |
| - name: product-flashcards | |
| paths: >- | |
| tldw_Server_API/tests/Flashcards/test*.py | |
| - name: product-explainer | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: product-notes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Notes | |
| tldw_Server_API/tests/Notes_NEW | |
| tldw_Server_API/tests/Persona | |
| tldw_Server_API/tests/Personalization | |
| - name: product-prompts-legacy | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management | |
| - name: product-prompts-new | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management_NEW | |
| - name: product-watchlists-a-r | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_admin_*.py | |
| tldw_Server_API/tests/Watchlists/test_audio_*.py | |
| tldw_Server_API/tests/Watchlists/test_companion_*.py | |
| tldw_Server_API/tests/Watchlists/test_dedup_*.py | |
| tldw_Server_API/tests/Watchlists/test_delivery_*.py | |
| tldw_Server_API/tests/Watchlists/test_e2e_*.py | |
| tldw_Server_API/tests/Watchlists/test_fetchers_*.py | |
| tldw_Server_API/tests/Watchlists/test_filter_*.py | |
| tldw_Server_API/tests/Watchlists/test_filters_*.py | |
| tldw_Server_API/tests/Watchlists/test_first_*.py | |
| tldw_Server_API/tests/Watchlists/test_full_*.py | |
| tldw_Server_API/tests/Watchlists/test_include_*.py | |
| tldw_Server_API/tests/Watchlists/test_job_*.py | |
| tldw_Server_API/tests/Watchlists/test_newsletter_*.py | |
| tldw_Server_API/tests/Watchlists/test_operational_*.py | |
| tldw_Server_API/tests/Watchlists/test_opml_*.py | |
| tldw_Server_API/tests/Watchlists/test_perf_*.py | |
| tldw_Server_API/tests/Watchlists/test_pipeline_*.py | |
| tldw_Server_API/tests/Watchlists/test_preview_*.py | |
| tldw_Server_API/tests/Watchlists/test_rate_*.py | |
| tldw_Server_API/tests/Watchlists/test_rss_*.py | |
| tldw_Server_API/tests/Watchlists/test_run_*.py | |
| tldw_Server_API/tests/Watchlists/test_runs_*.py | |
| - name: product-watchlists-core | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_scheduler_*.py | |
| tldw_Server_API/tests/Watchlists/test_output_enrichment_scheduler.py | |
| tldw_Server_API/tests/Watchlists/test_site_*.py | |
| tldw_Server_API/tests/Watchlists/test_subscriptions_*.py | |
| tldw_Server_API/tests/Watchlists/test_template_*.py | |
| tldw_Server_API/tests/Watchlists/test_templates_*.py | |
| tldw_Server_API/tests/Watchlists/test_tts_*.py | |
| tldw_Server_API/tests/Watchlists/test_watchlist_*.py | |
| tldw_Server_API/tests/Watchlists/test_youtube_*.py | |
| - name: product-watchlists-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_watchlists_*.py | |
| - name: product-workflows-adapters-core | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/adapters/test_*.py | |
| - name: product-workflows-step-adapters | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_new_step_adapters.py | |
| - name: product-workflows-step-registry | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_step_registry_runtime_coverage.py | |
| - name: product-workflows-step-capabilities | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_workflow_step_capabilities.py | |
| - name: product-workflows-engine | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_engine_*.py | |
| tldw_Server_API/tests/Workflows/test_dual_backend_engine.py | |
| tldw_Server_API/tests/Workflows/test_orphan_requeue_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_map_substeps_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_attempt_failures.py | |
| tldw_Server_API/tests/Workflows/test_workflow_stress.py | |
| tldw_Server_API/tests/Workflows/test_workflows_scheduler.py | |
| - name: product-workflows-api | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_artifact_*.py | |
| tldw_Server_API/tests/Workflows/test_events_*.py | |
| tldw_Server_API/tests/Workflows/test_runs_*.py | |
| tldw_Server_API/tests/Workflows/test_webhook_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_approval_permissions.py | |
| tldw_Server_API/tests/Workflows/test_workflow_investigation_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_preflight_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_templates_api.py | |
| tldw_Server_API/tests/Workflows/test_workflows_api.py | |
| - name: product-workflows-storage | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_dual_backend_workflows.py | |
| tldw_Server_API/tests/Workflows/test_egress_policy.py | |
| tldw_Server_API/tests/Workflows/test_mcp_tool_*.py | |
| tldw_Server_API/tests/Workflows/test_media_ingest_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_db*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_pg_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_postgres_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_tokens_cost_*.py | |
| - name: product-workflows-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_adapter_path_security.py | |
| tldw_Server_API/tests/Workflows/test_llm_adapter.py | |
| tldw_Server_API/tests/Workflows/test_stage3_chunkers_rag.py | |
| tldw_Server_API/tests/Workflows/test_tts_workflow_normalization.py | |
| tldw_Server_API/tests/Workflows/test_versions_idempotency.py | |
| tldw_Server_API/tests/Workflows/test_workflows_artifact_gc_service.py | |
| tldw_Server_API/tests/Workflows/test_workflows_dag_validation.py | |
| tldw_Server_API/tests/Workflows/test_workflows_extras.py | |
| tldw_Server_API/tests/Workflows/test_workflows_fuzz.py | |
| tldw_Server_API/tests/Workflows/test_workflows_idempotency_ttl.py | |
| tldw_Server_API/tests/Workflows/test_workflows_run_metadata.py | |
| tldw_Server_API/tests/Workflows/test_workflows_truthiness_flags.py | |
| - name: product-prompt-studio | |
| paths: >- | |
| tldw_Server_API/tests/prompt_studio | |
| - name: platform-infrastructure-metrics | |
| paths: >- | |
| tldw_Server_API/tests/Infrastructure | |
| tldw_Server_API/tests/Metrics | |
| tldw_Server_API/tests/Monitoring | |
| - name: platform-mcp-core | |
| paths: >- | |
| tldw_Server_API/tests/MCP | |
| tldw_Server_API/tests/MCP_unified | |
| - name: platform-resource-governance | |
| paths: >- | |
| tldw_Server_API/tests/Resource_Governance | |
| - name: platform-services-startup | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_startup_*.py | |
| - name: platform-services-shutdown-lifespan | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_shutdown_*.py | |
| tldw_Server_API/tests/Services/test_lifespan_*.py | |
| tldw_Server_API/tests/Services/test_worker_lifecycle_ownership_matrix.py | |
| - name: platform-services-core | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_admin_*.py | |
| tldw_Server_API/tests/Services/test_app_*.py | |
| tldw_Server_API/tests/Services/test_claims_*.py | |
| tldw_Server_API/tests/Services/test_compatibility_*.py | |
| tldw_Server_API/tests/Services/test_connectors_*.py | |
| tldw_Server_API/tests/Services/test_document_*.py | |
| tldw_Server_API/tests/Services/test_drain_*.py | |
| tldw_Server_API/tests/Services/test_enhanced_*.py | |
| tldw_Server_API/tests/Services/test_ephemeral_*.py | |
| tldw_Server_API/tests/Services/test_executor_*.py | |
| tldw_Server_API/tests/Services/test_file_*.py | |
| tldw_Server_API/tests/Services/test_jobs_*.py | |
| tldw_Server_API/tests/Services/test_kanban_*.py | |
| tldw_Server_API/tests/Services/test_lifecycle_*.py | |
| tldw_Server_API/tests/Services/test_loop_*.py | |
| tldw_Server_API/tests/Services/test_media_*.py | |
| tldw_Server_API/tests/Services/test_outputs_*.py | |
| tldw_Server_API/tests/Services/test_persona_*.py | |
| tldw_Server_API/tests/Services/test_placeholder_*.py | |
| tldw_Server_API/tests/Services/test_service_*.py | |
| tldw_Server_API/tests/Services/test_storage_*.py | |
| tldw_Server_API/tests/Services/test_tts_*.py | |
| tldw_Server_API/tests/Services/test_writing_annotation_review_jobs_worker.py | |
| tldw_Server_API/tests/Services/test_workflows_*.py | |
| tldw_Server_API/tests/Services/test_xml_*.py | |
| - name: platform-services-main-routing | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_claims_rebuild_startup.py | |
| tldw_Server_API/tests/Services/test_main_lifecycle_contract.py | |
| tldw_Server_API/tests/Services/test_main_readiness_shutdown.py | |
| tldw_Server_API/tests/Services/test_main_router_contract.py | |
| tldw_Server_API/tests/Services/test_openapi_contracts.py | |
| tldw_Server_API/tests/Services/test_router_groups_contract.py | |
| - name: platform-services-main-pollers | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_shutdown_job_pollers.py | |
| - name: platform-sandbox-admin-artifacts | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_admin_*.py | |
| tldw_Server_API/tests/sandbox/test_artifact*.py | |
| - name: platform-sandbox-runtimes | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_docker_*.py | |
| tldw_Server_API/tests/sandbox/test_firecracker_*.py | |
| tldw_Server_API/tests/sandbox/test_lima_*.py | |
| tldw_Server_API/tests/sandbox/test_macos_*.py | |
| tldw_Server_API/tests/sandbox/test_runner_*.py | |
| tldw_Server_API/tests/sandbox/test_runtime_*.py | |
| tldw_Server_API/tests/sandbox/test_runtimes_*.py | |
| tldw_Server_API/tests/sandbox/test_operator_*.py | |
| tldw_Server_API/tests/sandbox/test_seatbelt_*.py | |
| tldw_Server_API/tests/sandbox/test_vz_*.py | |
| - name: platform-sandbox-state-store | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_acp_*.py | |
| tldw_Server_API/tests/sandbox/test_cross_*.py | |
| tldw_Server_API/tests/sandbox/test_execution_*.py | |
| tldw_Server_API/tests/sandbox/test_feature_*.py | |
| tldw_Server_API/tests/sandbox/test_glob_*.py | |
| tldw_Server_API/tests/sandbox/test_idempotency_*.py | |
| tldw_Server_API/tests/sandbox/test_interactive_*.py | |
| tldw_Server_API/tests/sandbox/test_network_*.py | |
| tldw_Server_API/tests/sandbox/test_orchestrator_*.py | |
| tldw_Server_API/tests/sandbox/test_policy_*.py | |
| tldw_Server_API/tests/sandbox/test_queue_*.py | |
| tldw_Server_API/tests/sandbox/test_redis_*.py | |
| tldw_Server_API/tests/sandbox/test_run_*.py | |
| tldw_Server_API/tests/sandbox/test_sandbox_*.py | |
| tldw_Server_API/tests/sandbox/test_snapshot_*.py | |
| tldw_Server_API/tests/sandbox/test_store_*.py | |
| tldw_Server_API/tests/sandbox/test_warm_*.py | |
| tldw_Server_API/tests/sandbox/test_workspace_*.py | |
| tldw_Server_API/tests/sandbox/test_worktree_*.py | |
| - name: platform-sandbox-ws-streams | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_cancel_*.py | |
| tldw_Server_API/tests/sandbox/test_event_bridge.py | |
| tldw_Server_API/tests/sandbox/test_session_*.py | |
| tldw_Server_API/tests/sandbox/test_streams_*.py | |
| tldw_Server_API/tests/sandbox/test_ws_*.py | |
| - name: integrations | |
| paths: >- | |
| tldw_Server_API/tests/External_Sources | |
| tldw_Server_API/tests/Notifications | |
| tldw_Server_API/tests/Tools | |
| tldw_Server_API/tests/WebScraping | |
| tldw_Server_API/tests/Web_Scraping | |
| tldw_Server_API/tests/integration | |
| services: | |
| postgres: | |
| image: mirror.gcr.io/library/postgres:18-bookworm | |
| env: | |
| POSTGRES_USER: tldw_user | |
| POSTGRES_PASSWORD: TestPassword123! | |
| POSTGRES_DB: tldw_content | |
| ports: | |
| - 5432/tcp | |
| options: >- | |
| --health-cmd "pg_isready -U tldw_user -d tldw_content" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 10 | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| POSTGRES_TEST_HOST: 127.0.0.1 | |
| POSTGRES_TEST_DB: tldw_content | |
| POSTGRES_TEST_USER: tldw_user | |
| POSTGRES_TEST_PASSWORD: TestPassword123! | |
| TEST_DB_HOST: 127.0.0.1 | |
| TEST_DB_USER: tldw_user | |
| TEST_DB_PASSWORD: TestPassword123! | |
| TEST_DB_NAME: tldw_test | |
| TLDW_TEST_POSTGRES_REQUIRED: '1' | |
| REDIS_URL: redis://127.0.0.1:6379/0 | |
| EMBEDDINGS_REDIS_URL: redis://127.0.0.1:6379/0 | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| SHARD_NAME: ${{ matrix.shard.name }} | |
| TEST_PATHS: ${{ matrix.shard.paths }} | |
| RESULTS_DIR: test-results-linux-3.12-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg and PortAudio (Linux) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.12' | |
| use-uv: 'true' | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev,multiplayer | |
| - name: Verify core e2e fixtures are discoverable | |
| if: matrix.shard.name == 'core-server-smoke' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| FIXTURES_OUTPUT="$(pytest --fixtures -q tldw_Server_API/tests || true)" | |
| TMPFILE=$(mktemp) | |
| printf "%s\n" "$FIXTURES_OUTPUT" > "$TMPFILE" | |
| if command -v rg >/dev/null 2>&1; then | |
| rg -q '^test_user_credentials\b' "$TMPFILE" || { echo 'Fixture test_user_credentials not found'; rm -f "$TMPFILE"; exit 1; } | |
| else | |
| grep -q '^test_user_credentials\b' "$TMPFILE" || { echo 'Fixture test_user_credentials not found'; rm -f "$TMPFILE"; exit 1; } | |
| fi | |
| rm -f "$TMPFILE" | |
| - name: Install pg client and wait for PG | |
| uses: ./.github/actions/wait-for-postgres | |
| with: | |
| host: 127.0.0.1 | |
| port: ${{ job.services.postgres.ports['5432'] }} | |
| user: tldw_user | |
| - name: Export PG env vars | |
| shell: bash | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| DB_PASSWORD="${POSTGRES_TEST_PASSWORD:?POSTGRES_TEST_PASSWORD is required}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@127.0.0.1:${PORT}/${DB_NAME}" | |
| echo "::add-mask::${DB_PASSWORD}" | |
| echo "::add-mask::${DB_URL}" | |
| { | |
| echo "POSTGRES_TEST_PORT=${PORT}" | |
| echo "TEST_DB_PORT=${PORT}" | |
| echo "TEST_DATABASE_URL=${DB_URL}" | |
| echo "DATABASE_URL=${DB_URL}" | |
| } >> "$GITHUB_ENV" | |
| - name: Ensure base DB exists | |
| shell: bash | |
| env: | |
| PGPASSWORD: ${{ env.POSTGRES_TEST_PASSWORD }} | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | grep -q 1 || \ | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -c "CREATE DATABASE ${DB_NAME}" | |
| - name: Install additional deps for PG tests | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install "psycopg[binary]>=3.1" pytest pytest-asyncio | |
| - name: Verify pytest plugins import | |
| shell: bash | |
| run: | | |
| python - <<'PY' | |
| import importlib | |
| import pytest_asyncio | |
| importlib.import_module('pytest_asyncio.plugin') | |
| importlib.import_module('pytest_benchmark.plugin') | |
| print('pytest_asyncio OK:', getattr(pytest_asyncio, '__version__', 'unknown')) | |
| print('pytest-benchmark OK') | |
| PY | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-linux-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '0' | |
| DEFER_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '240' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Print smoke server log on failure | |
| if: ${{ failure() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python - <<'PY' | |
| import os, pathlib | |
| label = os.environ.get('SERVER_LABEL', 'smoke') | |
| p = pathlib.Path(f'server-{label}.log') | |
| if p.exists(): | |
| print('===== smoke server log =====') | |
| print(p.read_text(encoding='utf-8')) | |
| PY | |
| - name: Smoke stop server | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Smoke start server (multi-user, Postgres) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| continue-on-error: true | |
| env: | |
| SERVER_LABEL: smoke-mu | |
| AUTH_MODE: multi_user | |
| JWT_SECRET_KEY: "test-ci-jwt-secret-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8001" | |
| SERVER_PORT: '8001' | |
| PYTEST_CURRENT_TEST: "ci-smoke-linux-multi::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '0' | |
| DEFER_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| TLDW_CONTENT_DB_BACKEND: 'sqlite' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check (multi-user) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| continue-on-error: true | |
| env: | |
| SERVER_LABEL: smoke-mu | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8001" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '240' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke stop server (multi-user) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke-mu | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Cache embedding models | |
| if: ${{ github.event_name != 'workflow_dispatch' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| uses: actions/cache@v5 | |
| with: | |
| path: models/embeddings | |
| key: ${{ runner.os }}-embeddings-static-v1 | |
| restore-keys: | | |
| ${{ runner.os }}-embeddings- | |
| - name: Pre-download embedding models | |
| if: ${{ (env.RUN_MODEL_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == 'true') && matrix.shard.name != 'ai-embeddings-backpressure' && matrix.shard.name != 'ai-embeddings-dlq-config' && matrix.shard.name != 'ai-embeddings-media-validation' && matrix.shard.name != 'ai-embeddings-policy' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'ai-embeddings-') || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install huggingface_hub | |
| python Helper_Scripts/download_embedding_models.py --target models/embeddings --skip-defaults --model sentence-transformers/all-MiniLM-L6-v2 | |
| echo "TLDW_EMBEDDING_MODELS_DIR=models/embeddings" >> "$GITHUB_ENV" | |
| - name: Run shard tests | |
| if: matrix.shard.name != 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| $TEST_PATHS \ | |
| --durations=50 \ | |
| --junit-xml="$RESULTS_DIR/${SHARD_NAME}.xml" | |
| - name: Run legacy-free media checks | |
| if: matrix.shard.name == 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| TLDW_DISABLE_LEGACY_MEDIA=1 pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| tldw_Server_API/tests/Media \ | |
| tldw_Server_API/tests/MediaIngestion_NEW \ | |
| --durations=25 \ | |
| --junit-xml="$RESULTS_DIR/media-legacy-free.xml" | |
| - name: Upload test results | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-ubuntu-py3.12-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| full-suite-linux-312-summary: | |
| name: Full Suite (Ubuntu / Python 3.12) | |
| runs-on: ubuntu-latest | |
| needs: [full-suite-linux-312-shards] | |
| if: always() | |
| steps: | |
| - name: Check Python 3.12 shard result | |
| shell: bash | |
| run: | | |
| r="${{ needs['full-suite-linux-312-shards'].result }}" | |
| if [ "$r" != "success" ] && [ "$r" != "skipped" ]; then | |
| echo "Python 3.12 full-suite shards finished with: $r" | |
| exit 1 | |
| fi | |
| echo "Python 3.12 full-suite shards passed (or skipped via path filter)." | |
| full-suite-linux-313-shards: | |
| name: Full Suite shard (Ubuntu / Python 3.13 / ${{ matrix.shard.name }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| needs: [lint, syntax-check, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: gap-verified-1 | |
| paths: >- | |
| tldw_Server_API/tests/Audiobooks | |
| tldw_Server_API/tests/Image_Generation | |
| - name: gap-verified-2 | |
| paths: >- | |
| tldw_Server_API/tests/Claims_Extraction | |
| tldw_Server_API/tests/Discord | |
| tldw_Server_API/tests/Files | |
| tldw_Server_API/tests/Meetings | |
| tldw_Server_API/tests/Notes_Tasks | |
| tldw_Server_API/tests/Sync | |
| tldw_Server_API/tests/Translation | |
| - name: gap-verified-3 | |
| paths: >- | |
| tldw_Server_API/tests/DataTables | |
| tldw_Server_API/tests/Embeddings_isolated | |
| tldw_Server_API/tests/Integrations | |
| tldw_Server_API/tests/PrototypeWorkspaces | |
| tldw_Server_API/tests/UserProfile | |
| tldw_Server_API/tests/VN_Platform | |
| - name: gap-verified-4 | |
| paths: >- | |
| tldw_Server_API/tests/Governance | |
| tldw_Server_API/tests/Ingestion_Sources | |
| tldw_Server_API/tests/Items | |
| tldw_Server_API/tests/Research_Workspace | |
| tldw_Server_API/tests/Skills | |
| tldw_Server_API/tests/StudyPacks | |
| tldw_Server_API/tests/VN_Play | |
| tldw_Server_API/tests/VN_Policy | |
| tldw_Server_API/tests/scripts | |
| - name: gap-verified-5 | |
| paths: >- | |
| tldw_Server_API/tests/Agent_Orchestration | |
| tldw_Server_API/tests/Chat_Workflows | |
| tldw_Server_API/tests/Notes_Graph | |
| tldw_Server_API/tests/Slides tldw_Server_API/tests/Text2SQL | |
| tldw_Server_API/tests/wizard | |
| - name: gap-verified-6 | |
| paths: >- | |
| tldw_Server_API/tests/API_Deps | |
| tldw_Server_API/tests/AuthNZ_Federation | |
| tldw_Server_API/tests/CodeGraph | |
| tldw_Server_API/tests/MCP_Hub | |
| tldw_Server_API/tests/MediaFiles | |
| tldw_Server_API/tests/Scheduler | |
| tldw_Server_API/tests/Slack | |
| tldw_Server_API/tests/VN_Assets | |
| - name: gap-verified-7 | |
| paths: >- | |
| tldw_Server_API/tests/Guardian | |
| - name: gap-verified-8 | |
| paths: >- | |
| tldw_Server_API/tests/Storage | |
| tldw_Server_API/tests/StudySuggestions | |
| tldw_Server_API/tests/Quizzes | |
| - name: gap-verified-9 | |
| paths: >- | |
| tldw_Server_API/tests/Docs tldw_Server_API/tests/performance | |
| - name: gap-verified-10 | |
| paths: >- | |
| tldw_Server_API/tests/Writing | |
| - name: gap-verified-11 | |
| paths: >- | |
| tldw_Server_API/tests/Sharing | |
| tldw_Server_API/tests/VoiceAssistant | |
| - name: gap-verified-12 | |
| paths: >- | |
| tldw_Server_API/tests/Billing | |
| tldw_Server_API/tests/CI | |
| tldw_Server_API/tests/FileArtifacts | |
| - name: core-server-smoke | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/Logging | |
| - name: core-config | |
| paths: >- | |
| tldw_Server_API/tests/Config | |
| - name: core-audit-support | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_audit_*.py | |
| tldw_Server_API/tests/Audit/test_pii_pattern_groups.py | |
| tldw_Server_API/tests/Audit/test_risk_settings_overrides.py | |
| tldw_Server_API/tests/Audit/test_sqlite_runtime_pragmas.py | |
| - name: core-audit-unified | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_unified_audit_service.py | |
| - name: core-security | |
| paths: >- | |
| tldw_Server_API/tests/Security | |
| - name: core-setup-usage | |
| paths: >- | |
| tldw_Server_API/tests/Setup | |
| tldw_Server_API/tests/Usage | |
| - name: core-utils-tooling | |
| paths: >- | |
| tldw_Server_API/tests/Helper_Scripts | |
| tldw_Server_API/tests/Context_Integrity | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/helpers | |
| tldw_Server_API/tests/http_client | |
| tldw_Server_API/tests/lint | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: admin-a-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_a*.py | |
| - name: admin-budgets | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_budgets_*.py | |
| - name: admin-bundle-sanitizers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_bundle_service_sanitizers.py | |
| - name: admin-bundle-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_bundle_ops.py | |
| - name: admin-byok-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_service_sanitizers.py | |
| - name: admin-byok-validation | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_validation_*.py | |
| tldw_Server_API/tests/Admin/test_byok_*.py | |
| - name: admin-backup-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_backup_schedules_api.py | |
| - name: admin-backup-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_backup_*.py | |
| tldw_Server_API/tests/Admin/test_backup_schedules_repo.py | |
| - name: admin-conflicts-data-admin | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_c*.py | |
| tldw_Server_API/tests/Admin/test_admin_data_*.py | |
| - name: admin-data-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_ops.py | |
| - name: admin-data-subject-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_api.py | |
| - name: admin-data-subject-repo-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_repo.py | |
| tldw_Server_API/tests/Admin/test_dsr_*.py | |
| - name: admin-e2e-access | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_are_unavailable_without_flag | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_require_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_reject_wrong_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_fail_closed_without_configured_support_key | |
| - name: admin-e2e-seed | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_stable_fixture_ids | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_debug_role_principals | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_requires_explicit_fixture_passwords | |
| - name: admin-e2e-single-user | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_single_user_login_key | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_single_user_api_key_can_read_users_me | |
| - name: admin-e2e-session-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_rejects_unsafe_backup_paths | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_bootstrap_jwt_session_returns_cookie_payload | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_dsr_seed_supports_real_preview | |
| - name: admin-e2e-reset-backups | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_backup_schedules | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_monitoring_authority_state | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_run_due_backup_schedules_processes_scheduled_run | |
| - name: admin-g-i | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_g*.py | |
| tldw_Server_API/tests/Admin/test_admin_i*.py | |
| - name: admin-llm-providers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_llm_providers_*.py | |
| - name: admin-incidents | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_incidents_*.py | |
| - name: admin-llm-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_llm_usage_endpoints.py | |
| - name: admin-maintenance-misc | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_maintenance_*.py | |
| tldw_Server_API/tests/Admin/test_admin_misc_endpoints.py | |
| tldw_Server_API/tests/Admin/test_maintenance_*.py | |
| - name: admin-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_monitoring_*.py | |
| tldw_Server_API/tests/Admin/test_monitoring_*.py | |
| - name: admin-ops-dependencies | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_dependencies.py | |
| - name: admin-ops-endpoints | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_new_endpoints.py | |
| - name: admin-ops-webhooks-orgs | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_webhooks_reports.py | |
| tldw_Server_API/tests/Admin/test_admin_orgs_*.py | |
| - name: admin-profiles-rate-registration | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_profiles_*.py | |
| tldw_Server_API/tests/Admin/test_admin_rate_limits_*.py | |
| tldw_Server_API/tests/Admin/test_admin_registration_*.py | |
| - name: admin-pricing-retention-roles-router | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_pricing_reload_endpoint.py | |
| tldw_Server_API/tests/Admin/test_retention_policy_preview_api.py | |
| tldw_Server_API/tests/Admin/test_role_*.py | |
| tldw_Server_API/tests/Admin/test_router_analytics_*.py | |
| - name: admin-s-sessions-settings | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_scope_service_enterprise_mode.py | |
| tldw_Server_API/tests/Admin/test_admin_service_log_sanitizers.py | |
| tldw_Server_API/tests/Admin/test_admin_sessions_*.py | |
| tldw_Server_API/tests/Admin/test_admin_settings_service.py | |
| tldw_Server_API/tests/Admin/test_admin_smoke.py | |
| - name: admin-split-storage-tools | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_split_*.py | |
| tldw_Server_API/tests/Admin/test_admin_storage_quotas.py | |
| tldw_Server_API/tests/Admin/test_admin_system_ops_service.py | |
| tldw_Server_API/tests/Admin/test_admin_t*.py | |
| - name: admin-users | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_u*.py | |
| - name: admin-watchlists-webhooks | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_w*.py | |
| - name: admin-system-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_system_ops.py | |
| tldw_Server_API/tests/Admin/test_usage_reporting*.py | |
| - name: auth-integration-admin-auth | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_admin_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_api_key_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_auth_*.py | |
| - name: auth-integration-authnz | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_authnz_*.py | |
| - name: auth-integration-b-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_[b-z]*.py | |
| - name: auth-postgres | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Postgres | |
| - name: auth-core-root-property | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/test*.py | |
| tldw_Server_API/tests/AuthNZ/property/test*.py | |
| - name: auth-core-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[a-l]*.py | |
| - name: auth-core-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[m-z]*.py | |
| - name: auth-sqlite | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_SQLite | |
| - name: auth-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[a-l]*.py | |
| - name: auth-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[m-z]*.py | |
| - name: chacha-core-stores | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chacha_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chachanotes_db.py | |
| - name: chacha-character-conversation | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_character_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_conversation_*.py | |
| - name: chacha-content-persona | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_flashcard*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_note_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_order_by_validation.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_persona_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_quizzes_basic.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_web_clipper_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_assistant_defaults_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_resource_memberships_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_sub_resources_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_writing_playground_db.py | |
| - name: db-privileges | |
| paths: >- | |
| tldw_Server_API/tests/DB | |
| tldw_Server_API/tests/DB_Management | |
| tldw_Server_API/tests/MediaDB2 | |
| tldw_Server_API/tests/PrivilegeCatalog | |
| tldw_Server_API/tests/Privileges | |
| - name: ai-chromadb | |
| paths: >- | |
| tldw_Server_API/tests/ChromaDB | |
| - name: ai-chunking-core | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_async_*.py | |
| tldw_Server_API/tests/Chunking/test_auto_*.py | |
| tldw_Server_API/tests/Chunking/test_chunker_*.py | |
| tldw_Server_API/tests/Chunking/test_process_text_components.py | |
| tldw_Server_API/tests/Chunking/test_process_text_refactor_equivalence.py | |
| tldw_Server_API/tests/Chunking/test_chunking_endpoint.py | |
| tldw_Server_API/tests/Chunking/test_chunking_offsets_property.py | |
| tldw_Server_API/tests/Chunking/test_chunking_overlap_properties.py | |
| tldw_Server_API/tests/Chunking/test_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_chunking_template_endpoint_errors.py | |
| - name: ai-chunking-templates | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestDatabaseOperations | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateInitialization | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateProcessing | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_endpoint_sanitization.py | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_validate_schema.py | |
| tldw_Server_API/tests/Chunking/test_template_*.py | |
| - name: ai-chunking-templates-api | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestAPIEndpoints | |
| - name: ai-chunking-templates-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestIntegration | |
| - name: ai-chunking-code-json-xml | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_code_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_json_*.py | |
| tldw_Server_API/tests/Chunking/test_xml_*.py | |
| - name: ai-chunking-semantic-security | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_hierarchical_*.py | |
| tldw_Server_API/tests/Chunking/test_offsets_additional.py | |
| tldw_Server_API/tests/Chunking/test_option_aliases.py | |
| tldw_Server_API/tests/Chunking/test_overlap_clamp.py | |
| tldw_Server_API/tests/Chunking/test_phase3_3_sanitizers.py | |
| tldw_Server_API/tests/Chunking/test_propositions_strategy.py | |
| tldw_Server_API/tests/Chunking/test_security*.py | |
| tldw_Server_API/tests/Chunking/test_semantic_*.py | |
| tldw_Server_API/tests/Chunking/test_sentence_spans_properties.py | |
| tldw_Server_API/tests/Chunking/test_streaming_overlap.py | |
| tldw_Server_API/tests/Chunking/test_thai_tables_spans.py | |
| tldw_Server_API/tests/Chunking/test_thread_safety.py | |
| tldw_Server_API/tests/Chunking/test_tokens_offsets.py | |
| tldw_Server_API/tests/Chunking/unit/test_tokens_fallback_offsets.py | |
| - name: ai-embeddings-async | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_async_*.py | |
| - name: ai-embeddings-backpressure | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_backpressure*.py | |
| tldw_Server_API/tests/Embeddings/test_batch_rate_headers.py | |
| - name: ai-embeddings-chromadb-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chromadb_*.py | |
| - name: ai-embeddings-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chunk_metadata_backfill.py | |
| tldw_Server_API/tests/Embeddings/test_circuit_breaker_*.py | |
| tldw_Server_API/tests/Embeddings/test_compactor_admin_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_connection_pool_failure_accounting.py | |
| tldw_Server_API/tests/Embeddings/test_contextual_chunking.py | |
| - name: ai-embeddings-dlq-config | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_delete_by_filter_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_dlq_*.py | |
| tldw_Server_API/tests/Embeddings/test_embedding_*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_audit_adapter.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_batch_dimensions.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_dimensions_policy.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_endpoint_cache_identity.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_fallback*.py | |
| - name: ai-embeddings-jobs-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_jobs*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_local_api.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_loop_scoping.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_memory*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_metric*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_model_management.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_optional_deps_import.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_redis*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_rg_sync_helper.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_test_mode_truthiness.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_token_arrays.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_unsupported_provider.py | |
| - name: ai-embeddings-policy | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_policy*.py | |
| tldw_Server_API/tests/Embeddings/test_l2_normalization_policy.py | |
| - name: ai-embeddings-v5-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_production.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_property.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_unit.py | |
| - name: ai-embeddings-v5-integration | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_integration.py | |
| - name: ai-embeddings-hyde-ledger | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_hyde_backfill_cli.py | |
| tldw_Server_API/tests/Embeddings/test_ledger_status_endpoint.py | |
| - name: ai-embeddings-media-validation | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_media_*.py | |
| tldw_Server_API/tests/Embeddings/test_message_validator*.py | |
| - name: ai-embeddings-observability | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_metrics*.py | |
| tldw_Server_API/tests/Embeddings/test_model_eviction_in_use_guard.py | |
| tldw_Server_API/tests/Embeddings/test_multi_tier_cache_sync_async_loop.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_pgvector*.py | |
| tldw_Server_API/tests/Embeddings/test_priority_bump_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_redis_integration_smoke.py | |
| tldw_Server_API/tests/Embeddings/test_reembed_schedule_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_request*.py | |
| tldw_Server_API/tests/Embeddings/test_schema_drift.py | |
| tldw_Server_API/tests/Embeddings/test_stage_controls.py | |
| tldw_Server_API/tests/Embeddings/test_storage_idempotency_property.py | |
| tldw_Server_API/tests/Embeddings/test_trace_headers.py | |
| tldw_Server_API/tests/Embeddings/test_vector*.py | |
| - name: vector-stores-integration | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/integration | |
| - name: vector-stores-api | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/test*.py | |
| - name: vector-stores-unit | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/unit | |
| - name: paper-search | |
| paths: >- | |
| tldw_Server_API/tests/PaperSearch | |
| - name: rag-legacy | |
| paths: >- | |
| tldw_Server_API/tests/RAG | |
| - name: rag-new-integration-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_adapter_guards.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_bm25_weights.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_capabilities_styles.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_health_endpoints.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_integration.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_request_contract_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_source_health_endpoint.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_stream_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_strict_extractive_nli_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_unified_features_endpoint.py | |
| - name: rag-new-integration-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_agentic_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_research_agent_loop.py | |
| - name: rag-new-integration-batch | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_checkpoint_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_resume_api.py | |
| - name: rag-new-integration-research | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_ablate_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_benchmarks_ablation.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_doc_researcher_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_retriever_pgvector_multi_search.py | |
| - name: rag-new-property-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/property/test_*.py | |
| tldw_Server_API/tests/RAG_NEW/test_*.py | |
| - name: rag-new-unit-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_agentic_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_agentic*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_research_agent.py | |
| - name: rag-new-unit-cache-vector | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_cache_invalidation_core.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chromadb*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_embedding_cache_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pgvector_adapter_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rewrite_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_semantic_cache*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_vector*.py | |
| - name: rag-new-unit-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_reranking_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_retrieval_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_flashrank_reranker_init.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_functional_pipeline.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_generation*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_hyde*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_kanban_retriever.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_learned_fusion_simple.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_llamacpp_reranker_topk_full_input.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pipeline*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_post*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pre_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_query*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_request*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_response_writer.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_reranker*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_streaming_executor.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_two_tier_reranker.py | |
| - name: rag-new-unit-unified-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_unified_pipeline*.py | |
| - name: rag-new-unit-rag-contracts | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rag*.py | |
| - name: rag-new-unit-guardrails-source | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_citations_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_guardrails*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_path_validation_security.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_payload_exemplars*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_security_filters_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_source*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_strict_extractive_and_citations.py | |
| - name: rag-new-unit-media-ingest | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_block_to_chunks.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chunk_fts_integration.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_document_processing_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_enhanced_chunking_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_ingest_dedupe_and_chunk_ids.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_media*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_structure_index.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_temporal_filters.py | |
| - name: rag-new-unit-core-misc | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_analytics_db_dev_reconciliation.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_batch*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_clarification_gate.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_corpus_synonyms_expansion.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_evidence_chains_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_feedback_learning.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_fts_query_translation_edge_cases.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_knowledge_source_retrieval_coverage.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_phase_metrics.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_prompt_templates_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_quick_wins_spell_check_compat.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_schema_corpus_alias.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_standard_core_contract_threading.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_suggestion_generator.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_synonyms_registry_logging.py | |
| - name: research-websearch | |
| paths: >- | |
| tldw_Server_API/tests/Research | |
| tldw_Server_API/tests/WebSearch | |
| - name: media-audio | |
| paths: >- | |
| tldw_Server_API/tests/Audio | |
| tldw_Server_API/tests/Audio_Studio | |
| tldw_Server_API/tests/AudioJobs | |
| tldw_Server_API/tests/STT | |
| tldw_Server_API/tests/TTS | |
| tldw_Server_API/tests/TTS_NEW | |
| tldw_Server_API/tests/VLM | |
| - name: media-core-documents | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_document*.py | |
| tldw_Server_API/tests/Media/test_pdf_text_normalization.py | |
| - name: media-core-api | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_archive_member_cap.py | |
| tldw_Server_API/tests/Media/test_auto_chunking_process_endpoints.py | |
| tldw_Server_API/tests/Media/test_cache_index.py | |
| tldw_Server_API/tests/Media/test_ingest_web_content_endpoint_sanitization.py | |
| tldw_Server_API/tests/Media/test_json_*.py | |
| tldw_Server_API/tests/Media/test_media_*.py | |
| tldw_Server_API/tests/Media/test_navigation_policy_contract.py | |
| tldw_Server_API/tests/Media/test_process_code_and_uploads.py | |
| tldw_Server_API/tests/Media/test_upload_sink_security.py | |
| tldw_Server_API/tests/Media/unit | |
| - name: media-ingestion-new-ocr | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/test_*.py | |
| - name: media-ingestion-new-integration | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/integration | |
| - name: media-ingestion-new-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_archive_and_sanitization.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_audio_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_auto_chunking_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_zip_safe_extract.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_processing_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ebook_safe_paths.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_email_endpoint_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_file_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_filename_and_mime_and_archive.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ingest_jobs_batch_lookup.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_add_deps_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_canonical_helpers.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_ingest*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_list_no_slash_redirect.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_upload_failures.py | |
| - name: media-ingestion-new-unit-mediawiki | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_mediawiki_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ms_g_eval_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_analysis_regressions.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_safe_paths.py | |
| - name: media-ingestion-new-unit-persistence | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_persistence_*.py | |
| - name: media-ingestion-new-unit-processing | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_plaintext_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_playlist_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_batch_media_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_document_like_item_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_transcription_models_endpoint.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_utils_time_conversion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_video_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_visual_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_xml_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_youtube_audio_downloads.py | |
| - name: media-ingestion-modification | |
| paths: >- | |
| tldw_Server_API/tests/Media_Ingestion_Modification | |
| - name: media-legacy-free | |
| paths: >- | |
| tldw_Server_API/tests/Media | |
| tldw_Server_API/tests/MediaIngestion_NEW | |
| - name: chat-character-legacy-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_character_chat_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_dictionary_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_settings_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_e2e_mock.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_unified_flag_monkeypatched.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_completions_tool_messages_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_export_includes_tools_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_legacy_complete_deprecation.py | |
| tldw_Server_API/tests/Character_Chat/test_messages_tool_calls_exposure.py | |
| tldw_Server_API/tests/Character_Chat/test_persona_dialogue_tree_character_eval.py | |
| - name: chat-character-legacy-files | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_file_mime_detection.py | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py | |
| - name: chat-character-legacy-worldbook | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_manager_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_prompt_context.py | |
| tldw_Server_API/tests/Character_Chat/unit/test_chat_session_character_scope_api.py | |
| - name: chat-character-db-core | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_ccv3_parser.py | |
| tldw_Server_API/tests/Characters/test_chacha_postgres_sync_log_entity_column.py | |
| tldw_Server_API/tests/Characters/test_character_chat_greetings_api.py | |
| tldw_Server_API/tests/Characters/test_character_chat_lib.py | |
| tldw_Server_API/tests/Characters/test_character_functionality_db.py | |
| tldw_Server_API/tests/Characters/test_characters_world_book_permissions_unit.py | |
| - name: chat-character-db-api | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_characters_endpoint.py | |
| - name: chat-character-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/test_utils.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_cards_fts_bootstrap.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_default_provider.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_manager.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_generation_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_memory.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_prompt_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_templates.py | |
| - name: chat-character-unit-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_completion_precheck.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_grammar_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_create_schema.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_error_mapping.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_settings_merge.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_group_chat_scope_resolution.py | |
| - name: chat-character-unit-persona | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_embeddings.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_selector.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_telemetry.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_png_export.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_postgres_backends.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_stream_persist_lookup.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_appendable.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_manager.py | |
| - name: chat-character-unit-prd | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_prd_round2_endpoints.py | |
| - name: chat-character-property | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/property | |
| - name: chat-character-integration-api | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_exemplars_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_memory_endpoint.py | |
| - name: chat-character-integration-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_auto_routing.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_stream_and_persist.py | |
| - name: chat-character-integration-context | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_conversation_context_primitives.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_role_normalization_and_search.py | |
| - name: chat-legacy-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chat/test*.py | |
| tldw_Server_API/tests/Chat/integration | |
| - name: chat-legacy-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[a-l]*.py | |
| - name: chat-legacy-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[m-z]*.py | |
| - name: chat-new-integration-property | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/integration | |
| tldw_Server_API/tests/Chat_NEW/property | |
| - name: chat-new-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[a-l]*.py | |
| - name: chat-new-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[m-z]*.py | |
| - name: chatbooks-streaming | |
| paths: >- | |
| tldw_Server_API/tests/Chatbooks | |
| tldw_Server_API/tests/Explainer | |
| tldw_Server_API/tests/Streaming | |
| - name: explainer-core | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: llm-adapters-unit | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/unit | |
| tldw_Server_API/tests/LLM_Adapters/benchmarks | |
| - name: llm-adapters-chat-endpoint | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_anthropic_native.py | |
| - name: llm-adapters-chat-errors-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_core_providers.py | |
| - name: llm-adapters-chat-errors-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_google_mistral.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_midstream_error_all.py | |
| - name: llm-adapters-orchestrator-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_anthropic_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_google_mistral.py | |
| - name: llm-adapters-orchestrator-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_groq_openrouter_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_stage3.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_streaming_error_all.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_bedrock_adapter.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_tool_choice_json_mode_endpoint.py | |
| - name: llm-calls-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/test_*.py | |
| - name: llm-calls-property | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/property | |
| - name: llm-local-runtime | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Local | |
| - name: llm-local-backends | |
| paths: >- | |
| tldw_Server_API/tests/LLamaCpp | |
| tldw_Server_API/tests/Local_LLM | |
| - name: product-claims-core | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claim_cluster_upsert_idempotency.py | |
| tldw_Server_API/tests/Claims/test_claim_embeddings_chroma.py | |
| tldw_Server_API/tests/Claims/test_claim_review_rule_assignment.py | |
| tldw_Server_API/tests/Claims/test_claims_alerts_*.py | |
| tldw_Server_API/tests/Claims/test_claims_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_analytics_exports_cleanup.py | |
| tldw_Server_API/tests/Claims/test_claims_api_strict_parse_mode.py | |
| tldw_Server_API/tests/Claims/test_claims_budget_guard.py | |
| tldw_Server_API/tests/Claims/test_claims_cluster*.py | |
| tldw_Server_API/tests/Claims/test_claims_compat_types.py | |
| - name: product-claims-engine | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_dashboard_analytics.py | |
| tldw_Server_API/tests/Claims/test_claims_embedding_refresh_config.py | |
| tldw_Server_API/tests/Claims/test_claims_endpoints_api.py | |
| tldw_Server_API/tests/Claims/test_claims_engine_*.py | |
| tldw_Server_API/tests/Claims/test_claims_extractor*.py | |
| tldw_Server_API/tests/Claims/test_claims_items_api.py | |
| - name: product-claims-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_monitoring_*.py | |
| tldw_Server_API/tests/Claims/test_claims_output_parser.py | |
| tldw_Server_API/tests/Claims/test_claims_prompt_validation.py | |
| tldw_Server_API/tests/Claims/test_claims_rebuild_*.py | |
| tldw_Server_API/tests/Claims/test_claims_response_format_contracts.py | |
| tldw_Server_API/tests/Claims/test_claims_review_*.py | |
| - name: product-claims-service | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_runtime_config.py | |
| tldw_Server_API/tests/Claims/test_claims_service_*.py | |
| tldw_Server_API/tests/Claims/test_claims_settings_*.py | |
| tldw_Server_API/tests/Claims/test_claims_span_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_status_and_envelope_api.py | |
| tldw_Server_API/tests/Claims/test_claims_utils_persistence.py | |
| tldw_Server_API/tests/Claims/test_claims_watchlist_notifications.py | |
| tldw_Server_API/tests/Claims/test_claims_webhook_delivery.py | |
| tldw_Server_API/tests/Claims/test_ingestion_*.py | |
| - name: product-collections | |
| paths: >- | |
| tldw_Server_API/tests/Collections | |
| - name: product-evaluations-abtest | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/embeddings_abtest/test*.py | |
| tldw_Server_API/tests/Evaluations/test_abtest_*.py | |
| tldw_Server_API/tests/Evaluations/test_embeddings_abtest_*.py | |
| - name: product-evaluations-core | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_benchmark_*.py | |
| tldw_Server_API/tests/Evaluations/test_circuit_breaker.py | |
| tldw_Server_API/tests/Evaluations/test_connection_pool.py | |
| tldw_Server_API/tests/Evaluations/test_db_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_error_scenarios.py | |
| tldw_Server_API/tests/Evaluations/test_eval_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluation_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_audit_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_backend_dual.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_core_hardening.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_benchmarks_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_crud_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_datasets_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_migration_cli.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_postgres_crud.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_rag_pipeline_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_stage*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_unified.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_webhooks_*.py | |
| tldw_Server_API/tests/Evaluations/test_mineru_ocr_evaluator.py | |
| tldw_Server_API/tests/Evaluations/test_ms_g_eval.py | |
| tldw_Server_API/tests/Evaluations/test_ocr_metrics.py | |
| tldw_Server_API/tests/Evaluations/test_production_features_integration.py | |
| tldw_Server_API/tests/Evaluations/test_proposition_evaluations.py | |
| tldw_Server_API/tests/Evaluations/test_rag_*.py | |
| tldw_Server_API/tests/Evaluations/test_security.py | |
| tldw_Server_API/tests/Evaluations/test_synthetic_eval_service.py | |
| tldw_Server_API/tests/Evaluations/test_unified_evaluation_service_strict_audit.py | |
| - name: product-evaluations-integration | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/integration/test*.py | |
| tldw_Server_API/tests/Evaluations/property/test*.py | |
| - name: product-evaluations-recipes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_persona_*.py | |
| tldw_Server_API/tests/Evaluations/test_recipe_*.py | |
| - name: product-evaluations-unit | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/unit/test_*.py | |
| - name: product-flashcards | |
| paths: >- | |
| tldw_Server_API/tests/Flashcards/test*.py | |
| - name: product-explainer | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: product-notes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Notes | |
| tldw_Server_API/tests/Notes_NEW | |
| tldw_Server_API/tests/Persona | |
| tldw_Server_API/tests/Personalization | |
| - name: product-prompts-legacy | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management | |
| - name: product-prompts-new | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management_NEW | |
| - name: product-watchlists-a-r | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_admin_*.py | |
| tldw_Server_API/tests/Watchlists/test_audio_*.py | |
| tldw_Server_API/tests/Watchlists/test_companion_*.py | |
| tldw_Server_API/tests/Watchlists/test_dedup_*.py | |
| tldw_Server_API/tests/Watchlists/test_delivery_*.py | |
| tldw_Server_API/tests/Watchlists/test_e2e_*.py | |
| tldw_Server_API/tests/Watchlists/test_fetchers_*.py | |
| tldw_Server_API/tests/Watchlists/test_filter_*.py | |
| tldw_Server_API/tests/Watchlists/test_filters_*.py | |
| tldw_Server_API/tests/Watchlists/test_first_*.py | |
| tldw_Server_API/tests/Watchlists/test_full_*.py | |
| tldw_Server_API/tests/Watchlists/test_include_*.py | |
| tldw_Server_API/tests/Watchlists/test_job_*.py | |
| tldw_Server_API/tests/Watchlists/test_newsletter_*.py | |
| tldw_Server_API/tests/Watchlists/test_operational_*.py | |
| tldw_Server_API/tests/Watchlists/test_opml_*.py | |
| tldw_Server_API/tests/Watchlists/test_perf_*.py | |
| tldw_Server_API/tests/Watchlists/test_pipeline_*.py | |
| tldw_Server_API/tests/Watchlists/test_preview_*.py | |
| tldw_Server_API/tests/Watchlists/test_rate_*.py | |
| tldw_Server_API/tests/Watchlists/test_rss_*.py | |
| tldw_Server_API/tests/Watchlists/test_run_*.py | |
| tldw_Server_API/tests/Watchlists/test_runs_*.py | |
| - name: product-watchlists-core | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_scheduler_*.py | |
| tldw_Server_API/tests/Watchlists/test_output_enrichment_scheduler.py | |
| tldw_Server_API/tests/Watchlists/test_site_*.py | |
| tldw_Server_API/tests/Watchlists/test_subscriptions_*.py | |
| tldw_Server_API/tests/Watchlists/test_template_*.py | |
| tldw_Server_API/tests/Watchlists/test_templates_*.py | |
| tldw_Server_API/tests/Watchlists/test_tts_*.py | |
| tldw_Server_API/tests/Watchlists/test_watchlist_*.py | |
| tldw_Server_API/tests/Watchlists/test_youtube_*.py | |
| - name: product-watchlists-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_watchlists_*.py | |
| - name: product-workflows-adapters-core | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/adapters/test_*.py | |
| - name: product-workflows-step-adapters | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_new_step_adapters.py | |
| - name: product-workflows-step-registry | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_step_registry_runtime_coverage.py | |
| - name: product-workflows-step-capabilities | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_workflow_step_capabilities.py | |
| - name: product-workflows-engine | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_engine_*.py | |
| tldw_Server_API/tests/Workflows/test_dual_backend_engine.py | |
| tldw_Server_API/tests/Workflows/test_orphan_requeue_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_map_substeps_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_attempt_failures.py | |
| tldw_Server_API/tests/Workflows/test_workflow_stress.py | |
| tldw_Server_API/tests/Workflows/test_workflows_scheduler.py | |
| - name: product-workflows-api | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_artifact_*.py | |
| tldw_Server_API/tests/Workflows/test_events_*.py | |
| tldw_Server_API/tests/Workflows/test_runs_*.py | |
| tldw_Server_API/tests/Workflows/test_webhook_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_approval_permissions.py | |
| tldw_Server_API/tests/Workflows/test_workflow_investigation_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_preflight_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_templates_api.py | |
| tldw_Server_API/tests/Workflows/test_workflows_api.py | |
| - name: product-workflows-storage | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_dual_backend_workflows.py | |
| tldw_Server_API/tests/Workflows/test_egress_policy.py | |
| tldw_Server_API/tests/Workflows/test_mcp_tool_*.py | |
| tldw_Server_API/tests/Workflows/test_media_ingest_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_db*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_pg_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_postgres_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_tokens_cost_*.py | |
| - name: product-workflows-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_adapter_path_security.py | |
| tldw_Server_API/tests/Workflows/test_llm_adapter.py | |
| tldw_Server_API/tests/Workflows/test_stage3_chunkers_rag.py | |
| tldw_Server_API/tests/Workflows/test_tts_workflow_normalization.py | |
| tldw_Server_API/tests/Workflows/test_versions_idempotency.py | |
| tldw_Server_API/tests/Workflows/test_workflows_artifact_gc_service.py | |
| tldw_Server_API/tests/Workflows/test_workflows_dag_validation.py | |
| tldw_Server_API/tests/Workflows/test_workflows_extras.py | |
| tldw_Server_API/tests/Workflows/test_workflows_fuzz.py | |
| tldw_Server_API/tests/Workflows/test_workflows_idempotency_ttl.py | |
| tldw_Server_API/tests/Workflows/test_workflows_run_metadata.py | |
| tldw_Server_API/tests/Workflows/test_workflows_truthiness_flags.py | |
| - name: product-prompt-studio | |
| paths: >- | |
| tldw_Server_API/tests/prompt_studio | |
| - name: platform-infrastructure-metrics | |
| paths: >- | |
| tldw_Server_API/tests/Infrastructure | |
| tldw_Server_API/tests/Metrics | |
| tldw_Server_API/tests/Monitoring | |
| - name: platform-mcp-core | |
| paths: >- | |
| tldw_Server_API/tests/MCP | |
| tldw_Server_API/tests/MCP_unified | |
| - name: platform-resource-governance | |
| paths: >- | |
| tldw_Server_API/tests/Resource_Governance | |
| - name: platform-services-startup | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_startup_*.py | |
| - name: platform-services-shutdown-lifespan | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_shutdown_*.py | |
| tldw_Server_API/tests/Services/test_lifespan_*.py | |
| tldw_Server_API/tests/Services/test_worker_lifecycle_ownership_matrix.py | |
| - name: platform-services-core | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_admin_*.py | |
| tldw_Server_API/tests/Services/test_app_*.py | |
| tldw_Server_API/tests/Services/test_claims_*.py | |
| tldw_Server_API/tests/Services/test_compatibility_*.py | |
| tldw_Server_API/tests/Services/test_connectors_*.py | |
| tldw_Server_API/tests/Services/test_document_*.py | |
| tldw_Server_API/tests/Services/test_drain_*.py | |
| tldw_Server_API/tests/Services/test_enhanced_*.py | |
| tldw_Server_API/tests/Services/test_ephemeral_*.py | |
| tldw_Server_API/tests/Services/test_executor_*.py | |
| tldw_Server_API/tests/Services/test_file_*.py | |
| tldw_Server_API/tests/Services/test_jobs_*.py | |
| tldw_Server_API/tests/Services/test_kanban_*.py | |
| tldw_Server_API/tests/Services/test_lifecycle_*.py | |
| tldw_Server_API/tests/Services/test_loop_*.py | |
| tldw_Server_API/tests/Services/test_media_*.py | |
| tldw_Server_API/tests/Services/test_outputs_*.py | |
| tldw_Server_API/tests/Services/test_persona_*.py | |
| tldw_Server_API/tests/Services/test_placeholder_*.py | |
| tldw_Server_API/tests/Services/test_service_*.py | |
| tldw_Server_API/tests/Services/test_storage_*.py | |
| tldw_Server_API/tests/Services/test_tts_*.py | |
| tldw_Server_API/tests/Services/test_writing_annotation_review_jobs_worker.py | |
| tldw_Server_API/tests/Services/test_workflows_*.py | |
| tldw_Server_API/tests/Services/test_xml_*.py | |
| - name: platform-services-main-routing | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_claims_rebuild_startup.py | |
| tldw_Server_API/tests/Services/test_main_lifecycle_contract.py | |
| tldw_Server_API/tests/Services/test_main_readiness_shutdown.py | |
| tldw_Server_API/tests/Services/test_main_router_contract.py | |
| tldw_Server_API/tests/Services/test_openapi_contracts.py | |
| tldw_Server_API/tests/Services/test_router_groups_contract.py | |
| - name: platform-services-main-pollers | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_shutdown_job_pollers.py | |
| - name: platform-sandbox-admin-artifacts | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_admin_*.py | |
| tldw_Server_API/tests/sandbox/test_artifact*.py | |
| - name: platform-sandbox-runtimes | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_docker_*.py | |
| tldw_Server_API/tests/sandbox/test_firecracker_*.py | |
| tldw_Server_API/tests/sandbox/test_lima_*.py | |
| tldw_Server_API/tests/sandbox/test_macos_*.py | |
| tldw_Server_API/tests/sandbox/test_runner_*.py | |
| tldw_Server_API/tests/sandbox/test_runtime_*.py | |
| tldw_Server_API/tests/sandbox/test_runtimes_*.py | |
| tldw_Server_API/tests/sandbox/test_operator_*.py | |
| tldw_Server_API/tests/sandbox/test_seatbelt_*.py | |
| tldw_Server_API/tests/sandbox/test_vz_*.py | |
| - name: platform-sandbox-state-store | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_acp_*.py | |
| tldw_Server_API/tests/sandbox/test_cross_*.py | |
| tldw_Server_API/tests/sandbox/test_execution_*.py | |
| tldw_Server_API/tests/sandbox/test_feature_*.py | |
| tldw_Server_API/tests/sandbox/test_glob_*.py | |
| tldw_Server_API/tests/sandbox/test_idempotency_*.py | |
| tldw_Server_API/tests/sandbox/test_interactive_*.py | |
| tldw_Server_API/tests/sandbox/test_network_*.py | |
| tldw_Server_API/tests/sandbox/test_orchestrator_*.py | |
| tldw_Server_API/tests/sandbox/test_policy_*.py | |
| tldw_Server_API/tests/sandbox/test_queue_*.py | |
| tldw_Server_API/tests/sandbox/test_redis_*.py | |
| tldw_Server_API/tests/sandbox/test_run_*.py | |
| tldw_Server_API/tests/sandbox/test_sandbox_*.py | |
| tldw_Server_API/tests/sandbox/test_snapshot_*.py | |
| tldw_Server_API/tests/sandbox/test_store_*.py | |
| tldw_Server_API/tests/sandbox/test_warm_*.py | |
| tldw_Server_API/tests/sandbox/test_workspace_*.py | |
| tldw_Server_API/tests/sandbox/test_worktree_*.py | |
| - name: platform-sandbox-ws-streams | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_cancel_*.py | |
| tldw_Server_API/tests/sandbox/test_event_bridge.py | |
| tldw_Server_API/tests/sandbox/test_session_*.py | |
| tldw_Server_API/tests/sandbox/test_streams_*.py | |
| tldw_Server_API/tests/sandbox/test_ws_*.py | |
| - name: integrations | |
| paths: >- | |
| tldw_Server_API/tests/External_Sources | |
| tldw_Server_API/tests/Notifications | |
| tldw_Server_API/tests/Tools | |
| tldw_Server_API/tests/WebScraping | |
| tldw_Server_API/tests/Web_Scraping | |
| tldw_Server_API/tests/integration | |
| services: | |
| postgres: | |
| image: mirror.gcr.io/library/postgres:18-bookworm | |
| env: | |
| POSTGRES_USER: tldw_user | |
| POSTGRES_PASSWORD: TestPassword123! | |
| POSTGRES_DB: tldw_content | |
| ports: | |
| - 5432/tcp | |
| options: >- | |
| --health-cmd "pg_isready -U tldw_user -d tldw_content" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 10 | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| POSTGRES_TEST_HOST: 127.0.0.1 | |
| POSTGRES_TEST_DB: tldw_content | |
| POSTGRES_TEST_USER: tldw_user | |
| POSTGRES_TEST_PASSWORD: TestPassword123! | |
| TEST_DB_HOST: 127.0.0.1 | |
| TEST_DB_USER: tldw_user | |
| TEST_DB_PASSWORD: TestPassword123! | |
| TEST_DB_NAME: tldw_test | |
| TLDW_TEST_POSTGRES_REQUIRED: '1' | |
| REDIS_URL: redis://127.0.0.1:6379/0 | |
| EMBEDDINGS_REDIS_URL: redis://127.0.0.1:6379/0 | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| SHARD_NAME: ${{ matrix.shard.name }} | |
| TEST_PATHS: ${{ matrix.shard.paths }} | |
| RESULTS_DIR: test-results-linux-3.13-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg and PortAudio (Linux) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.13' | |
| use-uv: 'true' | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev,multiplayer | |
| - name: Verify core e2e fixtures are discoverable | |
| if: matrix.shard.name == 'core-server-smoke' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| FIXTURES_OUTPUT="$(pytest --fixtures -q tldw_Server_API/tests || true)" | |
| TMPFILE=$(mktemp) | |
| printf "%s\n" "$FIXTURES_OUTPUT" > "$TMPFILE" | |
| if command -v rg >/dev/null 2>&1; then | |
| rg -q '^test_user_credentials\b' "$TMPFILE" || { echo 'Fixture test_user_credentials not found'; rm -f "$TMPFILE"; exit 1; } | |
| else | |
| grep -q '^test_user_credentials\b' "$TMPFILE" || { echo 'Fixture test_user_credentials not found'; rm -f "$TMPFILE"; exit 1; } | |
| fi | |
| rm -f "$TMPFILE" | |
| - name: Install pg client and wait for PG | |
| uses: ./.github/actions/wait-for-postgres | |
| with: | |
| host: 127.0.0.1 | |
| port: ${{ job.services.postgres.ports['5432'] }} | |
| user: tldw_user | |
| - name: Export PG env vars | |
| shell: bash | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| DB_PASSWORD="${POSTGRES_TEST_PASSWORD:?POSTGRES_TEST_PASSWORD is required}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_URL="postgresql://${DB_USER}:${DB_PASSWORD}@127.0.0.1:${PORT}/${DB_NAME}" | |
| echo "::add-mask::${DB_PASSWORD}" | |
| echo "::add-mask::${DB_URL}" | |
| { | |
| echo "POSTGRES_TEST_PORT=${PORT}" | |
| echo "TEST_DB_PORT=${PORT}" | |
| echo "TEST_DATABASE_URL=${DB_URL}" | |
| echo "DATABASE_URL=${DB_URL}" | |
| } >> "$GITHUB_ENV" | |
| - name: Ensure base DB exists | |
| shell: bash | |
| env: | |
| PGPASSWORD: ${{ env.POSTGRES_TEST_PASSWORD }} | |
| run: | | |
| PORT="${{ job.services.postgres.ports['5432'] }}" | |
| DB_NAME="${POSTGRES_TEST_DB:-tldw_content}" | |
| DB_USER="${POSTGRES_TEST_USER:-tldw_user}" | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | grep -q 1 || \ | |
| psql -h 127.0.0.1 -p "$PORT" -U "$DB_USER" -d postgres -c "CREATE DATABASE ${DB_NAME}" | |
| - name: Install additional deps for PG tests | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install "psycopg[binary]>=3.1" pytest pytest-asyncio | |
| - name: Verify pytest plugins import | |
| shell: bash | |
| run: | | |
| python - <<'PY' | |
| import importlib | |
| import pytest_asyncio | |
| importlib.import_module('pytest_asyncio.plugin') | |
| importlib.import_module('pytest_benchmark.plugin') | |
| print('pytest_asyncio OK:', getattr(pytest_asyncio, '__version__', 'unknown')) | |
| print('pytest-benchmark OK') | |
| PY | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-linux-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '0' | |
| DEFER_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '240' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke stop server | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Cache embedding models | |
| if: ${{ github.event_name != 'workflow_dispatch' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| uses: actions/cache@v5 | |
| with: | |
| path: models/embeddings | |
| key: ${{ runner.os }}-embeddings-static-v1 | |
| restore-keys: | | |
| ${{ runner.os }}-embeddings- | |
| - name: Pre-download embedding models | |
| if: ${{ (env.RUN_MODEL_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == 'true') && matrix.shard.name != 'ai-embeddings-backpressure' && matrix.shard.name != 'ai-embeddings-dlq-config' && matrix.shard.name != 'ai-embeddings-media-validation' && matrix.shard.name != 'ai-embeddings-policy' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'ai-embeddings-') || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install huggingface_hub | |
| python Helper_Scripts/download_embedding_models.py --target models/embeddings --skip-defaults --model sentence-transformers/all-MiniLM-L6-v2 | |
| echo "TLDW_EMBEDDING_MODELS_DIR=models/embeddings" >> "$GITHUB_ENV" | |
| - name: Run shard tests | |
| if: matrix.shard.name != 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| $TEST_PATHS \ | |
| --durations=50 \ | |
| --junit-xml="$RESULTS_DIR/${SHARD_NAME}.xml" | |
| - name: Run legacy-free media checks | |
| if: matrix.shard.name == 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| TLDW_DISABLE_LEGACY_MEDIA=1 pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| tldw_Server_API/tests/Media \ | |
| tldw_Server_API/tests/MediaIngestion_NEW \ | |
| --durations=25 \ | |
| --junit-xml="$RESULTS_DIR/media-legacy-free.xml" | |
| - name: Upload test results | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-ubuntu-py3.13-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| full-suite-linux-313-summary: | |
| name: Full Suite (Ubuntu / Python 3.13) | |
| runs-on: ubuntu-latest | |
| needs: [full-suite-linux-313-shards] | |
| if: always() | |
| steps: | |
| - name: Check Python 3.13 shard result | |
| shell: bash | |
| run: | | |
| r="${{ needs['full-suite-linux-313-shards'].result }}" | |
| if [ "$r" != "success" ] && [ "$r" != "skipped" ]; then | |
| echo "Python 3.13 full-suite shards finished with: $r" | |
| exit 1 | |
| fi | |
| echo "Python 3.13 full-suite shards passed (or skipped via path filter)." | |
| full-suite-macos-312-shards: | |
| name: Full Suite shard (macos-latest / Python 3.12 / ${{ matrix.shard.name }}) | |
| runs-on: macos-latest | |
| timeout-minutes: 60 | |
| needs: [lint, syntax-check, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: core-server-smoke | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/Logging | |
| - name: core-config | |
| paths: >- | |
| tldw_Server_API/tests/Config | |
| - name: core-audit-support | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_audit_*.py | |
| tldw_Server_API/tests/Audit/test_pii_pattern_groups.py | |
| tldw_Server_API/tests/Audit/test_risk_settings_overrides.py | |
| tldw_Server_API/tests/Audit/test_sqlite_runtime_pragmas.py | |
| - name: core-audit-unified | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_unified_audit_service.py | |
| - name: core-security | |
| paths: >- | |
| tldw_Server_API/tests/Security | |
| - name: core-setup-usage | |
| paths: >- | |
| tldw_Server_API/tests/Setup | |
| tldw_Server_API/tests/Usage | |
| - name: core-utils-tooling | |
| paths: >- | |
| tldw_Server_API/tests/Helper_Scripts | |
| tldw_Server_API/tests/Context_Integrity | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/helpers | |
| tldw_Server_API/tests/http_client | |
| tldw_Server_API/tests/lint | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: admin-a-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_a*.py | |
| - name: admin-budgets | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_budgets_*.py | |
| - name: admin-bundle-sanitizers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_bundle_service_sanitizers.py | |
| - name: admin-bundle-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_bundle_ops.py | |
| - name: admin-byok-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_service_sanitizers.py | |
| - name: admin-byok-validation | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_validation_*.py | |
| tldw_Server_API/tests/Admin/test_byok_*.py | |
| - name: admin-backup-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_backup_schedules_api.py | |
| - name: admin-backup-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_backup_*.py | |
| tldw_Server_API/tests/Admin/test_backup_schedules_repo.py | |
| - name: admin-conflicts-data-admin | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_c*.py | |
| tldw_Server_API/tests/Admin/test_admin_data_*.py | |
| - name: admin-data-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_ops.py | |
| - name: admin-data-subject-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_api.py | |
| - name: admin-data-subject-repo-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_repo.py | |
| tldw_Server_API/tests/Admin/test_dsr_*.py | |
| - name: admin-e2e-access | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_are_unavailable_without_flag | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_require_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_reject_wrong_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_fail_closed_without_configured_support_key | |
| - name: admin-e2e-seed | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_stable_fixture_ids | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_debug_role_principals | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_requires_explicit_fixture_passwords | |
| - name: admin-e2e-single-user | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_single_user_login_key | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_single_user_api_key_can_read_users_me | |
| - name: admin-e2e-session-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_rejects_unsafe_backup_paths | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_bootstrap_jwt_session_returns_cookie_payload | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_dsr_seed_supports_real_preview | |
| - name: admin-e2e-reset-backups | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_backup_schedules | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_monitoring_authority_state | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_run_due_backup_schedules_processes_scheduled_run | |
| - name: admin-g-i | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_g*.py | |
| tldw_Server_API/tests/Admin/test_admin_i*.py | |
| - name: admin-llm-providers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_llm_providers_*.py | |
| - name: admin-incidents | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_incidents_*.py | |
| - name: admin-llm-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_llm_usage_endpoints.py | |
| - name: admin-maintenance-misc | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_maintenance_*.py | |
| tldw_Server_API/tests/Admin/test_admin_misc_endpoints.py | |
| tldw_Server_API/tests/Admin/test_maintenance_*.py | |
| - name: admin-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_monitoring_*.py | |
| tldw_Server_API/tests/Admin/test_monitoring_*.py | |
| - name: admin-ops-dependencies | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_dependencies.py | |
| - name: admin-ops-endpoints | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_new_endpoints.py | |
| - name: admin-ops-webhooks-orgs | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_webhooks_reports.py | |
| tldw_Server_API/tests/Admin/test_admin_orgs_*.py | |
| - name: admin-profiles-rate-registration | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_profiles_*.py | |
| tldw_Server_API/tests/Admin/test_admin_rate_limits_*.py | |
| tldw_Server_API/tests/Admin/test_admin_registration_*.py | |
| - name: admin-pricing-retention-roles-router | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_pricing_reload_endpoint.py | |
| tldw_Server_API/tests/Admin/test_retention_policy_preview_api.py | |
| tldw_Server_API/tests/Admin/test_role_*.py | |
| tldw_Server_API/tests/Admin/test_router_analytics_*.py | |
| - name: admin-s-sessions-settings | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_scope_service_enterprise_mode.py | |
| tldw_Server_API/tests/Admin/test_admin_service_log_sanitizers.py | |
| tldw_Server_API/tests/Admin/test_admin_sessions_*.py | |
| tldw_Server_API/tests/Admin/test_admin_settings_service.py | |
| tldw_Server_API/tests/Admin/test_admin_smoke.py | |
| - name: admin-split-storage-tools | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_split_*.py | |
| tldw_Server_API/tests/Admin/test_admin_storage_quotas.py | |
| tldw_Server_API/tests/Admin/test_admin_system_ops_service.py | |
| tldw_Server_API/tests/Admin/test_admin_t*.py | |
| - name: admin-users | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_u*.py | |
| - name: admin-watchlists-webhooks | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_w*.py | |
| - name: admin-system-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_system_ops.py | |
| tldw_Server_API/tests/Admin/test_usage_reporting*.py | |
| - name: auth-integration-admin-auth | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_admin_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_api_key_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_auth_*.py | |
| - name: auth-integration-authnz | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_authnz_*.py | |
| - name: auth-integration-b-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_[b-z]*.py | |
| - name: auth-postgres | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Postgres | |
| - name: auth-core-root-property | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/test*.py | |
| tldw_Server_API/tests/AuthNZ/property/test*.py | |
| - name: auth-core-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[a-l]*.py | |
| - name: auth-core-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[m-z]*.py | |
| - name: auth-sqlite | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_SQLite | |
| - name: auth-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[a-l]*.py | |
| - name: auth-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[m-z]*.py | |
| - name: chacha-core-stores | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chacha_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chachanotes_db.py | |
| - name: chacha-character-conversation | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_character_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_conversation_*.py | |
| - name: chacha-content-persona | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_flashcard*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_note_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_order_by_validation.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_persona_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_quizzes_basic.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_web_clipper_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_assistant_defaults_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_resource_memberships_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_sub_resources_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_writing_playground_db.py | |
| - name: db-privileges | |
| paths: >- | |
| tldw_Server_API/tests/DB | |
| tldw_Server_API/tests/DB_Management | |
| tldw_Server_API/tests/MediaDB2 | |
| tldw_Server_API/tests/PrivilegeCatalog | |
| tldw_Server_API/tests/Privileges | |
| - name: ai-chromadb | |
| paths: >- | |
| tldw_Server_API/tests/ChromaDB | |
| - name: ai-chunking-core | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_async_*.py | |
| tldw_Server_API/tests/Chunking/test_auto_*.py | |
| tldw_Server_API/tests/Chunking/test_chunker_*.py | |
| tldw_Server_API/tests/Chunking/test_process_text_components.py | |
| tldw_Server_API/tests/Chunking/test_process_text_refactor_equivalence.py | |
| tldw_Server_API/tests/Chunking/test_chunking_endpoint.py | |
| tldw_Server_API/tests/Chunking/test_chunking_offsets_property.py | |
| tldw_Server_API/tests/Chunking/test_chunking_overlap_properties.py | |
| tldw_Server_API/tests/Chunking/test_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_chunking_template_endpoint_errors.py | |
| - name: ai-chunking-templates | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestDatabaseOperations | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateInitialization | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateProcessing | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_endpoint_sanitization.py | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_validate_schema.py | |
| tldw_Server_API/tests/Chunking/test_template_*.py | |
| - name: ai-chunking-templates-api | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestAPIEndpoints | |
| - name: ai-chunking-templates-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestIntegration | |
| - name: ai-chunking-code-json-xml | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_code_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_json_*.py | |
| tldw_Server_API/tests/Chunking/test_xml_*.py | |
| - name: ai-chunking-semantic-security | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_hierarchical_*.py | |
| tldw_Server_API/tests/Chunking/test_offsets_additional.py | |
| tldw_Server_API/tests/Chunking/test_option_aliases.py | |
| tldw_Server_API/tests/Chunking/test_overlap_clamp.py | |
| tldw_Server_API/tests/Chunking/test_phase3_3_sanitizers.py | |
| tldw_Server_API/tests/Chunking/test_propositions_strategy.py | |
| tldw_Server_API/tests/Chunking/test_security*.py | |
| tldw_Server_API/tests/Chunking/test_semantic_*.py | |
| tldw_Server_API/tests/Chunking/test_sentence_spans_properties.py | |
| tldw_Server_API/tests/Chunking/test_streaming_overlap.py | |
| tldw_Server_API/tests/Chunking/test_thai_tables_spans.py | |
| tldw_Server_API/tests/Chunking/test_thread_safety.py | |
| tldw_Server_API/tests/Chunking/test_tokens_offsets.py | |
| tldw_Server_API/tests/Chunking/unit/test_tokens_fallback_offsets.py | |
| - name: ai-embeddings-async | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_async_*.py | |
| - name: ai-embeddings-backpressure | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_backpressure*.py | |
| tldw_Server_API/tests/Embeddings/test_batch_rate_headers.py | |
| - name: ai-embeddings-chromadb-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chromadb_*.py | |
| - name: ai-embeddings-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chunk_metadata_backfill.py | |
| tldw_Server_API/tests/Embeddings/test_circuit_breaker_*.py | |
| tldw_Server_API/tests/Embeddings/test_compactor_admin_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_connection_pool_failure_accounting.py | |
| tldw_Server_API/tests/Embeddings/test_contextual_chunking.py | |
| - name: ai-embeddings-dlq-config | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_delete_by_filter_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_dlq_*.py | |
| tldw_Server_API/tests/Embeddings/test_embedding_*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_audit_adapter.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_batch_dimensions.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_dimensions_policy.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_endpoint_cache_identity.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_fallback*.py | |
| - name: ai-embeddings-jobs-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_jobs*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_local_api.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_loop_scoping.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_memory*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_metric*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_model_management.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_optional_deps_import.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_redis*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_rg_sync_helper.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_test_mode_truthiness.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_token_arrays.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_unsupported_provider.py | |
| - name: ai-embeddings-policy | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_policy*.py | |
| tldw_Server_API/tests/Embeddings/test_l2_normalization_policy.py | |
| - name: ai-embeddings-v5-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_production.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_property.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_unit.py | |
| - name: ai-embeddings-v5-integration | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_integration.py | |
| - name: ai-embeddings-hyde-ledger | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_hyde_backfill_cli.py | |
| tldw_Server_API/tests/Embeddings/test_ledger_status_endpoint.py | |
| - name: ai-embeddings-media-validation | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_media_*.py | |
| tldw_Server_API/tests/Embeddings/test_message_validator*.py | |
| - name: ai-embeddings-observability | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_metrics*.py | |
| tldw_Server_API/tests/Embeddings/test_model_eviction_in_use_guard.py | |
| tldw_Server_API/tests/Embeddings/test_multi_tier_cache_sync_async_loop.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_pgvector*.py | |
| tldw_Server_API/tests/Embeddings/test_priority_bump_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_redis_integration_smoke.py | |
| tldw_Server_API/tests/Embeddings/test_reembed_schedule_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_request*.py | |
| tldw_Server_API/tests/Embeddings/test_schema_drift.py | |
| tldw_Server_API/tests/Embeddings/test_stage_controls.py | |
| tldw_Server_API/tests/Embeddings/test_storage_idempotency_property.py | |
| tldw_Server_API/tests/Embeddings/test_trace_headers.py | |
| tldw_Server_API/tests/Embeddings/test_vector*.py | |
| - name: vector-stores-integration | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/integration | |
| - name: vector-stores-api | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/test*.py | |
| - name: vector-stores-unit | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/unit | |
| - name: paper-search | |
| paths: >- | |
| tldw_Server_API/tests/PaperSearch | |
| - name: rag-legacy | |
| paths: >- | |
| tldw_Server_API/tests/RAG | |
| - name: rag-new-integration-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_adapter_guards.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_bm25_weights.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_capabilities_styles.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_health_endpoints.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_integration.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_request_contract_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_source_health_endpoint.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_stream_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_strict_extractive_nli_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_unified_features_endpoint.py | |
| - name: rag-new-integration-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_agentic_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_research_agent_loop.py | |
| - name: rag-new-integration-batch | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_checkpoint_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_resume_api.py | |
| - name: rag-new-integration-research | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_ablate_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_benchmarks_ablation.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_doc_researcher_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_retriever_pgvector_multi_search.py | |
| - name: rag-new-property-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/property/test_*.py | |
| tldw_Server_API/tests/RAG_NEW/test_*.py | |
| - name: rag-new-unit-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_agentic_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_agentic*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_research_agent.py | |
| - name: rag-new-unit-cache-vector | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_cache_invalidation_core.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chromadb*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_embedding_cache_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pgvector_adapter_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rewrite_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_semantic_cache*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_vector*.py | |
| - name: rag-new-unit-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_reranking_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_retrieval_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_flashrank_reranker_init.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_functional_pipeline.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_generation*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_hyde*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_kanban_retriever.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_learned_fusion_simple.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_llamacpp_reranker_topk_full_input.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pipeline*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_post*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pre_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_query*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_request*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_response_writer.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_reranker*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_streaming_executor.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_two_tier_reranker.py | |
| - name: rag-new-unit-unified-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_unified_pipeline*.py | |
| - name: rag-new-unit-rag-contracts | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rag*.py | |
| - name: rag-new-unit-guardrails-source | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_citations_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_guardrails*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_path_validation_security.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_payload_exemplars*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_security_filters_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_source*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_strict_extractive_and_citations.py | |
| - name: rag-new-unit-media-ingest | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_block_to_chunks.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chunk_fts_integration.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_document_processing_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_enhanced_chunking_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_ingest_dedupe_and_chunk_ids.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_media*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_structure_index.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_temporal_filters.py | |
| - name: rag-new-unit-core-misc | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_analytics_db_dev_reconciliation.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_batch*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_clarification_gate.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_corpus_synonyms_expansion.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_evidence_chains_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_feedback_learning.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_fts_query_translation_edge_cases.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_knowledge_source_retrieval_coverage.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_phase_metrics.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_prompt_templates_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_quick_wins_spell_check_compat.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_schema_corpus_alias.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_standard_core_contract_threading.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_suggestion_generator.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_synonyms_registry_logging.py | |
| - name: research-websearch | |
| paths: >- | |
| tldw_Server_API/tests/Research | |
| tldw_Server_API/tests/WebSearch | |
| - name: media-audio | |
| paths: >- | |
| tldw_Server_API/tests/Audio | |
| tldw_Server_API/tests/Audio_Studio | |
| tldw_Server_API/tests/AudioJobs | |
| tldw_Server_API/tests/STT | |
| tldw_Server_API/tests/TTS | |
| tldw_Server_API/tests/TTS_NEW | |
| tldw_Server_API/tests/VLM | |
| - name: media-core-documents | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_document*.py | |
| tldw_Server_API/tests/Media/test_pdf_text_normalization.py | |
| - name: media-core-api | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_archive_member_cap.py | |
| tldw_Server_API/tests/Media/test_auto_chunking_process_endpoints.py | |
| tldw_Server_API/tests/Media/test_cache_index.py | |
| tldw_Server_API/tests/Media/test_ingest_web_content_endpoint_sanitization.py | |
| tldw_Server_API/tests/Media/test_json_*.py | |
| tldw_Server_API/tests/Media/test_media_*.py | |
| tldw_Server_API/tests/Media/test_navigation_policy_contract.py | |
| tldw_Server_API/tests/Media/test_process_code_and_uploads.py | |
| tldw_Server_API/tests/Media/test_upload_sink_security.py | |
| tldw_Server_API/tests/Media/unit | |
| - name: media-ingestion-new-ocr | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/test_*.py | |
| - name: media-ingestion-new-integration | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/integration | |
| - name: media-ingestion-new-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_archive_and_sanitization.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_audio_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_auto_chunking_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_zip_safe_extract.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_processing_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ebook_safe_paths.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_email_endpoint_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_file_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_filename_and_mime_and_archive.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ingest_jobs_batch_lookup.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_add_deps_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_canonical_helpers.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_ingest*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_list_no_slash_redirect.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_upload_failures.py | |
| - name: media-ingestion-new-unit-mediawiki | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_mediawiki_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ms_g_eval_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_analysis_regressions.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_safe_paths.py | |
| - name: media-ingestion-new-unit-persistence | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_persistence_*.py | |
| - name: media-ingestion-new-unit-processing | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_plaintext_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_playlist_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_batch_media_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_document_like_item_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_transcription_models_endpoint.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_utils_time_conversion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_video_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_visual_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_xml_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_youtube_audio_downloads.py | |
| - name: media-ingestion-modification | |
| paths: >- | |
| tldw_Server_API/tests/Media_Ingestion_Modification | |
| - name: media-legacy-free | |
| paths: >- | |
| tldw_Server_API/tests/Media | |
| tldw_Server_API/tests/MediaIngestion_NEW | |
| - name: chat-character-legacy-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_character_chat_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_dictionary_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_settings_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_e2e_mock.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_unified_flag_monkeypatched.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_completions_tool_messages_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_export_includes_tools_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_legacy_complete_deprecation.py | |
| tldw_Server_API/tests/Character_Chat/test_messages_tool_calls_exposure.py | |
| tldw_Server_API/tests/Character_Chat/test_persona_dialogue_tree_character_eval.py | |
| - name: chat-character-legacy-files | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_file_mime_detection.py | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py | |
| - name: chat-character-legacy-worldbook | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_manager_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_prompt_context.py | |
| tldw_Server_API/tests/Character_Chat/unit/test_chat_session_character_scope_api.py | |
| - name: chat-character-db-core | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_ccv3_parser.py | |
| tldw_Server_API/tests/Characters/test_chacha_postgres_sync_log_entity_column.py | |
| tldw_Server_API/tests/Characters/test_character_chat_greetings_api.py | |
| tldw_Server_API/tests/Characters/test_character_chat_lib.py | |
| tldw_Server_API/tests/Characters/test_character_functionality_db.py | |
| tldw_Server_API/tests/Characters/test_characters_world_book_permissions_unit.py | |
| - name: chat-character-db-api | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_characters_endpoint.py | |
| - name: chat-character-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/test_utils.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_cards_fts_bootstrap.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_default_provider.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_manager.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_generation_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_memory.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_prompt_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_templates.py | |
| - name: chat-character-unit-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_completion_precheck.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_grammar_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_create_schema.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_error_mapping.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_settings_merge.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_group_chat_scope_resolution.py | |
| - name: chat-character-unit-persona | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_embeddings.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_selector.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_telemetry.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_png_export.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_postgres_backends.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_stream_persist_lookup.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_appendable.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_manager.py | |
| - name: chat-character-unit-prd | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_prd_round2_endpoints.py | |
| - name: chat-character-property | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/property | |
| - name: chat-character-integration-api | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_exemplars_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_memory_endpoint.py | |
| - name: chat-character-integration-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_auto_routing.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_stream_and_persist.py | |
| - name: chat-character-integration-context | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_conversation_context_primitives.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_role_normalization_and_search.py | |
| - name: chat-legacy-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chat/test*.py | |
| tldw_Server_API/tests/Chat/integration | |
| - name: chat-legacy-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[a-l]*.py | |
| - name: chat-legacy-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[m-z]*.py | |
| - name: chat-new-integration-property | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/integration | |
| tldw_Server_API/tests/Chat_NEW/property | |
| - name: chat-new-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[a-l]*.py | |
| - name: chat-new-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[m-z]*.py | |
| - name: chatbooks-streaming | |
| paths: >- | |
| tldw_Server_API/tests/Chatbooks | |
| tldw_Server_API/tests/Explainer | |
| tldw_Server_API/tests/Streaming | |
| - name: explainer-core | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: llm-adapters-unit | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/unit | |
| tldw_Server_API/tests/LLM_Adapters/benchmarks | |
| - name: llm-adapters-chat-endpoint | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_anthropic_native.py | |
| - name: llm-adapters-chat-errors-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_core_providers.py | |
| - name: llm-adapters-chat-errors-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_google_mistral.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_midstream_error_all.py | |
| - name: llm-adapters-orchestrator-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_anthropic_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_google_mistral.py | |
| - name: llm-adapters-orchestrator-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_groq_openrouter_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_stage3.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_streaming_error_all.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_bedrock_adapter.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_tool_choice_json_mode_endpoint.py | |
| - name: llm-calls-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/test_*.py | |
| - name: llm-calls-property | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/property | |
| - name: llm-local-runtime | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Local | |
| - name: llm-local-backends | |
| paths: >- | |
| tldw_Server_API/tests/LLamaCpp | |
| tldw_Server_API/tests/Local_LLM | |
| - name: product-claims-core | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claim_cluster_upsert_idempotency.py | |
| tldw_Server_API/tests/Claims/test_claim_embeddings_chroma.py | |
| tldw_Server_API/tests/Claims/test_claim_review_rule_assignment.py | |
| tldw_Server_API/tests/Claims/test_claims_alerts_*.py | |
| tldw_Server_API/tests/Claims/test_claims_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_analytics_exports_cleanup.py | |
| tldw_Server_API/tests/Claims/test_claims_api_strict_parse_mode.py | |
| tldw_Server_API/tests/Claims/test_claims_budget_guard.py | |
| tldw_Server_API/tests/Claims/test_claims_cluster*.py | |
| tldw_Server_API/tests/Claims/test_claims_compat_types.py | |
| - name: product-claims-engine | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_dashboard_analytics.py | |
| tldw_Server_API/tests/Claims/test_claims_embedding_refresh_config.py | |
| tldw_Server_API/tests/Claims/test_claims_endpoints_api.py | |
| tldw_Server_API/tests/Claims/test_claims_engine_*.py | |
| tldw_Server_API/tests/Claims/test_claims_extractor*.py | |
| tldw_Server_API/tests/Claims/test_claims_items_api.py | |
| - name: product-claims-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_monitoring_*.py | |
| tldw_Server_API/tests/Claims/test_claims_output_parser.py | |
| tldw_Server_API/tests/Claims/test_claims_prompt_validation.py | |
| tldw_Server_API/tests/Claims/test_claims_rebuild_*.py | |
| tldw_Server_API/tests/Claims/test_claims_response_format_contracts.py | |
| tldw_Server_API/tests/Claims/test_claims_review_*.py | |
| - name: product-claims-service | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_runtime_config.py | |
| tldw_Server_API/tests/Claims/test_claims_service_*.py | |
| tldw_Server_API/tests/Claims/test_claims_settings_*.py | |
| tldw_Server_API/tests/Claims/test_claims_span_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_status_and_envelope_api.py | |
| tldw_Server_API/tests/Claims/test_claims_utils_persistence.py | |
| tldw_Server_API/tests/Claims/test_claims_watchlist_notifications.py | |
| tldw_Server_API/tests/Claims/test_claims_webhook_delivery.py | |
| tldw_Server_API/tests/Claims/test_ingestion_*.py | |
| - name: product-collections | |
| paths: >- | |
| tldw_Server_API/tests/Collections | |
| - name: product-evaluations-abtest | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/embeddings_abtest/test*.py | |
| tldw_Server_API/tests/Evaluations/test_abtest_*.py | |
| tldw_Server_API/tests/Evaluations/test_embeddings_abtest_*.py | |
| - name: product-evaluations-core | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_benchmark_*.py | |
| tldw_Server_API/tests/Evaluations/test_circuit_breaker.py | |
| tldw_Server_API/tests/Evaluations/test_connection_pool.py | |
| tldw_Server_API/tests/Evaluations/test_db_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_error_scenarios.py | |
| tldw_Server_API/tests/Evaluations/test_eval_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluation_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_audit_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_backend_dual.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_core_hardening.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_benchmarks_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_crud_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_datasets_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_migration_cli.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_postgres_crud.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_rag_pipeline_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_stage*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_unified.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_webhooks_*.py | |
| tldw_Server_API/tests/Evaluations/test_mineru_ocr_evaluator.py | |
| tldw_Server_API/tests/Evaluations/test_ms_g_eval.py | |
| tldw_Server_API/tests/Evaluations/test_ocr_metrics.py | |
| tldw_Server_API/tests/Evaluations/test_production_features_integration.py | |
| tldw_Server_API/tests/Evaluations/test_proposition_evaluations.py | |
| tldw_Server_API/tests/Evaluations/test_rag_*.py | |
| tldw_Server_API/tests/Evaluations/test_security.py | |
| tldw_Server_API/tests/Evaluations/test_synthetic_eval_service.py | |
| tldw_Server_API/tests/Evaluations/test_unified_evaluation_service_strict_audit.py | |
| - name: product-evaluations-integration | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/integration/test*.py | |
| tldw_Server_API/tests/Evaluations/property/test*.py | |
| - name: product-evaluations-recipes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_persona_*.py | |
| tldw_Server_API/tests/Evaluations/test_recipe_*.py | |
| - name: product-evaluations-unit | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/unit/test_*.py | |
| - name: product-flashcards | |
| paths: >- | |
| tldw_Server_API/tests/Flashcards/test*.py | |
| - name: product-explainer | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: product-notes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Notes | |
| tldw_Server_API/tests/Notes_NEW | |
| tldw_Server_API/tests/Persona | |
| tldw_Server_API/tests/Personalization | |
| - name: product-prompts-legacy | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management | |
| - name: product-prompts-new | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management_NEW | |
| - name: product-watchlists-a-r | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_admin_*.py | |
| tldw_Server_API/tests/Watchlists/test_audio_*.py | |
| tldw_Server_API/tests/Watchlists/test_companion_*.py | |
| tldw_Server_API/tests/Watchlists/test_dedup_*.py | |
| tldw_Server_API/tests/Watchlists/test_delivery_*.py | |
| tldw_Server_API/tests/Watchlists/test_e2e_*.py | |
| tldw_Server_API/tests/Watchlists/test_fetchers_*.py | |
| tldw_Server_API/tests/Watchlists/test_filter_*.py | |
| tldw_Server_API/tests/Watchlists/test_filters_*.py | |
| tldw_Server_API/tests/Watchlists/test_first_*.py | |
| tldw_Server_API/tests/Watchlists/test_full_*.py | |
| tldw_Server_API/tests/Watchlists/test_include_*.py | |
| tldw_Server_API/tests/Watchlists/test_job_*.py | |
| tldw_Server_API/tests/Watchlists/test_newsletter_*.py | |
| tldw_Server_API/tests/Watchlists/test_operational_*.py | |
| tldw_Server_API/tests/Watchlists/test_opml_*.py | |
| tldw_Server_API/tests/Watchlists/test_perf_*.py | |
| tldw_Server_API/tests/Watchlists/test_pipeline_*.py | |
| tldw_Server_API/tests/Watchlists/test_preview_*.py | |
| tldw_Server_API/tests/Watchlists/test_rate_*.py | |
| tldw_Server_API/tests/Watchlists/test_rss_*.py | |
| tldw_Server_API/tests/Watchlists/test_run_*.py | |
| tldw_Server_API/tests/Watchlists/test_runs_*.py | |
| - name: product-watchlists-core | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_scheduler_*.py | |
| tldw_Server_API/tests/Watchlists/test_output_enrichment_scheduler.py | |
| tldw_Server_API/tests/Watchlists/test_site_*.py | |
| tldw_Server_API/tests/Watchlists/test_subscriptions_*.py | |
| tldw_Server_API/tests/Watchlists/test_template_*.py | |
| tldw_Server_API/tests/Watchlists/test_templates_*.py | |
| tldw_Server_API/tests/Watchlists/test_tts_*.py | |
| tldw_Server_API/tests/Watchlists/test_watchlist_*.py | |
| tldw_Server_API/tests/Watchlists/test_youtube_*.py | |
| - name: product-watchlists-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_watchlists_*.py | |
| - name: product-workflows-adapters-core | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/adapters/test_*.py | |
| - name: product-workflows-step-adapters | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_new_step_adapters.py | |
| - name: product-workflows-step-registry | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_step_registry_runtime_coverage.py | |
| - name: product-workflows-step-capabilities | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_workflow_step_capabilities.py | |
| - name: product-workflows-engine | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_engine_*.py | |
| tldw_Server_API/tests/Workflows/test_dual_backend_engine.py | |
| tldw_Server_API/tests/Workflows/test_orphan_requeue_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_map_substeps_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_attempt_failures.py | |
| tldw_Server_API/tests/Workflows/test_workflow_stress.py | |
| tldw_Server_API/tests/Workflows/test_workflows_scheduler.py | |
| - name: product-workflows-api | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_artifact_*.py | |
| tldw_Server_API/tests/Workflows/test_events_*.py | |
| tldw_Server_API/tests/Workflows/test_runs_*.py | |
| tldw_Server_API/tests/Workflows/test_webhook_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_approval_permissions.py | |
| tldw_Server_API/tests/Workflows/test_workflow_investigation_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_preflight_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_templates_api.py | |
| tldw_Server_API/tests/Workflows/test_workflows_api.py | |
| - name: product-workflows-storage | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_dual_backend_workflows.py | |
| tldw_Server_API/tests/Workflows/test_egress_policy.py | |
| tldw_Server_API/tests/Workflows/test_mcp_tool_*.py | |
| tldw_Server_API/tests/Workflows/test_media_ingest_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_db*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_pg_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_postgres_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_tokens_cost_*.py | |
| - name: product-workflows-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_adapter_path_security.py | |
| tldw_Server_API/tests/Workflows/test_llm_adapter.py | |
| tldw_Server_API/tests/Workflows/test_stage3_chunkers_rag.py | |
| tldw_Server_API/tests/Workflows/test_tts_workflow_normalization.py | |
| tldw_Server_API/tests/Workflows/test_versions_idempotency.py | |
| tldw_Server_API/tests/Workflows/test_workflows_artifact_gc_service.py | |
| tldw_Server_API/tests/Workflows/test_workflows_dag_validation.py | |
| tldw_Server_API/tests/Workflows/test_workflows_extras.py | |
| tldw_Server_API/tests/Workflows/test_workflows_fuzz.py | |
| tldw_Server_API/tests/Workflows/test_workflows_idempotency_ttl.py | |
| tldw_Server_API/tests/Workflows/test_workflows_run_metadata.py | |
| tldw_Server_API/tests/Workflows/test_workflows_truthiness_flags.py | |
| - name: product-prompt-studio | |
| paths: >- | |
| tldw_Server_API/tests/prompt_studio | |
| - name: platform-infrastructure-metrics | |
| paths: >- | |
| tldw_Server_API/tests/Infrastructure | |
| tldw_Server_API/tests/Metrics | |
| tldw_Server_API/tests/Monitoring | |
| - name: platform-mcp-core | |
| paths: >- | |
| tldw_Server_API/tests/MCP | |
| tldw_Server_API/tests/MCP_unified | |
| - name: platform-resource-governance | |
| paths: >- | |
| tldw_Server_API/tests/Resource_Governance | |
| - name: platform-services-startup | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_startup_*.py | |
| - name: platform-services-shutdown-lifespan | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_shutdown_*.py | |
| tldw_Server_API/tests/Services/test_lifespan_*.py | |
| tldw_Server_API/tests/Services/test_worker_lifecycle_ownership_matrix.py | |
| - name: platform-services-core | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_admin_*.py | |
| tldw_Server_API/tests/Services/test_app_*.py | |
| tldw_Server_API/tests/Services/test_claims_*.py | |
| tldw_Server_API/tests/Services/test_compatibility_*.py | |
| tldw_Server_API/tests/Services/test_connectors_*.py | |
| tldw_Server_API/tests/Services/test_document_*.py | |
| tldw_Server_API/tests/Services/test_drain_*.py | |
| tldw_Server_API/tests/Services/test_enhanced_*.py | |
| tldw_Server_API/tests/Services/test_ephemeral_*.py | |
| tldw_Server_API/tests/Services/test_executor_*.py | |
| tldw_Server_API/tests/Services/test_file_*.py | |
| tldw_Server_API/tests/Services/test_jobs_*.py | |
| tldw_Server_API/tests/Services/test_kanban_*.py | |
| tldw_Server_API/tests/Services/test_lifecycle_*.py | |
| tldw_Server_API/tests/Services/test_loop_*.py | |
| tldw_Server_API/tests/Services/test_media_*.py | |
| tldw_Server_API/tests/Services/test_outputs_*.py | |
| tldw_Server_API/tests/Services/test_persona_*.py | |
| tldw_Server_API/tests/Services/test_placeholder_*.py | |
| tldw_Server_API/tests/Services/test_service_*.py | |
| tldw_Server_API/tests/Services/test_storage_*.py | |
| tldw_Server_API/tests/Services/test_tts_*.py | |
| tldw_Server_API/tests/Services/test_writing_annotation_review_jobs_worker.py | |
| tldw_Server_API/tests/Services/test_workflows_*.py | |
| tldw_Server_API/tests/Services/test_xml_*.py | |
| - name: platform-services-main-routing | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_claims_rebuild_startup.py | |
| tldw_Server_API/tests/Services/test_main_lifecycle_contract.py | |
| tldw_Server_API/tests/Services/test_main_readiness_shutdown.py | |
| tldw_Server_API/tests/Services/test_main_router_contract.py | |
| tldw_Server_API/tests/Services/test_openapi_contracts.py | |
| tldw_Server_API/tests/Services/test_router_groups_contract.py | |
| - name: platform-services-main-pollers | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_shutdown_job_pollers.py | |
| - name: platform-sandbox-admin-artifacts | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_admin_*.py | |
| tldw_Server_API/tests/sandbox/test_artifact*.py | |
| - name: platform-sandbox-runtimes | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_docker_*.py | |
| tldw_Server_API/tests/sandbox/test_firecracker_*.py | |
| tldw_Server_API/tests/sandbox/test_lima_*.py | |
| tldw_Server_API/tests/sandbox/test_macos_*.py | |
| tldw_Server_API/tests/sandbox/test_runner_*.py | |
| tldw_Server_API/tests/sandbox/test_runtime_*.py | |
| tldw_Server_API/tests/sandbox/test_runtimes_*.py | |
| tldw_Server_API/tests/sandbox/test_operator_*.py | |
| tldw_Server_API/tests/sandbox/test_seatbelt_*.py | |
| tldw_Server_API/tests/sandbox/test_vz_*.py | |
| - name: platform-sandbox-state-store | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_acp_*.py | |
| tldw_Server_API/tests/sandbox/test_cross_*.py | |
| tldw_Server_API/tests/sandbox/test_execution_*.py | |
| tldw_Server_API/tests/sandbox/test_feature_*.py | |
| tldw_Server_API/tests/sandbox/test_glob_*.py | |
| tldw_Server_API/tests/sandbox/test_idempotency_*.py | |
| tldw_Server_API/tests/sandbox/test_interactive_*.py | |
| tldw_Server_API/tests/sandbox/test_network_*.py | |
| tldw_Server_API/tests/sandbox/test_orchestrator_*.py | |
| tldw_Server_API/tests/sandbox/test_policy_*.py | |
| tldw_Server_API/tests/sandbox/test_queue_*.py | |
| tldw_Server_API/tests/sandbox/test_redis_*.py | |
| tldw_Server_API/tests/sandbox/test_run_*.py | |
| tldw_Server_API/tests/sandbox/test_sandbox_*.py | |
| tldw_Server_API/tests/sandbox/test_snapshot_*.py | |
| tldw_Server_API/tests/sandbox/test_store_*.py | |
| tldw_Server_API/tests/sandbox/test_warm_*.py | |
| tldw_Server_API/tests/sandbox/test_workspace_*.py | |
| tldw_Server_API/tests/sandbox/test_worktree_*.py | |
| - name: platform-sandbox-ws-streams | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_cancel_*.py | |
| tldw_Server_API/tests/sandbox/test_event_bridge.py | |
| tldw_Server_API/tests/sandbox/test_session_*.py | |
| tldw_Server_API/tests/sandbox/test_streams_*.py | |
| tldw_Server_API/tests/sandbox/test_ws_*.py | |
| - name: integrations | |
| paths: >- | |
| tldw_Server_API/tests/External_Sources | |
| tldw_Server_API/tests/Notifications | |
| tldw_Server_API/tests/Tools | |
| tldw_Server_API/tests/WebScraping | |
| tldw_Server_API/tests/Web_Scraping | |
| tldw_Server_API/tests/integration | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| TLDW_TEST_NO_DOCKER: '1' | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| SHARD_NAME: ${{ matrix.shard.name }} | |
| TEST_PATHS: ${{ matrix.shard.paths }} | |
| RESULTS_DIR: test-results-macos-latest-3.12-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg (multi-OS) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.12' | |
| use-uv: ${{ runner.os != 'Windows' }} | |
| enable-pip-cache: ${{ runner.os != 'Windows' }} | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev | |
| - name: Ensure pytest-asyncio installed (OS matrix) | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pytest pytest-asyncio | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-cross-os-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check (Windows, 15 min) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os == 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '900' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke health check (non-Windows) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os != 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '180' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke stop server | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Cache embedding models | |
| if: ${{ github.event_name != 'workflow_dispatch' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| uses: actions/cache@v5 | |
| with: | |
| path: models/embeddings | |
| key: ${{ runner.os }}-embeddings-static-v1 | |
| restore-keys: | | |
| ${{ runner.os }}-embeddings- | |
| - name: Pre-download embedding models | |
| if: ${{ (env.RUN_MODEL_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == 'true') && matrix.shard.name != 'ai-embeddings-backpressure' && matrix.shard.name != 'ai-embeddings-dlq-config' && matrix.shard.name != 'ai-embeddings-media-validation' && matrix.shard.name != 'ai-embeddings-policy' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'ai-embeddings-') || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install huggingface_hub | |
| python Helper_Scripts/download_embedding_models.py --target models/embeddings --skip-defaults --model sentence-transformers/all-MiniLM-L6-v2 | |
| echo "TLDW_EMBEDDING_MODELS_DIR=models/embeddings" >> "$GITHUB_ENV" | |
| - name: Run OS shard tests | |
| if: matrix.shard.name != 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| $TEST_PATHS \ | |
| --durations=50 \ | |
| --junit-xml="$RESULTS_DIR/${{ env.SHARD_NAME }}.xml" | |
| - name: Run legacy-free media checks | |
| if: matrix.shard.name == 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| TLDW_DISABLE_LEGACY_MEDIA=1 pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| tldw_Server_API/tests/Media \ | |
| tldw_Server_API/tests/MediaIngestion_NEW \ | |
| --durations=25 \ | |
| --junit-xml="$RESULTS_DIR/media-legacy-free.xml" | |
| - name: Upload test results | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-macos-latest-py3.12-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| full-suite-macos-312-summary: | |
| name: Full Suite (macos-latest / Python 3.12) | |
| runs-on: ubuntu-latest | |
| needs: [full-suite-macos-312-shards] | |
| if: always() | |
| steps: | |
| - name: Check macos-latest Python 3.12 shard result | |
| shell: bash | |
| run: | | |
| r="${{ needs['full-suite-macos-312-shards'].result }}" | |
| if [ "$r" != "success" ] && [ "$r" != "skipped" ]; then | |
| echo "macos-latest Python 3.12 full-suite shards finished with: $r" | |
| exit 1 | |
| fi | |
| echo "macos-latest Python 3.12 full-suite shards passed (or skipped via path filter)." | |
| full-suite-windows-312-shards: | |
| name: Full Suite shard (windows-latest / Python 3.12 / ${{ matrix.shard.name }}) | |
| runs-on: windows-latest | |
| timeout-minutes: 60 | |
| needs: [lint, syntax-check, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: core-server-smoke | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/Logging | |
| - name: core-config | |
| paths: >- | |
| tldw_Server_API/tests/Config | |
| - name: core-audit-support | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_audit_*.py | |
| tldw_Server_API/tests/Audit/test_pii_pattern_groups.py | |
| tldw_Server_API/tests/Audit/test_risk_settings_overrides.py | |
| tldw_Server_API/tests/Audit/test_sqlite_runtime_pragmas.py | |
| - name: core-audit-unified | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_unified_audit_service.py | |
| - name: core-security | |
| paths: >- | |
| tldw_Server_API/tests/Security | |
| - name: core-setup-usage | |
| paths: >- | |
| tldw_Server_API/tests/Setup | |
| tldw_Server_API/tests/Usage | |
| - name: core-utils-tooling | |
| paths: >- | |
| tldw_Server_API/tests/Helper_Scripts | |
| tldw_Server_API/tests/Context_Integrity | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/helpers | |
| tldw_Server_API/tests/http_client | |
| tldw_Server_API/tests/lint | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: admin-a-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_a*.py | |
| - name: admin-budgets | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_budgets_*.py | |
| - name: admin-bundle-sanitizers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_bundle_service_sanitizers.py | |
| - name: admin-bundle-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_bundle_ops.py | |
| - name: admin-byok-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_service_sanitizers.py | |
| - name: admin-byok-validation | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_validation_*.py | |
| tldw_Server_API/tests/Admin/test_byok_*.py | |
| - name: admin-backup-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_backup_schedules_api.py | |
| - name: admin-backup-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_backup_*.py | |
| tldw_Server_API/tests/Admin/test_backup_schedules_repo.py | |
| - name: admin-conflicts-data-admin | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_c*.py | |
| tldw_Server_API/tests/Admin/test_admin_data_*.py | |
| - name: admin-data-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_ops.py | |
| - name: admin-data-subject-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_api.py | |
| - name: admin-data-subject-repo-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_repo.py | |
| tldw_Server_API/tests/Admin/test_dsr_*.py | |
| - name: admin-e2e-access | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_are_unavailable_without_flag | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_require_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_reject_wrong_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_fail_closed_without_configured_support_key | |
| - name: admin-e2e-seed | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_stable_fixture_ids | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_debug_role_principals | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_requires_explicit_fixture_passwords | |
| - name: admin-e2e-single-user | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_single_user_login_key | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_single_user_api_key_can_read_users_me | |
| - name: admin-e2e-session-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_rejects_unsafe_backup_paths | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_bootstrap_jwt_session_returns_cookie_payload | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_dsr_seed_supports_real_preview | |
| - name: admin-e2e-reset-backups | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_backup_schedules | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_monitoring_authority_state | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_run_due_backup_schedules_processes_scheduled_run | |
| - name: admin-g-i | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_g*.py | |
| tldw_Server_API/tests/Admin/test_admin_i*.py | |
| - name: admin-llm-providers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_llm_providers_*.py | |
| - name: admin-incidents | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_incidents_*.py | |
| - name: admin-llm-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_llm_usage_endpoints.py | |
| - name: admin-maintenance-misc | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_maintenance_*.py | |
| tldw_Server_API/tests/Admin/test_admin_misc_endpoints.py | |
| tldw_Server_API/tests/Admin/test_maintenance_*.py | |
| - name: admin-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_monitoring_*.py | |
| tldw_Server_API/tests/Admin/test_monitoring_*.py | |
| - name: admin-ops-dependencies | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_dependencies.py | |
| - name: admin-ops-endpoints | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_new_endpoints.py | |
| - name: admin-ops-webhooks-orgs | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_webhooks_reports.py | |
| tldw_Server_API/tests/Admin/test_admin_orgs_*.py | |
| - name: admin-profiles-rate-registration | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_profiles_*.py | |
| tldw_Server_API/tests/Admin/test_admin_rate_limits_*.py | |
| tldw_Server_API/tests/Admin/test_admin_registration_*.py | |
| - name: admin-pricing-retention-roles-router | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_pricing_reload_endpoint.py | |
| tldw_Server_API/tests/Admin/test_retention_policy_preview_api.py | |
| tldw_Server_API/tests/Admin/test_role_*.py | |
| tldw_Server_API/tests/Admin/test_router_analytics_*.py | |
| - name: admin-s-sessions-settings | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_scope_service_enterprise_mode.py | |
| tldw_Server_API/tests/Admin/test_admin_service_log_sanitizers.py | |
| tldw_Server_API/tests/Admin/test_admin_sessions_*.py | |
| tldw_Server_API/tests/Admin/test_admin_settings_service.py | |
| tldw_Server_API/tests/Admin/test_admin_smoke.py | |
| - name: admin-split-storage-tools | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_split_*.py | |
| tldw_Server_API/tests/Admin/test_admin_storage_quotas.py | |
| tldw_Server_API/tests/Admin/test_admin_system_ops_service.py | |
| tldw_Server_API/tests/Admin/test_admin_t*.py | |
| - name: admin-users | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_u*.py | |
| - name: admin-watchlists-webhooks | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_w*.py | |
| - name: admin-system-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_system_ops.py | |
| tldw_Server_API/tests/Admin/test_usage_reporting*.py | |
| - name: auth-integration-admin-auth | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_admin_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_api_key_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_auth_*.py | |
| - name: auth-integration-authnz | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_authnz_*.py | |
| - name: auth-integration-b-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_[b-z]*.py | |
| - name: auth-postgres | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Postgres | |
| - name: auth-core-root-property | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/test*.py | |
| tldw_Server_API/tests/AuthNZ/property/test*.py | |
| - name: auth-core-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[a-l]*.py | |
| - name: auth-core-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[m-z]*.py | |
| - name: auth-sqlite | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_SQLite | |
| - name: auth-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[a-l]*.py | |
| - name: auth-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[m-z]*.py | |
| - name: chacha-core-stores | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chacha_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chachanotes_db.py | |
| - name: chacha-character-conversation | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_character_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_conversation_*.py | |
| - name: chacha-content-persona | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_flashcard*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_note_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_order_by_validation.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_persona_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_quizzes_basic.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_web_clipper_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_assistant_defaults_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_resource_memberships_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_sub_resources_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_writing_playground_db.py | |
| - name: db-privileges | |
| paths: >- | |
| tldw_Server_API/tests/DB | |
| tldw_Server_API/tests/DB_Management | |
| tldw_Server_API/tests/MediaDB2 | |
| tldw_Server_API/tests/PrivilegeCatalog | |
| tldw_Server_API/tests/Privileges | |
| - name: ai-chromadb | |
| paths: >- | |
| tldw_Server_API/tests/ChromaDB | |
| - name: ai-chunking-core | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_async_*.py | |
| tldw_Server_API/tests/Chunking/test_auto_*.py | |
| tldw_Server_API/tests/Chunking/test_chunker_*.py | |
| tldw_Server_API/tests/Chunking/test_process_text_components.py | |
| tldw_Server_API/tests/Chunking/test_process_text_refactor_equivalence.py | |
| tldw_Server_API/tests/Chunking/test_chunking_endpoint.py | |
| tldw_Server_API/tests/Chunking/test_chunking_offsets_property.py | |
| tldw_Server_API/tests/Chunking/test_chunking_overlap_properties.py | |
| tldw_Server_API/tests/Chunking/test_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_chunking_template_endpoint_errors.py | |
| - name: ai-chunking-templates | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestDatabaseOperations | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateInitialization | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateProcessing | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_endpoint_sanitization.py | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_validate_schema.py | |
| tldw_Server_API/tests/Chunking/test_template_*.py | |
| - name: ai-chunking-templates-api | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestAPIEndpoints | |
| - name: ai-chunking-templates-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestIntegration | |
| - name: ai-chunking-code-json-xml | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_code_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_json_*.py | |
| tldw_Server_API/tests/Chunking/test_xml_*.py | |
| - name: ai-chunking-semantic-security | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_hierarchical_*.py | |
| tldw_Server_API/tests/Chunking/test_offsets_additional.py | |
| tldw_Server_API/tests/Chunking/test_option_aliases.py | |
| tldw_Server_API/tests/Chunking/test_overlap_clamp.py | |
| tldw_Server_API/tests/Chunking/test_phase3_3_sanitizers.py | |
| tldw_Server_API/tests/Chunking/test_propositions_strategy.py | |
| tldw_Server_API/tests/Chunking/test_security*.py | |
| tldw_Server_API/tests/Chunking/test_semantic_*.py | |
| tldw_Server_API/tests/Chunking/test_sentence_spans_properties.py | |
| tldw_Server_API/tests/Chunking/test_streaming_overlap.py | |
| tldw_Server_API/tests/Chunking/test_thai_tables_spans.py | |
| tldw_Server_API/tests/Chunking/test_thread_safety.py | |
| tldw_Server_API/tests/Chunking/test_tokens_offsets.py | |
| tldw_Server_API/tests/Chunking/unit/test_tokens_fallback_offsets.py | |
| - name: ai-embeddings-async | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_async_*.py | |
| - name: ai-embeddings-backpressure | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_backpressure*.py | |
| tldw_Server_API/tests/Embeddings/test_batch_rate_headers.py | |
| - name: ai-embeddings-chromadb-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chromadb_*.py | |
| - name: ai-embeddings-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chunk_metadata_backfill.py | |
| tldw_Server_API/tests/Embeddings/test_circuit_breaker_*.py | |
| tldw_Server_API/tests/Embeddings/test_compactor_admin_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_connection_pool_failure_accounting.py | |
| tldw_Server_API/tests/Embeddings/test_contextual_chunking.py | |
| - name: ai-embeddings-dlq-config | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_delete_by_filter_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_dlq_*.py | |
| tldw_Server_API/tests/Embeddings/test_embedding_*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_audit_adapter.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_batch_dimensions.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_dimensions_policy.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_endpoint_cache_identity.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_fallback*.py | |
| - name: ai-embeddings-jobs-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_jobs*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_local_api.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_loop_scoping.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_memory*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_metric*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_model_management.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_optional_deps_import.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_redis*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_rg_sync_helper.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_test_mode_truthiness.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_token_arrays.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_unsupported_provider.py | |
| - name: ai-embeddings-policy | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_policy*.py | |
| tldw_Server_API/tests/Embeddings/test_l2_normalization_policy.py | |
| - name: ai-embeddings-v5-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_production.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_property.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_unit.py | |
| - name: ai-embeddings-v5-integration | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_integration.py | |
| - name: ai-embeddings-hyde-ledger | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_hyde_backfill_cli.py | |
| tldw_Server_API/tests/Embeddings/test_ledger_status_endpoint.py | |
| - name: ai-embeddings-media-validation | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_media_*.py | |
| tldw_Server_API/tests/Embeddings/test_message_validator*.py | |
| - name: ai-embeddings-observability | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_metrics*.py | |
| tldw_Server_API/tests/Embeddings/test_model_eviction_in_use_guard.py | |
| tldw_Server_API/tests/Embeddings/test_multi_tier_cache_sync_async_loop.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_pgvector*.py | |
| tldw_Server_API/tests/Embeddings/test_priority_bump_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_redis_integration_smoke.py | |
| tldw_Server_API/tests/Embeddings/test_reembed_schedule_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_request*.py | |
| tldw_Server_API/tests/Embeddings/test_schema_drift.py | |
| tldw_Server_API/tests/Embeddings/test_stage_controls.py | |
| tldw_Server_API/tests/Embeddings/test_storage_idempotency_property.py | |
| tldw_Server_API/tests/Embeddings/test_trace_headers.py | |
| tldw_Server_API/tests/Embeddings/test_vector*.py | |
| - name: vector-stores-integration | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/integration | |
| - name: vector-stores-api | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/test*.py | |
| - name: vector-stores-unit | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/unit | |
| - name: paper-search | |
| paths: >- | |
| tldw_Server_API/tests/PaperSearch | |
| - name: rag-legacy | |
| paths: >- | |
| tldw_Server_API/tests/RAG | |
| - name: rag-new-integration-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_adapter_guards.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_bm25_weights.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_capabilities_styles.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_health_endpoints.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_integration.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_request_contract_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_source_health_endpoint.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_stream_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_strict_extractive_nli_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_unified_features_endpoint.py | |
| - name: rag-new-integration-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_agentic_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_research_agent_loop.py | |
| - name: rag-new-integration-batch | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_checkpoint_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_resume_api.py | |
| - name: rag-new-integration-research | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_ablate_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_benchmarks_ablation.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_doc_researcher_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_retriever_pgvector_multi_search.py | |
| - name: rag-new-property-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/property/test_*.py | |
| tldw_Server_API/tests/RAG_NEW/test_*.py | |
| - name: rag-new-unit-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_agentic_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_agentic*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_research_agent.py | |
| - name: rag-new-unit-cache-vector | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_cache_invalidation_core.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chromadb*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_embedding_cache_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pgvector_adapter_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rewrite_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_semantic_cache*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_vector*.py | |
| - name: rag-new-unit-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_reranking_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_retrieval_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_flashrank_reranker_init.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_functional_pipeline.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_generation*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_hyde*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_kanban_retriever.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_learned_fusion_simple.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_llamacpp_reranker_topk_full_input.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pipeline*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_post*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pre_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_query*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_request*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_response_writer.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_reranker*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_streaming_executor.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_two_tier_reranker.py | |
| - name: rag-new-unit-unified-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_unified_pipeline*.py | |
| - name: rag-new-unit-rag-contracts | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rag*.py | |
| - name: rag-new-unit-guardrails-source | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_citations_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_guardrails*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_path_validation_security.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_payload_exemplars*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_security_filters_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_source*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_strict_extractive_and_citations.py | |
| - name: rag-new-unit-media-ingest | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_block_to_chunks.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chunk_fts_integration.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_document_processing_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_enhanced_chunking_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_ingest_dedupe_and_chunk_ids.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_media*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_structure_index.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_temporal_filters.py | |
| - name: rag-new-unit-core-misc | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_analytics_db_dev_reconciliation.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_batch*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_clarification_gate.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_corpus_synonyms_expansion.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_evidence_chains_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_feedback_learning.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_fts_query_translation_edge_cases.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_knowledge_source_retrieval_coverage.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_phase_metrics.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_prompt_templates_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_quick_wins_spell_check_compat.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_schema_corpus_alias.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_standard_core_contract_threading.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_suggestion_generator.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_synonyms_registry_logging.py | |
| - name: research-websearch | |
| paths: >- | |
| tldw_Server_API/tests/Research | |
| tldw_Server_API/tests/WebSearch | |
| - name: media-audio | |
| paths: >- | |
| tldw_Server_API/tests/Audio | |
| tldw_Server_API/tests/Audio_Studio | |
| tldw_Server_API/tests/AudioJobs | |
| tldw_Server_API/tests/STT | |
| tldw_Server_API/tests/TTS | |
| tldw_Server_API/tests/TTS_NEW | |
| tldw_Server_API/tests/VLM | |
| - name: media-core-documents | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_document*.py | |
| tldw_Server_API/tests/Media/test_pdf_text_normalization.py | |
| - name: media-core-api | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_archive_member_cap.py | |
| tldw_Server_API/tests/Media/test_auto_chunking_process_endpoints.py | |
| tldw_Server_API/tests/Media/test_cache_index.py | |
| tldw_Server_API/tests/Media/test_ingest_web_content_endpoint_sanitization.py | |
| tldw_Server_API/tests/Media/test_json_*.py | |
| tldw_Server_API/tests/Media/test_media_*.py | |
| tldw_Server_API/tests/Media/test_navigation_policy_contract.py | |
| tldw_Server_API/tests/Media/test_process_code_and_uploads.py | |
| tldw_Server_API/tests/Media/test_upload_sink_security.py | |
| tldw_Server_API/tests/Media/unit | |
| - name: media-ingestion-new-ocr | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/test_*.py | |
| - name: media-ingestion-new-integration | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/integration | |
| - name: media-ingestion-new-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_archive_and_sanitization.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_audio_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_auto_chunking_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_zip_safe_extract.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_processing_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ebook_safe_paths.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_email_endpoint_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_file_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_filename_and_mime_and_archive.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ingest_jobs_batch_lookup.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_add_deps_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_canonical_helpers.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_ingest*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_list_no_slash_redirect.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_upload_failures.py | |
| - name: media-ingestion-new-unit-mediawiki | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_mediawiki_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ms_g_eval_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_analysis_regressions.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_safe_paths.py | |
| - name: media-ingestion-new-unit-persistence | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_persistence_*.py | |
| - name: media-ingestion-new-unit-processing | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_plaintext_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_playlist_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_batch_media_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_document_like_item_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_transcription_models_endpoint.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_utils_time_conversion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_video_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_visual_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_xml_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_youtube_audio_downloads.py | |
| - name: media-ingestion-modification | |
| paths: >- | |
| tldw_Server_API/tests/Media_Ingestion_Modification | |
| - name: media-legacy-free | |
| paths: >- | |
| tldw_Server_API/tests/Media | |
| tldw_Server_API/tests/MediaIngestion_NEW | |
| - name: chat-character-legacy-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_character_chat_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_dictionary_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_settings_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_e2e_mock.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_unified_flag_monkeypatched.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_completions_tool_messages_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_export_includes_tools_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_legacy_complete_deprecation.py | |
| tldw_Server_API/tests/Character_Chat/test_messages_tool_calls_exposure.py | |
| tldw_Server_API/tests/Character_Chat/test_persona_dialogue_tree_character_eval.py | |
| - name: chat-character-legacy-files | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_file_mime_detection.py | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py | |
| - name: chat-character-legacy-worldbook | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_manager_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_prompt_context.py | |
| tldw_Server_API/tests/Character_Chat/unit/test_chat_session_character_scope_api.py | |
| - name: chat-character-db-core | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_ccv3_parser.py | |
| tldw_Server_API/tests/Characters/test_chacha_postgres_sync_log_entity_column.py | |
| tldw_Server_API/tests/Characters/test_character_chat_greetings_api.py | |
| tldw_Server_API/tests/Characters/test_character_chat_lib.py | |
| tldw_Server_API/tests/Characters/test_character_functionality_db.py | |
| tldw_Server_API/tests/Characters/test_characters_world_book_permissions_unit.py | |
| - name: chat-character-db-api | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_characters_endpoint.py | |
| - name: chat-character-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/test_utils.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_cards_fts_bootstrap.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_default_provider.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_manager.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_generation_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_memory.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_prompt_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_templates.py | |
| - name: chat-character-unit-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_completion_precheck.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_grammar_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_create_schema.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_error_mapping.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_settings_merge.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_group_chat_scope_resolution.py | |
| - name: chat-character-unit-persona | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_embeddings.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_selector.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_telemetry.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_png_export.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_postgres_backends.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_stream_persist_lookup.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_appendable.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_manager.py | |
| - name: chat-character-unit-prd | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_prd_round2_endpoints.py | |
| - name: chat-character-property | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/property | |
| - name: chat-character-integration-api | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_exemplars_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_memory_endpoint.py | |
| - name: chat-character-integration-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_auto_routing.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_stream_and_persist.py | |
| - name: chat-character-integration-context | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_conversation_context_primitives.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_role_normalization_and_search.py | |
| - name: chat-legacy-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chat/test*.py | |
| tldw_Server_API/tests/Chat/integration | |
| - name: chat-legacy-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[a-l]*.py | |
| - name: chat-legacy-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[m-z]*.py | |
| - name: chat-new-integration-property | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/integration | |
| tldw_Server_API/tests/Chat_NEW/property | |
| - name: chat-new-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[a-l]*.py | |
| - name: chat-new-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[m-z]*.py | |
| - name: chatbooks-streaming | |
| paths: >- | |
| tldw_Server_API/tests/Chatbooks | |
| tldw_Server_API/tests/Explainer | |
| tldw_Server_API/tests/Streaming | |
| - name: explainer-core | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: llm-adapters-unit | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/unit | |
| tldw_Server_API/tests/LLM_Adapters/benchmarks | |
| - name: llm-adapters-chat-endpoint | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_anthropic_native.py | |
| - name: llm-adapters-chat-errors-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_core_providers.py | |
| - name: llm-adapters-chat-errors-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_google_mistral.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_midstream_error_all.py | |
| - name: llm-adapters-orchestrator-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_anthropic_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_google_mistral.py | |
| - name: llm-adapters-orchestrator-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_groq_openrouter_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_stage3.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_streaming_error_all.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_bedrock_adapter.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_tool_choice_json_mode_endpoint.py | |
| - name: llm-calls-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/test_*.py | |
| - name: llm-calls-property | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/property | |
| - name: llm-local-runtime | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Local | |
| - name: llm-local-backends | |
| paths: >- | |
| tldw_Server_API/tests/LLamaCpp | |
| tldw_Server_API/tests/Local_LLM | |
| - name: product-claims-core | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claim_cluster_upsert_idempotency.py | |
| tldw_Server_API/tests/Claims/test_claim_embeddings_chroma.py | |
| tldw_Server_API/tests/Claims/test_claim_review_rule_assignment.py | |
| tldw_Server_API/tests/Claims/test_claims_alerts_*.py | |
| tldw_Server_API/tests/Claims/test_claims_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_analytics_exports_cleanup.py | |
| tldw_Server_API/tests/Claims/test_claims_api_strict_parse_mode.py | |
| tldw_Server_API/tests/Claims/test_claims_budget_guard.py | |
| tldw_Server_API/tests/Claims/test_claims_cluster*.py | |
| tldw_Server_API/tests/Claims/test_claims_compat_types.py | |
| - name: product-claims-engine | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_dashboard_analytics.py | |
| tldw_Server_API/tests/Claims/test_claims_embedding_refresh_config.py | |
| tldw_Server_API/tests/Claims/test_claims_endpoints_api.py | |
| tldw_Server_API/tests/Claims/test_claims_engine_*.py | |
| tldw_Server_API/tests/Claims/test_claims_extractor*.py | |
| tldw_Server_API/tests/Claims/test_claims_items_api.py | |
| - name: product-claims-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_monitoring_*.py | |
| tldw_Server_API/tests/Claims/test_claims_output_parser.py | |
| tldw_Server_API/tests/Claims/test_claims_prompt_validation.py | |
| tldw_Server_API/tests/Claims/test_claims_rebuild_*.py | |
| tldw_Server_API/tests/Claims/test_claims_response_format_contracts.py | |
| tldw_Server_API/tests/Claims/test_claims_review_*.py | |
| - name: product-claims-service | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_runtime_config.py | |
| tldw_Server_API/tests/Claims/test_claims_service_*.py | |
| tldw_Server_API/tests/Claims/test_claims_settings_*.py | |
| tldw_Server_API/tests/Claims/test_claims_span_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_status_and_envelope_api.py | |
| tldw_Server_API/tests/Claims/test_claims_utils_persistence.py | |
| tldw_Server_API/tests/Claims/test_claims_watchlist_notifications.py | |
| tldw_Server_API/tests/Claims/test_claims_webhook_delivery.py | |
| tldw_Server_API/tests/Claims/test_ingestion_*.py | |
| - name: product-collections | |
| paths: >- | |
| tldw_Server_API/tests/Collections | |
| - name: product-evaluations-abtest | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/embeddings_abtest/test*.py | |
| tldw_Server_API/tests/Evaluations/test_abtest_*.py | |
| tldw_Server_API/tests/Evaluations/test_embeddings_abtest_*.py | |
| - name: product-evaluations-core | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_benchmark_*.py | |
| tldw_Server_API/tests/Evaluations/test_circuit_breaker.py | |
| tldw_Server_API/tests/Evaluations/test_connection_pool.py | |
| tldw_Server_API/tests/Evaluations/test_db_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_error_scenarios.py | |
| tldw_Server_API/tests/Evaluations/test_eval_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluation_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_audit_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_backend_dual.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_core_hardening.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_benchmarks_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_crud_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_datasets_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_migration_cli.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_postgres_crud.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_rag_pipeline_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_stage*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_unified.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_webhooks_*.py | |
| tldw_Server_API/tests/Evaluations/test_mineru_ocr_evaluator.py | |
| tldw_Server_API/tests/Evaluations/test_ms_g_eval.py | |
| tldw_Server_API/tests/Evaluations/test_ocr_metrics.py | |
| tldw_Server_API/tests/Evaluations/test_production_features_integration.py | |
| tldw_Server_API/tests/Evaluations/test_proposition_evaluations.py | |
| tldw_Server_API/tests/Evaluations/test_rag_*.py | |
| tldw_Server_API/tests/Evaluations/test_security.py | |
| tldw_Server_API/tests/Evaluations/test_synthetic_eval_service.py | |
| tldw_Server_API/tests/Evaluations/test_unified_evaluation_service_strict_audit.py | |
| - name: product-evaluations-integration | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/integration/test*.py | |
| tldw_Server_API/tests/Evaluations/property/test*.py | |
| - name: product-evaluations-recipes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_persona_*.py | |
| tldw_Server_API/tests/Evaluations/test_recipe_*.py | |
| - name: product-evaluations-unit | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/unit/test_*.py | |
| - name: product-flashcards | |
| paths: >- | |
| tldw_Server_API/tests/Flashcards/test*.py | |
| - name: product-explainer | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: product-notes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Notes | |
| tldw_Server_API/tests/Notes_NEW | |
| tldw_Server_API/tests/Persona | |
| tldw_Server_API/tests/Personalization | |
| - name: product-prompts-legacy | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management | |
| - name: product-prompts-new | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management_NEW | |
| - name: product-watchlists-a-r | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_admin_*.py | |
| tldw_Server_API/tests/Watchlists/test_audio_*.py | |
| tldw_Server_API/tests/Watchlists/test_companion_*.py | |
| tldw_Server_API/tests/Watchlists/test_dedup_*.py | |
| tldw_Server_API/tests/Watchlists/test_delivery_*.py | |
| tldw_Server_API/tests/Watchlists/test_e2e_*.py | |
| tldw_Server_API/tests/Watchlists/test_fetchers_*.py | |
| tldw_Server_API/tests/Watchlists/test_filter_*.py | |
| tldw_Server_API/tests/Watchlists/test_filters_*.py | |
| tldw_Server_API/tests/Watchlists/test_first_*.py | |
| tldw_Server_API/tests/Watchlists/test_full_*.py | |
| tldw_Server_API/tests/Watchlists/test_include_*.py | |
| tldw_Server_API/tests/Watchlists/test_job_*.py | |
| tldw_Server_API/tests/Watchlists/test_newsletter_*.py | |
| tldw_Server_API/tests/Watchlists/test_operational_*.py | |
| tldw_Server_API/tests/Watchlists/test_opml_*.py | |
| tldw_Server_API/tests/Watchlists/test_perf_*.py | |
| tldw_Server_API/tests/Watchlists/test_pipeline_*.py | |
| tldw_Server_API/tests/Watchlists/test_preview_*.py | |
| tldw_Server_API/tests/Watchlists/test_rate_*.py | |
| tldw_Server_API/tests/Watchlists/test_rss_*.py | |
| tldw_Server_API/tests/Watchlists/test_run_*.py | |
| tldw_Server_API/tests/Watchlists/test_runs_*.py | |
| - name: product-watchlists-core | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_scheduler_*.py | |
| tldw_Server_API/tests/Watchlists/test_output_enrichment_scheduler.py | |
| tldw_Server_API/tests/Watchlists/test_site_*.py | |
| tldw_Server_API/tests/Watchlists/test_subscriptions_*.py | |
| tldw_Server_API/tests/Watchlists/test_template_*.py | |
| tldw_Server_API/tests/Watchlists/test_templates_*.py | |
| tldw_Server_API/tests/Watchlists/test_tts_*.py | |
| tldw_Server_API/tests/Watchlists/test_watchlist_*.py | |
| tldw_Server_API/tests/Watchlists/test_youtube_*.py | |
| - name: product-watchlists-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_watchlists_*.py | |
| - name: product-workflows-adapters-core | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/adapters/test_*.py | |
| - name: product-workflows-step-adapters | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_new_step_adapters.py | |
| - name: product-workflows-step-registry | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_step_registry_runtime_coverage.py | |
| - name: product-workflows-step-capabilities | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_workflow_step_capabilities.py | |
| - name: product-workflows-engine | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_engine_*.py | |
| tldw_Server_API/tests/Workflows/test_dual_backend_engine.py | |
| tldw_Server_API/tests/Workflows/test_orphan_requeue_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_map_substeps_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_attempt_failures.py | |
| tldw_Server_API/tests/Workflows/test_workflow_stress.py | |
| tldw_Server_API/tests/Workflows/test_workflows_scheduler.py | |
| - name: product-workflows-api | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_artifact_*.py | |
| tldw_Server_API/tests/Workflows/test_events_*.py | |
| tldw_Server_API/tests/Workflows/test_runs_*.py | |
| tldw_Server_API/tests/Workflows/test_webhook_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_approval_permissions.py | |
| tldw_Server_API/tests/Workflows/test_workflow_investigation_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_preflight_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_templates_api.py | |
| tldw_Server_API/tests/Workflows/test_workflows_api.py | |
| - name: product-workflows-storage | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_dual_backend_workflows.py | |
| tldw_Server_API/tests/Workflows/test_egress_policy.py | |
| tldw_Server_API/tests/Workflows/test_mcp_tool_*.py | |
| tldw_Server_API/tests/Workflows/test_media_ingest_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_db*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_pg_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_postgres_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_tokens_cost_*.py | |
| - name: product-workflows-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_adapter_path_security.py | |
| tldw_Server_API/tests/Workflows/test_llm_adapter.py | |
| tldw_Server_API/tests/Workflows/test_stage3_chunkers_rag.py | |
| tldw_Server_API/tests/Workflows/test_tts_workflow_normalization.py | |
| tldw_Server_API/tests/Workflows/test_versions_idempotency.py | |
| tldw_Server_API/tests/Workflows/test_workflows_artifact_gc_service.py | |
| tldw_Server_API/tests/Workflows/test_workflows_dag_validation.py | |
| tldw_Server_API/tests/Workflows/test_workflows_extras.py | |
| tldw_Server_API/tests/Workflows/test_workflows_fuzz.py | |
| tldw_Server_API/tests/Workflows/test_workflows_idempotency_ttl.py | |
| tldw_Server_API/tests/Workflows/test_workflows_run_metadata.py | |
| tldw_Server_API/tests/Workflows/test_workflows_truthiness_flags.py | |
| - name: product-prompt-studio | |
| paths: >- | |
| tldw_Server_API/tests/prompt_studio | |
| - name: platform-infrastructure-metrics | |
| paths: >- | |
| tldw_Server_API/tests/Infrastructure | |
| tldw_Server_API/tests/Metrics | |
| tldw_Server_API/tests/Monitoring | |
| - name: platform-mcp-core | |
| paths: >- | |
| tldw_Server_API/tests/MCP | |
| tldw_Server_API/tests/MCP_unified | |
| - name: platform-resource-governance | |
| paths: >- | |
| tldw_Server_API/tests/Resource_Governance | |
| - name: platform-services-startup | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_startup_*.py | |
| - name: platform-services-shutdown-lifespan | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_shutdown_*.py | |
| tldw_Server_API/tests/Services/test_lifespan_*.py | |
| tldw_Server_API/tests/Services/test_worker_lifecycle_ownership_matrix.py | |
| - name: platform-services-core | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_admin_*.py | |
| tldw_Server_API/tests/Services/test_app_*.py | |
| tldw_Server_API/tests/Services/test_claims_*.py | |
| tldw_Server_API/tests/Services/test_compatibility_*.py | |
| tldw_Server_API/tests/Services/test_connectors_*.py | |
| tldw_Server_API/tests/Services/test_document_*.py | |
| tldw_Server_API/tests/Services/test_drain_*.py | |
| tldw_Server_API/tests/Services/test_enhanced_*.py | |
| tldw_Server_API/tests/Services/test_ephemeral_*.py | |
| tldw_Server_API/tests/Services/test_executor_*.py | |
| tldw_Server_API/tests/Services/test_file_*.py | |
| tldw_Server_API/tests/Services/test_jobs_*.py | |
| tldw_Server_API/tests/Services/test_kanban_*.py | |
| tldw_Server_API/tests/Services/test_lifecycle_*.py | |
| tldw_Server_API/tests/Services/test_loop_*.py | |
| tldw_Server_API/tests/Services/test_media_*.py | |
| tldw_Server_API/tests/Services/test_outputs_*.py | |
| tldw_Server_API/tests/Services/test_persona_*.py | |
| tldw_Server_API/tests/Services/test_placeholder_*.py | |
| tldw_Server_API/tests/Services/test_service_*.py | |
| tldw_Server_API/tests/Services/test_storage_*.py | |
| tldw_Server_API/tests/Services/test_tts_*.py | |
| tldw_Server_API/tests/Services/test_writing_annotation_review_jobs_worker.py | |
| tldw_Server_API/tests/Services/test_workflows_*.py | |
| tldw_Server_API/tests/Services/test_xml_*.py | |
| - name: platform-services-main-routing | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_claims_rebuild_startup.py | |
| tldw_Server_API/tests/Services/test_main_lifecycle_contract.py | |
| tldw_Server_API/tests/Services/test_main_readiness_shutdown.py | |
| tldw_Server_API/tests/Services/test_main_router_contract.py | |
| tldw_Server_API/tests/Services/test_openapi_contracts.py | |
| tldw_Server_API/tests/Services/test_router_groups_contract.py | |
| - name: platform-services-main-pollers | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_shutdown_job_pollers.py | |
| - name: platform-sandbox-admin-artifacts | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_admin_*.py | |
| tldw_Server_API/tests/sandbox/test_artifact*.py | |
| - name: platform-sandbox-runtimes | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_docker_*.py | |
| tldw_Server_API/tests/sandbox/test_firecracker_*.py | |
| tldw_Server_API/tests/sandbox/test_lima_*.py | |
| tldw_Server_API/tests/sandbox/test_macos_*.py | |
| tldw_Server_API/tests/sandbox/test_runner_*.py | |
| tldw_Server_API/tests/sandbox/test_runtime_*.py | |
| tldw_Server_API/tests/sandbox/test_runtimes_*.py | |
| tldw_Server_API/tests/sandbox/test_operator_*.py | |
| tldw_Server_API/tests/sandbox/test_seatbelt_*.py | |
| tldw_Server_API/tests/sandbox/test_vz_*.py | |
| - name: platform-sandbox-state-store | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_acp_*.py | |
| tldw_Server_API/tests/sandbox/test_cross_*.py | |
| tldw_Server_API/tests/sandbox/test_execution_*.py | |
| tldw_Server_API/tests/sandbox/test_feature_*.py | |
| tldw_Server_API/tests/sandbox/test_glob_*.py | |
| tldw_Server_API/tests/sandbox/test_idempotency_*.py | |
| tldw_Server_API/tests/sandbox/test_interactive_*.py | |
| tldw_Server_API/tests/sandbox/test_network_*.py | |
| tldw_Server_API/tests/sandbox/test_orchestrator_*.py | |
| tldw_Server_API/tests/sandbox/test_policy_*.py | |
| tldw_Server_API/tests/sandbox/test_queue_*.py | |
| tldw_Server_API/tests/sandbox/test_redis_*.py | |
| tldw_Server_API/tests/sandbox/test_run_*.py | |
| tldw_Server_API/tests/sandbox/test_sandbox_*.py | |
| tldw_Server_API/tests/sandbox/test_snapshot_*.py | |
| tldw_Server_API/tests/sandbox/test_store_*.py | |
| tldw_Server_API/tests/sandbox/test_warm_*.py | |
| tldw_Server_API/tests/sandbox/test_workspace_*.py | |
| tldw_Server_API/tests/sandbox/test_worktree_*.py | |
| - name: platform-sandbox-ws-streams | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_cancel_*.py | |
| tldw_Server_API/tests/sandbox/test_event_bridge.py | |
| tldw_Server_API/tests/sandbox/test_session_*.py | |
| tldw_Server_API/tests/sandbox/test_streams_*.py | |
| tldw_Server_API/tests/sandbox/test_ws_*.py | |
| - name: integrations | |
| paths: >- | |
| tldw_Server_API/tests/External_Sources | |
| tldw_Server_API/tests/Notifications | |
| tldw_Server_API/tests/Tools | |
| tldw_Server_API/tests/WebScraping | |
| tldw_Server_API/tests/Web_Scraping | |
| tldw_Server_API/tests/integration | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| TLDW_TEST_NO_DOCKER: '1' | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| SHARD_NAME: ${{ matrix.shard.name }} | |
| TEST_PATHS: ${{ matrix.shard.paths }} | |
| RESULTS_DIR: test-results-windows-latest-3.12-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg (multi-OS) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.12' | |
| use-uv: ${{ runner.os != 'Windows' }} | |
| enable-pip-cache: ${{ runner.os != 'Windows' }} | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev | |
| - name: Ensure pytest-asyncio installed (OS matrix) | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pytest pytest-asyncio | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-cross-os-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check (Windows, 15 min) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os == 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '900' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke health check (non-Windows) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os != 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '180' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke stop server | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Cache embedding models | |
| if: ${{ github.event_name != 'workflow_dispatch' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| uses: actions/cache@v5 | |
| with: | |
| path: models/embeddings | |
| key: ${{ runner.os }}-embeddings-static-v1 | |
| restore-keys: | | |
| ${{ runner.os }}-embeddings- | |
| - name: Pre-download embedding models | |
| if: ${{ (env.RUN_MODEL_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == 'true') && matrix.shard.name != 'ai-embeddings-backpressure' && matrix.shard.name != 'ai-embeddings-dlq-config' && matrix.shard.name != 'ai-embeddings-media-validation' && matrix.shard.name != 'ai-embeddings-policy' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'ai-embeddings-') || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install huggingface_hub | |
| python Helper_Scripts/download_embedding_models.py --target models/embeddings --skip-defaults --model sentence-transformers/all-MiniLM-L6-v2 | |
| echo "TLDW_EMBEDDING_MODELS_DIR=models/embeddings" >> "$GITHUB_ENV" | |
| - name: Run OS shard tests | |
| if: matrix.shard.name != 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| $TEST_PATHS \ | |
| --durations=50 \ | |
| --junit-xml="$RESULTS_DIR/${{ env.SHARD_NAME }}.xml" | |
| - name: Run legacy-free media checks | |
| if: matrix.shard.name == 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| TLDW_DISABLE_LEGACY_MEDIA=1 pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| tldw_Server_API/tests/Media \ | |
| tldw_Server_API/tests/MediaIngestion_NEW \ | |
| --durations=25 \ | |
| --junit-xml="$RESULTS_DIR/media-legacy-free.xml" | |
| - name: Upload test results | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-windows-latest-py3.12-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| full-suite-windows-312-summary: | |
| name: Full Suite (windows-latest / Python 3.12) | |
| runs-on: ubuntu-latest | |
| needs: [full-suite-windows-312-shards] | |
| if: always() | |
| steps: | |
| - name: Check windows-latest Python 3.12 shard result | |
| shell: bash | |
| run: | | |
| r="${{ needs['full-suite-windows-312-shards'].result }}" | |
| if [ "$r" != "success" ] && [ "$r" != "skipped" ]; then | |
| echo "windows-latest Python 3.12 full-suite shards finished with: $r" | |
| exit 1 | |
| fi | |
| echo "windows-latest Python 3.12 full-suite shards passed (or skipped via path filter)." | |
| full-suite-os-313-release-shards: | |
| name: Release Full Suite shard (${{ matrix.os }} / Python 3.13 / ${{ matrix.shard.name }}) | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 35 | |
| needs: [lint, syntax-check] | |
| if: github.event_name != 'pull_request' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows-latest, macos-latest] | |
| shard: | |
| - name: core-server-smoke | |
| paths: >- | |
| tldw_Server_API/tests/test_*.py | |
| tldw_Server_API/tests/Health | |
| tldw_Server_API/tests/Logging | |
| - name: core-config | |
| paths: >- | |
| tldw_Server_API/tests/Config | |
| - name: core-audit-support | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_audit_*.py | |
| tldw_Server_API/tests/Audit/test_pii_pattern_groups.py | |
| tldw_Server_API/tests/Audit/test_risk_settings_overrides.py | |
| tldw_Server_API/tests/Audit/test_sqlite_runtime_pragmas.py | |
| - name: core-audit-unified | |
| paths: >- | |
| tldw_Server_API/tests/Audit/test_unified_audit_service.py | |
| - name: core-security | |
| paths: >- | |
| tldw_Server_API/tests/Security | |
| - name: core-setup-usage | |
| paths: >- | |
| tldw_Server_API/tests/Setup | |
| tldw_Server_API/tests/Usage | |
| - name: core-utils-tooling | |
| paths: >- | |
| tldw_Server_API/tests/Helper_Scripts | |
| tldw_Server_API/tests/Context_Integrity | |
| tldw_Server_API/tests/Utils | |
| tldw_Server_API/tests/helpers | |
| tldw_Server_API/tests/http_client | |
| tldw_Server_API/tests/lint | |
| tldw_Server_API/tests/sanity_tests | |
| tldw_Server_API/tests/schemas | |
| tldw_Server_API/tests/unit | |
| - name: admin-a-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_a*.py | |
| - name: admin-budgets | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_budgets_*.py | |
| - name: admin-bundle-sanitizers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_bundle_service_sanitizers.py | |
| - name: admin-bundle-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_bundle_ops.py | |
| - name: admin-byok-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_service_sanitizers.py | |
| - name: admin-byok-validation | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_byok_validation_*.py | |
| tldw_Server_API/tests/Admin/test_byok_*.py | |
| - name: admin-backup-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_backup_schedules_api.py | |
| - name: admin-backup-core | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_backup_*.py | |
| tldw_Server_API/tests/Admin/test_backup_schedules_repo.py | |
| - name: admin-conflicts-data-admin | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_c*.py | |
| tldw_Server_API/tests/Admin/test_admin_data_*.py | |
| - name: admin-data-ops | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_ops.py | |
| - name: admin-data-subject-api | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_api.py | |
| - name: admin-data-subject-repo-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_data_subject_requests_repo.py | |
| tldw_Server_API/tests/Admin/test_dsr_*.py | |
| - name: admin-e2e-access | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_are_unavailable_without_flag | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_require_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_reject_wrong_support_header | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_routes_fail_closed_without_configured_support_key | |
| - name: admin-e2e-seed | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_stable_fixture_ids | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_debug_role_principals | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_requires_explicit_fixture_passwords | |
| - name: admin-e2e-single-user | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_seed_returns_single_user_login_key | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_single_user_api_key_can_read_users_me | |
| - name: admin-e2e-session-dsr | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_rejects_unsafe_backup_paths | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_bootstrap_jwt_session_returns_cookie_payload | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_dsr_seed_supports_real_preview | |
| - name: admin-e2e-reset-backups | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_backup_schedules | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_reset_clears_monitoring_authority_state | |
| tldw_Server_API/tests/Admin/test_admin_e2e_support_api.py::test_admin_e2e_run_due_backup_schedules_processes_scheduled_run | |
| - name: admin-g-i | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_g*.py | |
| tldw_Server_API/tests/Admin/test_admin_i*.py | |
| - name: admin-llm-providers | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_llm_providers_*.py | |
| - name: admin-incidents | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_incidents_*.py | |
| - name: admin-llm-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_llm_usage_endpoints.py | |
| - name: admin-maintenance-misc | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_maintenance_*.py | |
| tldw_Server_API/tests/Admin/test_admin_misc_endpoints.py | |
| tldw_Server_API/tests/Admin/test_maintenance_*.py | |
| - name: admin-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_monitoring_*.py | |
| tldw_Server_API/tests/Admin/test_monitoring_*.py | |
| - name: admin-ops-dependencies | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_dependencies.py | |
| - name: admin-ops-endpoints | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_new_endpoints.py | |
| - name: admin-ops-webhooks-orgs | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_ops_webhooks_reports.py | |
| tldw_Server_API/tests/Admin/test_admin_orgs_*.py | |
| - name: admin-profiles-rate-registration | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_profiles_*.py | |
| tldw_Server_API/tests/Admin/test_admin_rate_limits_*.py | |
| tldw_Server_API/tests/Admin/test_admin_registration_*.py | |
| - name: admin-pricing-retention-roles-router | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_pricing_reload_endpoint.py | |
| tldw_Server_API/tests/Admin/test_retention_policy_preview_api.py | |
| tldw_Server_API/tests/Admin/test_role_*.py | |
| tldw_Server_API/tests/Admin/test_router_analytics_*.py | |
| - name: admin-s-sessions-settings | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_scope_service_enterprise_mode.py | |
| tldw_Server_API/tests/Admin/test_admin_service_log_sanitizers.py | |
| tldw_Server_API/tests/Admin/test_admin_sessions_*.py | |
| tldw_Server_API/tests/Admin/test_admin_settings_service.py | |
| tldw_Server_API/tests/Admin/test_admin_smoke.py | |
| - name: admin-split-storage-tools | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_split_*.py | |
| tldw_Server_API/tests/Admin/test_admin_storage_quotas.py | |
| tldw_Server_API/tests/Admin/test_admin_system_ops_service.py | |
| tldw_Server_API/tests/Admin/test_admin_t*.py | |
| - name: admin-users | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_u*.py | |
| - name: admin-watchlists-webhooks | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_admin_w*.py | |
| - name: admin-system-usage | |
| paths: >- | |
| tldw_Server_API/tests/Admin/test_system_ops.py | |
| tldw_Server_API/tests/Admin/test_usage_reporting*.py | |
| - name: auth-integration-admin-auth | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_admin_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_api_key_*.py | |
| tldw_Server_API/tests/AuthNZ/integration/test_auth_*.py | |
| - name: auth-integration-authnz | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_authnz_*.py | |
| - name: auth-integration-b-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/integration/test_[b-z]*.py | |
| - name: auth-postgres | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Postgres | |
| - name: auth-core-root-property | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/test*.py | |
| tldw_Server_API/tests/AuthNZ/property/test*.py | |
| - name: auth-core-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[a-l]*.py | |
| - name: auth-core-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ/unit/test_[m-z]*.py | |
| - name: auth-sqlite | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_SQLite | |
| - name: auth-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[a-l]*.py | |
| - name: auth-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/AuthNZ_Unit/test_[m-z]*.py | |
| - name: chacha-core-stores | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chacha_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_chachanotes_db.py | |
| - name: chacha-character-conversation | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_character_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_conversation_*.py | |
| - name: chacha-content-persona | |
| paths: >- | |
| tldw_Server_API/tests/ChaChaNotesDB/test_flashcard*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_note_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_order_by_validation.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_persona_*.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_quizzes_basic.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_web_clipper_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_assistant_defaults_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_resource_memberships_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_workspace_sub_resources_db.py | |
| tldw_Server_API/tests/ChaChaNotesDB/test_writing_playground_db.py | |
| - name: db-privileges | |
| paths: >- | |
| tldw_Server_API/tests/DB | |
| tldw_Server_API/tests/DB_Management | |
| tldw_Server_API/tests/MediaDB2 | |
| tldw_Server_API/tests/PrivilegeCatalog | |
| tldw_Server_API/tests/Privileges | |
| - name: ai-chromadb | |
| paths: >- | |
| tldw_Server_API/tests/ChromaDB | |
| - name: ai-chunking-core | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_async_*.py | |
| tldw_Server_API/tests/Chunking/test_auto_*.py | |
| tldw_Server_API/tests/Chunking/test_chunker_*.py | |
| tldw_Server_API/tests/Chunking/test_process_text_components.py | |
| tldw_Server_API/tests/Chunking/test_process_text_refactor_equivalence.py | |
| tldw_Server_API/tests/Chunking/test_chunking_endpoint.py | |
| tldw_Server_API/tests/Chunking/test_chunking_offsets_property.py | |
| tldw_Server_API/tests/Chunking/test_chunking_overlap_properties.py | |
| tldw_Server_API/tests/Chunking/test_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_chunking_template_endpoint_errors.py | |
| - name: ai-chunking-templates | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestDatabaseOperations | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateInitialization | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestTemplateProcessing | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_endpoint_sanitization.py | |
| tldw_Server_API/tests/Chunking/test_chunking_templates_validate_schema.py | |
| tldw_Server_API/tests/Chunking/test_template_*.py | |
| - name: ai-chunking-templates-api | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestAPIEndpoints | |
| - name: ai-chunking-templates-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_chunking_templates.py::TestIntegration | |
| - name: ai-chunking-code-json-xml | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_code_chunking_regressions.py | |
| tldw_Server_API/tests/Chunking/test_json_*.py | |
| tldw_Server_API/tests/Chunking/test_xml_*.py | |
| - name: ai-chunking-semantic-security | |
| paths: >- | |
| tldw_Server_API/tests/Chunking/test_hierarchical_*.py | |
| tldw_Server_API/tests/Chunking/test_offsets_additional.py | |
| tldw_Server_API/tests/Chunking/test_option_aliases.py | |
| tldw_Server_API/tests/Chunking/test_overlap_clamp.py | |
| tldw_Server_API/tests/Chunking/test_phase3_3_sanitizers.py | |
| tldw_Server_API/tests/Chunking/test_propositions_strategy.py | |
| tldw_Server_API/tests/Chunking/test_security*.py | |
| tldw_Server_API/tests/Chunking/test_semantic_*.py | |
| tldw_Server_API/tests/Chunking/test_sentence_spans_properties.py | |
| tldw_Server_API/tests/Chunking/test_streaming_overlap.py | |
| tldw_Server_API/tests/Chunking/test_thai_tables_spans.py | |
| tldw_Server_API/tests/Chunking/test_thread_safety.py | |
| tldw_Server_API/tests/Chunking/test_tokens_offsets.py | |
| tldw_Server_API/tests/Chunking/unit/test_tokens_fallback_offsets.py | |
| - name: ai-embeddings-async | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_async_*.py | |
| - name: ai-embeddings-backpressure | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_backpressure*.py | |
| tldw_Server_API/tests/Embeddings/test_batch_rate_headers.py | |
| - name: ai-embeddings-chromadb-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chromadb_*.py | |
| - name: ai-embeddings-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_chunk_metadata_backfill.py | |
| tldw_Server_API/tests/Embeddings/test_circuit_breaker_*.py | |
| tldw_Server_API/tests/Embeddings/test_compactor_admin_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_connection_pool_failure_accounting.py | |
| tldw_Server_API/tests/Embeddings/test_contextual_chunking.py | |
| - name: ai-embeddings-dlq-config | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_delete_by_filter_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_dlq_*.py | |
| tldw_Server_API/tests/Embeddings/test_embedding_*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_audit_adapter.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_batch_dimensions.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_dimensions_policy.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_endpoint_cache_identity.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_fallback*.py | |
| - name: ai-embeddings-jobs-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_jobs*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_local_api.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_loop_scoping.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_memory*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_metric*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_model_management.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_optional_deps_import.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_redis*.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_rg_sync_helper.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_test_mode_truthiness.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_token_arrays.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_unsupported_provider.py | |
| - name: ai-embeddings-policy | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_policy*.py | |
| tldw_Server_API/tests/Embeddings/test_l2_normalization_policy.py | |
| - name: ai-embeddings-v5-core | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_production.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_property.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_unit.py | |
| - name: ai-embeddings-v5-integration | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_embeddings_v5_integration.py | |
| - name: ai-embeddings-hyde-ledger | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_hyde_backfill_cli.py | |
| tldw_Server_API/tests/Embeddings/test_ledger_status_endpoint.py | |
| - name: ai-embeddings-media-validation | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_media_*.py | |
| tldw_Server_API/tests/Embeddings/test_message_validator*.py | |
| - name: ai-embeddings-observability | |
| paths: >- | |
| tldw_Server_API/tests/Embeddings/test_metrics*.py | |
| tldw_Server_API/tests/Embeddings/test_model_eviction_in_use_guard.py | |
| tldw_Server_API/tests/Embeddings/test_multi_tier_cache_sync_async_loop.py | |
| tldw_Server_API/tests/Embeddings/test_embeddings_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_orchestrator*.py | |
| tldw_Server_API/tests/Embeddings/test_pgvector*.py | |
| tldw_Server_API/tests/Embeddings/test_priority_bump_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_redis_integration_smoke.py | |
| tldw_Server_API/tests/Embeddings/test_reembed_schedule_endpoint.py | |
| tldw_Server_API/tests/Embeddings/test_request*.py | |
| tldw_Server_API/tests/Embeddings/test_schema_drift.py | |
| tldw_Server_API/tests/Embeddings/test_stage_controls.py | |
| tldw_Server_API/tests/Embeddings/test_storage_idempotency_property.py | |
| tldw_Server_API/tests/Embeddings/test_trace_headers.py | |
| tldw_Server_API/tests/Embeddings/test_vector*.py | |
| - name: vector-stores-integration | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/integration | |
| - name: vector-stores-api | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/test*.py | |
| - name: vector-stores-unit | |
| paths: >- | |
| tldw_Server_API/tests/VectorStores/unit | |
| - name: paper-search | |
| paths: >- | |
| tldw_Server_API/tests/PaperSearch | |
| - name: rag-legacy | |
| paths: >- | |
| tldw_Server_API/tests/RAG | |
| - name: rag-new-integration-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_adapter_guards.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_bm25_weights.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_capabilities_styles.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_health_endpoints.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_integration.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_request_contract_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_source_health_endpoint.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_stream_parity.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_strict_extractive_nli_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_unified_features_endpoint.py | |
| - name: rag-new-integration-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_agentic_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_research_agent_loop.py | |
| - name: rag-new-integration-batch | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_checkpoint_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_batch_resume_api.py | |
| - name: rag-new-integration-research | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_ablate_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_benchmarks_ablation.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_rag_doc_researcher_api.py | |
| tldw_Server_API/tests/RAG_NEW/integration/test_retriever_pgvector_multi_search.py | |
| - name: rag-new-property-core | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/property/test_*.py | |
| tldw_Server_API/tests/RAG_NEW/test_*.py | |
| - name: rag-new-unit-agentic | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_agentic_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_agentic*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_research_agent.py | |
| - name: rag-new-unit-cache-vector | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_cache_invalidation_core.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chromadb*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_embedding_cache_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pgvector_adapter_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rewrite_cache.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_semantic_cache*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_vector*.py | |
| - name: rag-new-unit-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_reranking_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_advanced_retrieval_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_flashrank_reranker_init.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_functional_pipeline.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_generation*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_hyde*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_kanban_retriever.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_learned_fusion_simple.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_llamacpp_reranker_topk_full_input.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pipeline*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_post*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_pre_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_query*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_request*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_response_writer.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_retrieval*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_reranker*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_streaming_executor.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_two_tier_reranker.py | |
| - name: rag-new-unit-unified-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_unified_pipeline*.py | |
| - name: rag-new-unit-rag-contracts | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_rag*.py | |
| - name: rag-new-unit-guardrails-source | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_citations_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_guardrails*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_path_validation_security.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_payload_exemplars*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_security_filters_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_source*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_strict_extractive_and_citations.py | |
| - name: rag-new-unit-media-ingest | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_block_to_chunks.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_chunk_fts_integration.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_document_processing_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_enhanced_chunking_integration_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_ingest_dedupe_and_chunk_ids.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_media*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_structure_index.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_temporal_filters.py | |
| - name: rag-new-unit-core-misc | |
| paths: >- | |
| tldw_Server_API/tests/RAG_NEW/unit/test_analytics_db_dev_reconciliation.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_batch*.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_clarification_gate.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_corpus_synonyms_expansion.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_evidence_chains_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_feedback_learning.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_fts_query_translation_edge_cases.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_knowledge_source_retrieval_coverage.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_phase_metrics.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_prompt_templates_sanitizers.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_quick_wins_spell_check_compat.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_schema_corpus_alias.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_standard_core_contract_threading.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_suggestion_generator.py | |
| tldw_Server_API/tests/RAG_NEW/unit/test_synonyms_registry_logging.py | |
| - name: research-websearch | |
| paths: >- | |
| tldw_Server_API/tests/Research | |
| tldw_Server_API/tests/WebSearch | |
| - name: media-audio | |
| paths: >- | |
| tldw_Server_API/tests/Audio | |
| tldw_Server_API/tests/Audio_Studio | |
| tldw_Server_API/tests/AudioJobs | |
| tldw_Server_API/tests/STT | |
| tldw_Server_API/tests/TTS | |
| tldw_Server_API/tests/TTS_NEW | |
| tldw_Server_API/tests/VLM | |
| - name: media-core-documents | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_document*.py | |
| tldw_Server_API/tests/Media/test_pdf_text_normalization.py | |
| - name: media-core-api | |
| paths: >- | |
| tldw_Server_API/tests/Media/test_archive_member_cap.py | |
| tldw_Server_API/tests/Media/test_auto_chunking_process_endpoints.py | |
| tldw_Server_API/tests/Media/test_cache_index.py | |
| tldw_Server_API/tests/Media/test_ingest_web_content_endpoint_sanitization.py | |
| tldw_Server_API/tests/Media/test_json_*.py | |
| tldw_Server_API/tests/Media/test_media_*.py | |
| tldw_Server_API/tests/Media/test_navigation_policy_contract.py | |
| tldw_Server_API/tests/Media/test_process_code_and_uploads.py | |
| tldw_Server_API/tests/Media/test_upload_sink_security.py | |
| tldw_Server_API/tests/Media/unit | |
| - name: media-ingestion-new-ocr | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/test_*.py | |
| - name: media-ingestion-new-integration | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/integration | |
| - name: media-ingestion-new-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_archive_and_sanitization.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_audio_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_auto_chunking_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_zip_safe_extract.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_book_processing_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ebook_safe_paths.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_email_endpoint_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_file_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_filename_and_mime_and_archive.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ingest_jobs_batch_lookup.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_add_deps_error_mapping.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_canonical_helpers.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_ingest*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_list_no_slash_redirect.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_media_upload_failures.py | |
| - name: media-ingestion-new-unit-mediawiki | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_mediawiki_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_ms_g_eval_validation.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_analysis_regressions.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_pdf_safe_paths.py | |
| - name: media-ingestion-new-unit-persistence | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_persistence_*.py | |
| - name: media-ingestion-new-unit-processing | |
| paths: >- | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_plaintext_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_playlist_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_batch_media_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_process_document_like_item_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_transcription_models_endpoint.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_utils_time_conversion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_video_*.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_visual_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_xml_ingestion.py | |
| tldw_Server_API/tests/MediaIngestion_NEW/unit/test_youtube_audio_downloads.py | |
| - name: media-ingestion-modification | |
| paths: >- | |
| tldw_Server_API/tests/Media_Ingestion_Modification | |
| - name: media-legacy-free | |
| paths: >- | |
| tldw_Server_API/tests/Media | |
| tldw_Server_API/tests/MediaIngestion_NEW | |
| - name: chat-character-legacy-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_character_chat_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_dictionary_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_chat_settings_endpoints.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_e2e_mock.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_unified_flag_monkeypatched.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_streaming_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_complete_v2_with_mock_openai.py | |
| tldw_Server_API/tests/Character_Chat/test_completions_tool_messages_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_export_includes_tools_and_metadata.py | |
| tldw_Server_API/tests/Character_Chat/test_legacy_complete_deprecation.py | |
| tldw_Server_API/tests/Character_Chat/test_messages_tool_calls_exposure.py | |
| tldw_Server_API/tests/Character_Chat/test_persona_dialogue_tree_character_eval.py | |
| - name: chat-character-legacy-files | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_file_mime_detection.py | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py | |
| - name: chat-character-legacy-worldbook | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_manager_legacy.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py | |
| tldw_Server_API/tests/Character_Chat/test_world_book_prompt_context.py | |
| tldw_Server_API/tests/Character_Chat/unit/test_chat_session_character_scope_api.py | |
| - name: chat-character-db-core | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_ccv3_parser.py | |
| tldw_Server_API/tests/Characters/test_chacha_postgres_sync_log_entity_column.py | |
| tldw_Server_API/tests/Characters/test_character_chat_greetings_api.py | |
| tldw_Server_API/tests/Characters/test_character_chat_lib.py | |
| tldw_Server_API/tests/Characters/test_character_functionality_db.py | |
| tldw_Server_API/tests/Characters/test_characters_world_book_permissions_unit.py | |
| - name: chat-character-db-api | |
| paths: >- | |
| tldw_Server_API/tests/Characters/test_characters_endpoint.py | |
| - name: chat-character-unit-core | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/test_utils.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_cards_fts_bootstrap.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_default_provider.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_chat_manager.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_generation_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_memory.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_prompt_presets.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_character_templates.py | |
| - name: chat-character-unit-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_completion_precheck.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_dictionary_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_grammar_unit.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_create_schema.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_session_error_mapping.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_chat_settings_merge.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_group_chat_scope_resolution.py | |
| - name: chat-character-unit-persona | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_embeddings.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_selector.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_persona_exemplar_telemetry.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_png_export.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_postgres_backends.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_stream_persist_lookup.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_appendable.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_estimate_tokens_shim_removed.py | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_world_book_manager.py | |
| - name: chat-character-unit-prd | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/unit/test_prd_round2_endpoints.py | |
| - name: chat-character-property | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/property | |
| - name: chat-character-integration-api | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_exemplars_api.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_memory_endpoint.py | |
| - name: chat-character-integration-chat | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_auto_routing.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_chat_stream_and_persist.py | |
| - name: chat-character-integration-context | |
| paths: >- | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_conversation_context_primitives.py | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_role_normalization_and_search.py | |
| - name: chat-legacy-integration | |
| paths: >- | |
| tldw_Server_API/tests/Chat/test*.py | |
| tldw_Server_API/tests/Chat/integration | |
| - name: chat-legacy-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[a-l]*.py | |
| - name: chat-legacy-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat/unit/test_[m-z]*.py | |
| - name: chat-new-integration-property | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/integration | |
| tldw_Server_API/tests/Chat_NEW/property | |
| - name: chat-new-unit-a-l | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[a-l]*.py | |
| - name: chat-new-unit-m-z | |
| paths: >- | |
| tldw_Server_API/tests/Chat_NEW/unit/test_[m-z]*.py | |
| - name: chatbooks-streaming | |
| paths: >- | |
| tldw_Server_API/tests/Chatbooks | |
| tldw_Server_API/tests/Explainer | |
| tldw_Server_API/tests/Streaming | |
| - name: explainer-core | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: llm-adapters-unit | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/unit | |
| tldw_Server_API/tests/LLM_Adapters/benchmarks | |
| - name: llm-adapters-chat-endpoint | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_anthropic_native.py | |
| - name: llm-adapters-chat-errors-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_core_providers.py | |
| - name: llm-adapters-chat-errors-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_error_sse_google_mistral.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_adapters_chat_endpoint_midstream_error_all.py | |
| - name: llm-adapters-orchestrator-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_anthropic_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_google_mistral.py | |
| - name: llm-adapters-orchestrator-extra | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_groq_openrouter_native.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_orchestrator_stage3.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_adapters_streaming_error_all.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_async_bedrock_adapter.py | |
| tldw_Server_API/tests/LLM_Adapters/integration/test_tool_choice_json_mode_endpoint.py | |
| - name: llm-calls-core | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/test_*.py | |
| - name: llm-calls-property | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Calls/property | |
| - name: llm-local-runtime | |
| paths: >- | |
| tldw_Server_API/tests/LLM_Local | |
| - name: llm-local-backends | |
| paths: >- | |
| tldw_Server_API/tests/LLamaCpp | |
| tldw_Server_API/tests/Local_LLM | |
| - name: product-claims-core | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claim_cluster_upsert_idempotency.py | |
| tldw_Server_API/tests/Claims/test_claim_embeddings_chroma.py | |
| tldw_Server_API/tests/Claims/test_claim_review_rule_assignment.py | |
| tldw_Server_API/tests/Claims/test_claims_alerts_*.py | |
| tldw_Server_API/tests/Claims/test_claims_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_analytics_exports_cleanup.py | |
| tldw_Server_API/tests/Claims/test_claims_api_strict_parse_mode.py | |
| tldw_Server_API/tests/Claims/test_claims_budget_guard.py | |
| tldw_Server_API/tests/Claims/test_claims_cluster*.py | |
| tldw_Server_API/tests/Claims/test_claims_compat_types.py | |
| - name: product-claims-engine | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_dashboard_analytics.py | |
| tldw_Server_API/tests/Claims/test_claims_embedding_refresh_config.py | |
| tldw_Server_API/tests/Claims/test_claims_endpoints_api.py | |
| tldw_Server_API/tests/Claims/test_claims_engine_*.py | |
| tldw_Server_API/tests/Claims/test_claims_extractor*.py | |
| tldw_Server_API/tests/Claims/test_claims_items_api.py | |
| - name: product-claims-monitoring | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_monitoring_*.py | |
| tldw_Server_API/tests/Claims/test_claims_output_parser.py | |
| tldw_Server_API/tests/Claims/test_claims_prompt_validation.py | |
| tldw_Server_API/tests/Claims/test_claims_rebuild_*.py | |
| tldw_Server_API/tests/Claims/test_claims_response_format_contracts.py | |
| tldw_Server_API/tests/Claims/test_claims_review_*.py | |
| - name: product-claims-service | |
| paths: >- | |
| tldw_Server_API/tests/Claims/test_claims_runtime_config.py | |
| tldw_Server_API/tests/Claims/test_claims_service_*.py | |
| tldw_Server_API/tests/Claims/test_claims_settings_*.py | |
| tldw_Server_API/tests/Claims/test_claims_span_alignment.py | |
| tldw_Server_API/tests/Claims/test_claims_status_and_envelope_api.py | |
| tldw_Server_API/tests/Claims/test_claims_utils_persistence.py | |
| tldw_Server_API/tests/Claims/test_claims_watchlist_notifications.py | |
| tldw_Server_API/tests/Claims/test_claims_webhook_delivery.py | |
| tldw_Server_API/tests/Claims/test_ingestion_*.py | |
| - name: product-collections | |
| paths: >- | |
| tldw_Server_API/tests/Collections | |
| - name: product-evaluations-abtest | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/embeddings_abtest/test*.py | |
| tldw_Server_API/tests/Evaluations/test_abtest_*.py | |
| tldw_Server_API/tests/Evaluations/test_embeddings_abtest_*.py | |
| - name: product-evaluations-core | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_benchmark_*.py | |
| tldw_Server_API/tests/Evaluations/test_circuit_breaker.py | |
| tldw_Server_API/tests/Evaluations/test_connection_pool.py | |
| tldw_Server_API/tests/Evaluations/test_db_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_error_scenarios.py | |
| tldw_Server_API/tests/Evaluations/test_eval_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluation_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_audit_adapter.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_backend_dual.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_core_hardening.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_benchmarks_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_crud_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_datasets_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_migration_cli.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_postgres_crud.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_rag_pipeline_*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_stage*.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_unified.py | |
| tldw_Server_API/tests/Evaluations/test_evaluations_webhooks_*.py | |
| tldw_Server_API/tests/Evaluations/test_mineru_ocr_evaluator.py | |
| tldw_Server_API/tests/Evaluations/test_ms_g_eval.py | |
| tldw_Server_API/tests/Evaluations/test_ocr_metrics.py | |
| tldw_Server_API/tests/Evaluations/test_production_features_integration.py | |
| tldw_Server_API/tests/Evaluations/test_proposition_evaluations.py | |
| tldw_Server_API/tests/Evaluations/test_rag_*.py | |
| tldw_Server_API/tests/Evaluations/test_security.py | |
| tldw_Server_API/tests/Evaluations/test_synthetic_eval_service.py | |
| tldw_Server_API/tests/Evaluations/test_unified_evaluation_service_strict_audit.py | |
| - name: product-evaluations-integration | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/integration/test*.py | |
| tldw_Server_API/tests/Evaluations/property/test*.py | |
| - name: product-evaluations-recipes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/test_persona_*.py | |
| tldw_Server_API/tests/Evaluations/test_recipe_*.py | |
| - name: product-evaluations-unit | |
| paths: >- | |
| tldw_Server_API/tests/Evaluations/unit/test_*.py | |
| - name: product-flashcards | |
| paths: >- | |
| tldw_Server_API/tests/Flashcards/test*.py | |
| - name: product-explainer | |
| paths: >- | |
| tldw_Server_API/tests/Explainer | |
| - name: product-notes-persona | |
| paths: >- | |
| tldw_Server_API/tests/Notes | |
| tldw_Server_API/tests/Notes_NEW | |
| tldw_Server_API/tests/Persona | |
| tldw_Server_API/tests/Personalization | |
| - name: product-prompts-legacy | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management | |
| - name: product-prompts-new | |
| paths: >- | |
| tldw_Server_API/tests/Prompt_Management_NEW | |
| - name: product-watchlists-a-r | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_admin_*.py | |
| tldw_Server_API/tests/Watchlists/test_audio_*.py | |
| tldw_Server_API/tests/Watchlists/test_companion_*.py | |
| tldw_Server_API/tests/Watchlists/test_dedup_*.py | |
| tldw_Server_API/tests/Watchlists/test_delivery_*.py | |
| tldw_Server_API/tests/Watchlists/test_e2e_*.py | |
| tldw_Server_API/tests/Watchlists/test_fetchers_*.py | |
| tldw_Server_API/tests/Watchlists/test_filter_*.py | |
| tldw_Server_API/tests/Watchlists/test_filters_*.py | |
| tldw_Server_API/tests/Watchlists/test_first_*.py | |
| tldw_Server_API/tests/Watchlists/test_full_*.py | |
| tldw_Server_API/tests/Watchlists/test_include_*.py | |
| tldw_Server_API/tests/Watchlists/test_job_*.py | |
| tldw_Server_API/tests/Watchlists/test_newsletter_*.py | |
| tldw_Server_API/tests/Watchlists/test_operational_*.py | |
| tldw_Server_API/tests/Watchlists/test_opml_*.py | |
| tldw_Server_API/tests/Watchlists/test_perf_*.py | |
| tldw_Server_API/tests/Watchlists/test_pipeline_*.py | |
| tldw_Server_API/tests/Watchlists/test_preview_*.py | |
| tldw_Server_API/tests/Watchlists/test_rate_*.py | |
| tldw_Server_API/tests/Watchlists/test_rss_*.py | |
| tldw_Server_API/tests/Watchlists/test_run_*.py | |
| tldw_Server_API/tests/Watchlists/test_runs_*.py | |
| - name: product-watchlists-core | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_scheduler_*.py | |
| tldw_Server_API/tests/Watchlists/test_output_enrichment_scheduler.py | |
| tldw_Server_API/tests/Watchlists/test_site_*.py | |
| tldw_Server_API/tests/Watchlists/test_subscriptions_*.py | |
| tldw_Server_API/tests/Watchlists/test_template_*.py | |
| tldw_Server_API/tests/Watchlists/test_templates_*.py | |
| tldw_Server_API/tests/Watchlists/test_tts_*.py | |
| tldw_Server_API/tests/Watchlists/test_watchlist_*.py | |
| tldw_Server_API/tests/Watchlists/test_youtube_*.py | |
| - name: product-watchlists-pipeline | |
| paths: >- | |
| tldw_Server_API/tests/Watchlists/test_watchlists_*.py | |
| - name: product-workflows-adapters-core | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/adapters/test_*.py | |
| - name: product-workflows-step-adapters | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_new_step_adapters.py | |
| - name: product-workflows-step-registry | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_step_registry_runtime_coverage.py | |
| - name: product-workflows-step-capabilities | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_workflow_step_capabilities.py | |
| - name: product-workflows-engine | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_engine_*.py | |
| tldw_Server_API/tests/Workflows/test_dual_backend_engine.py | |
| tldw_Server_API/tests/Workflows/test_orphan_requeue_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_map_substeps_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_attempt_failures.py | |
| tldw_Server_API/tests/Workflows/test_workflow_stress.py | |
| tldw_Server_API/tests/Workflows/test_workflows_scheduler.py | |
| - name: product-workflows-api | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_artifact_*.py | |
| tldw_Server_API/tests/Workflows/test_events_*.py | |
| tldw_Server_API/tests/Workflows/test_runs_*.py | |
| tldw_Server_API/tests/Workflows/test_webhook_*.py | |
| tldw_Server_API/tests/Workflows/test_workflow_approval_permissions.py | |
| tldw_Server_API/tests/Workflows/test_workflow_investigation_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_preflight_api.py | |
| tldw_Server_API/tests/Workflows/test_workflow_templates_api.py | |
| tldw_Server_API/tests/Workflows/test_workflows_api.py | |
| - name: product-workflows-storage | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_dual_backend_workflows.py | |
| tldw_Server_API/tests/Workflows/test_egress_policy.py | |
| tldw_Server_API/tests/Workflows/test_mcp_tool_*.py | |
| tldw_Server_API/tests/Workflows/test_media_ingest_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_db*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_pg_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_postgres_*.py | |
| tldw_Server_API/tests/Workflows/test_workflows_tokens_cost_*.py | |
| - name: product-workflows-runtime | |
| paths: >- | |
| tldw_Server_API/tests/Workflows/test_adapter_path_security.py | |
| tldw_Server_API/tests/Workflows/test_llm_adapter.py | |
| tldw_Server_API/tests/Workflows/test_stage3_chunkers_rag.py | |
| tldw_Server_API/tests/Workflows/test_tts_workflow_normalization.py | |
| tldw_Server_API/tests/Workflows/test_versions_idempotency.py | |
| tldw_Server_API/tests/Workflows/test_workflows_artifact_gc_service.py | |
| tldw_Server_API/tests/Workflows/test_workflows_dag_validation.py | |
| tldw_Server_API/tests/Workflows/test_workflows_extras.py | |
| tldw_Server_API/tests/Workflows/test_workflows_fuzz.py | |
| tldw_Server_API/tests/Workflows/test_workflows_idempotency_ttl.py | |
| tldw_Server_API/tests/Workflows/test_workflows_run_metadata.py | |
| tldw_Server_API/tests/Workflows/test_workflows_truthiness_flags.py | |
| - name: product-prompt-studio | |
| paths: >- | |
| tldw_Server_API/tests/prompt_studio | |
| - name: platform-infrastructure-metrics | |
| paths: >- | |
| tldw_Server_API/tests/Infrastructure | |
| tldw_Server_API/tests/Metrics | |
| tldw_Server_API/tests/Monitoring | |
| - name: platform-mcp-core | |
| paths: >- | |
| tldw_Server_API/tests/MCP | |
| tldw_Server_API/tests/MCP_unified | |
| - name: platform-resource-governance | |
| paths: >- | |
| tldw_Server_API/tests/Resource_Governance | |
| - name: platform-services-startup | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_startup_*.py | |
| - name: platform-services-shutdown-lifespan | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_shutdown_*.py | |
| tldw_Server_API/tests/Services/test_lifespan_*.py | |
| tldw_Server_API/tests/Services/test_worker_lifecycle_ownership_matrix.py | |
| - name: platform-services-core | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_admin_*.py | |
| tldw_Server_API/tests/Services/test_app_*.py | |
| tldw_Server_API/tests/Services/test_claims_*.py | |
| tldw_Server_API/tests/Services/test_compatibility_*.py | |
| tldw_Server_API/tests/Services/test_connectors_*.py | |
| tldw_Server_API/tests/Services/test_document_*.py | |
| tldw_Server_API/tests/Services/test_drain_*.py | |
| tldw_Server_API/tests/Services/test_enhanced_*.py | |
| tldw_Server_API/tests/Services/test_ephemeral_*.py | |
| tldw_Server_API/tests/Services/test_executor_*.py | |
| tldw_Server_API/tests/Services/test_file_*.py | |
| tldw_Server_API/tests/Services/test_jobs_*.py | |
| tldw_Server_API/tests/Services/test_kanban_*.py | |
| tldw_Server_API/tests/Services/test_lifecycle_*.py | |
| tldw_Server_API/tests/Services/test_loop_*.py | |
| tldw_Server_API/tests/Services/test_media_*.py | |
| tldw_Server_API/tests/Services/test_outputs_*.py | |
| tldw_Server_API/tests/Services/test_persona_*.py | |
| tldw_Server_API/tests/Services/test_placeholder_*.py | |
| tldw_Server_API/tests/Services/test_service_*.py | |
| tldw_Server_API/tests/Services/test_storage_*.py | |
| tldw_Server_API/tests/Services/test_tts_*.py | |
| tldw_Server_API/tests/Services/test_writing_annotation_review_jobs_worker.py | |
| tldw_Server_API/tests/Services/test_workflows_*.py | |
| tldw_Server_API/tests/Services/test_xml_*.py | |
| - name: platform-services-main-routing | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_claims_rebuild_startup.py | |
| tldw_Server_API/tests/Services/test_main_lifecycle_contract.py | |
| tldw_Server_API/tests/Services/test_main_readiness_shutdown.py | |
| tldw_Server_API/tests/Services/test_main_router_contract.py | |
| tldw_Server_API/tests/Services/test_openapi_contracts.py | |
| tldw_Server_API/tests/Services/test_router_groups_contract.py | |
| - name: platform-services-main-pollers | |
| paths: >- | |
| tldw_Server_API/tests/Services/test_main_shutdown_job_pollers.py | |
| - name: platform-sandbox-admin-artifacts | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_admin_*.py | |
| tldw_Server_API/tests/sandbox/test_artifact*.py | |
| - name: platform-sandbox-runtimes | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_docker_*.py | |
| tldw_Server_API/tests/sandbox/test_firecracker_*.py | |
| tldw_Server_API/tests/sandbox/test_lima_*.py | |
| tldw_Server_API/tests/sandbox/test_macos_*.py | |
| tldw_Server_API/tests/sandbox/test_runner_*.py | |
| tldw_Server_API/tests/sandbox/test_runtime_*.py | |
| tldw_Server_API/tests/sandbox/test_runtimes_*.py | |
| tldw_Server_API/tests/sandbox/test_operator_*.py | |
| tldw_Server_API/tests/sandbox/test_seatbelt_*.py | |
| tldw_Server_API/tests/sandbox/test_vz_*.py | |
| - name: platform-sandbox-state-store | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_acp_*.py | |
| tldw_Server_API/tests/sandbox/test_cross_*.py | |
| tldw_Server_API/tests/sandbox/test_execution_*.py | |
| tldw_Server_API/tests/sandbox/test_feature_*.py | |
| tldw_Server_API/tests/sandbox/test_glob_*.py | |
| tldw_Server_API/tests/sandbox/test_idempotency_*.py | |
| tldw_Server_API/tests/sandbox/test_interactive_*.py | |
| tldw_Server_API/tests/sandbox/test_network_*.py | |
| tldw_Server_API/tests/sandbox/test_orchestrator_*.py | |
| tldw_Server_API/tests/sandbox/test_policy_*.py | |
| tldw_Server_API/tests/sandbox/test_queue_*.py | |
| tldw_Server_API/tests/sandbox/test_redis_*.py | |
| tldw_Server_API/tests/sandbox/test_run_*.py | |
| tldw_Server_API/tests/sandbox/test_sandbox_*.py | |
| tldw_Server_API/tests/sandbox/test_snapshot_*.py | |
| tldw_Server_API/tests/sandbox/test_store_*.py | |
| tldw_Server_API/tests/sandbox/test_warm_*.py | |
| tldw_Server_API/tests/sandbox/test_workspace_*.py | |
| tldw_Server_API/tests/sandbox/test_worktree_*.py | |
| - name: platform-sandbox-ws-streams | |
| paths: >- | |
| tldw_Server_API/tests/sandbox/test_cancel_*.py | |
| tldw_Server_API/tests/sandbox/test_event_bridge.py | |
| tldw_Server_API/tests/sandbox/test_session_*.py | |
| tldw_Server_API/tests/sandbox/test_streams_*.py | |
| tldw_Server_API/tests/sandbox/test_ws_*.py | |
| - name: integrations | |
| paths: >- | |
| tldw_Server_API/tests/External_Sources | |
| tldw_Server_API/tests/Notifications | |
| tldw_Server_API/tests/Tools | |
| tldw_Server_API/tests/WebScraping | |
| tldw_Server_API/tests/Web_Scraping | |
| tldw_Server_API/tests/integration | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
| TLDW_TEST_NO_DOCKER: '1' | |
| WORKFLOWS_EGRESS_ALLOWLIST: "93.184.216.34,does-not-resolve.invalid,example.com" | |
| SHARD_NAME: ${{ matrix.shard.name }} | |
| TEST_PATHS: ${{ matrix.shard.paths }} | |
| RESULTS_DIR: test-results-${{ matrix.os }}-3.13-${{ matrix.shard.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg (multi-OS) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: ${{ startsWith(matrix.shard.name, 'media-') || matrix.shard.name == 'ai-embeddings-media-validation' || matrix.shard.name == 'rag-new-unit-media-ingest' || matrix.shard.name == 'product-claims-service' || (matrix.shard.name == 'platform-services-core' || matrix.shard.name == 'platform-services-main-routing' || matrix.shard.name == 'platform-services-main-pollers') }} | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (with uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.13' | |
| use-uv: ${{ runner.os != 'Windows' }} | |
| enable-pip-cache: ${{ runner.os != 'Windows' }} | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev | |
| - name: Ensure pytest-asyncio installed (OS matrix) | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pytest pytest-asyncio | |
| - name: Smoke start server (single-user) | |
| if: matrix.shard.name == 'core-server-smoke' | |
| env: | |
| SERVER_LABEL: smoke | |
| AUTH_MODE: single_user | |
| DATABASE_URL: sqlite:///./Databases/users.db | |
| SINGLE_USER_API_KEY: "smoke-ci-key-12345" | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| PYTEST_CURRENT_TEST: "ci-smoke-release-cross-os-single::startup" | |
| TEST_MODE: 'true' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| STARTUP_TRACE: '1' | |
| MCP_DEBUG: '1' | |
| ULTRA_MINIMAL_APP: '1' | |
| PRIVILEGE_METADATA_VALIDATE_ON_STARTUP: '0' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py start | |
| - name: Smoke health check (Windows, 15 min) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os == 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '900' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke health check (non-Windows) | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' && runner.os != 'Windows' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| E2E_TEST_BASE_URL: "http://127.0.0.1:8000" | |
| SMOKE_STARTUP_TIMEOUT_SECONDS: '180' | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py health-check | |
| - name: Smoke stop server | |
| if: ${{ always() && matrix.shard.name == 'core-server-smoke' }} | |
| env: | |
| SERVER_LABEL: smoke | |
| shell: bash | |
| run: | | |
| python tldw_Server_API/tests/scripts/server_lifecycle.py stop || true | |
| - name: Cache embedding models | |
| if: ${{ github.event_name != 'workflow_dispatch' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| uses: actions/cache@v5 | |
| with: | |
| path: models/embeddings | |
| key: ${{ runner.os }}-embeddings-static-v1 | |
| restore-keys: | | |
| ${{ runner.os }}-embeddings- | |
| - name: Pre-download embedding models | |
| if: ${{ (env.RUN_MODEL_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == '1' || env.RUN_REAL_HF_EMBEDDING_TESTS == 'true') && matrix.shard.name != 'ai-embeddings-backpressure' && matrix.shard.name != 'ai-embeddings-dlq-config' && matrix.shard.name != 'ai-embeddings-media-validation' && matrix.shard.name != 'ai-embeddings-policy' && (matrix.shard.name == 'ai-chromadb' || matrix.shard.name == 'ai-chunking-core' || matrix.shard.name == 'ai-chunking-semantic-security' || startsWith(matrix.shard.name, 'ai-embeddings-') || startsWith(matrix.shard.name, 'vector-stores') || matrix.shard.name == 'rag-legacy' || matrix.shard.name == 'research-websearch') }} | |
| continue-on-error: true | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install huggingface_hub | |
| python Helper_Scripts/download_embedding_models.py --target models/embeddings --skip-defaults --model sentence-transformers/all-MiniLM-L6-v2 | |
| echo "TLDW_EMBEDDING_MODELS_DIR=models/embeddings" >> "$GITHUB_ENV" | |
| - name: Run release OS shard tests | |
| if: matrix.shard.name != 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| $TEST_PATHS \ | |
| --durations=50 \ | |
| --junit-xml="$RESULTS_DIR/${{ env.SHARD_NAME }}.xml" | |
| - name: Run legacy-free media checks | |
| if: matrix.shard.name == 'media-legacy-free' | |
| shell: bash | |
| run: | | |
| mkdir -p "$RESULTS_DIR" | |
| export DATABASE_URL="sqlite:///./Databases/users.db" | |
| unset TEST_DATABASE_URL POSTGRES_TEST_DB | |
| TLDW_DISABLE_LEGACY_MEDIA=1 pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| -m "not jobs and not e2e" \ | |
| tldw_Server_API/tests/Media \ | |
| tldw_Server_API/tests/MediaIngestion_NEW \ | |
| --durations=25 \ | |
| --junit-xml="$RESULTS_DIR/media-legacy-free.xml" | |
| - name: Upload test results | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: full-suite-${{ matrix.os }}-py3.13-${{ matrix.shard.name }} | |
| path: ${{ env.RESULTS_DIR }} | |
| character-chat-rate-limits: | |
| name: Character Chat Rate-Limits (TEST_MODE=0) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: [full-suite-linux-312-summary, full-suite-linux-313-summary, changes] | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.backend_changed == 'true' }} | |
| env: | |
| PYTHONPATH: . | |
| PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1' | |
| TEST_MODE: '0' | |
| DISABLE_HEAVY_STARTUP: '1' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| - name: Install FFmpeg and PortAudio (Linux) | |
| uses: ./.github/actions/setup-ffmpeg | |
| with: | |
| install-ffmpeg: 'false' | |
| install-portaudio: 'true' | |
| - name: Setup Python and deps (uv) | |
| uses: ./.github/actions/setup-python-deps | |
| with: | |
| python-version: '3.12' | |
| use-uv: 'true' | |
| cache-dependency-path: | | |
| pyproject.toml | |
| uv.lock | |
| extras: dev | |
| - name: Ensure pytest-asyncio installed | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pytest pytest-asyncio | |
| - name: Run Character_Chat rate-limit tests with TEST_MODE=0 | |
| shell: bash | |
| run: | | |
| echo "TEST_MODE currently set to: ${TEST_MODE}" | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin \ | |
| tldw_Server_API/tests/Character_Chat/test_rate_limits_specific.py \ | |
| tldw_Server_API/tests/Character_Chat/test_world_book_and_limits.py::test_legacy_complete_endpoint_rate_limit \ | |
| tldw_Server_API/tests/Character_Chat/test_world_book_negatives_and_new_endpoint.py::test_rate_limits_max_messages_and_chats_and_completions_endpoint \ | |
| -rs | |
| - name: Run Character_Chat_NEW rate-limit tests with TEST_MODE=0 | |
| shell: bash | |
| run: | | |
| echo "TEST_MODE currently set to: ${TEST_MODE}" | |
| pytest -q --disable-warnings -p pytest_asyncio.plugin -m rate_limit \ | |
| tldw_Server_API/tests/Character_Chat_NEW/integration/test_character_api.py \ | |
| -rs |