.PHONY: check test-fast test-sim test-sim-acceptance test-faults test-fault-profiles test-fault-campaign test-fault-chaos test-soak test-soak-reliability test-soak-extended test-soak-campaign test-personality security-gate \ bootstrap quality-report eval-dataset router-eval interruption-eval trace-eval trace-synth-eval autonomy-eval memory-eval memory-maintenance runtime-outcome-gate quality-trend-gate release-channel-check release-acceptance readiness check: uv run ruff check src tests uv run pytest -q test-fast: uv run pytest -q tests/test_config.py tests/test_memory.py tests/test_tools_robot.py tests/test_tools_services.py test-sim: ./scripts/test_sim.sh test-sim-acceptance: ./scripts/test_sim_acceptance.sh fast 1 test-faults: ./scripts/test_faults.sh test-fault-profiles: ./scripts/run_fault_profiles.sh all test-fault-campaign: ./scripts/test_fault_campaign.sh quick,network,storage,contract 2 test-fault-chaos: ./scripts/test_fault_chaos.sh quick,network,storage,contract 2 test-soak: ./scripts/test_soak.sh test-soak-reliability: ./scripts/test_soak_reliability.sh test-soak-extended: ./scripts/test_soak_extended.sh full test-soak-campaign: ./scripts/test_soak_campaign.sh full 2 test-personality: ./scripts/test_personality.sh security-gate: ./scripts/security_gate.sh bootstrap: ./scripts/bootstrap.sh quality-report: ./scripts/generate_quality_report.py --output-dir .artifacts/quality --markdown eval-dataset: ./scripts/run_eval_dataset.py docs/evals/assistant-contract.json --output .artifacts/quality/eval.json --strict --min-cases 250 --require-unique-ids --require-expected-tools router-eval: ./scripts/run_router_policy_eval.py docs/evals/router-policy-contract.json --output .artifacts/quality/router-eval.json --strict --min-cases 20 --require-unique-ids interruption-eval: ./scripts/run_interruption_route_eval.py docs/evals/interruption-route-contract.json --output .artifacts/quality/interruption-eval.json --strict --min-cases 20 --require-unique-ids trace-eval: ./scripts/run_trace_trajectory_eval.py docs/evals/trajectory-trace-contract.json --output .artifacts/quality/trace-eval.json --strict --min-cases 10 --require-unique-ids trace-synth-eval: ./scripts/synthesize_trace_eval_dataset.py .artifacts/quality/conversation-trace.json --output .artifacts/quality/trajectory-trace-generated.json --max-cases 200 --max-turns-per-case 12 autonomy-eval: ./scripts/run_autonomy_cycle_eval.py docs/evals/autonomy-cycle-contract.json --output .artifacts/quality/autonomy-eval.json --strict --min-cases 10 --require-unique-ids memory-eval: uv run python scripts/run_memory_quality_eval.py docs/evals/memory-quality-contract.json --output .artifacts/quality/memory-eval.json --strict --min-pass-rate 0.8 --max-failed 1 --min-cases 5 --require-unique-ids --llm-judge on --conflict-resolution on --min-avg-judge-score 0.7 memory-maintenance: uv run python scripts/run_memory_maintenance.py --scan-limit 600 --output .artifacts/quality/memory-maintenance.json runtime-outcome-gate: uv run python scripts/run_runtime_outcome_gate.py --output .artifacts/quality/runtime-outcome-gate.json --strict --min-pass-rate 1.0 --max-failed 0 quality-trend-gate: ./scripts/check_quality_trends.py release-channel-check: ./scripts/check_release_channel.py --channel stable release-acceptance: ./scripts/release_acceptance.sh fast readiness: ./scripts/jarvis_readiness.sh fast