fix(agent): verify explicit model catalog and Compose runtime - #133
Conversation
|
Warning Review limit reached
Next review available in: 54 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughOpenCode 실행에 명시적 NVIDIA 모델과 오프라인 카탈로그 검증을 추가했습니다. Compose 검증을 신뢰된 별도 단계로 분리했습니다. PR CI는 고정 이미지로 PostgreSQL과 NATS를 점검하고, 각 검증 결과를 영수증에 기록합니다. ChangesOpenCode 검증 및 CI
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant OpenCodeWorkflow
participant NVIDIAModelCatalog
participant CredentialBridge
participant TrustedComposeValidation
participant PostgreSQL
participant NATS
OpenCodeWorkflow->>NVIDIAModelCatalog: 명시적 모델 카탈로그 검증
NVIDIAModelCatalog-->>OpenCodeWorkflow: 검증 결과 반환
OpenCodeWorkflow->>CredentialBridge: 성공 시 credential bridge 시작
TrustedComposeValidation->>PostgreSQL: 컨테이너 기동 및 쿼리 점검
TrustedComposeValidation->>NATS: 모니터링 엔드포인트 점검
TrustedComposeValidation-->>OpenCodeWorkflow: Compose 검증 결과 반환
OpenCodeWorkflow->>OpenCodeWorkflow: 영수증 상태 기록
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
|
@opencode-agent Repair PR #133 on exact head Fix the root cause without suppressing AppGuardrail or weakening the real OpenCode probe: construct a deterministic non-secret loopback probe value at runtime from separate trusted fragments (or another scanner-safe deterministic composition), reuse that variable for both OpenCode config Run the focused workflow-contract test, commercial-development-agent suite/coverage as appropriate, root formatting, and AppGuardrail-compatible static verification. Before committing, verify the branch is still exactly the expected head; if it moved, stop rather than overwriting concurrent work. Commit only the bounded causal repair to this branch and report the resulting exact head/evidence. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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.
Inline comments:
In `@packages/commercial-development-agent/src/workflow-contract.test.mjs`:
- Around line 228-260: Update the test setup around the `config` JSON and
`spawnSync` invocation to write the generated configuration to the
`$MODEL_HOME/opencode.json` location used by the operational `OPENCODE_CONFIG`
path, then invoke the CLI through that file-based configuration instead of
`OPENCODE_CONFIG_CONTENT`. Explicitly assert the generated `loopbackProbeValue`
is non-empty and reuse that exact value for both
`provider.nvidia.options.apiKey` and `NVIDIA_API_KEY`, with no credential-like
literal values embedded in the test.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: e0c8b00d-91e6-455b-bc42-41574fb9fcaa
📒 Files selected for processing (11)
.github/workflows/ci.yml.github/workflows/opencode-commercial-development.ymlARCHITECTURE.mdCHANGELOG.mdcompose.yamldocs/operations/opencode-commercial-development-loop.mddocs/research/2026-08-07-opencode-commercial-development-loop-standards.mddocs/superpowers/plans/2026-08-07-opencode-commercial-development-loop.mddocs/superpowers/specs/2026-08-07-opencode-commercial-development-loop-design.mdpackages/commercial-development-agent/src/workflow-contract.test.mjspackages/commercial-development-agent/vitest.config.mjs
…134) * test(identity): define durable authentication-age provenance * feat(identity): preserve authentication instant in session lifecycle * feat(identity): expose credential-free authentication age * feat(identity): persist session authentication provenance * feat(identity): migrate session authentication age * test(identity): cover persisted authentication age * test(identity): prove authentication age survives PostgreSQL rotation * fix(readiness): separate canonical buyer gaps from capability maturity (#131) * test(readiness): define canonical buyer-gap registry contract * feat(readiness): evaluate canonical buyer-gap evidence * feat(readiness): register canonical buyer-visible gaps * feat(readiness): attach canonical buyer-gap evidence * feat(readiness): add live buyer-gap audit entrypoint * fix(readiness): render capability and buyer gaps separately * build(readiness): verify buyer-gap audit modules * ci(readiness): reconcile canonical buyer-gap state * test(readiness): cover bounded buyer-gap collection * test(readiness): verify separated buyer-gap reporting * test(readiness): verify buyer-gap CLI boundary * test(readiness): harden buyer-gap snapshot validation * test(readiness): preserve capability maturity under buyer-gap evidence * fix(readiness): bind audit evidence to exact PR head * test(readiness): require exact-head PR audit checkout * style(readiness): format buyer-gap renderer * test(readiness): assert canonical buyer-gap exhaustion failures * test(readiness): reject coerced buyer-gap timestamps * docs(readiness): explain capability and buyer-gap report contract * test(readiness): reject non-string buyer-gap timestamps * fix(readiness): require string buyer-gap timestamps * fix(agent): verify explicit model catalog and Compose runtime (#133) * fix(agent): verify model and compose runtime * fix(ci): use supported Compose exec TTY flag * fix(agent): allow bounded OpenCode catalog probe runtime * test(agent): avoid secret-shaped catalog fixtures * test(agent): generate an ephemeral catalog credential * test(agent): derive non-secret catalog probe value * test(agent): exercise operational OpenCode config path * fix(identity): preserve legacy session authentication lineage * test(identity): prove legacy authentication-age migration * fix(identity): narrow callback session dependency * test(identity): isolate migration regression as test code * test(identity): move migration regression under tests * test(readiness): reject malformed buyer-gap evidence * docs(readiness): explain buyer-gap renderer contracts * test(identity): require staged authentication-age validation * fix(identity): stage authentication-age constraints before validation * fix(identity): finalize validated authentication-age constraint * test(identity): verify staged authentication-age finalization * fix(readiness): validate buyer-gap evidence boundary * test(identity): reject cross-boundary rotation lineage * test(identity): align invalid lineage cases with existing tenant FK * test(identity): keep migration policy regressions out of app-code scan * test(identity): remove migration contract from production source * test(identity): remove dynamic SQL from migration fixture * test(identity): clarify staged authentication migration assertions * test(identity): normalize migration layout before assertions * test(agent): resolve installed OpenCode through pnpm exec * test(identity): use neutral disposable database name * test(identity): serialize migration fixture database * test(readiness): reject malformed buyer gap items * chore(agent): restore protected-main workflow contracts * fix(readiness): validate attached buyer gap evidence * test(identity): always release migration fixture lock * docs(readiness): document buyer gap validation helpers
Outcome
Follow-up to #122: replace the two disputed validation gaps with executable, least-privilege alternatives.
Changes
AGENTS.mdandCLAUDE.md/v1/modelsopencode_modeland parse the accepted candidate's exact Compose file with--fileSELECT 1, validates JetStream through/jsz, emits bounded failure diagnostics, and always tears downVerification discipline
Earlier branch heads demonstrated the intended model-catalog probe, root format/lint/typecheck/build, and commercial-development-agent coverage, but those predecessor results do not transfer to the current head.
The current exact head must independently pass CI, AppGuardrail, Semgrep, Security Scan, Commercial Readiness, automated review, and every repository-required merge gate before merge. In particular, the preceding head exposed two real gate failures that are now addressed on source: the catalog test exceeded Vitest's default timeout, and AppGuardrail correctly rejected secret-shaped placeholder assignments in the test fixture. No current-head pass is claimed until those workflows complete.
No provider secret, GitHub token, model prompt/output, or Docker socket is introduced into the model environment.
Summary by CodeRabbit
개선 사항
문서