Conversation
…2414-start-e2e-effect-lint # Conflicts: # .oxlintrc.effect.json
Contributor
There was a problem hiding this comment.
🤖 AI Review
Both independent reviews completed. The major confirmed issue is that the lifecycle and slim-image E2E effects allocate scoped resources without applying Effect.scoped. Additional confirmed concerns cover effect lint, cleanup timeout budgets, an interruptible cleanup-registration gap, truncated parseable output, and one readability nit. Three Claude findings were refuted by concrete code or trusted conventions.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟠 MAJOR | apps/cli/src/commands/start/start.lifecycle.e2e.test.ts:197 |
resource-lifecycle |
claude+codex | All three lifecycle tests allocate scoped temporary directories and register finalizers but omit Effect.scoped, leaving an unprovided Scope requirement. |
| 🟠 MAJOR | apps/cli/src/commands/start/start.slim-images.e2e.test.ts:286 |
resource-lifecycle |
claude+codex | The slim-image E2E test uses a scoped project helper without scoping the enclosing effect. |
| 🟡 MINOR | apps/cli/src/commands/start/start.lifecycle.e2e.test.ts:3 |
lint |
claude | The newly effect-linted file imports the effectful node:net server API without the required effecttsgo/node-builtin-import handling. |
| 🟡 MINOR | apps/cli/src/commands/start/start.lifecycle.e2e.test.ts:198 |
test-reliability |
claude | Moving stack teardown into the test scope makes cleanup consume the test timeout, but the previous timeout budgets were retained without a cleanup allowance. |
| 🟡 MINOR | apps/cli/src/commands/start/start.lifecycle.e2e.test.ts:309 |
resource-lifecycle |
codex | The poisoned-image cleanup finalizer is registered only after the Docker build completes, leaving an interruption window in which the tag can remain on the runner. |
| ⚪ NIT | apps/cli/tests/helpers/cli.ts:786 |
api-design |
claude | runDockerEffect embeds its truncation marker directly in returned output, while callers also treat those fields as machine-readable Docker output. |
| ⚪ NIT | apps/cli/src/commands/start/start.slim-images.e2e.test.ts:40 |
readability |
claude | makeProject references SLIM_ENV before its declaration, relying on delayed generator execution after module initialization. |
Refuted findings (kept for transparency, not posted as review comments)
apps/cli/src/commands/start/start.lifecycle.e2e.test.ts:239(error-handling): The proxy-address invariant is incorrectly thrown as a defect instead of returned asStartE2eSetupError.
Refuted: After the successful TCP listen callback,server.address()must be a TCPAddressInfo:nulldenotes a non-listening server and a string denotes an IPC server. The checked branch is therefore an impossible invariant, which trusted/CLAUDE.md:59-62 permits treating as a defect.apps/cli/tests/helpers/docker-image.unit.test.ts:247(test-organization): PlacingrunDockerEffecttests indocker-image.unit.test.tsviolates a repository convention requiring the test basename to match its module.
Refuted: The test uses the required.unit.test.tssuffix and is colocated in the same helper directory ascli.ts; the trusted convention does not impose the claimed basename rule.apps/cli/src/commands/start/start.slim-images.e2e.test.ts:27(duplication): The two start E2E suites should extract their similar setup error, port override, and project helper into a shared helper.
Refuted: The helpers are not verbatim because their teardown environments differ, and trusted/CLAUDE.md:171 explicitly permits some test duplication rather than unnecessary abstractions. No behavioral defect results from the local definitions.
Stats
Claude findings: 8 · Codex findings: 3 · Confirmed: 7 · Refuted: 3 · Uncertain: 0
Models: claude-opus-5 + gpt-5.6-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
brings the
supabase starte2e tests under the effect lint, preserving the existing scenarioswhats introduced?
ref: