Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/clearfolio-hourly-review-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Clearfolio Hourly Review Repair

on:
schedule:
# Offset the heartbeat from minute zero to reduce shared-runner congestion.
- cron: "23 * * * *"

concurrency:
group: clearfolio-hourly-review-repair
cancel-in-progress: false

permissions:
contents: read

jobs:
dispatch-review-repair:
uses: ./.github/workflows/pr-review-fix-scheduler.yml
with:
target_repository: ContextualWisdomLab/clearfolio
base_branch: main
max_prs: "50"
max_dispatches: "1"
retry_hours: "1"
secrets:
PR_REVIEW_MERGE_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN }}
OPENCODE_APPROVE_TOKEN: ${{ secrets.OPENCODE_APPROVE_TOKEN }}
31 changes: 31 additions & 0 deletions .github/workflows/disksage-hourly-review-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: DiskSage Hourly Review Repair

on:
schedule:
# Minute 37 avoids the minute-zero runner surge and the Clearfolio heartbeat.
- cron: "37 * * * *"

concurrency:
group: disksage-hourly-review-repair
# The queue scan is bounded and the worker has its own exact-head lease. Do not
# discard an in-flight RCA merely because the next hourly heartbeat arrives.
cancel-in-progress: false

permissions:
contents: read

jobs:
dispatch-review-repair:
uses: ./.github/workflows/pr-review-fix-scheduler.yml
with:
target_repository: ContextualWisdomLab/disksage
base_branch: main
max_prs: "50"
max_dispatches: "1"
# Central OpenCode/NVIDIA NIM work can legitimately approach two hours.
# A two-hour same-head floor avoids duplicate writers without freezing the
# next eligible PR or confusing provider latency with a source-code defect.
retry_hours: "2"
secrets:
PR_REVIEW_MERGE_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN }}
OPENCODE_APPROVE_TOKEN: ${{ secrets.OPENCODE_APPROVE_TOKEN }}
120 changes: 120 additions & 0 deletions .github/workflows/hourly-nvidia-nim-review-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Hourly NVIDIA NIM Review Repair

on:
pull_request:
paths:
- .github/workflows/pr-review-fix-scheduler.yml
- .github/workflows/pr-review-autofix.yml
- .github/workflows/clearfolio-hourly-review-repair.yml
- .github/workflows/disksage-hourly-review-repair.yml
- .github/workflows/hourly-nvidia-nim-review-repair.yml
- scripts/ci/pr_review_conflict_scope.py
- scripts/ci/pr_review_autofix_context.py
- tests/test_disksage_hourly_review_caller.py
- tests/test_hourly_scheduler_runtime_budget.py
- tests/test_hourly_autofix_context_quality_gate.py
- tests/test_pr_review_conflict_scope.py
- tests/test_pr_review_conflict_scope_control_files.py
- tests/test_pr_review_conflict_scope_git_executable.py
- tests/test_pr_review_conflict_scope_ignored_paths.py
- tests/test_pr_review_conflict_scope_symlink_targets.py
- tests/test_pr_review_fix_hourly_contract.py
- tests/test_pr_review_fix_scheduler.py
- tests/test_pr_review_fix_scheduler_source_pin.py
- tests/test_pr_review_autofix_context_head_binding.py
- tests/test_pr_review_autofix_nvidia_nim_contract.py
- tests/test_pr_review_autofix_writer_security_contract.py
- docs/automation/hourly-review-repair.md
- docs/doctoring/clearfolio-hourly-review-caller.md
- docs/doctoring/conflict-control-evidence-isolation.md
- docs/doctoring/disksage-hourly-review-caller.md
- docs/doctoring/hourly-nvidia-nim-autofix.md
push:
paths:
- .github/workflows/pr-review-fix-scheduler.yml
- .github/workflows/pr-review-autofix.yml
- .github/workflows/clearfolio-hourly-review-repair.yml
- .github/workflows/disksage-hourly-review-repair.yml
- .github/workflows/hourly-nvidia-nim-review-repair.yml
- scripts/ci/pr_review_conflict_scope.py
- scripts/ci/pr_review_autofix_context.py
- tests/test_disksage_hourly_review_caller.py
- tests/test_hourly_scheduler_runtime_budget.py
- tests/test_hourly_autofix_context_quality_gate.py
- tests/test_pr_review_conflict_scope.py
- tests/test_pr_review_conflict_scope_control_files.py
- tests/test_pr_review_conflict_scope_git_executable.py
- tests/test_pr_review_conflict_scope_ignored_paths.py
- tests/test_pr_review_conflict_scope_symlink_targets.py
- tests/test_pr_review_fix_hourly_contract.py
- tests/test_pr_review_fix_scheduler.py
- tests/test_pr_review_fix_scheduler_source_pin.py
- tests/test_pr_review_autofix_context_head_binding.py
- tests/test_pr_review_autofix_nvidia_nim_contract.py
- tests/test_pr_review_autofix_writer_security_contract.py
- docs/automation/hourly-review-repair.md
- docs/doctoring/clearfolio-hourly-review-caller.md
- docs/doctoring/conflict-control-evidence-isolation.md
- docs/doctoring/disksage-hourly-review-caller.md
- docs/doctoring/hourly-nvidia-nim-autofix.md

permissions:
contents: read

concurrency:
group: hourly-nvidia-nim-review-repair-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
contract:
name: Hourly cadence, immutable source, NIM credential, and conflict scope
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- name: Harden runner
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit
- name: Checkout exact source revision
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
- name: Install hash-locked test tooling
run: >-
python -m pip install --disable-pip-version-check --require-hashes
-r requirements-opencode-review-ci-hashes.txt
- name: Verify hourly scheduler and NVIDIA NIM autofix contracts
run: |
set -euo pipefail
python -m pytest -q \
--cov=scripts.ci.pr_review_conflict_scope \
--cov=scripts.ci.pr_review_autofix_context \
--cov-branch \
--cov-fail-under=100
python -m interrogate \
--fail-under 100 \
scripts/ci/pr_review_conflict_scope.py \
scripts/ci/pr_review_autofix_context.py
python -m compileall -q \
scripts/ci/pr_review_conflict_scope.py \
scripts/ci/pr_review_autofix_context.py \
tests/test_pr_review_conflict_scope.py \
tests/test_disksage_hourly_review_caller.py \
tests/test_hourly_scheduler_runtime_budget.py \
tests/test_pr_review_conflict_scope_control_files.py \
tests/test_hourly_autofix_context_quality_gate.py \
tests/test_pr_review_conflict_scope_git_executable.py \
tests/test_pr_review_conflict_scope_ignored_paths.py \
tests/test_pr_review_conflict_scope_symlink_targets.py \
tests/test_pr_review_fix_hourly_contract.py \
tests/test_pr_review_fix_scheduler.py \
tests/test_pr_review_fix_scheduler_source_pin.py \
tests/test_pr_review_autofix_context_head_binding.py \
tests/test_pr_review_autofix_nvidia_nim_contract.py \
tests/test_pr_review_autofix_writer_security_contract.py
git diff --check
Loading
Loading