Skip to content

Commit 61b0b2b

Browse files
authored
Merge pull request #189 from QuantStrategyLab/codex/g17-disabled-runtime-monitoring-20260902
Harden disabled runtime monitoring
2 parents 942fade + e16f32e commit 61b0b2b

4 files changed

Lines changed: 37 additions & 0 deletions

File tree

‎.github/workflows/runtime-heartbeat.yml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ jobs:
4545
- name: Checkout repository
4646
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
4747

48+
- name: Install locked dependencies
49+
run: |
50+
set -euo pipefail
51+
python -m pip install --upgrade pip uv
52+
uv sync --frozen --no-dev
53+
4854
- name: Check recent Runtime workflow success
4955
env:
5056
TG_TOKEN: ${{ secrets.TG_TOKEN }}

‎.github/workflows/watchdog.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ env:
1313
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
1414
GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }}
1515
GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT: ${{ vars.GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT }}
16+
RUNTIME_TARGET_ENABLED: ${{ vars.RUNTIME_TARGET_ENABLED || 'false' }}
1617
WATCHDOG_MAX_AGE_SECONDS: ${{ vars.WATCHDOG_MAX_AGE_SECONDS || '4500' }}
1718

1819
jobs:
1920
check:
21+
if: ${{ vars.RUNTIME_TARGET_ENABLED == 'true' }}
2022
runs-on: ubuntu-latest
2123
timeout-minutes: 10
2224
steps:

‎tests/test_runtime_workflow_security.py‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,19 @@ def test_heartbeat_secrets_are_only_available_to_check_step() -> None:
7070
assert "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}" in check_step
7171

7272

73+
def test_heartbeat_installs_locked_dependencies_before_importing_qpk() -> None:
74+
workflow = HEARTBEAT_WORKFLOW.read_text(encoding="utf-8")
75+
76+
checkout = workflow.index(" - name: Checkout repository")
77+
install = workflow.index(" - name: Install locked dependencies")
78+
check = workflow.index(" - name: Check recent Runtime workflow success")
79+
80+
assert checkout < install < check
81+
install_step = workflow[install:check]
82+
assert "python -m pip install --upgrade pip uv" in install_step
83+
assert "uv sync --frozen --no-dev" in install_step
84+
85+
7386
def test_lifecycle_workflow_is_read_only_and_uses_pinned_actions() -> None:
7487
workflow = LIFECYCLE_WORKFLOW.read_text(encoding="utf-8")
7588
action_lines = [line.strip() for line in workflow.splitlines() if "uses:" in line]

‎tests/test_watchdog_workflow.py‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ def _preflight_script(workflow_text: str) -> str:
4545
return "\n".join(lines)
4646

4747

48+
def _job_block(workflow_text: str, job: str) -> str:
49+
start = workflow_text.index(f" {job}:\n")
50+
return workflow_text[start:]
51+
52+
4853
def _run_preflight(script: str, values: dict[str, str]) -> subprocess.CompletedProcess[str]:
4954
env = {"PATH": os.environ.get("PATH", "")}
5055
env.update(values)
@@ -106,6 +111,17 @@ def test_watchdog_uses_repository_variables_before_remote_actions(self) -> None:
106111
self.assertIn("service_account: ${{ env.GCP_WORKLOAD_IDENTITY_SERVICE_ACCOUNT }}", text)
107112
self.assertIn("WATCHDOG_MAX_AGE_SECONDS: ${{ vars.WATCHDOG_MAX_AGE_SECONDS || '4500' }}", text)
108113

114+
def test_watchdog_skips_entire_job_when_runtime_target_is_not_explicitly_enabled(self) -> None:
115+
text = self.workflow_text
116+
job = _job_block(text, "check")
117+
118+
self.assertIn("RUNTIME_TARGET_ENABLED: ${{ vars.RUNTIME_TARGET_ENABLED || 'false' }}", text)
119+
self.assertIn("if: ${{ vars.RUNTIME_TARGET_ENABLED == 'true' }}", job)
120+
self.assertLess(
121+
job.index("if: ${{ vars.RUNTIME_TARGET_ENABLED == 'true' }}"),
122+
job.index("runs-on: ubuntu-latest"),
123+
)
124+
109125
def test_oidc_identity_digest_is_fixed_and_shared(self) -> None:
110126
scripts = (
111127
_preflight_script(RUNTIME_WORKFLOW.read_text(encoding="utf-8")),

0 commit comments

Comments
 (0)