{ "version": "2.0.0", "tasks": [ { "label": "setup (Debug)", "type": "shell", "windows": { "command": ".\\setup.ps1 Debug" }, "linux": { "command": "./setup.sh Debug" }, "osx": { "command": "./setup.sh Debug" }, "problemMatcher": [], "presentation": { "reveal": "always", "panel": "shared" }, "group": { "kind": "build", "isDefault": true } }, { "label": "setup (Release)", "type": "shell", "windows": { "command": ".\\setup.ps1 Release" }, "linux": { "command": "./setup.sh Release" }, "osx": { "command": "./setup.sh Release" }, "problemMatcher": [], "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "build (Debug)", "type": "shell", "windows": { "command": "build/debug\\build-debug\\conan\\conanbuild.ps1; meson compile -j 4 -C build/debug" }, "linux": { "command": "meson compile -j 4 -C build/debug" }, "osx": { "command": "meson compile -j 4 -C build/debug" }, "problemMatcher": [ "$msCompile" ], "group": { "kind": "build", "isDefault": true }, "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "meson-build-debug", "type": "shell", "windows": { "command": "if (Test-Path build/debug\\build-debug\\conan\\conanbuild.ps1) { build/debug\\build-debug\\conan\\conanbuild.ps1 }; meson compile -C build/debug" }, "linux": { "command": "meson compile -j 4 -C build/debug" }, "osx": { "command": "meson compile -j 4 -C build/debug" }, "problemMatcher": [ "$msCompile" ], "group": "build", "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "build (Release)", "type": "shell", "windows": { "command": "build\\release\\build-release\\conan\\conanbuild.ps1; meson compile -j 4 -C build/release" }, "linux": { "command": "meson compile -j 4 -C build/release" }, "osx": { "command": "meson compile -j 4 -C build/release" }, "problemMatcher": [ "$msCompile" ], "group": "build", "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "meson-build-release", "type": "shell", "windows": { "command": "if (Test-Path build\\release\\build-release\\conan\\conanbuild.ps1) { build\\release\\build-release\\conan\\conanbuild.ps1 }; meson compile -C build/release" }, "linux": { "command": "meson compile -j 4 -C build/release" }, "osx": { "command": "meson compile -j 4 -C build/release" }, "problemMatcher": [ "$msCompile" ], "group": "build", "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "test (Debug)", "type": "shell", "dependsOn": [ "build (Debug)" ], "command": "meson test -j 4 -C build/debug --print-errorlogs", "problemMatcher": [ "$gcc" ], "group": { "kind": "test", "isDefault": true }, "presentation": { "reveal": "always", "panel": "shared" } }, { "label": "clean", "type": "shell", "windows": { "command": "Remove-Item -Recurse -Force build/debug,build -ErrorAction SilentlyContinue" }, "linux": { "command": "rm -rf build/debug build" }, "osx": { "command": "rm -rf build/debug build" }, "problemMatcher": [], "group": "none" }, { "label": "local-ci: build image (ubuntu-24.04)", "type": "shell", "command": "docker build -t yams/local-ci:ubuntu-24.04 -f docker/local-ci/ubuntu.Dockerfile .", "problemMatcher": [], "group": { "kind": "build", "isDefault": false } }, { "label": "local-ci: run meson unit tests (docker)", "type": "shell", "dependsOn": [ "local-ci: build image (ubuntu-24.04)" ], "command": "docker run --rm -v ${workspaceFolder}:/work -w /work yams/local-ci:ubuntu-24.04 bash -lc 'scripts/local-ci/run_meson_tests.sh'", "problemMatcher": [ "$gcc" ], "group": "test" }, { "label": "local-ci: run daemon-only tests (docker)", "type": "shell", "dependsOn": [ "local-ci: build image (ubuntu-24.04)" ], "command": "docker run --rm -v ${workspaceFolder}:/work -w /work yams/local-ci:ubuntu-24.04 bash -lc 'XDG_RUNTIME_DIR=/run/user/$(id -u) mkdir -p \"$XDG_RUNTIME_DIR\" && BUILD_DIR=build/yams-debug conan install . -of \"$BUILD_DIR\" -s build_type=Debug -o \"yams/*:build_tests=True\" --build=missing && meson setup \"$BUILD_DIR\" -Dbuildtype=debug -Dbuild-tests=true -Denable-onnx=disabled && meson compile -j 4 -C \"$BUILD_DIR\" && meson test -j 4 -C \"$BUILD_DIR\" --print-errorlogs --no-rebuild --suite unit+isolated --test-args=\"--gtest_filter=DaemonTest.*\"'", "problemMatcher": [ "$gcc" ], "group": "test" }, { "label": "local-ci: clean build cache (docker)", "type": "shell", "command": "docker run --rm -v ${workspaceFolder}:/work -w /work yams/local-ci:ubuntu-24.04 bash -lc 'rm -rf build || true'", "problemMatcher": [], "group": "none" }, { "label": "triage: client timeout cases", "type": "shell", "command": "for c in \"Client timeout recovery: Immediate EOF detection and retry\" \"Client timeout recovery: Honors YAMS_IPC_TIMEOUT_MS for idle reap\" \"Client timeout recovery: Streaming request connection handling\" \"Client timeout recovery: Connection pool management\" \"Client timeout recovery: Rapid request cycle\" \"Client timeout recovery: Daemon restart handling\" \"Client timeout recovery: Error message quality\" \"Client timeout recovery: Connection refused when daemon down\" \"Client timeout recovery: Shutdown cancels in-flight request\" \"Client timeout recovery: Tag filtering matrix for list and search\"; do echo \"=== $c\"; ./build/debug/tests/integration/daemon/yams_client_timeout_recovery_tests_catch2 \"$c\" >/tmp/ctr_case.log 2>&1; code=$?; echo \"exit=$code\"; if [ $code -ne 0 ]; then tail -n 120 /tmp/ctr_case.log; break; fi; done" }, { "label": "triage: tsan signatures", "type": "shell", "command": "rg -n \"SUMMARY: ThreadSanitizer|WARNING: ThreadSanitizer|data race|mutex|signal\" /tmp/ctr_case.log | head -n 120" }, { "label": "triage: client-timeout verbose", "type": "shell", "command": "meson test -C build/debug \"yams:client_timeout_recovery\" --print-errorlogs --test-args=\"-s\"" }, { "label": "triage: find failed assertion", "type": "shell", "command": "python3 - <<'PY'\nfrom pathlib import Path\ntext=Path('build/debug/meson-logs/testlog.txt').read_text(errors='replace')\nfor pat in ['FAILED:', 'failed:', 'REQUIRE(', 'CHECK(', 'Assertion', 'test cases:']:\n print('\\n--',pat)\n for i,line in enumerate(text.splitlines(),1):\n if pat in line:\n print(i,line)\n if pat!='test cases:':\n pass\n \nPY" }, { "label": "triage: failed-line-context", "type": "shell", "command": "python3 - <<'PY'\nfrom pathlib import Path\nlines=Path('build/debug/meson-logs/testlog.txt').read_text(errors='replace').splitlines()\nfor i,l in enumerate(lines):\n if 'FAILED:' in l:\n s=max(0,i-6); e=min(len(lines),i+12)\n print('\\n'.join(f'{j+1}: {lines[j]}' for j in range(s,e)))\n print('---')\nPY" }, { "label": "triage: daemon-shutdown failed line", "type": "shell", "command": "python3 - <<'PY'\nfrom pathlib import Path\nlines=Path('build/debug/meson-logs/testlog.txt').read_text(errors='replace').splitlines()\nfor i,l in enumerate(lines):\n if 'FAILED:' in l:\n s=max(0,i-8); e=min(len(lines),i+12)\n print('\\n'.join(f'{j+1}: {lines[j]}' for j in range(s,e)))\n print('---')\nPY" }, { "label": "triage: daemon-shutdown verbose", "type": "shell", "command": "meson test -C build/debug \"yams:daemon_shutdown_inflight_ops\" --print-errorlogs --test-args=\"-s\" && python3 - <<'PY'\nfrom pathlib import Path\nlines=Path('build/debug/meson-logs/testlog.txt').read_text(errors='replace').splitlines()\nfor i,l in enumerate(lines):\n if 'FAILED:' in l:\n s=max(0,i-6); e=min(len(lines),i+12)\n print('\\n'.join(f'{j+1}: {lines[j]}' for j in range(s,e)))\n print('---')\nPY" }, { "label": "stability: daemon-shutdown repeats", "type": "shell", "command": "for i in 1 2 3; do echo \"RUN $i\"; meson test -C build/debug \"yams:daemon_shutdown_inflight_ops\" --print-errorlogs || exit 1; done" }, { "label": "bench: search baseline (adaptive off)", "type": "shell", "command": "mkdir -p bench_results && YAMS_ENABLE_ENV_OVERRIDES=1 YAMS_BENCH_ENABLE_EMBEDDINGS=1 YAMS_BENCH_DOC_COUNT=500 YAMS_SEARCH_ENABLE_ADAPTIVE_FALLBACK=0 ./build/debug/tests/benchmarks/yams_retrieval_service_benchmarks --benchmark_filter='BM_RetrievalService_Search_(Keyword|Hybrid)' --benchmark_repetitions=5 --benchmark_report_aggregates_only=true --benchmark_out=bench_results/search_latency_baseline.json --benchmark_out_format=json", "group": "test" }, { "label": "bench: search adaptive fallback", "type": "shell", "command": "mkdir -p bench_results && YAMS_ENABLE_ENV_OVERRIDES=1 YAMS_BENCH_ENABLE_EMBEDDINGS=1 YAMS_BENCH_DOC_COUNT=500 YAMS_SEARCH_ENABLE_ADAPTIVE_FALLBACK=1 YAMS_SEARCH_ADAPTIVE_MIN_TIER1_HITS=0 ./build/debug/tests/benchmarks/yams_retrieval_service_benchmarks --benchmark_filter='BM_RetrievalService_Search_(Keyword|Hybrid)' --benchmark_repetitions=5 --benchmark_report_aggregates_only=true --benchmark_out=bench_results/search_latency_adaptive.json --benchmark_out_format=json", "group": "test" }, { "label": "bench: compare baseline vs adaptive", "type": "shell", "command": "python3 - <<'PY'\nimport json\nfrom pathlib import Path\n\ndef load(path):\n p = Path(path)\n if not p.exists():\n raise SystemExit(f'missing file: {p}')\n data = json.loads(p.read_text())\n out = {}\n for b in data.get('benchmarks', []):\n name = b.get('name', '')\n if name.startswith('BM_RetrievalService_Search_') and b.get('run_type') == 'aggregate':\n agg = b.get('aggregate_name')\n if agg in ('mean', 'median'):\n out[(name, agg)] = b.get('real_time', 0.0)\n return out\n\nb = load('bench_results/search_latency_baseline.json')\na = load('bench_results/search_latency_adaptive.json')\nprint('Search latency comparison (microseconds, lower is better):')\nfor key in sorted(set(b) | set(a)):\n bv = b.get(key)\n av = a.get(key)\n if bv is None or av is None:\n print(f'{key}: baseline={bv} adaptive={av}')\n continue\n delta = av - bv\n pct = (delta / bv * 100.0) if bv else 0.0\n print(f'{key[0]} [{key[1]}]: baseline={bv:.1f} adaptive={av:.1f} delta={delta:.1f} ({pct:+.2f}%)')\nPY", "group": "test" }, { "label": "bench: search graph rerank", "type": "shell", "command": "mkdir -p bench_results && YAMS_ENABLE_ENV_OVERRIDES=1 YAMS_BENCH_ENABLE_EMBEDDINGS=1 YAMS_BENCH_DOC_COUNT=500 YAMS_SEARCH_ENABLE_ADAPTIVE_FALLBACK=0 YAMS_SEARCH_ENABLE_GRAPH_RERANK=1 YAMS_SEARCH_GRAPH_RERANK_TOPN=25 YAMS_SEARCH_GRAPH_RERANK_WEIGHT=0.15 YAMS_SEARCH_GRAPH_RERANK_MAX_BOOST=0.20 YAMS_SEARCH_GRAPH_BUDGET_MS=10 ./build/debug/tests/benchmarks/yams_retrieval_service_benchmarks --benchmark_filter='BM_RetrievalService_Search_(Keyword|Hybrid)' --benchmark_repetitions=5 --benchmark_report_aggregates_only=true --benchmark_out=bench_results/search_latency_graph_rerank.json --benchmark_out_format=json", "group": "test" }, { "label": "bench: compare baseline vs graph rerank", "type": "shell", "command": "python3 - <<'PY'\nimport json\nfrom pathlib import Path\n\ndef load(path):\n p = Path(path)\n if not p.exists():\n raise SystemExit(f'missing file: {p}')\n data = json.loads(p.read_text())\n out = {}\n for b in data.get('benchmarks', []):\n name = b.get('name', '')\n if name.startswith('BM_RetrievalService_Search_') and b.get('run_type') == 'aggregate':\n agg = b.get('aggregate_name')\n if agg in ('mean', 'median'):\n out[(name, agg)] = b.get('real_time', 0.0)\n return out\n\nb = load('bench_results/search_latency_baseline.json')\ng = load('bench_results/search_latency_graph_rerank.json')\nprint('Search latency comparison (microseconds, lower is better):')\nfor key in sorted(set(b) | set(g)):\n bv = b.get(key)\n gv = g.get(key)\n if bv is None or gv is None:\n print(f'{key}: baseline={bv} graph_rerank={gv}')\n continue\n delta = gv - bv\n pct = (delta / bv * 100.0) if bv else 0.0\n print(f'{key[0]} [{key[1]}]: baseline={bv:.1f} graph_rerank={gv:.1f} delta={delta:.1f} ({pct:+.2f}%)')\nPY", "group": "test" } ] }