Skip to content

Commit 307b9e9

Browse files
Pigbibiclaude
andcommitted
fix: regenerate internal_dependency_matrix.json from actual repo pins
Auto-generated from current pyproject.toml/requirements.txt files across all 19 repos. Replaces 11 stale entries with correct refs. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 589501d commit 307b9e9

10 files changed

Lines changed: 1466 additions & 85 deletions
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
"version": 1,
3+
"auto_merge_label": "auto-merge-ok",
4+
"human_review_label": "human-review-required",
5+
"monthly_marker_prefix": "<!-- codex-monthly-remediation:issue-",
6+
"blocked_path_patterns": [
7+
"(^|/)(\\.env|.*secret.*|.*credential.*|.*token.*|.*private.*|.*\\.pem|.*\\.key)$"
8+
],
9+
"risk_policy": {
10+
"low": {
11+
"prefixes": [
12+
"docs/",
13+
"tests/"
14+
],
15+
"exact": [
16+
"README.md",
17+
"README.zh-CN.md"
18+
],
19+
"reason": "docs/tests/readme-only changes"
20+
},
21+
"high": {
22+
"reason": "source code changes require review"
23+
}
24+
},
25+
"max_changed_files": 30,
26+
"max_changed_lines": 2000,
27+
"pr_review": {
28+
"enabled": true,
29+
"block_severities": [
30+
"critical",
31+
"high"
32+
],
33+
"skip_paths": [
34+
"docs/**",
35+
"**.md",
36+
"**.txt",
37+
"**.json",
38+
"**.csv",
39+
"LICENSE",
40+
".github/dependabot*"
41+
],
42+
"skip_risk_levels": [
43+
"low"
44+
],
45+
"timeout_minutes": 20,
46+
"max_diff_lines": 2400,
47+
"block_on_review_failure": false
48+
}
49+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Codex PR Review
2+
3+
# Always run on PRs to guarantee a check run exists for branch protection.
4+
# The Python script handles skip logic internally for trivial changes.
5+
on:
6+
pull_request:
7+
types: [opened, synchronize, reopened]
8+
9+
permissions:
10+
contents: read
11+
id-token: write
12+
issues: write
13+
pull-requests: write
14+
15+
concurrency:
16+
group: codex-pr-review-${{ github.event.pull_request.number }}
17+
cancel-in-progress: true
18+
19+
jobs:
20+
review:
21+
runs-on: ubuntu-latest
22+
timeout-minutes: 30
23+
env:
24+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
25+
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v6
29+
30+
- name: Set up Python
31+
uses: actions/setup-python@v6
32+
with:
33+
python-version: "3.11"
34+
35+
- name: Run Codex PR Review
36+
id: review
37+
env:
38+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
40+
ANTHROPIC_MODEL: ${{ vars.ANTHROPIC_MODEL || 'claude-sonnet-4-6' }}
41+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
42+
OPENAI_MODEL: ${{ vars.OPENAI_MODEL || 'gpt-5.4-mini' }}
43+
CODEX_AUDIT_SERVICE_URL: ${{ secrets.CODEX_AUDIT_SERVICE_URL }}
44+
CODEX_AUDIT_SERVICE_AUDIENCE: ${{ vars.CODEX_AUDIT_SERVICE_AUDIENCE || 'quant-codex-audit' }}
45+
run: python scripts/run_codex_pr_review.py
46+
47+
- name: Upload review diagnostics
48+
if: always()
49+
uses: actions/upload-artifact@v7
50+
with:
51+
name: codex-pr-review-${{ github.event.pull_request.number }}-${{ github.run_id }}
52+
path: data/output/codex_pr_review/
53+
if-no-files-found: warn
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Codex Review Gate
2+
3+
# Two-mode gate for the Codex GitHub App (chatgpt-codex-connector):
4+
#
5+
# 1. WAIT mode (PR opened/synchronized):
6+
# Creates a pending check → polls for Codex review up to N minutes.
7+
# If Codex responds → check reflects review state.
8+
# If Codex times out → check passes (don't block when App is broken).
9+
#
10+
# 2. REACT mode (Codex submits review):
11+
# Updates check instantly — CHANGES_REQUESTED → fail, APPROVED → pass.
12+
#
13+
# No API keys needed — reads the App's review via GitHub API.
14+
15+
on:
16+
pull_request:
17+
types: [opened, synchronize, reopened, ready_for_review]
18+
pull_request_review:
19+
types: [submitted]
20+
21+
permissions:
22+
contents: read
23+
pull-requests: read
24+
25+
concurrency:
26+
group: codex-review-gate-${{ github.event.pull_request.number }}
27+
cancel-in-progress: true
28+
29+
jobs:
30+
gate:
31+
if: >
32+
github.event_name == 'pull_request_review'
33+
&& github.event.review.user.login == 'chatgpt-codex-connector[bot]'
34+
|| github.event_name == 'pull_request'
35+
&& github.event.pull_request.draft == false
36+
37+
runs-on: ubuntu-latest
38+
timeout-minutes: 15
39+
env:
40+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
41+
CODEX_GATE_POLL_SECONDS: ${{ vars.CODEX_GATE_POLL_SECONDS || '30' }}
42+
CODEX_GATE_MAX_WAIT_MINUTES: ${{ vars.CODEX_GATE_MAX_WAIT_MINUTES || '5' }}
43+
44+
steps:
45+
- name: Checkout
46+
uses: actions/checkout@v6
47+
48+
- name: Set up Python
49+
uses: actions/setup-python@v6
50+
with:
51+
python-version: "3.11"
52+
53+
- name: Evaluate Codex Review Gate
54+
id: gate
55+
env:
56+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57+
run: python scripts/gate_codex_app_review.py
58+
59+
- name: Upload gate diagnostics
60+
if: always()
61+
uses: actions/upload-artifact@v7
62+
with:
63+
name: codex-review-gate-${{ github.event.pull_request.number || github.run_id }}
64+
path: data/output/codex_review_gate/
65+
if-no-files-found: warn
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Hide Codex Rate Limit Comments
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_review_comment:
7+
types: [created]
8+
9+
jobs:
10+
hide-comment:
11+
runs-on: ubuntu-latest
12+
if: >
13+
github.event.comment.user.login == 'chatgpt-codex-connector[bot]' &&
14+
(
15+
contains(github.event.comment.body, 'usage limit') ||
16+
contains(github.event.comment.body, 'rate limit') ||
17+
contains(github.event.comment.body, 'quota') ||
18+
contains(github.event.comment.body, 'limit reached') ||
19+
contains(github.event.comment.body, 'try again later')
20+
)
21+
permissions:
22+
issues: write
23+
pull-requests: write
24+
steps:
25+
- name: Minimize comment
26+
uses: actions/github-script@v8
27+
with:
28+
script: |
29+
const mutation = `
30+
mutation($id: ID!) {
31+
minimizeComment(input: {subjectId: $id, classifier: OFF_TOPIC}) {
32+
minimizedComment { isMinimized }
33+
}
34+
}
35+
`;
36+
await github.graphql(mutation, { id: context.payload.comment.node_id });
37+
console.log('Minimized codex rate-limit comment:', context.payload.comment.id);

internal_dependency_matrix.json

Lines changed: 22 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,18 @@
33
"dependencies": [
44
{
55
"consumer_repo": "BinancePlatform",
6-
"path": "requirements.txt",
7-
"package": "quant-platform-kit",
8-
"source_repo": "QuantPlatformKit",
9-
"ref": "e86554b"
10-
},
11-
{
12-
"consumer_repo": "BinancePlatform",
13-
"path": "requirements.txt",
6+
"path": "requirements-lock.txt",
147
"package": "crypto-strategies",
158
"source_repo": "CryptoStrategies",
169
"ref": "198027a0f7889e7411f97de3ed528aa90191e533"
1710
},
1811
{
1912
"consumer_repo": "BinancePlatform",
20-
"path": "requirements-lock.txt",
21-
"package": "quant-platform-kit",
22-
"source_repo": "QuantPlatformKit",
23-
"ref": "e86554b"
24-
},
25-
{
26-
"consumer_repo": "BinancePlatform",
27-
"path": "requirements-lock.txt",
13+
"path": "requirements.txt",
2814
"package": "crypto-strategies",
2915
"source_repo": "CryptoStrategies",
3016
"ref": "198027a0f7889e7411f97de3ed528aa90191e533"
3117
},
32-
{
33-
"consumer_repo": "CharlesSchwabPlatform",
34-
"path": "requirements.txt",
35-
"package": "quant-platform-kit",
36-
"source_repo": "QuantPlatformKit",
37-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
38-
},
3918
{
4019
"consumer_repo": "CharlesSchwabPlatform",
4120
"path": "requirements.txt",
@@ -44,18 +23,18 @@
4423
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
4524
},
4625
{
47-
"consumer_repo": "CryptoStrategies",
26+
"consumer_repo": "CnEquitySnapshotPipelines",
4827
"path": "pyproject.toml",
49-
"package": "quant-platform-kit",
50-
"source_repo": "QuantPlatformKit",
51-
"ref": "e86554b"
28+
"package": "cn-equity-strategies",
29+
"source_repo": "CnEquityStrategies",
30+
"ref": "357dba7e8896a7f488a484d4a3eea33894708ab9"
5231
},
5332
{
54-
"consumer_repo": "FirstradePlatform",
33+
"consumer_repo": "CnEquityStrategies",
5534
"path": "pyproject.toml",
5635
"package": "quant-platform-kit",
5736
"source_repo": "QuantPlatformKit",
58-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
37+
"ref": "d18fe32b57a0a8bb746bebf6f11465dd68107eae"
5938
},
6039
{
6140
"consumer_repo": "FirstradePlatform",
@@ -64,13 +43,6 @@
6443
"source_repo": "UsEquityStrategies",
6544
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
6645
},
67-
{
68-
"consumer_repo": "FirstradePlatform",
69-
"path": "requirements.txt",
70-
"package": "quant-platform-kit",
71-
"source_repo": "QuantPlatformKit",
72-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
73-
},
7446
{
7547
"consumer_repo": "FirstradePlatform",
7648
"path": "requirements.txt",
@@ -79,18 +51,18 @@
7951
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
8052
},
8153
{
82-
"consumer_repo": "HkEquityStrategies",
54+
"consumer_repo": "HkEquitySnapshotPipelines",
8355
"path": "pyproject.toml",
84-
"package": "quant-platform-kit",
85-
"source_repo": "QuantPlatformKit",
86-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
56+
"package": "hk-equity-strategies",
57+
"source_repo": "HkEquityStrategies",
58+
"ref": "dbbefb688cd144837aa59581b1930a14c11411ad"
8759
},
8860
{
8961
"consumer_repo": "InteractiveBrokersPlatform",
9062
"path": "requirements.txt",
91-
"package": "quant-platform-kit",
92-
"source_repo": "QuantPlatformKit",
93-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
63+
"package": "hk-equity-strategies",
64+
"source_repo": "HkEquityStrategies",
65+
"ref": "dbbefb688cd144837aa59581b1930a14c11411ad"
9466
},
9567
{
9668
"consumer_repo": "InteractiveBrokersPlatform",
@@ -100,7 +72,7 @@
10072
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
10173
},
10274
{
103-
"consumer_repo": "InteractiveBrokersPlatform",
75+
"consumer_repo": "LongBridgePlatform",
10476
"path": "requirements.txt",
10577
"package": "hk-equity-strategies",
10678
"source_repo": "HkEquityStrategies",
@@ -121,18 +93,11 @@
12193
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
12294
},
12395
{
124-
"consumer_repo": "LongBridgePlatform",
125-
"path": "requirements.txt",
126-
"package": "hk-equity-strategies",
127-
"source_repo": "HkEquityStrategies",
128-
"ref": "dbbefb688cd144837aa59581b1930a14c11411ad"
129-
},
130-
{
131-
"consumer_repo": "UsEquitySnapshotPipelines",
96+
"consumer_repo": "QmtPlatform",
13297
"path": "pyproject.toml",
133-
"package": "quant-platform-kit",
134-
"source_repo": "QuantPlatformKit",
135-
"ref": "7b6e3ce33e6563db4794fa7b865db9ec428dc478"
98+
"package": "cn-equity-strategies",
99+
"source_repo": "CnEquityStrategies",
100+
"ref": "357dba7e8896a7f488a484d4a3eea33894708ab9"
136101
},
137102
{
138103
"consumer_repo": "UsEquitySnapshotPipelines",
@@ -146,35 +111,7 @@
146111
"path": "pyproject.toml",
147112
"package": "us-equity-strategies",
148113
"source_repo": "UsEquityStrategies",
149-
"ref": "c7793bab6d63a434338bfcfd997a7ae9195dcddb"
150-
},
151-
{
152-
"consumer_repo": "UsEquityStrategies",
153-
"path": "pyproject.toml",
154-
"package": "quant-platform-kit",
155-
"source_repo": "QuantPlatformKit",
156-
"ref": "dfdbef6b58ab46f357d67800510bb9e8c4a01182"
157-
},
158-
{
159-
"consumer_repo": "QmtPlatform",
160-
"path": "pyproject.toml",
161-
"package": "quant-platform-kit",
162-
"source_repo": "QuantPlatformKit",
163-
"ref": "d18fe32b57a0a8bb746bebf6f11465dd68107eae"
164-
},
165-
{
166-
"consumer_repo": "QmtPlatform",
167-
"path": "pyproject.toml",
168-
"package": "cn-equity-strategies",
169-
"source_repo": "CnEquityStrategies",
170-
"ref": "de6c76033e9d8a83fd6a8a31a51ce98690bb4262"
171-
},
172-
{
173-
"consumer_repo": "CnEquitySnapshotPipelines",
174-
"path": "pyproject.toml",
175-
"package": "cn-equity-strategies",
176-
"source_repo": "CnEquityStrategies",
177-
"ref": "0440651539dad4bb79c21bb5b965e97daec837de"
114+
"ref": "a9546362a27abdfc9cd5184b30ca8d26fd774187"
178115
}
179116
]
180-
}
117+
}

0 commit comments

Comments
 (0)