authorgravatar for ethorelli@gmail.comErik Thorelli <ethorelli@gmail.com> 2026-10-06 14:26:16-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-06 14:26:16-07:00
log7bee189dfb5cd6807457e98af0c2f95f5ed50edd
treee70494d8e8584ac543de8df0cd6f477e09ce9446
parentfbe5df2d4b630d13adc8fe2d38cab354e6d66d67
signature Signed by PGP key B5690EEEBB952194

chore(tsconfig): turn off the Schema-over-JSON diagnostic in test files (#16375)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

32 files changed, 14 insertions(+), 192 deletions(-)

apps/mobile/src/features/cloud/linkEnvironment.test.ts-2
...@@ -293,7 +293,6 @@ describe("mobile cloud link environment client", () => {...@@ -293,7 +293,6 @@ describe("mobile cloud link environment client", () => {
293 const bodies: Array<unknown> = [];293 const bodies: Array<unknown> = [];
294 const fetchMock = vi.fn((url: string | URL, init?: RequestInit) => {294 const fetchMock = vi.fn((url: string | URL, init?: RequestInit) => {
295 if (init?.body) {295 if (init?.body) {
296 // @effect-diagnostics-next-line preferSchemaOverJson:off
297 bodies.push(JSON.parse(requestBodyText(init.body)));296 bodies.push(JSON.parse(requestBodyText(init.body)));
298 }297 }
299 if (String(url).endsWith("/v1/client/environment-link-challenges")) {298 if (String(url).endsWith("/v1/client/environment-link-challenges")) {
...@@ -348,7 +347,6 @@ describe("mobile cloud link environment client", () => {...@@ -348,7 +347,6 @@ describe("mobile cloud link environment client", () => {
348 const bodies: Array<Record<string, unknown>> = [];347 const bodies: Array<Record<string, unknown>> = [];
349 const fetchMock = vi.fn((url: string | URL, init?: RequestInit) => {348 const fetchMock = vi.fn((url: string | URL, init?: RequestInit) => {
350 if (init?.body) {349 if (init?.body) {
351 // @effect-diagnostics-next-line preferSchemaOverJson:off
352 bodies.push(JSON.parse(requestBodyText(init.body)) as Record<string, unknown>);350 bodies.push(JSON.parse(requestBodyText(init.body)) as Record<string, unknown>);
353 }351 }
354 if (String(url).endsWith("/v1/client/environment-link-challenges")) {352 if (String(url).endsWith("/v1/client/environment-link-challenges")) {
apps/server/src/cli/config.test.ts-5
...@@ -650,7 +650,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {...@@ -650,7 +650,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {
650 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });650 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });
651 yield* fs.writeFileString(651 yield* fs.writeFileString(
652 derivedPaths.settingsPath,652 derivedPaths.settingsPath,
653 // @effect-diagnostics-next-line preferSchemaOverJson:off
654 `${JSON.stringify({653 `${JSON.stringify({
655 observability: {654 observability: {
656 otlpTracesUrl: "http://localhost:4318/v1/traces",655 otlpTracesUrl: "http://localhost:4318/v1/traces",
...@@ -722,7 +721,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {...@@ -722,7 +721,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {
722 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });721 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });
723 yield* fs.writeFileString(722 yield* fs.writeFileString(
724 derivedPaths.settingsPath,723 derivedPaths.settingsPath,
725 // @effect-diagnostics-next-line preferSchemaOverJson:off
726 `${JSON.stringify({724 `${JSON.stringify({
727 observability: {725 observability: {
728 otlpTracesUrl: "http://localhost:4318/v1/traces",726 otlpTracesUrl: "http://localhost:4318/v1/traces",
...@@ -774,7 +772,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {...@@ -774,7 +772,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {
774 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });772 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });
775 yield* fs.writeFileString(773 yield* fs.writeFileString(
776 derivedPaths.settingsPath,774 derivedPaths.settingsPath,
777 // @effect-diagnostics-next-line preferSchemaOverJson:off
778 `${JSON.stringify({775 `${JSON.stringify({
779 observability: {776 observability: {
780 otlpTracesUrl: "http://localhost:4318/v1/traces",777 otlpTracesUrl: "http://localhost:4318/v1/traces",
...@@ -1073,7 +1070,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {...@@ -1073,7 +1070,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {
1073 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });1070 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });
1074 yield* fs.writeFileString(1071 yield* fs.writeFileString(
1075 derivedPaths.settingsPath,1072 derivedPaths.settingsPath,
1076 // @effect-diagnostics-next-line preferSchemaOverJson:off
1077 `${JSON.stringify({ observability: { otlpLogsUrl: "http://settings:4318/v1/logs" } })}\n`,1073 `${JSON.stringify({ observability: { otlpLogsUrl: "http://settings:4318/v1/logs" } })}\n`,
1078 );1074 );
10791075
...@@ -1145,7 +1141,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {...@@ -1145,7 +1141,6 @@ it.layer(NodeServices.layer)("cli config resolution", (it) => {
1145 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });1141 yield* fs.makeDirectory(path.dirname(derivedPaths.settingsPath), { recursive: true });
1146 yield* fs.writeFileString(1142 yield* fs.writeFileString(
1147 derivedPaths.settingsPath,1143 derivedPaths.settingsPath,
1148 // @effect-diagnostics-next-line preferSchemaOverJson:off
1149 `${JSON.stringify({ observability: { otlpLogsUrl: "http://settings:4318/v1/logs" } })}\n`,1144 `${JSON.stringify({ observability: { otlpLogsUrl: "http://settings:4318/v1/logs" } })}\n`,
1150 );1145 );
11511146
apps/server/src/cli/pair.test.ts-1
...@@ -173,7 +173,6 @@ describe("t3 pair", () => {...@@ -173,7 +173,6 @@ describe("t3 pair", () => {
173 const listed = yield* captureStdout(173 const listed = yield* captureStdout(
174 runCli(["auth", "pairing", "list", "--base-dir", baseDir, "--json"]),174 runCli(["auth", "pairing", "list", "--base-dir", baseDir, "--json"]),
175 );175 );
176 // @effect-diagnostics-next-line preferSchemaOverJson:off - CLI JSON output is decoded as a presentation DTO.
177 const credentials = JSON.parse(listed) as ReadonlyArray<{ readonly label?: string }>;176 const credentials = JSON.parse(listed) as ReadonlyArray<{ readonly label?: string }>;
178 assert.equal(credentials.length, 1);177 assert.equal(credentials.length, 1);
179 assert.equal(credentials[0]?.label, "t3 pair");178 assert.equal(credentials[0]?.label, "t3 pair");
apps/server/src/cloud/bootService.test.ts-4
...@@ -359,7 +359,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {...@@ -359,7 +359,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {
359 current: true,359 current: true,
360 installedVersion: "1.2.3",360 installedVersion: "1.2.3",
361 });361 });
362 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed launcher-owned test document.
363 const pendingState = JSON.stringify({362 const pendingState = JSON.stringify({
364 protocol: SERVICE_LAUNCHER_PROTOCOL,363 protocol: SERVICE_LAUNCHER_PROTOCOL,
365 activeVersion: "1.2.3",364 activeVersion: "1.2.3",
...@@ -546,7 +545,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {...@@ -546,7 +545,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {
546 Effect.gen(function* () {545 Effect.gen(function* () {
547 const { service, fs, statePath } = yield* makeHarness();546 const { service, fs, statePath } = yield* makeHarness();
548 yield* service.install();547 yield* service.install();
549 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed launcher-owned test document.
550 const pendingState = JSON.stringify({548 const pendingState = JSON.stringify({
551 protocol: SERVICE_LAUNCHER_PROTOCOL,549 protocol: SERVICE_LAUNCHER_PROTOCOL,
552 activeVersion: "1.2.3",550 activeVersion: "1.2.3",
...@@ -647,7 +645,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {...@@ -647,7 +645,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {
647 Effect.gen(function* () {645 Effect.gen(function* () {
648 const { service, fs, statePath, commands } = yield* makeHarness();646 const { service, fs, statePath, commands } = yield* makeHarness();
649 yield* service.install();647 yield* service.install();
650 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed launcher-owned test document.
651 const pendingState = JSON.stringify({648 const pendingState = JSON.stringify({
652 protocol: SERVICE_LAUNCHER_PROTOCOL - 1,649 protocol: SERVICE_LAUNCHER_PROTOCOL - 1,
653 activeVersion: "1.2.3",650 activeVersion: "1.2.3",
...@@ -808,7 +805,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {...@@ -808,7 +805,6 @@ it.layer(NodeServices.layer)("boot service install", (it) => {
808 const { service, fs, statePath, commands } = yield* makeHarness("darwin");805 const { service, fs, statePath, commands } = yield* makeHarness("darwin");
809 yield* service.install();806 yield* service.install();
810 const plistPath = (yield* service.status).unitPath;807 const plistPath = (yield* service.status).unitPath;
811 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed launcher-owned test document.
812 const pendingState = JSON.stringify({808 const pendingState = JSON.stringify({
813 protocol: SERVICE_LAUNCHER_PROTOCOL - 1,809 protocol: SERVICE_LAUNCHER_PROTOCOL - 1,
814 activeVersion: "1.2.3",810 activeVersion: "1.2.3",
apps/server/src/cloud/selfUpdate.test.ts-1
...@@ -84,7 +84,6 @@ const makeHarness = Effect.fn("test.make_self_update_harness")(function* (...@@ -84,7 +84,6 @@ const makeHarness = Effect.fn("test.make_self_update_harness")(function* (
84 launcherProtocol: SERVICE_LAUNCHER_PROTOCOL,84 launcherProtocol: SERVICE_LAUNCHER_PROTOCOL,
85 };85 };
86 return {86 return {
87 // @effect-diagnostics-next-line preferSchemaOverJson:off - fake child-process stdout.
88 stdout: JSON.stringify(result),87 stdout: JSON.stringify(result),
89 stderr: "",88 stderr: "",
90 code: ChildProcessSpawner.ExitCode(0),89 code: ChildProcessSpawner.ExitCode(0),
apps/server/src/device/SshDeviceHost.test.ts-1
...@@ -1,4 +1,3 @@...@@ -1,4 +1,3 @@
1// @effect-diagnostics preferSchemaOverJson:off - the external process fixture emits raw JSON over SSH stdout.
2import { expect, it } from "@effect/vitest";1import { expect, it } from "@effect/vitest";
3import * as NodeServices from "@effect/platform-node/NodeServices";2import * as NodeServices from "@effect/platform-node/NodeServices";
4import * as Net from "@t3tools/shared/Net";3import * as Net from "@t3tools/shared/Net";
apps/server/src/device/sshDeviceScript.test.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1// @effect-diagnostics nodeBuiltinImport:off globalFetchInEffect:off preferSchemaOverJson:off - verifies generated remote scripts using real shell and Node processes.1// @effect-diagnostics nodeBuiltinImport:off globalFetchInEffect:off - verifies generated remote scripts using real shell and Node processes.
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { HostProcessPlatform } from "@t3tools/shared/hostProcess";3import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
4import { describe, expect, it } from "@effect/vitest";4import { describe, expect, it } from "@effect/vitest";
apps/server/src/git/GitManager.test.ts-52
...@@ -790,7 +790,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -790,7 +790,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
790 const { manager } = yield* makeManager({790 const { manager } = yield* makeManager({
791 ghScenario: {791 ghScenario: {
792 prListSequence: [792 prListSequence: [
793 // @effect-diagnostics-next-line preferSchemaOverJson:off
794 JSON.stringify([793 JSON.stringify([
795 {794 {
796 number: 13,795 number: 13,
...@@ -835,7 +834,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -835,7 +834,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
835 const { manager } = yield* makeManager({834 const { manager } = yield* makeManager({
836 ghScenario: {835 ghScenario: {
837 prListSequence: [836 prListSequence: [
838 // @effect-diagnostics-next-line preferSchemaOverJson:off
839 JSON.stringify([837 JSON.stringify([
840 {838 {
841 number: 14,839 number: 14,
...@@ -875,7 +873,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -875,7 +873,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
875 const { manager } = yield* makeManager({873 const { manager } = yield* makeManager({
876 ghScenario: {874 ghScenario: {
877 prListSequence: [875 prListSequence: [
878 // @effect-diagnostics-next-line preferSchemaOverJson:off
879 JSON.stringify([876 JSON.stringify([
880 {877 {
881 number: 0,878 number: 0,
...@@ -928,7 +925,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -928,7 +925,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
928 const { manager } = yield* makeManager({925 const { manager } = yield* makeManager({
929 ghScenario: {926 ghScenario: {
930 prListSequence: [927 prListSequence: [
931 // @effect-diagnostics-next-line preferSchemaOverJson:off
932 JSON.stringify([928 JSON.stringify([
933 {929 {
934 number: 16,930 number: 16,
...@@ -1042,7 +1038,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1042,7 +1038,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1042 };1038 };
1043 const { manager, ghCalls } = yield* makeManager({1039 const { manager, ghCalls } = yield* makeManager({
1044 ghScenario: {1040 ghScenario: {
1045 // @effect-diagnostics-next-line preferSchemaOverJson:off
1046 prListSequence: [JSON.stringify([existingPr]), JSON.stringify([existingPr])],1041 prListSequence: [JSON.stringify([existingPr]), JSON.stringify([existingPr])],
1047 },1042 },
1048 });1043 });
...@@ -1095,7 +1090,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1095,7 +1090,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1095 ghScenario: {1090 ghScenario: {
1096 prListSequence: [1091 prListSequence: [
1097 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1092 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1098 // @effect-diagnostics-next-line preferSchemaOverJson:off
1099 JSON.stringify([1093 JSON.stringify([
1100 {1094 {
1101 number: 217,1095 number: 217,
...@@ -1138,7 +1132,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1138,7 +1132,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1138 prListSequence: [1132 prListSequence: [
1139 "[]",1133 "[]",
1140 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1134 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1141 // @effect-diagnostics-next-line preferSchemaOverJson:off
1142 JSON.stringify([1135 JSON.stringify([
1143 {1136 {
1144 number: 114,1137 number: 114,
...@@ -1244,7 +1237,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1244,7 +1237,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1244 ghScenario: {1237 ghScenario: {
1245 prListSequence: [1238 prListSequence: [
1246 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1239 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1247 // @effect-diagnostics-next-line preferSchemaOverJson:off
1248 JSON.stringify([1240 JSON.stringify([
1249 {1241 {
1250 number: 216,1242 number: 216,
...@@ -1296,7 +1288,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1296,7 +1288,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1296 ghScenario: {1288 ghScenario: {
1297 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1289 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1298 prListSequence: [1290 prListSequence: [
1299 // @effect-diagnostics-next-line preferSchemaOverJson:off
1300 JSON.stringify([1291 JSON.stringify([
1301 {1292 {
1302 number: 221,1293 number: 221,
...@@ -1347,7 +1338,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1347,7 +1338,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1347 ghScenario: {1338 ghScenario: {
1348 prListSequence: [1339 prListSequence: [
1349 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1340 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1350 // @effect-diagnostics-next-line preferSchemaOverJson:off
1351 JSON.stringify([1341 JSON.stringify([
1352 {1342 {
1353 number: 217,1343 number: 217,
...@@ -1410,7 +1400,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1410,7 +1400,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1410 ghScenario: {1400 ghScenario: {
1411 prListByHeadSelector: {1401 prListByHeadSelector: {
1412 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1402 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1413 // @effect-diagnostics-next-line preferSchemaOverJson:off
1414 "feature/deleted-fork-branch": JSON.stringify([1403 "feature/deleted-fork-branch": JSON.stringify([
1415 {1404 {
1416 number: 218,1405 number: 218,
...@@ -1492,7 +1481,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1492,7 +1481,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1492 ghScenario: {1481 ghScenario: {
1493 prListSequence: [1482 prListSequence: [
1494 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1483 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1495 // @effect-diagnostics-next-line preferSchemaOverJson:off
1496 JSON.stringify([1484 JSON.stringify([
1497 {1485 {
1498 number: 219,1486 number: 219,
...@@ -1545,7 +1533,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1545,7 +1533,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1545 ghScenario: {1533 ghScenario: {
1546 prListSequence: [1534 prListSequence: [
1547 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.1535 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
1548 // @effect-diagnostics-next-line preferSchemaOverJson:off
1549 JSON.stringify([1536 JSON.stringify([
1550 {1537 {
1551 number: 220,1538 number: 220,
...@@ -1719,7 +1706,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1719,7 +1706,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1719 const { manager, ghCalls } = yield* makeManager({1706 const { manager, ghCalls } = yield* makeManager({
1720 ghScenario: {1707 ghScenario: {
1721 prListSequence: [1708 prListSequence: [
1722 // @effect-diagnostics-next-line preferSchemaOverJson:off
1723 JSON.stringify([1709 JSON.stringify([
1724 {1710 {
1725 number: 215,1711 number: 215,
...@@ -1768,7 +1754,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1768,7 +1754,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1768 const { manager, ghCalls } = yield* makeManager({1754 const { manager, ghCalls } = yield* makeManager({
1769 ghScenario: {1755 ghScenario: {
1770 prListSequence: [1756 prListSequence: [
1771 // @effect-diagnostics-next-line preferSchemaOverJson:off
1772 JSON.stringify([1757 JSON.stringify([
1773 {1758 {
1774 number: 214,1759 number: 214,
...@@ -1991,7 +1976,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -1991,7 +1976,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
1991 const { manager } = yield* makeManager({1976 const { manager } = yield* makeManager({
1992 ghScenario: {1977 ghScenario: {
1993 prListSequence: [1978 prListSequence: [
1994 // @effect-diagnostics-next-line preferSchemaOverJson:off
1995 JSON.stringify([1979 JSON.stringify([
1996 {1980 {
1997 number: 1661,1981 number: 1661,
...@@ -2045,7 +2029,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2045,7 +2029,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2045 const { manager, ghCalls } = yield* makeManager({2029 const { manager, ghCalls } = yield* makeManager({
2046 ghScenario: {2030 ghScenario: {
2047 prListSequence: [2031 prListSequence: [
2048 // @effect-diagnostics-next-line preferSchemaOverJson:off
2049 JSON.stringify([2032 JSON.stringify([
2050 {2033 {
2051 number: 488,2034 number: 488,
...@@ -2111,7 +2094,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2111,7 +2094,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2111 const { manager, ghCalls } = yield* makeManager({2094 const { manager, ghCalls } = yield* makeManager({
2112 ghScenario: {2095 ghScenario: {
2113 prListByHeadSelector: {2096 prListByHeadSelector: {
2114 // @effect-diagnostics-next-line preferSchemaOverJson:off
2115 main: JSON.stringify([2097 main: JSON.stringify([
2116 {2098 {
2117 number: 777,2099 number: 777,
...@@ -2187,7 +2169,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2187,7 +2169,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2187 const { manager, ghCalls } = yield* makeManager({2169 const { manager, ghCalls } = yield* makeManager({
2188 ghScenario: {2170 ghScenario: {
2189 prListByHeadSelector: {2171 prListByHeadSelector: {
2190 // @effect-diagnostics-next-line preferSchemaOverJson:off
2191 "effect-atom": JSON.stringify([2172 "effect-atom": JSON.stringify([
2192 {2173 {
2193 number: 1618,2174 number: 1618,
...@@ -2199,7 +2180,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2199,7 +2180,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2199 updatedAt: "2026-03-01T10:00:00Z",2180 updatedAt: "2026-03-01T10:00:00Z",
2200 },2181 },
2201 ]),2182 ]),
2202 // @effect-diagnostics-next-line preferSchemaOverJson:off
2203 "upstream/effect-atom": JSON.stringify([2183 "upstream/effect-atom": JSON.stringify([
2204 {2184 {
2205 number: 1518,2185 number: 1518,
...@@ -2250,7 +2230,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2250,7 +2230,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2250 const { manager } = yield* makeManager({2230 const { manager } = yield* makeManager({
2251 ghScenario: {2231 ghScenario: {
2252 prListSequence: [2232 prListSequence: [
2253 // @effect-diagnostics-next-line preferSchemaOverJson:off
2254 JSON.stringify([2233 JSON.stringify([
2255 {2234 {
2256 number: 22,2235 number: 22,
...@@ -2289,7 +2268,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2289,7 +2268,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2289 const { manager } = yield* makeManager({2268 const { manager } = yield* makeManager({
2290 ghScenario: {2269 ghScenario: {
2291 prListSequence: [2270 prListSequence: [
2292 // @effect-diagnostics-next-line preferSchemaOverJson:off
2293 JSON.stringify([2271 JSON.stringify([
2294 {2272 {
2295 number: 23,2273 number: 23,
...@@ -2325,7 +2303,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2325,7 +2303,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2325 const { manager, ghCalls } = yield* makeManager({2303 const { manager, ghCalls } = yield* makeManager({
2326 ghScenario: {2304 ghScenario: {
2327 prListSequence: [2305 prListSequence: [
2328 // @effect-diagnostics-next-line preferSchemaOverJson:off
2329 JSON.stringify([2306 JSON.stringify([
2330 {2307 {
2331 number: 54,2308 number: 54,
...@@ -2365,7 +2342,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2365,7 +2342,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2365 ghScenario: {2342 ghScenario: {
2366 prListByHeadSelector: {2343 prListByHeadSelector: {
2367 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.2344 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
2368 // @effect-diagnostics-next-line preferSchemaOverJson:off
2369 "feature/pushed-plain": JSON.stringify([2345 "feature/pushed-plain": JSON.stringify([
2370 {2346 {
2371 number: 88,2347 number: 88,
...@@ -2420,7 +2396,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2420,7 +2396,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2420 ghScenario: {2396 ghScenario: {
2421 prListByHeadSelector: {2397 prListByHeadSelector: {
2422 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.2398 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
2423 // @effect-diagnostics-next-line preferSchemaOverJson:off
2424 "feature/fork-plain": JSON.stringify([2399 "feature/fork-plain": JSON.stringify([
2425 {2400 {
2426 number: 89,2401 number: 89,
...@@ -2476,7 +2451,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2476,7 +2451,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2476 ghScenario: {2451 ghScenario: {
2477 prListByHeadSelector: {2452 prListByHeadSelector: {
2478 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.2453 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
2479 // @effect-diagnostics-next-line preferSchemaOverJson:off
2480 "feature/fork-settle": JSON.stringify([2454 "feature/fork-settle": JSON.stringify([
2481 {2455 {
2482 number: 91,2456 number: 91,
...@@ -2524,7 +2498,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2524,7 +2498,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2524 ghScenario: {2498 ghScenario: {
2525 prListByHeadSelector: {2499 prListByHeadSelector: {
2526 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.2500 // Fake gh returns raw JSON stdout, matching the CLI boundary under test.
2527 // @effect-diagnostics-next-line preferSchemaOverJson:off
2528 "feature/sticky-plain": JSON.stringify([2501 "feature/sticky-plain": JSON.stringify([
2529 {2502 {
2530 number: 90,2503 number: 90,
...@@ -2564,7 +2537,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2564,7 +2537,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2564 const { manager } = yield* makeManager({2537 const { manager } = yield* makeManager({
2565 ghScenario: {2538 ghScenario: {
2566 prListSequence: [2539 prListSequence: [
2567 // @effect-diagnostics-next-line preferSchemaOverJson:off
2568 JSON.stringify([2540 JSON.stringify([
2569 {2541 {
2570 number: 45,2542 number: 45,
...@@ -2698,7 +2670,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2698,7 +2670,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2698 };2670 };
2699 const { manager } = yield* makeManager({2671 const { manager } = yield* makeManager({
2700 ghScenario: {2672 ghScenario: {
2701 // @effect-diagnostics-next-line preferSchemaOverJson:off
2702 prListSequence: [JSON.stringify([existingPr])],2673 prListSequence: [JSON.stringify([existingPr])],
2703 failWith: new GitHubCli.GitHubCliUnavailableError({2674 failWith: new GitHubCli.GitHubCliUnavailableError({
2704 command: "gh",2675 command: "gh",
...@@ -2742,7 +2713,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2742,7 +2713,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2742 };2713 };
2743 const { manager } = yield* makeManager({2714 const { manager } = yield* makeManager({
2744 ghScenario: {2715 ghScenario: {
2745 // @effect-diagnostics-next-line preferSchemaOverJson:off
2746 prListSequence: [JSON.stringify([existingPr])],2716 prListSequence: [JSON.stringify([existingPr])],
2747 failWith: new GitHubCli.GitHubCliUnavailableError({2717 failWith: new GitHubCli.GitHubCliUnavailableError({
2748 command: "gh",2718 command: "gh",
...@@ -2791,7 +2761,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2791,7 +2761,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2791 };2761 };
2792 const { manager } = yield* makeManager({2762 const { manager } = yield* makeManager({
2793 ghScenario: {2763 ghScenario: {
2794 // @effect-diagnostics-next-line preferSchemaOverJson:off
2795 prListSequence: [JSON.stringify([existingPr])],2764 prListSequence: [JSON.stringify([existingPr])],
2796 failWith: new GitHubCli.GitHubCliUnavailableError({2765 failWith: new GitHubCli.GitHubCliUnavailableError({
2797 command: "gh",2766 command: "gh",
...@@ -2831,7 +2800,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2831,7 +2800,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2831 };2800 };
2832 const { manager } = yield* makeManager({2801 const { manager } = yield* makeManager({
2833 ghScenario: {2802 ghScenario: {
2834 // @effect-diagnostics-next-line preferSchemaOverJson:off
2835 prListSequence: [JSON.stringify([existingPr])],2803 prListSequence: [JSON.stringify([existingPr])],
2836 failWith: new GitHubCli.GitHubCliUnavailableError({2804 failWith: new GitHubCli.GitHubCliUnavailableError({
2837 command: "gh",2805 command: "gh",
...@@ -2874,7 +2842,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -2874,7 +2842,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
2874 };2842 };
2875 const { manager } = yield* makeManager({2843 const { manager } = yield* makeManager({
2876 ghScenario: {2844 ghScenario: {
2877 // @effect-diagnostics-next-line preferSchemaOverJson:off
2878 prListSequence: [JSON.stringify([existingPr])],2845 prListSequence: [JSON.stringify([existingPr])],
2879 failWith: new GitHubCli.GitHubCliUnavailableError({2846 failWith: new GitHubCli.GitHubCliUnavailableError({
2880 command: "gh",2847 command: "gh",
...@@ -3469,7 +3436,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3469,7 +3436,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3469 ghScenario: {3436 ghScenario: {
3470 prListSequence: [3437 prListSequence: [
3471 "[]",3438 "[]",
3472 // @effect-diagnostics-next-line preferSchemaOverJson:off
3473 JSON.stringify([3439 JSON.stringify([
3474 {3440 {
3475 number: 77,3441 number: 77,
...@@ -3605,7 +3571,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3605,7 +3571,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3605 ghScenario: {3571 ghScenario: {
3606 prListSequence: [3572 prListSequence: [
3607 "[]",3573 "[]",
3608 // @effect-diagnostics-next-line preferSchemaOverJson:off
3609 JSON.stringify([3574 JSON.stringify([
3610 {3575 {
3611 number: 303,3576 number: 303,
...@@ -3652,7 +3617,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3652,7 +3617,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3652 ghScenario: {3617 ghScenario: {
3653 prListSequence: [3618 prListSequence: [
3654 "[]",3619 "[]",
3655 // @effect-diagnostics-next-line preferSchemaOverJson:off
3656 JSON.stringify([3620 JSON.stringify([
3657 {3621 {
3658 number: 404,3622 number: 404,
...@@ -3704,7 +3668,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3704,7 +3668,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3704 defaultBranch: "",3668 defaultBranch: "",
3705 prListSequence: [3669 prListSequence: [
3706 "[]",3670 "[]",
3707 // @effect-diagnostics-next-line preferSchemaOverJson:off
3708 JSON.stringify([3671 JSON.stringify([
3709 {3672 {
3710 number: 505,3673 number: 505,
...@@ -3744,7 +3707,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3744,7 +3707,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3744 const { manager, ghCalls } = yield* makeManager({3707 const { manager, ghCalls } = yield* makeManager({
3745 ghScenario: {3708 ghScenario: {
3746 prListSequence: [3709 prListSequence: [
3747 // @effect-diagnostics-next-line preferSchemaOverJson:off
3748 JSON.stringify([3710 JSON.stringify([
3749 {3711 {
3750 number: 42,3712 number: 42,
...@@ -3798,7 +3760,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3798,7 +3760,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3798 const { manager, ghCalls } = yield* makeManager({3760 const { manager, ghCalls } = yield* makeManager({
3799 ghScenario: {3761 ghScenario: {
3800 prListSequence: [3762 prListSequence: [
3801 // @effect-diagnostics-next-line preferSchemaOverJson:off
3802 JSON.stringify([3763 JSON.stringify([
3803 {3764 {
3804 number: 142,3765 number: 142,
...@@ -3875,7 +3836,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3875,7 +3836,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3875 const { manager, ghCalls } = yield* makeManager({3836 const { manager, ghCalls } = yield* makeManager({
3876 ghScenario: {3837 ghScenario: {
3877 prListByHeadSelector: {3838 prListByHeadSelector: {
3878 // @effect-diagnostics-next-line preferSchemaOverJson:off
3879 "effect-atom": JSON.stringify([3839 "effect-atom": JSON.stringify([
3880 {3840 {
3881 number: 1618,3841 number: 1618,
...@@ -3885,7 +3845,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3885,7 +3845,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3885 headRefName: "effect-atom",3845 headRefName: "effect-atom",
3886 },3846 },
3887 ]),3847 ]),
3888 // @effect-diagnostics-next-line preferSchemaOverJson:off
3889 "upstream/effect-atom": JSON.stringify([3848 "upstream/effect-atom": JSON.stringify([
3890 {3849 {
3891 number: 1518,3850 number: 1518,
...@@ -3935,9 +3894,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -3935,9 +3894,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
3935 const { manager, ghCalls } = yield* makeManager({3894 const { manager, ghCalls } = yield* makeManager({
3936 ghScenario: {3895 ghScenario: {
3937 prListByHeadSelector: {3896 prListByHeadSelector: {
3938 // @effect-diagnostics-next-line preferSchemaOverJson:off
3939 "t3code/pr-142/statemachine": JSON.stringify([]),3897 "t3code/pr-142/statemachine": JSON.stringify([]),
3940 // @effect-diagnostics-next-line preferSchemaOverJson:off
3941 statemachine: JSON.stringify([3898 statemachine: JSON.stringify([
3942 {3899 {
3943 number: 41,3900 number: 41,
...@@ -4003,7 +3960,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4003,7 +3960,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4003 const { manager, ghCalls } = yield* makeManager({3960 const { manager, ghCalls } = yield* makeManager({
4004 ghScenario: {3961 ghScenario: {
4005 prListByHeadSelector: {3962 prListByHeadSelector: {
4006 // @effect-diagnostics-next-line preferSchemaOverJson:off
4007 statemachine: JSON.stringify([3963 statemachine: JSON.stringify([
4008 {3964 {
4009 number: 142,3965 number: 142,
...@@ -4021,7 +3977,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4021,7 +3977,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4021 },3977 },
4022 },3978 },
4023 ]),3979 ]),
4024 // @effect-diagnostics-next-line preferSchemaOverJson:off
4025 "t3code/pr-142/statemachine": JSON.stringify([]),3980 "t3code/pr-142/statemachine": JSON.stringify([]),
4026 },3981 },
4027 },3982 },
...@@ -4264,7 +4219,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4264,7 +4219,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4264 ghScenario: {4219 ghScenario: {
4265 prListSequence: [4220 prListSequence: [
4266 "[]",4221 "[]",
4267 // @effect-diagnostics-next-line preferSchemaOverJson:off
4268 JSON.stringify([4222 JSON.stringify([
4269 {4223 {
4270 number: 88,4224 number: 88,
...@@ -4385,7 +4339,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4385,7 +4339,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4385 const { manager, ghCalls } = yield* makeManager({4339 const { manager, ghCalls } = yield* makeManager({
4386 ghScenario: {4340 ghScenario: {
4387 prListSequence: [4341 prListSequence: [
4388 // @effect-diagnostics-next-line preferSchemaOverJson:off
4389 JSON.stringify([4342 JSON.stringify([
4390 {4343 {
4391 number: 1661,4344 number: 1661,
...@@ -4403,7 +4356,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4403,7 +4356,6 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4403 },4356 },
4404 },4357 },
4405 ]),4358 ]),
4406 // @effect-diagnostics-next-line preferSchemaOverJson:off
4407 JSON.stringify([4359 JSON.stringify([
4408 {4360 {
4409 number: 188,4361 number: 188,
...@@ -4466,9 +4418,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -4466,9 +4418,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
4466 ghScenario: {4418 ghScenario: {
4467 prListSequenceByHeadSelector: {4419 prListSequenceByHeadSelector: {
4468 statemachine: [4420 statemachine: [
4469 // @effect-diagnostics-next-line preferSchemaOverJson:off
4470 JSON.stringify([]),4421 JSON.stringify([]),
4471 // @effect-diagnostics-next-line preferSchemaOverJson:off
4472 JSON.stringify([4422 JSON.stringify([
4473 {4423 {
4474 number: 188,4424 number: 188,
...@@ -6084,9 +6034,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {...@@ -6084,9 +6034,7 @@ it.layer(layerGitManagerTest)("GitManager", (it) => {
6084 const { manager } = yield* makeManager({6034 const { manager } = yield* makeManager({
6085 ghScenario: {6035 ghScenario: {
6086 prListSequence: [6036 prListSequence: [
6087 // @effect-diagnostics-next-line preferSchemaOverJson:off
6088 JSON.stringify([]),6037 JSON.stringify([]),
6089 // @effect-diagnostics-next-line preferSchemaOverJson:off
6090 JSON.stringify([6038 JSON.stringify([
6091 {6039 {
6092 number: 201,6040 number: 201,
apps/server/src/keybindings.test.ts-1
...@@ -219,7 +219,6 @@ it.layer(NodeServices.layer)("keybindings", (it) => {...@@ -219,7 +219,6 @@ it.layer(NodeServices.layer)("keybindings", (it) => {
219 const { keybindingsConfigPath } = yield* ServerConfig.ServerConfig;219 const { keybindingsConfigPath } = yield* ServerConfig.ServerConfig;
220 yield* fs.writeFileString(220 yield* fs.writeFileString(
221 keybindingsConfigPath,221 keybindingsConfigPath,
222 // @effect-diagnostics-next-line preferSchemaOverJson:off
223 JSON.stringify([222 JSON.stringify([
224 { key: "mod+j", command: "terminal.toggle" },223 { key: "mod+j", command: "terminal.toggle" },
225 { key: "mod+shift+d+o", command: "terminal.new" },224 { key: "mod+shift+d+o", command: "terminal.new" },
apps/server/src/mcp/AcpMcpOverAcpBridge.test.ts-1
...@@ -1,5 +1,4 @@...@@ -1,5 +1,4 @@
1// The bridge intentionally treats MCP JSON-RPC messages as opaque JSON.1// The bridge intentionally treats MCP JSON-RPC messages as opaque JSON.
2// @effect-diagnostics preferSchemaOverJson:off
3import { describe, expect, it } from "@effect/vitest";2import { describe, expect, it } from "@effect/vitest";
4import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
5import * as Fiber from "effect/Fiber";4import * as Fiber from "effect/Fiber";
apps/server/src/mcp/AcpMcpStdioBridge.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1// The harness asserts raw JSON-RPC wire strings, mirroring the bridge's1// The harness asserts raw JSON-RPC wire strings, mirroring the bridge's
2// schema-free passthrough.2// schema-free passthrough.
3// @effect-diagnostics nodeBuiltinImport:off globalTimers:off preferSchemaOverJson:off3// @effect-diagnostics nodeBuiltinImport:off globalTimers:off
4import * as NodeStream from "node:stream";4import * as NodeStream from "node:stream";
55
6import { describe, expect, it } from "@effect/vitest";6import { describe, expect, it } from "@effect/vitest";
apps/server/src/orchestration-v2/ProjectStore.test.ts-1
...@@ -44,7 +44,6 @@ it.layer(ProjectStore.layer.pipe(Layer.provideMerge(SqlitePersistence.layerMemor...@@ -44,7 +44,6 @@ it.layer(ProjectStore.layer.pipe(Layer.provideMerge(SqlitePersistence.layerMemor
44 FROM projection_projects44 FROM projection_projects
45 WHERE project_id = ${projectId}45 WHERE project_id = ${projectId}
46 `;46 `;
47 // @effect-diagnostics-next-line preferSchemaOverJson:off
48 assert.strictEqual(rows[0]?.defaultModelSelection, JSON.stringify(modelSelection));47 assert.strictEqual(rows[0]?.defaultModelSelection, JSON.stringify(modelSelection));
49 assert.deepStrictEqual(48 assert.deepStrictEqual(
50 Option.getOrNull(yield* projects.get(projectId))?.defaultModelSelection,49 Option.getOrNull(yield* projects.get(projectId))?.defaultModelSelection,
apps/server/src/persistence/Migrations/016_CanonicalizeModelSelections.test.ts-7
...@@ -265,7 +265,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -265,7 +265,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
265 FROM orchestration_events265 FROM orchestration_events
266 ORDER BY rowid ASC266 ORDER BY rowid ASC
267 `;267 `;
268 // @effect-diagnostics-next-line preferSchemaOverJson:off
269 assert.deepStrictEqual(JSON.parse(eventRows[0]!.payloadJson), {268 assert.deepStrictEqual(JSON.parse(eventRows[0]!.payloadJson), {
270 projectId: "project-1",269 projectId: "project-1",
271 title: "Project",270 title: "Project",
...@@ -281,7 +280,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -281,7 +280,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
281 createdAt: "2026-01-01T00:00:00.000Z",280 createdAt: "2026-01-01T00:00:00.000Z",
282 updatedAt: "2026-01-01T00:00:00.000Z",281 updatedAt: "2026-01-01T00:00:00.000Z",
283 });282 });
284 // @effect-diagnostics-next-line preferSchemaOverJson:off
285 assert.deepStrictEqual(JSON.parse(eventRows[1]!.payloadJson), {283 assert.deepStrictEqual(JSON.parse(eventRows[1]!.payloadJson), {
286 projectId: "project-2",284 projectId: "project-2",
287 title: "Fallback Project",285 title: "Fallback Project",
...@@ -297,7 +295,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -297,7 +295,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
297 createdAt: "2026-01-01T00:00:00.000Z",295 createdAt: "2026-01-01T00:00:00.000Z",
298 updatedAt: "2026-01-01T00:00:00.000Z",296 updatedAt: "2026-01-01T00:00:00.000Z",
299 });297 });
300 // @effect-diagnostics-next-line preferSchemaOverJson:off
301 assert.deepStrictEqual(JSON.parse(eventRows[2]!.payloadJson), {298 assert.deepStrictEqual(JSON.parse(eventRows[2]!.payloadJson), {
302 projectId: "project-3",299 projectId: "project-3",
303 title: "Null Model Project",300 title: "Null Model Project",
...@@ -307,7 +304,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -307,7 +304,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
307 createdAt: "2026-01-01T00:00:00.000Z",304 createdAt: "2026-01-01T00:00:00.000Z",
308 updatedAt: "2026-01-01T00:00:00.000Z",305 updatedAt: "2026-01-01T00:00:00.000Z",
309 });306 });
310 // @effect-diagnostics-next-line preferSchemaOverJson:off
311 assert.deepStrictEqual(JSON.parse(eventRows[3]!.payloadJson), {307 assert.deepStrictEqual(JSON.parse(eventRows[3]!.payloadJson), {
312 threadId: "thread-1",308 threadId: "thread-1",
313 projectId: "project-1",309 projectId: "project-1",
...@@ -327,7 +323,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -327,7 +323,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
327 createdAt: "2026-01-01T00:00:00.000Z",323 createdAt: "2026-01-01T00:00:00.000Z",
328 updatedAt: "2026-01-01T00:00:00.000Z",324 updatedAt: "2026-01-01T00:00:00.000Z",
329 });325 });
330 // @effect-diagnostics-next-line preferSchemaOverJson:off
331 assert.deepStrictEqual(JSON.parse(eventRows[4]!.payloadJson), {326 assert.deepStrictEqual(JSON.parse(eventRows[4]!.payloadJson), {
332 threadId: "thread-2",327 threadId: "thread-2",
333 projectId: "project-1",328 projectId: "project-1",
...@@ -346,7 +341,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -346,7 +341,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
346 createdAt: "2026-01-01T00:00:00.000Z",341 createdAt: "2026-01-01T00:00:00.000Z",
347 updatedAt: "2026-01-01T00:00:00.000Z",342 updatedAt: "2026-01-01T00:00:00.000Z",
348 });343 });
349 // @effect-diagnostics-next-line preferSchemaOverJson:off
350 assert.deepStrictEqual(JSON.parse(eventRows[5]!.payloadJson), {344 assert.deepStrictEqual(JSON.parse(eventRows[5]!.payloadJson), {
351 threadId: "thread-1",345 threadId: "thread-1",
352 turnId: "turn-1",346 turnId: "turn-1",
...@@ -360,7 +354,6 @@ layer("016_CanonicalizeModelSelections", (it) => {...@@ -360,7 +354,6 @@ layer("016_CanonicalizeModelSelections", (it) => {
360 },354 },
361 deliveryMode: "buffered",355 deliveryMode: "buffered",
362 });356 });
363 // @effect-diagnostics-next-line preferSchemaOverJson:off
364 assert.deepStrictEqual(JSON.parse(eventRows[6]!.payloadJson), {357 assert.deepStrictEqual(JSON.parse(eventRows[6]!.payloadJson), {
365 threadId: "thread-3",358 threadId: "thread-3",
366 projectId: "project-1",359 projectId: "project-1",
apps/server/src/provider/ClaudeCapabilitiesProbe.test.ts-2
...@@ -293,7 +293,6 @@ it.layer(NodeServices.layer)("Claude capability probe SDK boundary", (it) => {...@@ -293,7 +293,6 @@ it.layer(NodeServices.layer)("Claude capability probe SDK boundary", (it) => {
293 },293 },
294 });294 });
295295
296 // @effect-diagnostics-next-line preferSchemaOverJson:off
297 const invocation = JSON.parse(yield* fs.readFileString(invocationPath)) as {296 const invocation = JSON.parse(yield* fs.readFileString(invocationPath)) as {
298 readonly args: ReadonlyArray<string>;297 readonly args: ReadonlyArray<string>;
299 readonly cwd: string;298 readonly cwd: string;
...@@ -310,7 +309,6 @@ it.layer(NodeServices.layer)("Claude capability probe SDK boundary", (it) => {...@@ -310,7 +309,6 @@ it.layer(NodeServices.layer)("Claude capability probe SDK boundary", (it) => {
310309
311 const settingsFlagIndex = invocation.args.indexOf("--settings");310 const settingsFlagIndex = invocation.args.indexOf("--settings");
312 assert.notEqual(settingsFlagIndex, -1);311 assert.notEqual(settingsFlagIndex, -1);
313 // @effect-diagnostics-next-line preferSchemaOverJson:off
314 const flagSettings = JSON.parse(invocation.args[settingsFlagIndex + 1] ?? "{}") as {312 const flagSettings = JSON.parse(invocation.args[settingsFlagIndex + 1] ?? "{}") as {
315 readonly disableAllHooks?: boolean;313 readonly disableAllHooks?: boolean;
316 };314 };
apps/server/src/provider/CodexChatGptAuth.test.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1// @effect-diagnostics nodeBuiltinImport:off globalFetchInEffect:off preferSchemaOverJson:off - Local mock OAuth server validates the browser callback boundary.1// @effect-diagnostics nodeBuiltinImport:off globalFetchInEffect:off - Local mock OAuth server validates the browser callback boundary.
2import * as NodeHttp from "node:http";2import * as NodeHttp from "node:http";
3import * as NodeCrypto from "node:crypto";3import * as NodeCrypto from "node:crypto";
4import * as NodeServices from "@effect/platform-node/NodeServices";4import * as NodeServices from "@effect/platform-node/NodeServices";
apps/server/src/provider/CodexChatGptModels.test.ts-1
...@@ -1,4 +1,3 @@...@@ -1,4 +1,3 @@
1// @effect-diagnostics preferSchemaOverJson:off - Mock HTTP responses use JSON fixtures.
2import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
4import { HttpClient, HttpClientResponse } from "effect/http";3import { HttpClient, HttpClientResponse } from "effect/http";
apps/server/src/provider/GrokProvider.test.ts-2
...@@ -380,7 +380,6 @@ it.layer(NodeServices.layer)("checkGrokProviderStatus", (it) => {...@@ -380,7 +380,6 @@ it.layer(NodeServices.layer)("checkGrokProviderStatus", (it) => {
380 directory: dir,380 directory: dir,
381 name: "grok",381 name: "grok",
382 source: [382 source: [
383 // @effect-diagnostics-next-line preferSchemaOverJson:off
384 `process.stderr.write(${JSON.stringify(`${secretStderr}\n`)});`,383 `process.stderr.write(${JSON.stringify(`${secretStderr}\n`)});`,
385 "process.exit(2);",384 "process.exit(2);",
386 "",385 "",
...@@ -417,7 +416,6 @@ it.layer(NodeServices.layer)("checkGrokProviderStatus", (it) => {...@@ -417,7 +416,6 @@ it.layer(NodeServices.layer)("checkGrokProviderStatus", (it) => {
417 " process.exit(0);",416 " process.exit(0);",
418 "}",417 "}",
419 'if (process.argv[2] === "models") {',418 'if (process.argv[2] === "models") {',
420 // @effect-diagnostics-next-line preferSchemaOverJson:off
421 ` process.stdout.write(${JSON.stringify(input.modelsOutput)});`,419 ` process.stdout.write(${JSON.stringify(input.modelsOutput)});`,
422 " process.exit(0);",420 " process.exit(0);",
423 "}",421 "}",
apps/server/src/provider/ProviderInstanceRegistry.test.ts-2
...@@ -172,7 +172,6 @@ const makeTildeProviderFixtures = Effect.fn(...@@ -172,7 +172,6 @@ const makeTildeProviderFixtures = Effect.fn(
172 );172 );
173 yield* fileSystem.writeFileString(173 yield* fileSystem.writeFileString(
174 codexScriptPath,174 codexScriptPath,
175 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed script document read by the external Codex mock peer.
176 JSON.stringify({ rootThreadId: "probe-thread", notifications: [] }),175 JSON.stringify({ rootThreadId: "probe-thread", notifications: [] }),
177 );176 );
178 yield* fileSystem.chmod(codexPath, 0o755);177 yield* fileSystem.chmod(codexPath, 0o755);
...@@ -346,7 +345,6 @@ describe("ProviderInstanceRegistry — multi-instance codex slice", () => {...@@ -346,7 +345,6 @@ describe("ProviderInstanceRegistry — multi-instance codex slice", () => {
346 const fixtures = yield* makeTildeProviderFixtures();345 const fixtures = yield* makeTildeProviderFixtures();
347 yield* fileSystem.writeFileString(346 yield* fileSystem.writeFileString(
348 fixtures.codexScriptPath,347 fixtures.codexScriptPath,
349 // @effect-diagnostics-next-line preferSchemaOverJson:off - fixed script document read by the external Codex mock peer.
350 JSON.stringify({348 JSON.stringify({
351 rootThreadId: "probe-thread",349 rootThreadId: "probe-thread",
352 notifications: [],350 notifications: [],
apps/server/src/pullRequest/AzureDevOpsPullRequestCli.test.ts-9
...@@ -228,7 +228,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -228,7 +228,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
228 ...row,228 ...row,
229 description: "x".repeat(10_000),229 description: "x".repeat(10_000),
230 }));230 }));
231 // @effect-diagnostics-next-line preferSchemaOverJson:off
232 const response = JSON.stringify(rows);231 const response = JSON.stringify(rows);
233 expect(Buffer.byteLength(response)).toBeGreaterThan(1_000_000);232 expect(Buffer.byteLength(response)).toBeGreaterThan(1_000_000);
234233
...@@ -341,7 +340,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -341,7 +340,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
341 .mockReturnValueOnce(340 .mockReturnValueOnce(
342 Effect.succeed(341 Effect.succeed(
343 output(342 output(
344 // @effect-diagnostics-next-line preferSchemaOverJson:off
345 JSON.stringify([343 JSON.stringify([
346 { pullRequestId: "malformed" },344 { pullRequestId: "malformed" },
347 pullRequestRows(1, 1)[0],345 pullRequestRows(1, 1)[0],
...@@ -434,7 +432,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -434,7 +432,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
434 Effect.gen(function* () {432 Effect.gen(function* () {
435 // `--query user` unwraps the object, so the wrapper has to put it back.433 // `--query user` unwraps the object, so the wrapper has to put it back.
436 mockedExecute.mockReturnValueOnce(434 mockedExecute.mockReturnValueOnce(
437 // @effect-diagnostics-next-line preferSchemaOverJson:off
438 Effect.succeed(output(JSON.stringify({ name: "bilal@acme.dev", type: "user" }))),435 Effect.succeed(output(JSON.stringify({ name: "bilal@acme.dev", type: "user" }))),
439 );436 );
440 const cli = yield* AzureDevOpsPullRequestCli.AzureDevOpsPullRequestCli;437 const cli = yield* AzureDevOpsPullRequestCli.AzureDevOpsPullRequestCli;
...@@ -636,7 +633,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -636,7 +633,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
636 .mockReturnValueOnce(633 .mockReturnValueOnce(
637 Effect.succeed(634 Effect.succeed(
638 output(635 output(
639 // @effect-diagnostics-next-line preferSchemaOverJson:off
640 JSON.stringify({636 JSON.stringify({
641 pullRequestId: 42,637 pullRequestId: 42,
642 title: "Add the page",638 title: "Add the page",
...@@ -653,7 +649,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -653,7 +649,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
653 .mockReturnValueOnce(649 .mockReturnValueOnce(
654 Effect.succeed(650 Effect.succeed(
655 output(651 output(
656 // @effect-diagnostics-next-line preferSchemaOverJson:off
657 JSON.stringify({652 JSON.stringify({
658 value: [653 value: [
659 {654 {
...@@ -674,7 +669,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -674,7 +669,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
674 .mockReturnValueOnce(669 .mockReturnValueOnce(
675 Effect.succeed(670 Effect.succeed(
676 output(671 output(
677 // @effect-diagnostics-next-line preferSchemaOverJson:off
678 JSON.stringify({672 JSON.stringify({
679 changeEntries: [673 changeEntries: [
680 { changeType: "edit", item: { path: "/README.md", objectId: "8f80" } },674 { changeType: "edit", item: { path: "/README.md", objectId: "8f80" } },
...@@ -713,7 +707,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -713,7 +707,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
713 // pull request read every time they checked whether a file had been pushed to.707 // pull request read every time they checked whether a file had been pushed to.
714 const pullRequest = Effect.succeed(708 const pullRequest = Effect.succeed(
715 output(709 output(
716 // @effect-diagnostics-next-line preferSchemaOverJson:off
717 JSON.stringify({710 JSON.stringify({
718 pullRequestId: 42,711 pullRequestId: 42,
719 title: "Add the page",712 title: "Add the page",
...@@ -1219,7 +1212,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -1219,7 +1212,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
1219 mockedExecute.mockReturnValueOnce(1212 mockedExecute.mockReturnValueOnce(
1220 Effect.succeed(1213 Effect.succeed(
1221 output(1214 output(
1222 // @effect-diagnostics-next-line preferSchemaOverJson:off
1223 JSON.stringify({1215 JSON.stringify({
1224 value: [1216 value: [
1225 {1217 {
...@@ -1374,7 +1366,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {...@@ -1374,7 +1366,6 @@ layer("AzureDevOpsPullRequestCli.layer", (it) => {
1374 Effect.succeed(1366 Effect.succeed(
1375 output(1367 output(
1376 // Well-formed, but with nothing to build a link from: not a decode failure.1368 // Well-formed, but with nothing to build a link from: not a decode failure.
1377 // @effect-diagnostics-next-line preferSchemaOverJson:off
1378 JSON.stringify({1369 JSON.stringify({
1379 pullRequestId: 42,1370 pullRequestId: 42,
1380 title: "Add the page",1371 title: "Add the page",
apps/server/src/pullRequest/BitbucketPullRequestApi.test.ts-16
...@@ -676,7 +676,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -676,7 +676,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
676 expect(call.method).toBe("PUT");676 expect(call.method).toBe("PUT");
677 expect(call.url).toBe("/repositories/acme/web/pullrequests/7");677 expect(call.url).toBe("/repositories/acme/web/pullrequests/7");
678 // Bitbucket's PUT is a partial update, so a field left out of the body is left as it was.678 // Bitbucket's PUT is a partial update, so a field left out of the body is left as it was.
679 // @effect-diagnostics-next-line preferSchemaOverJson:off
680 expect(JSON.parse(call.body ?? "")).toEqual({ title: "A new title" });679 expect(JSON.parse(call.body ?? "")).toEqual({ title: "A new title" });
681 }),680 }),
682 );681 );
...@@ -688,7 +687,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -688,7 +687,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
688687
689 yield* api.updateChangeRequest({ repository: "acme/web", number: 7, body: "New body." });688 yield* api.updateChangeRequest({ repository: "acme/web", number: 7, body: "New body." });
690689
691 // @effect-diagnostics-next-line preferSchemaOverJson:off
692 expect(JSON.parse(callAt(0).body ?? "")).toEqual({ description: "New body." });690 expect(JSON.parse(callAt(0).body ?? "")).toEqual({ description: "New body." });
693 }),691 }),
694 );692 );
...@@ -705,7 +703,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -705,7 +703,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
705 body: "New body.",703 body: "New body.",
706 });704 });
707705
708 // @effect-diagnostics-next-line preferSchemaOverJson:off
709 expect(JSON.parse(callAt(0).body ?? "")).toEqual({706 expect(JSON.parse(callAt(0).body ?? "")).toEqual({
710 title: "A new title",707 title: "A new title",
711 description: "New body.",708 description: "New body.",
...@@ -736,7 +733,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -736,7 +733,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
736 it.effect("fails the read when Bitbucket answers with something unreadable", () =>733 it.effect("fails the read when Bitbucket answers with something unreadable", () =>
737 Effect.gen(function* () {734 Effect.gen(function* () {
738 mockedRequest.mockReturnValueOnce(735 mockedRequest.mockReturnValueOnce(
739 // @effect-diagnostics-next-line preferSchemaOverJson:off
740 Effect.succeed(response(JSON.stringify({ error: "nope" }))),736 Effect.succeed(response(JSON.stringify({ error: "nope" }))),
741 );737 );
742 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;738 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;
...@@ -769,7 +765,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -769,7 +765,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
769765
770 it.effect("fails when the credentials belong to no named account", () =>766 it.effect("fails when the credentials belong to no named account", () =>
771 Effect.gen(function* () {767 Effect.gen(function* () {
772 // @effect-diagnostics-next-line preferSchemaOverJson:off
773 mockedRequest.mockReturnValueOnce(Effect.succeed(response(JSON.stringify({}))));768 mockedRequest.mockReturnValueOnce(Effect.succeed(response(JSON.stringify({}))));
774 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;769 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;
775770
...@@ -784,7 +779,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -784,7 +779,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
784 mockedRequest.mockReturnValueOnce(779 mockedRequest.mockReturnValueOnce(
785 Effect.succeed(780 Effect.succeed(
786 response(781 response(
787 // @effect-diagnostics-next-line preferSchemaOverJson:off
788 JSON.stringify({782 JSON.stringify({
789 next: "https://api.bitbucket.org/2.0/comments?page=2",783 next: "https://api.bitbucket.org/2.0/comments?page=2",
790 values: [784 values: [
...@@ -805,7 +799,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -805,7 +799,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
805 response(799 response(
806 // The reply arrives a page after the remark it answers, which is why the threads800 // The reply arrives a page after the remark it answers, which is why the threads
807 // are only assembled once every page is in hand.801 // are only assembled once every page is in hand.
808 // @effect-diagnostics-next-line preferSchemaOverJson:off
809 JSON.stringify({802 JSON.stringify({
810 values: [803 values: [
811 {804 {
...@@ -840,7 +833,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -840,7 +833,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
840 mockedRequest.mockReturnValue(833 mockedRequest.mockReturnValue(
841 Effect.succeed(834 Effect.succeed(
842 response(835 response(
843 // @effect-diagnostics-next-line preferSchemaOverJson:off
844 JSON.stringify({836 JSON.stringify({
845 next: "https://api.bitbucket.org/2.0/comments?page=2",837 next: "https://api.bitbucket.org/2.0/comments?page=2",
846 values: [838 values: [
...@@ -868,7 +860,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -868,7 +860,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
868 mockedRequest.mockReturnValueOnce(860 mockedRequest.mockReturnValueOnce(
869 Effect.succeed(861 Effect.succeed(
870 response(862 response(
871 // @effect-diagnostics-next-line preferSchemaOverJson:off
872 JSON.stringify({863 JSON.stringify({
873 values: [864 values: [
874 {865 {
...@@ -941,7 +932,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -941,7 +932,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
941 });932 });
942933
943 expect(callAt(0).url).toContain("/pullrequests/7/comments");934 expect(callAt(0).url).toContain("/pullrequests/7/comments");
944 // @effect-diagnostics-next-line preferSchemaOverJson:off
945 expect(JSON.parse(callAt(0).body ?? "")).toEqual({935 expect(JSON.parse(callAt(0).body ?? "")).toEqual({
946 content: { raw: "why remove?" },936 content: { raw: "why remove?" },
947 inline: { path: "src/a.ts", from: 12 },937 inline: { path: "src/a.ts", from: 12 },
...@@ -988,7 +978,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -988,7 +978,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
988 body: "Fixed.",978 body: "Fixed.",
989 });979 });
990980
991 // @effect-diagnostics-next-line preferSchemaOverJson:off
992 expect(JSON.parse(callAt(0).body ?? "")).toEqual({981 expect(JSON.parse(callAt(0).body ?? "")).toEqual({
993 content: { raw: "Fixed." },982 content: { raw: "Fixed." },
994 parent: { id: 10 },983 parent: { id: 10 },
...@@ -1001,7 +990,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -1001,7 +990,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
1001 mockedRequest.mockReturnValue(990 mockedRequest.mockReturnValue(
1002 Effect.succeed(991 Effect.succeed(
1003 response(992 response(
1004 // @effect-diagnostics-next-line preferSchemaOverJson:off
1005 JSON.stringify({ values: [{ type: "repository_permission", permission: "read" }] }),993 JSON.stringify({ values: [{ type: "repository_permission", permission: "read" }] }),
1006 ),994 ),
1007 ),995 ),
...@@ -1017,7 +1005,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -1017,7 +1005,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
10171005
1018 it.effect("escapes a repository name before it goes inside a filter literal", () =>1006 it.effect("escapes a repository name before it goes inside a filter literal", () =>
1019 Effect.gen(function* () {1007 Effect.gen(function* () {
1020 // @effect-diagnostics-next-line preferSchemaOverJson:off
1021 mockedRequest.mockReturnValue(Effect.succeed(response(JSON.stringify({ values: [] }))));1008 mockedRequest.mockReturnValue(Effect.succeed(response(JSON.stringify({ values: [] }))));
1022 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;1009 const api = yield* BitbucketPullRequestApi.BitbucketPullRequestApi;
10231010
...@@ -1075,7 +1062,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -1075,7 +1062,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
1075 .mockReturnValueOnce(1062 .mockReturnValueOnce(
1076 Effect.succeed(1063 Effect.succeed(
1077 response(1064 response(
1078 // @effect-diagnostics-next-line preferSchemaOverJson:off
1079 JSON.stringify({ values: [{ user: bilal }, { user: octocat }, { user: hubot }] }),1065 JSON.stringify({ values: [{ user: bilal }, { user: octocat }, { user: hubot }] }),
1080 ),1066 ),
1081 ),1067 ),
...@@ -1113,7 +1099,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -1113,7 +1099,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
1113 const call = callAt(1);1099 const call = callAt(1);
1114 expect(call.method).toBe("PUT");1100 expect(call.method).toBe("PUT");
1115 expect(call.url).toBe("/repositories/acme/web/pullrequests/7");1101 expect(call.url).toBe("/repositories/acme/web/pullrequests/7");
1116 // @effect-diagnostics-next-line preferSchemaOverJson:off
1117 expect(JSON.parse(call.body ?? "")).toEqual({1102 expect(JSON.parse(call.body ?? "")).toEqual({
1118 reviewers: [{ uuid: "{octocat}" }, { uuid: "{hubot}" }],1103 reviewers: [{ uuid: "{octocat}" }, { uuid: "{hubot}" }],
1119 });1104 });
...@@ -1136,7 +1121,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {...@@ -1136,7 +1121,6 @@ layer("BitbucketPullRequestApi.layer", (it) => {
1136 requested: false,1121 requested: false,
1137 });1122 });
11381123
1139 // @effect-diagnostics-next-line preferSchemaOverJson:off
1140 expect(JSON.parse(callAt(1).body ?? "")).toEqual({ reviewers: [{ uuid: "{octocat}" }] });1124 expect(JSON.parse(callAt(1).body ?? "")).toEqual({ reviewers: [{ uuid: "{octocat}" }] });
1141 }),1125 }),
1142 );1126 );
apps/server/src/pullRequest/GitHubPullRequestCli.test.ts-1
...@@ -789,7 +789,6 @@ layer("GitHubPullRequestCli.layer", (it) => {...@@ -789,7 +789,6 @@ layer("GitHubPullRequestCli.layer", (it) => {
789 mockedExecute.mockReturnValueOnce(789 mockedExecute.mockReturnValueOnce(
790 Effect.succeed(790 Effect.succeed(
791 output(791 output(
792 // @effect-diagnostics-next-line preferSchemaOverJson:off
793 JSON.stringify({792 JSON.stringify({
794 data: { w0: { pullRequest: node(1) }, w1: { pullRequest: null } },793 data: { w0: { pullRequest: node(1) }, w1: { pullRequest: null } },
795 }),794 }),
apps/server/src/pullRequest/GitLabPullRequestCli.test.ts+2-38
...@@ -226,10 +226,8 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -226,10 +226,8 @@ layer("GitLabPullRequestCli.layer", (it) => {
226226
227 it.effect("advances the cursor through malformed raw rows", () =>227 it.effect("advances the cursor through malformed raw rows", () =>
228 Effect.gen(function* () {228 Effect.gen(function* () {
229 // @effect-diagnostics-next-line preferSchemaOverJson:off
230 const rows = JSON.parse(mergeRequests(2, 1)) as ReadonlyArray<unknown>;229 const rows = JSON.parse(mergeRequests(2, 1)) as ReadonlyArray<unknown>;
231 mockedExecute.mockReturnValueOnce(230 mockedExecute.mockReturnValueOnce(
232 // @effect-diagnostics-next-line preferSchemaOverJson:off
233 Effect.succeed(output(JSON.stringify([{ iid: "malformed" }, ...rows]))),231 Effect.succeed(output(JSON.stringify([{ iid: "malformed" }, ...rows]))),
234 );232 );
235 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;233 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
...@@ -314,7 +312,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -314,7 +312,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
314 Effect.gen(function* () {312 Effect.gen(function* () {
315 // Full pages of unusable rows: nothing is collected, so the collected-count bound never313 // Full pages of unusable rows: nothing is collected, so the collected-count bound never
316 // trips and only the page bound can end the walk.314 // trips and only the page bound can end the walk.
317 // @effect-diagnostics-next-line preferSchemaOverJson:off
318 const unusable = JSON.stringify(Array.from({ length: 100 }, () => ({ iid: "nope" })));315 const unusable = JSON.stringify(Array.from({ length: 100 }, () => ({ iid: "nope" })));
319 mockedExecute.mockReturnValue(Effect.succeed(output(unusable)));316 mockedExecute.mockReturnValue(Effect.succeed(output(unusable)));
320 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;317 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
...@@ -627,7 +624,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -627,7 +624,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
627 it.effect("reports a commit with no parent as a structured error", () =>624 it.effect("reports a commit with no parent as a structured error", () =>
628 Effect.gen(function* () {625 Effect.gen(function* () {
629 mockedExecute.mockReturnValueOnce(626 mockedExecute.mockReturnValueOnce(
630 // @effect-diagnostics-next-line preferSchemaOverJson:off
631 Effect.succeed(output(JSON.stringify({ id: "a1b2c3d", parent_ids: [] }))),627 Effect.succeed(output(JSON.stringify({ id: "a1b2c3d", parent_ids: [] }))),
632 );628 );
633 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;629 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
...@@ -654,7 +650,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -654,7 +650,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
654 it.effect("expands a new file from a root commit without requiring a parent", () =>650 it.effect("expands a new file from a root commit without requiring a parent", () =>
655 Effect.gen(function* () {651 Effect.gen(function* () {
656 mockedExecute.mockReturnValueOnce(652 mockedExecute.mockReturnValueOnce(
657 // @effect-diagnostics-next-line preferSchemaOverJson:off
658 Effect.succeed(output(JSON.stringify({ id: "a1b2c3d", parent_ids: [] }))),653 Effect.succeed(output(JSON.stringify({ id: "a1b2c3d", parent_ids: [] }))),
659 );654 );
660 mockedExecute.mockReturnValueOnce(Effect.succeed(output("first contents\n")));655 mockedExecute.mockReturnValueOnce(Effect.succeed(output("first contents\n")));
...@@ -680,7 +675,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -680,7 +675,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
680 mockedExecute.mockReturnValueOnce(675 mockedExecute.mockReturnValueOnce(
681 Effect.succeed(676 Effect.succeed(
682 output(677 output(
683 // @effect-diagnostics-next-line preferSchemaOverJson:off
684 JSON.stringify({678 JSON.stringify({
685 diff_refs: {679 diff_refs: {
686 base_sha: "a1b2c3d",680 base_sha: "a1b2c3d",
...@@ -718,7 +712,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -718,7 +712,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
718 mockedExecute.mockReturnValueOnce(712 mockedExecute.mockReturnValueOnce(
719 Effect.succeed(713 Effect.succeed(
720 output(714 output(
721 // @effect-diagnostics-next-line preferSchemaOverJson:off
722 JSON.stringify({715 JSON.stringify({
723 diff_refs: {716 diff_refs: {
724 base_sha: "a1b2c3d",717 base_sha: "a1b2c3d",
...@@ -758,7 +751,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -758,7 +751,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
758 mockedExecute.mockReturnValueOnce(751 mockedExecute.mockReturnValueOnce(
759 Effect.succeed(752 Effect.succeed(
760 output(753 output(
761 // @effect-diagnostics-next-line preferSchemaOverJson:off
762 JSON.stringify({754 JSON.stringify({
763 diff_refs: {755 diff_refs: {
764 base_sha: "a1b2c3d",756 base_sha: "a1b2c3d",
...@@ -823,7 +815,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -823,7 +815,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
823 it.effect("offers no squash when the project does not say it allows one", () =>815 it.effect("offers no squash when the project does not say it allows one", () =>
824 Effect.gen(function* () {816 Effect.gen(function* () {
825 mockedExecute.mockReturnValueOnce(817 mockedExecute.mockReturnValueOnce(
826 // @effect-diagnostics-next-line preferSchemaOverJson:off
827 Effect.succeed(output(JSON.stringify({ merge_method: "merge" }))),818 Effect.succeed(output(JSON.stringify({ merge_method: "merge" }))),
828 );819 );
829 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;820 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
...@@ -840,7 +831,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -840,7 +831,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
840 it.effect("reads the project's merge settings as its merge capabilities", () =>831 it.effect("reads the project's merge settings as its merge capabilities", () =>
841 Effect.gen(function* () {832 Effect.gen(function* () {
842 mockedExecute.mockReturnValueOnce(833 mockedExecute.mockReturnValueOnce(
843 // @effect-diagnostics-next-line preferSchemaOverJson:off
844 Effect.succeed(output(JSON.stringify({ merge_method: "ff", squash_option: "never" }))),834 Effect.succeed(output(JSON.stringify({ merge_method: "ff", squash_option: "never" }))),
845 );835 );
846 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;836 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
...@@ -884,7 +874,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -884,7 +874,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
884874
885 it.effect("fails when the authenticated account has no username", () =>875 it.effect("fails when the authenticated account has no username", () =>
886 Effect.gen(function* () {876 Effect.gen(function* () {
887 // @effect-diagnostics-next-line preferSchemaOverJson:off
888 mockedExecute.mockReturnValueOnce(Effect.succeed(output(JSON.stringify({ username: "" }))));877 mockedExecute.mockReturnValueOnce(Effect.succeed(output(JSON.stringify({ username: "" }))));
889 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;878 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
890879
...@@ -935,7 +924,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -935,7 +924,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
935 mockedExecute.mockReturnValueOnce(924 mockedExecute.mockReturnValueOnce(
936 Effect.succeed(925 Effect.succeed(
937 output(926 output(
938 // @effect-diagnostics-next-line preferSchemaOverJson:off
939 JSON.stringify([927 JSON.stringify([
940 {928 {
941 id: "abc123",929 id: "abc123",
...@@ -994,7 +982,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -994,7 +982,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
994 mockedExecute.mockReturnValueOnce(982 mockedExecute.mockReturnValueOnce(
995 Effect.succeed(983 Effect.succeed(
996 output(984 output(
997 // @effect-diagnostics-next-line preferSchemaOverJson:off
998 JSON.stringify({985 JSON.stringify({
999 iid: 7,986 iid: 7,
1000 title: "t",987 title: "t",
...@@ -1030,7 +1017,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1030,7 +1017,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1030 // The diff revisions first, because a positioned comment cannot be placed without them.1017 // The diff revisions first, because a positioned comment cannot be placed without them.
1031 expect(argsOfCall(0)[1]).toContain("merge_requests/7");1018 expect(argsOfCall(0)[1]).toContain("merge_requests/7");
1032 expect(argsOfCall(1)[1]).toContain("/discussions");1019 expect(argsOfCall(1)[1]).toContain("/discussions");
1033 // @effect-diagnostics-next-line preferSchemaOverJson:off
1034 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({1020 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({
1035 body: "why remove?",1021 body: "why remove?",
1036 position: {1022 position: {
...@@ -1086,7 +1072,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1086,7 +1072,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1086 expect(argsOfCall(0)).toContain("--method");1072 expect(argsOfCall(0)).toContain("--method");
1087 expect(argsOfCall(0)).toContain("PUT");1073 expect(argsOfCall(0)).toContain("PUT");
1088 expect(argsOfCall(0)[1]).toContain("/discussions/abc123");1074 expect(argsOfCall(0)[1]).toContain("/discussions/abc123");
1089 // @effect-diagnostics-next-line preferSchemaOverJson:off
1090 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ resolved: true });1075 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ resolved: true });
1091 }),1076 }),
1092 );1077 );
...@@ -1117,13 +1102,11 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1117,13 +1102,11 @@ layer("GitLabPullRequestCli.layer", (it) => {
1117 it.effect("removes an award by listing them and deleting the reader's own id", () =>1102 it.effect("removes an award by listing them and deleting the reader's own id", () =>
1118 Effect.gen(function* () {1103 Effect.gen(function* () {
1119 mockedExecute.mockReturnValueOnce(1104 mockedExecute.mockReturnValueOnce(
1120 // @effect-diagnostics-next-line preferSchemaOverJson:off
1121 Effect.succeed(output(JSON.stringify({ username: "bilal" }))),1105 Effect.succeed(output(JSON.stringify({ username: "bilal" }))),
1122 );1106 );
1123 mockedExecute.mockReturnValueOnce(1107 mockedExecute.mockReturnValueOnce(
1124 Effect.succeed(1108 Effect.succeed(
1125 output(1109 output(
1126 // @effect-diagnostics-next-line preferSchemaOverJson:off
1127 JSON.stringify([1110 JSON.stringify([
1128 { id: 5, name: "thumbsup", user: { username: "bilal" } },1111 { id: 5, name: "thumbsup", user: { username: "bilal" } },
1129 { id: 6, name: "thumbsup", user: { username: "julius" } },1112 { id: 6, name: "thumbsup", user: { username: "julius" } },
...@@ -1155,7 +1138,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1155,7 +1138,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1155 it.effect("does nothing when the reader has no award of that name to take back", () =>1138 it.effect("does nothing when the reader has no award of that name to take back", () =>
1156 Effect.gen(function* () {1139 Effect.gen(function* () {
1157 mockedExecute.mockReturnValueOnce(1140 mockedExecute.mockReturnValueOnce(
1158 // @effect-diagnostics-next-line preferSchemaOverJson:off
1159 Effect.succeed(output(JSON.stringify({ username: "bilal" }))),1141 Effect.succeed(output(JSON.stringify({ username: "bilal" }))),
1160 );1142 );
1161 mockedExecute.mockReturnValueOnce(Effect.succeed(output("[]")));1143 mockedExecute.mockReturnValueOnce(Effect.succeed(output("[]")));
...@@ -1179,7 +1161,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1179,7 +1161,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1179 mockedExecute.mockReturnValueOnce(1161 mockedExecute.mockReturnValueOnce(
1180 Effect.succeed(1162 Effect.succeed(
1181 output(1163 output(
1182 // @effect-diagnostics-next-line preferSchemaOverJson:off
1183 JSON.stringify({1164 JSON.stringify({
1184 iid: 7,1165 iid: 7,
1185 title: "t",1166 title: "t",
...@@ -1217,10 +1198,7 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1217,10 +1198,7 @@ layer("GitLabPullRequestCli.layer", (it) => {
1217 mockedExecute1198 mockedExecute
1218 .mockReturnValueOnce(Effect.succeed(output(mergeRequestJson({ reviewers: [reviewer] }))))1199 .mockReturnValueOnce(Effect.succeed(output(mergeRequestJson({ reviewers: [reviewer] }))))
1219 .mockReturnValueOnce(1200 .mockReturnValueOnce(
1220 Effect.succeed(1201 Effect.succeed(output(JSON.stringify([author, reviewer, { id: 9, username: "hubot" }]))),
1221 // @effect-diagnostics-next-line preferSchemaOverJson:off
1222 output(JSON.stringify([author, reviewer, { id: 9, username: "hubot" }])),
1223 ),
1224 );1202 );
1225 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;1203 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
12261204
...@@ -1258,7 +1236,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1258,7 +1236,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1258 // GitLab replaces the whole set, so the reviewer already on the merge request has to be1236 // GitLab replaces the whole set, so the reviewer already on the merge request has to be
1259 // sent back with the new one or the request would take them off it.1237 // sent back with the new one or the request would take them off it.
1260 expect(argsOfCall(1)).toContain("PUT");1238 expect(argsOfCall(1)).toContain("PUT");
1261 // @effect-diagnostics-next-line preferSchemaOverJson:off
1262 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5, 9] });1239 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5, 9] });
1263 }),1240 }),
1264 );1241 );
...@@ -1282,7 +1259,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1282,7 +1259,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1282 requested: false,1259 requested: false,
1283 });1260 });
12841261
1285 // @effect-diagnostics-next-line preferSchemaOverJson:off
1286 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5] });1262 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5] });
1287 }),1263 }),
1288 );1264 );
...@@ -1303,7 +1279,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1303,7 +1279,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1303 });1279 });
13041280
1305 // Sending it as a number would rewrite the reviewer set around something nobody chose.1281 // Sending it as a number would rewrite the reviewer set around something nobody chose.
1306 // @effect-diagnostics-next-line preferSchemaOverJson:off
1307 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5] });1282 expect(JSON.parse(callAt(1).stdin ?? "")).toEqual({ reviewer_ids: [5] });
1308 }),1283 }),
1309 );1284 );
...@@ -1330,7 +1305,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1330,7 +1305,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1330 "--header",1305 "--header",
1331 "Content-Type: application/json",1306 "Content-Type: application/json",
1332 ]);1307 ]);
1333 // @effect-diagnostics-next-line preferSchemaOverJson:off
1334 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ title: "A better title" });1308 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ title: "A better title" });
1335 }),1309 }),
1336 );1310 );
...@@ -1348,7 +1322,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1348,7 +1322,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1348 });1322 });
13491323
1350 // A title sent as an empty string would wipe the one the merge request already has.1324 // A title sent as an empty string would wipe the one the merge request already has.
1351 // @effect-diagnostics-next-line preferSchemaOverJson:off
1352 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ description: "What this changes." });1325 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({ description: "What this changes." });
1353 }),1326 }),
1354 );1327 );
...@@ -1367,7 +1340,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1367,7 +1340,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1367 });1340 });
13681341
1369 assert.strictEqual(mockedExecute.mock.calls.length, 1);1342 assert.strictEqual(mockedExecute.mock.calls.length, 1);
1370 // @effect-diagnostics-next-line preferSchemaOverJson:off
1371 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({1343 expect(JSON.parse(callAt(0).stdin ?? "")).toEqual({
1372 title: "A better title",1344 title: "A better title",
1373 description: "What this changes.",1345 description: "What this changes.",
...@@ -1407,7 +1379,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1407,7 +1379,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1407 mockedExecute.mockReturnValueOnce(1379 mockedExecute.mockReturnValueOnce(
1408 Effect.succeed(1380 Effect.succeed(
1409 output(1381 output(
1410 // @effect-diagnostics-next-line preferSchemaOverJson:off
1411 JSON.stringify({1382 JSON.stringify({
1412 iid: 7,1383 iid: 7,
1413 title: "t",1384 title: "t",
...@@ -1424,7 +1395,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1424,7 +1395,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1424 mockedExecute.mockReturnValueOnce(1395 mockedExecute.mockReturnValueOnce(
1425 Effect.succeed(1396 Effect.succeed(
1426 output(1397 output(
1427 // @effect-diagnostics-next-line preferSchemaOverJson:off
1428 JSON.stringify({1398 JSON.stringify({
1429 data: {1399 data: {
1430 project: { repository: { blobs: { nodes: [{ path: "src/a.ts", oid: "aaa" }] } } },1400 project: { repository: { blobs: { nodes: [{ path: "src/a.ts", oid: "aaa" }] } } },
...@@ -1449,7 +1419,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1449,7 +1419,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1449 ["src/gone.ts", ""],1419 ["src/gone.ts", ""],
1450 ]);1420 ]);
1451 // The head the reader is looking at, not whatever the source branch has moved on to.1421 // The head the reader is looking at, not whatever the source branch has moved on to.
1452 // @effect-diagnostics-next-line preferSchemaOverJson:off
1453 const body: unknown = JSON.parse(callAt(1).stdin ?? "{}");1422 const body: unknown = JSON.parse(callAt(1).stdin ?? "{}");
1454 expect(body).toMatchObject({1423 expect(body).toMatchObject({
1455 variables: { fullPath: "acme/web", ref: "head", paths: ["src/a.ts", "src/gone.ts"] },1424 variables: { fullPath: "acme/web", ref: "head", paths: ["src/a.ts", "src/gone.ts"] },
...@@ -1462,7 +1431,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1462,7 +1431,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1462 mockedExecute.mockReturnValueOnce(1431 mockedExecute.mockReturnValueOnce(
1463 Effect.succeed(1432 Effect.succeed(
1464 output(1433 output(
1465 // @effect-diagnostics-next-line preferSchemaOverJson:off
1466 JSON.stringify({1434 JSON.stringify({
1467 iid: 7,1435 iid: 7,
1468 title: "t",1436 title: "t",
...@@ -1480,10 +1448,7 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1480,10 +1448,7 @@ layer("GitLabPullRequestCli.layer", (it) => {
1480 // these files, and reading it that way would report every file the reader has cleared as1448 // these files, and reading it that way would report every file the reader has cleared as
1481 // changed on nothing worse than a permission.1449 // changed on nothing worse than a permission.
1482 mockedExecute.mockReturnValueOnce(1450 mockedExecute.mockReturnValueOnce(
1483 Effect.succeed(1451 Effect.succeed(output(JSON.stringify({ data: { project: null } }))),
1484 // @effect-diagnostics-next-line preferSchemaOverJson:off
1485 output(JSON.stringify({ data: { project: null } })),
1486 ),
1487 );1452 );
1488 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;1453 const cli = yield* GitLabPullRequestCli.GitLabPullRequestCli;
14891454
...@@ -1520,7 +1485,6 @@ layer("GitLabPullRequestCli.layer", (it) => {...@@ -1520,7 +1485,6 @@ layer("GitLabPullRequestCli.layer", (it) => {
1520 mockedExecute.mockReturnValueOnce(1485 mockedExecute.mockReturnValueOnce(
1521 Effect.succeed(1486 Effect.succeed(
1522 output(1487 output(
1523 // @effect-diagnostics-next-line preferSchemaOverJson:off
1524 JSON.stringify({1488 JSON.stringify({
1525 iid: 7,1489 iid: 7,
1526 title: "t",1490 title: "t",
apps/server/src/serverSettings.test.ts+1-11
...@@ -578,7 +578,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -578,7 +578,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
578 const change = Option.getOrUndefined(yield* Stream.runHead(changes));578 const change = Option.getOrUndefined(yield* Stream.runHead(changes));
579 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);579 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
580 // Inspect raw persisted JSON before schema decoding can apply defaults.580 // Inspect raw persisted JSON before schema decoding can apply defaults.
581 // @effect-diagnostics-next-line preferSchemaOverJson:off
582 const persisted = JSON.parse(raw) as Record<string, unknown>;581 const persisted = JSON.parse(raw) as Record<string, unknown>;
583582
584 assert.strictEqual(next.sidebarAutoSettleAfterDays, null);583 assert.strictEqual(next.sidebarAutoSettleAfterDays, null);
...@@ -759,7 +758,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -759,7 +758,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
759758
760 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);759 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
761 assert.deepEqual(760 assert.deepEqual(
762 // @effect-diagnostics-next-line preferSchemaOverJson:off
763 JSON.parse(raw).sourceControlWriterModelSelection,761 JSON.parse(raw).sourceControlWriterModelSelection,
764 sourceControlWriterModelSelection,762 sourceControlWriterModelSelection,
765 );763 );
...@@ -1046,7 +1044,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1046,7 +1044,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
1046 assert.isFalse(settings.providers.grok.enabled);1044 assert.isFalse(settings.providers.grok.enabled);
10471045
1048 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1046 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1049 // @effect-diagnostics-next-line preferSchemaOverJson:off
1050 assert.isFalse(JSON.parse(raw).providers.grok.enabled);1047 assert.isFalse(JSON.parse(raw).providers.grok.enabled);
1051 }).pipe(Effect.provide(layerServerSettings())),1048 }).pipe(Effect.provide(layerServerSettings())),
1052 );1049 );
...@@ -1067,7 +1064,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1067,7 +1064,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
1067 yield* serverSettings.updateSettings({ addProjectBaseDirectory: "~/Development" });1064 yield* serverSettings.updateSettings({ addProjectBaseDirectory: "~/Development" });
10681065
1069 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1066 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1070 // @effect-diagnostics-next-line preferSchemaOverJson:off
1071 const persisted = JSON.parse(raw);1067 const persisted = JSON.parse(raw);
1072 assert.isTrue(persisted.providers.cursor.enabled);1068 assert.isTrue(persisted.providers.cursor.enabled);
1073 assert.isTrue(persisted.providers.grok.enabled);1069 assert.isTrue(persisted.providers.grok.enabled);
...@@ -1104,7 +1100,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1104,7 +1100,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
1104 assert.isFalse(resolveProviderInstanceEnabled(grok));1100 assert.isFalse(resolveProviderInstanceEnabled(grok));
11051101
1106 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1102 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1107 // @effect-diagnostics-next-line preferSchemaOverJson:off
1108 const persisted = JSON.parse(raw);1103 const persisted = JSON.parse(raw);
1109 assert.isFalse(persisted.providers.cursor.enabled);1104 assert.isFalse(persisted.providers.cursor.enabled);
1110 assert.isFalse(persisted.providers.grok.enabled);1105 assert.isFalse(persisted.providers.grok.enabled);
...@@ -1288,7 +1283,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1288,7 +1283,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
1288 assert.equal(next.providers.codex.binaryPath, "/opt/homebrew/bin/codex");1283 assert.equal(next.providers.codex.binaryPath, "/opt/homebrew/bin/codex");
12891284
1290 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1285 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1291 // @effect-diagnostics-next-line preferSchemaOverJson:off
1292 assert.deepEqual(JSON.parse(raw), {1286 assert.deepEqual(JSON.parse(raw), {
1293 addProjectBaseDirectory: "~/Development",1287 addProjectBaseDirectory: "~/Development",
1294 observability: {1288 observability: {
...@@ -1506,7 +1500,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1506,7 +1500,6 @@ it.layer(NodeServices.layer)("server settings", (it) => {
15061500
1507 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1501 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1508 assert.notInclude(raw, "sk-or-secret");1502 assert.notInclude(raw, "sk-or-secret");
1509 // @effect-diagnostics-next-line preferSchemaOverJson:off
1510 assert.deepEqual(JSON.parse(raw).providerInstances.codex_personal.environment, [1503 assert.deepEqual(JSON.parse(raw).providerInstances.codex_personal.environment, [
1511 {1504 {
1512 name: "OPENROUTER_API_KEY",1505 name: "OPENROUTER_API_KEY",
...@@ -1992,10 +1985,7 @@ it.layer(NodeServices.layer)("server settings", (it) => {...@@ -1992,10 +1985,7 @@ it.layer(NodeServices.layer)("server settings", (it) => {
1992 projectSettingsOverrides: { [legacyProject]: null },1985 projectSettingsOverrides: { [legacyProject]: null },
1993 });1986 });
1994 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);1987 const raw = yield* fileSystem.readFileString(serverConfig.settingsPath);
1995 const persisted = yield* decodeServerSettings(1988 const persisted = yield* decodeServerSettings(JSON.parse(raw));
1996 // @effect-diagnostics-next-line preferSchemaOverJson:off
1997 JSON.parse(raw),
1998 );
1999 assert.isTrue(persisted.projectSettingsFolded);1989 assert.isTrue(persisted.projectSettingsFolded);
2000 assert.isUndefined(persisted.projectSettingsOverrides[legacyProject]);1990 assert.isUndefined(persisted.projectSettingsOverrides[legacyProject]);
2001 }).pipe(Effect.provide(layerServerSettings())),1991 }).pipe(Effect.provide(layerServerSettings())),
apps/server/src/serviceLauncher.test.ts-3
...@@ -198,7 +198,6 @@ it.layer(NodeServices.layer)("service state persistence", (it) => {...@@ -198,7 +198,6 @@ it.layer(NodeServices.layer)("service state persistence", (it) => {
198 const databasePath = path.join(root, "userdata", "state.sqlite");198 const databasePath = path.join(root, "userdata", "state.sqlite");
199 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });199 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });
200 yield* fs.writeFileString(databasePath, "before trial");200 yield* fs.writeFileString(databasePath, "before trial");
201 // @effect-diagnostics-next-line preferSchemaOverJson:off - embeds a path in fake child source.
202 const encodedDatabasePath = JSON.stringify(databasePath);201 const encodedDatabasePath = JSON.stringify(databasePath);
203 const childSource = `202 const childSource = `
204const context = JSON.parse(process.env.T3_SERVICE_LAUNCHER_CONTEXT);203const context = JSON.parse(process.env.T3_SERVICE_LAUNCHER_CONTEXT);
...@@ -252,7 +251,6 @@ if (context.update?.status === "pending") {...@@ -252,7 +251,6 @@ if (context.update?.status === "pending") {
252 const databasePath = path.join(root, "userdata", "state.sqlite");251 const databasePath = path.join(root, "userdata", "state.sqlite");
253 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });252 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });
254 yield* fs.writeFileString(databasePath, "before trial");253 yield* fs.writeFileString(databasePath, "before trial");
255 // @effect-diagnostics-next-line preferSchemaOverJson:off - embeds a path in fake child source.
256 const encodedDatabasePath = JSON.stringify(databasePath);254 const encodedDatabasePath = JSON.stringify(databasePath);
257 const childSource = `255 const childSource = `
258const context = JSON.parse(process.env.T3_SERVICE_LAUNCHER_CONTEXT);256const context = JSON.parse(process.env.T3_SERVICE_LAUNCHER_CONTEXT);
...@@ -308,7 +306,6 @@ if (context.update?.status === "pending") {...@@ -308,7 +306,6 @@ if (context.update?.status === "pending") {
308 const original = "database before migration";306 const original = "database before migration";
309 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });307 yield* fs.makeDirectory(path.dirname(databasePath), { recursive: true });
310 yield* fs.writeFileString(databasePath, original);308 yield* fs.writeFileString(databasePath, original);
311 // @effect-diagnostics-next-line preferSchemaOverJson:off - embeds a path in fake child source.
312 const encodedDatabasePath = JSON.stringify(databasePath);309 const encodedDatabasePath = JSON.stringify(databasePath);
313 const childSource = `310 const childSource = `
314import { writeFileSync } from "node:fs";311import { writeFileSync } from "node:fs";
apps/server/src/sourceControl/AzureDevOpsCli.test.ts-5
...@@ -39,7 +39,6 @@ describe("AzureDevOpsCli.layer", () => {...@@ -39,7 +39,6 @@ describe("AzureDevOpsCli.layer", () => {
39 mockRun.mockReturnValueOnce(39 mockRun.mockReturnValueOnce(
40 Effect.succeed(40 Effect.succeed(
41 processOutput(41 processOutput(
42 // @effect-diagnostics-next-line preferSchemaOverJson:off
43 JSON.stringify({42 JSON.stringify({
44 pullRequestId: 42,43 pullRequestId: 42,
45 title: "Add Azure provider",44 title: "Add Azure provider",
...@@ -97,7 +96,6 @@ describe("AzureDevOpsCli.layer", () => {...@@ -97,7 +96,6 @@ describe("AzureDevOpsCli.layer", () => {
97 mockRun.mockReturnValueOnce(96 mockRun.mockReturnValueOnce(
98 Effect.succeed(97 Effect.succeed(
99 processOutput(98 processOutput(
100 // @effect-diagnostics-next-line preferSchemaOverJson:off
101 JSON.stringify({99 JSON.stringify({
102 pullRequestId: 863,100 pullRequestId: 863,
103 title: "Fix Azure link",101 title: "Fix Azure link",
...@@ -134,7 +132,6 @@ describe("AzureDevOpsCli.layer", () => {...@@ -134,7 +132,6 @@ describe("AzureDevOpsCli.layer", () => {
134 mockRun.mockReturnValueOnce(132 mockRun.mockReturnValueOnce(
135 Effect.succeed(133 Effect.succeed(
136 processOutput(134 processOutput(
137 // @effect-diagnostics-next-line preferSchemaOverJson:off
138 JSON.stringify([135 JSON.stringify([
139 {136 {
140 pullRequestId: 7,137 pullRequestId: 7,
...@@ -195,7 +192,6 @@ describe("AzureDevOpsCli.layer", () => {...@@ -195,7 +192,6 @@ describe("AzureDevOpsCli.layer", () => {
195 mockRun.mockReturnValueOnce(192 mockRun.mockReturnValueOnce(
196 Effect.succeed(193 Effect.succeed(
197 processOutput(194 processOutput(
198 // @effect-diagnostics-next-line preferSchemaOverJson:off
199 JSON.stringify({195 JSON.stringify({
200 name: "repo",196 name: "repo",
201 webUrl: "https://dev.azure.com/acme/project/_git/repo",197 webUrl: "https://dev.azure.com/acme/project/_git/repo",
...@@ -228,7 +224,6 @@ describe("AzureDevOpsCli.layer", () => {...@@ -228,7 +224,6 @@ describe("AzureDevOpsCli.layer", () => {
228 mockRun.mockReturnValueOnce(224 mockRun.mockReturnValueOnce(
229 Effect.succeed(225 Effect.succeed(
230 processOutput(226 processOutput(
231 // @effect-diagnostics-next-line preferSchemaOverJson:off
232 JSON.stringify({227 JSON.stringify({
233 name: "repo",228 name: "repo",
234 webUrl: "https://dev.azure.com/acme/project/_git/repo",229 webUrl: "https://dev.azure.com/acme/project/_git/repo",
apps/server/src/sourceControl/BitbucketApi.test.ts-2
...@@ -541,7 +541,6 @@ it.effect("creates repositories through the Bitbucket REST API", () => {...@@ -541,7 +541,6 @@ it.effect("creates repositories through the Bitbucket REST API", () => {
541 assert.ok(request);541 assert.ok(request);
542 const rawBody = (request.body as { readonly body?: Uint8Array }).body;542 const rawBody = (request.body as { readonly body?: Uint8Array }).body;
543 assert.ok(rawBody);543 assert.ok(rawBody);
544 // @effect-diagnostics-next-line preferSchemaOverJson:off
545 assert.deepStrictEqual(JSON.parse(new TextDecoder().decode(rawBody)), {544 assert.deepStrictEqual(JSON.parse(new TextDecoder().decode(rawBody)), {
546 scm: "git",545 scm: "git",
547 is_private: true,546 is_private: true,
...@@ -577,7 +576,6 @@ it.effect("creates pull requests using the official REST payload shape", () => {...@@ -577,7 +576,6 @@ it.effect("creates pull requests using the official REST payload shape", () => {
577 assert.ok(request);576 assert.ok(request);
578 const rawBody = (request.body as { readonly body?: Uint8Array }).body;577 const rawBody = (request.body as { readonly body?: Uint8Array }).body;
579 assert.ok(rawBody);578 assert.ok(rawBody);
580 // @effect-diagnostics-next-line preferSchemaOverJson:off
581 assert.deepStrictEqual(JSON.parse(new TextDecoder().decode(rawBody)), {579 assert.deepStrictEqual(JSON.parse(new TextDecoder().decode(rawBody)), {
582 title: "Provider PR",580 title: "Provider PR",
583 description: "PR body",581 description: "PR body",
apps/server/src/sourceControl/GitLabCli.test.ts+1-12
...@@ -39,7 +39,6 @@ layer("GitLabCli.layer", (it) => {...@@ -39,7 +39,6 @@ layer("GitLabCli.layer", (it) => {
39 mockedRun.mockReturnValueOnce(39 mockedRun.mockReturnValueOnce(
40 Effect.succeed(40 Effect.succeed(
41 processOutput(41 processOutput(
42 // @effect-diagnostics-next-line preferSchemaOverJson:off
43 JSON.stringify({42 JSON.stringify({
44 iid: 42,43 iid: 42,
45 title: "Add MR thread creation",44 title: "Add MR thread creation",
...@@ -94,7 +93,6 @@ layer("GitLabCli.layer", (it) => {...@@ -94,7 +93,6 @@ layer("GitLabCli.layer", (it) => {
94 mockedRun.mockReturnValueOnce(93 mockedRun.mockReturnValueOnce(
95 Effect.succeed(94 Effect.succeed(
96 processOutput(95 processOutput(
97 // @effect-diagnostics-next-line preferSchemaOverJson:off
98 JSON.stringify([96 JSON.stringify([
99 {97 {
100 iid: 0,98 iid: 0,
...@@ -163,7 +161,6 @@ layer("GitLabCli.layer", (it) => {...@@ -163,7 +161,6 @@ layer("GitLabCli.layer", (it) => {
163 mockedRun.mockReturnValueOnce(161 mockedRun.mockReturnValueOnce(
164 Effect.succeed(162 Effect.succeed(
165 processOutput(163 processOutput(
166 // @effect-diagnostics-next-line preferSchemaOverJson:off
167 JSON.stringify({164 JSON.stringify({
168 path_with_namespace: "octocat/t3code",165 path_with_namespace: "octocat/t3code",
169 web_url: "https://gitlab.com/octocat/t3code",166 web_url: "https://gitlab.com/octocat/t3code",
...@@ -230,18 +227,10 @@ layer("GitLabCli.layer", (it) => {...@@ -230,18 +227,10 @@ layer("GitLabCli.layer", (it) => {
230 Effect.gen(function* () {227 Effect.gen(function* () {
231 mockedRun228 mockedRun
232229
230 .mockReturnValueOnce(Effect.succeed(processOutput(JSON.stringify({ id: 1234 }))))
233 .mockReturnValueOnce(231 .mockReturnValueOnce(
234 Effect.succeed(232 Effect.succeed(
235 processOutput(233 processOutput(
236 // @effect-diagnostics-next-line preferSchemaOverJson:off
237 JSON.stringify({ id: 1234 }),
238 ),
239 ),
240 )
241 .mockReturnValueOnce(
242 Effect.succeed(
243 processOutput(
244 // @effect-diagnostics-next-line preferSchemaOverJson:off
245 JSON.stringify({234 JSON.stringify({
246 path_with_namespace: "octocat/t3code",235 path_with_namespace: "octocat/t3code",
247 web_url: "https://gitlab.com/octocat/t3code",236 web_url: "https://gitlab.com/octocat/t3code",
apps/server/src/textGeneration/ClaudeTextGeneration.test.ts-1
...@@ -367,7 +367,6 @@ it.layer(layerClaudeTextGenerationTest)("ClaudeTextGeneration", (it) => {...@@ -367,7 +367,6 @@ it.layer(layerClaudeTextGenerationTest)("ClaudeTextGeneration", (it) => {
367 const claudeConfigDir = path.join(process.cwd(), ".claude-work-test");367 const claudeConfigDir = path.join(process.cwd(), ".claude-work-test");
368 return yield* withFakeClaudeEnv(368 return yield* withFakeClaudeEnv(
369 {369 {
370 // @effect-diagnostics-next-line preferSchemaOverJson:off
371 output: JSON.stringify({370 output: JSON.stringify({
372 structured_output: {371 structured_output: {
373 title: "Use Claude home",372 title: "Use Claude home",
apps/server/src/vcs/VcsProjectConfig.test.ts-2
...@@ -42,7 +42,6 @@ describe("VcsProjectConfig", () => {...@@ -42,7 +42,6 @@ describe("VcsProjectConfig", () => {
42 yield* fileSystem.makeDirectory(nested, { recursive: true });42 yield* fileSystem.makeDirectory(nested, { recursive: true });
43 yield* fileSystem.writeFileString(43 yield* fileSystem.writeFileString(
44 path.join(configDir, "vcs.json"),44 path.join(configDir, "vcs.json"),
45 // @effect-diagnostics-next-line preferSchemaOverJson:off
46 JSON.stringify({ vcs: { kind: "jj" } }),45 JSON.stringify({ vcs: { kind: "jj" } }),
47 );46 );
4847
...@@ -72,7 +71,6 @@ describe("VcsProjectConfig", () => {...@@ -72,7 +71,6 @@ describe("VcsProjectConfig", () => {
72 yield* fileSystem.makeDirectory(configDir, { recursive: true });71 yield* fileSystem.makeDirectory(configDir, { recursive: true });
73 yield* fileSystem.writeFileString(72 yield* fileSystem.writeFileString(
74 path.join(configDir, "vcs.json"),73 path.join(configDir, "vcs.json"),
75 // @effect-diagnostics-next-line preferSchemaOverJson:off
76 JSON.stringify({ vcs: { kind: "jj" } }),74 JSON.stringify({ vcs: { kind: "jj" } }),
77 );75 );
7876
apps/web/src/cloud/linkEnvironment.test.ts-4
...@@ -240,7 +240,6 @@ describe("web cloud link environment client", () => {...@@ -240,7 +240,6 @@ describe("web cloud link environment client", () => {
240 "http://127.0.0.1:3000/api/connect/preferences",240 "http://127.0.0.1:3000/api/connect/preferences",
241 );241 );
242 expect(fetchMock.mock.calls[0]?.[1]?.method).toBe("POST");242 expect(fetchMock.mock.calls[0]?.[1]?.method).toBe("POST");
243 // @effect-diagnostics-next-line preferSchemaOverJson:off
244 expect(JSON.parse(bodyText(fetchMock.mock.calls[0]?.[1]?.body))).toEqual({243 expect(JSON.parse(bodyText(fetchMock.mock.calls[0]?.[1]?.body))).toEqual({
245 publishAgentActivity: true,244 publishAgentActivity: true,
246 });245 });
...@@ -290,7 +289,6 @@ describe("web cloud link environment client", () => {...@@ -290,7 +289,6 @@ describe("web cloud link environment client", () => {
290 expect(String(fetchMock.mock.calls[1]?.[0])).toBe(289 expect(String(fetchMock.mock.calls[1]?.[0])).toBe(
291 "http://127.0.0.1:3000/api/connect/link-proof",290 "http://127.0.0.1:3000/api/connect/link-proof",
292 );291 );
293 // @effect-diagnostics-next-line preferSchemaOverJson:off
294 expect(JSON.parse(bodyText(fetchMock.mock.calls[1]?.[1]?.body))).toMatchObject({292 expect(JSON.parse(bodyText(fetchMock.mock.calls[1]?.[1]?.body))).toMatchObject({
295 challenge: "challenge",293 challenge: "challenge",
296 endpoint: {294 endpoint: {
...@@ -341,11 +339,9 @@ describe("web cloud link environment client", () => {...@@ -341,11 +339,9 @@ describe("web cloud link environment client", () => {
341 }),339 }),
342 );340 );
343341
344 // @effect-diagnostics-next-line preferSchemaOverJson:off
345 expect(JSON.parse(bodyText(fetchMock.mock.calls[0]?.[1]?.body))).toMatchObject({342 expect(JSON.parse(bodyText(fetchMock.mock.calls[0]?.[1]?.body))).toMatchObject({
346 managedTunnelsEnabled: false,343 managedTunnelsEnabled: false,
347 });344 });
348 // @effect-diagnostics-next-line preferSchemaOverJson:off
349 expect(JSON.parse(bodyText(fetchMock.mock.calls[1]?.[1]?.body))).toMatchObject({345 expect(JSON.parse(bodyText(fetchMock.mock.calls[1]?.[1]?.body))).toMatchObject({
350 endpoint: { providerKind: "manual" },346 endpoint: { providerKind: "manual" },
351 });347 });
packages/client-runtime/src/state/pullRequestDiffHttp.test.ts-1
...@@ -71,7 +71,6 @@ describe("fetchEnvironmentPullRequestDiff", () => {...@@ -71,7 +71,6 @@ describe("fetchEnvironmentPullRequestDiff", () => {
71 : "";71 : "";
72 // The assertion deliberately inspects the serialized wire body rather than decoding a72 // The assertion deliberately inspects the serialized wire body rather than decoding a
73 // domain value for use in application code.73 // domain value for use in application code.
74 // @effect-diagnostics-next-line preferSchemaOverJson:off
75 expect(JSON.parse(body)).toEqual({74 expect(JSON.parse(body)).toEqual({
76 projectId: "project-1",75 projectId: "project-1",
77 repository: "owner/repository",76 repository: "owner/repository",
tsconfig.base.json+7-1
...@@ -51,7 +51,13 @@...@@ -51,7 +51,13 @@
51 "globalFetch": "error",51 "globalFetch": "error",
52 "globalFetchInEffect": "error",52 "globalFetchInEffect": "error",
53 "schemaNumber": "off"53 "schemaNumber": "off"
54 }54 },
55 "overrides": [
56 {
57 "include": ["**/*.test.ts", "**/*.test.tsx"],
58 "options": { "diagnosticSeverity": { "preferSchemaOverJson": "off" } }
59 }
60 ]
55 }61 }
56 ]62 ]
57 }63 }