Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
c464ebe
test(automation): add hourly NIM repair contract workflow
seonghobae Aug 5, 2026
2de9a0e
test(automation): require hourly bounded repair cadence
seonghobae Aug 5, 2026
8dbbe58
test(automation): require immutable scheduler source
seonghobae Aug 5, 2026
b02b4c9
test(automation): require NVIDIA NIM-only autofix boundary
seonghobae Aug 5, 2026
dcbe70f
fix(automation): enforce hourly NVIDIA NIM review repair
seonghobae Aug 5, 2026
2349543
docs(automation): record hourly NIM repair boundary
seonghobae Aug 5, 2026
63b5022
docs(changelog): record hourly NVIDIA NIM repair loop
seonghobae Aug 5, 2026
fa3b338
test(automation): require hourly clearfolio target by default
seonghobae Aug 5, 2026
41f2e2a
fix(automation): keep hourly scheduler target modular
seonghobae Aug 5, 2026
d10b57e
fix(automation): default hourly repair target to clearfolio
seonghobae Aug 5, 2026
f2eb154
test(automation): require modular clearfolio hourly caller
seonghobae Aug 5, 2026
f5836e4
refactor(automation): keep scheduler reusable behind product caller
seonghobae Aug 5, 2026
2daf2da
feat(automation): schedule clearfolio review repair hourly
seonghobae Aug 5, 2026
c8891d4
test(automation): cover active clearfolio scheduler caller
seonghobae Aug 5, 2026
112fd51
docs(automation): define modular clearfolio hourly caller
seonghobae Aug 5, 2026
c590e55
docs(changelog): record modular clearfolio heartbeat
seonghobae Aug 5, 2026
90074e6
test(automation): expose conflict autofix scope gap
seonghobae Aug 5, 2026
08ff6e0
docs(doctoring): record clearfolio scheduler caller boundary
seonghobae Aug 5, 2026
bc16ced
test(automation): track clearfolio caller doctoring
seonghobae Aug 5, 2026
94df8e3
test(automation): align hourly cadence with modular caller
seonghobae Aug 5, 2026
9512f8c
fix(automation): add conflict repair scope verifier
seonghobae Aug 5, 2026
0c3bf4c
test(automation): require job-scoped caller permissions
seonghobae Aug 5, 2026
c61083c
fix(automation): scope caller writes to scheduler job
seonghobae Aug 5, 2026
d441c36
test(automation): require conflict scope quality gate
seonghobae Aug 5, 2026
33e68f4
docs(automation): record job-scoped caller authority
seonghobae Aug 5, 2026
33fd551
docs(automation): define job-local scheduler permissions
seonghobae Aug 5, 2026
f2d58b7
ci(automation): repair conflict scope once
seonghobae Aug 5, 2026
f1b0ac4
refactor(automation): remove unreachable path bound branch
seonghobae Aug 5, 2026
c9dd236
test(automation): preserve conflict-scope red evidence
seonghobae Aug 5, 2026
8bb2e36
refactor(automation): remove unreachable JSON key branch
seonghobae Aug 5, 2026
ec40296
test(automation): complete conflict scope branch evidence
seonghobae Aug 5, 2026
0c40cbf
ci(automation): stage deterministic PR 782 repair helper
seonghobae Aug 5, 2026
4f036e4
ci(automation): repair PR 782 finalizer workflow
seonghobae Aug 5, 2026
f205cea
fix(automation): align one-shot conflict repair with final contract
seonghobae Aug 5, 2026
406d1f5
chore(ci): trigger bounded PR 782 repair
seonghobae Aug 5, 2026
65f7672
ci(automation): trigger verified PR 782 conflict-scope finalizer
seonghobae Aug 5, 2026
29d8bd5
ci: retrigger exact-head conflict-scope repair
seonghobae Aug 5, 2026
7316c5c
ci(automation): trigger exact-head conflict-scope repair
seonghobae Aug 5, 2026
a9a235a
ci(automation): finalize conflict scope repair exactly once
seonghobae Aug 5, 2026
aae2abf
ci(automation): retrigger bounded conflict-scope repair
seonghobae Aug 5, 2026
0c386d4
ci(automation): finalize PR 782 from branch push
seonghobae Aug 5, 2026
60f8cf4
ci(automation): finalize PR 782 on reopen
seonghobae Aug 5, 2026
31c2ed3
ci(automation): export exact PR 782 source
seonghobae Aug 5, 2026
548f382
ci(automation): harden conflict-scope finalizer
seonghobae Aug 5, 2026
25658c6
ci(automation): retrigger permanent conflict-scope repair
seonghobae Aug 5, 2026
ff9c94a
ci: finalize PR 782 conflict scope once
seonghobae Aug 5, 2026
5fd3ad0
test(automation): stage verified conflict-scope repair
seonghobae Aug 5, 2026
df61585
ci: apply verified conflict-scope repair
seonghobae Aug 5, 2026
0df85d2
ci(automation): apply verified PR 782 source artifact
seonghobae Aug 5, 2026
045d0e9
ci(automation): apply reviewed PR 782 conflict-scope repair
seonghobae Aug 5, 2026
5a919fb
ci(automation): retry reviewed PR 782 conflict-scope repair
seonghobae Aug 5, 2026
2977e0c
fix(automation): enforce conflict repair write scope
github-actions[bot] Aug 5, 2026
cd5d00c
chore(automation): remove completed PR 782 helpers
seonghobae Aug 5, 2026
a37e4a9
ci(review): publish PR 782 repair with workflow-capable token
seonghobae Aug 5, 2026
402caf2
chore(automation): remove verified PR 782 publisher
seonghobae Aug 5, 2026
b86cae4
ci: finalize PR 782 path canonicalization
seonghobae Aug 5, 2026
a1fe503
fix(automation): reject alternate conflict path spellings
github-actions[bot] Aug 5, 2026
4d69c58
ci: remove completed PR 782 repair workflow
seonghobae Aug 5, 2026
a9478aa
feat(automation): add Inkspan hourly review caller
seonghobae Aug 6, 2026
8e61271
docs(doctoring): record Inkspan hourly caller boundary
seonghobae Aug 6, 2026
be5ec37
test(automation): contract Inkspan hourly review caller
seonghobae Aug 6, 2026
3af8651
ci(automation): verify Inkspan hourly caller
seonghobae Aug 6, 2026
d5c4f41
docs(changelog): record Inkspan hourly repair caller
seonghobae Aug 6, 2026
2f16cca
fix(automation): keep Clearfolio caller schedule-only
seonghobae Aug 6, 2026
f7ed1f4
fix(automation): keep Inkspan caller schedule-only
seonghobae Aug 6, 2026
f4eb2eb
test(automation): require schedule-only product callers
seonghobae Aug 6, 2026
063631b
fix(automation): sync schedule-only prerequisite caller
seonghobae Aug 6, 2026
144a200
chore(automation): reconcile Inkspan caller with scheduler head
seonghobae Aug 6, 2026
68414ff
Merge branch 'main' into fix/hourly-nvidia-nim-review-repair-main
opencode-agent[bot] Aug 7, 2026
1f2e56e
chore(inkspan): reconcile scheduler prerequisite head
seonghobae Aug 7, 2026
b5dd43a
test(security): reject PATH-hijacked git in conflict scope
seonghobae Aug 7, 2026
93da6fd
fix(security): pin conflict-scope git executable
seonghobae Aug 7, 2026
3fbe70d
test(security): reject conflict-scope PATH hijacking
seonghobae Aug 7, 2026
978d0e4
ci(security): include conflict-scope Git boundary tests
seonghobae Aug 7, 2026
d9860ca
test(security): align trusted Git regressions with fixed path
seonghobae Aug 7, 2026
9444454
test(security): remove duplicate trusted Git regression file
seonghobae Aug 7, 2026
e5349cc
test(security): reject writable trusted Git binaries
seonghobae Aug 7, 2026
295ef81
fix(security): reject writable trusted Git binaries
seonghobae Aug 7, 2026
24d5004
test(security): fail closed on unsafe symlink targets
seonghobae Aug 7, 2026
6d0c75a
fix(security): constrain symlink referents to tracked files
seonghobae Aug 7, 2026
8fd295a
test(security): execute symlink target regressions
seonghobae Aug 7, 2026
f37f20c
test(security): cover symlink resolution failures
seonghobae Aug 7, 2026
ed69a29
test(security): assert conflict-scope errors redact sensitive detail
seonghobae Aug 7, 2026
f1c8efe
fix(automation): report unauthorized path changes before symlink vali…
seonghobae Aug 7, 2026
f2700ef
test(automation): keep retargeted symlink fixture valid
seonghobae Aug 7, 2026
22fbe43
test(autofix): fail closed on ignored worktree changes
seonghobae Aug 7, 2026
27ed963
test(autofix): execute ignored-path security regressions
seonghobae Aug 7, 2026
2ebf19d
fix(autofix): inventory ignored worktree paths
seonghobae Aug 7, 2026
e300a67
fix(autofix): preserve redacted symlink race handling
seonghobae Aug 7, 2026
48c995c
test(autofix): require ordinary write-scope isolation
seonghobae Aug 7, 2026
6db9713
test(autofix): pin privileged push destination
seonghobae Aug 7, 2026
3e12430
fix(autofix): enforce exact model write scope
seonghobae Aug 7, 2026
b68c85c
test(autofix): scope conflict ordering assertion
seonghobae Aug 7, 2026
3b0e3a9
test(autofix): require exact write-scope documentation
seonghobae Aug 7, 2026
3386cca
docs(autofix): record exact model write scope
seonghobae Aug 7, 2026
8081a18
docs(automation): explain exact repair write scope
seonghobae Aug 7, 2026
d83bfff
docs(changelog): record exact autofix publication boundary
seonghobae Aug 7, 2026
3b345d2
test(autofix): reject review-body allowlist injection
seonghobae Aug 7, 2026
1de55fd
docs(autofix): keep ignored-path contract explicit
seonghobae Aug 7, 2026
269d57c
fix(autofix): seal review path authorization
seonghobae Aug 7, 2026
e8073dc
test(autofix): fail closed on symlink scan errors
seonghobae Aug 7, 2026
a613a33
fix(autofix): fail closed on symlink scan errors
seonghobae Aug 7, 2026
d854268
fix(autofix): consume sealed path authorization
seonghobae Aug 7, 2026
14722c3
test(autofix): require sealed review-path authority
seonghobae Aug 7, 2026
edc59bd
fix(autofix): seal structured review path authority
seonghobae Aug 7, 2026
ad72d9c
fix(autofix): verify sealed allowed-path inventory
seonghobae Aug 7, 2026
a146c1a
test(autofix): require context helper quality evidence
seonghobae Aug 7, 2026
1f4858a
test(autofix): execute context quality gate contract
seonghobae Aug 7, 2026
3a725a7
Merge branch 'main' into fix/hourly-nvidia-nim-review-repair-main
opencode-agent[bot] Aug 7, 2026
74cb8a1
test(autofix): cover context authority in focused gate
seonghobae Aug 7, 2026
ba71e7a
fix(autofix): preserve context helper compatibility
seonghobae Aug 7, 2026
d1d7d44
test(autofix): cover context helper branches
seonghobae Aug 7, 2026
c7ccbfb
test(autofix): reject whitespace path normalization
seonghobae Aug 7, 2026
349236b
fix(autofix): reject whitespace path normalization
seonghobae Aug 7, 2026
5590c8b
test(autofix): require complete repository regression suite
seonghobae Aug 7, 2026
1ce6406
ci(autofix): run complete exact-head test suite
seonghobae Aug 7, 2026
e418e55
ci: repair hourly autofix push contract test
seonghobae Aug 7, 2026
3cb30a5
chore(automation): remove unauthorized one-shot branch writer
seonghobae Aug 7, 2026
34e8e30
ci: harden hourly scheduler token permissions
seonghobae Aug 7, 2026
1c13336
chore(automation): remove unauthorized one-shot branch writer
seonghobae Aug 7, 2026
7444580
test(autofix): require explicit revalidated push target
seonghobae Aug 7, 2026
4966d01
fix(automation): keep hourly caller token read-only
seonghobae Aug 7, 2026
57b57d4
fix(automation): keep scheduler GitHub token read-only
seonghobae Aug 7, 2026
b73e3f1
test(automation): require read-only scheduler token boundary
seonghobae Aug 7, 2026
254c698
fix(automation): restore reusable scheduler job permissions
seonghobae Aug 7, 2026
673f090
fix(automation): remove scheduler caller token elevation
seonghobae Aug 7, 2026
16b2db2
docs(automation): align Clearfolio caller credential boundary
seonghobae Aug 7, 2026
b921e26
docs(changelog): record read-only scheduler token boundary
seonghobae Aug 7, 2026
a4af64e
feat(automation): reconcile Inkspan hourly caller with current scheduler
seonghobae Aug 7, 2026
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: true

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 }}
103 changes: 103 additions & 0 deletions .github/workflows/hourly-nvidia-nim-review-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
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/inkspan-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_hourly_autofix_context_quality_gate.py
- tests/test_pr_review_conflict_scope.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_nvidia_nim_contract.py
- docs/automation/hourly-review-repair.md
- docs/doctoring/clearfolio-hourly-review-caller.md
- docs/doctoring/inkspan-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/inkspan-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_hourly_autofix_context_quality_gate.py
- tests/test_pr_review_conflict_scope.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_nvidia_nim_contract.py
- docs/automation/hourly-review-repair.md
- docs/doctoring/clearfolio-hourly-review-caller.md
- docs/doctoring/inkspan-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_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_nvidia_nim_contract.py
git diff --check
26 changes: 26 additions & 0 deletions .github/workflows/inkspan-hourly-review-repair.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Inkspan Hourly Review Repair

on:
schedule:
# Offset from other product heartbeats to reduce shared-runner congestion.
- cron: "37 * * * *"

concurrency:
group: inkspan-hourly-review-repair
cancel-in-progress: true

permissions:
contents: read

jobs:
dispatch-review-repair:
uses: ./.github/workflows/pr-review-fix-scheduler.yml
with:
target_repository: ContextualWisdomLab/inkspan
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 }}
Loading
Loading