#!/usr/bin/env bash # Run a smoke test on L40S via Argo Workflows — no profiler, no sanitizer. # # Use this when you want to validate that a smoke test passes against the # full training-data PVC (27 months of OHLCV + MBP-10 + trades) without # nsys profile overhead or sanitizer instrumentation. Iteration cycle is # faster than argo-nsys.sh / argo-sanitizer.sh because there's no artefact # upload step. # # Why L40S not local: the laptop has only 1 quarter of MBP-10/trades data, # which truncates the fxcache below the 10-month minimum that the # multi_fold_convergence smoke needs. # # Usage: # ./scripts/argo-smoke.sh # multi_fold_convergence (default) # ./scripts/argo-smoke.sh --test magnitude_distribution # different test # ./scripts/argo-smoke.sh --ref # specific commit # ./scripts/argo-smoke.sh --watch # follow logs # # Requires: argo CLI set -euo pipefail TEST_NAME="multi_fold_convergence::test_multi_fold_convergence" COMMIT_REF="HEAD" GPU_POOL="" WATCH=false CLEAN_CACHE="false" usage() { cat < Smoke test name (default: $TEST_NAME) Common values: multi_fold_convergence::test_multi_fold_convergence magnitude_distribution::test_magnitude_distribution performance::test_real_data_single_epoch iqn_quantile_monotonicity::iqn_multi_quantile_heads_produce_monotonic_estimates --multi-fold Shortcut: --test multi_fold_convergence::test_multi_fold_convergence (default — exercises fold-boundary code paths) --ref Git ref to test (default: HEAD) --gpu-pool GPU node pool (default: ci-training-l40s) --clean-cache Wipe ml + ml-dqn artefacts before compile (force fresh compile; deps stay cached). Use to rule out build-cache contamination during bisect. --watch Follow workflow logs -h, --help Show this help EOF exit 0 } while [[ $# -gt 0 ]]; do case $1 in --test) TEST_NAME="$2"; shift 2 ;; --multi-fold) TEST_NAME="multi_fold_convergence::test_multi_fold_convergence"; shift ;; --ref) COMMIT_REF="$2"; shift 2 ;; --gpu-pool) GPU_POOL="$2"; shift 2 ;; --clean-cache) CLEAN_CACHE="true"; shift ;; --watch) WATCH=true; shift ;; -h|--help) usage ;; *) echo "Unknown option: $1"; usage ;; esac done if [ "$COMMIT_REF" = "HEAD" ]; then COMMIT_REF=$(git rev-parse HEAD) fi CMD="argo submit -n foxhunt --from=wftmpl/smoke-test" CMD="$CMD -p commit-ref=$COMMIT_REF" CMD="$CMD -p test-name=$TEST_NAME" CMD="$CMD -p clean-cache=$CLEAN_CACHE" [[ -n "$GPU_POOL" ]] && CMD="$CMD -p gpu-pool=$GPU_POOL" if $WATCH; then CMD="$CMD --watch" fi echo "Submitting smoke workflow..." echo " commit: $(echo "$COMMIT_REF" | cut -c1-8)" echo " test: $TEST_NAME" [[ "$CLEAN_CACHE" = "true" ]] && echo " clean: ml + ml-dqn target wipe before compile" echo "" eval "$CMD"