fix: harden presentation runtime smoke contract - #838
Conversation
|
Warning Review limit reached
More reviews will be available in 40 minutes and 28 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?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 credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. 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, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughmeta-vite 생성 템플릿(web, ssr-worker) 두 곳에 SSR/ISR/API/서버액션 라우트를 통합 검증하는 ChangesPresentation Smoke 통합 및 문서화
Sequence Diagram(s)sequenceDiagram
participant CI as CI / generate-smoke 스크립트
participant Template as create-croco-app 템플릿
participant SmokeScript as presentationSmoke.ts
participant RouteRegistry
participant RenderServer
participant IsrMiddleware as createIsrMiddleware
participant SmokeResponseCache
CI->>Template: 앱 생성 (meta-vite-web / fullstack-workers)
CI->>SmokeScript: pnpm presentation:smoke 실행
SmokeScript->>RouteRegistry: / (SSR), /cached (ISR, revalidate=60), /api/ping, subscribe 등록
SmokeScript->>RenderServer: new RenderServer(compiled)
SmokeScript->>SmokeResponseCache: new SmokeResponseCache()
SmokeScript->>IsrMiddleware: createIsrMiddleware(renderServer, cache)
SmokeScript->>SmokeScript: fetch("/") → expectText 검증
SmokeScript->>SmokeScript: fetch("/api/ping") → JSON 검증
SmokeScript->>SmokeScript: POST subscribe → 결과 검증
SmokeScript->>IsrMiddleware: fetch("/cached") 1회
IsrMiddleware->>SmokeResponseCache: 캐시 미스 → 렌더 후 저장
SmokeScript->>IsrMiddleware: fetch("/cached") 2회
IsrMiddleware->>SmokeResponseCache: 캐시 히트 (renderCount === 1 검증)
SmokeScript->>CI: 성공 로그 출력 / 실패 시 exitCode=1
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 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 |
📊 Benchmark Results❌ Some benchmarks failed Gate failures
Updated: 2026-06-17T12:35:05.138Z · Commit: 76c8ce3 |
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 `@scripts/package-docs-check.mts`:
- Line 977: The relative paths in the documentation links are incorrect because
they point to parent directories instead of the same reference directory. In the
string containing the Korean text with Provider Maturity Gates and Presentation
Runtime Support links, change the relative path references from
`../provider-maturity/` and `../presentation-runtime-support/` to use correct
relative paths like `./provider-maturity.md` and
`./presentation-runtime-support.md` (since both files are in the same reference
directory), or alternatively use absolute paths following the pattern shown in
line 977 with the full path starting from
packages/docs/src/content/docs/en/reference/.
🪄 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: e8531ac5-947d-4854-99c9-4442135dbf75
📒 Files selected for processing (15)
.changeset/meta-vite-presentation-smoke.mdREADME.mddocs/package-catalog.jsonpackages/create-croco-app/src/tests/e2e-generation.spec.tspackages/create-croco-app/templates/addons/web-meta-vite-fullstack/ssr-worker/package.json.hbspackages/create-croco-app/templates/addons/web-meta-vite-fullstack/ssr-worker/src/smoke/presentationSmoke.tspackages/create-croco-app/templates/addons/web-meta-vite/package.json.hbspackages/create-croco-app/templates/addons/web-meta-vite/src/smoke/presentationSmoke.tspackages/docs/src/content/docs/en/reference/extension-matrix.mdpackages/docs/src/content/docs/en/reference/presentation-runtime-support.mdpackages/frontend-cloudflare/src/tests/CloudflareSsrHandler.spec.tspackages/meta-vite/README.mdpackages/meta-vite/src/tests/lambda-adapter.spec.tsscripts/create-croco-app-generated-smoke.mtsscripts/package-docs-check.mts
Dismissed stale CodeRabbit requested-changes review after resolving the only thread and verifying the suggested link form failed docs-links while the restored route-relative links pass current CI on d9e3dc6.
Fixes #828.
Summary
Presentation runtime readiness is now documented as an explicit support matrix instead of being inferred from package tests. The package catalog and generated docs call out the stable ISR v1 exact-key TTL contract, Worker ISR durability requirements, and the promotion gates that keep presentation packages from being marked production-ready without named runtime evidence.
Generated meta-vite profiles now include a zero-credential
presentation:smokecommand that dispatches an SSR page, API route, server action, and ISR route through current local Croco presentation package tarballs. The generated smoke matrix also builds and packs the local presentation packages before app install, so generated-app checks exercise the current publishable artifacts rather than stale registry ranges.Cloudflare and Lambda adapter coverage now proves the runtime handoff points needed by the matrix: Cloudflare asset fallback, service-binding routing, env/execution-context propagation, streaming response preservation, and Lambda API handlers receiving the original event/context.
Verification
pnpm --filter @croco/meta-vite exec vitest run src/tests/lambda-adapter.spec.ts src/tests/cloudflare-adapter.spec.ts src/tests/isr-middleware.spec.ts src/tests/redis-adapter.spec.ts src/tests/server-action.spec.ts --maxWorkers=1pnpm --filter @croco/frontend-cloudflare exec vitest run src/tests/CloudflareSsrHandler.spec.ts --maxWorkers=1pnpm --filter create-croco-app exec vitest run src/tests/e2e-generation.spec.ts --maxWorkers=1pnpm docs:catalog:checkpnpm create-croco-app:smokepnpm checkpnpm changeset-required:check -- --base origin/trunk --head HEADpnpm testandpnpm typecheckSelf-review gates
IsrCacheStore; generated templates add only a dev-onlytsxsmoke dependency and acreate-croco-apppatch changeset.Risk
The generated smoke command is intentionally synthetic and zero-credential. It proves route dispatch and cache semantics, not a deployed Cloudflare or Lambda environment.
Summary by CodeRabbit
릴리스 노트
새로운 기능
문서
테스트