diff --git a/.github/workflows/codex_pr_review.yml b/.github/workflows/codex_pr_review.yml index 24204d3..99c27af 100644 --- a/.github/workflows/codex_pr_review.yml +++ b/.github/workflows/codex_pr_review.yml @@ -23,7 +23,8 @@ jobs: allow_unconfigured_backend: false api_fallback_enabled: "false" direct_api_primary_enabled: "false" - secrets: inherit + secrets: + CODEX_AUDIT_SERVICE_URL: ${{ secrets.CODEX_AUDIT_SERVICE_URL }} permissions: contents: read id-token: write diff --git a/.github/workflows/codex_review_gate.yml b/.github/workflows/codex_review_gate.yml index 9140a31..ebd68da 100644 --- a/.github/workflows/codex_review_gate.yml +++ b/.github/workflows/codex_review_gate.yml @@ -23,7 +23,7 @@ permissions: pull-requests: read concurrency: - group: codex-review-gate-${{ github.event.pull_request.number }} + group: codex-review-gate-${{ github.event.pull_request.number }}-${{ github.event_name }} cancel-in-progress: true jobs: diff --git a/internal_dependency_matrix.json b/internal_dependency_matrix.json index 6605f4c..63ad5e1 100644 --- a/internal_dependency_matrix.json +++ b/internal_dependency_matrix.json @@ -13,7 +13,7 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "BinancePlatform", @@ -27,14 +27,14 @@ "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CharlesSchwabPlatform", "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CharlesSchwabPlatform", @@ -48,7 +48,7 @@ "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CharlesSchwabPlatform", @@ -76,14 +76,14 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CnEquityStrategies", "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CryptoLivePoolPipelines", @@ -118,21 +118,21 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "CryptoStrategies", "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "FirstradePlatform", "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "FirstradePlatform", @@ -146,7 +146,7 @@ "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "FirstradePlatform", @@ -174,14 +174,14 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "HkEquityStrategies", "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "InteractiveBrokersPlatform", @@ -195,7 +195,7 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "InteractiveBrokersPlatform", @@ -216,7 +216,7 @@ "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "InteractiveBrokersPlatform", @@ -237,7 +237,7 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "LongBridgePlatform", @@ -258,7 +258,7 @@ "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "LongBridgePlatform", @@ -342,14 +342,14 @@ "path": "pyproject.toml", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" }, { "consumer_repo": "UsEquityStrategies", "path": "uv.lock", "package": "quant-platform-kit", "source_repo": "QuantPlatformKit", - "ref": "69a0256934d081b5ef309a885384b9eb9f62cf90" + "ref": "2381aa4577e9fd6329053a73a1c888929170eaf3" } ] } diff --git a/python/tests/test_internal_dependency_matrix.py b/python/tests/test_internal_dependency_matrix.py index 32466e2..4992feb 100644 --- a/python/tests/test_internal_dependency_matrix.py +++ b/python/tests/test_internal_dependency_matrix.py @@ -99,6 +99,29 @@ def test_current_matrix_matches_local_workspace(self): self.assertEqual(report.missing_files, []) self.assertEqual(report.issues, []) + def test_qpk_rollout_consumers_use_canonical_pin(self): + canonical_pin = "2381aa4577e9fd6329053a73a1c888929170eaf3" + rollout_consumers = { + "BinancePlatform", + "CharlesSchwabPlatform", + "CnEquityStrategies", + "CryptoStrategies", + "FirstradePlatform", + "HkEquityStrategies", + "InteractiveBrokersPlatform", + "LongBridgePlatform", + "UsEquityStrategies", + } + matrix_pins = check_internal_dependency_matrix.load_matrix(ROOT / "internal_dependency_matrix.json") + refs = { + (pin.consumer_repo, pin.path): pin.ref + for pin in matrix_pins + if pin.consumer_repo in rollout_consumers and pin.source_repo == "QuantPlatformKit" + } + + self.assertEqual(len(refs), len(rollout_consumers) * 2) + self.assertEqual(set(refs.values()), {canonical_pin}) + def test_require_consumer_files_treats_missing_paths_as_issues(self): projects_root = self._make_projects_root({}) expected = [