Skip to content

fix: verify provider no-credential behavior - #1447

Merged
kang-heewon merged 4 commits into
trunkfrom
issue-1260-provider-no-credential
Jul 24, 2026
Merged

fix: verify provider no-credential behavior#1447
kang-heewon merged 4 commits into
trunkfrom
issue-1260-provider-no-credential

Conversation

@kang-heewon

@kang-heewon kang-heewon commented Jul 22, 2026

Copy link
Copy Markdown
Member

Outcome

Provider packages can now prove no-credential behavior through one public @croco/testing conformance contract. The suite clears declared environment variables, requires stable actionable diagnostics, rejects any live network/API attempt, and fails closed unless at least one secret sample is proven absent from diagnostics.

Auth Clerk, Polar billing, R2 storage, QStash tasks, and the Node telemetry SDK publish package-scoped evidence through the provider certification catalog. Certification records now require a concrete no-credential test artifact even before a provider reaches certified maturity.

This closes a security and release-evidence gap: missing provider credentials are verified without contacting live services or exposing configured values.

Verification

  • Repository check — passed, 21/22 applicable gates
  • Full repository typecheck — 225/225 tasks
  • Affected package suites — 412/412 tests passed; 2 optional live smokes skipped as designed
    • @croco/testing — 88/88
    • @croco/auth-clerk — 95/95
    • @croco/billing-polar — 62/62
    • @croco/storage-r2 — 37/37
    • @croco/tasks-qstash — 16/16
    • @croco/telemetry-sdk-node — 114/114
  • Provider certification checker — 23/23 tests
  • Provider certification gate — 0 blocking failures
  • Independent adversarial review — APPROVE after the public API made secretSamples a required non-empty tuple

The clean-worktree full test reached 208/224 tasks before the local Node 26 install failed to build better-sqlite3@11.10.0; its 27 metering tests then failed solely because the native binding was absent/incompatible. No affected package uses that native module, and the exact affected suites above passed on the same head. GitHub CI remains the authoritative full-suite result.

Review gates

  • Correctness/regression: PASS — negative fixtures prove missing diagnostic evidence, network attempts, secret leakage, vacuous redaction inputs, and unstable configuration are rejected; five provider categories execute the shared contract.
  • API/security/compatibility/release: PASS — the public input contract requires a non-empty secret tuple at typecheck time, generated API docs and public API snapshot are synchronized, certification evidence is package-scoped and existence-checked, and patch changesets cover the published surfaces.
  • Maintainability/minimality: PASS — one generic harness owns the assertions; provider files contain only package-specific adapters and spies; catalog/report changes are generated from the existing certification source of truth.

Residual risk

Live provider calls remain intentionally env-gated and are not executed without credentials. The suite proves the default no-credential path and prevents network entry; it does not replace separately reviewed real-credential live-smoke evidence.

Fixes #1260

Summary by CodeRabbit

  • 새 기능
    • no-credential(자격 증명 누락) 상황을 공통 규격으로 검증하는 컨포먼스 테스트 스위트/유틸리티와 공개 API 문서를 추가했습니다.
    • 여러 제공자에 대한 no-credential 컨포먼스 테스트 적용 범위를 확장했습니다.
  • 버그 수정
    • Clerk 진단에서 설정 누락 시 problemCode가 일관되게 노출되도록 개선했습니다.
    • 인증 증거 점검 시 noCredentialSmoke 검증 흐름이 누락되지 않도록 조정했습니다.
  • 문서 / 카탈로그
    • 인증 상태·증거(evidence) 및 근거 표(Extension/Matrix, 패키지 카탈로그/리포트)를 최신화했습니다.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@kang-heewon, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 30d14197-3012-404b-babd-60da49e02d3d

📥 Commits

Reviewing files that changed from the base of the PR and between 77f2a60 and 4f19c81.

📒 Files selected for processing (7)
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
📝 Walkthrough

Walkthrough

공통 no-credential conformance suite와 공개 타입이 추가되었습니다. 여러 provider 테스트가 누락 credential 진단, 네트워크 호출 0회, secret redaction을 검증하며 certification evidence와 관련 문서가 갱신되었습니다.

Changes

Provider no-credential conformance

Layer / File(s) Summary
공통 conformance 계약과 공개 API
packages/testing/src/libs/*, packages/testing/src/index.ts, packages/testing/src/tests/*, public-api-surface.snapshot.json
공통 suite가 환경 변수 복원, 진단 안정성, 네트워크 호출 0회, secret redaction을 검증하며 관련 타입과 함수를 공개합니다.
Provider별 conformance 테스트
packages/auth-clerk/src/*, packages/billing-polar/src/tests/*, packages/storage-r2/src/tests/*, packages/tasks-qstash/src/*, packages/telemetry-sdk-node/*
Auth, billing, storage, tasks, telemetry provider에 credential 누락 시나리오와 진단·호출 횟수 검증을 추가합니다.
Certification evidence 검증 및 기록
scripts/*, docs/package-catalog.json, docs/package-docs-report.md, README.md, packages/docs/src/content/docs/en/reference/extension-matrix.md, .changeset/*
noCredentialSmoke evidence 검증을 강화하고 provider artifact, 상태, known gap 및 changeset 정보를 갱신합니다.
Testing API 문서
packages/docs/src/content/docs/api/testing/src/functions/*, packages/docs/src/content/docs/api/testing/src/type-aliases/*
conformance suite 생성 함수와 관련 타입의 API 문서를 추가합니다.

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

Sequence Diagram(s)

sequenceDiagram
  participant ProviderTest
  participant ConformanceSuite
  participant Provider
  participant CertificationCheck
  ProviderTest->>ConformanceSuite: 누락 credential 시나리오 등록
  ConformanceSuite->>Provider: 환경 변수 제거 후 진단 실행
  Provider-->>ConformanceSuite: diagnostic 및 networkAttempts 반환
  ConformanceSuite-->>ProviderTest: 안정성, 호출 0회, redaction 검증
  CertificationCheck->>ConformanceSuite: noCredentialSmoke evidence 검사
Loading

Possibly related PRs

  • croco-dev/framework#509: telemetry-sdk-node의 누락 OTLP endpoint conformance 테스트와 직접 연결됩니다.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 provider no-credential 동작 검증이라는 핵심 변경을 간결하게 요약합니다.
Linked Issues check ✅ Passed 공유 conformance 헬퍼, 진단 안정성, 네트워크 호출 금지, 비밀값 레닥션, 인증 증거 연결, 5개 범주 커버가 모두 반영되었습니다.
Out of Scope Changes check ✅ Passed 추가된 문서, 테스트, 인증 스크립트, 공개 API 재노출은 모두 no-credential conformance와 certification 증거를 지원하는 범위입니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-1260-provider-no-credential

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.

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown

📊 Benchmark Results

✅ All benchmarks passed

Benchmark p75 Threshold Baseline vs Baseline Status Notes
CrocoApp constructor 9.5μs 30.0ms 8.2μs +16.4% -
CrocoApp lambdaHandler (10 controllers) 328.8μs 50.0ms 258.4μs +27.2% -
Lambda cold-start simulation 435.3μs 80.0ms 418.1μs +4.1% -
Lambda cold-start with headers 393.7μs 80.0ms 369.7μs +6.5% -
Lambda cold-start with binary body 354.1μs 80.0ms 339.1μs +4.4% -
Lambda cold-start with query params 298.3μs 80.0ms 301.3μs -1.0% -
Lambda cold-start with authorizer context 297.5μs 80.0ms 299.8μs -0.8% -
Lambda cold-start realistic scenario 295.1μs 80.0ms 299.2μs -1.4% -
EventBusConfig.start (10 handlers) 1.8μs 10.0ms 1.4μs +25.1% -
EventPublisher.publishNow single event 2.0μs 2.0ms 1.7μs +17.2% -
DefaultHandlerResolver.resolve × 10 0.1μs 5.0ms 0.1μs +0.0% -
Container.get singleton (cold) 62.2μs 5.0ms 70.3μs -11.5% -
Container.register × 50 components 3.3ms 10.0ms 3.2ms +1.7% -
Container.validate (50 components) 3.7ms 20.0ms 3.4ms +10.2% -
Container.get singleton (warm) 1.6μs 500.0μs 1.6μs -1.2% -
TelemetryRuntime.init (lambda preset) 2.5μs 200.0ms 1.1ms -99.8% -
lambdaPreset config creation 1.5μs 2.0ms 1.4μs +2.1% -

Updated: 2026-07-24T06:42:58.351Z · Commit: 314aa65

@kang-heewon
kang-heewon force-pushed the issue-1260-provider-no-credential branch from 2f27e8c to d07b20f Compare July 22, 2026 22:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 23-52: Ensure the fetch spy created in the run callback is
restored on every exit path, including when TelemetryRuntime.getInstance().init
throws a non-Problem error. Refactor the try/catch flow around TelemetryRuntime
initialization to use try/finally, preserving the existing Problem result and
rethrow behavior while guaranteeing fetchSpy.mockRestore() before returning or
propagating.
🪄 Autofix (Beta)

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: ASSERTIVE

Plan: Pro

Run ID: 61b01153-4ca0-430f-ac75-9110a141bd4f

📥 Commits

Reviewing files that changed from the base of the PR and between 718ee7d and d07b20f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (28)
  • .changeset/provider-no-credential-conformance.md
  • README.md
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/auth-clerk/src/libs/ClerkAuthDiagnosticsProvider.ts
  • packages/auth-clerk/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/docs/src/content/docs/api/testing/src/functions/createProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceCase.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceOptions.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialDiagnostic.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialProbeResult.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialScenario.md
  • packages/docs/src/content/docs/en/reference/extension-matrix.md
  • packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/tsconfig.json
  • packages/tasks-qstash/vitest.config.ts
  • packages/telemetry-sdk-node/package.json
  • packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/testing/src/index.ts
  • packages/testing/src/libs/provider-no-credential-conformance.ts
  • packages/testing/src/tests/ConformanceContract.spec.ts
  • packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
  • public-api-surface.snapshot.json
  • scripts/provider-certification-check.mts
  • scripts/tests/provider-certification-check.spec.ts

@kang-heewon

Copy link
Copy Markdown
Member Author

@coderabbitai resolve

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@kang-heewon

Copy link
Copy Markdown
Member Author

Current validate failure is an independent base-wide dependency audit regression tracked in #1451. Exact origin/trunk at 718ee7d9ec25b79425c7f123bdd4f240a20897ca reproduces dependency-audit-policy: failed blocking=18 violations=0; PR head 63d11804b95963857f821b81bd544d9ab0c5de8a reports the same counts. The blocking findings are the newly surfaced Next.js advisories GHSA-89xv-2m56-2m9x, GHSA-m99w-x7hq-7vfj, and GHSA-p9j2-gv94-2wf4 across generated-app templates. No suppression was added to this PR.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 8

🤖 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 `@docs/package-catalog.json`:
- Around line 1128-1165: Update the knownGaps entry for `@croco/auth-clerk` to
contain the actual live-smoke evidence reason instead of the field name
"liveSmoke". Add the same descriptive reason to the corresponding
knownGapAllowances mapping, following the existing wording pattern used by other
package entries.

In `@packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 1-3: Reorder the imports in
ProviderNoCredentialConformance.spec.ts to follow external packages first, then
internal `@croco/`* packages, then relative imports: place vitest before
`@croco/testing`, while keeping PolarBillingDiagnosticsProvider after them.

In `@packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 1-3: Reorder the imports in
ProviderNoCredentialConformance.spec.ts so the vitest import precedes the
`@croco/testing` import, matching the established ordering pattern in the related
specs while leaving the provider import unchanged.

In `@packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 1-3: Update the import order in
ProviderNoCredentialConformance.spec.ts so the external vitest import appears
before the internal `@croco/problems-core` and `@croco/testing` imports, matching
the ordering used by the related spec files.
- Around line 5-11: Move the mockPublishJSON initialization into a vi.hoisted
callback and have the `@upstash/qstash` vi.mock factory reuse that hoisted mock,
ensuring the mock exists before QStashTaskRunner and the mock factory are
evaluated.

In
`@packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Line 25: Update the fetch mock in ProviderNoCredentialConformance tests to
reject with the project’s appropriate Problem subclass instead of a generic
Error, while preserving the existing “network” failure scenario.

In `@packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 45-55: Update the test around createSuite and the suite.cases loop
to save the original FIXTURE_API_TOKEN value before overriding it, then restore
that exact value in a finally block. Ensure restoration occurs whether any
testCase.run() succeeds or throws, deleting the variable only when it was
originally absent.
- Around line 68-89: Update the test around
createProviderNoCredentialConformanceSuite so the synchronous validation
exception is asserted at suite creation time with a synchronous toThrow matcher.
Remove the cases[0].run() and async rejects assertion while preserving the
expected “at least one secret sample” message.
🪄 Autofix (Beta)

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: ASSERTIVE

Plan: Pro Plus

Run ID: 882a36af-d217-4b05-8ffd-e84ce8fd50c7

📥 Commits

Reviewing files that changed from the base of the PR and between 63d1180 and 3a685ae.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (28)
  • .changeset/provider-no-credential-conformance.md
  • README.md
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/auth-clerk/src/libs/ClerkAuthDiagnosticsProvider.ts
  • packages/auth-clerk/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/docs/src/content/docs/api/testing/src/functions/createProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceCase.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceOptions.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialDiagnostic.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialProbeResult.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialScenario.md
  • packages/docs/src/content/docs/en/reference/extension-matrix.md
  • packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/tsconfig.json
  • packages/tasks-qstash/vitest.config.ts
  • packages/telemetry-sdk-node/package.json
  • packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/testing/src/index.ts
  • packages/testing/src/libs/provider-no-credential-conformance.ts
  • packages/testing/src/tests/ConformanceContract.spec.ts
  • packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
  • public-api-surface.snapshot.json
  • scripts/provider-certification-check.mts
  • scripts/tests/provider-certification-check.spec.ts

Comment thread docs/package-catalog.json
Comment thread packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts Outdated
Comment thread packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts Outdated
Comment thread packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts Outdated
Comment thread packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts Outdated
Comment thread packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
Comment thread packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
@kang-heewon
kang-heewon force-pushed the issue-1260-provider-no-credential branch from 3a685ae to 77f2a60 Compare July 24, 2026 06:28
@kang-heewon

Copy link
Copy Markdown
Member Author

@coderabbitai resolve

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

♻️ Duplicate comments (2)
packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts (1)

1-3: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

네 개의 no-credential conformance spec 파일 모두 import 순서 가이드라인을 위반합니다. "Organize imports in order: external packages, internal @croco/* packages, relative paths" 규칙에 따라 vitest(external)가 @croco/testing/@croco/problems-core(internal)보다 먼저 와야 하는데, 네 파일 모두 반대 순서입니다. billing-polar/storage-r2/tasks-qstash는 과거 리뷰에서 이미 지적되었으나 미해결 상태이며, telemetry-sdk-node는 동일 패턴의 신규 인스턴스입니다.

  • packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts#L1-L3: vitest import를 @croco/testing import보다 앞으로 이동.
  • packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts#L1-L3: vitest import를 @croco/testing import보다 앞으로 이동.
  • packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts#L1-L3: vitest import를 @croco/problems-core/@croco/testing import보다 앞으로 이동.
  • packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts#L1-L4: vitest import를 @croco/problems-core/@croco/testing import보다 앞으로 이동.
🤖 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 `@packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts`
around lines 1 - 3, Reorder imports in the four
ProviderNoCredentialConformance.spec.ts files:
packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts lines
1-3, packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts lines
1-3, packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
lines 1-3, and
packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
lines 1-4. Place the external vitest import before the internal `@croco/testing`
or `@croco/problems-core` imports, followed by the relative provider import,
without changing functionality.

Source: Coding guidelines

docs/package-catalog.json (1)

1164-1164: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

knownGaps에 필드명 대신 실제 미충족 사유를 기록하세요.

["liveSmoke"]는 어떤 증거가 부족한지 설명하지 못하고 생성 보고서에도 그대로 노출됩니다. 두 record를 서술형 사유로 통일해 주세요.

수정 예시
-        "knownGaps": ["liveSmoke"]
+        "knownGaps": ["Recorded real Clerk liveSmoke evidence is required before certified state."]
...
-        "knownGaps": ["liveSmoke"]
+        "knownGaps": ["Recorded real QStash liveSmoke evidence is required before certified state."]

Also applies to: 1203-1203

🤖 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 `@docs/package-catalog.json` at line 1164, docs/package-catalog.json의 두
record에서 knownGaps 값으로 사용한 "liveSmoke" 필드명을 실제로 충족하지 못한 검증 사유를 설명하는 서술형 문자열로
교체하세요. 두 record 모두 동일한 형식과 의미의 구체적인 사유를 사용하고, 생성 보고서에 그대로 노출되어도 부족한 증거가 명확히
드러나도록 하세요.
🤖 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/auth-clerk/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 1-3: Reorder the imports in
ProviderNoCredentialConformance.spec.ts so the external vitest import appears
before the `@croco/testing` import, while leaving the ClerkAuthDiagnosticsProvider
internal import after both external imports.

In `@packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Line 50: Replace the generic TypeError failure guard in
packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts at line
50 with assert.ok(false, ...) or an existing Problem subclass. Apply the same
change to
packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts at
line 51, preserving the existing failure messages and test behavior.
- Around line 5-11: Defensively wrap mockPublishJSON with vi.hoisted() before
the vi.mock factory, then use the hoisted mock in the Client class field
initializer. Keep the existing publishJSON behavior unchanged while ensuring the
mock remains safe if Client is instantiated during module initialization.

In `@packages/testing/src/libs/provider-no-credential-conformance.ts`:
- Around line 102-114: Update serializeDiagnostic, used by the secret-redaction
conformance checks, so serialization includes secret-bearing non-enumerable
properties such as those on Error instances instead of relying solely on
JSON.stringify. Preserve the existing diagnostic output while ensuring both
redaction assertions detect secrets nested in diagnostic.details.
- Around line 205-207: Update assertNonEmpty to validate that value is a string
before calling trim, ensuring non-string inputs fail through assert.ok with the
provided message and produce an AssertionError rather than a raw TypeError.

---

Duplicate comments:
In `@docs/package-catalog.json`:
- Line 1164: docs/package-catalog.json의 두 record에서 knownGaps 값으로 사용한 "liveSmoke"
필드명을 실제로 충족하지 못한 검증 사유를 설명하는 서술형 문자열로 교체하세요. 두 record 모두 동일한 형식과 의미의 구체적인 사유를
사용하고, 생성 보고서에 그대로 노출되어도 부족한 증거가 명확히 드러나도록 하세요.

In `@packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts`:
- Around line 1-3: Reorder imports in the four
ProviderNoCredentialConformance.spec.ts files:
packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts lines
1-3, packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts lines
1-3, packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
lines 1-3, and
packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
lines 1-4. Place the external vitest import before the internal `@croco/testing`
or `@croco/problems-core` imports, followed by the relative provider import,
without changing functionality.
🪄 Autofix (Beta)

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: ASSERTIVE

Plan: Pro Plus

Run ID: 43df4364-5e7c-4aef-bd65-7b0331490c38

📥 Commits

Reviewing files that changed from the base of the PR and between 3a685ae and 77f2a60.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (28)
  • .changeset/provider-no-credential-conformance.md
  • README.md
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/auth-clerk/src/libs/ClerkAuthDiagnosticsProvider.ts
  • packages/auth-clerk/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/billing-polar/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/docs/src/content/docs/api/testing/src/functions/createProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceCase.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceOptions.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialConformanceSuite.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialDiagnostic.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialProbeResult.md
  • packages/docs/src/content/docs/api/testing/src/type-aliases/ProviderNoCredentialScenario.md
  • packages/docs/src/content/docs/en/reference/extension-matrix.md
  • packages/storage-r2/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/tasks-qstash/tsconfig.json
  • packages/tasks-qstash/vitest.config.ts
  • packages/telemetry-sdk-node/package.json
  • packages/telemetry-sdk-node/src/tests/ProviderNoCredentialConformance.spec.ts
  • packages/testing/src/index.ts
  • packages/testing/src/libs/provider-no-credential-conformance.ts
  • packages/testing/src/tests/ConformanceContract.spec.ts
  • packages/testing/src/tests/ProviderNoCredentialConformance.spec.ts
  • public-api-surface.snapshot.json
  • scripts/provider-certification-check.mts
  • scripts/tests/provider-certification-check.spec.ts

Comment thread packages/tasks-qstash/src/tests/ProviderNoCredentialConformance.spec.ts Outdated
Comment thread packages/testing/src/libs/provider-no-credential-conformance.ts
Comment thread packages/testing/src/libs/provider-no-credential-conformance.ts
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@kang-heewon
kang-heewon merged commit e1ac339 into trunk Jul 24, 2026
9 checks passed
@kang-heewon
kang-heewon deleted the issue-1260-provider-no-credential branch July 24, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[testing] Add provider no-credential conformance suite

1 participant