-
Notifications
You must be signed in to change notification settings - Fork 0
fix(automation): run hourly NVIDIA NIM review repair #782
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
c289ff3
fix(automation): schedule exact-head RCA and feasible repair loops
seonghobae 04aa2f9
fix(automation): cancel only superseded queue scans
seonghobae 3cd777c
docs(automation): clarify approval and scan concurrency
seonghobae 2ff4f77
test(automation): distinguish stale scans from active RCA
seonghobae 17bd5e4
test(automation): align queue scan supersession contract
seonghobae a30c045
test(automation): cover failed-check repair dispatch
seonghobae 60de3e6
fix(automation): validate repair dispatch authority
seonghobae 5845cb2
docs(automation): cite CWE-367 for hourly NIM repair
seonghobae 12b3aba
fix(automation): reject symlink parent of conflict root
seonghobae bb990cc
fix(coverage): accept only bounded relative requirement includes
seonghobae 000eabe
ci: add one-shot fast-mlsirm hourly caller repair
seonghobae 015ae4f
ci: repair fast-mlsirm hourly caller bootstrap
seonghobae aa788af
feat(automation): add fast-mlsirm hourly review repair caller
seonghobae 31abcd5
docs(automation): document fast-mlsirm hourly review repair
seonghobae 609a43c
test(automation): verify fast-mlsirm hourly review repair caller
seonghobae 56d34f5
test(automation): track fast-mlsirm hourly caller contracts
seonghobae cdc9ac6
docs(architecture): record fast-mlsirm repair heartbeat
seonghobae 415f8b0
docs(changelog): record fast-mlsirm hourly review repair
seonghobae 53db333
ci: remove completed fast-mlsirm caller bootstrap
seonghobae f84b1c7
test(automation): require scheduler source path coverage
seonghobae 51e6b2d
fix(automation): gate scheduler implementation changes
seonghobae File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| name: fast-mlsirm Hourly Review Repair | ||
|
|
||
| on: | ||
| schedule: | ||
| # Minute 49 avoids minute-zero pressure and the existing product callers. | ||
| - cron: "49 * * * *" | ||
|
|
||
| concurrency: | ||
| group: fast-mlsirm-hourly-review-repair | ||
| # Preserve bounded RCA when a later 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/fast-mlsirm | ||
| base_branch: main | ||
| max_prs: "50" | ||
| max_dispatches: "1" | ||
| # Central OpenCode/NVIDIA NIM review and psychometric CI can approach two hours. | ||
| retry_hours: "2" | ||
| secrets: | ||
| PR_REVIEW_MERGE_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN }} | ||
| OPENCODE_APPROVE_TOKEN: ${{ secrets.OPENCODE_APPROVE_TOKEN }} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,129 @@ | ||
| name: Hourly NVIDIA NIM Review Repair | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - .github/workflows/pr-review-fix-scheduler.yml | ||
| - scripts/ci/pr_review_fix_scheduler.py | ||
| - .github/workflows/pr-review-autofix.yml | ||
| - .github/workflows/clearfolio-hourly-review-repair.yml | ||
| - .github/workflows/disksage-hourly-review-repair.yml | ||
| - .github/workflows/fast-mlsirm-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_fast_mlsirm_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/fast-mlsirm-hourly-review-caller.md | ||
| - docs/doctoring/hourly-nvidia-nim-autofix.md | ||
| push: | ||
| paths: | ||
| - .github/workflows/pr-review-fix-scheduler.yml | ||
| - scripts/ci/pr_review_fix_scheduler.py | ||
| - .github/workflows/pr-review-autofix.yml | ||
| - .github/workflows/clearfolio-hourly-review-repair.yml | ||
| - .github/workflows/disksage-hourly-review-repair.yml | ||
| - .github/workflows/fast-mlsirm-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_fast_mlsirm_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/fast-mlsirm-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_fast_mlsirm_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 | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.