Files
gavindiazandClaude Code 3a005ddcc6
Docs / Validate documentation (push) Canceled after 0s
Docs / Deploy GitHub Pages (push) Canceled after 0s
CI Final Summary (AI) / AI Final Summary (push) Canceled after 0s
CI Final Summary (AI) / Push/PR event feed (push) Canceled after 0s
CI / CI Integrity and Change Classification (push) Canceled after 0s
CI / Code Quality & Tests (push) Canceled after 0s
Dependency Lock & Migration Safety / Dependency drift (lock vs pyproject) (push) Canceled after 0s
Dependency Lock & Migration Safety / Migration safety (fail-loud + version postconditions) (push) Canceled after 0s
JS Tests / Frontend JS Unit Tests (push) Canceled after 0s
Security / CodeQL Analysis (push) Canceled after 0s
Security / Trivy Vulnerability Scan (push) Canceled after 0s
Tests (OS Matrix) / Py Tests (macos-latest) (push) Canceled after 0s
Tests (OS Matrix) / Py Tests (windows-latest) (push) Canceled after 0s
CI / Extended Validation (Tier 2) (push) Canceled after 0s
CI / Heavy CI (database-provider) (push) Canceled after 0s
CI / Heavy CI (e2e) (push) Canceled after 0s
CI / Heavy CI (integration) (push) Canceled after 0s
CI / Heavy CI (model-validation) (push) Canceled after 0s
CI / Heavy CI (research-backtest) (push) Canceled after 0s
CI / Aggregate CI Results (push) Canceled after 0s
chore(repo): initial import of Nexus Trading Forex Bot into self-hosted hosting
Full project import for the self-hosted code hosting
(https://code.aifunny.ltd/gavindiaz/my-NexusTradingForexBot.git).

Includes the live-freshness + scaler-hash fixes for the permanent
STALE dashboard (tick_pipeline now_utc stamps; infer_probabilities
computes model_input_hash on the actual scaled 70D tensor), the
data-fetch default-path fix, the g29 web-auth test fixes, and a
Chinese user manual (使用手册.md) for the web dashboard.

Scratch diagnostic scripts (check*.py, contain a live web-auth token)
and the .kilo/ agent-worktree directory are gitignored, not committed.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-23 23:24:54 +08:00

2.1 KiB

title, description, lang
title description lang
Quality & Testing How quality is enforced — the beforePush gate, test architecture, golden tests, and the no-fake-green rule. en

Quality & Testing

The quality gate

Every push passes beforePush.sh / beforePush.ps1 (5 stages):

  1. ruff check (lint)
  2. ruff format check
  3. mypy src
  4. CRITICAL suite pytest run (tests/critical_suite.txt, ~779 tests, RAM-aware xdist workers, coverage)
  5. Forensic deploy gate writing artifacts/forensics/deploy_gate_result.json

-FullSuite runs the whole ~1931-test unit corpus. CI mirrors the gate (.github/workflows/ci.yml) and adds CodeQL, Trivy, OSV, lockfile-diff and JS tests on separate workflows.

Test architecture

Suite Location Character
Unit tests/unit/ ~1900 tests; critical subset in critical_suite.txt
Integration tests/integration/ API + engine-level, run standalone/sequential in CI
Golden tests/golden/ + test_*_golden.py byte/behavior-identical extraction gates (decomposition safety)
CLI E2E test_cli_end_to_end.py 66 end-to-end CLI contracts incl. exit codes
Installer tests/installer/ stage protocol tests
JS tests/js/ Control Center syntax/behavior gates

Golden tests (decomposition safety)

Large hot-path modules are decomposed only behind golden tests written before extraction: the extracted seam must be behaviorally identical (e.g. OrderManager's state machine, protection ledger, recovery budget; reporting read-adapter golden JSON).

No fake green

  • A test that can't fail is deleted, not ignored silently.
  • Pre-existing failures are classified and owned — never absorbed into "passing" runs.
  • Exit codes are contracts (CLI_EXIT_CODES v1): 0 success · 1 runtime · 2 usage · 3 environment blocked · 4 release verification · 5 update.

Static anti-crash checks

scripts/ci/anti_crash_static.py scans for silent exception handlers (SILENT_HANDLER sites are ledgered as P1 findings, with an explicit inline allow marker + allowlist for legitimate migrations).