EXTENSION = pg_sorted_heap MODULE_big = pg_sorted_heap OBJS = src/pg_sorted_heap.o src/sorted_heap.o src/sorted_heap_scan.o src/sorted_heap_online.o src/sorted_vector_hash.o src/svec.o src/hsvec.o src/pq.o src/sorted_hnsw.o src/hnsw_build.o src/flashhadamard.o src/flashhadamard_store.o PG_CPPFLAGS = -I$(srcdir)/src DATA = sql/pg_sorted_heap--0.14.0.sql sql/pg_sorted_heap--0.13.0--0.14.0.sql \ sql/pg_sorted_heap--0.13.0.sql sql/pg_sorted_heap--0.12.0--0.13.0.sql \ sql/pg_sorted_heap--0.12.0.sql sql/pg_sorted_heap--0.11.0--0.12.0.sql \ sql/pg_sorted_heap--0.11.0.sql sql/pg_sorted_heap--0.10.0--0.11.0.sql \ sql/pg_sorted_heap--0.10.0.sql sql/pg_sorted_heap--0.9.15--0.10.0.sql \ sql/pg_sorted_heap--0.9.15.sql sql/pg_sorted_heap--0.9.14--0.9.15.sql \ sql/pg_sorted_heap--0.9.14.sql sql/pg_sorted_heap--0.9.13--0.9.14.sql \ sql/pg_sorted_heap--0.9.13.sql sql/pg_sorted_heap--0.9.12--0.9.13.sql \ sql/pg_sorted_heap--0.9.12.sql sql/pg_sorted_heap--0.9.11--0.9.12.sql \ sql/pg_sorted_heap--0.9.11.sql sql/pg_sorted_heap--0.9.10--0.9.11.sql \ sql/pg_sorted_heap--0.9.10.sql sql/pg_sorted_heap--0.9.9--0.9.10.sql \ sql/pg_sorted_heap--0.9.9.sql sql/pg_sorted_heap--0.9.8--0.9.9.sql \ sql/pg_sorted_heap--0.9.8.sql sql/pg_sorted_heap--0.9.7--0.9.8.sql \ sql/pg_sorted_heap--0.9.7.sql DOCS = REGRESS = pg_sorted_heap sorted_hnsw graph_rag PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS) # Ensure bash for recipes that use pipefail (dash on Ubuntu doesn't support it) SHELL = /bin/bash PERF_RUNTIME_SELFTEST_PORT ?= 65473 PERF_RUNTIME_SELFTEST_ROWS ?= 128 PERF_RUNTIME_SELFTEST_ITERS ?= 50 PERF_RUNTIME_SELFTEST_CHURN_ROWS ?= 69632 PERF_RUNTIME_SELFTEST_CHURN_ITERS ?= 50 PERF_RUNTIME_SELFTEST_HIGH_PORT ?= 65474 PERF_RUNTIME_SELFTEST_HIGH_ROWS ?= 256 PERF_RUNTIME_SELFTEST_HIGH_ITERS ?= 100 PERF_RUNTIME_SELFTEST_HIGH_CHURN_ROWS ?= 98304 PERF_RUNTIME_SELFTEST_HIGH_CHURN_ITERS ?= 100 RUNTIME_PROFILE_FORMAT ?= kv RUNTIME_PROFILE_SCHEMA_VERSION ?= 1 PLANNER_SELFTEST_TMP_ROOT ?= /private/tmp TMP_SELFTEST_ROOT ?= /private/tmp LIGHTWEIGHT_SELFTEST_TMP_ROOT ?= /private/tmp LIGHTWEIGHT_SELFTEST_FORMAT ?= text LIGHTWEIGHT_SELFTEST_RUN_LABEL ?= LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN ?= off LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S ?= 0 TMP_CLEAN_ROOT ?= /private/tmp TEST_CONCURRENT_PORT ?= 65490 TEST_CRASH_PORT ?= 65491 TEST_TOAST_PORT ?= 65492 TEST_ALTER_PORT ?= 65493 TEST_PARTITION_LOCK_PORT ?= 65487 TEST_GRAPHRAG_PORT ?= 65494 TEST_DUMP_PORT ?= 65495 TEST_SHARED_STATS_PORT ?= 65486 TEST_GRAPHRAG_CRASH_PORT ?= 65498 TEST_GRAPHRAG_CONCURRENT_PORT ?= 65499 TEST_GRAPHRAG_RELEASE_TMP ?= $(TMP_SELFTEST_ROOT)/pg_regress.codex.graphrag_release TEST_HNSW_CACHE_PORT ?= 65488 TEST_GRAPH_PORT ?= 65489 BENCH_PART_HNSW_PORT ?= 65492 BENCH_PART_HNSW_PARTITIONS ?= 8 BENCH_PART_HNSW_ROWS_PER_PARTITION ?= 50000 BENCH_PART_HNSW_QUERIES ?= 4 BENCH_PART_HNSW_DIM ?= 16 BENCH_PART_HNSW_K ?= 10 BENCH_PART_HNSW_LOCAL_K ?= 32 BENCH_PART_HNSW_EF_SEARCH ?= 64 BENCH_PART_HNSW_M ?= 16 BENCH_PART_HNSW_EF_CONSTRUCTION ?= 64 BENCH_LARGE_VECTOR_PORT ?= 65484 BENCH_LARGE_VECTOR_ROWS ?= 1000 BENCH_LARGE_VECTOR_QUERIES ?= 4 BENCH_LARGE_VECTOR_DIM ?= 64 BENCH_LARGE_VECTOR_K ?= 10 BENCH_LARGE_VECTOR_PGV_STORAGE ?= vector BENCH_LARGE_VECTOR_PGV_EF_SEARCH ?= 64 BENCH_LARGE_VECTOR_SHNSW_EF_SEARCH ?= 96 BENCH_LARGE_VECTOR_DISKANN_QUERY_SEARCH_LIST_SIZE ?= 64 BENCH_LARGE_VECTOR_DISKANN_QUERY_RESCORE ?= 50 BENCH_ANN_MATRIX_ROWS ?= 320 BENCH_ANN_MATRIX_QUERIES ?= 3 BENCH_ANN_MATRIX_DIM ?= 8 BENCH_ANN_MATRIX_K ?= 3 BENCH_WBA_BULK_PORT ?= 65511 BENCH_WBA_BULK_ROWS ?= 65536 BENCH_WBA_BULK_TENANTS ?= 4096 BENCH_WBA_BULK_WINDOWS ?= 1024,8192,65536 BENCH_WBA_BULK_PAYLOAD_BYTES ?= 200 BENCH_PORT ?= 65494 BENCH_SCALES ?= 1000000,10000000 VECTOR_BENCH_DSN ?= host=/tmp port=65432 dbname=bench_nomic VECTOR_GRAPH_MAIN_TABLE ?= bench_nomic_8k VECTOR_GRAPH_TABLE ?= bench_nomic_graph VECTOR_ENTRY_TABLE ?= bench_nomic_graph_entries VECTOR_EXACT_TABLE ?= bench_nomic_train_8k VECTOR_QUERY_TABLE ?= bench_nomic_query_200 VECTOR_GRAPH_EFS ?= 128,256,512,1024 VECTOR_IVF_NPROBES ?= 40 VECTOR_BENCH_WARMUP ?= 1 VECTOR_BENCH_QUERY_LIMIT ?= 20 VECTOR_GRAPH_SKETCH_DIM ?= 384 VECTOR_GRAPH_M ?= 32 VECTOR_GRAPH_M_MAX ?= 64 VECTOR_GRAPH_N_ADJACENT ?= 4 VECTOR_GRAPH_PRUNE ?= off VECTOR_GRAPH_SEED ?= 42 HNSW_SOURCE_TABLE ?= $(VECTOR_GRAPH_TABLE) HNSW_PREFIX ?= $(VECTOR_GRAPH_MAIN_TABLE)_hnsw HNSW_M ?= 16 HNSW_EF_CONSTRUCTION ?= 200 HNSW_SKETCH_DIM ?= $(VECTOR_GRAPH_SKETCH_DIM) TMP_CLEAN_MIN_AGE_S ?= 0 PLANNER_PROBE_ROWS ?= 1000,10000,50000 PLANNER_PROBE_PORT ?= 65496 PLANNER_PROBE_OUT ?= PLANNER_PROBE_LOG ?= PLANNER_MIN_OFF_OVER_ON ?= 100.0 PLANNER_MIN_DEFAULT_INDEX_ROWS ?= 10000 PLANNER_SUMMARY_FORMAT ?= json PLANNER_SUMMARY_OUT ?= PLANNER_REF_DIR ?= PLANNER_NEW_DIR ?= PLANNER_MIN_FRACTION ?= 0.90 PLANNER_SET_STAT_MODE ?= median PLANNER_SET_MIN_SAMPLES ?= UNNEST_AB_RUNS ?= 5 UNNEST_AB_BATCH_SIZE ?= 500 UNNEST_AB_BATCHES ?= 40 UNNEST_AB_SELECT_ITERS ?= 200 UNNEST_AB_PROBE_SIZE ?= 128 UNNEST_AB_PORT ?= 65498 UNNEST_AB_OUT ?= UNNEST_AB_WARMUP_SELECTS ?= 1 UNNEST_SENTINEL_RUNS ?= 1 UNNEST_SENTINEL_BATCH_SIZE ?= 400 UNNEST_SENTINEL_BATCHES ?= 20 UNNEST_SENTINEL_SELECT_ITERS ?= 60 UNNEST_SENTINEL_PROBE_SIZE ?= 64 UNNEST_SENTINEL_PORT ?= 65488 UNNEST_SENTINEL_WARMUP_SELECTS ?= 1 UNNEST_SENTINEL_ENFORCE_THRESHOLDS ?= 1 UNNEST_SENTINEL_MIN_INSERT_RATIO ?= 0.70 UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO ?= 0.90 UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO ?= 0.85 UNNEST_STARTUP_RUNS ?= 1 UNNEST_STARTUP_BATCH_SIZE ?= 400 UNNEST_STARTUP_BATCHES ?= 20 UNNEST_STARTUP_SELECT_ITERS ?= 60 UNNEST_STARTUP_PROBE_SIZE ?= 64 UNNEST_STARTUP_PORT ?= 65486 UNNEST_STARTUP_PROBE_SCRIPT ?= UNNEST_STARTUP_GUARD_PROBE_SCRIPT ?= UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT ?= UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD ?= 2.00 UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD ?= 2.00 UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD ?= 1.80 UNNEST_AB_NIGHTLY_OUT_ROOT ?= /private/tmp UNNEST_AB_NIGHTLY_BASE_PORT ?= 65420 UNNEST_AB_NIGHTLY_REPS ?= 4 UNNEST_AB_NIGHTLY_STRICT_MIN_OBS ?= 48 UNNEST_AB_NIGHTLY_KEEP_ARTIFACTS ?= off UNNEST_AB_NIGHTLY_BASELINE ?= ./docs/perf-baselines/unnest_ab_profile_boundary_nightly_baseline.kv UNNEST_AB_NIGHTLY_HISTORY_INPUT ?= /private/tmp UNNEST_AB_NIGHTLY_HISTORY_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_HISTORY_GATE_INPUT ?= $(UNNEST_AB_NIGHTLY_HISTORY_INPUT) UNNEST_AB_NIGHTLY_HISTORY_GATE_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_HISTORY_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_HISTORY_GATE_MIN_SAMPLES_TOTAL ?= 8 UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE ?= 0.05 UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE ?= 0.25 UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE ?= 0.90 UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE ?= 0.90 UNNEST_AB_NIGHTLY_HISTORY_DERIVE_INPUT ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_INPUT) UNNEST_AB_NIGHTLY_HISTORY_DERIVE_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MAX_HEADROOM ?= 0.02 UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MIN_FLOOR_MARGIN ?= 0.02 UNNEST_AB_NIGHTLY_WINDOW_RUNS ?= 2 UNNEST_AB_NIGHTLY_WINDOW_MIN_SAMPLES_TOTAL ?= 8 UNNEST_AB_NIGHTLY_WINDOW_KEEP_ARTIFACTS ?= off UNNEST_AB_NIGHTLY_WINDOW_SUMMARY_OUT ?= UNNEST_AB_NIGHTLY_POLICY_DELTA_INPUT ?= $(UNNEST_AB_NIGHTLY_WINDOW_SUMMARY_OUT) UNNEST_AB_NIGHTLY_POLICY_DELTA_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE) UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE) UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE) UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN ?= $(UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE) UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM ?= $(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MAX_HEADROOM) UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN ?= $(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MIN_FLOOR_MARGIN) UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE ?= 0.05 UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE ?= off UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_INPUT ?= /private/tmp UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT ?= $(UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_INPUT) UNNEST_AB_NIGHTLY_POLICY_REVIEW_STRICT_MIN_OBS ?= $(UNNEST_AB_NIGHTLY_POLICY_DELTA_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_POLICY_REVIEW_WINDOW_FILES ?= 14 UNNEST_AB_NIGHTLY_POLICY_REVIEW_AGGREGATE_OUT ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_FROM_DATE ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_TO_DATE ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_TRUSTED ?= off UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS ?= 86400 UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_NOW_EPOCH ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_FRESHNESS_PRECHECKED ?= off UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_INPUT ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_OUT ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_INPUT ?= $(UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT) UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT ?= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MAP_ENTRIES ?= 20000 UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_ITERATIONS ?= 20 UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MODE ?= pipeline UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_SAMPLES ?= 1 UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_TIMER_MODE ?= auto UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_DISABLE_MS_BACKEND ?= 0 UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SUMMARY_FILES ?= 2000 UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_ITERATIONS ?= 10 UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SAMPLES ?= 1 UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_TIMER_MODE ?= auto UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_MODE ?= trusted UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_STALE_PERCENT ?= 0 UNNEST_AB_REF_DIR ?= UNNEST_AB_NEW_DIR ?= UNNEST_AB_MIN_FRACTION ?= 0.90 UNNEST_AB_SET_STAT_MODE ?= median UNNEST_AB_SET_MIN_SAMPLES ?= UNNEST_AB_SELFTEST_TMP_ROOT ?= /private/tmp UNNEST_GATE_REF_RUNS ?= 3 UNNEST_GATE_NEW_RUNS ?= 3 UNNEST_GATE_BATCH_SIZE ?= 400 UNNEST_GATE_BATCHES ?= 20 UNNEST_GATE_SELECT_ITERS ?= 100 UNNEST_GATE_PROBE_SIZE ?= 64 UNNEST_GATE_BASE_PORT ?= 65300 UNNEST_GATE_OUT_ROOT ?= /private/tmp UNNEST_GATE_MIN_FRACTION ?= 0.90 UNNEST_GATE_STAT_MODE ?= median UNNEST_GATE_MIN_SAMPLES ?= UNNEST_GATE_EXISTING_REF_DIR ?= UNNEST_GATE_KEEP_NEW_DIR ?= off UNNEST_GATE_ALLOW_OPTIMISTIC_TAIL ?= off UNNEST_GATE_SELFTEST_TMP_ROOT ?= /private/tmp UNNEST_TUNE_RUNS ?= 1 UNNEST_TUNE_BATCH_SIZE ?= 400 UNNEST_TUNE_BATCHES ?= 20 UNNEST_TUNE_SELECT_ITERS ?= 60 UNNEST_TUNE_PROBE_SIZE ?= 64 UNNEST_TUNE_BASE_PORT ?= 65510 UNNEST_TUNE_OUT ?= UNNEST_TUNE_PROBE_OUT_ROOT ?= /private/tmp UNNEST_TUNE_TRIGGER_LIST ?= 1,2,4 UNNEST_TUNE_MIN_DISTINCT_LIST ?= 2,4,8 UNNEST_TUNE_MAX_TIDS_LIST ?= 65536,262144 fastpath-perf-probe-selftest-profiles: @if [ "$(RUNTIME_PROFILE_FORMAT)" = "kv" ]; then \ echo "runtime_profile|name=base|port=$(PERF_RUNTIME_SELFTEST_PORT)|rows=$(PERF_RUNTIME_SELFTEST_ROWS)|iters=$(PERF_RUNTIME_SELFTEST_ITERS)|churn_rows=$(PERF_RUNTIME_SELFTEST_CHURN_ROWS)|churn_iters=$(PERF_RUNTIME_SELFTEST_CHURN_ITERS)"; \ echo "runtime_profile|name=high_churn|port=$(PERF_RUNTIME_SELFTEST_HIGH_PORT)|rows=$(PERF_RUNTIME_SELFTEST_HIGH_ROWS)|iters=$(PERF_RUNTIME_SELFTEST_HIGH_ITERS)|churn_rows=$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ROWS)|churn_iters=$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ITERS)"; \ elif [ "$(RUNTIME_PROFILE_FORMAT)" = "json" ]; then \ if ! printf '%s' "$(RUNTIME_PROFILE_SCHEMA_VERSION)" | grep -Eq '^[1-9][0-9]*$$'; then \ echo "invalid RUNTIME_PROFILE_SCHEMA_VERSION: $(RUNTIME_PROFILE_SCHEMA_VERSION) (must be positive integer)" >&2; \ exit 2; \ fi; \ printf '{"schema_version":%s,"profiles":[{"name":"base","port":%s,"rows":%s,"iters":%s,"churn_rows":%s,"churn_iters":%s},{"name":"high_churn","port":%s,"rows":%s,"iters":%s,"churn_rows":%s,"churn_iters":%s}]}\n' \ "$(RUNTIME_PROFILE_SCHEMA_VERSION)" \ "$(PERF_RUNTIME_SELFTEST_PORT)" "$(PERF_RUNTIME_SELFTEST_ROWS)" "$(PERF_RUNTIME_SELFTEST_ITERS)" "$(PERF_RUNTIME_SELFTEST_CHURN_ROWS)" "$(PERF_RUNTIME_SELFTEST_CHURN_ITERS)" \ "$(PERF_RUNTIME_SELFTEST_HIGH_PORT)" "$(PERF_RUNTIME_SELFTEST_HIGH_ROWS)" "$(PERF_RUNTIME_SELFTEST_HIGH_ITERS)" "$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ROWS)" "$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ITERS)"; \ else \ echo "unsupported RUNTIME_PROFILE_FORMAT: $(RUNTIME_PROFILE_FORMAT) (supported: kv|json)" >&2; \ exit 2; \ fi planner-cost-probe: ./scripts/run_planner_cost_probe.sh $(PLANNER_PROBE_ROWS) $(PLANNER_PROBE_PORT) $(PLANNER_PROBE_OUT) planner-cost-probe-summary: ./scripts/run_planner_probe_with_summary.sh $(PLANNER_PROBE_ROWS) $(PLANNER_PROBE_PORT) $(PLANNER_PROBE_OUT) $(PLANNER_SUMMARY_FORMAT) $(PLANNER_SUMMARY_OUT) planner-cost-gate: ./scripts/run_planner_probe_gate.sh $(PLANNER_PROBE_ROWS) $(PLANNER_PROBE_PORT) $(PLANNER_PROBE_OUT) $(PLANNER_SUMMARY_FORMAT) $(PLANNER_SUMMARY_OUT) $(PLANNER_MIN_OFF_OVER_ON) $(PLANNER_MIN_DEFAULT_INDEX_ROWS) planner-cost-gate-selftest: ./scripts/selftest_run_planner_probe_gate.sh $(PLANNER_SELFTEST_TMP_ROOT) planner-cost-check: ./scripts/check_planner_probe_cost_ratio.sh $(PLANNER_PROBE_LOG) $(PLANNER_MIN_OFF_OVER_ON) planner-cost-check-selftest: ./scripts/selftest_check_planner_probe_cost_ratio.sh $(PLANNER_SELFTEST_TMP_ROOT) planner-cost-default-path-check: ./scripts/check_planner_probe_default_path.sh $(PLANNER_PROBE_LOG) $(PLANNER_MIN_DEFAULT_INDEX_ROWS) planner-cost-default-path-check-selftest: ./scripts/selftest_check_planner_probe_default_path.sh $(PLANNER_SELFTEST_TMP_ROOT) planner-cost-summary: ./scripts/summarize_planner_probe_log.sh $(PLANNER_PROBE_LOG) $(PLANNER_SUMMARY_FORMAT) $(PLANNER_SUMMARY_OUT) planner-cost-summary-selftest: ./scripts/selftest_summarize_planner_probe_log.sh $(PLANNER_SELFTEST_TMP_ROOT) planner-cost-compare-median: ./scripts/compare_planner_probe_logsets.sh $(PLANNER_REF_DIR) $(PLANNER_NEW_DIR) $(PLANNER_MIN_FRACTION) $(PLANNER_SET_STAT_MODE) $(PLANNER_SET_MIN_SAMPLES) planner-cost-compare-selftest: ./scripts/selftest_compare_planner_probe_logsets.sh $(PLANNER_SELFTEST_TMP_ROOT) unnest-ab-probe: UNNEST_AB_WARMUP_SELECTS="$(UNNEST_AB_WARMUP_SELECTS)" ./scripts/run_unnest_ab_probe.sh $(UNNEST_AB_RUNS) $(UNNEST_AB_BATCH_SIZE) $(UNNEST_AB_BATCHES) $(UNNEST_AB_SELECT_ITERS) $(UNNEST_AB_PROBE_SIZE) $(UNNEST_AB_PORT) "$(UNNEST_AB_OUT)" unnest-ab-perf-sentinel: UNNEST_SENTINEL_RUNS="$(UNNEST_SENTINEL_RUNS)" UNNEST_SENTINEL_BATCH_SIZE="$(UNNEST_SENTINEL_BATCH_SIZE)" UNNEST_SENTINEL_BATCHES="$(UNNEST_SENTINEL_BATCHES)" UNNEST_SENTINEL_SELECT_ITERS="$(UNNEST_SENTINEL_SELECT_ITERS)" UNNEST_SENTINEL_PROBE_SIZE="$(UNNEST_SENTINEL_PROBE_SIZE)" UNNEST_SENTINEL_PORT="$(UNNEST_SENTINEL_PORT)" UNNEST_SENTINEL_WARMUP_SELECTS="$(UNNEST_SENTINEL_WARMUP_SELECTS)" UNNEST_SENTINEL_ENFORCE_THRESHOLDS="$(UNNEST_SENTINEL_ENFORCE_THRESHOLDS)" UNNEST_SENTINEL_MIN_INSERT_RATIO="$(UNNEST_SENTINEL_MIN_INSERT_RATIO)" UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO="$(UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO)" UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO="$(UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO)" ./scripts/run_unnest_ab_perf_sentinel.sh /private/tmp unnest-ab-perf-sentinel-cold-observe: UNNEST_SENTINEL_WARMUP_SELECTS=0 UNNEST_SENTINEL_ENFORCE_THRESHOLDS=0 $(MAKE) --no-print-directory unnest-ab-perf-sentinel unnest-ab-startup-sensitivity: UNNEST_STARTUP_RUNS="$(UNNEST_STARTUP_RUNS)" UNNEST_STARTUP_BATCH_SIZE="$(UNNEST_STARTUP_BATCH_SIZE)" UNNEST_STARTUP_BATCHES="$(UNNEST_STARTUP_BATCHES)" UNNEST_STARTUP_SELECT_ITERS="$(UNNEST_STARTUP_SELECT_ITERS)" UNNEST_STARTUP_PROBE_SIZE="$(UNNEST_STARTUP_PROBE_SIZE)" UNNEST_STARTUP_PORT="$(UNNEST_STARTUP_PORT)" UNNEST_STARTUP_PROBE_SCRIPT="$(UNNEST_STARTUP_PROBE_SCRIPT)" ./scripts/run_unnest_ab_startup_sensitivity_probe.sh /private/tmp unnest-ab-startup-sensitivity-guard: UNNEST_STARTUP_RUNS="$(UNNEST_STARTUP_RUNS)" UNNEST_STARTUP_BATCH_SIZE="$(UNNEST_STARTUP_BATCH_SIZE)" UNNEST_STARTUP_BATCHES="$(UNNEST_STARTUP_BATCHES)" UNNEST_STARTUP_SELECT_ITERS="$(UNNEST_STARTUP_SELECT_ITERS)" UNNEST_STARTUP_PROBE_SIZE="$(UNNEST_STARTUP_PROBE_SIZE)" UNNEST_STARTUP_PORT="$(UNNEST_STARTUP_PORT)" UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD="$(UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD)" UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD="$(UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD)" UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD="$(UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD)" UNNEST_STARTUP_GUARD_PROBE_SCRIPT="$(UNNEST_STARTUP_GUARD_PROBE_SCRIPT)" ./scripts/run_unnest_ab_startup_sensitivity_guard.sh /private/tmp unnest-ab-startup-sensitivity-sentinel: UNNEST_STARTUP_RUNS="$(UNNEST_STARTUP_RUNS)" UNNEST_STARTUP_BATCH_SIZE="$(UNNEST_STARTUP_BATCH_SIZE)" UNNEST_STARTUP_BATCHES="$(UNNEST_STARTUP_BATCHES)" UNNEST_STARTUP_SELECT_ITERS="$(UNNEST_STARTUP_SELECT_ITERS)" UNNEST_STARTUP_PROBE_SIZE="$(UNNEST_STARTUP_PROBE_SIZE)" UNNEST_STARTUP_PORT="$(UNNEST_STARTUP_PORT)" UNNEST_STARTUP_PROBE_SCRIPT="$(UNNEST_STARTUP_PROBE_SCRIPT)" UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT="$(UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT)" ./scripts/run_unnest_ab_startup_sensitivity_sentinel.sh /private/tmp pg-core-regression-smoke: ./scripts/run_pg_core_regression_smoke.sh /private/tmp unnest-ab-profile-boundary-history-summary: bash ./scripts/summarize_unnest_ab_boundary_history.sh $(UNNEST_AB_NIGHTLY_HISTORY_INPUT) $(UNNEST_AB_NIGHTLY_HISTORY_STRICT_MIN_OBS) unnest-ab-profile-boundary-history-selftest: bash ./scripts/selftest_summarize_unnest_ab_boundary_history.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-gate: @set -euo pipefail; \ tmp_summary="$$(mktemp "$(UNNEST_AB_NIGHTLY_OUT_ROOT)/pg_sorted_heap_boundary_history_gate.XXXXXX")"; \ trap 'rm -f "$$tmp_summary"' EXIT; \ bash ./scripts/summarize_unnest_ab_boundary_history.sh "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_INPUT)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_STRICT_MIN_OBS)" > "$$tmp_summary"; \ bash ./scripts/check_unnest_ab_boundary_history_gate.sh "$$tmp_summary" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_STRICT_MIN_OBS)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_MIN_SAMPLES_TOTAL)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE)" "$(UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE)" unnest-ab-profile-boundary-history-gate-selftest: bash ./scripts/selftest_check_unnest_ab_boundary_history_gate.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-derive-thresholds: @set -euo pipefail; \ tmp_summary="$$(mktemp "$(UNNEST_AB_NIGHTLY_OUT_ROOT)/pg_sorted_heap_boundary_history_derive.XXXXXX")"; \ trap 'rm -f "$$tmp_summary"' EXIT; \ bash ./scripts/summarize_unnest_ab_boundary_history.sh "$(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_INPUT)" "$(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_STRICT_MIN_OBS)" > "$$tmp_summary"; \ bash ./scripts/derive_unnest_ab_boundary_history_gate_thresholds.sh "$$tmp_summary" "$(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_STRICT_MIN_OBS)" "$(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MAX_HEADROOM)" "$(UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MIN_FLOOR_MARGIN)" unnest-ab-profile-boundary-history-derive-thresholds-selftest: bash ./scripts/selftest_derive_unnest_ab_boundary_history_gate_thresholds.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-window-gate: UNNEST_AB_HISTORY_WINDOW_KEEP_ARTIFACTS="$(UNNEST_AB_NIGHTLY_WINDOW_KEEP_ARTIFACTS)" UNNEST_AB_HISTORY_WINDOW_SUMMARY_OUT="$(UNNEST_AB_NIGHTLY_WINDOW_SUMMARY_OUT)" bash ./scripts/run_unnest_ab_boundary_history_window_gate.sh $(UNNEST_AB_NIGHTLY_OUT_ROOT) $(UNNEST_AB_NIGHTLY_BASE_PORT) $(UNNEST_AB_NIGHTLY_REPS) $(UNNEST_AB_NIGHTLY_STRICT_MIN_OBS) $(UNNEST_AB_NIGHTLY_WINDOW_RUNS) $(UNNEST_AB_NIGHTLY_WINDOW_MIN_SAMPLES_TOTAL) $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE) $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE) $(UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE) $(UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE) unnest-ab-profile-boundary-history-window-gate-selftest: bash ./scripts/selftest_run_unnest_ab_boundary_history_window_gate.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-policy-delta: bash ./scripts/compare_unnest_ab_boundary_history_gate_policy_delta.sh "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_INPUT)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_STRICT_MIN_OBS)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE)" unnest-ab-profile-boundary-history-policy-delta-selftest: bash ./scripts/selftest_compare_unnest_ab_boundary_history_gate_policy_delta.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-accumulate: bash ./scripts/accumulate_unnest_ab_boundary_history_summaries.sh "$(UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_INPUT)" "$(UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_STRICT_MIN_OBS)" unnest-ab-profile-boundary-history-accumulate-selftest: bash ./scripts/selftest_accumulate_unnest_ab_boundary_history_summaries.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-policy-review-window: UNNEST_AB_POLICY_REVIEW_AGGREGATE_OUT="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_AGGREGATE_OUT)" UNNEST_AB_POLICY_REVIEW_DATE_MAP="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP)" UNNEST_AB_POLICY_REVIEW_DATE_MAP_INDEX="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX)" UNNEST_AB_POLICY_REVIEW_MANIFEST="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST)" UNNEST_AB_POLICY_REVIEW_MANIFEST_TRUSTED="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_TRUSTED)" UNNEST_AB_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS)" UNNEST_AB_POLICY_REVIEW_MANIFEST_NOW_EPOCH="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_NOW_EPOCH)" UNNEST_AB_POLICY_REVIEW_MANIFEST_FRESHNESS_PRECHECKED="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_FRESHNESS_PRECHECKED)" bash ./scripts/run_unnest_ab_boundary_history_policy_review_window.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_STRICT_MIN_OBS)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_WINDOW_FILES)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_FROM_DATE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_TO_DATE)" unnest-ab-profile-boundary-history-policy-review-window-selftest: bash ./scripts/selftest_run_unnest_ab_boundary_history_policy_review_window.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-policy-review-prechecked-matrix-selftest: bash ./scripts/selftest_policy_review_manifest_prechecked_matrix.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-policy-review-trust-selftest: bash ./scripts/selftest_check_unnest_ab_boundary_history_policy_review_manifest_freshness.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_run_unnest_ab_boundary_history_policy_review_window.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_make_unnest_ab_boundary_history_policy_review_window_trusted_workflow.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_make_help_policy_review_trusted_workflow.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_make_help_policy_safety_selftest.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_policy_review_manifest_prechecked_matrix.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) policy-safety-selftest: $(MAKE) unnest-ab-profile-boundary-history-policy-review-trust-selftest UNNEST_AB_SELFTEST_TMP_ROOT=$(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_run_unnest_ab_probe_gate.sh $(UNNEST_GATE_SELFTEST_TMP_ROOT) bash ./scripts/selftest_docs_make_sentinel_cold_observe_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_docs_policy_safety_quickstart_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_docs_pg_core_regression_smoke_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_policy_safety_workflow_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_policy_safety_target_composition.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_policy_safety_workflow_target_sync.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) bash ./scripts/selftest_release_archive_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-profile-boundary-history-policy-review-manifest: bash ./scripts/build_unnest_ab_boundary_history_policy_review_manifest.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_INPUT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT)" unnest-ab-profile-boundary-history-policy-review-manifest-freshness: bash ./scripts/check_unnest_ab_boundary_history_policy_review_manifest_freshness.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS)" unnest-ab-profile-boundary-history-policy-review-window-trusted: @set -euo pipefail; \ manifest_out="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT)"; \ manifest_now_epoch="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_NOW_EPOCH)"; \ if [ -z "$$manifest_out" ]; then \ echo "UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT must be set for trusted policy review workflow" >&2; \ exit 2; \ fi; \ bash ./scripts/build_unnest_ab_boundary_history_policy_review_manifest.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT)" "$$manifest_out"; \ if [ -n "$$manifest_now_epoch" ]; then \ bash ./scripts/check_unnest_ab_boundary_history_policy_review_manifest_freshness.sh "$$manifest_out" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS)" "$$manifest_now_epoch"; \ else \ bash ./scripts/check_unnest_ab_boundary_history_policy_review_manifest_freshness.sh "$$manifest_out" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS)"; \ fi; \ UNNEST_AB_POLICY_REVIEW_AGGREGATE_OUT="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_AGGREGATE_OUT)" UNNEST_AB_POLICY_REVIEW_DATE_MAP="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP)" UNNEST_AB_POLICY_REVIEW_DATE_MAP_INDEX="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX)" UNNEST_AB_POLICY_REVIEW_MANIFEST="$$manifest_out" UNNEST_AB_POLICY_REVIEW_MANIFEST_TRUSTED="on" UNNEST_AB_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS)" UNNEST_AB_POLICY_REVIEW_MANIFEST_NOW_EPOCH="$$manifest_now_epoch" UNNEST_AB_POLICY_REVIEW_MANIFEST_FRESHNESS_PRECHECKED="on" bash ./scripts/run_unnest_ab_boundary_history_policy_review_window.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_STRICT_MIN_OBS)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_WINDOW_FILES)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE)" "$(UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_FROM_DATE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_TO_DATE)" unnest-ab-profile-boundary-history-date-map-index: bash ./scripts/build_unnest_ab_boundary_history_date_map_index.sh "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_INPUT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_OUT)" unnest-ab-profile-boundary-history-date-map-benchmark: UNNEST_AB_BENCH_DISABLE_MS_BACKEND="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_DISABLE_MS_BACKEND)" bash ./scripts/benchmark_unnest_ab_boundary_history_date_map_modes.sh "$(UNNEST_AB_SELFTEST_TMP_ROOT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MAP_ENTRIES)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_ITERATIONS)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MODE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_SAMPLES)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_TIMER_MODE)" unnest-ab-profile-boundary-history-manifest-benchmark: UNNEST_AB_BENCH_DISABLE_MS_BACKEND="$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_DISABLE_MS_BACKEND)" bash ./scripts/benchmark_unnest_ab_boundary_history_policy_review_manifest_modes.sh "$(UNNEST_AB_SELFTEST_TMP_ROOT)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SUMMARY_FILES)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_ITERATIONS)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SAMPLES)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_TIMER_MODE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_MODE)" "$(UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_STALE_PERCENT)" unnest-ab-compare-median: ./scripts/compare_unnest_ab_logsets.sh $(UNNEST_AB_REF_DIR) $(UNNEST_AB_NEW_DIR) $(UNNEST_AB_MIN_FRACTION) $(UNNEST_AB_SET_STAT_MODE) $(UNNEST_AB_SET_MIN_SAMPLES) unnest-ab-compare-selftest: ./scripts/selftest_compare_unnest_ab_logsets.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-probe-make-arg-selftest: bash ./scripts/selftest_unnest_ab_probe_make_arg_contract.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-perf-sentinel-selftest: bash ./scripts/selftest_run_unnest_ab_perf_sentinel.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-startup-sensitivity-selftest: bash ./scripts/selftest_run_unnest_ab_startup_sensitivity_probe.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-startup-sensitivity-guard-selftest: bash ./scripts/selftest_run_unnest_ab_startup_sensitivity_guard.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-startup-sensitivity-sentinel-selftest: bash ./scripts/selftest_run_unnest_ab_startup_sensitivity_sentinel.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) pg-core-regression-smoke-selftest: bash ./scripts/selftest_run_pg_core_regression_smoke.sh $(UNNEST_AB_SELFTEST_TMP_ROOT) unnest-ab-gate-make-arg-selftest: bash ./scripts/selftest_unnest_ab_gate_make_arg_contract.sh $(UNNEST_GATE_SELFTEST_TMP_ROOT) unnest-ab-gate: UNNEST_GATE_EXISTING_REF_DIR="$(UNNEST_GATE_EXISTING_REF_DIR)" UNNEST_GATE_KEEP_NEW_DIR="$(UNNEST_GATE_KEEP_NEW_DIR)" UNNEST_GATE_ALLOW_OPTIMISTIC_TAIL="$(UNNEST_GATE_ALLOW_OPTIMISTIC_TAIL)" ./scripts/run_unnest_ab_probe_gate.sh $(UNNEST_GATE_REF_RUNS) $(UNNEST_GATE_NEW_RUNS) $(UNNEST_GATE_BATCH_SIZE) $(UNNEST_GATE_BATCHES) $(UNNEST_GATE_SELECT_ITERS) $(UNNEST_GATE_PROBE_SIZE) $(UNNEST_GATE_BASE_PORT) "$(UNNEST_GATE_OUT_ROOT)" $(UNNEST_GATE_MIN_FRACTION) $(UNNEST_GATE_STAT_MODE) $(UNNEST_GATE_MIN_SAMPLES) unnest-ab-gate-selftest: ./scripts/selftest_run_unnest_ab_probe_gate.sh $(UNNEST_GATE_SELFTEST_TMP_ROOT) unnest-ab-tuning-matrix: UNNEST_TUNE_PROBE_OUT_ROOT="$(UNNEST_TUNE_PROBE_OUT_ROOT)" ./scripts/run_unnest_ab_tuning_matrix.sh $(UNNEST_TUNE_RUNS) $(UNNEST_TUNE_BATCH_SIZE) $(UNNEST_TUNE_BATCHES) $(UNNEST_TUNE_SELECT_ITERS) $(UNNEST_TUNE_PROBE_SIZE) $(UNNEST_TUNE_BASE_PORT) $(UNNEST_TUNE_OUT) $(UNNEST_TUNE_TRIGGER_LIST) $(UNNEST_TUNE_MIN_DISTINCT_LIST) $(UNNEST_TUNE_MAX_TIDS_LIST) tmp-clean: ./scripts/tmp_clean_pg_sorted_heap.sh $(TMP_CLEAN_ROOT) $(TMP_CLEAN_MIN_AGE_S) tmp-clean-selftest: ./scripts/selftest_tmp_clean_pg_sorted_heap.sh $(TMP_SELFTEST_ROOT) selftest-lightweight: @case "$(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN)" in \ off|0|false|no|on|1|true|yes) ;; \ *) echo "unsupported LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN: $(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN) (supported: off|on|0|1|false|true|no|yes)" >&2; exit 2 ;; \ esac LIGHTWEIGHT_SELFTEST_RUN_LABEL="$(LIGHTWEIGHT_SELFTEST_RUN_LABEL)" LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN="$(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN)" LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S="$(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S)" ./scripts/run_lightweight_selftests.sh $(LIGHTWEIGHT_SELFTEST_TMP_ROOT) $(LIGHTWEIGHT_SELFTEST_FORMAT) workflow-path-filter-coverage-selftest: ./scripts/selftest_workflow_path_filter_coverage.sh workflow-files-guard-selftest: ./scripts/selftest_workflow_files_are_guarded.sh lightweight-workflow-script-coverage-selftest: ./scripts/selftest_lightweight_workflow_script_coverage.sh selftest-script-baseline: ./scripts/selftest_selftest_script_baseline.sh test-concurrent: ./scripts/test_concurrent_online_ops.sh $(TMP_SELFTEST_ROOT) $(TEST_CONCURRENT_PORT) test-crash-recovery: ./scripts/test_crash_recovery.sh $(TMP_SELFTEST_ROOT) $(TEST_CRASH_PORT) test-graphrag-crash: ./scripts/test_graph_rag_crash_recovery.sh $(TMP_SELFTEST_ROOT) $(TEST_GRAPHRAG_CRASH_PORT) test-graphrag-concurrent: ./scripts/test_graph_rag_concurrent.sh $(TMP_SELFTEST_ROOT) $(TEST_GRAPHRAG_CONCURRENT_PORT) test-hnsw-chunked-cache: ./scripts/test_hnsw_chunked_cache.sh $(TMP_SELFTEST_ROOT) $(TEST_HNSW_CACHE_PORT) test-toast: ./scripts/test_toast_and_concurrent_compact.sh $(TMP_SELFTEST_ROOT) $(TEST_TOAST_PORT) test-alter-table: ./scripts/test_alter_table.sh $(TMP_SELFTEST_ROOT) $(TEST_ALTER_PORT) test-partition-lock: TMPDIR="$(TMP_SELFTEST_ROOT)" ./scripts/test_partition_lock_behavior.sh $(TEST_PARTITION_LOCK_PORT) test-dump-restore: ./scripts/test_dump_restore.sh $(TMP_SELFTEST_ROOT) $(TEST_DUMP_PORT) test-shared-scan-stats: ./scripts/test_shared_relation_scan_stats.sh $(TMP_SELFTEST_ROOT) $(TEST_SHARED_STATS_PORT) bench-partitioned-sorted-hnsw: ./scripts/bench_partitioned_sorted_hnsw.sh $(TMP_SELFTEST_ROOT) $(BENCH_PART_HNSW_PORT) $(BENCH_PART_HNSW_PARTITIONS) $(BENCH_PART_HNSW_ROWS_PER_PARTITION) $(BENCH_PART_HNSW_QUERIES) $(BENCH_PART_HNSW_DIM) $(BENCH_PART_HNSW_K) $(BENCH_PART_HNSW_LOCAL_K) $(BENCH_PART_HNSW_EF_SEARCH) $(BENCH_PART_HNSW_M) $(BENCH_PART_HNSW_EF_CONSTRUCTION) bench-large-vector-synthetic: bash ./scripts/bench_sorted_hnsw_vs_pgvector.sh $(TMP_SELFTEST_ROOT) $(BENCH_LARGE_VECTOR_PORT) $(BENCH_LARGE_VECTOR_ROWS) $(BENCH_LARGE_VECTOR_QUERIES) $(BENCH_LARGE_VECTOR_DIM) $(BENCH_LARGE_VECTOR_K) $(BENCH_LARGE_VECTOR_PGV_STORAGE) $(BENCH_LARGE_VECTOR_PGV_EF_SEARCH) $(BENCH_LARGE_VECTOR_SHNSW_EF_SEARCH) $(BENCH_LARGE_VECTOR_DISKANN_QUERY_SEARCH_LIST_SIZE) $(BENCH_LARGE_VECTOR_DISKANN_QUERY_RESCORE) bench-ann-matrix-offline-smoke: bash ./scripts/bench_ann_matrix_offline_smoke.sh $(TMP_SELFTEST_ROOT) $(BENCH_ANN_MATRIX_ROWS) $(BENCH_ANN_MATRIX_QUERIES) $(BENCH_ANN_MATRIX_DIM) $(BENCH_ANN_MATRIX_K) bench-witness-bulk-load: bash ./scripts/bench_witness_bulk_load.sh $(TMP_SELFTEST_ROOT) $(BENCH_WBA_BULK_PORT) $(BENCH_WBA_BULK_ROWS) $(BENCH_WBA_BULK_TENANTS) $(BENCH_WBA_BULK_WINDOWS) $(BENCH_WBA_BULK_PAYLOAD_BYTES) test-graphrag-lifecycle: ./scripts/test_graph_rag_lifecycle.sh $(TMP_SELFTEST_ROOT) $(TEST_GRAPHRAG_PORT) test-graphrag-release: $(MAKE) installcheck REGRESS='pg_sorted_heap sorted_hnsw graph_rag' REGRESS_OPTS="--temp-instance=$(TEST_GRAPHRAG_RELEASE_TMP)" $(MAKE) test-graphrag-lifecycle $(MAKE) test-graphrag-crash $(MAKE) test-graphrag-concurrent test-release: $(MAKE) pg-core-regression-smoke $(MAKE) policy-safety-selftest $(MAKE) test-dump-restore $(MAKE) test-toast $(MAKE) test-alter-table $(MAKE) test-partition-lock $(MAKE) test-crash-recovery $(MAKE) test-concurrent $(MAKE) test-hnsw-chunked-cache $(MAKE) test-pg-upgrade $(MAKE) test-graphrag-release test-graph-builder: ./scripts/test_graph_builder.sh $(TMP_SELFTEST_ROOT) $(TEST_GRAPH_PORT) build-graph-bench-nomic: @PYTHON_BIN="$$(./scripts/find_vector_python.sh)" && \ if [ "$(VECTOR_GRAPH_PRUNE)" = "on" ]; then prune_flag="--prune"; else prune_flag="--no-prune"; fi && \ "$$PYTHON_BIN" ./scripts/build_graph.py \ --dsn '$(VECTOR_BENCH_DSN)' \ --table $(VECTOR_GRAPH_MAIN_TABLE) \ --graph-table $(VECTOR_GRAPH_TABLE) \ --entry-table $(VECTOR_ENTRY_TABLE) \ --bootstrap \ --sketch-dim $(VECTOR_GRAPH_SKETCH_DIM) \ --M $(VECTOR_GRAPH_M) \ --M-max $(VECTOR_GRAPH_M_MAX) \ --n-adjacent $(VECTOR_GRAPH_N_ADJACENT) \ $$prune_flag \ --seed $(VECTOR_GRAPH_SEED) build-hnsw-bench-nomic: @PYTHON_BIN="$$(./scripts/find_vector_python.sh)" && \ "$$PYTHON_BIN" ./scripts/build_hnsw_graph.py \ --dsn '$(VECTOR_BENCH_DSN)' \ --source-table $(HNSW_SOURCE_TABLE) \ --prefix $(HNSW_PREFIX) \ --M $(HNSW_M) \ --ef-construction $(HNSW_EF_CONSTRUCTION) \ --sketch-dim $(HNSW_SKETCH_DIM) bench-nomic-ann: @PYTHON_BIN="$$(./scripts/find_vector_python.sh)" && \ "$$PYTHON_BIN" ./scripts/bench_nomic_local_ann.py \ --dsn '$(VECTOR_BENCH_DSN)' \ --exact-table $(VECTOR_EXACT_TABLE) \ --graph-main-table $(VECTOR_GRAPH_MAIN_TABLE) \ --graph-table $(VECTOR_GRAPH_TABLE) \ --entry-table $(VECTOR_ENTRY_TABLE) \ --query-table $(VECTOR_QUERY_TABLE) \ --query-limit $(VECTOR_BENCH_QUERY_LIMIT) \ --graph-efs $(VECTOR_GRAPH_EFS) \ --ivf-nprobes $(VECTOR_IVF_NPROBES) \ --warmup $(VECTOR_BENCH_WARMUP) TEST_UPGRADE_PORT_OLD ?= 65496 TEST_UPGRADE_PORT_NEW ?= 65497 test-pg-upgrade: ./scripts/test_pg_upgrade.sh $(TMP_SELFTEST_ROOT) $(TEST_UPGRADE_PORT_OLD) $(TEST_UPGRADE_PORT_NEW) bench: ./scripts/bench_sorted_heap.sh $(TMP_SELFTEST_ROOT) $(BENCH_PORT) $(BENCH_SCALES) policy-lint: ./scripts/lint_comparator_policy.sh policy-lint-strict: POLICY_LINT_WARNINGS_MAX=0 ./scripts/lint_comparator_policy.sh include make/research.mk help: @echo "pg_sorted_heap custom targets:" @echo " make fastpath-perf-probe-selftest-profiles RUNTIME_PROFILE_FORMAT=" @echo " make planner-cost-probe PLANNER_PROBE_ROWS= PLANNER_PROBE_PORT= PLANNER_PROBE_OUT=>" @echo " make planner-cost-probe-summary PLANNER_PROBE_ROWS= PLANNER_PROBE_PORT= PLANNER_PROBE_OUT=> PLANNER_SUMMARY_FORMAT= PLANNER_SUMMARY_OUT=>" @echo " make planner-cost-gate PLANNER_PROBE_ROWS= PLANNER_PROBE_PORT= PLANNER_PROBE_OUT=> PLANNER_SUMMARY_FORMAT= PLANNER_SUMMARY_OUT=> PLANNER_MIN_OFF_OVER_ON= PLANNER_MIN_DEFAULT_INDEX_ROWS=" @echo " make planner-cost-gate-selftest PLANNER_SELFTEST_TMP_ROOT=" @echo " make planner-cost-check PLANNER_PROBE_LOG= PLANNER_MIN_OFF_OVER_ON=" @echo " make planner-cost-check-selftest PLANNER_SELFTEST_TMP_ROOT=" @echo " make planner-cost-default-path-check PLANNER_PROBE_LOG= PLANNER_MIN_DEFAULT_INDEX_ROWS=" @echo " make planner-cost-default-path-check-selftest PLANNER_SELFTEST_TMP_ROOT=" @echo " make planner-cost-summary PLANNER_PROBE_LOG= PLANNER_SUMMARY_FORMAT= PLANNER_SUMMARY_OUT=" @echo " make planner-cost-summary-selftest PLANNER_SELFTEST_TMP_ROOT=" @echo " make planner-cost-compare-median PLANNER_REF_DIR= PLANNER_NEW_DIR= PLANNER_MIN_FRACTION=<0..1> PLANNER_SET_STAT_MODE= PLANNER_SET_MIN_SAMPLES=" @echo " make planner-cost-compare-selftest PLANNER_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-probe UNNEST_AB_RUNS= UNNEST_AB_BATCH_SIZE= UNNEST_AB_BATCHES= UNNEST_AB_SELECT_ITERS= UNNEST_AB_PROBE_SIZE= UNNEST_AB_PORT= UNNEST_AB_OUT=> UNNEST_AB_WARMUP_SELECTS=" @echo " make unnest-ab-perf-sentinel UNNEST_SENTINEL_RUNS= UNNEST_SENTINEL_BATCH_SIZE= UNNEST_SENTINEL_BATCHES= UNNEST_SENTINEL_SELECT_ITERS= UNNEST_SENTINEL_PROBE_SIZE= UNNEST_SENTINEL_PORT= UNNEST_SENTINEL_WARMUP_SELECTS= UNNEST_SENTINEL_ENFORCE_THRESHOLDS= UNNEST_SENTINEL_MIN_INSERT_RATIO= UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO= UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO=" @echo " make unnest-ab-perf-sentinel-cold-observe UNNEST_SENTINEL_RUNS= UNNEST_SENTINEL_BATCH_SIZE= UNNEST_SENTINEL_BATCHES= UNNEST_SENTINEL_SELECT_ITERS= UNNEST_SENTINEL_PROBE_SIZE= UNNEST_SENTINEL_PORT= ..." @echo " make unnest-ab-startup-sensitivity UNNEST_STARTUP_RUNS= UNNEST_STARTUP_BATCH_SIZE= UNNEST_STARTUP_BATCHES= UNNEST_STARTUP_SELECT_ITERS= UNNEST_STARTUP_PROBE_SIZE= UNNEST_STARTUP_PORT= UNNEST_STARTUP_PROBE_SCRIPT=" @echo " make unnest-ab-startup-sensitivity-guard UNNEST_STARTUP_RUNS= UNNEST_STARTUP_BATCH_SIZE= UNNEST_STARTUP_BATCHES= UNNEST_STARTUP_SELECT_ITERS= UNNEST_STARTUP_PROBE_SIZE= UNNEST_STARTUP_PORT= UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD= UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD= UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD= UNNEST_STARTUP_GUARD_PROBE_SCRIPT=" @echo " make unnest-ab-startup-sensitivity-sentinel UNNEST_STARTUP_RUNS= UNNEST_STARTUP_BATCH_SIZE= UNNEST_STARTUP_BATCHES= UNNEST_STARTUP_SELECT_ITERS= UNNEST_STARTUP_PROBE_SIZE= UNNEST_STARTUP_PORT= UNNEST_STARTUP_PROBE_SCRIPT= UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT=" @echo " make pg-core-regression-smoke" @echo " make unnest-ab-profile-boundary-history-summary UNNEST_AB_NIGHTLY_HISTORY_INPUT= UNNEST_AB_NIGHTLY_HISTORY_STRICT_MIN_OBS=" @echo " make unnest-ab-profile-boundary-history-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-gate UNNEST_AB_NIGHTLY_HISTORY_GATE_INPUT= UNNEST_AB_NIGHTLY_HISTORY_GATE_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_HISTORY_GATE_MIN_SAMPLES_TOTAL= UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE=<0..1>" @echo " make unnest-ab-profile-boundary-history-gate-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-derive-thresholds UNNEST_AB_NIGHTLY_HISTORY_DERIVE_INPUT= UNNEST_AB_NIGHTLY_HISTORY_DERIVE_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MAX_HEADROOM=<0..1> UNNEST_AB_NIGHTLY_HISTORY_DERIVE_MIN_FLOOR_MARGIN=<0..1>" @echo " make unnest-ab-profile-boundary-history-derive-thresholds-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-window-gate UNNEST_AB_NIGHTLY_OUT_ROOT= UNNEST_AB_NIGHTLY_BASE_PORT= UNNEST_AB_NIGHTLY_REPS= UNNEST_AB_NIGHTLY_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_WINDOW_RUNS= UNNEST_AB_NIGHTLY_WINDOW_MIN_SAMPLES_TOTAL= UNNEST_AB_NIGHTLY_HISTORY_GATE_BALANCED_MAX_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY40_MAX_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_BOUNDARY56_MIN_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_HISTORY_GATE_PRESSURE_MIN_STRICT_RATE=<0..1> UNNEST_AB_NIGHTLY_WINDOW_KEEP_ARTIFACTS= UNNEST_AB_NIGHTLY_WINDOW_SUMMARY_OUT=" @echo " make unnest-ab-profile-boundary-history-window-gate-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-policy-delta UNNEST_AB_NIGHTLY_POLICY_DELTA_INPUT= UNNEST_AB_NIGHTLY_POLICY_DELTA_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE=" @echo " make unnest-ab-profile-boundary-history-policy-delta-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-accumulate UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_INPUT= UNNEST_AB_NIGHTLY_HISTORY_ACCUMULATE_STRICT_MIN_OBS=" @echo " make unnest-ab-profile-boundary-history-accumulate-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-policy-review-window UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_WINDOW_FILES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_AGGREGATE_OUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_FROM_DATE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_TO_DATE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_TRUSTED= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_NOW_EPOCH= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_FRESHNESS_PRECHECKED= UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE=" @echo " make unnest-ab-profile-boundary-history-policy-review-window-trusted UNNEST_AB_NIGHTLY_POLICY_REVIEW_INPUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_NOW_EPOCH= UNNEST_AB_NIGHTLY_POLICY_REVIEW_STRICT_MIN_OBS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_WINDOW_FILES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_AGGREGATE_OUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_FROM_DATE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_TO_DATE= UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BALANCED_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY40_MAX=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_BOUNDARY56_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_CURRENT_PRESSURE_MIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MAX_HEADROOM=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_DERIVE_MIN_FLOOR_MARGIN=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_TOLERANCE=<0..1> UNNEST_AB_NIGHTLY_POLICY_DELTA_ENFORCE=" @echo " make unnest-ab-profile-boundary-history-policy-review-window-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-policy-review-prechecked-matrix-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-policy-review-trust-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-profile-boundary-history-policy-review-manifest UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_INPUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_OUT=" @echo " make unnest-ab-profile-boundary-history-policy-review-manifest-freshness UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_MAX_AGE_SECONDS=" @echo " make unnest-ab-profile-boundary-history-date-map-index UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_INPUT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_DATE_MAP_INDEX_OUT=" @echo " make unnest-ab-profile-boundary-history-date-map-benchmark UNNEST_AB_SELFTEST_TMP_ROOT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MAP_ENTRIES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_ITERATIONS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_MODE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_SAMPLES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_TIMER_MODE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_DISABLE_MS_BACKEND=<0|1>" @echo " make unnest-ab-profile-boundary-history-manifest-benchmark UNNEST_AB_SELFTEST_TMP_ROOT= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SUMMARY_FILES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_ITERATIONS= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_SAMPLES= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_TIMER_MODE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_MODE= UNNEST_AB_NIGHTLY_POLICY_REVIEW_MANIFEST_BENCH_STALE_PERCENT=<0..100> UNNEST_AB_NIGHTLY_POLICY_REVIEW_BENCH_DISABLE_MS_BACKEND=<0|1>" @echo " make unnest-ab-compare-median UNNEST_AB_REF_DIR= UNNEST_AB_NEW_DIR= UNNEST_AB_MIN_FRACTION=<0..1> UNNEST_AB_SET_STAT_MODE= UNNEST_AB_SET_MIN_SAMPLES=" @echo " make unnest-ab-compare-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-perf-sentinel-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-startup-sensitivity-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-startup-sensitivity-guard-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-startup-sensitivity-sentinel-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make pg-core-regression-smoke-selftest UNNEST_AB_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-gate UNNEST_GATE_REF_RUNS= UNNEST_GATE_NEW_RUNS= UNNEST_GATE_BATCH_SIZE= UNNEST_GATE_BATCHES= UNNEST_GATE_SELECT_ITERS= UNNEST_GATE_PROBE_SIZE= UNNEST_GATE_BASE_PORT= UNNEST_GATE_OUT_ROOT= UNNEST_GATE_MIN_FRACTION=<0..1> UNNEST_GATE_STAT_MODE= UNNEST_GATE_MIN_SAMPLES= UNNEST_GATE_EXISTING_REF_DIR= UNNEST_GATE_KEEP_NEW_DIR= UNNEST_GATE_ALLOW_OPTIMISTIC_TAIL=" @echo " make unnest-ab-gate-selftest UNNEST_GATE_SELFTEST_TMP_ROOT=" @echo " make unnest-ab-tuning-matrix UNNEST_TUNE_RUNS= UNNEST_TUNE_BATCH_SIZE= UNNEST_TUNE_BATCHES= UNNEST_TUNE_SELECT_ITERS= UNNEST_TUNE_PROBE_SIZE= UNNEST_TUNE_BASE_PORT= UNNEST_TUNE_OUT=> UNNEST_TUNE_PROBE_OUT_ROOT= UNNEST_TUNE_TRIGGER_LIST= UNNEST_TUNE_MIN_DISTINCT_LIST= UNNEST_TUNE_MAX_TIDS_LIST=" @echo " make tmp-clean TMP_CLEAN_ROOT= TMP_CLEAN_MIN_AGE_S=" @echo " make tmp-clean-selftest TMP_SELFTEST_ROOT=" @echo " make selftest-lightweight LIGHTWEIGHT_SELFTEST_TMP_ROOT= LIGHTWEIGHT_SELFTEST_FORMAT= LIGHTWEIGHT_SELFTEST_RUN_LABEL= LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN= LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S=" @echo " make workflow-path-filter-coverage-selftest" @echo " make workflow-files-guard-selftest" @echo " make lightweight-workflow-script-coverage-selftest" @echo " make selftest-script-baseline" @echo " make policy-lint" @echo " make test-concurrent TEST_CONCURRENT_PORT=" @echo " make test-crash-recovery TEST_CRASH_PORT=" @echo " make test-graphrag-crash TEST_GRAPHRAG_CRASH_PORT=" @echo " make test-graphrag-concurrent TEST_GRAPHRAG_CONCURRENT_PORT=" @echo " make test-toast TEST_TOAST_PORT=" @echo " make test-alter-table TEST_ALTER_PORT=" @echo " make test-partition-lock TEST_PARTITION_LOCK_PORT=" @echo " make bench-partitioned-sorted-hnsw BENCH_PART_HNSW_ROWS_PER_PARTITION= BENCH_PART_HNSW_PARTITIONS=" @echo " make test-graphrag-lifecycle TEST_GRAPHRAG_PORT=" @echo " make test-shared-scan-stats TEST_SHARED_STATS_PORT=" @echo " make test-graphrag-release TMP_SELFTEST_ROOT=" @echo " make test-release TMP_SELFTEST_ROOT=" @echo " make bench-large-vector-synthetic BENCH_LARGE_VECTOR_ROWS= BENCH_LARGE_VECTOR_QUERIES= BENCH_LARGE_VECTOR_DIM=" @echo " make bench-ann-matrix-offline-smoke BENCH_ANN_MATRIX_ROWS= BENCH_ANN_MATRIX_QUERIES= BENCH_ANN_MATRIX_DIM=" @echo " make bench-witness-bulk-load BENCH_WBA_BULK_ROWS= BENCH_WBA_BULK_TENANTS= BENCH_WBA_BULK_WINDOWS=" @echo " make test-graph-builder TEST_GRAPH_PORT=" @echo " make build-graph-bench-nomic VECTOR_BENCH_DSN='' VECTOR_GRAPH_TABLE= VECTOR_ENTRY_TABLE=" @echo " make build-hnsw-bench-nomic VECTOR_BENCH_DSN='' HNSW_SOURCE_TABLE= HNSW_PREFIX=" @echo " make bench-nomic-ann VECTOR_BENCH_DSN='' VECTOR_GRAPH_TABLE= VECTOR_ENTRY_TABLE=" @echo " make research-help" @echo " make bench BENCH_PORT= BENCH_SCALES=" @echo " make policy-lint-strict" @echo " make policy-safety-selftest UNNEST_AB_SELFTEST_TMP_ROOT= UNNEST_GATE_SELFTEST_TMP_ROOT=" @echo "" @echo "defaults:" @echo " PERF_RUNTIME_SELFTEST_PORT=$(PERF_RUNTIME_SELFTEST_PORT) PERF_RUNTIME_SELFTEST_ROWS=$(PERF_RUNTIME_SELFTEST_ROWS) PERF_RUNTIME_SELFTEST_ITERS=$(PERF_RUNTIME_SELFTEST_ITERS) PERF_RUNTIME_SELFTEST_CHURN_ROWS=$(PERF_RUNTIME_SELFTEST_CHURN_ROWS) PERF_RUNTIME_SELFTEST_CHURN_ITERS=$(PERF_RUNTIME_SELFTEST_CHURN_ITERS) PERF_RUNTIME_SELFTEST_HIGH_PORT=$(PERF_RUNTIME_SELFTEST_HIGH_PORT) PERF_RUNTIME_SELFTEST_HIGH_ROWS=$(PERF_RUNTIME_SELFTEST_HIGH_ROWS) PERF_RUNTIME_SELFTEST_HIGH_ITERS=$(PERF_RUNTIME_SELFTEST_HIGH_ITERS) PERF_RUNTIME_SELFTEST_HIGH_CHURN_ROWS=$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ROWS) PERF_RUNTIME_SELFTEST_HIGH_CHURN_ITERS=$(PERF_RUNTIME_SELFTEST_HIGH_CHURN_ITERS) RUNTIME_PROFILE_FORMAT=$(RUNTIME_PROFILE_FORMAT) RUNTIME_PROFILE_SCHEMA_VERSION=$(RUNTIME_PROFILE_SCHEMA_VERSION) PLANNER_SELFTEST_TMP_ROOT=$(PLANNER_SELFTEST_TMP_ROOT) TMP_SELFTEST_ROOT=$(TMP_SELFTEST_ROOT) LIGHTWEIGHT_SELFTEST_TMP_ROOT=$(LIGHTWEIGHT_SELFTEST_TMP_ROOT) LIGHTWEIGHT_SELFTEST_FORMAT=$(LIGHTWEIGHT_SELFTEST_FORMAT) LIGHTWEIGHT_SELFTEST_RUN_LABEL=$(LIGHTWEIGHT_SELFTEST_RUN_LABEL) LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN=$(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN) LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S=$(LIGHTWEIGHT_SELFTEST_AUTO_TMP_CLEAN_MIN_AGE_S) TMP_CLEAN_ROOT=$(TMP_CLEAN_ROOT) TMP_CLEAN_MIN_AGE_S=$(TMP_CLEAN_MIN_AGE_S)" @echo " PLANNER_PROBE_ROWS=$(PLANNER_PROBE_ROWS) PLANNER_PROBE_PORT=$(PLANNER_PROBE_PORT) PLANNER_PROBE_OUT=$(PLANNER_PROBE_OUT)" @echo " PLANNER_PROBE_LOG=$(PLANNER_PROBE_LOG) PLANNER_MIN_OFF_OVER_ON=$(PLANNER_MIN_OFF_OVER_ON) PLANNER_MIN_DEFAULT_INDEX_ROWS=$(PLANNER_MIN_DEFAULT_INDEX_ROWS) PLANNER_SUMMARY_FORMAT=$(PLANNER_SUMMARY_FORMAT) PLANNER_SUMMARY_OUT=$(PLANNER_SUMMARY_OUT)" @echo " PLANNER_REF_DIR=$(PLANNER_REF_DIR) PLANNER_NEW_DIR=$(PLANNER_NEW_DIR) PLANNER_MIN_FRACTION=$(PLANNER_MIN_FRACTION) PLANNER_SET_STAT_MODE=$(PLANNER_SET_STAT_MODE) PLANNER_SET_MIN_SAMPLES=$(PLANNER_SET_MIN_SAMPLES)" @echo " UNNEST_AB_RUNS=$(UNNEST_AB_RUNS) UNNEST_AB_BATCH_SIZE=$(UNNEST_AB_BATCH_SIZE) UNNEST_AB_BATCHES=$(UNNEST_AB_BATCHES) UNNEST_AB_SELECT_ITERS=$(UNNEST_AB_SELECT_ITERS) UNNEST_AB_PROBE_SIZE=$(UNNEST_AB_PROBE_SIZE) UNNEST_AB_PORT=$(UNNEST_AB_PORT) UNNEST_AB_OUT=$(UNNEST_AB_OUT) UNNEST_AB_WARMUP_SELECTS=$(UNNEST_AB_WARMUP_SELECTS) UNNEST_SENTINEL_RUNS=$(UNNEST_SENTINEL_RUNS) UNNEST_SENTINEL_BATCH_SIZE=$(UNNEST_SENTINEL_BATCH_SIZE) UNNEST_SENTINEL_BATCHES=$(UNNEST_SENTINEL_BATCHES) UNNEST_SENTINEL_SELECT_ITERS=$(UNNEST_SENTINEL_SELECT_ITERS) UNNEST_SENTINEL_PROBE_SIZE=$(UNNEST_SENTINEL_PROBE_SIZE) UNNEST_SENTINEL_PORT=$(UNNEST_SENTINEL_PORT) UNNEST_SENTINEL_WARMUP_SELECTS=$(UNNEST_SENTINEL_WARMUP_SELECTS) UNNEST_SENTINEL_ENFORCE_THRESHOLDS=$(UNNEST_SENTINEL_ENFORCE_THRESHOLDS) UNNEST_SENTINEL_MIN_INSERT_RATIO=$(UNNEST_SENTINEL_MIN_INSERT_RATIO) UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO=$(UNNEST_SENTINEL_MIN_JOIN_UNNEST_RATIO) UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO=$(UNNEST_SENTINEL_MIN_ANY_ARRAY_RATIO) UNNEST_AB_REF_DIR=$(UNNEST_AB_REF_DIR) UNNEST_AB_NEW_DIR=$(UNNEST_AB_NEW_DIR) UNNEST_AB_MIN_FRACTION=$(UNNEST_AB_MIN_FRACTION) UNNEST_AB_SET_STAT_MODE=$(UNNEST_AB_SET_STAT_MODE) UNNEST_AB_SET_MIN_SAMPLES=$(UNNEST_AB_SET_MIN_SAMPLES) UNNEST_AB_SELFTEST_TMP_ROOT=$(UNNEST_AB_SELFTEST_TMP_ROOT) UNNEST_GATE_REF_RUNS=$(UNNEST_GATE_REF_RUNS) UNNEST_GATE_NEW_RUNS=$(UNNEST_GATE_NEW_RUNS) UNNEST_GATE_BATCH_SIZE=$(UNNEST_GATE_BATCH_SIZE) UNNEST_GATE_BATCHES=$(UNNEST_GATE_BATCHES) UNNEST_GATE_SELECT_ITERS=$(UNNEST_GATE_SELECT_ITERS) UNNEST_GATE_PROBE_SIZE=$(UNNEST_GATE_PROBE_SIZE) UNNEST_GATE_BASE_PORT=$(UNNEST_GATE_BASE_PORT) UNNEST_GATE_OUT_ROOT=$(UNNEST_GATE_OUT_ROOT) UNNEST_GATE_MIN_FRACTION=$(UNNEST_GATE_MIN_FRACTION) UNNEST_GATE_STAT_MODE=$(UNNEST_GATE_STAT_MODE) UNNEST_GATE_MIN_SAMPLES=$(UNNEST_GATE_MIN_SAMPLES) UNNEST_GATE_EXISTING_REF_DIR=$(UNNEST_GATE_EXISTING_REF_DIR) UNNEST_GATE_SELFTEST_TMP_ROOT=$(UNNEST_GATE_SELFTEST_TMP_ROOT)" @echo " UNNEST_STARTUP_RUNS=$(UNNEST_STARTUP_RUNS) UNNEST_STARTUP_BATCH_SIZE=$(UNNEST_STARTUP_BATCH_SIZE) UNNEST_STARTUP_BATCHES=$(UNNEST_STARTUP_BATCHES) UNNEST_STARTUP_SELECT_ITERS=$(UNNEST_STARTUP_SELECT_ITERS) UNNEST_STARTUP_PROBE_SIZE=$(UNNEST_STARTUP_PROBE_SIZE) UNNEST_STARTUP_PORT=$(UNNEST_STARTUP_PORT) UNNEST_STARTUP_PROBE_SCRIPT=$(UNNEST_STARTUP_PROBE_SCRIPT) UNNEST_STARTUP_GUARD_PROBE_SCRIPT=$(UNNEST_STARTUP_GUARD_PROBE_SCRIPT) UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT=$(UNNEST_STARTUP_SENTINEL_PROBE_SCRIPT)" @echo " UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD=$(UNNEST_STARTUP_GUARD_MAX_INSERT_WARM_OVER_COLD) UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD=$(UNNEST_STARTUP_GUARD_MAX_JOIN_UNNEST_WARM_OVER_COLD) UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD=$(UNNEST_STARTUP_GUARD_MAX_ANY_ARRAY_WARM_OVER_COLD)" @echo " UNNEST_AB_NIGHTLY_OUT_ROOT=$(UNNEST_AB_NIGHTLY_OUT_ROOT) UNNEST_AB_NIGHTLY_BASE_PORT=$(UNNEST_AB_NIGHTLY_BASE_PORT) UNNEST_AB_NIGHTLY_REPS=$(UNNEST_AB_NIGHTLY_REPS) UNNEST_AB_NIGHTLY_STRICT_MIN_OBS=$(UNNEST_AB_NIGHTLY_STRICT_MIN_OBS) UNNEST_AB_NIGHTLY_KEEP_ARTIFACTS=$(UNNEST_AB_NIGHTLY_KEEP_ARTIFACTS) UNNEST_AB_NIGHTLY_BASELINE=$(UNNEST_AB_NIGHTLY_BASELINE)" @echo " UNNEST_TUNE_RUNS=$(UNNEST_TUNE_RUNS) UNNEST_TUNE_BATCH_SIZE=$(UNNEST_TUNE_BATCH_SIZE) UNNEST_TUNE_BATCHES=$(UNNEST_TUNE_BATCHES) UNNEST_TUNE_SELECT_ITERS=$(UNNEST_TUNE_SELECT_ITERS) UNNEST_TUNE_PROBE_SIZE=$(UNNEST_TUNE_PROBE_SIZE) UNNEST_TUNE_BASE_PORT=$(UNNEST_TUNE_BASE_PORT) UNNEST_TUNE_OUT=$(UNNEST_TUNE_OUT) UNNEST_TUNE_PROBE_OUT_ROOT=$(UNNEST_TUNE_PROBE_OUT_ROOT) UNNEST_TUNE_TRIGGER_LIST=$(UNNEST_TUNE_TRIGGER_LIST) UNNEST_TUNE_MIN_DISTINCT_LIST=$(UNNEST_TUNE_MIN_DISTINCT_LIST) UNNEST_TUNE_MAX_TIDS_LIST=$(UNNEST_TUNE_MAX_TIDS_LIST)"