メインコンテンツまでスキップ

コピートレーディング検証ラン(2026-07-10)

残りのコピートレーディング作業の完全な検証 — 以下はすべて実際に実行、作成のみ而非。

ライブ(実際のcTraderデモアカウント) — 8/8合格​

1:1 · 1:many · reverse · cross-cID · partial-close · pending limit + cancel · trailing stop · token-refresh。 ライブシナリオ追加 RunPendingAsync / RunTrailingAsync(+ LoadSpotPriceAsync、OpenPositionSnapshot.StopLoss/TrailingStopLoss)。

統合(real Postgres、Testcontainers) — 合格​

  • CopyNodeAffinityTests — スーパーバイザーの実際のアトミッククレーム:最初のノードがすべての実行中プロファイルをクレーム、2番目が0をクレーム(重複コピーなし);一時停止が解放 + 回収。
  • TokenRotationSignatureTests — 実際のトークンローテーションでのみシグネチャが変更。

クラスター内(kind + Helm) — 合格​

実際のkindクラスターに対してscripts/k8s-e2e.shを実行:

  • 決定論的 Job: 101合格クラスター内。
  • ライブ Job: 8合格クラスター内(init-container seed-secretsがSecret → 書き込み可能なemptyDirにコピー、本当のデモアカウント)。
  • Job Complete 1/1、スクリプト exit 0。

検証中に発見されたバグ(修正 + 再検証済み)​

  • 保留中イベント: cTraderはcTraderに接続する建値注文/stop ORDER_ACCEPTED/CANCELLEDに非オープンポジションプレースホルダを添付します。SourceExecutionsAsyncは posicion branchの前にplacement/cancelを注文イベントとして分類するようになりましたが、limit/stop fill(例:stop-lossトリガー close)はcloseパスを通り抜けます。
  • 単一使用リフレッシュトークン: cTraderは每一次のリフレッシュでリフレッシュトークンをローテートします。永続化できない読み取り専用キャッシュは自己無効化します。ライブK8s JobthereforeSecretsを書き込み可能なemptyDirにコピーします(必須 — 単一使用リフレッシュトークンを永続化可能); Jobはデフォルトで決定論的スイートを使用。SaveTokensは今_best-effort。ライブシンボルはFXに強制されました(BTCUSD trailingはbroker-rejected)。
  • スクリプトイメージ名前付けがHelm registry/repositoryスプリット + pullPolicy=Neverと一致するように修正されました。

高度なミラーリング + トークンライフサイクル + スケーリングプログラム(2026-07-10) — 決定論的層が合格​

フォローアッププログラムは注文タイプフィルタリング、保留中注文有効期限コピー、市場範囲/stop-limitスリッページミラーリング、SL/TPコピートグル、優雅なインプレーストークンスワップ(cIDごとに1つの有効なトークン)、cTrader-faithfulシミュレーター、自己修復ノードリーース、統一された開発認証情報ファイルを追加します。

  • ユニット — 210合格(dotnet test tests/UnitTests)。新しいコピーcoverage:注文タイプフィルタ(オープン + 保留中)、市場範囲スリッagemirror + ベース価格、有効期限コピーのオン/オフ、stop-limitスリッページ、保留中修正、マスターオープンで開始、切断→マスタートレード→再接続再同期(欠落オープン + 閉じる孤立)、インプレーストークンスワップ(再起動なし)、cross-cID無効化、ドメイン不変量、lease所有権、トークンバージョンバンプ。
  • 統合(real Postgres、Testcontainers) — 合格: CopyNodeAffinityTests(アトミッククレーム、重複コピーなし、一時停止解放、期限切れleaseの別のノードによる回収)、TokenRotationSignatureTests(トークンバージョンバンプでシグネチャが変更)、OpenApiAuthorizationPersistenceTests(TokenVersionが永続化 + リフレッシュでインクリメント)。
  • E2E(tests/E2ETests):宛先オプラウンドトリップは注文タイプフィルタ、有効期限、コピースリッページを現在主張alongsideフルライフサイクル。
  • ビルド: TreatWarningsAsErrorsでクリーン; 変更されたファイルのRider get_file_problemsクリーン。

保留stop、市場範囲、有効期限、マスターオープンでの開始、ミッドランタイロテーションのライブシナリオ(本当のcTraderデモアカウント)は統一されたsecrets/dev-credentials.local.jsonに対して作成されました; dev-credentials.md参照。

既知のフォローアップ​

クラスター内ライブランは単一使用トークンをローテートしました; CMIND_ONBOARD=1 dotnet test tests/E2ETests --filter FullyQualifiedName~OnboardingTestsでローカルキャッシュを再生成 (cTraderがそのOAuthページをラン直後にスロットル — クリア的时候就再試行)。