Skip to content

chore: enable Effect linting across monorepo - #6304

Open
jgoux wants to merge 25 commits into
feat/remote-stack-control-planefrom
chore/effect-linter
Open

chore: enable Effect linting across monorepo#6304
jgoux wants to merge 25 commits into
feat/remote-stack-control-planefrom
chore/effect-linter

Conversation

@jgoux

@jgoux jgoux commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add the Effect TypeScript diagnostics integration to Oxlint using the recommended rule set
  • expose linting consistently through inferred Nx targets across the TypeScript workspaces
  • migrate existing runtime and test code so repository-wide Effect linting is clean
  • keep native Node, Bun, subprocess, test, and foreign-library boundaries explicit with narrow rule-specific suppressions
  • preserve behavior uncovered during the migration, including environment propagation, subprocess cleanup, telemetry draining, config path handling, and generated output formatting

Reviewer context

This PR is stacked on #6303 and intentionally accepts its Effect RPC stack transport as the baseline. Merge #6303 first, then this PR. The stack changes here are lint remediation against that RPC design; they do not restore the prior transport implementation.

Enabling the recommended rules surfaced diagnostics across every TypeScript workspace, so this is intentionally a broad migration. Cleanup was limited to concrete ownership and lifecycle improvements; larger service-threading proposals without a demonstrated runtime benefit were rejected.

@jgoux
jgoux marked this pull request as ready for review August 23, 2026 08:31
@jgoux
jgoux requested a review from a team as a code owner August 23, 2026 08:31
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Supabase CLI preview

npx --yes https://pkg.pr.new/supabase/cli/supabase@d12a47a5f6244b808c628f8fb91e5b94a3533c25

Preview package for commit d12a47a.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: edcae5572d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli-e2e/tests/live-setup.ts
Comment thread packages/stack/src/services/vector.ts Outdated
Comment thread apps/cli-e2e/src/server/replay-server.ts Outdated
Comment thread apps/cli/src/legacy/shared/legacy-hostname.ts
Comment thread packages/stack/src/services/edge-runtime-main.ts Outdated
Comment thread apps/cli/src/shared/cli/bin.ts Outdated
Comment thread packages/stack/src/PortAllocator.ts Outdated
Comment thread packages/process-compose/src/supervisor-runtime.ts

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e49fe7db95

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/src/shared/functions/serve.main.ts Outdated
Comment thread apps/cli/src/shared/functions/serve.main.ts Outdated
Comment thread apps/cli/src/legacy/shared/legacy-upgrade-notice.ts Outdated
Comment thread apps/cli/src/legacy/shared/legacy-db-config.toml-read.ts
Comment thread apps/cli/src/legacy/shared/legacy-db-config.layer.ts Outdated
Comment thread packages/stack/src/services/docker-cleanup.ts Outdated
Comment thread apps/cli/src/legacy/commands/storage/cp/cp.handler.ts Outdated
Comment thread apps/cli/src/shared/functions/serve.main.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fa1b421c7f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/src/legacy/shared/legacy-local-project-context.ts Outdated
Comment thread packages/stack/src/functions.ts Outdated
Comment thread packages/stack/src/functions.ts Outdated
Comment thread apps/cli/src/shared/functions/deploy.ts Outdated
Comment thread packages/stack/src/HttpTransportClient.ts Outdated
Comment thread packages/stack/src/PortAllocator.ts Outdated
Comment thread apps/cli-e2e/src/server/replay-server.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

const response = yield* client
.execute(HttpClientRequest.get(url).pipe(HttpClientRequest.acceptJson))
.pipe(Effect.timeout(Duration.millis(remoteJwksTimeoutMs)), Effect.mapError(toRemoteJwksError));

P2 Badge Keep the JWKS timeout around body decoding

When an OIDC discovery or JWKS endpoint returns headers but stalls while sending its JSON body, the 10-second timeout has already completed because it wraps only client.execute; response.json can therefore wait indefinitely and hang commands that resolve third-party auth keys. The previous AbortSignal.timeout remained attached while the body was consumed, so wrap the complete execute-and-decode operation in the deadline.

AGENTS.md reference: apps/cli/AGENTS.md:L52-L53


const bitbucketCloneDir = yield* Config.option(Config.string("BITBUCKET_CLONE_DIR"));
if (Option.isSome(bitbucketCloneDir)) {
return;

P2 Badge Preserve project dotenv Bitbucket detection

When BITBUCKET_CLONE_DIR is supplied only by a project .env, legacyLoadLocalProjectContext still places it in projectEnvValues but no longer copies it into process.env, while this lookup consults only the ambient Config provider. Consequently deploy, download, and serve try to create the named Deno-cache volume in Bitbucket Pipelines, where that operation is rejected; thread the resolved project environment into this decision instead.

AGENTS.md reference: apps/cli/AGENTS.md:L52-L53


const payload = yield* Effect.tryPromise({
try: () => response.json(),

P2 Badge Keep DNS body reads tied to the abort signal

When the DNS-over-HTTPS server or an intervening proxy returns status 200 and then stalls the response body, this second tryPromise is no longer associated with the signal passed to fetch. The outer timeout can fail the Effect, but it cannot abort the outstanding body read/socket, so a fallback database command may retain the request and fail to terminate cleanly; keep fetch and JSON consumption under one signal-owning boundary.

AGENTS.md reference: AGENTS.md:L68-L72


const randomId = yield* Random.nextInt;
return CommandRuntime.of({
commandPath: [...commandPath],
commandRunId: `cli-${randomId}`,

P2 Badge Retain UUID entropy for command run IDs

At fleet-scale CLI volume, replacing the UUID with one signed 32-bit Random.nextInt value makes unrelated invocations collide frequently enough to merge telemetry correlation (the same ID is also forwarded in command-run API headers). Preserve the prior UUID-sized identifier, preferably through the injected Effect Crypto service, rather than reducing the identifier space to roughly 4.3 billion values.

AGENTS.md reference: apps/cli/AGENTS.md:L52-L53


Schema.decodeUnknownEffect(Schema.Array(LegacyJwkSchema))(remoteKeysUnknown).pipe(

P2 Badge Preserve extension fields on remote JWKs

When a third-party issuer publishes a valid JWK that relies on members outside this local signing-key schema, such as an RSA key represented through x5c, decoding the fetched keys as LegacyJwkSchema strips those members before the JWKS document is re-encoded. The local stack then publishes an unusable key and third-party JWT verification fails; remote JWK objects should retain their complete fetched representation rather than being normalized through the narrower local-key type.

AGENTS.md reference: apps/cli/AGENTS.md:L52-L53


Effect.runForkWith(context)(exportSpanToNdjson(span, telemetryRuntime.tracesDir));

P2 Badge Drain NDJSON exports before command shutdown

When a short-lived command ends immediately after its final span, onSpanEnd now launches the filesystem append as an unowned runtime fiber and neither retains nor awaits it. The previous synchronous append completed before span termination returned, whereas the process can now exit with the last telemetry record missing or partially unwritten; own these export fibers and drain them during tracing-layer teardown.

AGENTS.md reference: AGENTS.md:L115-L117


.pipe(Effect.timeout("500 millis"));

P2 Badge Extend Bun's control timeout through JSON decoding

When a stale daemon or another listener on a deterministic control port returns 200 headers but never completes its owner-status body, this 500 ms timeout ends as soon as execute yields the response and the subsequent response.json waits forever. Managed discovery can therefore hang instead of rejecting the candidate and continuing recovery; keep the body decode inside the same timeout, as the previous signal-backed fetch did.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jgoux

jgoux commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Automated review round 3 triage (final bounded pass):

Fixed in 435a2d3:

  • preserve all ambient SUPABASE_* overrides without config.toml
  • skip symlink entries before recursive function asset traversal
  • restore the 30-second finite daemon-request timeout while preserving caller cancellation and long-lived streams

Confirmed but deferred from this PR after reaching the automated-review loop cap:

  • interruption-window and stale-directory cleanup for temporary function runtime config artifacts (cleanup reliability; no normal successful-path corruption)
  • custom Clock propagation when aging malformed port claims (production default clock behavior is unchanged)
  • draining detached replay recording work during stop (the fire-and-forget lifetime predates this PR; the async write makes the record-mode durability risk more visible)

These deferrals are recorded here for human review rather than silently dropped. The selected fixes have focused regression coverage and the affected CLI/stack quality plus unit/integration gates pass locally. No further automated fix rounds are planned; this is ready for human review.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 435a2d36f3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/src/legacy/shared/legacy-project-environment.ts Outdated
Comment thread apps/cli/src/legacy/shared/legacy-local-config-values.ts
Comment thread apps/cli/src/shared/auth/jwks.ts Outdated
Comment thread packages/config/src/node.ts Outdated
@jgoux

jgoux commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Final automated-review pass, including #6304 (comment), is addressed by 8bb6933.\n\nI validated each report against the actual Effect execution path and the previous Go behavior before changing code. All seven items in that report were reproducible or represented concrete compatibility regressions:\n\n- JWKS timeout now covers request execution, status validation, and JSON body decoding.\n- Resolved project environment values, including BITBUCKET_CLONE_DIR, now reach both function volume creation and bind-mount decisions in deploy, download, serve, and start.\n- DNS fetch and body decoding share one cancellation signal.\n- Command correlation IDs use the injected Crypto service for UUIDv4 values.\n- Remote JWK JSON is preserved losslessly, matching the Go RawMessage behavior; local signing keys remain strictly validated.\n- NDJSON export fibers are scoped, owned, and drained before teardown.\n- Bun control-request timeout now covers JSON body decoding too.\n\nThe four newer inline findings are also addressed: empty SUPABASE_ENV defaults to development, known environment-override validation failures stay in the typed error channel, the duplicate JWKS timeout report is covered by the same fix, and Node/Bun config facades preserve explicit empty ambient values.\n\nI considered pushback explicitly. None was warranted after reproduction: the two initially ambiguous cases—remote JWK extension fields and empty ambient environment values—were confirmed by the Go source and a direct config-loader reproduction. The fixes remain narrow; no compatibility shim or speculative abstraction was added.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8bb69332f2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/stack/src/platform-node.ts Outdated
Comment thread apps/cli/src/shared/functions/deploy.ts
Comment thread packages/stack/src/ApiProxy.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 757ca02d82

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/src/shared/functions/serve.ts Outdated
Comment thread apps/cli/src/shared/functions/serve.ts Outdated
Comment thread apps/cli/src/shared/functions/serve.ts
Comment thread apps/cli/src/legacy/commands/sso/sso.format.ts Outdated
Comment thread apps/cli/src/legacy/commands/db/schema/declarative/declarative.smart-target.ts Outdated
@jgoux

jgoux commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Final bounded automated-review pass is complete at cbd93af.

Accepted and fixed:

  • use public Effect predicates for optional env-file NotFound recovery
  • remove deleted-implementation framing from the stable TypeScript shell
  • prefix the shared legacy SSO formatter export
  • restore full libpq runtime resolution for interactive declarative custom targets, including service files, pgpass, OS defaults, and explicit URL/keyword-DSN file paths

Rejected after reproduction/architecture triage:

  • propagating Path through the functions serve helper graph. The CLI is Bun-only at this boundary, BunPath is the pure Node path implementation, no alternate supplied Path is reachable, and no behavioral defect was demonstrated. The proposed change would add broad indirection for no runtime benefit.

The earlier top-level review at issuecomment-5386062423 was addressed separately in 8bb6933 and documented in issuecomment-5387281854. All review threads are resolved, the local no-cache quality/unit/integration matrix passes, and the fresh GitHub code-quality, unit/integration, e2e, and preview workflows are green.

We have reached the automated-review loop cap. Requesting human review; further automated findings should be triaged as signals rather than applied automatically.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cbd93af8a3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/stack/src/cleanup.ts Outdated
Comment thread apps/cli/src/shared/telemetry/exporters/ndjson.ts Outdated
@jgoux
jgoux force-pushed the chore/effect-linter branch from cbd93af to 214426e Compare August 23, 2026 22:29
@jgoux
jgoux changed the base branch from develop to feat/remote-stack-control-plane August 23, 2026 22:29
Comment thread apps/cli/scripts/propose-release-notes.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

error.reason._tag === "NotFound"

P1 Badge Narrow missing-file errors with Predicate.isTagged

Replace the direct error.reason._tag inspection with Predicate.isTagged(error.reason, "NotFound"). This recovery path runs whenever an optional project dotenv file is absent, and directly inspecting Effect's runtime representation violates the repository requirement to use supported narrowing helpers, coupling normal config loading to internal representation details.

AGENTS.md reference: AGENTS.md:L169-L175


return yield* first._tag === "LegacyUnlinkTempRemovalError"

P1 Badge Narrow the combined unlink error with Predicate.isTagged

Replace the direct first._tag check with Predicate.isTagged(first, "LegacyUnlinkTempRemovalError"). When both unlink cleanup operations fail, this branch chooses the resulting domain error by inspecting its runtime representation, which repository guidance explicitly prohibits for narrowing tagged domain variants.

AGENTS.md reference: AGENTS.md:L169-L175


expect(exit._tag).toBe("Failure");
if (exit._tag === "Failure") {

P1 Badge Assert Exit variants through Exit.isFailure

Use Exit.isFailure(exit) for both this assertion and the following narrowing instead of reading exit._tag. The repository explicitly requires tests to use public Effect helpers rather than inspecting runtime representations, so this newly added failure-path test should follow the supported Exit API.

AGENTS.md reference: AGENTS.md:L169-L176


type:
event._tag === "Create" ? "create" : event._tag === "Remove" ? "delete" : "update",

P1 Badge Match filesystem watch events exhaustively

Replace these direct event._tag checks and the fallback-to-update ternary with an exhaustive Match over the filesystem watch-event variants. Besides inspecting Effect's runtime representation directly, the current fallback silently classifies any future event variant as an update instead of producing the required type error at this behaviorally relevant event handler.

AGENTS.md reference: AGENTS.md:L169-L178


Effect.catchCause((cause) =>
Effect.all([
SubscriptionRef.set(errorRef, Cause.pretty(cause)),
SubscriptionRef.set(phaseRef, "failed"),
]).pipe(Effect.asVoid),

P1 Badge Preserve interruption when the state stream shuts down

Handle only the expected stream failure here and return interruption or defects unchanged with Effect.failCause. During normal dashboard-layer teardown, forkScoped interrupts this stream, but this unrestricted catchCause converts that interruption into success after setting the dashboard phase to failed, so a clean shutdown can briefly publish a false failure and the fiber loses its interruption semantics.

AGENTS.md reference: AGENTS.md:L157-L165

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jgoux jgoux added the run-ci Run full develop CI (tests + preview pkgs) on drafts and non-develop PRs. label Aug 23, 2026

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2edae15c6c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/scripts/build.ts
Comment thread apps/cli/src/legacy/commands/start/lib/legacy-env-or-default.ts
@jgoux

jgoux commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Automated P1 cleanup pass is complete in a7c282d. I accepted the five findings in issuecomment-5388858414 after checking their actual control-flow impact: both missing-file paths and combined unlink errors now use supported tagged predicates; the credentials tests use Exit helpers throughout; filesystem watch events are matched exhaustively; and dashboard state catches only typed stream failures so interruption and defects retain their semantics. The two newer inline regressions are also fixed: compiled builds restore their immutable build ID define, and injected project environment capture preserves the established unprefixed Kong and Vector overrides.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7c282d0b3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/cli/src/shared/runtime/config-environment.ts Outdated
Comment thread apps/cli/src/shared/telemetry/posthog-client.unit.test.ts Outdated
Comment thread apps/cli/src/shared/output/output.layer.ts

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d12a47a5f6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/config/src/io.ts
@@ -760,7 +761,6 @@ export const loadProjectConfigFile = Effect.fnUntraced(function* (
options?.projectEnv ??
(yield* loadProjectEnvironment({
cwd: projectRoot,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Pass ambient env into direct config loads

When an Effect-native caller invokes loadProjectConfig without options.projectEnv, shell-only variables are no longer included in interpolation. Direct callers such as inferFunctionsManifest and the next-shell start/status handlers still use that form, so a config containing a numeric value such as port = "env(SUPABASE_DB_PORT)" now fails decoding when the variable exists only in the shell, while string references remain unresolved. The Node/Bun loadProjectConfig facades compensate for this, but loadFunctionsManifest and these internal callers bypass that facade; materialize the injected environment at their composition boundary and pass the resulting projectEnv.

AGENTS.md reference: AGENTS.md:L101-L108

Useful? React with 👍 / 👎.

Comment on lines +776 to +778
if (params.scenario.name !== null) {
params.scenario.log.push({ request: normalized.request, response: normalized.response });
yield* writeScenarioInteractions(

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Serialize all scenario fixture writes

When record mode handles concurrent requests for different normalized fixture keys, each request runs under a different key-specific semaphore but both mutate the same scenario.log and asynchronously overwrite the same interactions.json. Even without teardown, one writer can encode an older snapshot and finish after a newer writer, dropping the later interaction or interleaving file writes; the previous synchronous write could not yield between the append and overwrite. Use a scenario-wide semaphore or a single writer for the shared scenario log and file.

AGENTS.md reference: AGENTS.md:L118-L122

Useful? React with 👍 / 👎.

Comment on lines +79 to +80
home:
home !== undefined && home.length > 0 ? home : Option.getOrUndefined(values.userProfile),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Fall back to the OS home for Docker contexts

When HOME, USERPROFILE, and DOCKER_CONFIG are absent—for example under a minimal service or cron environment—this leaves home undefined even though the OS account still has a home directory. dockerConfigDir then skips ~/.docker/config.json and the context store entirely, so commands using a non-default Docker context fall back to 127.0.0.1 while Docker operates against the remote daemon; the previous node:os homedir() lookup retained the OS-account fallback. Obtain the home directory from the injected runtime/OS service when neither environment variable is usable.

AGENTS.md reference: apps/cli/AGENTS.md:L52-L53

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-ci Run full develop CI (tests + preview pkgs) on drafts and non-develop PRs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant