Repository navigation
Conversation
The Realtime, pg-meta and Studio catalog test hit the 120s test timeout on Podman with only the generator frame to go on. It now runs under a 110s guard that fails with CatalogStallError naming the service and phase in progress, plus that service's launch output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MBEk1PCdaXDCUPR16M9Ria
|
/ai-review Generated by Claude Code |
There was a problem hiding this comment.
Superseded by a newer AI review
🤖 AI Review
Verified all four reported findings and merged the duplicate timeout reports. Confirmed one minor cleanup-diagnostic issue and two diagnostic nits. Updated stale line references to match the checked-out code.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟡 MINOR | packages/stack/src/services/Realtime.integration.test.ts:211 |
test-reliability |
claude+codex | The timeout guard waits for scoped finalization, so a hanging teardown can prevent CatalogStallError from reaching the test runner before its timeout. |
| ⚪ NIT | packages/stack/src/services/Realtime.integration.test.ts:209 |
diagnostics |
claude | Some phase labels identify a narrower operation than the work actually running, which can misdirect stall diagnosis. |
| ⚪ NIT | packages/stack/src/services/Realtime.integration.test.ts:43 |
correctness |
claude | Decoding each output chunk independently can corrupt split UTF-8 characters, and trimming by UTF-16 code units can leave a dangling surrogate. |
Stats
Claude findings: 3 · Codex findings: 1 · Confirmed: 3 · Refuted: 0 · Uncertain: 0
Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: manual · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
There was a problem hiding this comment.
🤖 AI Review
Merged four findings into three. Confirmed the phase-label and UTF-8 decoding nits. The cleanup-timeout concern remains uncertain: scope placement and unbounded cleanup are verified, but the pinned Effect implementation is unavailable, and the patched Vitest runner complicates the claimed diagnostic loss.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟡 MINOR | packages/stack/src/services/Realtime.integration.test.ts:211 |
test-diagnostics |
claude+codex | Stalled scope cleanup may prevent the 110-second guard from surfacing CatalogStallError before Vitest's 120-second timeout. |
| ⚪ NIT | packages/stack/src/services/Realtime.integration.test.ts:35 |
test-diagnostics |
claude | Filesystem root setup is labeled 'database recipe', so a stall during that setup would identify the wrong phase. |
| ⚪ NIT | packages/stack/src/services/Realtime.integration.test.ts:43 |
correctness |
codex | Decoding each output chunk with a fresh TextDecoder corrupts UTF-8 characters split across chunk boundaries. |
Stats
Claude findings: 2 · Codex findings: 2 · Confirmed: 2 · Refuted: 0 · Uncertain: 1
Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
The guard now joins a detached body under its deadline, so a teardown that hangs during interruption cannot delay the stall report. Phase labels cover root setup, the pg-meta relay and scope teardown, and launch output is decoded as a stream per channel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MBEk1PCdaXDCUPR16M9Ria
Flaky test check: ✅ no flaky testsCommit Each execution is a separate Vitest process; |
TL;DR
The Realtime, pg-meta and Studio catalog test hung on Podman without saying where. It now fails before the test timeout, naming the service and phase that stalled and that service's output.
Realtime.integration.test.ts › serves Realtime, pg-meta, and Studio against the owned database: on Podman, the test hit the 120s test timeout with only the generator start frame as a clue. The test runs four services in sequence (database, Realtime, pg-meta, Studio), each with a recipe, start, readiness and HTTP step, so a stall anywhere looked the same. The cause is still unknown, so this change is a diagnostic. The scoped body now runs under a 110s guard. Each step records its phase, and each recipe's launch output is collected. A stall fails withCatalogStallErrornaming the service and phase in progress (including stop and root cleanup) and the last part of that service's output.ref
spotted in:
Generated by Claude Code