Skip to content

ci: schedule NVIDIA OpenCode maintenance agent - #121

Draft
seonghobae wants to merge 153 commits into
developfrom
ci/hourly-opencode-nvidia-nim
Draft

ci: schedule NVIDIA OpenCode maintenance agent#121
seonghobae wants to merge 153 commits into
developfrom
ci/hourly-opencode-nvidia-nim

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Purpose

Establish a least-privilege hourly OpenCode development loop using NVIDIA_NIM_API_KEY, literal-source CI/SBOM controls, deterministic publication jobs, exact-head review/check authorization, branch-wide writer protections, and a work-conserving RCA→feasibility→action→proof runtime contract.

Exact current identity

  • base branch / independently resolved live tip: develop@942d164ceb7af497bb28a95f842db96429d1bdc4;
  • branch: ci/hourly-opencode-nvidia-nim;
  • exact current source head: 69b39f5e26a32d99667bc0108a50de94d7bb4c0c;
  • current GitHub merge preview: 14c276286af1448638806e12d2127624c89580d6;
  • Draft / mergeable: false / true;
  • no requested reviewers or teams are currently recorded.

Every predecessor-head check, review, approval, thread conclusion, base snapshot or synthetic merge is historical and does not transfer.

Authority boundaries

  • maintain-repository checks out source and runs OpenCode with repository-read-only GitHub authority. It may inspect/test/create local commits but cannot publish a ref, create/update a pull request, authorize a run, approve, merge or release.
  • publish-agent-branch has the isolated job-scoped contents: write needed for one non-forced same-repository feature-ref publication. It receives no model credential and verifies bundle digest, exact predecessor/live base, ancestry, commit/file/path bounds, policy-file exclusion, Git integrity and post-write SHA.
  • publish-agent-pull-request alone has pull-requests: write, receives no model credential and may create or identify only one validated Draft PR.
  • authorize-exact-head-checks alone has actions: write, receives no model credential and may authorize only unchanged-head pull-request runs in waiting/action-required states. It cannot approve or merge.
  • the independent review-agent credential contract is unchanged; COPILOT_GITHUB_TOKEN is not a development-model credential.

Scorecard write-permission observations remain factually true where GitHub-native bounded publication/authorization requires them; resolved historical threads are compensating-control dispositions, not evidence that those capabilities disappeared.

Current literal-source evidence

All exposed workflow aggregates associated with exact current source 69b39f5e26a32d99667bc0108a50de94d7bb4c0c are terminal-success:

  • CI 31453761683;
  • Dependency Review 31453761704;
  • CycloneDX SBOM 31453761677;
  • SAST Semgrep 31453761678;
  • Security Scan 31453761681.

CI macOS job 93663255843 explicitly checked out and verified literal source 69b39f5e26a32d99667bc0108a50de94d7bb4c0c; Ubuntu and Windows jobs also report the exact-source checkout/verification steps as successful. The macOS full reactor completed BUILD SUCCESS, with 321 ETL tests, 111 CDC tests and 3 gateway tests green. JaCoCo analyzed 9 ETL classes rather than a zero-class bundle on this branch; this remains selected-scope evidence, not repository-wide 100% owned-production statement/branch coverage authority tracked by #205.

The conditional self-hosted job is skipped and is not positive evidence.

Current review state and valid remaining findings

There is no qualifying independent non-author formal APPROVED review on the exact current head. Current formal reviews are COMMENTED or older-head evidence.

Fresh review-thread validation on this exact head found still-current findings, including:

  • an error message in the remote-publication-candidate guard that says “Multiple” even when one unexpected remote candidate is sufficient to fail;
  • design/plan documentation that still describes the pre-split three-job/write-authority topology rather than the current four-job model-job-read-only plus publish-agent-branch topology;
  • HourlyOpenCodeIssuePermissionWorkflowTest scopes its maintenance-job substring through publish-agent-pull-request instead of stopping at publish-agent-branch, weakening the job-local permission assertion.

A current-head CodeRabbit review also identifies a structural test-hardening gap in HourlyOpenCodeRequiredWorkflowAuthorizationTest: the production workflow already selects runs by both exact head and PR number and records approval only after the successful approval POST, but the existing test verifies those fragments independently rather than structurally pinning their shared selection block and ordering. This is a preventive contract-test gap, not evidence that the current production authorization order is wrong.

Do not resolve any of these findings as addressed until the exact branch contains the corresponding repair and current evidence is rerun.

Stack and movement constraint

This PR is the live root predecessor for the repaired durable-job stack #143#148. Moving this head invalidates exact-predecessor ancestry and all downstream evidence until every affected boundary is repaired non-destructively. Therefore wording-only changes must not move #121. Issue #154 owns the later embedded-prompt alignment, and the remaining current review hardening should be batched only with an unavoidable #121 head movement that can also repair the downstream stack safely.

Non-passing merge gates

Keep the manual merge hold. Current aggregate-green checks are not sufficient merge authority because:

Queued, pending, skipped-required, neutral-required, absent, cancelled, failed, stale-head, predecessor-head, status-only, author-only and synthetic-only evidence remain non-passing for the gate they fail to prove.

Merge policy

Merge only on an unchanged exact head after every current CI/security/SBOM/provenance/dependency/coverage gate is accepted, every valid current finding is addressed, live-base/stack integrity is revalidated, and qualifying independent non-author formal exact-head approval exists. Never bypass protection, synthesize approval, weaken tests or scanner policy, reuse stale evidence, race a writer, or rewrite stack history.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9fde952f-5cc5-4e24-b255-025ce99ea90b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

PR 자동화, exact-head 소스 검증, OpenCode 유지보수, ETL 커버리지 정책, Jackson BOM 및 Docker 이미지 고정이 추가되었습니다.

시간별 OpenCode 유지보수

Layer / File(s) Summary
OpenCode 실행과 후보 게시
.github/workflows/hourly-opencode-maintenance.yml, docs/superpowers/..., docs/operations/...
고정된 OpenCode CLI와 NVIDIA 모델을 사용합니다. 후보 검증, 브랜치 게시, draft PR 생성 및 workflow 승인을 분리합니다.
유지보수 정책과 검증
AGENTS.md, docs/doctoring/*opencode*, etl-service/src/test/java/com/xtrmetl/etl/documentation/*OpenCode*Test.java
실행 가능성 분류, fail-closed 처리, 권한, 시크릿, 후보 선택 및 exact-head 조건을 검증합니다.

정확한 소스 및 PR 게이트

Layer / File(s) Summary
Exact-head 소스 체크아웃
.github/workflows/ci.yml, .github/workflows/sbom.yml, etl-service/src/test/java/com/xtrmetl/etl/documentation/*ExactHead*Test.java
CI와 SBOM 작업이 예상 SHA를 체크아웃하고 실제 HEAD와 일치하는지 검증합니다.
PR 판정 및 승인 게이트
.github/workflows/hourly-pr-disposition.yml, docs/hourly-pr-disposition.md, etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyPrDispositionWorkflowTest.java
리뷰어별 최신 판정을 계산합니다. 최신 CHANGES_REQUESTED를 차단하고 현재 head의 비작성자 승인을 요구합니다.

ETL 해시 및 커버리지 검증

Layer / File(s) Summary
SHA-256 공통 처리
etl-service/src/main/java/com/xtrmetl/etl/service/Sha256Digest.java, etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobService.java, etl-service/src/test/java/com/xtrmetl/etl/service/Sha256DigestTest.java
SHA-256 계산을 공통 유틸리티로 이동합니다. UTF-8, lowercase hexadecimal, null 및 알고리즘 오류를 검증합니다.
ETL 커버리지와 입력 경계
.github/workflows/ci.yml, etl-service/pom.xml, etl-service/src/test/java/com/xtrmetl/etl/job/*Test.java
JaCoCo class 파일 대상과 미커버리지 제한을 검증합니다. 잘못된 JSON, 레코드 ID 및 데이터베이스 접근 차단 경로를 테스트합니다.

의존성 및 이미지 보안

Layer / File(s) Summary
Jackson BOM 보안 버전
pom.xml, etl-service/src/test/java/com/xtrmetl/etl/documentation/Jackson*Test.java
Jackson BOM 버전을 2.21.5로 고정합니다. BOM 순서와 런타임 버전을 검증합니다.
컨테이너 이미지 digest 고정
Dockerfile, etl-service/src/test/java/com/xtrmetl/etl/documentation/ContainerImagePinningTest.java
외부 Docker 이미지를 SHA-256 digest로 고정하고 외부 FROM 참조를 검사합니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Scheduler
  participant OpenCodeCLI
  participant GitHubAPI
  Scheduler->>OpenCodeCLI: 고정된 CLI와 NVIDIA 모델로 유지보수 실행
  OpenCodeCLI->>GitHubAPI: PR 및 workflow 상태 조회
  Scheduler->>GitHubAPI: 검증된 후보 브랜치 게시
  Scheduler->>GitHubAPI: draft PR 생성 및 exact-head workflow 승인
Loading

Possibly related issues

  • ContextualWisdomLab/EgressWeave#65: 저장소에 쓰기 권한을 가진 hourly OpenCode publisher를 추가하는 변경과 직접 관련됩니다.
  • ContextualWisdomLab/four-pillars#28: hourly exact-head OpenCode 유지보수와 PR 판정 제어 흐름이 직접 연결됩니다.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 72.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 NVIDIA OpenCode 유지보수 에이전트의 예약 실행이라는 이 PR의 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/hourly-opencode-nvidia-nim

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae marked this pull request as ready for review August 4, 2026 12:39

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 3641d6070021d0eeb56907e0fbcdd839bc1534b9. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review for PR #121 at head 3641d6070021d0eeb56907e0fbcdd839bc1534b9. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 3641d6070021d0eeb56907e0fbcdd839bc1534b9. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 3641d6070021d0eeb56907e0fbcdd839bc1534b9. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyOpenCodeRequiredWorkflowAuthorizationTest.java (1)

30-48: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

필수 승인 계약의 결합과 순서를 구조적으로 검증하십시오.

현재 테스트는 각 문자열을 독립적으로 contains로 검사합니다. 따라서 PR 번호와 expected_head 조건이 서로 다른 jq 블록에 있거나, ledger 기록이 /approve 호출보다 먼저 있어도 통과합니다. 동일한 run_id 선택식에 두 조건이 함께 있는지 확인하고, 성공한 /approve 호출 뒤에만 ledger 기록이 실행되는지 순서를 검증하십시오. 수정 후 ./mvnw -B test를 실행하십시오.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyOpenCodeRequiredWorkflowAuthorizationTest.java`
around lines 30 - 48, Strengthen waitsForEveryRequiredExactHeadWorkflow() to
validate the approval contract structurally rather than through independent
contains checks: assert that the same run_id jq-selection block includes both
the PR-number match and .head_sha == $expected_head, and verify that ledger
recording occurs only after the successful /actions/runs/${run_id}/approve call.
Replace or supplement the fragmented assertions with ordering- and
block-specific checks, then run ./mvnw -B test.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In
`@etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyOpenCodeRequiredWorkflowAuthorizationTest.java`:
- Around line 30-48: Strengthen waitsForEveryRequiredExactHeadWorkflow() to
validate the approval contract structurally rather than through independent
contains checks: assert that the same run_id jq-selection block includes both
the PR-number match and .head_sha == $expected_head, and verify that ledger
recording occurs only after the successful /actions/runs/${run_id}/approve call.
Replace or supplement the fragmented assertions with ordering- and
block-specific checks, then run ./mvnw -B test.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 20ced1d6-6320-4f85-87a8-db49d1d67dc7

📥 Commits

Reviewing files that changed from the base of the PR and between 2a4053c and 69b39f5.

📒 Files selected for processing (4)
  • .github/workflows/hourly-opencode-maintenance.yml
  • etl-service/src/test/java/com/xtrmetl/etl/documentation/ContainerImagePinningTest.java
  • etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyOpenCodeProgressPolicyTest.java
  • etl-service/src/test/java/com/xtrmetl/etl/documentation/HourlyOpenCodeRequiredWorkflowAuthorizationTest.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/hourly-opencode-maintenance.yml

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #121 at head 69b39f5e26a32d99667bc0108a50de94d7bb4c0c. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent opencode-agent Bot added priority: medium Normal-priority or P2 work status: draft Draft pull request type: maintenance Maintenance, build, dependency, or operational upkeep labels Aug 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge-workflow maintenance manual-merge priority: medium Normal-priority or P2 work status: draft Draft pull request type: maintenance Maintenance, build, dependency, or operational upkeep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants