Running phase: unpackPhase unpacking source archive /nix/store/mki2wwbvl80fnfpjp3khsz1cm4idwr4g-source source root is source Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Executing pnpmConfigHook ~ /build/source /build/source Found 'pnpm' with version '10.34.5' Using fetcherVersion: 3 Configuring pnpm store Installing dependencies Final pnpm config: @jsr:registry=https://npm.jsr.io/ arch=x64 globalconfig=/build/.home/.config/pnpm/rc inject-workspace-packages=true manage-package-manager-versions=false minimum-release-age=4320 minimum-release-age-exclude[]=assistant-cloud minimum-release-age-exclude[]=@assistant-ui/* minimum-release-age-exclude[]=expo minimum-release-age-exclude[]=expo-* minimum-release-age-exclude[]=@expo/* minimum-release-age-exclude[]=babel-preset-expo npm-globalconfig=/nix/store/z5piarlh57mjwr4c9w318ay97sxr6c9m-nodejs-slim-24.20.0/etc/npmrc only-built-dependencies[]=@scarf/scarf only-built-dependencies[]=@shopify/react-native-skia only-built-dependencies[]=@swc/core only-built-dependencies[]=@parcel/watcher only-built-dependencies[]=bcrypt only-built-dependencies[]=sharp only-built-dependencies[]=esbuild only-built-dependencies[]=unrs-resolver only-built-dependencies[]=vue-demi package-import-method=clone-or-copy packages[]=frontend packages[]=SparkyFitnessFrontend packages[]=shared packages[]=SparkyFitnessMobile packages[]=SparkyFitnessServer packages[]=docs platform=linux registry=https://registry.npmjs.org/ reporter=append-only store-dir=/build/tmp.iYJFjpkDqd user-agent=pnpm/10.34.5 npm/? node/v24.20.0 linux x64 [overrides] @babel/core=7.29.0 @expo/dom-webview=57.0.1 assistant-cloud=0.2.0 eslint-plugin-react-hooks=7.0.1 react=19.2.3 react-dom=19.2.3 side-channel=1.0.6 tailwindcss=4.3.3 tsx>esbuild=0.28.1 vite>esbuild=0.28.1 zustand=5.0.15 [package-extensions.@kingstinct/react-native-healthkit@13.dependencies] @expo/config-plugins=^57.0.0 [package-extensions.react-native-worklets.dependencies] @babel/generator=* [package-extensions.uniwind.dependencies] metro=* metro-cache=* [patched-dependencies] @bacons/apple-targets@4.0.6=/build/source/patches/@bacons__apple-targets@4.0.6.patch react-native-health-connect@4.1.3=/build/source/patches/react-native-health-connect@4.1.3.patch [supported-architectures] cpu[]=current cpu[]=x64 cpu[]=arm64 os[]=current os[]=linux Scope: 2 of 6 workspace projects Lockfile is up to date, resolution step is skipped Progress: resolved 1, reused 0, downloaded 0, added 0 . | +1116 Progress: resolved 1116, reused 1099, downloaded 0, added 239 Progress: resolved 1116, reused 1099, downloaded 0, added 824 Progress: resolved 1116, reused 1099, downloaded 0, added 1109 Progress: resolved 1116, reused 1099, downloaded 0, added 1116, done Done in 4.9s using pnpm v10.34.5 Patching scripts patching script interpreter paths in node_modules/husky node_modules/js-yaml node_modules/lint-staged node_modules/prettier node_modules/.bin node_modules/.modules.yaml node_modules/.pnpm node_modules/.pnpm-workspace-state-v1.json node_modules/.bin/prettier: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.bin/lint-staged: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.bin/husky: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.bin/js-yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/better-auth@1.7.4_@opentelemetry+api@1.9.1_mongodb@7.1.0_pg@8.23.0_react-dom@19.2.3_rea_e9c92e7aa1369ccf0b30a651c6af54c3/node_modules/better-auth/node_modules/.bin/vitest: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/bson@7.3.2/node_modules/bson/etc/prepare.js: interpreter directive changed from "#! /usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/mongodb@7.1.0/node_modules/mongodb/etc/prepare.js: interpreter directive changed from "#! /usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/vitest.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/node_modules/.bin/vite: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/node_modules/.bin/why-is-node-running: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/bin/vite.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/jiti: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/esbuild: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/terser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/rolldown: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/tsx: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0/node_modules/vite/node_modules/.bin/yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/postcss@8.5.28/node_modules/postcss/node_modules/.bin/nanoid: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/nanoid@3.3.18/node_modules/nanoid/bin/nanoid.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/rolldown@1.2.8/node_modules/rolldown/bin/cli.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/bin/esbuild: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/esbuild@0.28.1/node_modules/esbuild/node_modules/.bin/esbuild: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/acorn@8.18.0/node_modules/acorn/bin/acorn: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/terser@5.51.2/node_modules/terser/bin/terser: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/terser@5.51.2/node_modules/terser/bin/uglifyjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/terser@5.51.2/node_modules/terser/node_modules/.bin/acorn: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/tsx@4.23.13/node_modules/tsx/dist/cli.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/tsx@4.23.13/node_modules/tsx/node_modules/.bin/esbuild: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/why-is-node-running@2.3.0/node_modules/why-is-node-running/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@vitest+coverage-v8@5.0.0_vitest@5.0.0/node_modules/@vitest/coverage-v8/node_modules/.bin/vitest: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/magicast@0.5.4/node_modules/magicast/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+parser@7.29.8/node_modules/@babel/parser/bin/babel-parser.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@vitest+mocker@5.0.0_vite@8.3.0_@types+node@25.9.6_esbuild@0.28.1_jiti@2.7.0_terser@5.51.2_tsx@4.23.13_yaml@2.9.0_/node_modules/@vitest/mocker/node_modules/.bin/vite: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/tough-cookie@5.1.2/node_modules/tough-cookie/node_modules/.bin/tldts: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/tldts@6.1.86/node_modules/tldts/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/vue@3.5.30_typescript@6.0.3/node_modules/vue/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/vue@3.5.30_typescript@6.0.3/node_modules/vue/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@vue+compiler-sfc@3.5.30/node_modules/@vue/compiler-sfc/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@vue+compiler-core@3.5.30/node_modules/@vue/compiler-core/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsc: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsserver: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/scripts/get-app-config-ios.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/scripts/with-node.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_51f2382afb91985c854d1907004cfcf5/node_modules/expo-constants/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/main.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/excpretty: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/agent-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/lan-network: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/sandbox-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_4b16acdc0bdf1bdd112d6668e416f8a8/node_modules/@expo/cli/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+config-plugins@57.0.9_typescript@6.0.3/node_modules/@expo/config-plugins/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/bin/autolinking: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/bin/cli: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/bin/fingerprint: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/scripts/xcode/with-environment.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/scripts/compose-source-maps.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/scripts/node-binary.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/scripts/react-native-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/scripts/resolveAppEntry.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/node_modules/.bin/expo-internal: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_5e0ab52f2fb02efaba1aa9f3f0d2720e/node_modules/expo/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+config@57.0.9_typescript@6.0.3/node_modules/@expo/config/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+json-file@11.0.1/node_modules/@expo/json-file/node_modules/.bin/json5: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+require-utils@57.0.5_typescript@6.0.3/node_modules/@expo/require-utils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+require-utils@57.0.5_typescript@6.0.3/node_modules/@expo/require-utils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+core@7.29.0/node_modules/@babel/core/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+core@7.29.0/node_modules/@babel/core/node_modules/.bin/json5: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+core@7.29.0/node_modules/@babel/core/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+helper-compilation-targets@7.29.7/node_modules/@babel/helper-compilation-targets/node_modules/.bin/browserslist: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+helper-compilation-targets@7.29.7/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+generator@7.29.8/node_modules/@babel/generator/node_modules/.bin/jsesc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+generator@7.29.8/node_modules/@babel/generator/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/bin/jsesc: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/update-browserslist-db@1.3.2_browserslist@4.28.9/node_modules/update-browserslist-db/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/update-browserslist-db@1.3.2_browserslist@4.28.9/node_modules/update-browserslist-db/node_modules/.bin/browserslist: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/browserslist@4.28.9/node_modules/browserslist/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/browserslist@4.28.9/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/browserslist@4.28.9/node_modules/browserslist/node_modules/.bin/update-browserslist-db: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/baseline-browser-mapping@2.11.21/node_modules/baseline-browser-mapping/dist/cli.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/semver@6.3.1/node_modules/semver/bin/semver.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@babel+template@7.29.7/node_modules/@babel/template/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+traverse@7.29.8/node_modules/@babel/traverse/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/xcode@3.0.1/node_modules/xcode/node_modules/.bin/uuid: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/uuid@7.0.3/node_modules/uuid/dist/bin/uuid: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/node_modules/.bin/node-which: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/which@2.0.2/node_modules/which/bin/node-which: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+image-utils@0.11.5_typescript@6.0.3/node_modules/@expo/image-utils/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_1ba95531e8eb6604a9563b6ea9a65f64/node_modules/@expo/log-box/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_1ba95531e8eb6604a9563b6ea9a65f64/node_modules/@expo/log-box/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_1ba95531e8eb6604a9563b6ea9a65f64/node_modules/@expo/log-box/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_1ba95531e8eb6604a9563b6ea9a65f64/node_modules/@expo/log-box/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_301a0ae60e60be7f9d55a04f9dccec05/node_modules/@expo/dom-webview/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_301a0ae60e60be7f9d55a04f9dccec05/node_modules/@expo/dom-webview/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_301a0ae60e60be7f9d55a04f9dccec05/node_modules/@expo/dom-webview/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_301a0ae60e60be7f9d55a04f9dccec05/node_modules/@expo/dom-webview/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/build-apple-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/build-ios-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/build-mac-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/sdks/hermes-engine/utils/copy-hermes-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/xcode/ccache-clang++.sh: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/xcode/ccache-clang.sh: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/xcode/with-environment.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/react_native_pods_utils/script_phases.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/compose-source-maps.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/ios-configure-glog.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/packager.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/scripts/react-native-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/generate-nested-scroll-view.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_95e0479207c4e7f5eb7f8c665178b2ad/node_modules/react-native/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+codegen@0.86.3_@babel+core@7.29.0/node_modules/@react-native/codegen/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/invariant@2.2.4/node_modules/invariant/node_modules/.bin/loose-envify: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/loose-envify@1.4.0/node_modules/loose-envify/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@react-native+community-cli-plugin@0.86.3_@react-native+metro-config@0.86.3_@babel+core@7.29.0_/node_modules/@react-native/community-cli-plugin/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+community-cli-plugin@0.86.3_@react-native+metro-config@0.86.3_@babel+core@7.29.0_/node_modules/@react-native/community-cli-plugin/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+debugger-shell@0.86.3/node_modules/@react-native/debugger-shell/node_modules/.bin/dotslash: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/is-wsl@2.2.0/node_modules/is-wsl/node_modules/.bin/is-docker: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+dev-middleware@0.86.3/node_modules/@react-native/dev-middleware/node_modules/.bin/print-chrome-path: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/fb-dotslash@0.5.8/node_modules/fb-dotslash/bin/dotslash: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/chrome-launcher@0.15.2/node_modules/chrome-launcher/bin/print-chrome-path.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/chrome-launcher@0.15.2/node_modules/chrome-launcher/scripts/download-chrome.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/chrome-launcher@0.15.2/node_modules/chrome-launcher/scripts/format.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/chrome-launcher@0.15.2/node_modules/chrome-launcher/manual-chrome-launcher.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/is-docker@2.2.1/node_modules/is-docker/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/bin/cmd.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/chromium-edge-launcher@0.3.0/node_modules/chromium-edge-launcher/scripts/format.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/chromium-edge-launcher@0.3.0/node_modules/chromium-edge-launcher/manual-edge-launcher.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/chromium-edge-launcher@0.3.0/node_modules/chromium-edge-launcher/node_modules/.bin/mkdirp: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/open@7.4.2/node_modules/open/xdg-open: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/open@7.4.2/node_modules/open/node_modules/.bin/is-docker: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/send@0.19.2/node_modules/send/node_modules/.bin/mime: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/mime@1.6.0/node_modules/mime/src/build.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/mime@1.6.0/node_modules/mime/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro@0.84.6/node_modules/metro/src/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro@0.84.6/node_modules/metro/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro@0.84.6/node_modules/metro/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-config@0.84.6/node_modules/metro-config/node_modules/.bin/yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-config@0.84.6/node_modules/metro-config/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-source-map@0.84.6/node_modules/metro-source-map/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-symbolicate@0.84.6/node_modules/metro-symbolicate/src/index.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro-transform-worker@0.84.6/node_modules/metro-transform-worker/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-transform-worker@0.84.6/node_modules/metro-transform-worker/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/semver@7.8.5/node_modules/semver/bin/semver.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro-minify-terser@0.84.6/node_modules/metro-minify-terser/node_modules/.bin/terser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+helper-create-class-features-plugin@7.29.7_@babel+core@7.29.0/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+helper-create-regexp-features-plugin@7.29.7_@babel+core@7.29.0/node_modules/@babel/helper-create-regexp-features-plugin/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/regexpu-core@6.4.0/node_modules/regexpu-core/node_modules/.bin/regjsparser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/regjsparser@0.13.0/node_modules/regjsparser/bin/parser: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/regjsparser@0.13.0/node_modules/regjsparser/node_modules/.bin/jsesc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+helper-define-polyfill-provider@0.6.8_@babel+core@7.29.0/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/resolve: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@babel+plugin-transform-runtime@7.29.7_@babel+core@7.29.0/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/babel-plugin-polyfill-corejs2@0.4.17_@babel+core@7.29.0/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/resolve@1.22.12/node_modules/resolve/bin/resolve: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/core-js-compat@3.50.0/node_modules/core-js-compat/node_modules/.bin/browserslist: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+virtualized-lists@0.86.3_@types+react@19.3.0_react-native@0.86.3_@babel+c_b37565098ac3885cc4fac7b599307341/node_modules/@react-native/virtualized-lists/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+gradle-plugin@0.86.3/node_modules/@react-native/gradle-plugin/gradlew: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@istanbuljs+load-nyc-config@1.1.0/node_modules/@istanbuljs/load-nyc-config/node_modules/.bin/js-yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/bin/esparse.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/bin/esvalidate.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/js-yaml@3.15.2/node_modules/js-yaml/bin/js-yaml.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/js-yaml@3.15.2/node_modules/js-yaml/node_modules/.bin/esparse: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/js-yaml@3.15.2/node_modules/js-yaml/node_modules/.bin/esvalidate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/istanbul-lib-instrument@5.2.1/node_modules/istanbul-lib-instrument/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/istanbul-lib-instrument@5.2.1/node_modules/istanbul-lib-instrument/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@types+babel__template@7.4.4/node_modules/@types/babel__template/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@types+babel__core@7.20.5/node_modules/@types/babel__core/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro@56.0.2/node_modules/@expo/metro/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro@56.0.2/node_modules/@expo/metro/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro@0.84.5/node_modules/metro/src/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro@0.84.5/node_modules/metro/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro@0.84.5/node_modules/metro/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-config@0.84.5/node_modules/metro-config/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-config@0.84.5/node_modules/metro-config/node_modules/.bin/yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-source-map@0.84.5/node_modules/metro-source-map/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-symbolicate@0.84.5/node_modules/metro-symbolicate/src/index.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/metro-minify-terser@0.84.5/node_modules/metro-minify-terser/node_modules/.bin/terser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-transform-worker@0.84.5/node_modules/metro-transform-worker/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/metro-transform-worker@0.84.5/node_modules/metro-transform-worker/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro-config@57.0.12_expo@57.0.25_typescript@6.0.3/node_modules/@expo/metro-config/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro-config@57.0.12_expo@57.0.25_typescript@6.0.3/node_modules/@expo/metro-config/node_modules/.bin/browserslist: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro-config@57.0.12_expo@57.0.25_typescript@6.0.3/node_modules/@expo/metro-config/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+metro-config@57.0.12_expo@57.0.25_typescript@6.0.3/node_modules/@expo/metro-config/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_db1948992568104411c6b009d2432067/node_modules/@expo/log-box/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_db1948992568104411c6b009d2432067/node_modules/@expo/log-box/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_db1948992568104411c6b009d2432067/node_modules/@expo/log-box/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+log-box@57.0.4_@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+c_db1948992568104411c6b009d2432067/node_modules/@expo/log-box/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/main.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/excpretty: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/agent-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/sandbox-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+cli@57.0.27_@expo+dom-webview@57.0.1_expo-constants@57.0.19_expo@57.0.25_react-na_1cbbd51be371c1cd60af61a44f2f7e23/node_modules/@expo/cli/node_modules/.bin/lan-network: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/bin/autolinking: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/bin/cli: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/bin/fingerprint: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/scripts/xcode/with-environment.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/scripts/compose-source-maps.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/scripts/node-binary.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/scripts/react-native-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/scripts/resolveAppEntry.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo@57.0.25_@babel+core@7.29.0_@expo+dom-webview@57.0.1_expo-widgets@57.0.21_react-dom_21d38cc3ff1a0ea56edb7b1fa976a6ea/node_modules/expo/node_modules/.bin/expo-internal: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_892c6724f75642ddedeb9f2966d7200b/node_modules/@expo/dom-webview/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_892c6724f75642ddedeb9f2966d7200b/node_modules/@expo/dom-webview/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_892c6724f75642ddedeb9f2966d7200b/node_modules/@expo/dom-webview/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+dom-webview@57.0.1_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nat_892c6724f75642ddedeb9f2966d7200b/node_modules/@expo/dom-webview/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@react-native+virtualized-lists@0.86.3_@types+react@19.2.18_react-native@0.86.3_@babel+_0fb47266d89a8b37a375ac288495cd6c/node_modules/@react-native/virtualized-lists/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/build-apple-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/build-ios-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/build-mac-framework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/sdks/hermes-engine/utils/copy-hermes-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/xcode/ccache-clang++.sh: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/xcode/ccache-clang.sh: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/xcode/with-environment.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/react_native_pods_utils/script_phases.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/compose-source-maps.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/ios-configure-glog.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/packager.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/scripts/react-native-xcode.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/generate-nested-scroll-view.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@0.86.3_@babel+core@7.2_aa56d519de450133511be1349fc267e3/node_modules/react-native/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/npm-package-arg@11.0.3/node_modules/npm-package-arg/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-modules-autolinking@57.0.13_typescript@6.0.3/node_modules/expo-modules-autolinking/bin/expo-modules-autolinking.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+prebuild-config@57.0.16_typescript@6.0.3/node_modules/@expo/prebuild-config/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+prebuild-config@57.0.16_typescript@6.0.3/node_modules/@expo/prebuild-config/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_0175d04bef7b18c39700df5930550a50/node_modules/@expo/router-server/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_0175d04bef7b18c39700df5930550a50/node_modules/@expo/router-server/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_0175d04bef7b18c39700df5930550a50/node_modules/@expo/router-server/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_5b9a05aebea279f400bcc55346154797/node_modules/expo-font/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_5b9a05aebea279f400bcc55346154797/node_modules/expo-font/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_5b9a05aebea279f400bcc55346154797/node_modules/expo-font/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_5b9a05aebea279f400bcc55346154797/node_modules/expo-font/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/scripts/get-app-config-ios.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/scripts/with-node.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nativ_9d95ae86aa9861eca811f4393c7e4ea8/node_modules/expo-constants/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+xcpretty@4.4.4/node_modules/@expo/xcpretty/build/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+xcpretty@4.4.4/node_modules/@expo/xcpretty/node_modules/.bin/js-yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/js-yaml@4.3.2/node_modules/js-yaml/bin/js-yaml.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/agent-cli-detector@0.1.7/node_modules/agent-cli-detector/dist/cli.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/agent-cli-detector@0.1.7/node_modules/agent-cli-detector/dist/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/lan-network@0.2.1/node_modules/lan-network/dist/lan-network-cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/sandbox-cli-detector@0.2.0/node_modules/sandbox-cli-detector/dist/cli.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/sandbox-cli-detector@0.2.0/node_modules/sandbox-cli-detector/dist/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+devtools@57.0.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@_1e2d8ede91bf8be17af9dab6906b4126/node_modules/@expo/devtools/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+fingerprint@0.20.13/node_modules/@expo/fingerprint/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@expo+fingerprint@0.20.13/node_modules/@expo/fingerprint/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/babel-preset-expo@57.0.13_@babel+core@7.29.0_@babel+runtime@7.29.7_expo-widgets@57.0.21_07338d8c3a53dd20cd7b296f84f86b83/node_modules/babel-preset-expo/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/babel-preset-expo@57.0.13_@babel+core@7.29.0_@babel+runtime@7.29.7_expo-widgets@57.0.21_07338d8c3a53dd20cd7b296f84f86b83/node_modules/babel-preset-expo/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/babel-preset-expo@57.0.13_@babel+core@7.29.0_@babel+runtime@7.29.7_expo-widgets@57.0.21_07338d8c3a53dd20cd7b296f84f86b83/node_modules/babel-preset-expo/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/scripts/with-node.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/scripts/xcode-build-bundle.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-widgets@57.0.21_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@_69bad55a7d8ea3bc46484ce3c15b7f0a/node_modules/expo-widgets/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+ui@57.0.20_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@type_86835e44acb1479604ba4358ec6f6c1c/node_modules/@expo/ui/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+ui@57.0.20_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@type_86835e44acb1479604ba4358ec6f6c1c/node_modules/@expo/ui/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+ui@57.0.20_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@type_86835e44acb1479604ba4358ec6f6c1c/node_modules/@expo/ui/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+ui@57.0.20_@babel+core@7.29.0_@types+react-dom@19.3.0_@types+react@19.2.18__@type_86835e44acb1479604ba4358ec6f6c1c/node_modules/@expo/ui/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native+metro-config@0.86.3_@babe_d7714303070f5f8f19d3c6bfe384219f/node_modules/react-native-worklets/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native+metro-config@0.86.3_@babe_d7714303070f5f8f19d3c6bfe384219f/node_modules/react-native-worklets/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_b725de7ff16d95711193ac32d2e2c0c8/node_modules/expo-asset/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_b725de7ff16d95711193ac32d2e2c0c8/node_modules/expo-asset/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_b725de7ff16d95711193ac32d2e2c0c8/node_modules/expo-asset/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_b725de7ff16d95711193ac32d2e2c0c8/node_modules/expo-asset/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_817b755039ed5fd4e5d49f3acdd660f4/node_modules/expo-file-system/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_817b755039ed5fd4e5d49f3acdd660f4/node_modules/expo-file-system/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_817b755039ed5fd4e5d49f3acdd660f4/node_modules/expo-file-system/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_817b755039ed5fd4e5d49f3acdd660f4/node_modules/expo-file-system/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+expo-modules-macros-plugin@0.6.1/node_modules/@expo/expo-modules-macros-plugin/apple/build.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_a91d6885f473a20decb00f2b842bdc4a/node_modules/expo-font/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_a91d6885f473a20decb00f2b842bdc4a/node_modules/expo-font/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_a91d6885f473a20decb00f2b842bdc4a/node_modules/expo-font/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-font@57.0.4_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest_a91d6885f473a20decb00f2b842bdc4a/node_modules/expo-font/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-keep-awake@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-keep-awake/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-keep-awake@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-keep-awake/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-keep-awake@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-keep-awake/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-modules-core@57.0.19_react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native_e59e638792f803c7d3cc7ad20fa341ee/node_modules/expo-modules-core/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+devtools@57.0.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-preset@_c70f77d92175281fb22d97dec00884a1/node_modules/@expo/devtools/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_8026a16a804fbcfba5ffe7364f159418/node_modules/expo-modules-jsi/apple/scripts/build-xcframework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_8026a16a804fbcfba5ffe7364f159418/node_modules/expo-modules-jsi/apple/scripts/create-stub-xcframework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_8026a16a804fbcfba5ffe7364f159418/node_modules/expo-modules-jsi/apple/scripts/generate-modulemap.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_8026a16a804fbcfba5ffe7364f159418/node_modules/expo-modules-jsi/apple/scripts/test.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_8026a16a804fbcfba5ffe7364f159418/node_modules/expo-modules-jsi/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_892c1e3dc28d929daa1be8e02e3a712a/node_modules/@expo/router-server/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_892c1e3dc28d929daa1be8e02e3a712a/node_modules/@expo/router-server/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@expo+router-server@57.0.11_expo-constants@57.0.19_expo@57.0.25_react-native@0.86.3_@ba_892c1e3dc28d929daa1be8e02e3a712a/node_modules/@expo/router-server/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-modules-core@57.0.19_react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native_3f576f0ecf43532b9726c915c3667304/node_modules/expo-modules-core/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_a18691d4849eb0d9de834a5aff2d1f58/node_modules/expo-modules-jsi/apple/scripts/build-xcframework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_a18691d4849eb0d9de834a5aff2d1f58/node_modules/expo-modules-jsi/apple/scripts/create-stub-xcframework.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_a18691d4849eb0d9de834a5aff2d1f58/node_modules/expo-modules-jsi/apple/scripts/generate-modulemap.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_a18691d4849eb0d9de834a5aff2d1f58/node_modules/expo-modules-jsi/apple/scripts/test.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/expo-modules-jsi@57.1.1_react-native@0.86.3_@babel+core@7.29.0_@react-native+jest-prese_a18691d4849eb0d9de834a5aff2d1f58/node_modules/expo-modules-jsi/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native+metro-config@0.86.3_@babe_fb3a8ad4e81285ae2f4c2171580c4deb/node_modules/react-native-worklets/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/react-native-worklets@0.10.1_@babel+core@7.29.0_@react-native+metro-config@0.86.3_@babe_fb3a8ad4e81285ae2f4c2171580c4deb/node_modules/react-native-worklets/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-network@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-network/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-network@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-network/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-network@57.0.2_expo@57.0.25_react@19.2.3/node_modules/expo-network/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_6029eb630a6b7faebe9e56aa9900a40e/node_modules/expo-file-system/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_6029eb630a6b7faebe9e56aa9900a40e/node_modules/expo-file-system/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_6029eb630a6b7faebe9e56aa9900a40e/node_modules/expo-file-system/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-file-system@57.0.7_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_6029eb630a6b7faebe9e56aa9900a40e/node_modules/expo-file-system/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_5d688fe6f4317073a28440d6561b89f2/node_modules/expo-asset/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_5d688fe6f4317073a28440d6561b89f2/node_modules/expo-asset/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_5d688fe6f4317073a28440d6561b89f2/node_modules/expo-asset/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-asset@57.0.18_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+je_5d688fe6f4317073a28440d6561b89f2/node_modules/expo-asset/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-web-browser@57.0.3_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_a1b93d1c05badc6c099ad5d212033f8d/node_modules/expo-web-browser/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-web-browser@57.0.3_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_a1b93d1c05badc6c099ad5d212033f8d/node_modules/expo-web-browser/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-web-browser@57.0.3_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_a1b93d1c05badc6c099ad5d212033f8d/node_modules/expo-web-browser/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-web-browser@57.0.3_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-nati_a1b93d1c05badc6c099ad5d212033f8d/node_modules/expo-web-browser/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-secure-store@57.0.4_expo@57.0.25/node_modules/expo-secure-store/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-secure-store@57.0.4_expo@57.0.25/node_modules/expo-secure-store/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-secure-store@57.0.4_expo@57.0.25/node_modules/expo-secure-store/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/expo-linking@57.0.11_expo@57.0.25_react-native@0.86.3_@babel+core@7.29.0_@react-native+_0f855f614732f3f20dac730c7d0a080e/node_modules/expo-linking/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@better-auth+sso@1.7.4_@better-auth+core@1.7.4_@better-auth+utils@0.4.2_@better-fetch+f_a7acb67057e476f2d250c87f6e41ed32/node_modules/@better-auth/sso/node_modules/.bin/tldts: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@better-auth+sso@1.7.4_@better-auth+core@1.7.4_@better-auth+utils@0.4.2_@better-fetch+f_a7acb67057e476f2d250c87f6e41ed32/node_modules/@better-auth/sso/node_modules/.bin/fxparser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/fast-xml-parser@5.11.1/node_modules/fast-xml-parser/src/cli/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/tldts@7.4.12/node_modules/tldts/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/bcryptjs@3.0.3/node_modules/bcryptjs/bin/bcrypt: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.0.1/node_modules/@apidevtools/json-schema-ref-parser/node_modules/.bin/js-yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/swagger-jsdoc@6.3.0_openapi-types@12.1.3/node_modules/swagger-jsdoc/bin/swagger-jsdoc.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/swagger-jsdoc@6.3.0_openapi-types@12.1.3/node_modules/swagger-jsdoc/node_modules/.bin/glob: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/glob@11.1.0/node_modules/glob/dist/esm/bin.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/uuid@14.0.2/node_modules/uuid/dist-node/bin/uuid: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@eslint+js@10.0.1_eslint@10.10.0_jiti@2.7.0_/node_modules/@eslint/js/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint@10.10.0_jiti@2.7.0/node_modules/eslint/bin/eslint.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/eslint@10.10.0_jiti@2.7.0/node_modules/eslint/node_modules/.bin/jiti: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@eslint-community+eslint-utils@4.10.1_eslint@10.10.0_jiti@2.7.0_/node_modules/@eslint-community/eslint-utils/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ajv@6.14.0/node_modules/ajv/scripts/info: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/ajv@6.14.0/node_modules/ajv/scripts/prepare-tests: interpreter directive changed from "#!/usr/bin/env sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ajv@6.14.0/node_modules/ajv/scripts/publish-built-version: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/ajv@6.14.0/node_modules/ajv/scripts/travis-gh-pages: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/espree@11.2.0/node_modules/espree/node_modules/.bin/acorn: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/acorn-jsx@5.3.2_acorn@8.18.0/node_modules/acorn-jsx/node_modules/.bin/acorn: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+eslint-plugin@8.70.0_@typescript-eslint+parser@8.70.0_eslint@10.10.0_8ce3c7b80ac493969ffea18a75a849a9/node_modules/@typescript-eslint/eslint-plugin/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+eslint-plugin@8.70.0_@typescript-eslint+parser@8.70.0_eslint@10.10.0_8ce3c7b80ac493969ffea18a75a849a9/node_modules/@typescript-eslint/eslint-plugin/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+eslint-plugin@8.70.0_@typescript-eslint+parser@8.70.0_eslint@10.10.0_8ce3c7b80ac493969ffea18a75a849a9/node_modules/@typescript-eslint/eslint-plugin/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+parser@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/parser/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+parser@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/parser/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+parser@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/parser/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+type-utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/type-utils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+type-utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/type-utils/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+type-utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/type-utils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+typescript-estree@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/typescript-estree/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+typescript-estree@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/typescript-estree/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+typescript-estree@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/typescript-estree/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+tsconfig-utils@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/tsconfig-utils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+tsconfig-utils@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/tsconfig-utils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+project-service@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/project-service/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+project-service@8.70.0_typescript@6.0.3/node_modules/@typescript-eslint/project-service/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/utils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/utils/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript-eslint+utils@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/@typescript-eslint/utils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ts-api-utils@2.5.0_typescript@6.0.3/node_modules/ts-api-utils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ts-api-utils@2.5.0_typescript@6.0.3/node_modules/ts-api-utils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-plugin-n@18.3.0_eslint@10.10.0_jiti@2.7.0__ts-declaration-location@1.0.7_typescript@6.0.3__typescript@6.0.3/node_modules/eslint-plugin-n/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-plugin-n@18.3.0_eslint@10.10.0_jiti@2.7.0__ts-declaration-location@1.0.7_typescript@6.0.3__typescript@6.0.3/node_modules/eslint-plugin-n/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-plugin-n@18.3.0_eslint@10.10.0_jiti@2.7.0__ts-declaration-location@1.0.7_typescript@6.0.3__typescript@6.0.3/node_modules/eslint-plugin-n/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-plugin-n@18.3.0_eslint@10.10.0_jiti@2.7.0__ts-declaration-location@1.0.7_typescript@6.0.3__typescript@6.0.3/node_modules/eslint-plugin-n/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-compat-utils@0.5.1_eslint@10.10.0_jiti@2.7.0_/node_modules/eslint-compat-utils/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-compat-utils@0.5.1_eslint@10.10.0_jiti@2.7.0_/node_modules/eslint-compat-utils/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/eslint-plugin-es-x@7.8.0_eslint@10.10.0_jiti@2.7.0_/node_modules/eslint-plugin-es-x/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ts-declaration-location@1.0.7_typescript@6.0.3/node_modules/ts-declaration-location/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ts-declaration-location@1.0.7_typescript@6.0.3/node_modules/ts-declaration-location/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/bin/regexp-tree: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/node_modules/.bin/regexp-tree: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/simple-update-notifier@2.0.0/node_modules/simple-update-notifier/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/nodemon@3.1.14/node_modules/nodemon/bin/nodemon.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/nodemon@3.1.14/node_modules/nodemon/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/nodemon@3.1.14/node_modules/nodemon/node_modules/.bin/nodetouch: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/touch@3.1.1/node_modules/touch/bin/nodetouch.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/prettier@3.9.6/node_modules/prettier/bin/prettier.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/superagent@10.3.0/node_modules/superagent/node_modules/.bin/mime: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/mime@2.6.0/node_modules/mime/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/typescript-eslint@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/typescript-eslint/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/typescript-eslint@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/typescript-eslint/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/typescript-eslint@8.70.0_eslint@10.10.0_jiti@2.7.0__typescript@6.0.3/node_modules/typescript-eslint/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@oclif+core@4.8.3/node_modules/@oclif/core/node_modules/.bin/ejs: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@oclif+core@4.8.3/node_modules/@oclif/core/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/node_modules/.bin/jake: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/jake@10.9.4/node_modules/jake/bin/bash_completion.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" node_modules/.pnpm/jake@10.9.4/node_modules/jake/bin/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/@typescript+vfs@1.6.4_typescript@5.9.3/node_modules/@typescript/vfs/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/@typescript+vfs@1.6.4_typescript@5.9.3/node_modules/@typescript/vfs/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsc: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/tsserver: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/js-yaml@5.4.1/node_modules/js-yaml/bin/js-yaml.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/tsutils@3.21.0_typescript@5.9.3/node_modules/tsutils/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/tsutils@3.21.0_typescript@5.9.3/node_modules/tsutils/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/lint-staged@17.5.0/node_modules/lint-staged/bin/lint-staged.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/lint-staged@17.5.0/node_modules/lint-staged/node_modules/.bin/yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/husky@9.1.7/node_modules/husky/bin.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/ts-to-zod@5.1.0/node_modules/ts-to-zod/bin/dev: interpreter directive changed from "#!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning" to "/nix/store/xjl7p8dvyk2j53kqf7f43kdj4ypbxz7g-coreutils-9.11/bin/env -S /nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node --loader ts-node/esm --disable-warning=ExperimentalWarning" node_modules/.pnpm/ts-to-zod@5.1.0/node_modules/ts-to-zod/bin/run: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/v6wsd9nyglmwh32yn7w8z11dq9cksg4m-nodejs-24.20.0/bin/node" node_modules/.pnpm/ts-to-zod@5.1.0/node_modules/ts-to-zod/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/ts-to-zod@5.1.0/node_modules/ts-to-zod/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/nodemon: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/bcrypt: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/vitest: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/ts-to-zod: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/fxparser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/swagger-jsdoc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/tsx: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/semver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/uuid: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/jiti: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/yaml: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/tldts: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/nodetouch: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/esbuild: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/glob: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/vite: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/why-is-node-running: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/ejs: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/node-which: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/acorn: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/fingerprint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/react-native: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/parser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/expo: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/expo-modules-autolinking: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/terser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/mime: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/regexp-tree: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/rolldown: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/jake: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/loose-envify: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/excpretty: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/sandbox-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/nanoid: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/expo-internal: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/lan-network: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/agent-cli-detector: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/metro: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/metro-symbolicate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/jsesc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/browserslist: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/json5: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/print-chrome-path: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/update-browserslist-db: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/mkdirp: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/resolve: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/baseline-browser-mapping: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/dotslash: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/is-docker: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/esvalidate: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/regjsparser: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" node_modules/.pnpm/node_modules/.bin/esparse: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" Finished pnpmConfigHook Running phase: checkPhase > sparkyfitnessserver@1.7.3 validate /build/source/SparkyFitnessServer > pnpm run typecheck && pnpm run lint && pnpm run format:check > sparkyfitnessserver@1.7.3 typecheck /build/source/SparkyFitnessServer > tsc --noEmit > sparkyfitnessserver@1.7.3 lint /build/source/SparkyFitnessServer > eslint . --max-warnings 0 > sparkyfitnessserver@1.7.3 format:check /build/source/SparkyFitnessServer > prettier . --check Checking formatting... __mocks__/uuid.js.dockerignore.prettierignore.prettierrcAGENTS.mdai/config.tsai/mcp/mcpAdapter.tsai/modelCapabilities.tsai/providerDispatch.tsai/tools/allergenTools.tsai/tools/askTools.tsai/tools/barcodeTools.tsai/tools/caffeineKineticsTools.tsai/tools/checkinTools.tsai/tools/coachTools.tsai/tools/customNutrientTools.tsai/tools/dashboardTools.tsai/tools/dates.tsai/tools/devTools.tsai/tools/engagementTools.tsai/tools/errors.tsai/tools/exerciseLookup.tsai/tools/exerciseStatsTools.tsai/tools/exerciseTools.tsai/tools/favoritesTools.tsai/tools/foodPhotoEstimateSink.tsai/tools/foodTools.tsai/tools/formatting.tsai/tools/goalTools.tsai/tools/habitTools.tsai/tools/index.tsai/tools/integrationsTools.tsai/tools/mealPlansTools.tsai/tools/medicationTools.tsai/tools/metaTools.tsai/tools/pagination.tsai/tools/profileTools.tsai/tools/progressPhotoTools.tsai/tools/reportTools.tsai/tools/schemas/allergens.tsai/tools/schemas/barcode.tsai/tools/schemas/caffeineKinetics.tsai/tools/schemas/checkin.tsai/tools/schemas/coach.tsai/tools/schemas/common.tsai/tools/schemas/customNutrients.tsai/tools/schemas/dashboard.tsai/tools/schemas/engagement.tsai/tools/schemas/exercise.tsai/tools/schemas/exerciseStats.tsai/tools/schemas/favorites.tsai/tools/schemas/food.tsai/tools/schemas/goals.tsai/tools/schemas/habits.tsai/tools/schemas/integrations.tsai/tools/schemas/mealPlans.tsai/tools/schemas/medications.tsai/tools/schemas/profile.tsai/tools/schemas/progressPhotos.tsai/tools/schemas/report.tsai/tools/schemas/sleepScience.tsai/tools/schemas/syncedData.tsai/tools/schemas/vision.tsai/tools/schemas/waterContainers.tsai/tools/schemas/wizard.tsai/tools/schemas/workoutPlans.tsai/tools/sleepScienceTools.tsai/tools/syncedDataTools.tsai/tools/truncation.tsai/tools/unitConversion.tsai/tools/visionTools.tsai/tools/waterContainerTools.tsai/tools/wizardTools.tsai/tools/workoutPlanTools.tsauth.tsCLAUDE.mdconfig/logging.tsconfig/swagger.tsconstants/foodProviders.tsconstants/goals.tsconstants/openFoodFacts.tsconstants/sleepScienceConstants.tsconstants/wger.tsdb/connection.tsdb/grantPermissions.tsdb/migrations/20250703170640_InitialDB.sqldb/migrations/20250710062500_create_goal_presets_table.sqldb/migrations/20250711173824_meal_features.sqldb/migrations/20250712163617_refactor_data_providers_and_add_exercise_source_id.sqldb/migrations/20250713125323_create_oidc_settings_and_update_users_table.sqldb/migrations/20250713135900_add_role_to_users_table.sqldb/migrations/20250713142300_add_oidc_config_fields.sqldb/migrations/20250714000000_create_session_table.sqldb/migrations/20250714175824_add_api_key_tag_to_ai_service_settings.sqldb/migrations/20250717190700_add_cascading_deletes.sqldb/migrations/20250717233929_add_is_quick_food_to_foods.sqldb/migrations/20250718190226_add_food_display_limit_to_user_preferences.sqldb/migrations/20250719131500_add_meal_percentages.sqldb/migrations/20250719215400_add_login_management_to_oidc_settings.sqldb/migrations/20250720010000_create_user_nutrient_display_preferences.sqldb/migrations/20250720201800_rename_food_display_limit_to_item_display_limit.sqldb/migrations/20250720220000_add_water_tracking_features.sqldb/migrations/20250720233836_alter_water_goal_ml_to_numeric.sqldb/migrations/20250721000000_add_servings_per_container_to_water_containers.sqldb/migrations/20250721000000_alter_water_container_volume_to_numeric.sqldb/migrations/20250721014900_alter_water_ml_to_numeric.sqldb/migrations/20250819062400_add_mealie_provider_type.sqldb/migrations/20250819083500_add_base_url_to_external_data_providers.sqldb/migrations/202508201215_add_garmin_integration_schema.sqldb/migrations/20250821090000_update_external_data_providers_provider_type_check.sqldb/migrations/20250821091500_add_garth_token_dump_to_external_data_providers.sqldb/migrations/20250821102000_remove_redundant_token_fields_from_external_data_providers.sqldb/migrations/20250831063900_create_mood_entries_table.sqldb/migrations/20250927180257_alter_exercises_table.sqldb/migrations/20250927212000_add_free_exercise_db_to_provider_type_check.sqldb/migrations/20250930002100_add_sets_reps_weight_to_exercise_entries.sqldb/migrations/20251001232600_add_gender_to_users_table.sqldb/migrations/20251002182306_create_backup_settings_table.sqldb/migrations/20251002224500_add_password_reset_to_users_table.sqldb/migrations/20251006021609_add_glycemic_index_to_foods_and_food_variants.sqldb/migrations/20251006220500_create_admin_activity_logs_table.sqldb/migrations/20251008224256_add_workout_features.sqldb/migrations/20251012225400_add_primary_keys_to_workout_tables.sqldb/migrations/20251012225500_add_multiple_sets_to_presets.sqldb/migrations/20251012225900_add_multiple_sets_to_plans.sqldb/migrations/20251012230000_add_multiple_sets_to_exercise_entries.sqldb/migrations/20251015223200_convert_weights_to_kg_and_set_default.sqldb/migrations/202510170132_add_text_measurements.sqldb/migrations/20251017200900_add_multiple_oidc_providers.sqldb/migrations/20251017204200_create_global_settings.sqldb/migrations/20251018001151_add_bmr_and_bodyfat_preferences.sqldb/migrations/20251018223700_add_signing_alg_to_oidc_providers.sqldb/migrations/20251019013200_merged_schema_and_data.sqldb/migrations/20251019013300_merged_rls_policies.sqldb/migrations/20251019154515_update_rls_policies_for_shared_items.sqldb/migrations/20251019203500_fix_rls_permissions_for_public_foods.sqldb/migrations/20251019204000_correct_variant_rls_policy.sqldb/migrations/20251019212500_update_measurement_rls_policies.sqldb/migrations/20251019222100_add_audit_columns_to_measurements.sqldb/migrations/20251020001000_fix_family_access_insert_policy.sqldb/migrations/20251020022000_set_default_shared_with_public.sqldb/migrations/20251020022200_update_rls_policies.sqldb/migrations/20251020022500_fix_food_select_policy.sqldb/migrations/20251020030000_simplify_food_select_policy.sqldb/migrations/20251020031000_update_food_select_policy_with_sharing.sqldb/migrations/20251020032200_add_all_owner_centric_policies.sqldb/migrations/20251020033400_add_food_variants_rls_policy.sqldb/migrations/20251020033700_fix_food_variants_rls_policy.sqldb/migrations/20251020230839_fix_family_access_rls_policies.sqldb/migrations/20251021025423_restrict_family_access_select_policy.sqldb/migrations/20251021034700_add_public_sharing_to_external_providers.sqldb/migrations/20251022201000_fix_exercise_rls_policy.sqldb/migrations/20251022203000_snapshot_exercise_details_in_entries.sqldb/migrations/20251023120500_update_external_providers_select_policy_for_public.sqldb/migrations/20251023221000_update_meals_rls_policy.sqldb/migrations/20251023221500_update_meal_plan_template_assignments_rls_policy.sqldb/migrations/20251023221501_add_meal_id_to_food_entries.sqldb/migrations/20251024230330_add_withings_fields_to_external_data_providers.sqldb/migrations/20251025210900_add_source_to_custom_measurements.sqldb/migrations/20251026125900_add_distance_and_hr_to_exercise_entries_activity_details.sqldb/migrations/202510310132_add_language_to_user_preferences.sqldb/migrations/20251101151100_create_sleep_entries_table.sqldb/migrations/20251103000000_add_onboarding_schema.sqldb/migrations/20251112000000_add_display_name_to_custom_categories.sqldb/migrations/20251114205134_create_exercise_preset_entries_table.sqldb/migrations/20251115003147_add_source_to_exercise_preset_entries.sqldb/migrations/20251115003301_add_exercise_preset_entry_id_to_activity_details.sqldb/migrations/20251115004027_alter_exercise_entry_id_nullable_in_activity_details.sqldb/migrations/20251120011100_add_mfa_magic_link_columns.sqldb/migrations/20251121011500_add_email_mfa_columns_to_users.sqldb/migrations/202511220110_add_default_external_data_providers.sqldb/migrations/202511232110_delete_raw_stress_data_categories.sqldb/migrations/202511270109_add_calorie_goal_adjustment_mode_to_user_preferences.sqldb/migrations/20251127194107_create_food_entry_meals_and_link_food_entries.sqldb/migrations/20251127194108_migrate_aggregated_food_entries_to_food_entry_meals.sqldb/migrations/20251128030115_add_tandoor_provider_type.sqldb/migrations/20251205000000_add_energy_unit_to_user_preferences.sqldb/migrations/20251206000000_add_nutrient_calculation_algorithms.sqldb/migrations/20251206000001_add_serving_size_to_meals.sqldb/migrations/20251207000001_add_default_meal_quantity.sqldb/migrations/20251215005329_add_usda_to_provider_type_check.sqldb/migrations/20251221000000_create_fasting_logs.sqldb/migrations/20251221010000_drop_mood_weight_from_fasting_logs.sqldb/migrations/20251226150700_add_mobile_health_data_features.sqldb/migrations/20251228000000_add_custom_nutrients_tables.sqldb/migrations/20252317234000_add_is_quick_exercise_to_exercises.sqldb/migrations/20260105000000_add_auto_scale_open_food_facts_imports.sqldb/migrations/20260108010449_add_cascading_delete_to_check_in_measurements.sqldb/migrations/20260108011953_add_cascading_delete_to_food_entries.sqldb/migrations/20260108012051_add_comprehensive_cascading_deletes.sqldb/migrations/20260108223108_alter_water_goal_to_numeric.sqldb/migrations/20260111180656_custom_meal_feature.sqldb/migrations/20260122201500_refactor_provider_type_to_lookup_table.sqldb/migrations/20260123115500_add_privacy_flag_to_provider_types.sqldb/migrations/20260125000000_better_auth_migration.sqldb/migrations/20260127040000_family_access_audit_fix.sqldb/migrations/202601280001_add_show_hide_to_meals.sqldb/migrations/20260201121400_add_api_key_table.sqldb/migrations/20260201184000_add_missing_api_key_columns.sqldb/migrations/20260202023713_add_oidc_config_to_sso_provider.sqldb/migrations/20260205200200_add_exercise_sorting.sqldb/migrations/20260206132000_ensure_first_user_is_admin.sqldb/migrations/20260206215500_add_mfa_totp_enabled_column.sqldb/migrations/20260207110000_mfa_triggers.sqldb/migrations/20260208_fix_user_creation_trigger.sqldb/migrations/20260208120000_fix_api_key_rate_limit_defaults.sqldb/migrations/20260208194543_fix_user_meal_visibilities_fkey.sqldb/migrations/20260214223000_add_polar_provider_type.sqldb/migrations/20260215144500_add_hevy_provider_type.sqldb/migrations/20260216012235_add_global_ai_settings.sqldb/migrations/20260216020134_add_allow_user_ai_config.sqldb/migrations/20260216030000_rename_is_global_to_is_public.sqldb/migrations/20260216140000_add_custom_nutrients_to_goals_and_presets.sqldb/migrations/20260216195500_prune_empty_custom_nutrients.sqldb/migrations/20260221210000_oidc_config_jsonb.sqldb/migrations/20260222100000_add_strava_provider_type.sqldb/migrations/20260224000000_add_sleep_science.sqldb/migrations/20260224120000_add_show_in_quick_log_to_meal_visibilities.sqldb/migrations/20260226000000_add_exercise_calorie_preferences.sqldb/migrations/20260228120000_fix_sleep_entry_date_to_wake_up_date.sqldb/migrations/20260302000000_add_default_barcode_provider_id.sqldb/migrations/20260302120000_normalize_barcodes.sqldb/migrations/20260313100000_add_source_to_water_intake.sqldb/migrations/20260314175000_add_image_to_user_table.sqldb/migrations/20260315192200_fix_oidc_config_keys.sqldb/migrations/20260315200000_better_auth_1_5_upgrade.sqldb/migrations/20260321000000_add_auto_scale_online_imports.sqldb/migrations/20260322130000_mfa_better_auth_optimization.sqldb/migrations/20260322141500_mfa_triggers_sync_fix.sqldb/migrations/20260322154230_add_first_day_of_week_to_preferences.sqldb/migrations/20260323122741_add_steps_column.sqldb/migrations/20260328120000_add_timezone_check_constraint.sqldb/migrations/20260406120000_add_barcode_fallback_open_food_facts.sqldb/migrations/20260420230132_scope_exercises_source_unique_to_user.sqldb/migrations/20260423120000_sleep_entry_stages_unique_natural_key.sqldb/migrations/20260426120000_provider_sort_order.sqldb/migrations/20260426120001_custom_meal_percentages.sqldb/migrations/20260509120000_add_water_intake_entries.sqldb/migrations/20260515120000_add_show_net_carbs_to_user_preferences.sqldb/migrations/20260515174155_serving_size_model.sqldb/migrations/20260523120000_ai_assisted_conversions.sqldb/migrations/20260527120000_add_allergen_tracking.sqldb/migrations/20260529140000_add_multimodal_support_to_chat_history.sqldb/migrations/20260531120000_add_nutrition_snapshot_to_meal_foods.sqldb/migrations/20260531120000_add_source_to_food_entries.sqldb/migrations/20260604120000_add_checkin_mood_unique_indexes.sqldb/migrations/20260604120600_add_user_last_login_at.sqldb/migrations/20260606132000_add_yazio_provider_type.sqldb/migrations/20260606164200_add_norish_provider_type.sqldb/migrations/20260607000000_add_googlehealth_provider_type.sqldb/migrations/20260607114000_add_swissfood_provider_type.sqldb/migrations/20260610120000_add_garmin_nutrition_index.sqldb/migrations/20260612120000_add_use_external_bmr_preference.sqldb/migrations/20260612153000_add_goal_mode_to_user_preferences.sqldb/migrations/20260614000000_add_checkin_photos.sqldb/migrations/20260618000000_remove_superuser_extensions.sqldb/migrations/20260620143300_public_sharing_and_dynamic_provider_types.sqldb/migrations/20260621000000_create_user_dashboard_layouts.sqldb/migrations/20260622120000_add_water_estimated_to_exercise_entries.sqldb/migrations/20260623000000_add_measurement_decimal_places.sqldb/migrations/20260624000000_add_medication_glp1_schema.sqldb/migrations/20260625000000_add_chat_tool_profile_to_ai_service_settings.sqldb/migrations/20260628000000_convert_exercise_durations_to_numeric.sqldb/migrations/20260628120000_add_vision_ai_service_pointers.sqldb/migrations/20260630000000_add_custom_nutrient_aliases.sqldb/migrations/20260630000000_add_onboarding_skipped.sqldb/migrations/20260701000000_add_child_meal_to_meal_foods.sqldb/migrations/20260702180000_add_cycle_tracking_schema.sqldb/migrations/20260705000000_fix_googlehealth_sleep_date_anchor.sqldb/migrations/20260707000000_add_passkey_registration_tickets.sqldb/migrations/20260707090000_add_provider_verified_to_foods.sqldb/migrations/20260707130000_add_workout_session_columns.sqldb/migrations/20260709000000_create_food_favorites.sqldb/migrations/20260710000000_add_supplement_nutrients_to_medications.sqldb/migrations/20260710120000_add_entry_time_and_meal_default_time.sqldb/migrations/20260715120000_add_oura_provider_type.sqldb/migrations/20260716181900_drop_user_preferences_system_prompt.sqldb/migrations/20260717120000_create_user_nutrient_goal_preferences.sqldb/migrations/20260723000000_add_spray_medication_type.sqldb/migrations/20260725173500_allow_multiple_active_meal_plans.sqldb/migrations/20260726000000_guard_serving_size_positive.sqldb/migrations/20260727100000_set_duration_seconds_modality_distance.sqldb/migrations/20260730000000_create_generic_health_and_workout_tables.sqldb/migrations/20260730120000_add_time_format_to_user_preferences.sqldb/migrations/20260730120000_add_workout_preset_set_distance.sqldb/migrations/20260803000000_rename_gps_points_new_constraints.sqldb/migrations/20260804000000_add_source_id_to_water_intake_entries.sqldb/migrations/20260807000000_add_record_timezone_to_sleep_entries.sqldb/migrations/20260810000000_add_images_to_foods_meals_and_food_entries.sqldb/migrations/20260814000000_backfill_diary_entry_images_from_parent.sqldb/migrations/20260816000000_widen_fractional_workout_telemetry_to_numeric.sqldb/migrations/20260816173934_flip_goal_mode_custom_percentage_sign.sqldb/migrations/20260816192818_normalize_exercise_json_array_fields.sqldb/migrations/20260817000000_add_liftosaur_provider_type.sqldb/migrations/20260818020000_fix_hevy_exercise_entry_distance_units.sqldb/migrations/20260821150000_flatten_nested_exercise_image_entries.sqldb/migrations/20260821170000_add_food_search_all_providers_default.sqldb/migrations/20260821233000_add_calorie_safety_floor_preferences.sqldb/migrations/20260827180000_add_bmr_to_check_in_measurements.sqldb/migrations/20260829171500_add_total_calories_capture_time.sqldb/migrations/20260830120000_add_notes_to_food_tables.sqldb/migrations/20260901103000_add_openfoodfacts_automatic_sync.sqldb/migrations/20260901120000_add_entry_yield_to_food_entry_meals.sqldb/migrations/20260901120000_add_progression_fields_to_workout_preset_exercises.sqldb/migrations/20260904120000_add_chart_scale_mode_preference.sqldb/migrations/20260905150000_add_caffeine_alcohol_water_and_container_links.sqldb/migrations/20260908120000_narrow_check_in_bmr_bounds.sqldb/migrations/20260909203000_deduplicate_strava_activity_details.sqldb/migrations/20260910180000_deduplicate_shared_active_calories.sqldb/migrations/20260912150000_preserve_data_on_user_and_library_deletes.sqldb/migrations/20260912193000_better_auth_1_7_schema.sqldb/migrations/20260914210000_cleanup_zero_ml_water_entries.sqldb/migrations/20260918162032_add_lap_moving_telemetry.sqldb/migrations/20260918170000_backfill_polar_steps_to_check_in.sqldb/migrations/20260918180000_widen_health_metric_samples_for_skin_temperature.sqldb/migrations/20260918230000_add_admin_system_settings.sqldb/migrations/20260921140000_add_sequential_workout_plan_mode.sqldb/migrations/20260921210000_add_watch_telemetry_observed_at.sqldb/migrations/20260923170000_add_workout_format_to_presets.sqldb/migrations/20260924200000_add_location_and_rir.sqldb/migrations/20260925013000_add_watch_duration_minutes.sqldb/migrations/20260925180000_add_ramp_increment_to_workout_preset_exercises.sqldb/migrations/20260925200000_snapshot_workout_format_on_preset_entries.sqldb/migrations/20260926120000_add_workout_feedback.sqldb/migrations/20260926230000_add_record_timezone_to_exercise_entries.sqldb/migrations/20260927180000_add_coros_provider_type.sqldb/poolManager.tsdb/rls_policies.sqldocs/externalapis.mdeslint.config.jsindex.tsintegrations/coros/corosConstants.tsintegrations/coros/corosDataProcessor.tsintegrations/coros/corosMcpText.tsintegrations/coros/corosService.tsintegrations/fatsecret/fatsecretService.tsintegrations/fitbit/fitbitDataProcessor.tsintegrations/fitbit/fitbitService.tsintegrations/freeexercisedb/FreeExerciseDBService.tsintegrations/garminconnect/garminConnectService.tsintegrations/garminconnect/garminMeasurementMapping.tsintegrations/garminfit/fitActivityTransform.tsintegrations/garminfit/fitDecoder.tsintegrations/googlehealth/googleHealthDataProcessor.tsintegrations/googlehealth/googleHealthService.tsintegrations/healthData/healthDataRoutes.tsintegrations/hevy/hevyDataProcessor.tsintegrations/hevy/hevyService.tsintegrations/liftosaur/liftohistoryParser.tsintegrations/liftosaur/liftosaurDataProcessor.tsintegrations/liftosaur/liftosaurMeasurementsService.tsintegrations/liftosaur/liftosaurService.tsintegrations/liftosaur/liftosaurTypes.tsintegrations/mealie/mealieService.tsintegrations/norish/norishService.tsintegrations/nutritionix/nutritionixService.tsintegrations/openfoodfacts/openFoodFactsAuth.tsintegrations/openfoodfacts/openFoodFactsContribution.tsintegrations/openfoodfacts/openFoodFactsPhoto.tsintegrations/openfoodfacts/openFoodFactsService.tsintegrations/oura/ouraDataProcessor.tsintegrations/oura/ouraService.tsintegrations/polar/polarDataProcessor.tsintegrations/polar/polarService.tsintegrations/strava/stravaDataProcessor.tsintegrations/strava/stravaService.tsintegrations/strava/stravaTelemetryExtractors.tsintegrations/swissfood/swissFoodService.tsintegrations/tandoor/tandoorService.tsintegrations/usda/usdaService.tsintegrations/wger/wgerNameMapping.tsintegrations/wger/wgerService.tsintegrations/withings/withingsDataProcessor.tsintegrations/withings/withingsService.tsintegrations/yazio/yazioService.tsmiddleware/authMiddleware.tsmiddleware/checkInPhotoUpload.tsmiddleware/checkPermissionMiddleware.tsmiddleware/demoGuardMiddleware.tsmiddleware/emailLoginGuard.tsmiddleware/errorHandler.tsmiddleware/imageUpload.tsmiddleware/oidcLogoUpload.tsmiddleware/onBehalfOfMiddleware.tsmiddleware/requestLogger.tsmiddleware/requireSelfMiddleware.tsmiddleware/signOutCookieCleanup.tsmiddleware/uploadMiddleware.tsmodels/activityDetailsRepository.tsmodels/adminActivityLogRepository.tsmodels/backupSettingsRepository.tsmodels/chatRepository.tsmodels/coachRepository.tsmodels/cycleRepository.tsmodels/dashboardLayoutRepository.tsmodels/engagementRepository.tsmodels/exercise.tsmodels/exerciseAlternativesRepository.tsmodels/exerciseEntry.tsmodels/exercisePresetEntryRepository.tsmodels/exerciseRepository.tsmodels/exerciseTemplate.tsmodels/externalProviderRepository.tsmodels/familyAccessRepository.tsmodels/fastingRepository.tsmodels/food.tsmodels/foodEntry.tsmodels/foodEntryMealRepository.tsmodels/foodMisc.tsmodels/foodRepository.tsmodels/foodTemplate.tsmodels/foodVariant.tsmodels/genericHealthRepository.tsmodels/globalSettingsRepository.tsmodels/goalPresetRepository.tsmodels/goalRepository.tsmodels/habitRepository.tsmodels/injectionRepository.tsmodels/mealPlanTemplateRepository.tsmodels/mealRepository.tsmodels/mealType.tsmodels/measurementRepository.tsmodels/medicationDisplayPreferenceRepository.tsmodels/medicationEntryRepository.tsmodels/medicationPenRepository.tsmodels/medicationRepository.tsmodels/moodRepository.tsmodels/nutrientDisplayPreferenceRepository.tsmodels/nutrientGoalPreferenceRepository.tsmodels/oidcProviderRepository.tsmodels/onboardingRepository.tsmodels/openFoodFactsProductReadRateLimitRepository.tsmodels/openFoodFactsSyncQueueRepository.tsmodels/preferenceRepository.tsmodels/pregnancyRepository.tsmodels/reportRepository.tsmodels/sleepRepository.tsmodels/sleepScienceRepository.tsmodels/supplementSql.tsmodels/symptomRepository.tsmodels/syncedDataRepository.tsmodels/titrationRepository.tsmodels/userRepository.tsmodels/waterContainerRepository.tsmodels/weeklyGoalPlanRepository.tsmodels/workoutFeedbackRepository.tsmodels/workoutPlanTemplateRepository.tsmodels/workoutPresetRepository.tsmodels/workoutTelemetryRepository.tsnodemon.jsonpackage.jsonprompts/chatbot-core-checkin.mdprompts/chatbot-core-food.mdprompts/chatbot-core.mdprompts/chatbot-full-checkin.mdprompts/chatbot-full-food.mdprompts/chatbot-full-vision.mdprompts/chatbot-full.mdroutes/adaptiveTdeeRoutes.tsroutes/adminAuthRoutes.tsroutes/adminRoutes.tsroutes/aiUnitConversionRoutes.tsroutes/allergenPreferenceRoutes.tsroutes/announcementRoutes.tsroutes/auth/apiKeyRoutes.tsroutes/auth/authCoreRoutes.tsroutes/auth/familyAccessRoutes.tsroutes/auth/templates/passkey-login.htmlroutes/auth/templates/passkey-register.htmlroutes/auth/userProfileRoutes.tsroutes/authRoutes.tsroutes/backupRoutes.tsroutes/chatRoutes.tsroutes/checkInPhotoRoutes.tsroutes/corosRoutes.tsroutes/customNutrientRoutes.tsroutes/dailySummaryRoutes.tsroutes/dashboardLayoutRoutes.tsroutes/dashboardRoutes.tsroutes/exerciseEntryRoutes.tsroutes/exercisePresetEntryRoutes.tsroutes/exerciseRoutes.tsroutes/exerciseStatsRoutes.tsroutes/externalProviderRoutes.tsroutes/fastingRoutes.tsroutes/favoritesRoutes.tsroutes/fitbitRoutes.tsroutes/foodCrudRoutes.tsroutes/foodEntryMealRoutes.tsroutes/foodEntryRoutes.tsroutes/foodIntegrationRoutes.tsroutes/foodRoutes.tsroutes/freeExerciseDBRoutes.tsroutes/garminRoutes.tsroutes/genericHealthRoutes.tsroutes/globalSettingsRoutes.tsroutes/goalPresetRoutes.tsroutes/goalRoutes.tsroutes/googleHealthRoutes.tsroutes/healthRoutes.tsroutes/hevyRoutes.tsroutes/identityRoutes.tsroutes/liftosaurRoutes.tsroutes/mcpRoutes.tsroutes/mealPlanTemplateRoutes.tsroutes/mealRoutes.tsroutes/mealTypeRoutes.tsroutes/measurementRoutes.tsroutes/moodRoutes.tsroutes/nutrientDisplayPreferenceRoutes.tsroutes/nutrientGoalPreferenceRoutes.tsroutes/oidcSettingsRoutes.tsroutes/onboardingRoutes.tsroutes/ouraRoutes.tsroutes/polarRoutes.tsroutes/preferenceRoutes.tsroutes/reportRoutes.tsroutes/reviewRoutes.tsroutes/sleepRoutes.tsroutes/sleepScienceRoutes.tsroutes/stravaRoutes.tsroutes/syncedDataRoutes.tsroutes/v2/cycleRoutes.tsroutes/v2/exerciseEntryRoutes.tsroutes/v2/exerciseRoutes.tsroutes/v2/foodRoutes.tsroutes/v2/goalPresetRoutes.tsroutes/v2/medicationRoutes.tsroutes/v2/nutritionKineticsRoutes.tsroutes/v2/openFoodFactsContributionRoutes.tsroutes/v2/pregnancyRoutes.tsroutes/v2/reportRoutes.tsroutes/v2/symptomRoutes.tsroutes/v2/waterIntakeRoutes.tsroutes/v2/workoutCoachingRoutes.tsroutes/versionRoutes.tsroutes/waterContainerRoutes.tsroutes/weeklyGoalPlanRoutes.tsroutes/withingsDataRoutes.tsroutes/withingsRoutes.tsroutes/workoutPlanTemplateRoutes.tsroutes/workoutPresetRoutes.tsschemas/checkInPhotoSchemas.tsschemas/corosSchemas.tsschemas/customNutrientSchemas.tsschemas/cycleSchemas.tsschemas/externalProviderSchemas.tsschemas/foodSchemas.tsschemas/goalPresetSchemas.tsschemas/googleHealthSchemas.tsschemas/mealTypeSchemas.tsschemas/measurementSchemas.tsschemas/medicationSchemas.tsschemas/oidcProviderSchemas.tsschemas/openFoodFactsContributionSchemas.tsschemas/ouraSchemas.tsschemas/pregnancySchemas.tsschemas/schema.utils.tsschemas/symptomSchemas.tsschemas/waterContainerSchemas.tsscripts/backfillWorkoutTelemetry.script.tssecurity/encryption.tsservices/AdaptiveTdeeService.tsservices/adaptiveWorkoutService.tsservices/aiUnitConversionService.tsservices/alcoholWeekService.tsservices/allergenPreferenceService.tsservices/announcementService.tsservices/authService.tsservices/backgroundJobScheduler.tsservices/backupScheduler.tsservices/backupService.tsservices/bmrService.tsservices/bodyCompositionService.tsservices/caffeineKineticsService.tsservices/calorieBalanceService.tsservices/CalorieCalculationService.tsservices/chatService.tsservices/checkInPhotoService.tsservices/corosService.tsservices/customNutrientService.tsservices/cycleService.tsservices/dailySummaryRangeService.tsservices/dailySummaryService.tsservices/dashboardLayoutService.tsservices/DashboardService.tsservices/demoSeedService.tsservices/emailService.tsservices/exerciseAlternativesService.tsservices/exerciseCalorieRangeService.tsservices/exerciseEntryHistoryService.tsservices/exerciseEntryService.tsservices/exerciseService.tsservices/exerciseStatsService.tsservices/externalFoodSearchService.tsservices/externalProviderService.tsservices/favoritesService.tsservices/fitbitService.tsservices/fitImportService.tsservices/foodCoreService.tsservices/foodEntryService.tsservices/foodIntegrationService.tsservices/foodPhotoEstimationService.tsservices/foodPhotoLogService.tsservices/foodPhotoMatchService.tsservices/foodProviderDetailService.tsservices/foodProviderLookupService.tsservices/foodService.tsservices/garmin/garminActivityProcessor.tsservices/garmin/garminExerciseMapper.tsservices/garmin/garminHealthProcessor.tsservices/garmin/garminTelemetryExtractors.tsservices/garminService.tsservices/garminSyncResult.tsservices/glp1Service.tsservices/goalPresetService.tsservices/goalService.tsservices/googleHealthService.tsservices/healthDataHandlers.tsservices/healthMetricSampleWriter.tsservices/hrZoneCalculator.tsservices/hydrationNutritionRangeService.tsservices/hydrationTotalsService.tsservices/labelScanService.tsservices/mealPlanTemplateService.tsservices/mealService.tsservices/measurementService.tsservices/nutrientDisplayPreferenceService.tsservices/nutrientGoalPreferenceService.tsservices/onboardingService.tsservices/openFoodFactsAutoSyncScheduler.tsservices/openFoodFactsAutoSyncService.tsservices/openFoodFactsContributionService.tsservices/openFoodFactsManualContributionService.tsservices/openFoodFactsProductReadRateLimitService.tsservices/openFoodFactsProviderCredentials.tsservices/openFoodFactsSyncSettingsService.tsservices/ouraService.tsservices/passkeyTicketService.tsservices/polarService.tsservices/preferenceService.tsservices/pregnancyService.tsservices/providerSyncScheduler.tsservices/reportService.tsservices/reviewService.tsservices/sleepAnalyticsService.tsservices/sleepScienceService.tsservices/stravaService.tsservices/syncedDataService.tsservices/versionService.tsservices/waterContainerService.tsservices/weeklyGoalPlanService.tsservices/withingsService.tsservices/workoutActivityMapping.tsservices/workoutCoachingService.tsservices/workoutPlanProgression.tsservices/workoutPlanTemplateService.tsservices/workoutPresetService.tsservices/workoutTelemetryDerivation.tsSparkyFitnessServer.tstests/activitySport.test.tstests/adaptiveCoaching.test.tstests/adaptiveTdeeService.test.tstests/adminExternalProviderRoutes.test.tstests/aiServiceConnectionTest.test.tstests/aiUnitConversionService.test.tstests/alcoholNeverAddsCalories.test.tstests/alcoholUnits.test.tstests/alcoholWeekService.test.tstests/allergenPreferenceRoutes.test.tstests/announcementService.test.tstests/apiKeyRoutes.contextSwitch.test.tstests/apiKeySessionCache.test.tstests/appDbCredentials.test.tstests/appDbPasswordReachesPool.test.tstests/appRolePasswordSync.test.tstests/authMiddleware.cache.test.tstests/authRateLimit.test.tstests/authServiceUpdateEmail.test.tstests/authTrustedOrigins.test.tstests/backgroundJobScheduler.test.tstests/backupRescheduling.test.tstests/backupRoutes.download.test.tstests/backupScheduler.test.tstests/backupService.test.tstests/barcodeLookup.test.tstests/barcodeLookupRoute.test.tstests/bearerAuthBridge.test.tstests/betterAuthSchemaCheck.integration.test.tstests/bmrService.test.tstests/bodyCompositionService.test.tstests/bootOrder.test.tstests/caffeineDoseWindow.test.tstests/caffeineKinetics.test.tstests/caffeineKineticsMidnight.test.tstests/calorieBalanceService.test.tstests/calorieCalculations.test.tstests/calorieCalculationService.test.tstests/calorieSafetyFloor.test.tstests/chatbotTestHarness.script.tstests/chatbotToolRepositories.test.tstests/chatbotToolsAllergens.test.tstests/chatbotToolsAsk.test.tstests/chatbotToolsBarcode.test.tstests/chatbotToolsCaching.test.tstests/chatbotToolsCaffeineKinetics.test.tstests/chatbotToolsCheckin.test.tstests/chatbotToolSchemas.test.tstests/chatbotToolsCoach.test.tstests/chatbotToolsCustomNutrients.test.tstests/chatbotToolsDashboard.test.tstests/chatbotToolsEngagement.test.tstests/chatbotToolsExercise.test.tstests/chatbotToolsExerciseStats.test.tstests/chatbotToolsFavorites.test.tstests/chatbotToolsFood.test.tstests/chatbotToolsGoals.test.tstests/chatbotToolsHabits.test.tstests/chatbotToolsIndex.test.tstests/chatbotToolsIntegrations.test.tstests/chatbotToolsMealPlans.test.tstests/chatbotToolsMedications.test.tstests/chatbotToolsMeta.test.tstests/chatbotToolsProfile.test.tstests/chatbotToolsProgressPhotos.test.tstests/chatbotToolsReport.test.tstests/chatbotToolsSleepScience.test.tstests/chatbotToolsSyncedData.test.tstests/chatbotToolsVision.test.tstests/chatbotToolsWaterContainers.test.tstests/chatbotToolsWizard.test.tstests/chatbotToolsWorkoutPlans.test.tstests/chatbotToolUnitConversion.test.tstests/chatProviderOptions.test.tstests/chatRepository.test.tstests/chatService.test.tstests/chatServiceClassifier.test.tstests/check_routes.tstests/checkInPhotoRoutes.test.tstests/checkInPhotoService.test.tstests/checkPermissionMiddleware.test.tstests/contracts/nutrientColumnCoverage.test.tstests/corosMcpText.test.tstests/corosOauthCallback.test.tstests/corosRoutes.test.tstests/corosService.test.tstests/corosSync.test.tstests/corsHelper.test.tstests/customNutrientCatalog.test.tstests/customNutrientDeleteCleanup.test.tstests/customNutrientMatching.test.tstests/cycleCorrelations.test.tstests/cycleFertility.test.tstests/cyclePredictions.test.tstests/cycleRepository.test.tstests/cycleRoutes.test.tstests/cycleTtcRoutes.test.tstests/dailySummaryRangeService.test.tstests/dailySummaryRoutes.range.test.tstests/dailySummaryService.test.tstests/dailySummarySupplements.test.tstests/dashboardLayoutRepository.test.tstests/dashboardLayoutService.test.tstests/dashboardService.test.tstests/dateColumnParser.test.tstests/dateShifting.test.tstests/demoPasswordResetGuard.test.tstests/demoSeedService.test.tstests/drinkPresetMaterialization.test.tstests/dropSetCalculator.test.tstests/emailLogin.test.tstests/emailService.test.tstests/entryTime.test.tstests/exerciseActiveCalories.test.tstests/exerciseAlternativesRanking.test.tstests/exerciseAlternativesRoutes.test.tstests/exerciseAlternativesService.test.tstests/exerciseCalorieRangeService.test.tstests/exerciseEntriesApiSchemas.test.tstests/exerciseEntry.activityDetail.test.tstests/exerciseEntry.sourcePreservation.test.tstests/exerciseEntry.vanishedParent.test.tstests/exerciseEntryActiveCaloriesNotes.test.tstests/exerciseEntryGarminCleanup.test.tstests/exerciseEntryHistoryService.supersetGroup.test.tstests/exerciseEntryRoutes.distanceClear.test.tstests/exerciseEntryRoutes.duplicateCheck.test.tstests/exerciseEntryRoutes.progress.test.tstests/exerciseEntryRoutes.watchTelemetry.test.tstests/exerciseEntryService.csvImport.test.tstests/exerciseEntryService.watchTelemetry.test.tstests/exerciseEntryStats.integration.test.tstests/exerciseImportDedup.test.tstests/exerciseJsonFields.test.tstests/exerciseModality.test.tstests/exerciseMuscleAggregates.test.tstests/exercisePresetCascade.integration.test.tstests/exercisePresetEntryRoutes.test.tstests/exerciseRepository.arrayFieldNormalization.test.tstests/exerciseRepository.script.tstests/exerciseRoutes.write.test.tstests/exerciseRoutesV2.test.tstests/exercisesApiSchemas.test.tstests/exerciseSearch.test.tstests/exerciseService.distanceDerivation.test.tstests/exerciseService.groupedWorkouts.test.tstests/exerciseService.imagesEncoding.test.tstests/exerciseService.searchExternal.test.tstests/exerciseService.stats.test.tstests/exerciseSourceScoping.test.tstests/exerciseStatsRoutes.test.tstests/exerciseStatsService.test.tstests/externalFoodSearchService.fatsecret.test.tstests/externalFoodSearchService.openFoodFacts.test.tstests/externalProviderRepository.baseUrl.test.tstests/externalProviderRepository.credentials.test.tstests/externalProviderRoutes.actorContext.test.tstests/externalProviderSchemas.test.tstests/externalProviderService.openFoodFactsConsent.test.tstests/externalProviderService.test.tstests/fastingRoutes.test.tstests/fatsecretService.test.tstests/favoritesRoutes.test.tstests/favoritesService.test.tstests/findFoodByBarcode.test.tstests/fitActivityTransform.test.tstests/fitbitDataProcessor.test.tstests/fitImportRoutes.test.tstests/fitImportService.test.tstests/fixtures/generateFitFixture.tstests/fixtures/tennis-activity.fittests/foodBulkImportOverwrite.test.tstests/foodCoreService.test.tstests/foodCoreService.updateSnapshot.test.tstests/foodDefaultVariantQueries.test.tstests/foodDeletionImpact.test.tstests/foodDerivedWaterQuery.test.tstests/foodDiaryImport.test.tstests/foodEntryCopy.test.tstests/foodEntryCopyFingerprint.test.tstests/foodEntryLinkedWaterPropagation.test.tstests/foodEntryMealRepository.test.tstests/foodEntryMealRoutes.create.test.tstests/foodEntryMealService.test.tstests/foodEntrySelectedCopy.test.tstests/foodEntrySelectedCopyRoute.test.tstests/foodEntrySelectedCopySchema.test.tstests/foodEntryService.snapshot.test.tstests/foodEntrySnapshot.test.tstests/foodEntryTime.test.tstests/foodEntryUnitReconcile.test.tstests/foodEntryWholeCopy.test.tstests/foodEntryWholeCopyRepository.test.tstests/foodEntryWholeCopyRoute.test.tstests/foodEntryWholeCopySchema.test.tstests/foodFavoritesQuery.test.tstests/foodFavoritesService.test.tstests/foodIntegrationService.fatsecret.test.tstests/foodNotes.test.tstests/foodOptionsRoute.test.tstests/foodOptionsService.test.tstests/foodPhotoContracts.test.tstests/foodPhotoEstimateMath.test.tstests/foodPhotoEstimationRoute.test.tstests/foodPhotoEstimationService.test.tstests/foodPhotoLogRoute.test.tstests/foodPhotoLogService.test.tstests/foodPhotoMatchService.test.tstests/foodRefreshFromSourceRoute.test.tstests/foodRoutesV2.test.tstests/foodSchemas.test.tstests/foodSearch.test.tstests/foodSorting.test.tstests/foodUpdateSnapshotRoute.test.tstests/foodUtilsNutritionScale.test.tstests/forwardResponseHeaders.test.tstests/freeExerciseDBSearch.test.tstests/garminActivityProcessor.transaction.test.tstests/garminChunkingAndStrengthFallback.test.tstests/garminConnectErrorFormatter.test.tstests/garminHealthProcessor.wellness.test.tstests/garminIncrementalSync.test.tstests/garminMeasurementMapping.test.tstests/garminNutritionSync.integration.test.tstests/garminNutritionSync.test.tstests/garminRoutes.test.tstests/garminService.workoutDefinitionWeights.test.tstests/garminService.workoutSets.test.tstests/garminSyncResult.test.tstests/genericHealthRepository.test.tstests/genericHealthSchemas.test.tstests/gestation.test.tstests/globalSettingsFailClosed.test.tstests/globalSettingsRepository.test.tstests/globalSettingsRoutes.test.tstests/glp1Logic.test.tstests/glp1Service.test.tstests/goalModePercentageSignMigration.test.tstests/goalPresetRoutes.test.tstests/goalPresetService.test.tstests/goalRepository.test.tstests/goalServiceAdaptiveMaturity.test.tstests/googleHealthDataProcessor.test.tstests/googleHealthParsers.test.tstests/googlehealthRoutes.test.tstests/guidedWorkoutCues.test.tstests/healthConnectTotalCaloriesCaptureMigration.test.tstests/healthDataHandlers.test.tstests/healthDataRoutes.test.tstests/healthMetricSampleWriter.test.tstests/healthResyncTelemetryPreservation.test.tstests/helpers/mockDbClient.tstests/helpers/toolExecutionOptions.tstests/hevyDataProcessor.test.tstests/hrZoneCalculator.test.tstests/hydrationNutritionRange.test.tstests/hydrationTotalsService.test.tstests/imageDownloader.test.tstests/imageLocalizer.test.tstests/imageOrder.test.tstests/initializeDatabase.integration.test.tstests/initializeDatabase.test.tstests/injectionRepository.test.tstests/integrationRoutesPermissionGating.test.tstests/intervalEngine.test.tstests/labelScanRoute.test.tstests/labelScanService.test.tstests/libraryDeletePreservesDiary.test.tstests/liftosaurDataProcessor.test.tstests/liftosaurMeasurementsService.test.tstests/liftosaurParser.test.tstests/liftosaurRoutes.test.tstests/liftosaurSync.test.tstests/logging.test.tstests/mcpProtocolVersion.test.tstests/mcpRoutes.test.tstests/mealieService.test.tstests/mealPlanTemplateService.test.tstests/mealRepository.test.tstests/mealRoutes.test.tstests/mealSearch.test.tstests/mealService.test.tstests/mealServiceFromDiary.test.tstests/mealTypeDefaultTime.test.tstests/mealTypeDelete.test.tstests/mealTypeRoutes.delete.test.tstests/measurementImportRoutes.test.tstests/measurementRepository.bulkCheckInMeasurements.test.tstests/measurementRepository.bulkCustomMeasurements.test.tstests/measurementRepository.customMetricTimestamp.test.tstests/measurementRepository.test.tstests/measurementRepository.water.test.tstests/measurementRoutes.test.tstests/measurementSchemas.checkIn.test.tstests/measurementService.categoryDisplayName.test.tstests/measurementService.checkInDelete.test.tstests/measurementService.healthConnectNutrition.test.tstests/measurementService.healthConnectSleepStages.test.tstests/measurementService.healthDataContract.test.tstests/measurementService.healthDataUnits.test.tstests/measurementService.sleepPrimaryCluster.test.tstests/measurementService.sleepResyncMerge.test.tstests/measurementService.smartScaleComposition.test.tstests/measurementService.timezone.test.tstests/measurementService.waterIntake.test.tstests/measurementService.zeroValueFiltering.test.tstests/medicationEntryRepository.test.tstests/medicationRepository.test.tstests/medicationRoutes.test.tstests/medicationSchemas.zod.test.tstests/migrate.script.tstests/mockDataContext.test.tstests/mockDataOptions.test.tstests/modelCapabilities.test.tstests/moodTags.test.tstests/norishService.test.tstests/normalizeExerciseJsonArrayFields.integration.test.tstests/nutrientDisplayPreferenceService.test.tstests/nutrientGoalPreferenceRepository.test.tstests/nutrientGoalPreferenceRoutes.test.tstests/nutrientGoalPreferenceService.test.tstests/oauthState.test.tstests/oidcEnvConfig.test.tstests/oidcGroupSync.test.tstests/oidcProviderRepository.integration.test.tstests/oidcProviderRepository.test.tstests/oidcSettingsRoutes.test.tstests/ollamaToolProfile.script.tstests/onboardingRoutes.test.tstests/openFoodFactsAlcohol.test.tstests/openFoodFactsAuth.test.tstests/openFoodFactsAutomaticSyncDatabaseSchemas.test.tstests/openFoodFactsAutomaticSyncMigration.integration.test.tstests/openFoodFactsAutomaticSyncRelease.test.tstests/openFoodFactsAutoSyncScheduler.test.tstests/openFoodFactsAutoSyncService.test.tstests/openFoodFactsContribution.test.tstests/openFoodFactsContributionRoutes.test.tstests/openFoodFactsContributionService.test.tstests/openFoodFactsLanguage.test.tstests/openFoodFactsManualContribution.test.tstests/openFoodFactsPhoto.test.tstests/openFoodFactsProductReadRateLimitRepository.test.tstests/openFoodFactsProductReadRateLimitService.test.tstests/openFoodFactsService.test.tstests/openFoodFactsSyncQueueRepository.test.tstests/openFoodFactsSyncSettingsRoutes.test.tstests/openFoodFactsSyncSettingsService.test.tstests/ouraDataProcessor.test.tstests/ouraRoutes.test.tstests/ouraService.test.tstests/outboundHttp.test.tstests/outboundProxy.test.tstests/outboundUrlPolicy.test.tstests/permissionUtils.test.tstests/polarActivityDedup.test.tstests/polarDataProcessor.test.tstests/polarOauthCallback.test.tstests/poolContext.test.tstests/poolIdleErrors.test.tstests/preferenceChartScaleMode.test.tstests/preferenceRepository.openFoodFacts.test.tstests/preferenceRepository.test.tstests/preferenceSafetyFloor.test.tstests/preflightPlaceholderSecrets.test.tstests/pregnancyPhotoService.test.tstests/pregnancyRoutes.test.tstests/progressionEngine.test.tstests/providerDispatch.test.tstests/providerSyncScheduler.test.tstests/pullWorkoutProgression.test.tstests/quickAddNeverPrimary.test.tstests/reportRangeCols.test.tstests/reportRepository.customNutrients.test.tstests/reportRepository.downsample.test.tstests/reportRepository.getExerciseEntries.test.tstests/reportSupplementScaling.test.tstests/reportWodPrExclusion.test.tstests/resolveMealTypeIdWithClient.test.tstests/resolveTemplateStartDay.test.tstests/rlsPermissionMatrix.integration.test.tstests/schedules.test.tstests/schemaConnections.test.tstests/schemaParity.integration.test.tstests/secretLoader.script.tstests/secretLoader.test.tstests/setsDurationMinutes.test.tstests/signOutCookieCleanup.test.tstests/sleepRepository.placeholders.test.tstests/sleepRepository.remainderKey.test.tstests/sleepScienceService.midnightBedtime.test.tstests/sleepScienceService.recordZone.test.tstests/stravaActivityDetailCleanup.integration.test.tstests/stravaDataProcessor.test.tstests/supplementSqlDedup.test.tstests/swagger.test.tstests/swissFoodService.test.tstests/switchContextCookie.test.tstests/symptoms.test.tstests/syncedDataRepository.test.tstests/syncedDataRoutes.test.tstests/tandoorService.test.tstests/telemetryExtractors.laps.test.tstests/timezone.test.tstests/toolResultTruncation.test.tstests/truncationPagination.test.tstests/twoFactorState.test.tstests/unitConversion.test.tstests/updateEmailRoute.test.tstests/updateFoodBarcode.test.tstests/uploadsStaticMount.test.tstests/usdaAlcohol.test.tstests/usdaService.test.tstests/userRepositoryCredentialAccountId.test.tstests/visionToolsLogPhoto.test.tstests/volumeUnitToMl.test.tstests/waterContainerFoodLink.test.tstests/waterContainerRepository.test.tstests/waterContainerRoutes.test.tstests/waterEstimatedGoalAdjustment.test.tstests/waterGoalExclusivity.test.tstests/waterIntakeFoodLinkSchema.test.tstests/waterIntakeLinkedDecrement.test.tstests/waterIntakeRoutes.test.tstests/webLoginRoutes.test.tstests/weightRamp.test.tstests/withingsDataProcessor.test.tstests/withingsOauthCallback.test.tstests/withingsTokenResponse.test.tstests/workoutActivityMapping.test.tstests/workoutCoachingRoutes.test.tstests/workoutCoachingService.test.tstests/workoutDaysRoute.test.tstests/workoutFeedbackForm.test.tstests/workoutHandlerTelemetry.test.tstests/workoutPlanProgression.test.tstests/workoutPlanTemplateService.test.tstests/workoutPresetRepository.supersetGroup.test.tstests/workoutPresetRoutes.validation.test.tstests/workoutPresetSearch.test.tstests/workoutPresetService.ownership.test.tstests/workoutTelemetryDerivation.test.tstests/yazioService.test.tstests/zeroHydrationFactorPreset.test.tstsconfig.jsontypes/express.d.tstypes/externalProvider.tstypes/garmin-fitsdk.d.tstypes/garmin.tstypes/goals.tstypes/nutrition.tstypes/wger.tstypes/withings.tsutils/adminCheck.tsutils/apiKeySessionCache.tsutils/applyRlsPolicies.tsutils/backfillAllergens.tsutils/bearerAuthBridge.tsutils/boundedMap.tsutils/clientIp.tsutils/corsHelper.tsutils/dateHelpers.tsutils/dbMigrations.tsutils/dbSearchHelper.tsutils/diagnosticLogger.tsutils/emailLogin.tsutils/env.tsutils/errors.tsutils/exerciseAlternativesRanking.tsutils/exerciseJsonFields.tsutils/expoSsoCookieRelay.tsutils/foodEntrySnapshot.tsutils/foodRanking.tsutils/foodUtils.tsutils/forwardResponseHeaders.tsutils/imageDownloader.tsutils/imageLocalizer.tsutils/initializeDatabase.tsutils/mockDataContext.tsutils/mockDataOptions.tsutils/oauthState.tsutils/oidcEnvConfig.tsutils/oidcGroupSync.tsutils/outboundHttp.tsutils/outboundProxy.tsutils/outboundUrlPolicy.tsutils/permissionUtils.tsutils/preflightChecks.tsutils/scheduledJobs.tsutils/secretLoader.tsutils/sleepStageAggregates.tsutils/timezoneLoader.tsutils/ttlCache.tsutils/twoFactorState.tsutils/uploads/exercises/90_90_Hamstring/0.jpgutils/uploads/exercises/90_90_Hamstring/1.jpgutils/uploads/exercises/Adductor/0.jpgutils/uploads/exercises/Adductor/1.jpgutils/uploadsPath.tsutils/uuidUtils.tsvalidation/authValidation.tsvitest.config.tsAll matched files use Prettier code style! > sparkyfitnessserver@1.7.3 test /build/source/SparkyFitnessServer > vitest run ◇ injected env (0) from ../.env // tip: ⌘ enable debugging { debug: true } (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: - `__dirname` (vitest.config.ts:7:36). Use `import.meta.dirname` instead Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. RUN v5.0.0 /build/source/SparkyFitnessServer ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] Test Files 0 passed (434) Tests 0 passed (0) Start at 11:46:07 Duration 341ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts [queued] ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 0 passed (0) Start at 11:46:07 Duration 449ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts [queued] ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 0 passed (0) Start at 11:46:07 Duration 907ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 1/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 1 passed (45) Start at 11:46:07 Duration 1.35s stdout | tests/openFoodFactsAutomaticSyncMigration.integration.test.ts ◇ injected env (0) from ../.env // tip: ⌘ enable debugging { debug: true } [Secrets] Checking for secret files to load... [Secrets] No secrets loaded from files. ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 2/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 2 passed (45) Start at 11:46:07 Duration 1.55s stderr | tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 2/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 2 passed (45) Start at 11:46:07 Duration 1.55s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 2/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 0/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts [queued] ❯ tests/openFoodFactsContribution.test.ts 1/20 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 0 passed (434) Tests 3 passed (73) Start at 11:46:07 Duration 1.65s ✓ tests/openFoodFactsContribution.test.ts (20 tests) 38ms ✓ tests/exercisePresetEntryRoutes.test.ts (8 tests) 31ms ↓ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts (26 tests | 26 skipped) stdout | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > transcodes HEIC to JPEG and dispatches it [2026-09-30T11:46:09.672Z] [INFO] providerDispatch: HEIC->JPEG transcode ok in 0ms (5B HEIC -> 4B JPEG) stdout | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > transcodes when the bytes are really HEIC even if the client mislabels the mime [2026-09-30T11:46:09.674Z] [INFO] providerDispatch: HEIC->JPEG transcode ok in 0ms (12B HEIC -> 4B JPEG) ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 8/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts 26/26 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 0/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 2 passed | 1 skipped (434) Tests 31 passed | 26 skipped (213) Start at 11:46:07 Duration 1.75s stderr | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > fails loud (no bypass) when a real HEIC mislabeled as JPEG fails to transcode [2026-09-30T11:46:09.674Z] [WARN] providerDispatch: HEIC->JPEG transcode failed, falling back to unsupported_media: decode failed ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 8/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts 26/26 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 0/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 2 passed | 1 skipped (434) Tests 31 passed | 26 skipped (213) Start at 11:46:07 Duration 1.75s stdout | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > detects HEIC with an uppercase ftyp brand (case-insensitive) [2026-09-30T11:46:09.675Z] [INFO] providerDispatch: HEIC->JPEG transcode ok in 0ms (12B HEIC -> 4B JPEG) stdout | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > normalizes uppercase/whitespace HEIC mime types before the transcode check [2026-09-30T11:46:09.675Z] [INFO] providerDispatch: HEIC->JPEG transcode ok in 0ms (5B HEIC -> 4B JPEG) ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 8/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts 26/26 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 0/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 2 passed | 1 skipped (434) Tests 31 passed | 26 skipped (213) Start at 11:46:07 Duration 1.75s stderr | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > falls back to unsupported_media when HEIC transcoding fails [2026-09-30T11:46:09.676Z] [WARN] providerDispatch: HEIC->JPEG transcode failed, falling back to unsupported_media: not a valid HEIC file ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 8/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts 26/26 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 0/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 2 passed | 1 skipped (434) Tests 31 passed | 26 skipped (213) Start at 11:46:07 Duration 1.75s stdout | tests/providerDispatch.test.ts > dispatchAiRequest — preconditions > also transcodes HEIC for google (we convert uniformly, no provider gate) [2026-09-30T11:46:09.676Z] [INFO] providerDispatch: HEIC->JPEG transcode ok in 0ms (5B HEIC -> 4B JPEG) ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exercisePresetEntryRoutes.test.ts 8/8 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/oidcProviderRepository.integration.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncMigration.integration.test.ts 26/26 ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 0/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 2 passed | 1 skipped (434) Tests 31 passed | 26 skipped (213) Start at 11:46:07 Duration 1.75s ↓ tests/oidcProviderRepository.integration.test.ts (21 tests | 21 skipped) stdout | tests/providerDispatch.test.ts > dispatchAiRequest — models that reject temperature > drops temperature and retries once when the provider rejects it [2026-09-30T11:46:09.701Z] [INFO] [modelCapabilities] 'mystery-1' on 'openai_compatible' rejected 'temperature'; omitting it from future requests. stdout | tests/providerDispatch.test.ts > dispatchAiRequest — models that reject temperature > remembers the rejection so later requests cost no retry [2026-09-30T11:46:09.701Z] [INFO] [modelCapabilities] 'mystery-1' on 'openai_compatible' rejected 'temperature'; omitting it from future requests. ✓ tests/providerDispatch.test.ts (114 tests) 72ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 3/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/providerDispatch.test.ts 114/114 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 145 passed | 47 skipped (234) Start at 11:46:07 Duration 1.85s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 5/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 147 passed | 47 skipped (234) Start at 11:46:07 Duration 2.16s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 6/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 148 passed | 47 skipped (234) Start at 11:46:07 Duration 2.36s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 7/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 149 passed | 47 skipped (234) Start at 11:46:07 Duration 2.56s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 8/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 150 passed | 47 skipped (234) Start at 11:46:07 Duration 2.76s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 9/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 151 passed | 47 skipped (234) Start at 11:46:07 Duration 2.96s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 10/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 152 passed | 47 skipped (234) Start at 11:46:07 Duration 3.16s ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 10/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts [queued] ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts [queued] ❯ tests/foodPhotoLogService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts [queued] ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts [queued] ❯ tests/openFoodFactsService.test.ts [queued] ❯ tests/polarDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 3 passed | 2 skipped (434) Tests 152 passed | 47 skipped (273) Start at 11:46:07 Duration 3.26s stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoGuardMiddleware > blocks demo user mutations with 403 when demo mode is active [2026-09-30T11:46:11.234Z] [WARN] [DEMO GUARD] Blocked POST /api/identity/update-password for demo user stderr | tests/mealService.test.ts > mealService validation > createMeal > throws ValidationError when total_servings is zero [2026-09-30T11:46:11.232Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: Meal total_servings must be a positive number. at normalizeServingFields (/build/source/SparkyFitnessServer/services/mealService.ts:109:13) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:422:5) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:74:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > rejects public searches outside the Search-a-licious result window [2026-09-30T11:46:11.252Z] [ERROR] Error searching OpenFoodFacts with query "product" in foodService: Error: OpenFoodFacts search supports at most 10000 results at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:610:9) at processTicksAndRejections (node:internal/process/task_queues:104:5) { status: 400, statusCode: 400 } stderr | tests/mealService.test.ts > mealService validation > createMeal > throws ValidationError when total_servings is negative [2026-09-30T11:46:11.242Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: Meal total_servings must be a positive number. at normalizeServingFields (/build/source/SparkyFitnessServer/services/mealService.ts:109:13) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:422:5) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:89:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () stderr | tests/mealService.test.ts > mealService validation > createMeal > throws ValidationError when serving_size is zero [2026-09-30T11:46:11.243Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: Meal serving_size must be a positive number. at normalizeServingFields (/build/source/SparkyFitnessServer/services/mealService.ts:99:13) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:422:5) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:99:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () stderr | tests/mealService.test.ts > mealService validation > createMeal > throws ValidationError when total_servings is non-numeric [2026-09-30T11:46:11.244Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: Meal total_servings must be a positive number. at normalizeServingFields (/build/source/SparkyFitnessServer/services/mealService.ts:109:13) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:422:5) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:114:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stdout | tests/mealService.test.ts > mealService validation > createMeal > defaults serving_size and total_servings to 1 when missing on create [2026-09-30T11:46:11.245Z] [INFO] Meal new-id created with serving: 1 serving, total_servings: 1 stdout | tests/mealService.test.ts > mealService validation > createMeal > forces serving_size to 1 when serving_unit is "serving" (defensive normalize) [2026-09-30T11:46:11.246Z] [INFO] Meal new-id created with serving: 1 serving, total_servings: 8 stdout | tests/mealService.test.ts > mealService validation > createMeal > rewrites legacy-client payload (serving_unit=serving + serving_size>1 + no total_servings) [2026-09-30T11:46:11.247Z] [INFO] Meal new-id created with serving: 1 serving, total_servings: 4 stdout | tests/mealService.test.ts > mealService validation > createMeal > does not trigger legacy shim when total_servings is explicit (new client) [2026-09-30T11:46:11.247Z] [INFO] Meal new-id created with serving: 1 serving, total_servings: 4 stdout | tests/mealService.test.ts > mealService validation > createMeal > does not trigger legacy shim for non-serving units [2026-09-30T11:46:11.247Z] [INFO] Meal new-id created with serving: 1000 ml, total_servings: 1 ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stderr | tests/mealService.test.ts > mealService validation > updateMeal > throws ValidationError when total_servings is zero on update [2026-09-30T11:46:11.248Z] [ERROR] Error in mealService.updateMeal for user user-1, meal meal-1: ValidationError: Meal total_servings must be a positive number. at normalizeServingFields (/build/source/SparkyFitnessServer/services/mealService.ts:109:13) at Object.updateMeal (/build/source/SparkyFitnessServer/services/mealService.ts:547:5) at processTicksAndRejections (node:internal/process/task_queues:104:5) ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stdout | tests/mealService.test.ts > mealService validation > createMealFromDiaryEntries > routes diary-created meals through create-time serving normalization [2026-09-30T11:46:11.250Z] [INFO] Meal new-meal created with serving: 1 serving, total_servings: 1 stdout | tests/mealService.test.ts > mealService validation > createMealFromDiaryEntries > validates a non-default food variant by calling getFoodVariantsByFoodId [2026-09-30T11:46:11.251Z] [INFO] Meal new-meal created with serving: 1 serving, total_servings: 1 ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stderr | tests/mealService.test.ts > mealService validation > createMealFromDiaryEntries > skips a food entry if its variant_id does not exist in the database [2026-09-30T11:46:11.251Z] [ERROR] Error in mealService.createMealFromDiaryEntries for user user-1: Error: Cannot create meal. The following foods or their variants are missing: Chicken (Variant ID: variant-non-existent). Please ensure they exist. at Object.createMealFromDiaryEntries (/build/source/SparkyFitnessServer/services/mealService.ts:1068:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:392:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects an ingredient row with both food_id and child_meal_id [2026-09-30T11:46:11.254Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: An ingredient cannot reference both a food and a meal. at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:162:15) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:423:11) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:419:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects a food ingredient row missing food_id [2026-09-30T11:46:11.255Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: A food ingredient requires food_id. at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:203:13) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:423:11) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:439:21 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects linking a meal that does not exist or is inaccessible [2026-09-30T11:46:11.256Z] [ERROR] Error in mealService.createMeal for user user-1: ValidationError: Linked meal meal-missing was not found or is not accessible. at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:174:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Object.createMeal (/build/source/SparkyFitnessServer/services/mealService.ts:423:5) stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects a meal linking itself on update [2026-09-30T11:46:11.256Z] [ERROR] Error in mealService.updateMeal for user user-1, meal meal-1: ValidationError: A meal cannot contain itself. at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:167:15) at Object.updateMeal (/build/source/SparkyFitnessServer/services/mealService.ts:549:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects a link that would create a cycle [2026-09-30T11:46:11.257Z] [ERROR] Error in mealService.updateMeal for user user-1, meal meal-1: ValidationError: Linking meal "Child" would create a cycle. at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:185:17) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Object.updateMeal (/build/source/SparkyFitnessServer/services/mealService.ts:549:7) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:497:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects a link that would exceed the max nesting depth [2026-09-30T11:46:11.258Z] [ERROR] Error in mealService.updateMeal for user user-1, meal meal-1: ValidationError: Meal nesting is too deep (max 5 levels). at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:198:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Object.updateMeal (/build/source/SparkyFitnessServer/services/mealService.ts:549:7) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:526:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > rejects a link if the ancestor height plus child depth exceeds max nesting depth [2026-09-30T11:46:11.258Z] [ERROR] Error in mealService.updateMeal for user user-1, meal meal-1: ValidationError: Meal nesting is too deep (max 5 levels). at validateMealIngredients (/build/source/SparkyFitnessServer/services/mealService.ts:198:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Object.updateMeal (/build/source/SparkyFitnessServer/services/mealService.ts:549:7) at /build/source/SparkyFitnessServer/tests/mealService.test.ts:551:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stdout | tests/mealService.test.ts > mealService validation > linked-meal ingredient validation > accepts a valid linked-meal ingredient and forwards it to the repository [2026-09-30T11:46:11.259Z] [INFO] Meal meal-1 created with serving: 1 serving, total_servings: 1 ✓ tests/foodPhotoLogService.test.ts (23 tests) 18ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > uses complete Search-a-licious hits without product fan-out when bulk hydration is unavailable [2026-09-30T11:46:11.259Z] [WARN] OpenFoodFacts bulk hydration unavailable: Error: OpenFoodFacts bulk hydration failed (HTTP 503) at hydrateSearchHits (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:424:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:646:7) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:623:22 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > keeps ranked hits when bulk hydration returns malformed JSON [2026-09-30T11:46:11.261Z] [WARN] OpenFoodFacts bulk hydration unavailable: Error: OpenFoodFacts search returned an invalid response (HTTP 200) at parseSearchResponse (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:168:9) at processTicksAndRejections (node:internal/process/task_queues:104:5) at hydrateSearchHits (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:428:23) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:646:7) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:672:24 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > keeps ranked hits when bulk hydration returns malformed product entries [2026-09-30T11:46:11.262Z] [WARN] OpenFoodFacts bulk hydration unavailable: Error: OpenFoodFacts search returned an invalid response (HTTP 200) at parseSearchResponse (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:168:9) at processTicksAndRejections (node:internal/process/task_queues:104:5) at hydrateSearchHits (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:428:23) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:646:7) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:672:24 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > keeps ranked hits when bulk hydration rejects at the network layer [2026-09-30T11:46:11.263Z] [WARN] OpenFoodFacts bulk hydration unavailable: Error: socket closed at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:699:32 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > throws a compact error without exposing an upstream HTML response [2026-09-30T11:46:11.264Z] [ERROR] OpenFoodFacts Search-a-licious request failed with HTTP 503 [2026-09-30T11:46:11.264Z] [ERROR] Error searching OpenFoodFacts with query "pizza" in foodService: Error: OpenFoodFacts search failed (HTTP 503) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:641:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:762:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > throws a compact error for a successful HTML Search-a-licious response [2026-09-30T11:46:11.265Z] [ERROR] Error searching OpenFoodFacts with query "pizza" in foodService: Error: OpenFoodFacts search returned an invalid response (HTTP 200) at parseSearchResponse (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:168:9) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:643:18) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:775:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > maps upstream timeout aborts to a compact gateway timeout error [2026-09-30T11:46:11.266Z] [WARN] OpenFoodFacts request timed out after 10000ms: https://search.openfoodfacts.org/search stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > searchOpenFoodFacts > maps upstream timeout aborts to a compact gateway timeout error [2026-09-30T11:46:11.266Z] [ERROR] Error searching OpenFoodFacts with query "pizza" in foodService: Error: OpenFoodFacts request timed out at fetchWithTimeout (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:61:27) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:618:22) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:788:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 504 } ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s ✓ tests/exerciseStatsService.test.ts (14 tests) 26ms ✓ tests/mealService.test.ts (23 tests) 31ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > on 429 with cookie, invalidates and retries unauthenticated once [2026-09-30T11:46:11.276Z] [WARN] OpenFoodFacts: 429 with session cookie — invalidating and retrying unauthenticated stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > shares one absolute timeout across an authenticated retry [2026-01-01T00:00:04.000Z] [WARN] OpenFoodFacts: 503 with session cookie — invalidating and retrying unauthenticated stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > does not start an authenticated retry after its deadline [2026-01-01T00:00:10.000Z] [WARN] OpenFoodFacts: 503 with session cookie — invalidating and retrying unauthenticated [2026-01-01T00:00:10.000Z] [WARN] OpenFoodFacts retry deadline exhausted: https://world.openfoodfacts.org/api/v2/product/12345678.json?fields=product_name,product_name_en,brands,code,serving_size,serving_quantity,serving_quantity_unit,product_quantity_unit,nutriments,allergens_tags,traces_tags,image_front_url,image_url&lc=en stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > does not start an authenticated retry after its deadline [2026-01-01T00:00:10.000Z] [ERROR] Error searching OpenFoodFacts with barcode "12345678" and fields "product_name,product_name_en,brands,code,serving_size,serving_quantity,serving_quantity_unit,product_quantity_unit,nutriments,allergens_tags,traces_tags,image_front_url,image_url" in foodService: Error: OpenFoodFacts request timed out at fetchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:360:27) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Module.searchOpenFoodFactsByBarcodeFields (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:692:22) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:1164:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 504 } stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > gives the unauthenticated retry only the remaining request budget [2026-09-30T11:46:19.280Z] [WARN] OpenFoodFacts: 503 with session cookie — invalidating and retrying unauthenticated stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > authenticated request path > does not retry on 429 when no cookie was attached [2026-09-30T11:46:11.281Z] [ERROR] OpenFoodFacts Barcode Fields Search API error: rate limited [2026-09-30T11:46:11.281Z] [ERROR] Error searching OpenFoodFacts with barcode "12345678" and fields "product_name,product_name_en,brands,code,serving_size,serving_quantity,serving_quantity_unit,product_quantity_unit,nutriments,allergens_tags,traces_tags,image_front_url,image_url" in foodService: Error: OpenFoodFacts API error: rate limited at Module.searchOpenFoodFactsByBarcodeFields (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:708:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:1283:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > self-hosted base_url resolution > bounds self-hosted candidate scans that cannot fill the requested page [2026-09-30T11:46:11.283Z] [ERROR] Error searching OpenFoodFacts with query "banana" in foodService: Error: OpenFoodFacts legacy search scan limit reached at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:556:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:1441:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 504, statusCode: 504 } stderr | tests/openFoodFactsService.test.ts > openFoodFactsService > self-hosted base_url resolution > throws a compact error for a successful HTML self-hosted search response [2026-09-30T11:46:11.284Z] [ERROR] Error searching OpenFoodFacts with query "pizza" in foodService: Error: OpenFoodFacts search returned an invalid response (HTTP 200) at parseSearchResponse (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:168:9) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Module.searchOpenFoodFacts (/build/source/SparkyFitnessServer/integrations/openfoodfacts/openFoodFactsService.ts:576:22) at /build/source/SparkyFitnessServer/tests/openFoodFactsService.test.ts:1509:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/waterIntakeRoutes.test.ts > Water Intake Routes (v2) > GET /api/v2/measurements/water-intake/:date > delegates unexpected service errors to the error handler [2026-09-30T11:46:11.285Z] [ERROR] Error caught by centralized handler: DB connection failed Error: DB connection failed at /build/source/SparkyFitnessServer/tests/waterIntakeRoutes.test.ts:139:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/waterIntakeRoutes.test.ts > Water Intake Routes (v2) > GET /api/v2/measurements/water-intake/log/:date > delegates unexpected errors to error handler [2026-09-30T11:46:11.310Z] [ERROR] Error caught by centralized handler: DB error Error: DB error at /build/source/SparkyFitnessServer/tests/waterIntakeRoutes.test.ts:340:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s ✓ tests/timezone.test.ts (61 tests) 43ms ✓ tests/polarDataProcessor.test.ts (37 tests) 35ms stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > seeds demo user and populates sample entries [2026-09-30T11:46:11.303Z] [INFO] [DEMO] Creating demo user account: demo@sparkyfitness.com stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > seeds demo user and populates sample entries [2026-09-30T11:46:11.304Z] [INFO] [DEMO] Demo user account created with ID: 0904fa1f-c29a-4977-941a-fd6196f2e2da stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > seeds demo user and populates sample entries [2026-09-30T11:46:11.316Z] [INFO] [DEMO] Demo data successfully initialized for demo@sparkyfitness.com stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > purges demo user when demo mode is disabled [2026-09-30T11:46:11.317Z] [INFO] [DEMO] Demo mode disabled — purging demo user demo@sparkyfitness.com (mock-demo-id)... stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > purges demo user when demo mode is disabled [2026-09-30T11:46:11.317Z] [INFO] [DEMO] Successfully purged demo user demo@sparkyfitness.com stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > resets demo user data strictly scoped by user_id [2026-09-30T11:46:11.318Z] [INFO] [DEMO RESET] Performing daily scoped reset for demo user mock-demo-id... stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > resets demo user data strictly scoped by user_id [2026-09-30T11:46:11.319Z] [INFO] [DEMO RESET] Daily scoped reset completed successfully for demo user mock-demo-id stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > safely constrains exercise image cleanup to exercise_entries directory [2026-09-30T11:46:11.319Z] [INFO] [DEMO] Demo mode disabled — purging demo user demo@sparkyfitness.com (mock-demo-id)... stdout | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoSeedService > safely constrains exercise image cleanup to exercise_entries directory [2026-09-30T11:46:11.320Z] [INFO] [DEMO] Successfully purged demo user demo@sparkyfitness.com ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > refuses to purge an account with a null bio [2026-09-30T11:46:11.320Z] [WARN] [DEMO] Skipping purge: Account demo@sparkyfitness.com does not carry the demo identity marker. Leaving it untouched. stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > refuses to purge an account with an empty bio [2026-09-30T11:46:11.321Z] [WARN] [DEMO] Skipping purge: Account demo@sparkyfitness.com does not carry the demo identity marker. Leaving it untouched. stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > refuses to purge an account with someone else’s bio [2026-09-30T11:46:11.321Z] [WARN] [DEMO] Skipping purge: Account demo@sparkyfitness.com does not carry the demo identity marker. Leaving it untouched. ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s ✓ tests/exerciseRoutesV2.test.ts (21 tests) 68ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 0/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 0/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 11/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts [queued] ❯ tests/exerciseStatsService.test.ts 14/14 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoLogService.test.ts 23/23 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/mealService.test.ts 23/23 ❯ tests/measurementRepository.water.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 0/39 ❯ tests/openFoodFactsService.test.ts 0/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/timezone.test.ts 61/61 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 0/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/yazioService.test.ts [queued] Test Files 9 passed | 2 skipped (434) Tests 362 passed | 47 skipped (668) Start at 11:46:07 Duration 3.37s ✓ tests/foodPhotoEstimationService.test.ts (30 tests) 64ms ✓ tests/openFoodFactsContributionService.test.ts (39 tests) 35ms ✓ tests/calorieBalanceService.test.ts (53 tests) 47ms ✓ tests/openFoodFactsService.test.ts (65 tests) 47ms ✓ tests/waterIntakeRoutes.test.ts (29 tests) 77ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 53/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 39/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 12/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts 0/56 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRepository.water.test.ts 1/18 ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 39/39 ❯ tests/openFoodFactsService.test.ts 65/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 29/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts [queued] ❯ tests/yazioService.test.ts 0/26 Test Files 15 passed | 2 skipped (434) Tests 589 passed | 47 skipped (768) Start at 11:46:07 Duration 3.49s stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > refuses to seed over an existing account with no marker [2026-09-30T11:46:11.382Z] [ERROR] [DEMO] Safety guard prevented modifying non-demo user with email demo@sparkyfitness.com stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > refuses to seed over an existing account with no marker [2026-09-30T11:46:11.383Z] [ERROR] [DEMO] Failed to seed demo user data: Error: Safety check failed: Account demo@sparkyfitness.com already exists and is not marked as a demo sandbox account. Set SPARKY_FITNESS_DEMO_EMAIL to an address that is not in use. at /build/source/SparkyFitnessServer/services/demoSeedService.ts:428:17 at /build/source/SparkyFitnessServer/tests/demoSeedService.test.ts:366:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demo marker safety (fails closed) > skips the daily reset when the marker is absent [2026-09-30T11:46:11.387Z] [WARN] [DEMO RESET] Skipping reset: Account demo@sparkyfitness.com does not carry the demo identity marker. stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/chat on any method [2026-09-30T11:46:11.388Z] [WARN] [DEMO GUARD] Blocked GET /api/chat for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/chat/stream on any method [2026-09-30T11:46:11.388Z] [WARN] [DEMO GUARD] Blocked GET /api/chat/stream for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/ai/convert on any method [2026-09-30T11:46:11.389Z] [WARN] [DEMO GUARD] Blocked GET /api/ai/convert for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /mcp on any method [2026-09-30T11:46:11.389Z] [WARN] [DEMO GUARD] Blocked GET /mcp for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/admin/global-settings on any method [2026-09-30T11:46:11.389Z] [WARN] [DEMO GUARD] Blocked GET /api/admin/global-settings for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/integrations/strava/connect on any method [2026-09-30T11:46:11.390Z] [WARN] [DEMO GUARD] Blocked GET /api/integrations/strava/connect for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /api/withings/link on any method [2026-09-30T11:46:11.390Z] [WARN] [DEMO GUARD] Blocked GET /api/withings/link for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks /mcp when mounted, where req.path is relative [2026-09-30T11:46:11.391Z] [WARN] [DEMO GUARD] Blocked POST /mcp/tools for demo user [2026-09-30T11:46:11.391Z] [WARN] [DEMO GUARD] Blocked POST /mcp/ for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks mutations under /api/external-providers but allows reads [2026-09-30T11:46:11.391Z] [WARN] [DEMO GUARD] Blocked POST /api/external-providers for demo user [2026-09-30T11:46:11.392Z] [WARN] [DEMO GUARD] Blocked PUT /api/external-providers for demo user [2026-09-30T11:46:11.392Z] [WARN] [DEMO GUARD] Blocked PATCH /api/external-providers for demo user [2026-09-30T11:46:11.392Z] [WARN] [DEMO GUARD] Blocked DELETE /api/external-providers for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks mutations under /api/identity but allows reads [2026-09-30T11:46:11.392Z] [WARN] [DEMO GUARD] Blocked PUT /api/identity/profiles for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/foods/import-from-csv [2026-09-30T11:46:11.393Z] [WARN] [DEMO GUARD] Blocked POST /api/foods/import-from-csv for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/food-entries/import-from-csv [2026-09-30T11:46:11.393Z] [WARN] [DEMO GUARD] Blocked POST /api/food-entries/import-from-csv for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/exercise-entries/import-history-csv [2026-09-30T11:46:11.393Z] [WARN] [DEMO GUARD] Blocked POST /api/exercise-entries/import-history-csv for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/exercise-entries/import-fit [2026-09-30T11:46:11.394Z] [WARN] [DEMO GUARD] Blocked POST /api/exercise-entries/import-fit for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/exercises/import-json [2026-09-30T11:46:11.394Z] [WARN] [DEMO GUARD] Blocked POST /api/exercises/import-json for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/foods/scan-label [2026-09-30T11:46:11.395Z] [WARN] [DEMO GUARD] Blocked POST /api/foods/scan-label for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/foods/estimate-food-photo [2026-09-30T11:46:11.395Z] [WARN] [DEMO GUARD] Blocked POST /api/foods/estimate-food-photo for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks non-multipart upload route /api/v2/foods/abc-123/openfoodfacts/contribute [2026-09-30T11:46:11.396Z] [WARN] [DEMO GUARD] Blocked POST /api/v2/foods/abc-123/openfoodfacts/contribute for demo user stderr | tests/demoSeedService.test.ts > Demo Mode Infrastructure > demoRestrictionGuard > blocks multipart uploads on any route [2026-09-30T11:46:11.396Z] [WARN] [DEMO GUARD] Blocked POST /api/foods/image for demo user stderr | tests/measurementRepository.water.test.ts > measurementRepository.upsertWaterIntakeSamples > replaces the day's unkeyed rows once per (date, source) for unkeyed non-manual samples [2026-09-30T11:46:11.443Z] [WARN] [upsertWaterIntakeSamples] Sample without sourceId for source 'health_connect'; using replace-per-day semantics for 2026-08-03. stderr | tests/measurementRepository.water.test.ts > measurementRepository.upsertWaterIntakeSamples > replaces the day's unkeyed rows once per (date, source) for unkeyed non-manual samples [2026-09-30T11:46:11.444Z] [WARN] [upsertWaterIntakeSamples] Sample without sourceId for source 'health_connect'; using replace-per-day semantics for 2026-08-03. stderr | tests/measurementRepository.water.test.ts > measurementRepository.upsertWaterIntakeSamples > does not replace-per-day for unkeyed manual samples (additive insert) [2026-09-30T11:46:11.445Z] [WARN] [upsertWaterIntakeSamples] Sample without sourceId for source 'manual'; inserting additively (not deduped). stderr | tests/measurementRepository.water.test.ts > measurementRepository.upsertWaterIntakeSamples > falls back to a plain insert (no conflict target) when sourceId is missing [2026-09-30T11:46:11.449Z] [WARN] [upsertWaterIntakeSamples] Sample without sourceId for source 'manual'; inserting additively (not deduped). ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 53/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 39/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 12/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts 0/56 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRepository.water.test.ts 1/18 ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 39/39 ❯ tests/openFoodFactsService.test.ts 65/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 29/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts [queued] ❯ tests/yazioService.test.ts 0/26 Test Files 15 passed | 2 skipped (434) Tests 589 passed | 47 skipped (768) Start at 11:46:07 Duration 3.49s ✓ tests/demoSeedService.test.ts (39 tests) 171ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/calorieBalanceService.test.ts 53/53 ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts [queued] ❯ tests/dailySummaryService.test.ts [queued] ❯ tests/demoSeedService.test.ts 39/39 ❯ tests/exerciseEntriesApiSchemas.test.ts 12/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/exerciseRoutesV2.test.ts 21/21 ❯ tests/exerciseService.groupedWorkouts.test.ts 0/56 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoEstimationService.test.ts 30/30 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRepository.water.test.ts 1/18 ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/openFoodFactsContributionService.test.ts 39/39 ❯ tests/openFoodFactsService.test.ts 65/65 ❯ tests/polarDataProcessor.test.ts 37/37 ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/waterIntakeRoutes.test.ts 29/29 ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts [queued] ❯ tests/yazioService.test.ts 0/26 Test Files 15 passed | 2 skipped (434) Tests 589 passed | 47 skipped (768) Start at 11:46:07 Duration 3.49s ✓ tests/measurementRepository.water.test.ts (18 tests) 19ms ✓ tests/yazioService.test.ts (26 tests) 20ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts [queued] ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts 0/14 ❯ tests/dailySummaryService.test.ts 0/19 ❯ tests/exerciseEntriesApiSchemas.test.ts 12/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts 44/56 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRepository.water.test.ts 18/18 ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts [queued] ❯ tests/yazioService.test.ts 26/26 Test Files 17 passed | 2 skipped (434) Tests 676 passed | 47 skipped (801) Start at 11:46:07 Duration 3.59s ✓ tests/exerciseService.groupedWorkouts.test.ts (56 tests) 204ms ✓ tests/dailySummaryService.test.ts (19 tests) 34ms ✓ tests/dailySummaryRangeService.test.ts (14 tests) 70ms ❯ tests/adaptiveTdeeService.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 0/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummaryRangeService.test.ts 14/14 ❯ tests/dailySummaryService.test.ts 19/19 ❯ tests/exerciseEntriesApiSchemas.test.ts 13/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/exerciseService.groupedWorkouts.test.ts 56/56 ❯ tests/externalProviderService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts [queued] ❯ tests/stravaActivityDetailCleanup.integration.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts [queued] Test Files 20 passed | 2 skipped (434) Tests 722 passed | 47 skipped (820) Start at 11:46:07 Duration 3.80s ↓ tests/rlsPermissionMatrix.integration.test.ts (243 tests | 217 skipped) ❯ tests/adaptiveTdeeService.test.ts 0/14 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 0/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 14/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/externalProviderService.test.ts 0/48 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts 1/21 ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts 0/64 ❯ tests/openFoodFactsAuth.test.ts 0/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts 243/243 ❯ tests/stravaActivityDetailCleanup.integration.test.ts 21/21 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts 0/17 Test Files 20 passed | 4 skipped (434) Tests 724 passed | 285 skipped (1275) Start at 11:46:07 Duration 3.90s stderr | tests/mealRepository.test.ts > mealRepository > createMeal > should rollback transaction on error [2026-09-30T11:46:11.784Z] [ERROR] Error creating meal: Error: Database error at Object. (/build/source/SparkyFitnessServer/tests/mealRepository.test.ts:112:17) at Object.Mock [as query] (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/spy.DPLvp2J7.js:320:40) at Object.createMeal (/build/source/SparkyFitnessServer/models/mealRepository.ts:151:37) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealRepository.test.ts:116:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/mealRepository.test.ts > mealRepository > updateMeal > should rollback transaction on error [2026-09-30T11:46:11.795Z] [ERROR] Error updating meal 60f3e750-1627-4933-b3db-a0da774a0c91: Error: Database error during update at Object. (/build/source/SparkyFitnessServer/tests/mealRepository.test.ts:480:17) at Object.Mock [as query] (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/spy.DPLvp2J7.js:320:40) at Object.updateMeal (/build/source/SparkyFitnessServer/models/mealRepository.ts:314:33) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealRepository.test.ts:484:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/mealRepository.test.ts > mealRepository > deleteMeal > should rollback transaction on error [2026-09-30T11:46:11.796Z] [ERROR] Error deleting meal 1af0fa44-2f4a-441a-96a5-602fa51f9e21: Error: Database error during delete at Object. (/build/source/SparkyFitnessServer/tests/mealRepository.test.ts:520:17) at Object.Mock [as query] (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/spy.DPLvp2J7.js:320:40) at Object.deleteMeal (/build/source/SparkyFitnessServer/models/mealRepository.ts:383:33) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealRepository.test.ts:524:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/adaptiveTdeeService.test.ts 0/14 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 0/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 14/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/externalProviderService.test.ts 0/48 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts 1/21 ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts 0/64 ❯ tests/openFoodFactsAuth.test.ts 0/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts 243/243 ❯ tests/stravaActivityDetailCleanup.integration.test.ts 21/21 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts 0/17 Test Files 20 passed | 4 skipped (434) Tests 724 passed | 285 skipped (1275) Start at 11:46:07 Duration 3.90s ↓ tests/stravaActivityDetailCleanup.integration.test.ts (21 tests | 21 skipped) ❯ tests/adaptiveTdeeService.test.ts 0/14 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 0/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 14/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts [queued] ❯ tests/externalProviderService.test.ts 0/48 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts 1/21 ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts 0/64 ❯ tests/openFoodFactsAuth.test.ts 0/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/rlsPermissionMatrix.integration.test.ts 243/243 ❯ tests/stravaActivityDetailCleanup.integration.test.ts 21/21 ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts 0/17 Test Files 20 passed | 4 skipped (434) Tests 724 passed | 285 skipped (1275) Start at 11:46:07 Duration 3.90s ✓ tests/mealRepository.test.ts (21 tests) 22ms ✓ tests/workoutPlanTemplateService.test.ts (17 tests) 11ms ✓ tests/externalProviderService.test.ts (48 tests) 26ms ✓ tests/adaptiveTdeeService.test.ts (14 tests) 27ms ✓ tests/exerciseImportDedup.test.ts (8 tests) 9ms ✓ tests/medicationRoutes.test.ts (64 tests) 141ms ❯ tests/adaptiveTdeeService.test.ts 14/14 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts [queued] ❯ tests/chatbotToolsExercise.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 14/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts 8/8 ❯ tests/externalProviderService.test.ts 48/48 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRepository.test.ts 21/21 ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts 64/64 ❯ tests/openFoodFactsAuth.test.ts 12/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/stravaActivityDetailCleanup.integration.test.ts 21/21 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] ❯ tests/workoutPlanTemplateService.test.ts 17/17 Test Files 26 passed | 4 skipped (434) Tests 914 passed | 285 skipped (1283) Start at 11:46:07 Duration 4.01s ✓ tests/openFoodFactsAuth.test.ts (27 tests) 179ms ✓ tests/genericHealthRepository.test.ts (12 tests) 18ms ✓ tests/foodEntryMealService.test.ts (9 tests) 8ms ❯ tests/adaptiveTdeeService.test.ts 14/14 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts 0/38 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts 0/18 ❯ tests/chatbotToolsExercise.test.ts 0/107 ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts 0/26 ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 15/45 ❯ tests/exerciseEntryStats.integration.test.ts [queued] ❯ tests/exerciseImportDedup.test.ts 8/8 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts 9/9 ❯ tests/foodEntrySnapshot.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts 12/12 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/medicationRoutes.test.ts 64/64 ❯ tests/openFoodFactsAuth.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] Test Files 29 passed | 4 skipped (434) Tests 951 passed | 285 skipped (1493) Start at 11:46:07 Duration 4.13s ✓ tests/chatbotToolsCoach.test.ts (18 tests) 32ms ✓ tests/chatbotToolsWorkoutPlans.test.ts (26 tests) 35ms ✓ tests/chatbotToolsCheckin.test.ts (38 tests) 36ms ✓ tests/chatbotToolsExercise.test.ts (107 tests) 61ms ↓ tests/exerciseEntryStats.integration.test.ts (20 tests | 20 skipped) ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolsCheckin.test.ts 38/38 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsCoach.test.ts 18/18 ❯ tests/chatbotToolsExercise.test.ts 107/107 ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsWorkoutPlans.test.ts 26/26 ❯ tests/chatRepository.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 15/45 ❯ tests/exerciseEntryStats.integration.test.ts 20/20 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntryMealService.test.ts 9/9 ❯ tests/foodEntrySnapshot.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/genericHealthRepository.test.ts 12/12 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/openFoodFactsAuth.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts 1/13 ❯ tests/preferenceRepository.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] Test Files 33 passed | 5 skipped (434) Tests 1141 passed | 305 skipped (1526) Start at 11:46:07 Duration 4.25s ✓ tests/ouraDataProcessor.test.ts (13 tests) 26ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts 0/20 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatRepository.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 16/45 ❯ tests/exerciseService.stats.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodDiaryImport.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntrySnapshot.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts [queued] ❯ tests/labelScanService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/ouraDataProcessor.test.ts 13/13 ❯ tests/preferenceRepository.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] Test Files 34 passed | 5 skipped (434) Tests 1154 passed | 305 skipped (1546) Start at 11:46:07 Duration 4.36s ✓ tests/foodDiaryImport.test.ts (13 tests) 13ms ✓ tests/chatbotToolsGoals.test.ts (20 tests) 33ms ✓ tests/chatRepository.test.ts (11 tests) 9ms ✓ tests/preferenceRepository.test.ts (16 tests) 14ms ✓ tests/chatbotToolRepositories.test.ts (33 tests) 21ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolRepositories.test.ts 33/33 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsGoals.test.ts 20/20 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatRepository.test.ts 11/11 ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 17/45 ❯ tests/exerciseService.stats.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts [queued] ❯ tests/foodEntrySnapshot.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts [queued] ❯ tests/labelScanService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/preferenceRepository.test.ts 16/16 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] Test Files 39 passed | 5 skipped (434) Tests 1248 passed | 305 skipped (1619) Start at 11:46:07 Duration 4.46s ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 18/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts 0/17 ❯ tests/foodEntrySnapshot.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts 0/20 ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts [queued] ❯ tests/labelScanService.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts [queued] ❯ tests/openFoodFactsManualContribution.test.ts [queued] ❯ tests/schedules.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts [queued] Test Files 39 passed | 5 skipped (434) Tests 1249 passed | 305 skipped (1656) Start at 11:46:07 Duration 4.56s ✓ tests/foodEntryCopy.test.ts (17 tests) 16ms ✓ tests/googleHealthDataProcessor.test.ts (20 tests) 31ms ↓ tests/normalizeExerciseJsonArrayFields.integration.test.ts (2 tests | 2 skipped) ✓ tests/foodEntrySnapshot.test.ts (20 tests) 14ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 18/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 0/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts [queued] ❯ tests/foodCoreService.updateSnapshot.test.ts [queued] ❯ tests/foodEntryCopy.test.ts 17/17 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 0/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googleHealthDataProcessor.test.ts 20/20 ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 0/17 ❯ tests/labelScanService.test.ts 0/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 0/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 0/22 ❯ tests/schedules.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 0/31 Test Files 42 passed | 6 skipped (434) Tests 1306 passed | 307 skipped (1823) Start at 11:46:07 Duration 4.68s stderr | tests/workoutHandlerTelemetry.test.ts > workoutHandler — failure isolation > still reports success when telemetry persistence fails [2026-09-30T11:46:12.641Z] [ERROR] [processHealthData] Saved workout entry-uuid-1 but failed to persist its telemetry: gps table unavailable ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s ✓ tests/labelScanService.test.ts (21 tests) 31ms ✓ tests/workoutHandlerTelemetry.test.ts (31 tests) 37ms ✓ tests/foodPhotoLogRoute.test.ts (18 tests) 60ms ✓ tests/exerciseService.stats.test.ts (10 tests) 7ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s stderr | tests/mealRoutes.test.ts > Meal Routes > POST /meals > should return 500 if meal creation fails [2026-09-30T11:46:12.686Z] [ERROR] Error creating meal: Error: Failed to create meal at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:52:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 [2026-09-30T11:46:12.690Z] [ERROR] Error caught by centralized handler: Failed to create meal Error: Failed to create meal at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:52:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s ✓ tests/hevyDataProcessor.test.ts (17 tests) 28ms ✓ tests/foodCoreService.updateSnapshot.test.ts (14 tests) 12ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s stderr | tests/mealRoutes.test.ts > Meal Routes > GET /meals/:id > should return 404 if meal not found [2026-09-30T11:46:12.708Z] [ERROR] Error getting meal by ID ea02c638-3042-4622-8064-d7dc89a70fda: Error: Meal not found. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:154:49 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > GET /meals/:id > should return 403 if not authorized to access meal [2026-09-30T11:46:12.710Z] [ERROR] Error getting meal by ID fd4fa605-1f58-4531-9285-32da61e30fc6: Error: Forbidden: You do not have permission to access this meal. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:162:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > PUT /meals/:id > should return 404 if meal not found during update [2026-09-30T11:46:12.715Z] [ERROR] Error updating meal 0853789a-c06f-49b4-8a89-10d6aa1d38c0: Error: Meal not found. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:191:48 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > DELETE /meals/:id > should return 404 if meal not found during delete [2026-09-30T11:46:12.717Z] [ERROR] Error deleting meal 4f19894f-afe0-4144-bae4-1e83ddae1df5: Error: Meal not found. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:213:48 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > PUT /meals/plan/:id > should return 404 if meal plan entry not found during update [2026-09-30T11:46:12.723Z] [ERROR] Error updating meal plan entry 2a7c3686-c3e2-4ab4-8c49-cd9bf3e17712: Error: Meal plan entry not found or not authorized. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:281:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > DELETE /meals/plan/:id > should return 404 if meal plan entry not found during delete [2026-09-30T11:46:12.725Z] [ERROR] Error deleting meal plan entry c070481d-ce0e-44d3-a7cb-8a662bf0471d: Error: Meal plan entry not found or not authorized. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:311:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealRoutes.test.ts > Meal Routes > POST /meals/plan/:id/log-to-diary > should return 404 if meal plan entry not found during logging [2026-09-30T11:46:12.728Z] [ERROR] Error logging meal plan entry 91e49de8-8186-4a9f-85a0-311671cca03a to diary: Error: Meal plan entry not found or not authorized. at /build/source/SparkyFitnessServer/tests/mealRoutes.test.ts:342:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s ✓ tests/barcodeLookup.test.ts (63 tests) 24ms ✓ tests/foodCoreService.test.ts (23 tests) 12ms ✓ tests/mealRoutes.test.ts (26 tests) 72ms ✓ tests/externalFoodSearchService.fatsecret.test.ts (14 tests) 12ms ✓ tests/openFoodFactsManualContribution.test.ts (22 tests) 54ms ✓ tests/genericHealthSchemas.test.ts (7 tests) 27ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/barcodeLookup.test.ts 63/63 ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseService.stats.test.ts 10/10 ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodCoreService.test.ts 23/23 ❯ tests/foodCoreService.updateSnapshot.test.ts 14/14 ❯ tests/foodEntrySnapshot.test.ts 20/20 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoLogRoute.test.ts 18/18 ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts [queued] ❯ tests/hevyDataProcessor.test.ts 17/17 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/labelScanService.test.ts 21/21 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealRoutes.test.ts 26/26 ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts [queued] ❯ tests/measurementService.healthDataUnits.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts [queued] ❯ tests/measurementService.timezone.test.ts [queued] ❯ tests/measurementService.waterIntake.test.ts [queued] ❯ tests/normalizeExerciseJsonArrayFields.integration.test.ts 2/2 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 0/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts [queued] ❯ tests/workoutHandlerTelemetry.test.ts 31/31 Test Files 54 passed | 6 skipped (434) Tests 1573 passed | 307 skipped (1961) Start at 11:46:07 Duration 4.90s stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > applies default unit when payload has no unit (e.g. heart_rate -> bpm) [2026-09-30T11:46:12.836Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: heart_rate=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > uses payload unit when provided [2026-09-30T11:46:12.838Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: heart_rate=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > stores TotalCaloriesBurned in the daily Health Connect summary [2026-09-30T11:46:12.839Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: TotalCaloriesBurned=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > applies default unit for distance when unit missing [2026-09-30T11:46:12.840Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: distance=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > stores Health Connect height in check-in measurements as centimeters [2026-09-30T11:46:12.841Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: height=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > stores HealthKit height in check-in measurements as centimeters [2026-09-30T11:46:12.842Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: height=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > stores HealthKit Height in check-in measurements as centimeters [2026-09-30T11:46:12.843Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Height=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > rejects height with an unsupported unit instead of guessing [2026-09-30T11:46:12.843Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: height=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > stores Health Connect body_fat in check-in measurements as body_fat_percentage [2026-09-30T11:46:12.844Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: body_fat=1 stdout | tests/measurementService.healthDataUnits.test.ts > processHealthData default units (#567) > merges same-day check-in records into one bulk write [2026-09-30T11:46:12.845Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: step=1, weight=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for heart_rate_min to bpm [2026-09-30T11:46:12.846Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: heart_rate_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for heart_rate_max to bpm [2026-09-30T11:46:12.846Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: heart_rate_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for heart_rate_avg to bpm [2026-09-30T11:46:12.846Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: heart_rate_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for blood_glucose_avg to mmol/L [2026-09-30T11:46:12.846Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: blood_glucose_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for blood_oxygen_saturation_min to percent [2026-09-30T11:46:12.847Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: blood_oxygen_saturation_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for respiratory_rate_max to breaths/min [2026-09-30T11:46:12.847Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: respiratory_rate_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV to ms [2026-09-30T11:46:12.847Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_min to ms [2026-09-30T11:46:12.848Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_max to ms [2026-09-30T11:46:12.848Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_avg to ms [2026-09-30T11:46:12.848Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_SDNN to ms [2026-09-30T11:46:12.848Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_SDNN=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_SDNN_min to ms [2026-09-30T11:46:12.849Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_SDNN_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_SDNN_max to ms [2026-09-30T11:46:12.849Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_SDNN_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for HRV_SDNN_avg to ms [2026-09-30T11:46:12.849Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: HRV_SDNN_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for running_speed_avg to m/s [2026-09-30T11:46:12.850Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_speed_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for running_power_avg to W [2026-09-30T11:46:12.850Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_power_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for running_stride_length_min to cm [2026-09-30T11:46:12.851Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_stride_length_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for running_ground_contact_max to ms [2026-09-30T11:46:12.851Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_ground_contact_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for running_vertical_oscillation_avg to cm [2026-09-30T11:46:12.851Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_vertical_oscillation_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for cycling_power_max to W [2026-09-30T11:46:12.851Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: cycling_power_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for cycling_cadence_avg to rpm [2026-09-30T11:46:12.852Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: cycling_cadence_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for cycling_speed_min to m/s [2026-09-30T11:46:12.852Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: cycling_speed_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for walking_speed_min to m/s [2026-09-30T11:46:12.852Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: walking_speed_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for walking_step_length_avg to cm [2026-09-30T11:46:12.852Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: walking_step_length_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for walking_asymmetry_min to percent [2026-09-30T11:46:12.853Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: walking_asymmetry_min=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > creates a provider food + entry when no food matches by external id [2026-09-30T11:46:12.848Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > reuses an existing provider food and refreshes its variant nutrition [2026-09-30T11:46:12.853Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > snapshots consumed nutrients onto the entry so equal-named records do not collapse [2026-09-30T11:46:12.854Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=2 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s stderr | tests/healthDataHandlers.test.ts > waterHandler.handleBatch > errors every entry of a source group when its repository write fails, leaving other groups intact [2026-09-30T11:46:12.845Z] [ERROR] [waterHandler.handleBatch] upsertWaterIntakeSamples failed for source 'healthkit' (2 record(s)): boom Error: boom at Object. (/build/source/SparkyFitnessServer/tests/healthDataHandlers.test.ts:262:49) at Object.Mock [as upsertWaterIntakeSamples] (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/spy.DPLvp2J7.js:320:40) at Object.handleBatch (/build/source/SparkyFitnessServer/services/healthDataHandlers.ts:923:53) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/healthDataHandlers.test.ts:267:22 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for walking_double_support_max to percent [2026-09-30T11:46:12.853Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: walking_double_support_max=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for steps_cadence_min to steps/min [2026-09-30T11:46:12.853Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: steps_cadence_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for apple_move_time to seconds [2026-09-30T11:46:12.854Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: apple_move_time=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for apple_exercise_time to seconds [2026-09-30T11:46:12.854Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: apple_exercise_time=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for apple_stand_time to seconds [2026-09-30T11:46:12.855Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: apple_stand_time=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for dietary_protein to g [2026-09-30T11:46:12.855Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: dietary_protein=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for dietary_sodium to mg [2026-09-30T11:46:12.855Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: dietary_sodium=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for environmental_audio_exposure_avg to dB [2026-09-30T11:46:12.856Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: environmental_audio_exposure_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for headphone_audio_exposure_min to dB [2026-09-30T11:46:12.856Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: headphone_audio_exposure_min=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > resolves default unit for cycling_ftp to W [2026-09-30T11:46:12.857Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: cycling_ftp=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > gives each nameless record its own food keyed by source_id (no collapse) [2026-09-30T11:46:12.857Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=2 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s stderr | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > skips a Nutrition record with no source_id (cannot dedupe → would duplicate) [2026-09-30T11:46:12.858Z] [WARN] [processHealthData] Skipping Nutrition record without source_id (cannot dedupe): 'Protein Strawberry pack' ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > skips a Nutrition record with no source_id (cannot dedupe → would duplicate) [2026-09-30T11:46:12.859Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > does not touch foods when there are no nutrition records [2026-09-30T11:46:12.860Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: weight=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > tags HealthKit entries with healthkit provider and uses Apple Health food as fallback name [2026-09-30T11:46:12.861Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > Health Connect source is unchanged — still tags health_connect for all three uses [2026-09-30T11:46:12.862Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 stdout | tests/measurementService.healthConnectNutrition.test.ts > processHealthData Nutrition ingestion > unknown or missing source falls back to health_connect and Health Connect food [2026-09-30T11:46:12.862Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1 ✓ tests/measurementService.healthConnectNutrition.test.ts (9 tests) 33ms ✓ tests/schedules.test.ts (17 tests) 37ms stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > rejects custom measurement entry with non-numeric value [2026-09-30T11:46:12.875Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_speed_avg=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > passes notes through to the custom measurement write when provided [2026-09-30T11:46:12.876Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: cycling_ftp=1 stdout | tests/measurementService.healthDataUnits.test.ts > Aggregated health metric default units > fetches categories once and writes once for a multi-record batch [2026-09-30T11:46:12.877Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: running_speed_avg=3 stdout | tests/healthDataHandlers.test.ts > bmrHandler.handleBatch > refuses an in-progress day only for sources that accumulate [2026-09-30T11:46:12.878Z] [INFO] healthDataHandlers: ignoring BMR for 2026-09-30 from garmin — that source reports BMR as a daily total and the day is not complete in the user's timezone. ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > getWaterIntakeEntryById > should throw 404 when entry is not found [2026-09-30T11:46:12.879Z] [ERROR] Error fetching water intake entry non-existent-entry by test-user-id: Error: Water intake entry not found. at Object.getWaterIntakeEntryById (/build/source/SparkyFitnessServer/services/measurementService.ts:905:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > updateWaterIntake > should throw 404 when entry is not found [2026-09-30T11:46:12.890Z] [ERROR] Error updating water intake entry non-existent-entry by test-user-id on behalf of test-user-id: Error: Water intake entry not found. at Object.updateWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:937:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > updateWaterIntake > should throw 403 when user does not own the entry [2026-09-30T11:46:12.891Z] [ERROR] Error updating water intake entry entry-123 by test-user-id on behalf of test-user-id: Error: Forbidden: You do not have permission to update this water intake entry. at Object.updateWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:940:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > updateWaterIntake > should throw 404 when repository update returns null [2026-09-30T11:46:12.892Z] [ERROR] Error updating water intake entry entry-123 by test-user-id on behalf of test-user-id: Error: Water intake entry not found or not authorized to update. at Object.updateWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:951:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/measurementService.waterIntake.test.ts:389:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > deleteWaterIntake > should throw 404 when entry is not found [2026-09-30T11:46:12.894Z] [ERROR] Error deleting water intake entry non-existent-entry by test-user-id on behalf of test-user-id: Error: Water intake entry not found. at Object.deleteWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:979:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > deleteWaterIntake > should throw 403 when user does not own the entry [2026-09-30T11:46:12.894Z] [ERROR] Error deleting water intake entry entry-123 by test-user-id on behalf of test-user-id: Error: Forbidden: You do not have permission to delete this water intake entry. at Object.deleteWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:982:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > getWaterIntakeByDateRange > rethrows a repository failure [2026-09-30T11:46:12.896Z] [ERROR] Error fetching water intake range for user target-user-id from 2026-08-01 to 2026-08-30 by test-user-id: Error: Database error at /build/source/SparkyFitnessServer/tests/measurementService.waterIntake.test.ts:515:31 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/measurementService.waterIntake.test.ts > Measurement Service - Water Intake > Integration Tests > should handle permission check before repository call [2026-09-30T11:46:12.897Z] [ERROR] Error updating water intake entry entry-123 by test-user-id on behalf of test-user-id: Error: Forbidden: You do not have permission to update this water intake entry. at Object.updateWaterIntake (/build/source/SparkyFitnessServer/services/measurementService.ts:940:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) stderr | tests/waterIntakeLinkedDecrement.test.ts > Linked Water Container Increment/Decrement (#2115) > updateWaterIntakeLogTime - syncs linked food entry time > rolls back and rejects if updating linked food entry returns null [2026-09-30T11:46:12.881Z] [ERROR] Error updating water intake log time for log-entry-1: Error: Linked food entry food-entry-linked-1 not found or update failed at Object.updateWaterIntakeLogTime (/build/source/SparkyFitnessServer/services/measurementService.ts:2128:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/waterIntakeLinkedDecrement.test.ts:585:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s ✓ tests/measurementService.healthDataUnits.test.ts (48 tests) 47ms ✓ tests/healthDataHandlers.test.ts (52 tests) 48ms ✓ tests/dailySummarySupplements.test.ts (12 tests) 13ms ✓ tests/measurementService.timezone.test.ts (25 tests) 32ms ✓ tests/measurementService.sleepResyncMerge.test.ts (8 tests) 36ms ✓ tests/measurementService.waterIntake.test.ts (27 tests) 32ms ✓ tests/waterIntakeLinkedDecrement.test.ts (13 tests) 39ms ❯ tests/adminExternalProviderRoutes.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dailySummarySupplements.test.ts 12/12 ❯ tests/exerciseEntriesApiSchemas.test.ts 19/45 ❯ tests/exerciseEntry.vanishedParent.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/externalFoodSearchService.fatsecret.test.ts 14/14 ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 0/24 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/genericHealthSchemas.test.ts 7/7 ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/healthDataHandlers.test.ts 52/52 ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectNutrition.test.ts 9/9 ❯ tests/measurementService.healthDataUnits.test.ts 48/48 ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsManualContribution.test.ts 22/22 ❯ tests/schedules.test.ts 17/17 ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 63 passed | 6 skipped (434) Tests 1784 passed | 307 skipped (2179) Start at 11:46:07 Duration 5.00s ✓ tests/foodPhotoContracts.test.ts (24 tests) 21ms ✓ tests/foodPhotoMatchService.test.ts (31 tests) 33ms ✓ tests/exerciseEntry.vanishedParent.test.ts (7 tests) 14ms ❯ tests/adminExternalProviderRoutes.test.ts 0/13 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts 0/27 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 20/45 ❯ tests/exerciseEntry.vanishedParent.test.ts 7/7 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoContracts.test.ts 24/24 ❯ tests/foodPhotoEstimateMath.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodPhotoMatchService.test.ts 31/31 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/globalSettingsRepository.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/injectionRepository.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.sleepResyncMerge.test.ts 8/8 ❯ tests/measurementService.timezone.test.ts 25/25 ❯ tests/measurementService.waterIntake.test.ts 27/27 ❯ tests/openFoodFactsSyncQueueRepository.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/waterIntakeLinkedDecrement.test.ts 13/13 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 66 passed | 6 skipped (434) Tests 1847 passed | 307 skipped (2257) Start at 11:46:07 Duration 5.11s ✓ tests/aiUnitConversionService.test.ts (27 tests) 31ms ✓ tests/adminExternalProviderRoutes.test.ts (13 tests) 52ms ✓ tests/injectionRepository.test.ts (13 tests) 10ms ✓ tests/chatbotToolsReport.test.ts (11 tests) 25ms ❯ tests/adminExternalProviderRoutes.test.ts 13/13 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/aiUnitConversionService.test.ts 27/27 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts 0/57 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsReport.test.ts 11/11 ❯ tests/chatbotToolsVision.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 21/45 ❯ tests/exerciseEntry.vanishedParent.test.ts 7/7 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/fatsecretService.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/globalSettingsRepository.test.ts 0/24 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/injectionRepository.test.ts 13/13 ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncQueueRepository.test.ts [queued] ❯ tests/symptoms.test.ts [queued] ❯ tests/tandoorService.test.ts [queued] ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts [queued] Test Files 70 passed | 6 skipped (434) Tests 1912 passed | 307 skipped (2362) Start at 11:46:07 Duration 5.21s ✓ tests/chatbotToolSchemas.test.ts (57 tests) 44ms ✓ tests/globalSettingsRepository.test.ts (24 tests) 13ms stdout | tests/fatsecretService.test.ts > getFatSecretAccessToken caching > does not share a cached token between different client ids [2026-09-30T11:46:13.263Z] [INFO] Attempting to get FatSecret Access Token for scope "basic" from: https://oauth.fatsecret.com/connect/token stdout | tests/fatsecretService.test.ts > getFatSecretAccessToken caching > does not share a cached token between different client ids [2026-09-30T11:46:13.264Z] [INFO] Attempting to get FatSecret Access Token for scope "basic" from: https://oauth.fatsecret.com/connect/token stdout | tests/fatsecretService.test.ts > getFatSecretAccessToken caching > reuses the cached token for the same client id and scope [2026-09-30T11:46:13.266Z] [INFO] Attempting to get FatSecret Access Token for scope "basic" from: https://oauth.fatsecret.com/connect/token stdout | tests/fatsecretService.test.ts > getFatSecretAccessToken caching > does not serve a basic-scope token for a premier request [2026-09-30T11:46:13.266Z] [INFO] Attempting to get FatSecret Access Token for scope "basic" from: https://oauth.fatsecret.com/connect/token stdout | tests/fatsecretService.test.ts > getFatSecretAccessToken caching > does not serve a basic-scope token for a premier request [2026-09-30T11:46:13.267Z] [INFO] Attempting to get FatSecret Access Token for scope "premier" from: https://oauth.fatsecret.com/connect/token stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretSearchItem > should map metric description correctly [2026-09-30T11:46:13.269Z] [INFO] FATSECRET_DEBUG: Search item final mapping: size=100, unit=g, desc="Per 100g - Calories: 165kcal | Fat: 3.57g | Carbs: 0.00g | Protein: 31.02g" stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretSearchItem > should map metric in parentheses correctly [2026-09-30T11:46:13.269Z] [INFO] FATSECRET_DEBUG: Search item final mapping: size=28, unit=g, desc="Per 1 serving (28g) - Calories: 110kcal | Fat: 2.00g | Carbs: 15.00g | Protein: 7.00g" stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretSearchItem > should map fractional household units [2026-09-30T11:46:13.270Z] [INFO] FATSECRET_DEBUG: Search item final mapping: size=0.25, unit=cup, desc="Per 1/4 cup - Calories: 110kcal | Fat: 2g | Carbs: 15g | Protein: 7g" stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretSearchItem > should map whole household units correctly [2026-09-30T11:46:13.270Z] [INFO] FATSECRET_DEBUG: Search item final mapping: size=1, unit=slice, desc="Per 1 slice - Calories: 70kcal | Fat: 1g | Carbs: 12g | Protein: 2g" stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretSearchItem > should map mixed fractions like 1 1/2 cups [2026-09-30T11:46:13.270Z] [INFO] FATSECRET_DEBUG: Search item final mapping: size=1.5, unit=cup, desc="Per 1 1/2 cups - Calories: 150kcal | Fat: 2g | Carbs: 25g | Protein: 5g" stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretFood > should map detailed food with multiple variants [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=1, unit=tablespoon, normalizedUnit=tbsp, key=1_tbsp, isDefault=true [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=15, unit=g, normalizedUnit=g, key=15_g, isDefault=true [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=6.667, unit=tablespoon, normalizedUnit=tbsp, key=6.667_tbsp, isDefault=false [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=100, unit=g, normalizedUnit=g, key=100_g, isDefault=false stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretFood > should parse Brand food serving_description for fractions [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=0.25, unit=cup, normalizedUnit=cup, key=0.25_cup, isDefault=false [2026-09-30T11:46:13.271Z] [INFO] FATSECRET_DEBUG: Adding variant: size=28, unit=g, normalizedUnit=g, key=28_g, isDefault=false stdout | tests/fatsecretService.test.ts > FatSecret Service Mapping > mapFatSecretFood > should split a single serving into household and metric variants [2026-09-30T11:46:13.272Z] [INFO] FATSECRET_DEBUG: Adding variant: size=1, unit=cup, normalizedUnit=cup, key=1_cup, isDefault=true [2026-09-30T11:46:13.272Z] [INFO] FATSECRET_DEBUG: Adding variant: size=237, unit=g, normalizedUnit=g, key=237_g, isDefault=true ✓ tests/fatsecretService.test.ts (14 tests) 31ms ❯ tests/activitySport.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolSchemas.test.ts 57/57 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts 1/15 ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 21/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/fatsecretService.test.ts 14/14 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/globalSettingsRepository.test.ts 24/24 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/oidcProviderRepository.test.ts [queued] ❯ tests/openFoodFactsSyncQueueRepository.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/symptoms.test.ts 0/24 ❯ tests/tandoorService.test.ts 0/18 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts 0/23 Test Files 73 passed | 6 skipped (434) Tests 2008 passed | 307 skipped (2456) Start at 11:46:07 Duration 5.43s ✓ tests/chatbotToolsVision.test.ts (15 tests) 12ms ✓ tests/workoutTelemetryDerivation.test.ts (23 tests) 12ms ✓ tests/tandoorService.test.ts (18 tests) 64ms ✓ tests/symptoms.test.ts (24 tests) 52ms ✓ tests/openFoodFactsSyncQueueRepository.test.ts (14 tests) 13ms ❯ tests/activitySport.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts 0/21 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts 0/156 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsVision.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 21/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/oidcProviderRepository.test.ts [queued] ❯ tests/openFoodFactsSyncQueueRepository.test.ts 14/14 ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/symptoms.test.ts 24/24 ❯ tests/tandoorService.test.ts 18/18 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] ❯ tests/workoutTelemetryDerivation.test.ts 23/23 Test Files 78 passed | 6 skipped (434) Tests 2101 passed | 307 skipped (2647) Start at 11:46:07 Duration 5.54s ✓ tests/caffeineKinetics.test.ts (21 tests) 31ms ✓ tests/oidcProviderRepository.test.ts (13 tests) 11ms ❯ tests/activitySport.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/caffeineKinetics.test.ts 21/21 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts 137/156 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 22/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/oidcProviderRepository.test.ts 13/13 ❯ tests/openFoodFactsSyncQueueRepository.test.ts 14/14 ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts [queued] ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 80 passed | 6 skipped (434) Tests 2273 passed | 307 skipped (2660) Start at 11:46:07 Duration 5.65s ✓ tests/chatbotToolsFood.test.ts (156 tests) 114ms ✓ tests/foodPhotoEstimateMath.test.ts (32 tests) 11ms ✓ tests/libraryDeletePreservesDiary.test.ts (11 tests) 13ms ❯ tests/activitySport.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsFood.test.ts 156/156 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 22/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts [queued] ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 83 passed | 6 skipped (434) Tests 2335 passed | 307 skipped (2703) Start at 11:46:07 Duration 5.75s stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > deletes without touching referencing tables [2026-09-30T11:46:13.761Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: strict stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > reports a blocked delete as in-use for RESTRICT violations (23001) [2026-09-30T11:46:13.766Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: strict stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > reports a blocked delete as in-use for FK violations (23503) [2026-09-30T11:46:13.770Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: strict stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > returns not-deleted when the type belongs to another user [2026-09-30T11:46:13.771Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: strict stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > refuses to delete system default meal types [2026-09-30T11:46:13.772Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: strict ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stderr | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > strict mode (default) > refuses to delete system default meal types [2026-09-30T11:46:13.772Z] [ERROR] Error deleting meal type: Error: Cannot delete system default meal types. at Object.deleteMealType (/build/source/SparkyFitnessServer/models/mealType.ts:299:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealTypeDelete.test.ts:143:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > moves every referencing table to the target, then deletes, in one transaction [2026-09-30T11:46:13.778Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: reassign stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > scopes template assignments through the parent template [2026-09-30T11:46:13.780Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: reassign ✓ tests/activitySport.test.ts (23 tests) 19ms stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > rejects a target that is not visible to the user, without mutating [2026-09-30T11:46:13.780Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: reassign ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stderr | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > rejects a target that is not visible to the user, without mutating [2026-09-30T11:46:13.781Z] [ERROR] Error deleting meal type: Error: Invalid reassignment target meal type. at Object.deleteMealType (/build/source/SparkyFitnessServer/models/mealType.ts:316:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealTypeDelete.test.ts:208:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > rejects reassigning a meal type onto itself [2026-09-30T11:46:13.782Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: reassign ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stderr | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > reassign mode > rejects reassigning a meal type onto itself [2026-09-30T11:46:13.782Z] [ERROR] Error deleting meal type: Error: Invalid reassignment target meal type. at Object.deleteMealType (/build/source/SparkyFitnessServer/models/mealType.ts:308:15) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/mealTypeDelete.test.ts:223:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > force mode > detaches stray container children before deleting the containers [2026-09-30T11:46:13.783Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: force stdout | tests/mealTypeDelete.test.ts > mealTypeRepository.deleteMealType > force mode > deletes every referencing table then the meal type, in one transaction [2026-09-30T11:46:13.784Z] [INFO] deleteMealType in mealType.ts: id: 1fd36e4f-138f-4d12-aa3d-afdf7f412685, mode: force ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts [queued] ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts [queued] ❯ tests/dashboardService.test.ts 0/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimateMath.test.ts 32/32 ❯ tests/foodPhotoEstimationRoute.test.ts 0/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/libraryDeletePreservesDiary.test.ts 11/11 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 1/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 0/14 ❯ tests/withingsTokenResponse.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 84 passed | 6 skipped (434) Tests 2360 passed | 307 skipped (2790) Start at 11:46:07 Duration 5.85s ✓ tests/mealTypeDelete.test.ts (11 tests) 31ms ✓ tests/waterContainerRepository.test.ts (14 tests) 23ms ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 0/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 11/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 1/2 ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 14/14 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 89 passed | 6 skipped (434) Tests 2435 passed | 307 skipped (2825) Start at 11:46:07 Duration 5.97s stderr | tests/dashboardService.test.ts > getDashboardStats calorie arithmetic > falls back when the Health Connect total query fails [2026-09-30T11:46:13.823Z] [WARN] Health Connect total-calorie dashboard fetch failed for user user1 on 2026-06-13: Error: temporary query failure at /build/source/SparkyFitnessServer/tests/dashboardService.test.ts:202:25 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 0/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 11/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 1/2 ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 14/14 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 89 passed | 6 skipped (434) Tests 2435 passed | 307 skipped (2825) Start at 11:46:07 Duration 5.97s ✓ tests/dashboardService.test.ts (10 tests) 32ms ✓ tests/withingsTokenResponse.test.ts (11 tests) 19ms ✓ tests/foodPhotoEstimationRoute.test.ts (29 tests) 90ms ❯ tests/activitySport.test.ts 23/23 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 0/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts [queued] ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 23/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts [queued] ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDelete.test.ts 11/11 ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 1/2 ❯ tests/measurementService.healthDataContract.test.ts [queued] ❯ tests/nutrientGoalPreferenceService.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts [queued] ❯ tests/waterContainerRepository.test.ts 14/14 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 89 passed | 6 skipped (434) Tests 2435 passed | 307 skipped (2825) Start at 11:46:07 Duration 5.97s ✓ tests/measurementService.healthConnectSleepStages.test.ts (2 tests) 36ms ✓ tests/customNutrientCatalog.test.ts (15 tests) 15ms ✓ tests/nutrientGoalPreferenceService.test.ts (16 tests) 10ms stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > resolves with per-record outcomes when a poison record is in the batch [2026-09-30T11:46:13.989Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: step=2, weight=1 stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > routes neck/waist/hips body measurements to their check_in_measurements columns [2026-09-30T11:46:13.993Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: waist=1, neck=1, hips=1 stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > always includes errors and skipped arrays, even on full success [2026-09-30T11:46:13.994Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: step=1 stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > converts legacy minute-based workout set durations to seconds (issue #1903) [2026-09-30T11:46:14.008Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2025-02-01 to 2025-02-01. stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > converts legacy minute-based workout set durations to seconds (issue #1903) [2026-09-30T11:46:14.009Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Workout=1 stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > prefers duration_seconds over the legacy duration interpretation [2026-09-30T11:46:14.011Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2025-02-01 to 2025-02-01. stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > prefers duration_seconds over the legacy duration interpretation [2026-09-30T11:46:14.012Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Workout=1 stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > passes seconds-based workout set durations through unchanged [2026-09-30T11:46:14.012Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2025-02-01 to 2025-02-01. stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > passes seconds-based workout set durations through unchanged [2026-09-30T11:46:14.013Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Workout=1 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 15/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 0/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 0/7 ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 1/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts 0/12 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 2/2 ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/nutrientGoalPreferenceService.test.ts 16/16 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 95 passed | 6 skipped (434) Tests 2507 passed | 307 skipped (2920) Start at 11:46:07 Duration 6.07s stderr | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > reports Nutrition records without source_id in skipped, not errors [2026-09-30T11:46:14.014Z] [WARN] [processHealthData] Skipping Nutrition record without source_id (cannot dedupe): 'Banana' ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 15/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 0/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 0/7 ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 1/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts 0/12 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 2/2 ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/nutrientGoalPreferenceService.test.ts 16/16 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 95 passed | 6 skipped (434) Tests 2507 passed | 307 skipped (2920) Start at 11:46:07 Duration 6.07s stdout | tests/measurementService.healthDataContract.test.ts > processHealthData per-record error contract > reports Nutrition records without source_id in skipped, not errors [2026-09-30T11:46:14.014Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: Nutrition=1, step=1 ✓ tests/drinkPresetMaterialization.test.ts (8 tests) 11ms ✓ tests/measurementService.healthDataContract.test.ts (7 tests) 30ms ✓ tests/telemetryExtractors.laps.test.ts (23 tests) 13ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 15/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 0/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 0/7 ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 1/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts 0/12 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 2/2 ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/nutrientGoalPreferenceService.test.ts 16/16 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 95 passed | 6 skipped (434) Tests 2507 passed | 307 skipped (2920) Start at 11:46:07 Duration 6.07s stderr | tests/fitImportService.test.ts > importFitFiles > rolls back the transaction when the detail write fails [2026-09-30T11:46:14.050Z] [ERROR] [fitImportService] Failed to import FIT buffer "first.fit" for user user-1: Error: detail insert failed at /build/source/SparkyFitnessServer/tests/fitImportService.test.ts:195:30 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/customNutrientCatalog.test.ts 15/15 ❯ tests/dashboardService.test.ts 10/10 ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 0/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 0/7 ❯ tests/foodNotes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodPhotoEstimationRoute.test.ts 29/29 ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 1/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts [queued] ❯ tests/imageDownloader.test.ts 0/12 ❯ tests/liftosaurDataProcessor.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthConnectSleepStages.test.ts 2/2 ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/nutrientGoalPreferenceService.test.ts 16/16 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/withingsTokenResponse.test.ts 11/11 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 95 passed | 6 skipped (434) Tests 2507 passed | 307 skipped (2920) Start at 11:46:07 Duration 6.07s ✓ tests/garminHealthProcessor.wellness.test.ts (9 tests) 33ms ✓ tests/exerciseRoutes.write.test.ts (13 tests) 72ms ✓ tests/imageDownloader.test.ts (12 tests) 62ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts 10/10 ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 13/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 7/7 ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodNotes.test.ts 12/12 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 9/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts 18/18 ❯ tests/imageDownloader.test.ts 12/12 ❯ tests/liftosaurDataProcessor.test.ts 0/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 0/12 ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 102 passed | 6 skipped (434) Tests 2587 passed | 307 skipped (2982) Start at 11:46:07 Duration 6.18s stderr | tests/fitImportService.test.ts > importFitFiles > rolls back the entry when a telemetry write fails [2026-09-30T11:46:14.054Z] [ERROR] [fitImportService] Failed to import FIT buffer "first.fit" for user user-1: Error: telemetry write failed at /build/source/SparkyFitnessServer/tests/fitImportService.test.ts:222:29 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts 10/10 ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 13/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 7/7 ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodNotes.test.ts 12/12 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 9/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts 18/18 ❯ tests/imageDownloader.test.ts 12/12 ❯ tests/liftosaurDataProcessor.test.ts 0/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 0/12 ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 102 passed | 6 skipped (434) Tests 2587 passed | 307 skipped (2982) Start at 11:46:07 Duration 6.18s ✓ tests/exerciseCalorieRangeService.test.ts (10 tests) 9ms stdout | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > food_entry_meals > clears the note when it is explicitly set to null [2026-09-30T11:46:14.069Z] [INFO] updateFoodEntryMeal in foodEntryMealRepository: foodEntryMealId: 00540ac8-5ae0-4914-93de-09d3c15e7d7b, foodEntryMealData: {"notes":null}, updatedByUserId: 496ebe01-bbec-4390-ad9c-9aa6b559a51a stdout | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > food_entry_meals > clears the note when it is explicitly set to null [2026-09-30T11:46:14.069Z] [INFO] [DEBUG] Repo update params: quantity=undefined, unit=undefined stdout | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > machine writers never touch a note > a provider re-sync does not overwrite an existing note [2026-09-30T11:46:14.071Z] [INFO] createFoodEntry in foodEntry.js: entryData: {"user_id":"1dcfefe0-8118-4286-b239-4934616f6371","food_id":"eb5ee3ca-b868-4b4a-9877-f91c00821dc9","variant_id":"e963d409-4357-463c-a000-d81cab647d08","meal_type_id":"24a127d3-190f-4fba-afe5-c62e1b7ec123","entry_date":"2026-08-30","quantity":1,"source":"health_connect","source_id":"abc123","food_name":"Oats"}, createdByUserId: 9734ea0f-f775-4379-a290-ed1e12f3bc66 ✓ tests/fitImportService.test.ts (7 tests) 36ms stdout | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > updateFoodEntryMeal component safety > leaves components alone when the update supplies no foods [2026-09-30T11:46:14.104Z] [INFO] updateFoodEntryMeal in foodEntryService: foodEntryMealId: fem-1, updatedMealData: {"notes":"just the note"}, authenticatedUserId: user-1, actingUserId: user-1 stdout | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > updateFoodEntryMeal component safety > refuses a component-affecting update that omits foods [2026-09-30T11:46:14.106Z] [INFO] updateFoodEntryMeal in foodEntryService: foodEntryMealId: fem-1, updatedMealData: {"entry_date":"2026-02-02"}, authenticatedUserId: user-1, actingUserId: user-1 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts 10/10 ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 13/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 7/7 ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodNotes.test.ts 12/12 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 9/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts 18/18 ❯ tests/imageDownloader.test.ts 12/12 ❯ tests/liftosaurDataProcessor.test.ts 0/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 0/12 ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 102 passed | 6 skipped (434) Tests 2587 passed | 307 skipped (2982) Start at 11:46:07 Duration 6.18s stderr | tests/foodNotes.test.ts > notes on foods, meals, and diary entries > updateFoodEntryMeal component safety > refuses a component-affecting update that omits foods [2026-09-30T11:46:14.106Z] [ERROR] Error updating food entry meal fem-1 for user user-1: Error: Updating entry_date on a logged meal also rebuilds its components, so 'foods' is required. at Object.updateFoodEntryMeal (/build/source/SparkyFitnessServer/services/foodEntryService.ts:2516:56) at /build/source/SparkyFitnessServer/tests/foodNotes.test.ts:252:26 at processTicksAndRejections (node:internal/process/task_queues:104:5) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { statusCode: 400 } ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts 10/10 ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 13/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 7/7 ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodNotes.test.ts 12/12 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 9/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts 18/18 ❯ tests/imageDownloader.test.ts 12/12 ❯ tests/liftosaurDataProcessor.test.ts 0/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 0/12 ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 102 passed | 6 skipped (434) Tests 2587 passed | 307 skipped (2982) Start at 11:46:07 Duration 6.18s ✓ tests/foodNotes.test.ts (12 tests) 59ms ✓ tests/googlehealthRoutes.test.ts (18 tests) 66ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/drinkPresetMaterialization.test.ts 8/8 ❯ tests/exerciseCalorieRangeService.test.ts 10/10 ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exerciseRoutes.write.test.ts 13/13 ❯ tests/exercisesApiSchemas.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/fitImportService.test.ts 7/7 ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodNotes.test.ts 12/12 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminHealthProcessor.wellness.test.ts 9/9 ❯ tests/garminNutritionSync.integration.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/googlehealthRoutes.test.ts 18/18 ❯ tests/imageDownloader.test.ts 12/12 ❯ tests/liftosaurDataProcessor.test.ts 0/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 0/12 ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/measurementService.healthDataContract.test.ts 7/7 ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts [queued] ❯ tests/telemetryExtractors.laps.test.ts 23/23 ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 102 passed | 6 skipped (434) Tests 2587 passed | 307 skipped (2982) Start at 11:46:07 Duration 6.18s ✓ tests/liftosaurDataProcessor.test.ts (10 tests) 33ms ✓ tests/openFoodFactsSyncSettingsService.test.ts (9 tests) 9ms ✓ tests/measurementImportRoutes.test.ts (12 tests) 53ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts 0/9 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 24/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 0/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurDataProcessor.test.ts 10/10 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementImportRoutes.test.ts 12/12 ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts [queued] ❯ tests/oauthState.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsService.test.ts 9/9 ❯ tests/sleepRepository.placeholders.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 105 passed | 6 skipped (434) Tests 2618 passed | 307 skipped (3026) Start at 11:46:07 Duration 6.40s ✓ tests/chatbotToolsCaffeineKinetics.test.ts (9 tests) 33ms stdout | tests/exercisePresetCascade.integration.test.ts > exercise delete preset and future plan cascade integration test > force delete (delete_with_history) removes exercise from presets, workout plans, and all diary entries [2026-09-30T11:46:14.344Z] [INFO] Ending existing owner database connection pool... stdout | tests/exercisePresetCascade.integration.test.ts > exercise delete preset and future plan cascade integration test > force delete (delete_with_history) removes exercise from presets, workout plans, and all diary entries [2026-09-30T11:46:14.345Z] [INFO] Existing owner database connection pool ended. [2026-09-30T11:46:14.345Z] [INFO] Ending existing app database connection pool... stdout | tests/exercisePresetCascade.integration.test.ts > exercise delete preset and future plan cascade integration test > force delete (delete_with_history) removes exercise from presets, workout plans, and all diary entries [2026-09-30T11:46:14.345Z] [INFO] Existing app database connection pool ended. ✓ tests/exercisePresetCascade.integration.test.ts (2 tests | 2 skipped) 6ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsCaffeineKinetics.test.ts 9/9 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 25/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts 2/2 ❯ tests/exercisesApiSchemas.test.ts 1/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts 0/14 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts 0/17 ❯ tests/oauthState.test.ts 0/28 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 0/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts [queued] ❯ tests/sleepRepository.placeholders.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 107 passed | 6 skipped (434) Tests 2629 passed | 309 skipped (3108) Start at 11:46:07 Duration 6.50s ✓ tests/oauthState.test.ts (28 tests) 22ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 25/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts 2/2 ❯ tests/exercisesApiSchemas.test.ts 1/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts 14/14 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts 17/17 ❯ tests/oauthState.test.ts 28/28 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 0/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts [queued] ❯ tests/sleepRepository.placeholders.test.ts 1/5 ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 110 passed | 6 skipped (434) Tests 2689 passed | 309 skipped (3113) Start at 11:46:07 Duration 6.62s stderr | tests/measurementRoutes.test.ts > Measurement Routes - GET /api/measurements/water-intake-range/:startDate/:endDate > passes any other service error to the error handler [2026-09-30T11:46:14.447Z] [ERROR] Error caught by centralized handler: boom Error: boom at /build/source/SparkyFitnessServer/tests/measurementRoutes.test.ts:288:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 25/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts 2/2 ❯ tests/exercisesApiSchemas.test.ts 1/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts 14/14 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts 17/17 ❯ tests/oauthState.test.ts 28/28 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 0/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts [queued] ❯ tests/sleepRepository.placeholders.test.ts 1/5 ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 110 passed | 6 skipped (434) Tests 2689 passed | 309 skipped (3113) Start at 11:46:07 Duration 6.62s ✓ tests/measurementRoutes.test.ts (17 tests) 67ms ✓ tests/foodRoutesV2.test.ts (14 tests) 66ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 25/45 ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisePresetCascade.integration.test.ts 2/2 ❯ tests/exercisesApiSchemas.test.ts 1/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts 14/14 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts [queued] ❯ tests/measurementRoutes.test.ts 17/17 ❯ tests/oauthState.test.ts 28/28 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 0/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts [queued] ❯ tests/sleepRepository.placeholders.test.ts 1/5 ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 110 passed | 6 skipped (434) Tests 2689 passed | 309 skipped (3113) Start at 11:46:07 Duration 6.62s ✓ tests/sleepRepository.placeholders.test.ts (5 tests) 8ms ✓ tests/measurementRepository.test.ts (11 tests) 8ms ✓ tests/workoutPlanProgression.test.ts (8 tests) 9ms ✓ tests/corsHelper.test.ts (19 tests) 10ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts 19/19 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 2/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/foodRoutesV2.test.ts 14/14 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts [queued] ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/measurementRepository.test.ts 11/11 ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 4/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts [queued] ❯ tests/sleepRepository.placeholders.test.ts 5/5 ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts 8/8 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 114 passed | 6 skipped (434) Tests 2737 passed | 309 skipped (3151) Start at 11:46:07 Duration 6.72s ✓ tests/permissionUtils.test.ts (17 tests) 21ms ✓ tests/openFoodFactsAutoSyncScheduler.test.ts (8 tests) 371ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts 1/12 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts [queued] ❯ tests/corsHelper.test.ts 19/19 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 2/19 ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 0/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 8/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/permissionUtils.test.ts 17/17 ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPlanProgression.test.ts 8/8 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 116 passed | 6 skipped (434) Tests 2759 passed | 309 skipped (3202) Start at 11:46:07 Duration 6.84s ✓ tests/chatbotToolsProfile.test.ts (12 tests) 17ms ✓ tests/guidedWorkoutCues.test.ts (22 tests) 14ms ✓ tests/foodEntrySelectedCopy.test.ts (8 tests) 13ms ✓ tests/contracts/nutrientColumnCoverage.test.ts (3 tests) 38ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProfile.test.ts 12/12 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 1/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 0/6 ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncScheduler.test.ts 8/8 ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 0/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 120 passed | 6 skipped (434) Tests 2805 passed | 309 skipped (3248) Start at 11:46:07 Duration 6.95s ✓ tests/exerciseEntryService.watchTelemetry.test.ts (14 tests) 16ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 14/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 0/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 124 passed | 6 skipped (434) Tests 2852 passed | 309 skipped (3257) Start at 11:46:07 Duration 7.06s stderr | tests/measurementRepository.bulkCheckInMeasurements.test.ts > measurementRepository.bulkUpsertCheckInMeasurements > filters unauthorized measurement keys and skips entries left empty Attempted to upsert unauthorized measurement key: malicious_column ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 14/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 0/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 124 passed | 6 skipped (434) Tests 2852 passed | 309 skipped (3257) Start at 11:46:07 Duration 7.06s ✓ tests/measurementRepository.bulkCheckInMeasurements.test.ts (6 tests) 11ms ✓ tests/chatbotToolsWaterContainers.test.ts (15 tests) 14ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 14/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 0/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 124 passed | 6 skipped (434) Tests 2852 passed | 309 skipped (3257) Start at 11:46:07 Duration 7.06s stderr | tests/webLoginRoutes.test.ts > GET /web-login/callback > returns 400 when there is no active session [2026-09-30T11:46:14.960Z] [ERROR] [WEB LOGIN] Callback: No active session found. stderr | tests/webLoginRoutes.test.ts > GET /web-login/callback > returns 500 when session lookup throws [2026-09-30T11:46:14.963Z] [ERROR] [WEB LOGIN] Callback error: Error: boom ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 14/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 0/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 124 passed | 6 skipped (434) Tests 2852 passed | 309 skipped (3257) Start at 11:46:07 Duration 7.06s ✓ tests/webLoginRoutes.test.ts (13 tests) 634ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/contracts/nutrientColumnCoverage.test.ts 3/3 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exerciseEntryService.watchTelemetry.test.ts 14/14 ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts [queued] ❯ tests/foodEntrySelectedCopy.test.ts 8/8 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/guidedWorkoutCues.test.ts 22/22 ❯ tests/healthDataRoutes.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 0/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 124 passed | 6 skipped (434) Tests 2852 passed | 309 skipped (3257) Start at 11:46:07 Duration 7.06s ✓ tests/visionToolsLogPhoto.test.ts (9 tests) 22ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/foodEntryLinkedWaterPropagation.test.ts > Food Entry Linked Water Propagation (#2115) > deleteFoodEntry - linked water row cleanup > leaves the linked water row alone when the food entry delete fails [2026-09-30T11:46:15.082Z] [ERROR] Error deleting food entry food-entry-uuid-1 by user user-uuid-1 in foodService: Error: Food entry not found or not authorized to delete. at Object.deleteFoodEntry (/build/source/SparkyFitnessServer/services/foodEntryService.ts:1119:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/foodEntryLinkedWaterPropagation.test.ts:228:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s ✓ tests/foodEntryLinkedWaterPropagation.test.ts (3 tests) 18ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > getEmailTransportConfig > sets secure: false and requireTLS: true when port is 587 and SPARKY_FITNESS_EMAIL_SECURE is true to prevent SSL handshake error [2026-09-30T11:46:15.094Z] [WARN] SPARKY_FITNESS_EMAIL_SECURE is set to true on port 587. Port 587 uses STARTTLS rather than implicit SSL/TLS; using secure=false and requireTLS=true. stderr | tests/emailService.test.ts > emailService > getEmailTransportConfig > sets secure: false and requireTLS: true when port is 25 and SPARKY_FITNESS_EMAIL_SECURE is true [2026-09-30T11:46:15.096Z] [WARN] SPARKY_FITNESS_EMAIL_SECURE is set to true on port 25. Port 25 uses STARTTLS rather than implicit SSL/TLS; using secure=false and requireTLS=true. ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.098Z] [INFO] Attempting to send password reset email to user@example.com with URL: https://example.com/reset ------------------------------------ PASSWORD RESET EMAIL (NOT SENT - EMAIL SERVICE NOT CONFIGURED) To: user@example.com Subject: SparkyFitness Password Reset You have requested a password reset for your SparkyFitness account. Please click on the following link to reset your password: https://example.com/reset This link will expire in 1 hour. If you did not request a password reset, please ignore this email. ------------------------------------ ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.099Z] [WARN] Email transporter is not fully configured (missing SMTP_HOST or SMTP_USER). Logging email content instead of sending. ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.099Z] [INFO] Attempting to send email MFA code to user@example.com ------------------------------------ EMAIL MFA CODE (NOT SENT - EMAIL SERVICE NOT CONFIGURED) To: user@example.com Subject: Your SparkyFitness MFA Code Your Multi-Factor Authentication code is: 123456 This code is valid for 5 minutes. ------------------------------------ ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.099Z] [WARN] Email transporter is not fully configured (missing SMTP_HOST or SMTP_USER). Logging email content instead of sending. ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.099Z] [INFO] Attempting to send magic link email to user@example.com with URL: https://example.com/magic ------------------------------------ MAGIC LINK EMAIL (NOT SENT - EMAIL SERVICE NOT CONFIGURED) To: user@example.com Subject: Your SparkyFitness Login Link You have requested a passwordless login to your SparkyFitness account. Please click on the following link to log in: https://example.com/magic This link will expire in 15 minutes and can only be used once. If you did not request this, please ignore this email. ------------------------------------ ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > returns false and skips sending when transporter is unconfigured [2026-09-30T11:46:15.099Z] [WARN] Email transporter is not fully configured (missing SMTP_HOST or SMTP_USER). Logging email content instead of sending. ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends password reset email when transporter is configured [2026-09-30T11:46:15.101Z] [INFO] Attempting to send password reset email to user@example.com with URL: https://example.com/reset?token=xyz stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends password reset email when transporter is configured [2026-09-30T11:46:15.101Z] [INFO] Password reset email successfully sent to user@example.com. stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends MFA code email when transporter is configured [2026-09-30T11:46:15.102Z] [INFO] Attempting to send email MFA code to user@example.com stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends MFA code email when transporter is configured [2026-09-30T11:46:15.103Z] [INFO] Email MFA code successfully sent to user@example.com. stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends magic link email when transporter is configured [2026-09-30T11:46:15.103Z] [INFO] Attempting to send magic link email to user@example.com with URL: https://example.com/magic?token=abc stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > sends magic link email when transporter is configured [2026-09-30T11:46:15.103Z] [INFO] Magic link email successfully sent to user@example.com. stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.104Z] [INFO] Attempting to send password reset email to user@example.com with URL: https://example.com/reset ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.104Z] [ERROR] Failed to send password reset email to user@example.com. Error details: Error: Connection timeout at /build/source/SparkyFitnessServer/tests/emailService.test.ts:196:28 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.110Z] [INFO] Attempting to send email MFA code to user@example.com ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.110Z] [ERROR] Failed to send email MFA code to user@example.com. Error details: Error: Connection timeout at /build/source/SparkyFitnessServer/tests/emailService.test.ts:196:28 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stdout | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.111Z] [INFO] Attempting to send magic link email to user@example.com with URL: https://example.com/magic ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s stderr | tests/emailService.test.ts > emailService > sending emails with mock transporter > handles and throws errors when transporter sendMail fails [2026-09-30T11:46:15.111Z] [ERROR] Failed to send magic link email to user@example.com. Error details: Error: Connection timeout at /build/source/SparkyFitnessServer/tests/emailService.test.ts:196:28 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s ✓ tests/foodRefreshFromSourceRoute.test.ts (10 tests) 61ms ❯ tests/adaptiveCoaching.test.ts [queued] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatbotToolsWaterContainers.test.ts 15/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailService.test.ts 1/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 3/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodEntryLinkedWaterPropagation.test.ts 3/3 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 0/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCheckInMeasurements.test.ts 6/6 ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/visionToolsLogPhoto.test.ts 9/9 ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/webLoginRoutes.test.ts 13/13 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 127 passed | 6 skipped (434) Tests 2875 passed | 309 skipped (3291) Start at 11:46:07 Duration 7.17s ✓ tests/emailService.test.ts (12 tests) 21ms stdout | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > returns 200 with per-record outcomes when the service reports mixed results [2026-09-30T11:46:15.110Z] [INFO] Incoming health data: 2 record(s), types: step stdout | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > wraps a single JSON object body into an array [2026-09-30T11:46:15.115Z] [INFO] Incoming health data: 1 record(s), types: weight stdout | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > treats X-Workout-Model-Version >= 2 as the seconds-based set model [2026-09-30T11:46:15.117Z] [INFO] Incoming health data: 1 record(s), types: Workout stdout | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > treats an absent X-Workout-Model-Version header as legacy minutes [2026-09-30T11:46:15.119Z] [INFO] Incoming health data: 1 record(s), types: Workout ❯ tests/adaptiveCoaching.test.ts 18/18 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailService.test.ts 12/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 4/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 9/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 131 passed | 6 skipped (434) Tests 2925 passed | 309 skipped (3320) Start at 11:46:07 Duration 7.39s stderr | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > returns 400 for a non-object body [2026-09-30T11:46:15.121Z] [ERROR] Received unexpected body format: undefined ❯ tests/adaptiveCoaching.test.ts 18/18 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailService.test.ts 12/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 4/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 9/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 131 passed | 6 skipped (434) Tests 2925 passed | 309 skipped (3320) Start at 11:46:07 Duration 7.39s stdout | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > returns 500 via the error handler when the service throws unexpectedly [2026-09-30T11:46:15.127Z] [INFO] Incoming health data: 1 record(s), types: step ❯ tests/adaptiveCoaching.test.ts 18/18 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailService.test.ts 12/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 4/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 9/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 131 passed | 6 skipped (434) Tests 2925 passed | 309 skipped (3320) Start at 11:46:07 Duration 7.39s stderr | tests/healthDataRoutes.test.ts > Health Data Routes - POST /api/health-data > returns 500 via the error handler when the service throws unexpectedly [2026-09-30T11:46:15.130Z] [ERROR] Error caught by centralized handler: database unavailable Error: database unavailable at /build/source/SparkyFitnessServer/tests/healthDataRoutes.test.ts:243:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/adaptiveCoaching.test.ts 18/18 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailService.test.ts 12/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 4/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 9/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 131 passed | 6 skipped (434) Tests 2925 passed | 309 skipped (3320) Start at 11:46:07 Duration 7.39s ✓ tests/healthDataRoutes.test.ts (9 tests) 51ms ✓ tests/adaptiveCoaching.test.ts (18 tests) 10ms ✓ tests/liftosaurParser.test.ts (11 tests) 12ms ❯ tests/adaptiveCoaching.test.ts 18/18 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailService.test.ts 12/12 ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 26/45 ❯ tests/exerciseEntry.activityDetail.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 4/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodRefreshFromSourceRoute.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/healthDataRoutes.test.ts 9/9 ❯ tests/intervalEngine.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 131 passed | 6 skipped (434) Tests 2925 passed | 309 skipped (3320) Start at 11:46:07 Duration 7.39s ✓ tests/openFoodFactsAutoSyncService.test.ts (8 tests) 12ms ✓ tests/exerciseEntry.activityDetail.test.ts (5 tests) 11ms ✓ tests/garminChunkingAndStrengthFallback.test.ts (6 tests) 16ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 27/45 ❯ tests/exerciseEntry.activityDetail.test.ts 5/5 ❯ tests/exercisesApiSchemas.test.ts 5/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts 6/6 ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/intervalEngine.test.ts [queued] ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurParser.test.ts 11/11 ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts [queued] ❯ tests/oidcGroupSync.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/openFoodFactsAutoSyncService.test.ts 8/8 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts 0/10 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 134 passed | 6 skipped (434) Tests 2946 passed | 309 skipped (3349) Start at 11:46:07 Duration 7.50s ✓ tests/workoutCoachingService.test.ts (10 tests) 15ms stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should promote user to admin if they have the admin group claim [2026-09-30T11:46:15.451Z] [INFO] [AUTH] OIDC Sync: Promoting user user-1 to admin (Group: Admins) stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should revoke admin role if user no longer has the admin group claim [2026-09-30T11:46:15.454Z] [INFO] [AUTH] OIDC Sync: Revoking admin from user user-1 (Not in group: Admins) stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should handle missing groups claim gracefully [2026-09-30T11:46:15.456Z] [INFO] [AUTH] OIDC Sync: Revoking admin from user user-1 (Not in group: Admins) stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should use the first account with an id_token (most recent due to ORDER BY) [2026-09-30T11:46:15.456Z] [INFO] [AUTH] OIDC Sync: Promoting user user-1 to admin (Group: Admins) stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should skip group sync if the token is expired [2026-09-30T11:46:15.457Z] [INFO] [AUTH] OIDC Sync: Token expired for user user-1. Skipping group sync. stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should fetch groups from UserInfo if id_token has no groups [2026-09-30T11:46:15.458Z] [INFO] [AUTH] OIDC Sync: No groups in id_token. Fetching from UserInfo: https://issuer.com/userinfo stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should fetch groups from UserInfo if id_token has no groups [2026-09-30T11:46:15.458Z] [INFO] [AUTH] OIDC Sync: Fetched 1 groups from UserInfo. stdout | tests/oidcGroupSync.test.ts > oidcGroupSync > should fetch groups from UserInfo if id_token has no groups [2026-09-30T11:46:15.458Z] [INFO] [AUTH] OIDC Sync: Promoting user user-1 to admin (Group: Admins) ✓ tests/oidcGroupSync.test.ts (8 tests) 13ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 27/45 ❯ tests/exercisesApiSchemas.test.ts 6/19 ❯ tests/exerciseService.searchExternal.test.ts [queued] ❯ tests/fitActivityTransform.test.ts 0/21 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminChunkingAndStrengthFallback.test.ts 6/6 ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/intervalEngine.test.ts [queued] ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts 1/9 ❯ tests/oidcGroupSync.test.ts 8/8 ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaParity.integration.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutCoachingService.test.ts 10/10 ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 136 passed | 6 skipped (434) Tests 2966 passed | 309 skipped (3387) Start at 11:46:07 Duration 7.60s ✓ tests/oidcEnvConfig.test.ts (9 tests) 16ms ✓ tests/swissFoodService.test.ts (8 tests) 11ms ✓ tests/exerciseService.searchExternal.test.ts (3 tests) 12ms ✓ tests/fitActivityTransform.test.ts (21 tests) 92ms stdout | tests/schemaParity.integration.test.ts > Database Schema ↔ Zod Parity [2026-09-30T11:46:15.636Z] [INFO] Ending existing owner database connection pool... stdout | tests/schemaParity.integration.test.ts > Database Schema ↔ Zod Parity [2026-09-30T11:46:15.638Z] [INFO] Existing owner database connection pool ended. [2026-09-30T11:46:15.638Z] [INFO] Ending existing app database connection pool... stdout | tests/schemaParity.integration.test.ts > Database Schema ↔ Zod Parity [2026-09-30T11:46:15.638Z] [INFO] Existing app database connection pool ended. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 6/19 ❯ tests/exerciseService.searchExternal.test.ts 3/3 ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/fitActivityTransform.test.ts 21/21 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/intervalEngine.test.ts [queued] ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/oidcEnvConfig.test.ts 9/9 ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 0/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaParity.integration.test.ts 0/2 ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/swissFoodService.test.ts 8/8 ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 140 passed | 6 skipped (434) Tests 3007 passed | 309 skipped (3407) Start at 11:46:07 Duration 7.72s stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] ✓ tests/schemaParity.integration.test.ts (2 tests) 12ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [2026-09-30T11:46:15.684Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/exerciseAlternativesService.test.ts (7 tests) 47ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts [queued] ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/fitActivityTransform.test.ts 21/21 ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts [queued] ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 0/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 0/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaParity.integration.test.ts 2/2 ❯ tests/supplementSqlDedup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 142 passed | 6 skipped (434) Tests 3017 passed | 309 skipped (3421) Start at 11:46:07 Duration 7.83s stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [2026-09-30T11:46:15.850Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/intervalEngine.test.ts (7 tests) 11ms stdout | tests/liftosaurRoutes.test.ts > liftosaurRoutes > POST /integrations/liftosaur/sync > returns 200 with valid body parameters [2026-09-30T11:46:15.870Z] [INFO] [liftosaurRoutes] Manual sync triggered for user 11111111-1111-1111-1111-111111111111 from 2024-06-01 to 2024-06-05 ✓ tests/supplementSqlDedup.test.ts (8 tests) 10ms ✓ tests/openFoodFactsAutomaticSyncRelease.test.ts (7 tests) 259ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > starts SSO on another instance after a provider address changes [2026-09-30T11:46:15.908Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38199' ] stdout | tests/liftosaurRoutes.test.ts > liftosaurRoutes > POST /integrations/liftosaur/sync > returns 401 when service throws unauthorized error [2026-09-30T11:46:15.892Z] [INFO] [liftosaurRoutes] Manual sync triggered for user 11111111-1111-1111-1111-111111111111 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 0/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts 16/16 ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 1/18 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts 8/8 ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 147 passed | 6 skipped (434) Tests 3068 passed | 309 skipped (3486) Start at 11:46:07 Duration 8.04s stderr | tests/liftosaurRoutes.test.ts > liftosaurRoutes > POST /integrations/liftosaur/sync > returns 401 when service throws unauthorized error [2026-09-30T11:46:15.893Z] [ERROR] Error initiating manual Liftosaur sync: Invalid API key ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 0/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts 16/16 ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 1/18 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts 8/8 ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 147 passed | 6 skipped (434) Tests 3068 passed | 309 skipped (3486) Start at 11:46:07 Duration 8.04s stdout | tests/liftosaurRoutes.test.ts > liftosaurRoutes > POST /integrations/liftosaur/sync > returns 403 when service throws subscription_required error [2026-09-30T11:46:15.895Z] [INFO] [liftosaurRoutes] Manual sync triggered for user 11111111-1111-1111-1111-111111111111 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 0/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts 16/16 ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 1/18 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts 8/8 ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 147 passed | 6 skipped (434) Tests 3068 passed | 309 skipped (3486) Start at 11:46:07 Duration 8.04s stderr | tests/liftosaurRoutes.test.ts > liftosaurRoutes > POST /integrations/liftosaur/sync > returns 403 when service throws subscription_required error [2026-09-30T11:46:15.895Z] [ERROR] Error initiating manual Liftosaur sync: Subscription required ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 0/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts 16/16 ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 1/18 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts 8/8 ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 147 passed | 6 skipped (434) Tests 3068 passed | 309 skipped (3486) Start at 11:46:07 Duration 8.04s ✓ tests/dateShifting.test.ts (16 tests) 7ms ✓ tests/liftosaurRoutes.test.ts (12 tests) 58ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 0/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/cyclePredictions.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dateShifting.test.ts 16/16 ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts [queued] ❯ tests/exerciseAlternativesService.test.ts 7/7 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exercisesApiSchemas.test.ts 7/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 1/18 ❯ tests/goalPresetRoutes.test.ts [queued] ❯ tests/goalPresetService.test.ts [queued] ❯ tests/intervalEngine.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncRelease.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/supplementSqlDedup.test.ts 8/8 ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 147 passed | 6 skipped (434) Tests 3068 passed | 309 skipped (3486) Start at 11:46:07 Duration 8.04s ✓ tests/glp1Logic.test.ts (18 tests) 56ms ✓ tests/allergenPreferenceRoutes.test.ts (11 tests) 54ms ✓ tests/chatbotToolsExerciseStats.test.ts (7 tests) 13ms ✓ tests/goalPresetRoutes.test.ts (15 tests) 71ms ✓ tests/cyclePredictions.test.ts (14 tests) 8ms ✓ tests/exerciseAlternativesRanking.test.ts (14 tests) 15ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/allergenPreferenceRoutes.test.ts 11/11 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 0/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts 7/7 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkPermissionMiddleware.test.ts [queued] ❯ tests/cyclePredictions.test.ts 14/14 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailLogin.test.ts [queued] ❯ tests/exerciseAlternativesRanking.test.ts 14/14 ❯ tests/exerciseEntriesApiSchemas.test.ts 28/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 8/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/glp1Logic.test.ts 18/18 ❯ tests/goalPresetRoutes.test.ts 15/15 ❯ tests/goalPresetService.test.ts [queued] ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/liftosaurRoutes.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepRepository.remainderKey.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts [queued] ❯ tests/waterEstimatedGoalAdjustment.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 153 passed | 6 skipped (434) Tests 3147 passed | 309 skipped (3536) Start at 11:46:07 Duration 8.14s stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > shares one snapshot within a request and refreshes it for the next request [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > shares one snapshot within a request and refreshes it for the next request [2026-09-30T11:46:16.123Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/waterEstimatedGoalAdjustment.test.ts (13 tests) 10ms ✓ tests/goalPresetService.test.ts (7 tests) 10ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 1/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsExerciseStats.test.ts 7/7 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkPermissionMiddleware.test.ts [queued] ❯ tests/cyclePredictions.test.ts 14/14 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts [queued] ❯ tests/emailLogin.test.ts 0/29 ❯ tests/exerciseAlternativesRanking.test.ts 14/14 ❯ tests/exerciseEntriesApiSchemas.test.ts 29/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 9/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts [queued] ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts 0/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 0/7 ❯ tests/goalPresetRoutes.test.ts 15/15 ❯ tests/goalPresetService.test.ts 7/7 ❯ tests/labelScanRoute.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepRepository.remainderKey.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts 0/15 ❯ tests/waterEstimatedGoalAdjustment.test.ts 13/13 ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 155 passed | 6 skipped (434) Tests 3170 passed | 309 skipped (3610) Start at 11:46:07 Duration 8.24s ✓ tests/waterContainerRoutes.test.ts (15 tests) 61ms ✓ tests/foodSearch.test.ts (10 tests) 10ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > preserves application and mobile origins while ignoring invalid provider URLs [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] ✓ tests/externalFoodSearchService.openFoodFacts.test.ts (7 tests) 8ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > preserves application and mobile origins while ignoring invalid provider URLs [2026-09-30T11:46:16.246Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/sleepRepository.remainderKey.test.ts (1 test) 9ms ✓ tests/garminNutritionSync.integration.test.ts (7 tests) 1983ms ✓ processGarminNutritionData integration (7) ✓ creates entries with source=garmin and deterministic source_id 1978ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 2/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsAllergens.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkPermissionMiddleware.test.ts [queued] ❯ tests/customNutrientMatching.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts [queued] ❯ tests/emailLogin.test.ts 0/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 29/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts [queued] ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 9/19 ❯ tests/exerciseService.distanceDerivation.test.ts [queued] ❯ tests/externalFoodSearchService.openFoodFacts.test.ts 7/7 ❯ tests/foodEntryMealRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSearch.test.ts 10/10 ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 7/7 ❯ tests/goalPresetService.test.ts 7/7 ❯ tests/labelScanRoute.test.ts 1/15 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts [queued] ❯ tests/measurementService.sleepPrimaryCluster.test.ts [queued] ❯ tests/modelCapabilities.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepRepository.remainderKey.test.ts 1/1 ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/waterContainerRoutes.test.ts 15/15 ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 160 passed | 6 skipped (434) Tests 3212 passed | 309 skipped (3633) Start at 11:46:07 Duration 8.34s ✓ tests/labelScanRoute.test.ts (15 tests) 53ms ✓ tests/measurementRepository.bulkCustomMeasurements.test.ts (5 tests) 10ms ✓ tests/chatbotToolsMealPlans.test.ts (11 tests) 10ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not read provider tables during auth construction [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] ✓ tests/foodEntryMealRepository.test.ts (6 tests) 12ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not read provider tables during auth construction [2026-09-30T11:46:16.373Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 3/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsAllergens.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMealPlans.test.ts 11/11 ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkPermissionMiddleware.test.ts [queued] ❯ tests/customNutrientMatching.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts [queued] ❯ tests/emailLogin.test.ts 0/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts [queued] ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 10/19 ❯ tests/exerciseService.distanceDerivation.test.ts 0/8 ❯ tests/foodEntryMealRepository.test.ts 6/6 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts [queued] ❯ tests/garminNutritionSync.integration.test.ts 7/7 ❯ tests/labelScanRoute.test.ts 15/15 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.bulkCustomMeasurements.test.ts 5/5 ❯ tests/measurementRepository.customMetricTimestamp.test.ts [queued] ❯ tests/measurementService.sleepPrimaryCluster.test.ts [queued] ❯ tests/modelCapabilities.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 164 passed | 6 skipped (434) Tests 3251 passed | 309 skipped (3663) Start at 11:46:07 Duration 8.45s ✓ tests/exerciseService.distanceDerivation.test.ts (8 tests) 5ms ✓ tests/measurementService.sleepPrimaryCluster.test.ts (9 tests) 7ms ✓ tests/freeExerciseDBSearch.test.ts (17 tests) 27ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > includes endpoint hosts that differ from the provider issuer [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] stdout | tests/modelCapabilities.test.ts > supportsTemperature — learned gate > blocks a model after it has rejected temperature once [2026-09-30T11:46:16.474Z] [INFO] [modelCapabilities] 'mystery-1' on 'openai_compatible' rejected 'temperature'; omitting it from future requests. stdout | tests/modelCapabilities.test.ts > supportsTemperature — learned gate > scopes the rejection to that service type and model [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'mystery-1' on 'openai_compatible' rejected 'temperature'; omitting it from future requests. stdout | tests/modelCapabilities.test.ts > supportsTemperature — learned gate > records multiple params for the same model [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'm' on 'custom' rejected 'temperature'; omitting it from future requests. stdout | tests/modelCapabilities.test.ts > supportsTemperature — learned gate > evicts the oldest entry past the cap instead of growing forever [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-0' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-1' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-2' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-3' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-4' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-5' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-6' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-7' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-8' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-9' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.475Z] [INFO] [modelCapabilities] 'model-10' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-11' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-12' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-13' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-14' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-15' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-16' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-17' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-18' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-19' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-20' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-21' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-22' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-23' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-24' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-25' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-26' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-27' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-28' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-29' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-30' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-31' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-32' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-33' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-34' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-35' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-36' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-37' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-38' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-39' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-40' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-41' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-42' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-43' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-44' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-45' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-46' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-47' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-48' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-49' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-50' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-51' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-52' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-53' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-54' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-55' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-56' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-57' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-58' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-59' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-60' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-61' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-62' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-63' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-64' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-65' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-66' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-67' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-68' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-69' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-70' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-71' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-72' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-73' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-74' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-75' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-76' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-77' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-78' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-79' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-80' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-81' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-82' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-83' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-84' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-85' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-86' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-87' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-88' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-89' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-90' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-91' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-92' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-93' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-94' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-95' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-96' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-97' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-98' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-99' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-100' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-101' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-102' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-103' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-104' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-105' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-106' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-107' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-108' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-109' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-110' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-111' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-112' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-113' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-114' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-115' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-116' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-117' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-118' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-119' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-120' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-121' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-122' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-123' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-124' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-125' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-126' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-127' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-128' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-129' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-130' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-131' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-132' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-133' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-134' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-135' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-136' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-137' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-138' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-139' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-140' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-141' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-142' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-143' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-144' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-145' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-146' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-147' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-148' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-149' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-150' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-151' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-152' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-153' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-154' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-155' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-156' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-157' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-158' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-159' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-160' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-161' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-162' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-163' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-164' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-165' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-166' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-167' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-168' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-169' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-170' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-171' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-172' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-173' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-174' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-175' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-176' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-177' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-178' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-179' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-180' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-181' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-182' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-183' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-184' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-185' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-186' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-187' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-188' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-189' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-190' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-191' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-192' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-193' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-194' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-195' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-196' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-197' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.476Z] [INFO] [modelCapabilities] 'model-198' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-199' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-200' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-201' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-202' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-203' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-204' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-205' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-206' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-207' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-208' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-209' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-210' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-211' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-212' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-213' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-214' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-215' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-216' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-217' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-218' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-219' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-220' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-221' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-222' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-223' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-224' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-225' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-226' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-227' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-228' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-229' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-230' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-231' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-232' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-233' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-234' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-235' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-236' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-237' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-238' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-239' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-240' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-241' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-242' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-243' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-244' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-245' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-246' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-247' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-248' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-249' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-250' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-251' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-252' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-253' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-254' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-255' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-256' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-257' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-258' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-259' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-260' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-261' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-262' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-263' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-264' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-265' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-266' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-267' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-268' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-269' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-270' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-271' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-272' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-273' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-274' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-275' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-276' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-277' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-278' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-279' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-280' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-281' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-282' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-283' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-284' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-285' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-286' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-287' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-288' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-289' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-290' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-291' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-292' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-293' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-294' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-295' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-296' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-297' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-298' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-299' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-300' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-301' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-302' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-303' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-304' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-305' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-306' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-307' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-308' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-309' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-310' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-311' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-312' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-313' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-314' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-315' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-316' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-317' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-318' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-319' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-320' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-321' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-322' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-323' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-324' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-325' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-326' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-327' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-328' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-329' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-330' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-331' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-332' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-333' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-334' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-335' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-336' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-337' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-338' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-339' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-340' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-341' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-342' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-343' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-344' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-345' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-346' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-347' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-348' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-349' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-350' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-351' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-352' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-353' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-354' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-355' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-356' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-357' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-358' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-359' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-360' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-361' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-362' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-363' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-364' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-365' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-366' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-367' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-368' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-369' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-370' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-371' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-372' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-373' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-374' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-375' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-376' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-377' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-378' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-379' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-380' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-381' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-382' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-383' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-384' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-385' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-386' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.477Z] [INFO] [modelCapabilities] 'model-387' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-388' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-389' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-390' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-391' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-392' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-393' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-394' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-395' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-396' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-397' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-398' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-399' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-400' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-401' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-402' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-403' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-404' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-405' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-406' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-407' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-408' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-409' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-410' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-411' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-412' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-413' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-414' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-415' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-416' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-417' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-418' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-419' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-420' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-421' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-422' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-423' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-424' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-425' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-426' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-427' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-428' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-429' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-430' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-431' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-432' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-433' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-434' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-435' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-436' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-437' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-438' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-439' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-440' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-441' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-442' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-443' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-444' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-445' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-446' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-447' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-448' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-449' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-450' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-451' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-452' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-453' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-454' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-455' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-456' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-457' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-458' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-459' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-460' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-461' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-462' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-463' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-464' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-465' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-466' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-467' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-468' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-469' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-470' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-471' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-472' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-473' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-474' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-475' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-476' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-477' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-478' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-479' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-480' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-481' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-482' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-483' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-484' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-485' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-486' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-487' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-488' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-489' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-490' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-491' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-492' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-493' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-494' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-495' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-496' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-497' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-498' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-499' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-500' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-501' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-502' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-503' on 'custom' rejected 'temperature'; omitting it from future requests. [2026-09-30T11:46:16.478Z] [INFO] [modelCapabilities] 'model-504' on 'custom' rejected 'temperature'; omitting it from future requests. ✓ tests/checkPermissionMiddleware.test.ts (9 tests) 8ms ✓ tests/modelCapabilities.test.ts (33 tests) 13ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > includes endpoint hosts that differ from the provider issuer [2026-09-30T11:46:16.483Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 4/7 ❯ tests/barcodeLookupRoute.test.ts [queued] ❯ tests/chatbotToolsAllergens.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkPermissionMiddleware.test.ts 9/9 ❯ tests/customNutrientMatching.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts [queued] ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 11/19 ❯ tests/exerciseService.distanceDerivation.test.ts 8/8 ❯ tests/foodEntryMealRepository.test.ts 6/6 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts [queued] ❯ tests/freeExerciseDBSearch.test.ts 17/17 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts [queued] ❯ tests/measurementService.sleepPrimaryCluster.test.ts 9/9 ❯ tests/modelCapabilities.test.ts 33/33 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 0/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 169 passed | 6 skipped (434) Tests 3335 passed | 309 skipped (3756) Start at 11:46:07 Duration 8.56s stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not allow an untrusted origin during or after a failed provider read [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 5/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/barcodeLookupRoute.test.ts 11/11 ❯ tests/chatbotToolsAllergens.test.ts 0/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/customNutrientMatching.test.ts 12/12 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts 7/7 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 1/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts 5/5 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 12/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 174 passed | 6 skipped (434) Tests 3385 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.86s stderr | tests/customNutrientMatching.test.ts > buildAliasIndex > keeps the first nutrient on a duplicate normalized alias [2026-09-30T11:46:16.644Z] [WARN] Custom nutrient alias "mag" (normalized "mag") maps to both "Magnesium" and "Manganese"; keeping "Magnesium". ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 5/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/barcodeLookupRoute.test.ts 11/11 ❯ tests/chatbotToolsAllergens.test.ts 0/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/customNutrientMatching.test.ts 12/12 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts 7/7 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 1/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts 5/5 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 12/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 174 passed | 6 skipped (434) Tests 3385 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.86s stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not allow an untrusted origin during or after a failed provider read [2026-09-30T11:46:16.645Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/customNutrientMatching.test.ts (12 tests) 11ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 5/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/barcodeLookupRoute.test.ts 11/11 ❯ tests/chatbotToolsAllergens.test.ts 0/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/customNutrientMatching.test.ts 12/12 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts 7/7 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 1/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts 5/5 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 12/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 174 passed | 6 skipped (434) Tests 3385 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.86s stderr | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not allow an untrusted origin during or after a failed provider read [2026-09-30T11:46:16.654Z] [WARN] [AUTH] Rejecting Untrusted Origin: https://untrusted.example.test stderr | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > does not allow an untrusted origin during or after a failed provider read [2026-09-30T11:46:16.656Z] [WARN] [AUTH] Rejecting Untrusted Origin: https://untrusted.example.test ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 5/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/barcodeLookupRoute.test.ts 11/11 ❯ tests/chatbotToolsAllergens.test.ts 0/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/customNutrientMatching.test.ts 12/12 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts 7/7 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 1/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts 5/5 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 12/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 174 passed | 6 skipped (434) Tests 3385 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.86s ✓ tests/exerciseEntryHistoryService.supersetGroup.test.ts (7 tests) 18ms ✓ tests/measurementRepository.customMetricTimestamp.test.ts (5 tests) 25ms ✓ tests/barcodeLookupRoute.test.ts (11 tests) 37ms ✓ tests/withingsOauthCallback.test.ts (12 tests) 51ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 5/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/barcodeLookupRoute.test.ts 11/11 ❯ tests/chatbotToolsAllergens.test.ts 0/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/customNutrientMatching.test.ts 12/12 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 0/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryHistoryService.supersetGroup.test.ts 7/7 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 1/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementRepository.customMetricTimestamp.test.ts 5/5 ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/withingsOauthCallback.test.ts 12/12 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 174 passed | 6 skipped (434) Tests 3385 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.86s ✓ tests/foodSchemas.test.ts (11 tests) 12ms stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > refuses a request when the provider read fails and recovers on a later request [AUTH] Synced trusted SSO providers for auto-linking: [ 'internal' ] stdout | tests/authTrustedOrigins.test.ts > OIDC origins across server instances > refuses a request when the provider read fails and recovers on a later request [2026-09-30T11:46:16.751Z] [INFO] [AUTH] Synced trusted SSO provider origins: [ 'http://127.0.0.1:38198' ] ✓ tests/authTrustedOrigins.test.ts (7 tests) 2859ms ✓ OIDC origins across server instances (7) ✓ starts SSO on another instance after a provider address changes 2074ms ✓ tests/chatbotToolsAllergens.test.ts (11 tests) 11ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 0/8 ❯ tests/appRolePasswordSync.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/authTrustedOrigins.test.ts 7/7 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/chatbotToolsAllergens.test.ts 11/11 ❯ tests/chatbotToolsCustomNutrients.test.ts [queued] ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 1/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/foodSchemas.test.ts 11/11 ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/hrZoneCalculator.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/norishService.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 177 passed | 6 skipped (434) Tests 3409 passed | 309 skipped (3821) Start at 11:46:07 Duration 8.96s ✓ tests/dailySummaryRoutes.range.test.ts (13 tests) 338ms ✓ GET /daily-summary/range validation (10) ✓ accepts a well-formed range 307ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 8/8 ❯ tests/appRolePasswordSync.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/bootOrder.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts 12/12 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 13/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/hrZoneCalculator.test.ts 0/18 ❯ tests/initializeDatabase.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/norishService.test.ts 5/5 ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 181 passed | 6 skipped (434) Tests 3446 passed | 309 skipped (3856) Start at 11:46:07 Duration 9.06s stderr | tests/appDbCredentials.test.ts > app database credentials are soft requirements > still refuses to start without a genuinely mandatory variable FATAL: Missing required environment variables! The server cannot start without the following settings: SPARKY_FITNESS_API_ENCRYPTION_KEY: Must be persistent to decrypt database data. Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" Update your .env file and restart the server. stderr | tests/appDbCredentials.test.ts > app database credentials are soft requirements > refuses to start without BETTER_AUTH_SECRET rather than inventing one FATAL: Missing required environment variables! The server cannot start without the following settings: BETTER_AUTH_SECRET: Signs session cookies and encrypts stored 2FA/TOTP secrets, so it must be persistent. A value that changes between restarts logs every user out and permanently locks out anyone with 2FA enabled. Generate with: openssl rand -base64 32 Update your .env file and restart the server. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 8/8 ❯ tests/appRolePasswordSync.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/bootOrder.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts 12/12 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 13/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/hrZoneCalculator.test.ts 0/18 ❯ tests/initializeDatabase.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/norishService.test.ts 5/5 ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 181 passed | 6 skipped (434) Tests 3446 passed | 309 skipped (3856) Start at 11:46:07 Duration 9.06s ✓ tests/appDbCredentials.test.ts (8 tests) 128ms ✓ tests/chatbotToolsCustomNutrients.test.ts (12 tests) 15ms ✓ tests/norishService.test.ts (5 tests) 8ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appDbCredentials.test.ts 8/8 ❯ tests/appRolePasswordSync.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/bootOrder.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts 12/12 ❯ tests/chatbotToolsEngagement.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dailySummaryRoutes.range.test.ts 13/13 ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/hrZoneCalculator.test.ts 0/18 ❯ tests/initializeDatabase.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/norishService.test.ts 5/5 ❯ tests/oidcSettingsRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts [queued] Test Files 181 passed | 6 skipped (434) Tests 3446 passed | 309 skipped (3856) Start at 11:46:07 Duration 9.06s ✓ tests/hrZoneCalculator.test.ts (18 tests) 9ms ✓ tests/uploadsStaticMount.test.ts (11 tests) 64ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appRolePasswordSync.test.ts 0/6 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/bootOrder.test.ts [queued] ❯ tests/chatbotToolsCustomNutrients.test.ts 12/12 ❯ tests/chatbotToolsEngagement.test.ts 0/17 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/emailLogin.test.ts 6/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 30/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts [queued] ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/hrZoneCalculator.test.ts 18/18 ❯ tests/initializeDatabase.test.ts [queued] ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/norishService.test.ts 5/5 ❯ tests/oidcSettingsRoutes.test.ts 0/29 ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts 0/5 ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts 11/11 ❯ tests/waterIntakeFoodLinkSchema.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts 1/12 Test Files 183 passed | 6 skipped (434) Tests 3476 passed | 309 skipped (3936) Start at 11:46:07 Duration 9.17s ✓ tests/workoutPresetRoutes.validation.test.ts (12 tests) 19ms ✓ tests/chatbotToolsEngagement.test.ts (17 tests) 31ms ✓ tests/oidcSettingsRoutes.test.ts (29 tests) 81ms ✓ tests/sleepScienceService.midnightBedtime.test.ts (5 tests) 33ms ✓ tests/bootOrder.test.ts (5 tests) 5ms ✓ tests/appRolePasswordSync.test.ts (6 tests) 46ms stdout | tests/initializeDatabase.test.ts > database initialization > initializes on the lock connection and unlocks before returning it [2026-09-30T11:46:17.191Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > waits for the lock before starting schema work [2026-09-30T11:46:17.194Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > stops and discards the connection when lock fails [2026-09-30T11:46:17.195Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > stops and discards the connection when migrations fails [2026-09-30T11:46:17.196Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > stops and discards the connection when policies fails [2026-09-30T11:46:17.196Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > stops and discards the connection when unlock fails [2026-09-30T11:46:17.197Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > discards the connection when unlock returns false [2026-09-30T11:46:17.197Z] [INFO] Waiting for the database initialization lock... stdout | tests/initializeDatabase.test.ts > database initialization > discards the connection when unlock returns no row [2026-09-30T11:46:17.198Z] [INFO] Waiting for the database initialization lock... ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/appRolePasswordSync.test.ts 6/6 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/bootOrder.test.ts 5/5 ❯ tests/chatbotToolsEngagement.test.ts 17/17 ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts 0/8 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts [queued] ❯ tests/emailLogin.test.ts 7/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 12/19 ❯ tests/exerciseSearch.test.ts 0/6 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/initializeDatabase.test.ts 1/9 ❯ tests/mcpProtocolVersion.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/oidcSettingsRoutes.test.ts 29/29 ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/sleepScienceService.midnightBedtime.test.ts 5/5 ❯ tests/stravaDataProcessor.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/uploadsStaticMount.test.ts 11/11 ❯ tests/waterIntakeFoodLinkSchema.test.ts 0/8 ❯ tests/workoutCoachingRoutes.test.ts [queued] ❯ tests/workoutPresetRoutes.validation.test.ts 12/12 Test Files 189 passed | 6 skipped (434) Tests 3552 passed | 309 skipped (3972) Start at 11:46:07 Duration 9.27s ✓ tests/initializeDatabase.test.ts (9 tests) 12ms ✓ tests/waterIntakeFoodLinkSchema.test.ts (8 tests) 31ms ✓ tests/checkInPhotoService.test.ts (8 tests) 9ms ✓ tests/exerciseSearch.test.ts (6 tests) 10ms ✓ tests/mcpProtocolVersion.test.ts (12 tests) 7ms ✓ tests/stravaDataProcessor.test.ts (11 tests) 24ms ✓ tests/garminRoutes.test.ts (5 tests) 36ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/appRolePasswordSync.test.ts 6/6 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts 0/16 ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/checkInPhotoService.test.ts 8/8 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts [queued] ❯ tests/emailLogin.test.ts 8/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts 0/9 ❯ tests/exercisesApiSchemas.test.ts 13/19 ❯ tests/exerciseSearch.test.ts 6/6 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts 5/5 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/initializeDatabase.test.ts 9/9 ❯ tests/mcpProtocolVersion.test.ts 12/12 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/preflightPlaceholderSecrets.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/stravaDataProcessor.test.ts 11/11 ❯ tests/swagger.test.ts [queued] ❯ tests/waterIntakeFoodLinkSchema.test.ts 8/8 ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 196 passed | 6 skipped (434) Tests 3612 passed | 309 skipped (4032) Start at 11:46:07 Duration 9.39s ✓ tests/chatbotToolsMedications.test.ts (16 tests) 19ms ✓ tests/exerciseEntryRoutes.watchTelemetry.test.ts (9 tests) 63ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsMedications.test.ts 16/16 ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts [queued] ❯ tests/emailLogin.test.ts 9/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exerciseEntryRoutes.watchTelemetry.test.ts 9/9 ❯ tests/exercisesApiSchemas.test.ts 14/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminRoutes.test.ts 5/5 ❯ tests/globalSettingsRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts 0/11 ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts [queued] ❯ tests/polarOauthCallback.test.ts [queued] ❯ tests/preflightPlaceholderSecrets.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 198 passed | 6 skipped (434) Tests 3639 passed | 309 skipped (4043) Start at 11:46:07 Duration 9.50s stderr | tests/onboardingRoutes.test.ts > Onboarding Routes > POST /onboarding > should return 500 when service throws [2026-09-30T11:46:17.475Z] [ERROR] Error caught by centralized handler: DB failure Error: DB failure at /build/source/SparkyFitnessServer/tests/onboardingRoutes.test.ts:67:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/onboardingRoutes.test.ts > Onboarding Routes > GET /onboarding/status > should return 500 when service throws [2026-09-30T11:46:17.483Z] [ERROR] Error caught by centralized handler: DB failure Error: DB failure at /build/source/SparkyFitnessServer/tests/onboardingRoutes.test.ts:129:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/onboardingRoutes.test.ts > Onboarding Routes > POST /onboarding/skip > should return 500 when service throws [2026-09-30T11:46:17.486Z] [ERROR] Error caught by centralized handler: DB failure Error: DB failure at /build/source/SparkyFitnessServer/tests/onboardingRoutes.test.ts:156:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/onboardingRoutes.test.ts > Onboarding Routes > POST /onboarding/reset > should return 500 when service throws Error resetting onboarding status: Error: DB failure at /build/source/SparkyFitnessServer/tests/onboardingRoutes.test.ts:182:9 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts [queued] ❯ tests/emailLogin.test.ts 10/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exercisesApiSchemas.test.ts 14/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts 11/11 ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 0/24 ❯ tests/polarOauthCallback.test.ts 0/7 ❯ tests/preflightPlaceholderSecrets.test.ts 15/15 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 200 passed | 6 skipped (434) Tests 3666 passed | 309 skipped (4089) Start at 11:46:07 Duration 9.60s ✓ tests/onboardingRoutes.test.ts (11 tests) 45ms ✓ tests/preflightPlaceholderSecrets.test.ts (15 tests) 25ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts [queued] ❯ tests/emailLogin.test.ts 10/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exercisesApiSchemas.test.ts 14/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/onboardingRoutes.test.ts 11/11 ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 0/24 ❯ tests/polarOauthCallback.test.ts 0/7 ❯ tests/preflightPlaceholderSecrets.test.ts 15/15 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 200 passed | 6 skipped (434) Tests 3666 passed | 309 skipped (4089) Start at 11:46:07 Duration 9.60s ✓ tests/emailLogin.test.ts (29 tests) 1360ms ✓ email login environment precedence (29) ✓ configures the backend for FORCE=false DISABLE=true 850ms ✓ tests/dashboardLayoutService.test.ts (11 tests) 12ms ✓ tests/polarOauthCallback.test.ts (7 tests) 53ms ✓ tests/chatbotToolsProgressPhotos.test.ts (10 tests) 32ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/dashboardLayoutService.test.ts 11/11 ❯ tests/demoPasswordResetGuard.test.ts [queued] ❯ tests/emailLogin.test.ts 29/29 ❯ tests/exerciseEntriesApiSchemas.test.ts 31/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/preflightPlaceholderSecrets.test.ts 15/15 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 204 passed | 6 skipped (434) Tests 3737 passed | 309 skipped (4110) Start at 11:46:07 Duration 9.70s stderr | tests/authRateLimit.test.ts > /mfa-factors inline rate limiter 2026-09-30T11:46:17.683Z ERROR [Better Auth]: Could not validate the database schema. Check your database connection. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 1/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 0/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts 6/6 ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 207 passed | 6 skipped (434) Tests 3759 passed | 309 skipped (4161) Start at 11:46:07 Duration 9.81s ✓ tests/reportRangeCols.test.ts (6 tests) 12ms ✓ tests/healthMetricSampleWriter.test.ts (4 tests) 23ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 1/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 0/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts 6/6 ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 207 passed | 6 skipped (434) Tests 3759 passed | 309 skipped (4161) Start at 11:46:07 Duration 9.81s stderr | tests/checkInPhotoRoutes.test.ts > GET / (gallery) > returns 500 when the service throws [2026-09-30T11:46:17.734Z] [ERROR] Failed to fetch check-in photo gallery Error: DB error at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:126:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/checkInPhotoRoutes.test.ts > GET /dates > returns 500 when the service throws [2026-09-30T11:46:17.745Z] [ERROR] Failed to fetch check-in photo dates Error: DB error at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:160:57 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/checkInPhotoRoutes.test.ts > GET /:date > returns 500 when service throws [2026-09-30T11:46:17.754Z] [ERROR] Failed to fetch check-in photos Error: DB error at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:189:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/checkInPhotoRoutes.test.ts > GET /file/:id > returns 500 when the service throws [2026-09-30T11:46:17.766Z] [ERROR] Failed to serve check-in photo Error: boom at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:236:60 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 1/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 0/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts 6/6 ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 207 passed | 6 skipped (434) Tests 3759 passed | 309 skipped (4161) Start at 11:46:07 Duration 9.81s ✓ tests/demoPasswordResetGuard.test.ts (10 tests) 19ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 1/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 0/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts 6/6 ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 207 passed | 6 skipped (434) Tests 3759 passed | 309 skipped (4161) Start at 11:46:07 Duration 9.81s stderr | tests/checkInPhotoRoutes.test.ts > POST /:date/:type > returns 500 when service throws [2026-09-30T11:46:17.778Z] [ERROR] Failed to save check-in photo Error: DB error at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:306:55 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/checkInPhotoRoutes.test.ts > DELETE /photo/:id > returns 500 when service throws [2026-09-30T11:46:17.783Z] [ERROR] Failed to delete check-in photo Error: DB error at /build/source/SparkyFitnessServer/tests/checkInPhotoRoutes.test.ts:335:55 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholWeekService.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts [queued] ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsProgressPhotos.test.ts 10/10 ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 1/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exercisesApiSchemas.test.ts 15/19 ❯ tests/fastingRoutes.test.ts [queued] ❯ tests/fitImportRoutes.test.ts [queued] ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 0/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/healthMetricSampleWriter.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/polarOauthCallback.test.ts 7/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRangeCols.test.ts 6/6 ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts [queued] Test Files 207 passed | 6 skipped (434) Tests 3759 passed | 309 skipped (4161) Start at 11:46:07 Duration 9.81s ✓ tests/checkInPhotoRoutes.test.ts (24 tests) 87ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 1/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 0/7 ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 24/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 19/19 ❯ tests/fastingRoutes.test.ts 0/6 ❯ tests/fitImportRoutes.test.ts 0/6 ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts 7/7 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 7/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 0/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts 19/19 ❯ tests/workoutCoachingRoutes.test.ts 0/15 Test Files 212 passed | 6 skipped (434) Tests 3820 passed | 309 skipped (4231) Start at 11:46:07 Duration 9.91s stderr | tests/globalSettingsRoutes.test.ts > Global Settings Routes > GET /admin/global-settings > should handle repository errors [2026-09-30T11:46:17.797Z] [ERROR] Error getting global auth settings: DB Error ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 1/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 0/7 ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 24/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 19/19 ❯ tests/fastingRoutes.test.ts 0/6 ❯ tests/fitImportRoutes.test.ts 0/6 ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts 7/7 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 7/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 0/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts 19/19 ❯ tests/workoutCoachingRoutes.test.ts 0/15 Test Files 212 passed | 6 skipped (434) Tests 3820 passed | 309 skipped (4231) Start at 11:46:07 Duration 9.91s stdout | tests/globalSettingsRoutes.test.ts > Global Settings Routes > PUT /admin/global-settings > should update and return global settings [2026-09-30T11:46:17.805Z] [INFO] Global auth settings updated successfully. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 1/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 0/7 ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 24/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 19/19 ❯ tests/fastingRoutes.test.ts 0/6 ❯ tests/fitImportRoutes.test.ts 0/6 ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts 7/7 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 7/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 0/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts 19/19 ❯ tests/workoutCoachingRoutes.test.ts 0/15 Test Files 212 passed | 6 skipped (434) Tests 3820 passed | 309 skipped (4231) Start at 11:46:07 Duration 9.91s stderr | tests/globalSettingsRoutes.test.ts > Global Settings Routes > PUT /admin/global-settings > should handle repository errors during save [2026-09-30T11:46:17.808Z] [ERROR] Error updating global auth settings: Update failed stderr | tests/globalSettingsRoutes.test.ts > Global Settings Routes > GET /admin/global-settings/allow-user-ai-config > should handle errors [2026-09-30T11:46:17.812Z] [ERROR] Error checking user AI config permission: Check failed ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 1/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 0/7 ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 24/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 19/19 ❯ tests/fastingRoutes.test.ts 0/6 ❯ tests/fitImportRoutes.test.ts 0/6 ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts 7/7 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 7/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 0/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts 19/19 ❯ tests/workoutCoachingRoutes.test.ts 0/15 Test Files 212 passed | 6 skipped (434) Tests 3820 passed | 309 skipped (4231) Start at 11:46:07 Duration 9.91s ✓ tests/globalSettingsRoutes.test.ts (7 tests) 40ms ✓ tests/exercisesApiSchemas.test.ts (19 tests) 3577ms ✓ Exercises API schemas (16) ✓ exerciseWriteArrayFieldsSchema (6) ✓ rejects a genuinely wrong type (not a string/array formatting quirk) 562ms ✓ tests/foodEntryWholeCopyRepository.test.ts (7 tests) 11ms stdout | tests/backupRoutes.download.test.ts [2026-09-30T11:46:17.828Z] [INFO] Ensured temporary upload directory exists: /build/source/SparkyFitnessServer/temp_uploads/ ✓ tests/unitConversion.test.ts (19 tests) 7ms stdout | tests/backupRoutes.download.test.ts > Backup routes - /download/:fileName > returns 404 when the requested backup file does not exist [2026-09-30T11:46:17.863Z] [INFO] Download backup initiated by admin: sparkyfitness_full_backup_20990101.tar.gz stdout | tests/backupRoutes.download.test.ts > Backup routes - /download/:fileName > serves the requested backup file [2026-09-30T11:46:17.872Z] [INFO] Download backup initiated by admin: sparkyfitness_full_backup_20260101.tar.gz stdout | tests/backupRoutes.download.test.ts > Backup routes - /download/:fileName > serves the requested backup file [2026-09-30T11:46:17.876Z] [INFO] Backup file downloaded: sparkyfitness_full_backup_20260101.tar.gz ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 1/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts [queued] ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 0/7 ❯ tests/caffeineDoseWindow.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/checkInPhotoRoutes.test.ts 24/24 ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/demoPasswordResetGuard.test.ts 10/10 ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/exercisesApiSchemas.test.ts 19/19 ❯ tests/fastingRoutes.test.ts 0/6 ❯ tests/fitImportRoutes.test.ts 0/6 ❯ tests/foodEntryWholeCopy.test.ts [queued] ❯ tests/foodEntryWholeCopyRepository.test.ts 7/7 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/globalSettingsRoutes.test.ts 7/7 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 0/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/unitConversion.test.ts 19/19 ❯ tests/workoutCoachingRoutes.test.ts 0/15 Test Files 212 passed | 6 skipped (434) Tests 3820 passed | 309 skipped (4231) Start at 11:46:07 Duration 9.91s ✓ tests/alcoholWeekService.test.ts (5 tests) 8ms ✓ tests/mealServiceFromDiary.test.ts (5 tests) 9ms ✓ tests/backupRoutes.download.test.ts (7 tests) 43ms ✓ tests/workoutCoachingRoutes.test.ts (15 tests) 57ms ✓ tests/fastingRoutes.test.ts (6 tests) 35ms ✓ tests/fitImportRoutes.test.ts (6 tests) 72ms ✓ tests/foodEntryWholeCopy.test.ts (6 tests) 8ms ✓ tests/apiKeyRoutes.contextSwitch.test.ts (4 tests) 28ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/alcoholWeekService.test.ts 5/5 ❯ tests/apiKeyRoutes.contextSwitch.test.ts 4/4 ❯ tests/authRateLimit.test.ts 7/19 ❯ tests/backupRoutes.download.test.ts 7/7 ❯ tests/caffeineDoseWindow.test.ts 0/6 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseModality.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/fastingRoutes.test.ts 6/6 ❯ tests/fitImportRoutes.test.ts 6/6 ❯ tests/foodEntryWholeCopy.test.ts 6/6 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts [queued] ❯ tests/garminNutritionSync.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealServiceFromDiary.test.ts 5/5 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts 0/8 ❯ tests/openFoodFactsContributionRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/quickAddNeverPrimary.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaConnections.test.ts [queued] ❯ tests/signOutCookieCleanup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts [queued] ❯ tests/workoutCoachingRoutes.test.ts 15/15 Test Files 220 passed | 6 skipped (434) Tests 3873 passed | 309 skipped (4255) Start at 11:46:07 Duration 10.02s ✓ tests/authRateLimit.test.ts (19 tests) 6290ms ✓ tests/caffeineDoseWindow.test.ts (6 tests) 28ms ✓ tests/nutrientGoalPreferenceRoutes.test.ts (8 tests) 40ms ✓ tests/progressionEngine.test.ts (8 tests) 11ms ✓ tests/garminNutritionSync.test.ts (11 tests) 6ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/apiKeyRoutes.contextSwitch.test.ts 4/4 ❯ tests/authRateLimit.test.ts 19/19 ❯ tests/caffeineDoseWindow.test.ts 6/6 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 32/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseModality.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/fitImportRoutes.test.ts 6/6 ❯ tests/foodEntryWholeCopy.test.ts 6/6 ❯ tests/foodIntegrationService.fatsecret.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts 0/2 ❯ tests/garminNutritionSync.test.ts 11/11 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/nutrientGoalPreferenceRoutes.test.ts 8/8 ❯ tests/openFoodFactsContributionRoutes.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/progressionEngine.test.ts 8/8 ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/pullWorkoutProgression.test.ts [queued] ❯ tests/quickAddNeverPrimary.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts [queued] ❯ tests/schemaConnections.test.ts [queued] ❯ tests/signOutCookieCleanup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/toolResultTruncation.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts [queued] ❯ tests/workoutPresetRepository.supersetGroup.test.ts [queued] Test Files 225 passed | 6 skipped (434) Tests 3918 passed | 309 skipped (4276) Start at 11:46:07 Duration 10.22s ✓ tests/garminActivityProcessor.transaction.test.ts (2 tests) 8ms ✓ tests/reportWodPrExclusion.test.ts (5 tests) 23ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts [queued] ❯ tests/bearerAuthBridge.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts 1/12 ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 33/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseModality.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/foodIntegrationService.fatsecret.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminActivityProcessor.transaction.test.ts 2/2 ❯ tests/garminNutritionSync.test.ts 11/11 ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/openFoodFactsContributionRoutes.test.ts [queued] ❯ tests/openFoodFactsLanguage.test.ts [queued] ❯ tests/ouraRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/pullWorkoutProgression.test.ts [queued] ❯ tests/quickAddNeverPrimary.test.ts [queued] ❯ tests/reportRepository.customNutrients.test.ts [queued] ❯ tests/reportWodPrExclusion.test.ts 5/5 ❯ tests/schemaConnections.test.ts 0/14 ❯ tests/signOutCookieCleanup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/toolResultTruncation.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts [queued] ❯ tests/workoutPresetRepository.supersetGroup.test.ts [queued] Test Files 227 passed | 6 skipped (434) Tests 3927 passed | 309 skipped (4307) Start at 11:46:07 Duration 10.32s ✓ tests/chatbotToolsSleepScience.test.ts (12 tests) 12ms ✓ tests/schemaConnections.test.ts (14 tests) 14ms ✓ tests/quickAddNeverPrimary.test.ts (6 tests) 11ms ✓ tests/polarActivityDedup.test.ts (3 tests) 10ms ✓ tests/workoutPresetRepository.supersetGroup.test.ts (4 tests) 9ms ✓ tests/alcoholUnits.test.ts (14 tests) 9ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts 14/14 ❯ tests/bearerAuthBridge.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSleepScience.test.ts 12/12 ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 33/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts [queued] ❯ tests/exerciseModality.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts [queued] ❯ tests/foodIntegrationService.fatsecret.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/medicationEntryRepository.test.ts [queued] ❯ tests/openFoodFactsContributionRoutes.test.ts [queued] ❯ tests/openFoodFactsLanguage.test.ts [queued] ❯ tests/ouraRoutes.test.ts 1/9 ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts 3/3 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/pullWorkoutProgression.test.ts [queued] ❯ tests/quickAddNeverPrimary.test.ts 6/6 ❯ tests/reportRepository.customNutrients.test.ts [queued] ❯ tests/schemaConnections.test.ts 14/14 ❯ tests/signOutCookieCleanup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/toolResultTruncation.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts [queued] ❯ tests/workoutPresetRepository.supersetGroup.test.ts 4/4 Test Files 233 passed | 6 skipped (434) Tests 3980 passed | 309 skipped (4343) Start at 11:46:07 Duration 10.43s ✓ tests/ouraRoutes.test.ts (9 tests) 50ms ✓ tests/bearerAuthBridge.test.ts (6 tests) 7ms ✓ tests/foodIntegrationService.fatsecret.test.ts (4 tests) 14ms ✓ tests/exerciseRepository.arrayFieldNormalization.test.ts (5 tests) 7ms ✓ tests/exerciseEntryActiveCaloriesNotes.test.ts (5 tests) 7ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/alcoholUnits.test.ts 14/14 ❯ tests/bearerAuthBridge.test.ts 6/6 ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts [queued] ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts 0/8 ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts 5/5 ❯ tests/exerciseModality.test.ts [queued] ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts 5/5 ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodIntegrationService.fatsecret.test.ts 4/4 ❯ tests/foodOptionsRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts 1/5 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/medicationEntryRepository.test.ts [queued] ❯ tests/openFoodFactsContributionRoutes.test.ts [queued] ❯ tests/openFoodFactsLanguage.test.ts [queued] ❯ tests/ouraRoutes.test.ts 9/9 ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts 23/24 ❯ tests/polarActivityDedup.test.ts 3/3 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/pullWorkoutProgression.test.ts [queued] ❯ tests/reportRepository.customNutrients.test.ts [queued] ❯ tests/signOutCookieCleanup.test.ts [queued] ❯ tests/swagger.test.ts [queued] ❯ tests/toolResultTruncation.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts 0/60 ❯ tests/workoutPresetRepository.supersetGroup.test.ts 4/4 Test Files 238 passed | 6 skipped (434) Tests 4010 passed | 309 skipped (4436) Start at 11:46:07 Duration 10.54s ✓ tests/goalServiceAdaptiveMaturity.test.ts (5 tests) 21ms ✓ tests/exerciseAlternativesRoutes.test.ts (8 tests) 43ms ✓ tests/workoutActivityMapping.test.ts (60 tests) 11ms ✓ tests/exerciseModality.test.ts (11 tests) 10ms ✓ tests/pullWorkoutProgression.test.ts (4 tests) 4ms ✓ tests/outboundUrlPolicy.test.ts (24 tests) 1039ms ✓ outboundUrlPolicy (24) ✓ closes a stalled TLS connection with the bounded connector timeout 1025ms ✓ tests/toolResultTruncation.test.ts (9 tests) 10ms ✓ tests/cycleFertility.test.ts (7 tests) 13ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/bearerAuthBridge.test.ts 6/6 ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts 7/7 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/exerciseAlternativesRoutes.test.ts 8/8 ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseEntryActiveCaloriesNotes.test.ts 5/5 ❯ tests/exerciseModality.test.ts 11/11 ❯ tests/exerciseRepository.arrayFieldNormalization.test.ts 5/5 ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodIntegrationService.fatsecret.test.ts 4/4 ❯ tests/foodOptionsRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/goalServiceAdaptiveMaturity.test.ts 5/5 ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/medicationEntryRepository.test.ts [queued] ❯ tests/openFoodFactsContributionRoutes.test.ts 0/6 ❯ tests/openFoodFactsLanguage.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts [queued] ❯ tests/outboundUrlPolicy.test.ts 24/24 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/pullWorkoutProgression.test.ts 4/4 ❯ tests/reportRepository.customNutrients.test.ts [queued] ❯ tests/signOutCookieCleanup.test.ts 0/7 ❯ tests/swagger.test.ts [queued] ❯ tests/toolResultTruncation.test.ts 9/9 ❯ tests/waterContainerFoodLink.test.ts [queued] ❯ tests/workoutActivityMapping.test.ts 60/60 Test Files 246 passed | 6 skipped (434) Tests 4114 passed | 309 skipped (4480) Start at 11:46:07 Duration 10.64s ✓ tests/swagger.test.ts (4 tests) 16ms ✓ tests/signOutCookieCleanup.test.ts (7 tests) 29ms ✓ tests/openFoodFactsContributionRoutes.test.ts (6 tests) 47ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleFertility.test.ts 7/7 ❯ tests/cycleRoutes.test.ts [queued] ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/favoritesService.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/medicationEntryRepository.test.ts 0/3 ❯ tests/mockDataOptions.test.ts [queued] ❯ tests/openFoodFactsContributionRoutes.test.ts 6/6 ❯ tests/openFoodFactsLanguage.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts [queued] ❯ tests/reportRepository.customNutrients.test.ts [queued] ❯ tests/secretLoader.test.ts [queued] ❯ tests/signOutCookieCleanup.test.ts 7/7 ❯ tests/swagger.test.ts 4/4 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/toolResultTruncation.test.ts 9/9 ❯ tests/waterContainerFoodLink.test.ts [queued] Test Files 249 passed | 6 skipped (434) Tests 4131 passed | 309 skipped (4487) Start at 11:46:07 Duration 10.74s ✓ tests/medicationEntryRepository.test.ts (3 tests) 6ms ✓ tests/reportRepository.customNutrients.test.ts (3 tests) 7ms ✓ tests/openFoodFactsLanguage.test.ts (7 tests) 8ms stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > createMealPlanTemplate should create active template without deactivating other plans [2026-09-30T11:46:18.776Z] [INFO] createMealPlanTemplate service - received planData: { plan_name: 'Base Plan', is_active: true } stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > createMealPlanTemplate should create active template without deactivating other plans [2026-09-30T11:46:18.778Z] [INFO] createMealPlanTemplate service - newPlan created: { id: 'plan-1', plan_name: 'Base Plan', is_active: true } [2026-09-30T11:46:18.778Z] [INFO] createMealPlanTemplate service - New plan is active, creating food entries from template plan-1 stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > updateMealPlanTemplate should update template without deactivating other plans [2026-09-30T11:46:18.780Z] [INFO] updateMealPlanTemplate service - received planData for plan plan-2: { plan_name: 'Cutting Plan', is_active: true } stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > updateMealPlanTemplate should update template without deactivating other plans [2026-09-30T11:46:18.780Z] [INFO] updateMealPlanTemplate service - Deleting old food entries for template plan-2 stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > updateMealPlanTemplate should update template without deactivating other plans [2026-09-30T11:46:18.780Z] [INFO] updateMealPlanTemplate service - updatedPlan: { id: 'plan-2', plan_name: 'Cutting Plan', is_active: true } [2026-09-30T11:46:18.780Z] [INFO] updateMealPlanTemplate service - Updated plan is active, creating food entries from template plan-2 stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > duplicateMealPlanTemplate should clone original plan with (Copy) name and inactive state [2026-09-30T11:46:18.780Z] [INFO] duplicateMealPlanTemplate service - duplicating template plan-orig for user user-123 stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > duplicateMealPlanTemplate should clone original plan with (Copy) name and inactive state [2026-09-30T11:46:18.781Z] [INFO] createMealPlanTemplate service - received planData: { plan_name: 'Keto Plan (Copy)', description: 'Low carb plan', start_date: 2026-09-30T11:46:18.781Z, end_date: null, is_active: false, assignments: [ { day_of_week: 1, meal_type_id: 'mt-1', item_type: 'food', food_id: 'f-1', quantity: 2 } ], currentClientDate: undefined } stdout | tests/mealPlanTemplateService.test.ts > mealPlanTemplateService > duplicateMealPlanTemplate should clone original plan with (Copy) name and inactive state [2026-09-30T11:46:18.781Z] [INFO] createMealPlanTemplate service - newPlan created: { id: 'plan-copy', plan_name: 'Keto Plan (Copy)', is_active: false } [2026-09-30T11:46:18.781Z] [INFO] createMealPlanTemplate service - New plan is not active, skipping food entry creation. ✓ tests/mealPlanTemplateService.test.ts (3 tests) 8ms stdout | tests/outboundProxy.test.ts [2026-09-30T11:46:18.809Z] [INFO] Outbound proxy enabled via http://127.0.0.1:41083 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 0/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 0/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/medicationEntryRepository.test.ts 3/3 ❯ tests/mockDataOptions.test.ts [queued] ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/openFoodFactsLanguage.test.ts 7/7 ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 0/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 0/7 ❯ tests/reportRepository.customNutrients.test.ts 3/3 ❯ tests/secretLoader.test.ts 0/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts [queued] Test Files 253 passed | 6 skipped (434) Tests 4147 passed | 309 skipped (4542) Start at 11:46:07 Duration 10.85s ✓ tests/providerSyncScheduler.test.ts (7 tests) 10ms stdout | tests/secretLoader.test.ts > secretLoader > loads secrets from *_FILE variables when target variable is unset [Secrets] Checking for secret files to load... [Secrets] Loaded secret for SPARKY_FITNESS_DB_PASSWORD from file defined in SPARKY_FITNESS_DB_PASSWORD_FILE [Secrets] Successfully loaded 1 secrets from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > loads secrets from *_FILE variables when target variable is unset [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stdout | tests/secretLoader.test.ts > secretLoader > loads secrets when target variable is an empty string [Secrets] Checking for secret files to load... [Secrets] Loaded secret for SPARKY_FITNESS_APP_DB_PASSWORD from file defined in SPARKY_FITNESS_APP_DB_PASSWORD_FILE [Secrets] Successfully loaded 1 secrets from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > loads secrets when target variable is an empty string [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stdout | tests/secretLoader.test.ts > secretLoader > loads secrets when target variable contains only whitespace [Secrets] Checking for secret files to load... [Secrets] Loaded secret for SPARKY_FITNESS_EMAIL_PASS from file defined in SPARKY_FITNESS_EMAIL_PASS_FILE [Secrets] Successfully loaded 1 secrets from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > loads secrets when target variable contains only whitespace [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stdout | tests/secretLoader.test.ts > secretLoader > preserves existing non-empty environment variable when both VAR and VAR_FILE are set [Secrets] Checking for secret files to load... [Secrets] No secrets loaded from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > preserves existing non-empty environment variable when both VAR and VAR_FILE are set [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stdout | tests/secretLoader.test.ts > secretLoader > handles multiple sensitive secret files simultaneously [Secrets] Checking for secret files to load... [Secrets] Loaded secret for SPARKY_FITNESS_DB_PASSWORD from file defined in SPARKY_FITNESS_DB_PASSWORD_FILE [Secrets] Loaded secret for SPARKY_FITNESS_APP_DB_PASSWORD from file defined in SPARKY_FITNESS_APP_DB_PASSWORD_FILE [Secrets] Loaded secret for SPARKY_FITNESS_EMAIL_PASS from file defined in SPARKY_FITNESS_EMAIL_PASS_FILE [Secrets] Loaded secret for SPARKY_FITNESS_OIDC_CLIENT_ID from file defined in SPARKY_FITNESS_OIDC_CLIENT_ID_FILE [Secrets] Loaded secret for SPARKY_FITNESS_OIDC_CLIENT_SECRET from file defined in SPARKY_FITNESS_OIDC_CLIENT_SECRET_FILE [Secrets] Loaded secret for BETTER_AUTH_SECRET from file defined in BETTER_AUTH_SECRET_FILE [Secrets] Loaded secret for SPARKY_FITNESS_API_ENCRYPTION_KEY from file defined in SPARKY_FITNESS_API_ENCRYPTION_KEY_FILE [Secrets] Successfully loaded 7 secrets from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > handles multiple sensitive secret files simultaneously [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stdout | tests/secretLoader.test.ts > secretLoader > logs a warning without throwing if secret file does not exist [Secrets] Checking for secret files to load... [Secrets] No secrets loaded from files. stdout | tests/secretLoader.test.ts > secretLoader > ignores *_FILE variables with empty file paths [Secrets] Checking for secret files to load... [Secrets] No secrets loaded from files. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s stderr | tests/secretLoader.test.ts > secretLoader > ignores *_FILE variables with empty file paths [Secrets] WARNING: File specified in SSL_CERT_FILE (/no-cert-file.crt) not found. [Secrets] WARNING: File specified in NIX_SSL_CERT_FILE (/no-cert-file.crt) not found. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s ✓ tests/secretLoader.test.ts (7 tests) 11ms ✓ tests/outboundProxy.test.ts (5 tests) 62ms ✓ tests/imageLocalizer.test.ts (11 tests) 8ms ✓ tests/foodOptionsRoute.test.ts (10 tests) 43ms ✓ tests/cycleRoutes.test.ts (13 tests) 67ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 34/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/imageLocalizer.test.ts 11/11 ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealPlanTemplateService.test.ts 3/3 ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts [queued] ❯ tests/mockDataOptions.test.ts 0/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/outboundProxy.test.ts 5/5 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/providerSyncScheduler.test.ts 7/7 ❯ tests/secretLoader.test.ts 7/7 ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 0/7 Test Files 259 passed | 6 skipped (434) Tests 4200 passed | 309 skipped (4569) Start at 11:46:07 Duration 10.96s ✓ tests/garminService.workoutSets.test.ts (1 test) 7ms ✓ tests/mockDataOptions.test.ts (9 tests) 9ms ✓ tests/waterContainerFoodLink.test.ts (7 tests) 12ms ✓ tests/corosMcpText.test.ts (6 tests) 7ms ✓ tests/foodDerivedWaterQuery.test.ts (6 tests) 8ms ✓ tests/chatbotToolsDashboard.test.ts (6 tests) 22ms stdout | tests/measurementService.smartScaleComposition.test.ts > smart-scale composition routes to check_in_measurements > writes Garmin column-named types into their check-in columns [2026-09-30T11:46:18.996Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: muscle_mass_kg=1, bone_mass_kg=1, body_water_percentage=1 stdout | tests/measurementService.smartScaleComposition.test.ts > smart-scale composition routes to check_in_measurements > maps Health Connect bone mass spellings onto bone_mass_kg [2026-09-30T11:46:18.998Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: BoneMass=1, bone_mass=1 stdout | tests/measurementService.smartScaleComposition.test.ts > smart-scale composition routes to check_in_measurements > keeps lean body mass as a custom measurement [2026-09-30T11:46:18.999Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: lean_body_mass=1 stdout | tests/measurementService.smartScaleComposition.test.ts > smart-scale composition routes to check_in_measurements > rejects an out-of-range body water percentage instead of storing it [2026-09-30T11:46:18.999Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: body_water_percentage=1 ✓ tests/measurementService.smartScaleComposition.test.ts (4 tests) 8ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts [queued] ❯ tests/backgroundJobScheduler.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsDashboard.test.ts 6/6 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosMcpText.test.ts 6/6 ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts [queued] ❯ tests/cycleRoutes.test.ts 13/13 ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts 0/11 ❯ tests/exerciseEntriesApiSchemas.test.ts 35/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodDerivedWaterQuery.test.ts 6/6 ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsRoute.test.ts 10/10 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutSets.test.ts 1/1 ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts 4/4 ❯ tests/mockDataOptions.test.ts 9/9 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterContainerFoodLink.test.ts 7/7 ❯ tests/waterGoalExclusivity.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] Test Files 266 passed | 6 skipped (434) Tests 4240 passed | 309 skipped (4603) Start at 11:46:07 Duration 11.06s ✓ tests/entryTime.test.ts (11 tests) 24ms ✓ tests/backgroundJobScheduler.test.ts (7 tests) 9ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts 1/4 ❯ tests/backgroundJobScheduler.test.ts 7/7 ❯ tests/calorieCalculationService.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts [queued] ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/entryTime.test.ts 11/11 ❯ tests/exerciseEntriesApiSchemas.test.ts 35/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/favoritesService.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts [queued] ❯ tests/hydrationTotalsService.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts [queued] ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts [queued] ❯ tests/measurementService.smartScaleComposition.test.ts 4/4 ❯ tests/nutrientDisplayPreferenceService.test.ts [queued] ❯ tests/ouraService.test.ts 0/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts [queued] ❯ tests/syncedDataRoutes.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts [queued] Test Files 268 passed | 6 skipped (434) Tests 4259 passed | 309 skipped (4614) Start at 11:46:07 Duration 11.28s ✓ tests/authMiddleware.cache.test.ts (4 tests) 7ms ✓ tests/hydrationNutritionRange.test.ts (4 tests) 7ms ✓ tests/favoritesService.test.ts (7 tests) 10ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authMiddleware.cache.test.ts 4/4 ❯ tests/backgroundJobScheduler.test.ts 7/7 ❯ tests/calorieCalculationService.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts [queued] ❯ tests/cycleTtcRoutes.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 35/45 ❯ tests/exerciseMuscleAggregates.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/favoritesService.test.ts 7/7 ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts [queued] ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts [queued] ❯ tests/hydrationNutritionRange.test.ts 4/4 ❯ tests/hydrationTotalsService.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts 0/18 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts [queued] ❯ tests/nutrientDisplayPreferenceService.test.ts 0/5 ❯ tests/ouraService.test.ts 0/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts [queued] ❯ tests/syncedDataRoutes.test.ts 0/10 ❯ tests/waterGoalExclusivity.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts [queued] Test Files 271 passed | 6 skipped (434) Tests 4273 passed | 309 skipped (4658) Start at 11:46:07 Duration 11.39s ✓ tests/syncedDataRoutes.test.ts (10 tests) 48ms ✓ tests/nutrientDisplayPreferenceService.test.ts (5 tests) 11ms ✓ tests/exerciseMuscleAggregates.test.ts (10 tests) 6ms stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > holds back the re-sent workout so its stored telemetry is not cascaded away (#2300) [2026-09-30T11:46:19.338Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2026-08-04 to 2026-08-04, keeping 1 re-sent record(s) for in-place update. stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > holds back the re-sent workout so its stored telemetry is not cascaded away (#2300) [2026-09-30T11:46:19.341Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: ExerciseSession=1 stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > still deletes everything else in the span, so an upstream deletion propagates [2026-09-30T11:46:19.343Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2026-08-04 to 2026-08-04, keeping 2 re-sent record(s) for in-place update. stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > still deletes everything else in the span, so an upstream deletion propagates [2026-09-30T11:46:19.344Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: ExerciseSession=2 stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > keeps the unconditional span delete for records with no source_id [2026-09-30T11:46:19.345Z] [INFO] [processHealthData] Pre-cleanup: Deleting existing exercise entries for source 'HealthKit' from 2026-08-04 to 2026-08-04. stdout | tests/healthResyncTelemetryPreservation.test.ts > processHealthData pre-cleanup > keeps the unconditional span delete for records with no source_id [2026-09-30T11:46:19.345Z] [INFO] [processHealthData] Timezone fallback to account tz (UTC) by type: ExerciseSession=1 ✓ tests/foodEntryService.snapshot.test.ts (3 tests) 7ms ✓ tests/healthResyncTelemetryPreservation.test.ts (3 tests) 29ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/calorieCalculationService.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts [queued] ❯ tests/cycleTtcRoutes.test.ts 0/6 ❯ tests/exerciseEntriesApiSchemas.test.ts 35/45 ❯ tests/exerciseMuscleAggregates.test.ts 10/10 ❯ tests/exerciseSourceScoping.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/favoritesService.test.ts 7/7 ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts [queued] ❯ tests/foodEntryService.snapshot.test.ts 3/3 ❯ tests/foodEntryWholeCopyRoute.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/gestation.test.ts [queued] ❯ tests/healthResyncTelemetryPreservation.test.ts 3/3 ❯ tests/hydrationNutritionRange.test.ts 4/4 ❯ tests/hydrationTotalsService.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts 1/18 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts [queued] ❯ tests/nutrientDisplayPreferenceService.test.ts 5/5 ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts [queued] ❯ tests/syncedDataRoutes.test.ts 10/10 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts [queued] Test Files 276 passed | 6 skipped (434) Tests 4306 passed | 309 skipped (4680) Start at 11:46:07 Duration 11.49s ✓ tests/integrationRoutesPermissionGating.test.ts (18 tests) 80ms ✓ tests/cycleTtcRoutes.test.ts (6 tests) 73ms ✓ tests/gestation.test.ts (14 tests) 10ms ✓ tests/chatbotToolsSyncedData.test.ts (6 tests) 10ms ✓ tests/cycleCorrelations.test.ts (8 tests) 8ms ✓ tests/exerciseSourceScoping.test.ts (5 tests) 9ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts 6/6 ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts 8/8 ❯ tests/cycleTtcRoutes.test.ts 6/6 ❯ tests/exerciseEntriesApiSchemas.test.ts 36/45 ❯ tests/exerciseMuscleAggregates.test.ts 10/10 ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 1/4 ❯ tests/foodEntryService.snapshot.test.ts 3/3 ❯ tests/foodEntryWholeCopyRoute.test.ts 0/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/gestation.test.ts 14/14 ❯ tests/healthResyncTelemetryPreservation.test.ts 3/3 ❯ tests/hydrationTotalsService.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts 18/18 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 0/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts [queued] Test Files 282 passed | 6 skipped (434) Tests 4364 passed | 309 skipped (4725) Start at 11:46:07 Duration 11.59s stderr | tests/foodEntrySelectedCopyRoute.test.ts > POST /copy-selected-from-user > preserves a service conflict response through the error handler [2026-09-30T11:46:19.522Z] [ERROR] Error caught by centralized handler: One or more source entries changed. Refresh the family diary. Error: One or more source entries changed. Refresh the family diary. at /build/source/SparkyFitnessServer/tests/foodEntrySelectedCopyRoute.test.ts:113:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatbotToolsSyncedData.test.ts 6/6 ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/cycleCorrelations.test.ts 8/8 ❯ tests/cycleTtcRoutes.test.ts 6/6 ❯ tests/exerciseEntriesApiSchemas.test.ts 36/45 ❯ tests/exerciseMuscleAggregates.test.ts 10/10 ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 1/4 ❯ tests/foodEntryService.snapshot.test.ts 3/3 ❯ tests/foodEntryWholeCopyRoute.test.ts 0/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/gestation.test.ts 14/14 ❯ tests/healthResyncTelemetryPreservation.test.ts 3/3 ❯ tests/hydrationTotalsService.test.ts [queued] ❯ tests/integrationRoutesPermissionGating.test.ts 18/18 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts [queued] ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 0/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts [queued] Test Files 282 passed | 6 skipped (434) Tests 4364 passed | 309 skipped (4725) Start at 11:46:07 Duration 11.59s ✓ tests/foodEntrySelectedCopyRoute.test.ts (4 tests) 37ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 4/4 ❯ tests/foodEntryWholeCopyRoute.test.ts 4/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/hydrationTotalsService.test.ts 0/4 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 0/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts 10/10 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts 5/5 ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 4/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts 0/1 Test Files 288 passed | 6 skipped (434) Tests 4397 passed | 309 skipped (4782) Start at 11:46:07 Duration 11.69s stderr | tests/foodEntryWholeCopyRoute.test.ts > POST /copy-reviewed-from-user > preserves a stale reviewed snapshot conflict through the error handler [2026-09-30T11:46:19.570Z] [ERROR] Error caught by centralized handler: One or more source entries changed. Refresh the family diary. Error: One or more source entries changed. Refresh the family diary. at /build/source/SparkyFitnessServer/tests/foodEntryWholeCopyRoute.test.ts:118:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 4/4 ❯ tests/foodEntryWholeCopyRoute.test.ts 4/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/hydrationTotalsService.test.ts 0/4 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 0/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts 10/10 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts 5/5 ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 4/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts 0/1 Test Files 288 passed | 6 skipped (434) Tests 4397 passed | 309 skipped (4782) Start at 11:46:07 Duration 11.69s ✓ tests/foodEntryWholeCopyRoute.test.ts (4 tests) 43ms ✓ tests/waterGoalExclusivity.test.ts (4 tests) 8ms ✓ tests/pregnancyPhotoService.test.ts (10 tests) 12ms ✓ tests/sleepScienceService.recordZone.test.ts (5 tests) 22ms ✓ tests/calorieCalculationService.test.ts (6 tests) 5ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 4/4 ❯ tests/foodEntryWholeCopyRoute.test.ts 4/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/hydrationTotalsService.test.ts 0/4 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 0/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts 10/10 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts 5/5 ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 4/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts 0/1 Test Files 288 passed | 6 skipped (434) Tests 4397 passed | 309 skipped (4782) Start at 11:46:07 Duration 11.69s stderr | tests/hydrationTotalsService.test.ts > hydrationTotalsService.resolveWaterTotalsForDate > degrades to 0 food_ml when the food-derived water query fails [2026-09-30T11:46:19.651Z] [WARN] Food-derived water fetch failed for user user-1 on 2026-09-05, defaulting to 0: Error: DB error at /build/source/SparkyFitnessServer/tests/hydrationTotalsService.test.ts:85:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseSourceScoping.test.ts 5/5 ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodEntrySelectedCopyRoute.test.ts 4/4 ❯ tests/foodEntryWholeCopyRoute.test.ts 4/4 ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts [queued] ❯ tests/hydrationTotalsService.test.ts 0/4 ❯ tests/liftosaurSync.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 0/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyPhotoService.test.ts 10/10 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/sleepScienceService.recordZone.test.ts 5/5 ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/waterGoalExclusivity.test.ts 4/4 ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts [queued] ❯ tests/zeroHydrationFactorPreset.test.ts 0/1 Test Files 288 passed | 6 skipped (434) Tests 4397 passed | 309 skipped (4782) Start at 11:46:07 Duration 11.69s ✓ tests/measurementSchemas.checkIn.test.ts (31 tests) 13ms ✓ tests/zeroHydrationFactorPreset.test.ts (1 test) 19ms ✓ tests/hydrationTotalsService.test.ts (4 tests) 10ms ✓ tests/garminService.workoutDefinitionWeights.test.ts (3 tests) 6ms stdout | tests/liftosaurSync.test.ts > liftosaurSync > coordinates synchronization for workouts and measurements with detailed counts [2026-09-30T11:46:19.728Z] [INFO] Starting Liftosaur INCREMENTAL synchronization for user user-1... stdout | tests/liftosaurSync.test.ts > liftosaurSync > coordinates synchronization for workouts and measurements with detailed counts [2026-09-30T11:46:19.731Z] [INFO] [liftosaurService] Imported 3 measurement records for user user-1. stdout | tests/liftosaurSync.test.ts > liftosaurSync > coordinates synchronization for workouts and measurements with detailed counts [2026-09-30T11:46:19.731Z] [INFO] Liftosaur synchronization completed for user user-1. Total imported: 4 (1 workouts, 3 measurements) stdout | tests/liftosaurSync.test.ts > liftosaurSync > stops paginating when a full sync reports more pages without advancing the cursor [2026-09-30T11:46:19.733Z] [INFO] Starting Liftosaur FULL synchronization for user user-1... ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/apiKeySessionCache.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts 0/5 ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts 3/3 ❯ tests/hydrationTotalsService.test.ts 4/4 ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/liftosaurSync.test.ts 2/2 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 31/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts 1/2 ❯ tests/zeroHydrationFactorPreset.test.ts 1/1 Test Files 294 passed | 6 skipped (434) Tests 4442 passed | 309 skipped (4797) Start at 11:46:07 Duration 11.81s stderr | tests/liftosaurSync.test.ts > liftosaurSync > stops paginating when a full sync reports more pages without advancing the cursor [2026-09-30T11:46:19.734Z] [WARN] [liftosaurService] Liftosaur reported more history for user user-1 without advancing the cursor; stopping pagination. ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/apiKeySessionCache.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts 0/5 ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts 3/3 ❯ tests/hydrationTotalsService.test.ts 4/4 ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/liftosaurSync.test.ts 2/2 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 31/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts 1/2 ❯ tests/zeroHydrationFactorPreset.test.ts 1/1 Test Files 294 passed | 6 skipped (434) Tests 4442 passed | 309 skipped (4797) Start at 11:46:07 Duration 11.81s stdout | tests/liftosaurSync.test.ts > liftosaurSync > stops paginating when a full sync reports more pages without advancing the cursor [2026-09-30T11:46:19.734Z] [INFO] [liftosaurService] Imported 3 measurement records for user user-1. stdout | tests/liftosaurSync.test.ts > liftosaurSync > stops paginating when a full sync reports more pages without advancing the cursor [2026-09-30T11:46:19.734Z] [INFO] Liftosaur synchronization completed for user user-1. Total imported: 5 (2 workouts, 3 measurements) ✓ tests/liftosaurSync.test.ts (2 tests) 10ms ✓ tests/fitbitDataProcessor.test.ts (3 tests) 7ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/apiKeySessionCache.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts [queued] ❯ tests/calorieCalculationService.test.ts 6/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts [queued] ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts 0/5 ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/garminService.workoutDefinitionWeights.test.ts 3/3 ❯ tests/hydrationTotalsService.test.ts 4/4 ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/liftosaurSync.test.ts 2/2 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts [queued] ❯ tests/measurementSchemas.checkIn.test.ts 31/31 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts [queued] ❯ tests/syncedDataRepository.test.ts [queued] ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts 1/2 ❯ tests/zeroHydrationFactorPreset.test.ts 1/1 Test Files 294 passed | 6 skipped (434) Tests 4442 passed | 309 skipped (4797) Start at 11:46:07 Duration 11.81s ✓ tests/withingsDataProcessor.test.ts (2 tests) 19ms ✓ tests/externalProviderRoutes.actorContext.test.ts (5 tests) 29ms stdout | tests/betterAuthSchemaCheck.integration.test.ts > Better Auth schema check [2026-09-30T11:46:19.867Z] [INFO] Ending existing owner database connection pool... stdout | tests/betterAuthSchemaCheck.integration.test.ts > Better Auth schema check [2026-09-30T11:46:19.868Z] [INFO] Existing owner database connection pool ended. [2026-09-30T11:46:19.868Z] [INFO] Ending existing app database connection pool... stdout | tests/betterAuthSchemaCheck.integration.test.ts > Better Auth schema check [2026-09-30T11:46:19.868Z] [INFO] Existing app database connection pool ended. ✓ tests/betterAuthSchemaCheck.integration.test.ts (1 test) 6ms ❯ tests/aiServiceConnectionTest.test.ts [queued] ❯ tests/apiKeySessionCache.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 0/4 ❯ tests/chatProviderOptions.test.ts [queued] ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts [queued] ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 0/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderRoutes.actorContext.test.ts 5/5 ❯ tests/externalProviderService.openFoodFactsConsent.test.ts [queued] ❯ tests/fitbitDataProcessor.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 0/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 0/13 ❯ tests/syncedDataRepository.test.ts 0/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] ❯ tests/withingsDataProcessor.test.ts 2/2 Test Files 297 passed | 6 skipped (434) Tests 4449 passed | 309 skipped (4839) Start at 11:46:07 Duration 11.93s ✓ tests/pregnancyRoutes.test.ts (13 tests) 65ms ❯ tests/aiServiceConnectionTest.test.ts 0/27 ❯ tests/apiKeySessionCache.test.ts 0/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 4/4 ❯ tests/chatProviderOptions.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts 0/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 0/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 13/13 ❯ tests/syncedDataRepository.test.ts 7/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] Test Files 303 passed | 6 skipped (434) Tests 4493 passed | 309 skipped (4936) Start at 11:46:07 Duration 12.03s stderr | tests/mealTypeRoutes.delete.test.ts > DELETE /meal-types/:id > maps an in-use meal type to 409 [2026-09-30T11:46:19.896Z] [ERROR] Route DELETE /meal-types/11111111-1111-4111-8111-111111111111 error: Error: Cannot delete this meal type because it is still in use. at /build/source/SparkyFitnessServer/tests/mealTypeRoutes.delete.test.ts:119:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealTypeRoutes.delete.test.ts > DELETE /meal-types/:id > maps a system default meal type to 403 [2026-09-30T11:46:19.900Z] [ERROR] Route DELETE /meal-types/11111111-1111-4111-8111-111111111111 error: Error: Cannot delete system default meal types. at /build/source/SparkyFitnessServer/tests/mealTypeRoutes.delete.test.ts:130:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/mealTypeRoutes.delete.test.ts > DELETE /meal-types/:id > maps an invalid reassign target to 400 [2026-09-30T11:46:19.901Z] [ERROR] Route DELETE /meal-types/11111111-1111-4111-8111-111111111111 error: Error: Invalid reassignment target meal type. at /build/source/SparkyFitnessServer/tests/mealTypeRoutes.delete.test.ts:140:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts 0/27 ❯ tests/apiKeySessionCache.test.ts 0/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 4/4 ❯ tests/chatProviderOptions.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts 0/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 0/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 13/13 ❯ tests/syncedDataRepository.test.ts 7/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] Test Files 303 passed | 6 skipped (434) Tests 4493 passed | 309 skipped (4936) Start at 11:46:07 Duration 12.03s ✓ tests/corosService.test.ts (4 tests) 7ms ✓ tests/chatbotToolsIntegrations.test.ts (4 tests) 8ms ✓ tests/syncedDataRepository.test.ts (7 tests) 10ms ❯ tests/aiServiceConnectionTest.test.ts 0/27 ❯ tests/apiKeySessionCache.test.ts 0/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 4/4 ❯ tests/chatProviderOptions.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts 0/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 0/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 13/13 ❯ tests/syncedDataRepository.test.ts 7/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] Test Files 303 passed | 6 skipped (434) Tests 4493 passed | 309 skipped (4936) Start at 11:46:07 Duration 12.03s stderr | tests/mealTypeRoutes.delete.test.ts > DELETE /meal-types/:id > does not leak unexpected errors [2026-09-30T11:46:19.905Z] [ERROR] Route DELETE /meal-types/11111111-1111-4111-8111-111111111111 error: Error: connection reset at /build/source/SparkyFitnessServer/tests/mealTypeRoutes.delete.test.ts:162:49 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts 0/27 ❯ tests/apiKeySessionCache.test.ts 0/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 4/4 ❯ tests/chatProviderOptions.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts 0/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 0/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 13/13 ❯ tests/syncedDataRepository.test.ts 7/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] Test Files 303 passed | 6 skipped (434) Tests 4493 passed | 309 skipped (4936) Start at 11:46:07 Duration 12.03s ✓ tests/externalProviderService.openFoodFactsConsent.test.ts (3 tests) 7ms ✓ tests/mealTypeRoutes.delete.test.ts (13 tests) 45ms ❯ tests/aiServiceConnectionTest.test.ts 0/27 ❯ tests/apiKeySessionCache.test.ts 0/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/betterAuthSchemaCheck.integration.test.ts 1/1 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts [queued] ❯ tests/chatbotToolsIntegrations.test.ts 4/4 ❯ tests/chatProviderOptions.test.ts 0/15 ❯ tests/chatService.test.ts [queued] ❯ tests/chatServiceClassifier.test.ts 0/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts [queued] ❯ tests/corosService.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 0/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/medicationRepository.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/pregnancyRoutes.test.ts 13/13 ❯ tests/syncedDataRepository.test.ts 7/7 ❯ tests/updateEmailRoute.test.ts [queued] ❯ tests/weightRamp.test.ts [queued] Test Files 303 passed | 6 skipped (434) Tests 4493 passed | 309 skipped (4936) Start at 11:46:07 Duration 12.03s ✓ tests/foodOptionsService.test.ts (23 tests) 20ms ✓ tests/apiKeySessionCache.test.ts (8 tests) 18ms ✓ tests/weightRamp.test.ts (11 tests) 9ms ✓ tests/chatServiceClassifier.test.ts (21 tests) 35ms ✓ tests/chatProviderOptions.test.ts (15 tests) 47ms ✓ tests/aiServiceConnectionTest.test.ts (27 tests) 64ms ✓ tests/openFoodFactsProductReadRateLimitService.test.ts (3 tests) 65ms stdout | tests/updateEmailRoute.test.ts [2026-09-30T11:46:20.095Z] [INFO] UserProfileRoutes UPLOADS_DIR: /build/source/SparkyFitnessServer/uploads/avatars ❯ tests/aiServiceConnectionTest.test.ts 27/27 ❯ tests/apiKeySessionCache.test.ts 8/8 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts 0/24 ❯ tests/chatProviderOptions.test.ts 15/15 ❯ tests/chatService.test.ts 0/60 ❯ tests/chatServiceClassifier.test.ts 21/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 0/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts [queued] ❯ tests/externalProviderService.openFoodFactsConsent.test.ts 3/3 ❯ tests/foodBulkImportOverwrite.test.ts 0/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodOptionsService.test.ts 23/23 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/glp1Service.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeRoutes.delete.test.ts 13/13 ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/medicationRepository.test.ts 1/4 ❯ tests/medicationSchemas.zod.test.ts [queued] ❯ tests/openFoodFactsAlcohol.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts 3/3 ❯ tests/ouraService.test.ts 1/7 ❯ tests/updateEmailRoute.test.ts 0/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/weightRamp.test.ts 11/11 Test Files 310 passed | 6 skipped (434) Tests 4602 passed | 309 skipped (5050) Start at 11:46:07 Duration 12.24s ✓ tests/medicationRepository.test.ts (4 tests) 10ms ✓ tests/chatbotToolsIndex.test.ts (24 tests) 51ms ✓ tests/corosRoutes.test.ts (4 tests) 37ms ❯ tests/aiServiceConnectionTest.test.ts 27/27 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts 24/24 ❯ tests/chatProviderOptions.test.ts 15/15 ❯ tests/chatService.test.ts 19/60 ❯ tests/chatServiceClassifier.test.ts 21/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 0/8 ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/glp1Service.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 0/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/medicationRepository.test.ts 4/4 ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 1/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts 3/3 ❯ tests/ouraService.test.ts 1/7 ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/weightRamp.test.ts 11/11 Test Files 317 passed | 6 skipped (434) Tests 4673 passed | 309 skipped (5085) Start at 11:46:07 Duration 12.36s stderr | tests/updateEmailRoute.test.ts > POST /api/identity/update-email > returns 500 when email is already in use (service throws plain Error) [2026-09-30T11:46:20.176Z] [ERROR] Error caught by centralized handler: Email already in use by another account. Error: Email already in use by another account. at /build/source/SparkyFitnessServer/tests/updateEmailRoute.test.ts:86:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 stderr | tests/updateEmailRoute.test.ts > POST /api/identity/update-email > returns 500 on unexpected service errors [2026-09-30T11:46:20.179Z] [ERROR] Error caught by centralized handler: DB connection failed Error: DB connection failed at /build/source/SparkyFitnessServer/tests/updateEmailRoute.test.ts:104:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:1628:35 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:26 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3319:20 at new Promise () at runWithCancel (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3314:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3299:20 at new Promise () at runWithTimeout (file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3257:10) at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:3876:64 ❯ tests/aiServiceConnectionTest.test.ts 27/27 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts 24/24 ❯ tests/chatProviderOptions.test.ts 15/15 ❯ tests/chatService.test.ts 19/60 ❯ tests/chatServiceClassifier.test.ts 21/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 0/8 ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/glp1Service.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 0/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/medicationRepository.test.ts 4/4 ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 1/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts 3/3 ❯ tests/ouraService.test.ts 1/7 ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/weightRamp.test.ts 11/11 Test Files 317 passed | 6 skipped (434) Tests 4673 passed | 309 skipped (5085) Start at 11:46:07 Duration 12.36s ✓ tests/externalProviderRepository.baseUrl.test.ts (5 tests) 7ms ✓ tests/updateEmailRoute.test.ts (5 tests) 48ms ✓ tests/foodBulkImportOverwrite.test.ts (3 tests) 8ms ✓ tests/medicationSchemas.zod.test.ts (7 tests) 18ms ❯ tests/aiServiceConnectionTest.test.ts 27/27 ❯ tests/authServiceUpdateEmail.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolsIndex.test.ts 24/24 ❯ tests/chatProviderOptions.test.ts 15/15 ❯ tests/chatService.test.ts 19/60 ❯ tests/chatServiceClassifier.test.ts 21/21 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 37/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 0/8 ❯ tests/garminIncrementalSync.test.ts [queued] ❯ tests/glp1Service.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 0/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/medicationRepository.test.ts 4/4 ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 1/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitService.test.ts 3/3 ❯ tests/ouraService.test.ts 1/7 ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/weightRamp.test.ts 11/11 Test Files 317 passed | 6 skipped (434) Tests 4673 passed | 309 skipped (5085) Start at 11:46:07 Duration 12.36s ✓ tests/openFoodFactsAlcohol.test.ts (6 tests) 6ms ✓ tests/garminConnectErrorFormatter.test.ts (8 tests) 6ms ✓ tests/foodEntryMealRoutes.create.test.ts (2 tests) 29ms ✓ tests/logging.test.ts (9 tests) 44ms stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > continues processing remaining chunks and records partialErrors when one chunk fails [2026-09-30T11:46:20.294Z] [INFO] [garminService] Starting Garmin sync (manual) for user user-1 from 2026-08-01 to 2026-08-15. [2026-09-30T11:46:20.295Z] [INFO] [garminService] Range 2026-08-01 to 2026-08-15 split into 3 incremental chunks. [2026-09-30T11:46:20.295Z] [INFO] [garminService] Processing chunk 1/3 (2026-08-01 to 2026-08-07) for user user-1... stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > continues processing remaining chunks and records partialErrors when one chunk fails [2026-09-30T11:46:20.295Z] [INFO] [garminService] Processing chunk 2/3 (2026-08-08 to 2026-08-14) for user user-1... ❯ tests/authServiceUpdateEmail.test.ts 0/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 1/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 27/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 38/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 0/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts 2/2 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 8/8 ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 6/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 322 passed | 6 skipped (434) Tests 4709 passed | 309 skipped (5103) Start at 11:46:07 Duration 12.47s stderr | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > continues processing remaining chunks and records partialErrors when one chunk fails [2026-09-30T11:46:20.296Z] [ERROR] [garminService] Error during activities sync for chunk 2026-08-08 to 2026-08-14: Connection reset on chunk 2 ❯ tests/authServiceUpdateEmail.test.ts 0/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 1/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 27/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 38/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 0/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts 2/2 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 8/8 ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 6/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 322 passed | 6 skipped (434) Tests 4709 passed | 309 skipped (5103) Start at 11:46:07 Duration 12.47s stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > continues processing remaining chunks and records partialErrors when one chunk fails [2026-09-30T11:46:20.296Z] [INFO] [garminService] Processing chunk 3/3 (2026-08-15 to 2026-08-15) for user user-1... stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > continues processing remaining chunks and records partialErrors when one chunk fails [2026-09-30T11:46:20.296Z] [INFO] [garminService] Full Garmin sync completed for user user-1. stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > marks phase with error if all chunks fail in that phase [2026-09-30T11:46:20.299Z] [INFO] [garminService] Starting Garmin sync (manual) for user user-1 from 2026-08-01 to 2026-08-07. [2026-09-30T11:46:20.299Z] [INFO] [garminService] Range 2026-08-01 to 2026-08-07 split into 1 incremental chunks. [2026-09-30T11:46:20.299Z] [INFO] [garminService] Processing chunk 1/1 (2026-08-01 to 2026-08-07) for user user-1... ❯ tests/authServiceUpdateEmail.test.ts 0/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 1/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 27/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 38/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 0/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts 2/2 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 8/8 ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 6/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 322 passed | 6 skipped (434) Tests 4709 passed | 309 skipped (5103) Start at 11:46:07 Duration 12.47s stderr | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > marks phase with error if all chunks fail in that phase [2026-09-30T11:46:20.299Z] [ERROR] [garminService] Error during activities sync for chunk 2026-08-01 to 2026-08-07: Garmin API 500 error ❯ tests/authServiceUpdateEmail.test.ts 0/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 1/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 27/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 38/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 0/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts 2/2 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 8/8 ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 6/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 322 passed | 6 skipped (434) Tests 4709 passed | 309 skipped (5103) Start at 11:46:07 Duration 12.47s stdout | tests/garminIncrementalSync.test.ts > Garmin syncGarminData - Incremental Chunk Resilience > marks phase with error if all chunks fail in that phase [2026-09-30T11:46:20.299Z] [INFO] [garminService] Full Garmin sync completed for user user-1. ✓ tests/garminIncrementalSync.test.ts (2 tests) 29ms ❯ tests/authServiceUpdateEmail.test.ts 0/6 ❯ tests/calorieSafetyFloor.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 1/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 27/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosRoutes.test.ts 4/4 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 38/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 0/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.baseUrl.test.ts 5/5 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodBulkImportOverwrite.test.ts 3/3 ❯ tests/foodDeletionImpact.test.ts [queued] ❯ tests/foodEntryMealRoutes.create.test.ts 2/2 ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminConnectErrorFormatter.test.ts 8/8 ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts [queued] ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/medicationSchemas.zod.test.ts 7/7 ❯ tests/openFoodFactsAlcohol.test.ts 6/6 ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateEmailRoute.test.ts 5/5 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 322 passed | 6 skipped (434) Tests 4709 passed | 309 skipped (5103) Start at 11:46:07 Duration 12.47s ✓ tests/chatbotToolsBarcode.test.ts (5 tests) 10ms ✓ tests/exerciseEntryRoutes.distanceClear.test.ts (3 tests) 38ms ✓ tests/exerciseEntryRoutes.progress.test.ts (3 tests) 34ms ✓ tests/exerciseJsonFields.test.ts (12 tests) 6ms ✓ tests/authServiceUpdateEmail.test.ts (6 tests) 131ms ✓ tests/liftosaurMeasurementsService.test.ts (4 tests) 20ms ✓ tests/foodDeletionImpact.test.ts (1 test) 5ms ❯ tests/appDbPasswordReachesPool.test.ts [queued] ❯ tests/authServiceUpdateEmail.test.ts 6/6 ❯ tests/caffeineKineticsMidnight.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts 0/2 ❯ tests/chatbotToolsAsk.test.ts [queued] ❯ tests/chatbotToolsBarcode.test.ts 5/5 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatService.test.ts 40/60 ❯ tests/corosOauthCallback.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/dropSetCalculator.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 39/45 ❯ tests/exerciseEntryRoutes.distanceClear.test.ts 3/3 ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryRoutes.progress.test.ts 3/3 ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseJsonFields.test.ts 12/12 ❯ tests/exerciseService.imagesEncoding.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts [queued] ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts 1/1 ❯ tests/foodEntryTime.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts [queued] ❯ tests/garminIncrementalSync.test.ts 2/2 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts [queued] ❯ tests/liftosaurMeasurementsService.test.ts 4/4 ❯ tests/logging.test.ts 9/9 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts [queued] ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateFoodBarcode.test.ts [queued] ❯ tests/userRepositoryCredentialAccountId.test.ts [queued] ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 329 passed | 6 skipped (434) Tests 4756 passed | 309 skipped (5125) Start at 11:46:07 Duration 12.57s ✓ tests/calorieSafetyFloor.test.ts (2 tests) 17ms ✓ tests/exerciseService.imagesEncoding.test.ts (2 tests) 5ms ✓ tests/corosOauthCallback.test.ts (2 tests) 25ms ↓ tests/initializeDatabase.integration.test.ts (1 test | 1 skipped) ✓ tests/exerciseStatsRoutes.test.ts (12 tests) 48ms ❯ tests/appDbPasswordReachesPool.test.ts [queued] ❯ tests/caffeineKineticsMidnight.test.ts [queued] ❯ tests/calorieSafetyFloor.test.ts 2/2 ❯ tests/chatbotToolsAsk.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolUnitConversion.test.ts [queued] ❯ tests/chatService.test.ts 51/60 ❯ tests/corosOauthCallback.test.ts 2/2 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/dropSetCalculator.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 39/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseService.imagesEncoding.test.ts 2/2 ❯ tests/exerciseStatsRoutes.test.ts 12/12 ❯ tests/externalProviderRepository.credentials.test.ts [queued] ❯ tests/externalProviderSchemas.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDefaultVariantQueries.test.ts [queued] ❯ tests/foodDeletionImpact.test.ts 1/1 ❯ tests/foodEntryTime.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts 1/5 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts [queued] ❯ tests/initializeDatabase.integration.test.ts 1/1 ❯ tests/liftosaurMeasurementsService.test.ts 4/4 ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts [queued] ❯ tests/openFoodFactsPhoto.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts 0/4 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts [queued] ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateFoodBarcode.test.ts [queued] ❯ tests/userRepositoryCredentialAccountId.test.ts [queued] ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 333 passed | 7 skipped (434) Tests 4786 passed | 310 skipped (5151) Start at 11:46:07 Duration 12.68s ✓ tests/forwardResponseHeaders.test.ts (5 tests) 25ms ✓ tests/openFoodFactsProductReadRateLimitRepository.test.ts (4 tests) 9ms ✓ tests/externalProviderRepository.credentials.test.ts (4 tests) 6ms ✓ tests/goalRepository.test.ts (1 test) 6ms ✓ tests/chatService.test.ts (60 tests) 599ms ✓ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts (6 tests) 18ms ✓ tests/userRepositoryCredentialAccountId.test.ts (2 tests) 8ms ❯ tests/appDbPasswordReachesPool.test.ts [queued] ❯ tests/caffeineKineticsMidnight.test.ts [queued] ❯ tests/chatbotToolsAsk.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolUnitConversion.test.ts [queued] ❯ tests/chatService.test.ts 60/60 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/cycleRepository.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts [queued] ❯ tests/dropSetCalculator.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 39/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/exerciseStatsRoutes.test.ts 12/12 ❯ tests/externalProviderRepository.credentials.test.ts 4/4 ❯ tests/externalProviderSchemas.test.ts [queued] ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDefaultVariantQueries.test.ts [queued] ❯ tests/foodEntryTime.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/forwardResponseHeaders.test.ts 5/5 ❯ tests/glp1Service.test.ts [queued] ❯ tests/goalModePercentageSignMigration.test.ts [queued] ❯ tests/goalRepository.test.ts 1/1 ❯ tests/imageOrder.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDefaultTime.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts 6/6 ❯ tests/openFoodFactsPhoto.test.ts [queued] ❯ tests/openFoodFactsProductReadRateLimitRepository.test.ts 4/4 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts [queued] ❯ tests/reportRepository.downsample.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts [queued] ❯ tests/switchContextCookie.test.ts [queued] ❯ tests/updateFoodBarcode.test.ts [queued] ❯ tests/userRepositoryCredentialAccountId.test.ts 2/2 ❯ tests/volumeUnitToMl.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 340 passed | 7 skipped (434) Tests 4816 passed | 310 skipped (5164) Start at 11:46:07 Duration 12.78s stdout | tests/switchContextCookie.test.ts [2026-09-30T11:46:20.737Z] [INFO] UserProfileRoutes UPLOADS_DIR: /build/source/SparkyFitnessServer/uploads/avatars ✓ tests/volumeUnitToMl.test.ts (8 tests) 7ms ✓ tests/switchContextCookie.test.ts (2 tests) 32ms ✓ tests/chatbotToolUnitConversion.test.ts (18 tests) 10ms ✓ tests/openFoodFactsPhoto.test.ts (9 tests) 20ms ✓ tests/exerciseEntryRoutes.duplicateCheck.test.ts (2 tests) 41ms ✓ tests/dashboardLayoutRepository.test.ts (5 tests) 11ms ✓ tests/appDbPasswordReachesPool.test.ts (2 tests) 43ms ❯ tests/appDbPasswordReachesPool.test.ts 2/2 ❯ tests/caffeineKineticsMidnight.test.ts [queued] ❯ tests/chatbotToolsAsk.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/chatbotToolUnitConversion.test.ts 18/18 ❯ tests/chatService.test.ts 60/60 ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts [queued] ❯ tests/cycleRepository.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts 5/5 ❯ tests/dropSetCalculator.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 39/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts 2/2 ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/externalProviderSchemas.test.ts 0/7 ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDefaultVariantQueries.test.ts [queued] ❯ tests/foodEntryTime.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts [queued] ❯ tests/garminMeasurementMapping.test.ts [queued] ❯ tests/globalSettingsFailClosed.test.ts [queued] ❯ tests/glp1Service.test.ts 0/5 ❯ tests/goalModePercentageSignMigration.test.ts 0/5 ❯ tests/googleHealthParsers.test.ts [queued] ❯ tests/imageOrder.test.ts [queued] ❯ tests/mcpRoutes.test.ts [queued] ❯ tests/mealTypeDefaultTime.test.ts [queued] ❯ tests/measurementService.categoryDisplayName.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/openFoodFactsAutomaticSyncDatabaseSchemas.test.ts 6/6 ❯ tests/openFoodFactsPhoto.test.ts 9/9 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts [queued] ❯ tests/poolContext.test.ts [queued] ❯ tests/reportRepository.downsample.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts [queued] ❯ tests/switchContextCookie.test.ts 2/2 ❯ tests/updateFoodBarcode.test.ts [queued] ❯ tests/userRepositoryCredentialAccountId.test.ts 2/2 ❯ tests/volumeUnitToMl.test.ts 8/8 ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts [queued] Test Files 347 passed | 7 skipped (434) Tests 4862 passed | 310 skipped (5227) Start at 11:46:07 Duration 12.99s ✓ tests/goalModePercentageSignMigration.test.ts (5 tests) 6ms ✓ tests/glp1Service.test.ts (5 tests) 11ms ✓ tests/externalProviderSchemas.test.ts (7 tests) 10ms stdout | tests/customNutrientDeleteCleanup.test.ts > customNutrientService.deleteCustomNutrient — supplement JSONB cleanup > scrubs medications.nutrients (always) and medication_entries snapshots (history purge) when deleteAllHistory is true [2026-09-30T11:46:20.941Z] [INFO] Deleting custom nutrient "Boron" for user c65e84ac-1f4a-46bf-b129-654429b76011. Delete history: true ✓ tests/workoutFeedbackForm.test.ts (5 tests) 6ms ✓ tests/measurementService.categoryDisplayName.test.ts (4 tests) 5ms ✓ tests/caffeineKineticsMidnight.test.ts (3 tests) 22ms ✓ tests/dropSetCalculator.test.ts (9 tests) 6ms stdout | tests/customNutrientDeleteCleanup.test.ts > customNutrientService.deleteCustomNutrient — supplement JSONB cleanup > scrubs medications.nutrients (always) and medication_entries snapshots (history purge) when deleteAllHistory is true [2026-09-30T11:46:20.999Z] [INFO] Cleaning up historical data for nutrient "Boron" for user c65e84ac-1f4a-46bf-b129-654429b76011 stdout | tests/customNutrientDeleteCleanup.test.ts > customNutrientService.deleteCustomNutrient — supplement JSONB cleanup > scrubs medications.nutrients (always) and medication_entries snapshots (history purge) when deleteAllHistory is true [2026-09-30T11:46:20.999Z] [INFO] Successfully deleted custom nutrient "Boron" and performed cascading cleanup for user c65e84ac-1f4a-46bf-b129-654429b76011 stdout | tests/customNutrientDeleteCleanup.test.ts > customNutrientService.deleteCustomNutrient — supplement JSONB cleanup > scrubs the medication definitions but NOT the immutable snapshots when deleteAllHistory is false [2026-09-30T11:46:21.001Z] [INFO] Deleting custom nutrient "Boron" for user c65e84ac-1f4a-46bf-b129-654429b76011. Delete history: false ❯ tests/appDbPasswordReachesPool.test.ts 2/2 ❯ tests/backupService.test.ts [queued] ❯ tests/caffeineKineticsMidnight.test.ts 3/3 ❯ tests/chatbotToolsAsk.test.ts 1/11 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts [queued] ❯ tests/corosSync.test.ts [queued] ❯ tests/customNutrientDeleteCleanup.test.ts 1/2 ❯ tests/cycleRepository.test.ts [queued] ❯ tests/dashboardLayoutRepository.test.ts 5/5 ❯ tests/dropSetCalculator.test.ts 9/9 ❯ tests/exerciseEntriesApiSchemas.test.ts 39/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts [queued] ❯ tests/exerciseEntryRoutes.duplicateCheck.test.ts 2/2 ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/externalProviderSchemas.test.ts 7/7 ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDefaultVariantQueries.test.ts [queued] ❯ tests/foodEntryTime.test.ts [queued] ❯ tests/foodEntryUnitReconcile.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts 0/8 ❯ tests/garminMeasurementMapping.test.ts [queued] ❯ tests/globalSettingsFailClosed.test.ts [queued] ❯ tests/glp1Service.test.ts 5/5 ❯ tests/goalModePercentageSignMigration.test.ts 5/5 ❯ tests/googleHealthParsers.test.ts [queued] ❯ tests/imageOrder.test.ts [queued] ❯ tests/mcpRoutes.test.ts 0/24 ❯ tests/mealTypeDefaultTime.test.ts 0/2 ❯ tests/measurementService.categoryDisplayName.test.ts 4/4 ❯ tests/measurementService.zeroValueFiltering.test.ts [queued] ❯ tests/nutrientGoalPreferenceRepository.test.ts [queued] ❯ tests/openFoodFactsPhoto.test.ts 9/9 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts [queued] ❯ tests/poolContext.test.ts [queued] ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/reportRepository.downsample.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts [queued] ❯ tests/updateFoodBarcode.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts 5/5 Test Files 354 passed | 7 skipped (434) Tests 4902 passed | 310 skipped (5295) Start at 11:46:07 Duration 13.09s ✓ tests/chatbotToolsAsk.test.ts (11 tests) 11ms stdout | tests/mealTypeDefaultTime.test.ts > mealTypeRepository default_time tests > updateMealType default_time > should upsert default_time in user_meal_visibilities when provided [2026-09-30T11:46:21.044Z] [INFO] updateMealType in mealType.js: id: 73a83a80-5dfb-440a-ba42-3b68d8e10ed8, data: {"default_time":"11:30"} stdout | tests/mealTypeDefaultTime.test.ts > mealTypeRepository default_time tests > updateMealType default_time > should support clearing default_time by passing null [2026-09-30T11:46:21.046Z] [INFO] updateMealType in mealType.js: id: 5c2d5f4b-ffef-4cb7-92e4-1fc8b98047cd, data: {"default_time":null} ✓ tests/foodUpdateSnapshotRoute.test.ts (8 tests) 58ms ✓ tests/mealTypeDefaultTime.test.ts (2 tests) 6ms stdout | tests/outboundHttp.test.ts > configureOutboundHttp > widens the per-family connect attempt timeout and sets a request timeout [2026-09-30T11:46:21.067Z] [INFO] Outbound HTTP defaults: 30000ms request timeout, 5000ms per address-family connect attempt. stdout | tests/customNutrientDeleteCleanup.test.ts > customNutrientService.deleteCustomNutrient — supplement JSONB cleanup > scrubs the medication definitions but NOT the immutable snapshots when deleteAllHistory is false [2026-09-30T11:46:21.042Z] [INFO] Successfully deleted custom nutrient "Boron" and performed cascading cleanup for user c65e84ac-1f4a-46bf-b129-654429b76011 ✓ tests/outboundHttp.test.ts (5 tests) 7ms ✓ tests/updateFoodBarcode.test.ts (5 tests) 7ms ✓ tests/customNutrientDeleteCleanup.test.ts (2 tests) 105ms stdout | tests/foodEntryTime.test.ts > foodEntryRepository time-of-day tests > createFoodEntry > should include entry_time parameter in INSERT statement [2026-09-30T11:46:21.067Z] [INFO] createFoodEntry in foodEntry.js: entryData: {"user_id":"bb12c0e6-a42c-49ab-9147-be886b1029b4","food_id":"44e24d52-e209-45a5-89d9-7ee0e4d5cfb5","meal_type_id":"1db8751e-08c1-40f2-b95a-83dd6a0e32bc","quantity":1,"unit":"g","entry_date":"2026-07-10","entry_time":"12:30"}, createdByUserId: bb12c0e6-a42c-49ab-9147-be886b1029b4 ✓ tests/foodEntryTime.test.ts (2 tests) 8ms ✓ tests/measurementService.zeroValueFiltering.test.ts (3 tests) 9ms ✓ tests/corosSync.test.ts (3 tests) 20ms ✓ tests/setsDurationMinutes.test.ts (13 tests) 7ms ❯ tests/backupService.test.ts [queued] ❯ tests/caffeineKineticsMidnight.test.ts 3/3 ❯ tests/chatbotToolsAsk.test.ts 11/11 ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts 0/8 ❯ tests/chatbotToolsWizard.test.ts [queued] ❯ tests/corosSync.test.ts 3/3 ❯ tests/customNutrientDeleteCleanup.test.ts 2/2 ❯ tests/cycleRepository.test.ts [queued] ❯ tests/dateColumnParser.test.ts [queued] ❯ tests/dropSetCalculator.test.ts 9/9 ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 40/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts 1/2 ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/externalProviderSchemas.test.ts 7/7 ❯ tests/favoritesRoutes.test.ts [queued] ❯ tests/foodDefaultVariantQueries.test.ts [queued] ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntryTime.test.ts 2/2 ❯ tests/foodEntryUnitReconcile.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/foodUpdateSnapshotRoute.test.ts 8/8 ❯ tests/garminMeasurementMapping.test.ts [queued] ❯ tests/globalSettingsFailClosed.test.ts [queued] ❯ tests/googleHealthParsers.test.ts [queued] ❯ tests/imageOrder.test.ts [queued] ❯ tests/mcpRoutes.test.ts 1/24 ❯ tests/mealTypeDefaultTime.test.ts 2/2 ❯ tests/measurementService.categoryDisplayName.test.ts 4/4 ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/measurementService.zeroValueFiltering.test.ts 3/3 ❯ tests/nutrientGoalPreferenceRepository.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/outboundHttp.test.ts 5/5 ❯ tests/poolContext.test.ts [queued] ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/reportRepository.downsample.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts 13/13 ❯ tests/updateFoodBarcode.test.ts 5/5 ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutFeedbackForm.test.ts 5/5 Test Files 364 passed | 7 skipped (434) Tests 4957 passed | 310 skipped (5336) Start at 11:46:07 Duration 13.19s ✓ tests/exerciseEntry.sourcePreservation.test.ts (2 tests) 5ms ✓ tests/chatbotToolsHabits.test.ts (8 tests) 10ms ✓ tests/reportRepository.downsample.test.ts (2 tests) 6ms ✓ tests/favoritesRoutes.test.ts (5 tests) 26ms ✓ tests/foodDefaultVariantQueries.test.ts (4 tests) 8ms ✓ tests/imageOrder.test.ts (8 tests) 7ms ❯ tests/backupRescheduling.test.ts [queued] ❯ tests/backupScheduler.test.ts [queued] ❯ tests/backupService.test.ts [queued] ❯ tests/bodyCompositionService.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsHabits.test.ts 8/8 ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/chatbotToolsWizard.test.ts [queued] ❯ tests/corosSync.test.ts 3/3 ❯ tests/cycleRepository.test.ts [queued] ❯ tests/dateColumnParser.test.ts [queued] ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 40/45 ❯ tests/exerciseEntry.sourcePreservation.test.ts 2/2 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts [queued] ❯ tests/favoritesRoutes.test.ts 5/5 ❯ tests/foodDefaultVariantQueries.test.ts 4/4 ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntryUnitReconcile.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/garminMeasurementMapping.test.ts [queued] ❯ tests/globalSettingsFailClosed.test.ts [queued] ❯ tests/googleHealthParsers.test.ts 1/16 ❯ tests/imageOrder.test.ts 8/8 ❯ tests/mcpRoutes.test.ts 1/24 ❯ tests/mealieService.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/moodTags.test.ts [queued] ❯ tests/nutrientGoalPreferenceRepository.test.ts [queued] ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 1/7 ❯ tests/poolContext.test.ts [queued] ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.downsample.test.ts 2/2 ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/setsDurationMinutes.test.ts 13/13 ❯ tests/twoFactorState.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutPresetService.ownership.test.ts [queued] Test Files 370 passed | 7 skipped (434) Tests 4986 passed | 310 skipped (5371) Start at 11:46:07 Duration 13.30s ✓ tests/googleHealthParsers.test.ts (16 tests) 6ms ✓ tests/exerciseEntryService.csvImport.test.ts (2 tests) 5ms ✓ tests/garminMeasurementMapping.test.ts (5 tests) 8ms ✓ tests/globalSettingsFailClosed.test.ts (11 tests) 9ms ✓ tests/poolContext.test.ts (6 tests) 7ms ❯ tests/announcementService.test.ts [queued] ❯ tests/backupRescheduling.test.ts [queued] ❯ tests/backupScheduler.test.ts [queued] ❯ tests/backupService.test.ts 0/4 ❯ tests/bodyCompositionService.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/chatbotToolsWizard.test.ts [queued] ❯ tests/cycleRepository.test.ts 0/4 ❯ tests/dateColumnParser.test.ts [queued] ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 40/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/exerciseEntryService.csvImport.test.ts 2/2 ❯ tests/foodDefaultVariantQueries.test.ts 4/4 ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntryUnitReconcile.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/garminMeasurementMapping.test.ts 5/5 ❯ tests/globalSettingsFailClosed.test.ts 11/11 ❯ tests/googleHealthParsers.test.ts 16/16 ❯ tests/imageOrder.test.ts 8/8 ❯ tests/mcpRoutes.test.ts 11/24 ❯ tests/mealieService.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/moodTags.test.ts [queued] ❯ tests/nutrientGoalPreferenceRepository.test.ts 1/2 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/poolContext.test.ts 6/6 ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceRepository.openFoodFacts.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts 0/6 ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/twoFactorState.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutPresetSearch.test.ts [queued] ❯ tests/workoutPresetService.ownership.test.ts [queued] Test Files 375 passed | 7 skipped (434) Tests 5037 passed | 310 skipped (5411) Start at 11:46:07 Duration 13.51s ✓ tests/nutrientGoalPreferenceRepository.test.ts (2 tests) 5ms stdout | tests/backupService.test.ts > executeCommand runs argv without a shell > passes a metacharacter-laden value as a single literal argument [2026-09-30T11:46:21.396Z] [INFO] Command successful: /nix/store/z5piarlh57mjwr4c9w318ay97sxr6c9m-nodejs-slim-24.20.0/bin/node -e process.stdout.write(process.argv.slice(1).join("|")) harmless; echo INJECTED x ✓ tests/cycleRepository.test.ts (4 tests) 5ms ✓ tests/resolveMealTypeIdWithClient.test.ts (6 tests) 7ms ✓ tests/dateColumnParser.test.ts (5 tests) 5ms stdout | tests/backupService.test.ts > executeCommand runs argv without a shell > does not evaluate $(...) or backtick command substitution [2026-09-30T11:46:21.440Z] [INFO] Command successful: /nix/store/z5piarlh57mjwr4c9w318ay97sxr6c9m-nodejs-slim-24.20.0/bin/node -e process.stdout.write(process.argv.slice(1).join("|")) $(id) `id` ✓ tests/backupService.test.ts (4 tests) 84ms ✓ tests/chatbotToolsWizard.test.ts (9 tests) 10ms ❯ tests/announcementService.test.ts [queued] ❯ tests/backupRescheduling.test.ts [queued] ❯ tests/backupScheduler.test.ts 1/9 ❯ tests/bodyCompositionService.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsFavorites.test.ts 0/9 ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/cycleRepository.test.ts 4/4 ❯ tests/dateColumnParser.test.ts 5/5 ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryUnitReconcile.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodSorting.test.ts [queued] ❯ tests/garminSyncResult.test.ts [queued] ❯ tests/globalSettingsFailClosed.test.ts 11/11 ❯ tests/mcpRoutes.test.ts 12/24 ❯ tests/mealieService.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/mockDataContext.test.ts [queued] ❯ tests/moodTags.test.ts [queued] ❯ tests/nutrientGoalPreferenceRepository.test.ts 2/2 ❯ tests/openFoodFactsSyncSettingsRoutes.test.ts 0/3 ❯ tests/ouraService.test.ts 2/7 ❯ tests/poolContext.test.ts 6/6 ❯ tests/poolIdleErrors.test.ts [queued] ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceRepository.openFoodFacts.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveMealTypeIdWithClient.test.ts 6/6 ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/twoFactorState.test.ts 0/3 ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts [queued] ❯ tests/workoutPresetSearch.test.ts [queued] ❯ tests/workoutPresetService.ownership.test.ts [queued] Test Files 381 passed | 7 skipped (434) Tests 5069 passed | 310 skipped (5449) Start at 11:46:07 Duration 13.64s ✓ tests/backupScheduler.test.ts (9 tests) 6ms ✓ tests/chatbotToolsFavorites.test.ts (9 tests) 13ms ✓ tests/twoFactorState.test.ts (3 tests) 6ms ✓ tests/backupRescheduling.test.ts (2 tests) 5ms ✓ tests/workoutPresetService.ownership.test.ts (2 tests) 4ms ✓ tests/openFoodFactsSyncSettingsRoutes.test.ts (3 tests) 40ms ✓ tests/mcpRoutes.test.ts (24 tests) 639ms ✓ POST /mcp (16) ✓ accepts bodies over 1mb (for photo/image tools) and rejects bodies over 50mb with 413 396ms stdout | tests/bodyCompositionService.test.ts > bodyCompositionService > calculateBodyFatNavy > calculates correct body fat for males using Metric inputs (converted from bug report) [2026-09-30T11:46:21.582Z] [INFO] Calculating body fat with Navy method for male stdout | tests/bodyCompositionService.test.ts > bodyCompositionService > calculateBodyFatNavy > calculates correct body fat for females (standard values) [2026-09-30T11:46:21.584Z] [INFO] Calculating body fat with Navy method for female stdout | tests/bodyCompositionService.test.ts > bodyCompositionService > calculateBodyFatNavy > throws error for missing measurements [2026-09-30T11:46:21.586Z] [INFO] Calculating body fat with Navy method for male [2026-09-30T11:46:21.586Z] [INFO] Calculating body fat with Navy method for female ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/healthConnectTotalCaloriesCaptureMigration.test.ts 0/2 ❯ tests/mealieService.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/mockDataContext.test.ts 0/4 ❯ tests/moodTags.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/poolIdleErrors.test.ts 0/2 ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/truncationPagination.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts 0/3 Test Files 394 passed | 7 skipped (434) Tests 5126 passed | 310 skipped (5482) Start at 11:46:07 Duration 13.74s stderr | tests/foodSorting.test.ts > food database sorting > should fallback to default sort for invalid sortBy [2026-09-30T11:46:21.590Z] [WARN] Invalid sortBy parameter received: invalid:field. Using default sort. ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/healthConnectTotalCaloriesCaptureMigration.test.ts 0/2 ❯ tests/mealieService.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/mockDataContext.test.ts 0/4 ❯ tests/moodTags.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/poolIdleErrors.test.ts 0/2 ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/truncationPagination.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts 0/3 Test Files 394 passed | 7 skipped (434) Tests 5126 passed | 310 skipped (5482) Start at 11:46:07 Duration 13.74s ✓ tests/bodyCompositionService.test.ts (3 tests) 7ms ✓ tests/garminSyncResult.test.ts (3 tests) 5ms ✓ tests/foodSorting.test.ts (3 tests) 9ms ✓ tests/foodEntryUnitReconcile.test.ts (7 tests) 6ms ✓ tests/workoutPresetSearch.test.ts (1 test) 8ms ✓ tests/preferenceRepository.openFoodFacts.test.ts (1 test) 5ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseActiveCalories.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntryCopyFingerprint.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/healthConnectTotalCaloriesCaptureMigration.test.ts 0/2 ❯ tests/mealieService.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/mockDataContext.test.ts 0/4 ❯ tests/moodTags.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/poolIdleErrors.test.ts 0/2 ❯ tests/preferenceChartScaleMode.test.ts [queued] ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/reportSupplementScaling.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/truncationPagination.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts [queued] ❯ tests/workoutDaysRoute.test.ts 0/3 Test Files 394 passed | 7 skipped (434) Tests 5126 passed | 310 skipped (5482) Start at 11:46:07 Duration 13.74s ✓ tests/mockDataContext.test.ts (4 tests) 9ms ✓ tests/poolIdleErrors.test.ts (2 tests) 8ms ✓ tests/healthConnectTotalCaloriesCaptureMigration.test.ts (2 tests) 6ms ✓ tests/reportSupplementScaling.test.ts (1 test) 5ms ✓ tests/truncationPagination.test.ts (1 test) 4ms ✓ tests/mealieService.test.ts (2 tests) 6ms ✓ tests/workoutDaysRoute.test.ts (3 tests) 46ms ✓ tests/foodEntryCopyFingerprint.test.ts (7 tests) 5ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts 0/3 ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/moodTags.test.ts 1/5 ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts 0/2 Test Files 404 passed | 7 skipped (434) Tests 5157 passed | 310 skipped (5511) Start at 11:46:07 Duration 13.84s stderr | tests/preferenceChartScaleMode.test.ts > chart scale mode preference validation > rejects an unknown mode [2026-09-30T11:46:21.695Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid chart_scale_mode: 'logarithmic'. Must be one of: time, point. at validateChartScaleMode (/build/source/SparkyFitnessServer/services/preferenceService.ts:151:7) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:182:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceChartScaleMode.test.ts:28:5 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceChartScaleMode.test.ts > chart scale mode preference validation > rejects non-string values instead of coercing them [2026-09-30T11:46:21.700Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid chart_scale_mode: '1'. Must be one of: time, point. at validateChartScaleMode (/build/source/SparkyFitnessServer/services/preferenceService.ts:151:7) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:182:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceChartScaleMode.test.ts:36:5 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceChartScaleMode.test.ts > chart scale mode preference validation > validates the upsert path too [2026-09-30T11:46:21.702Z] [ERROR] Error upserting preferences for user user-1: Error: Invalid chart_scale_mode: 'sideways'. Must be one of: time, point. at validateChartScaleMode (/build/source/SparkyFitnessServer/services/preferenceService.ts:151:7) at Object.upsertUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:287:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceChartScaleMode.test.ts:55:5 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts 0/3 ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/moodTags.test.ts 1/5 ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts 0/2 Test Files 404 passed | 7 skipped (434) Tests 5157 passed | 310 skipped (5511) Start at 11:46:07 Duration 13.84s ✓ tests/preferenceChartScaleMode.test.ts (6 tests) 31ms ✓ tests/exerciseActiveCalories.test.ts (2 tests) 7ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/announcementService.test.ts 0/3 ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/chatbotToolsMeta.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/exerciseEntryGarminCleanup.test.ts [queued] ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts [queued] ❯ tests/foodFavoritesQuery.test.ts [queued] ❯ tests/foodFavoritesService.test.ts [queued] ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/measurementService.checkInDelete.test.ts [queued] ❯ tests/moodTags.test.ts 1/5 ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts [queued] ❯ tests/reportRepository.getExerciseEntries.test.ts [queued] ❯ tests/resolveTemplateStartDay.test.ts [queued] ❯ tests/usdaAlcohol.test.ts [queued] ❯ tests/usdaService.test.ts 0/2 Test Files 404 passed | 7 skipped (434) Tests 5157 passed | 310 skipped (5511) Start at 11:46:07 Duration 13.84s ✓ tests/moodTags.test.ts (5 tests) 6ms ✓ tests/usdaService.test.ts (2 tests) 35ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s stderr | tests/announcementService.test.ts > announcementService > should return local fallback announcement when offline or fetching [2026-09-30T11:46:21.744Z] [WARN] [ANNOUNCEMENT] Axios fetch failed, trying direct HTTPS fallback: AxiosError: getaddrinfo EAI_AGAIN raw.githubusercontent.com at AxiosError.from (file:///build/source/node_modules/.pnpm/axios@1.20.0/node_modules/axios/lib/core/AxiosError.js:108:24) at RedirectableRequest.handleRequestError (file:///build/source/node_modules/.pnpm/axios@1.20.0/node_modules/axios/lib/adapters/http.js:1340:27) at RedirectableRequest.emit (node:events:526:24) at ClientRequest.eventHandlers. (/build/source/node_modules/.pnpm/follow-redirects@1.16.0/node_modules/follow-redirects/index.js:56:24) at ClientRequest.emit (node:events:514:28) at emitErrorEvent (node:_http_client:114:11) at TLSSocket.socketErrorListener (node:_http_client:766:5) at TLSSocket.emit (node:events:526:24) at emitErrorNT (node:internal/streams/destroy:170:8) at emitErrorCloseNT (node:internal/streams/destroy:129:3) at Axios.request (file:///build/source/node_modules/.pnpm/axios@1.20.0/node_modules/axios/lib/core/Axios.js:48:43) at processTicksAndRejections (node:internal/process/task_queues:104:5) at Object.getLatestAnnouncement (/build/source/SparkyFitnessServer/services/announcementService.ts:172:17) at /build/source/SparkyFitnessServer/tests/announcementService.test.ts:47:20 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { isAxiosError: true, code: 'EAI_AGAIN', config: [Object: null prototype] { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false, legacyInterceptorReqResOrdering: true, advertiseZstdAcceptEncoding: false, validateStatusUndefinedResolves: true }, adapter: [ 'xhr', 'http', 'fetch' ], transformRequest: [ [Function: transformRequest] ], transformResponse: [ [Function: transformResponse] ], timeout: 5000, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: [Function], Blob: [class Blob] }, validateStatus: [Function: validateStatus], headers: Object [AxiosHeaders] { Accept: 'application/json, text/plain, */*', 'Content-Type': undefined, 'User-Agent': 'SparkyFitness-App', 'Accept-Encoding': 'gzip, compress, deflate, br' }, method: 'get', url: 'https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/main/announcement.md', allowAbsoluteUrls: true, data: undefined }, request: Writable { _events: { close: undefined, error: [Function: handleRequestError], prefinish: undefined, finish: undefined, drain: undefined, response: [Function: handleResponse], socket: [Array], timeout: undefined, abort: undefined }, _writableState: WritableState { highWaterMark: 65536, length: 0, corked: 0, onwrite: [Function (anonymous)], writelen: 0, bufferedIndex: 0, pendingcb: 0, Symbol(kState): 17581054, Symbol(kBufferedValue): null, Symbol(kErroredValue): [Error] }, _maxListeners: undefined, _options: { maxRedirects: 21, maxBodyLength: Infinity, protocol: 'https:', path: '/CodeWithCJ/SparkyFitness/main/announcement.md', method: 'GET', headers: [Object: null prototype], agents: [Object], auth: undefined, family: undefined, beforeRedirect: [Function: dispatchBeforeRedirect], beforeRedirects: [Object: null prototype], http2Options: undefined, createConnection: undefined, hostname: 'raw.githubusercontent.com', port: '', agent: undefined, sensitiveHeaders: [], insecureHTTPParser: false, nativeProtocols: [Object], pathname: '/CodeWithCJ/SparkyFitness/main/announcement.md' }, _ended: true, _ending: true, _redirectCount: 0, _redirects: [], _requestBodyLength: 0, _requestBodyBuffers: [], _eventsCount: 3, _onNativeResponse: [Function (anonymous)], _headerFilter: /^(?:Authorization|Proxy-Authorization|Cookie)$/i, _currentRequest: ClientRequest { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, destroyed: true, _last: true, chunkedEncoding: false, shouldKeepAlive: true, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, _header: 'GET /CodeWithCJ/SparkyFitness/main/announcement.md HTTP/1.1\r\n' + 'Accept: application/json, text/plain, */*\r\n' + 'User-Agent: SparkyFitness-App\r\n' + 'Accept-Encoding: gzip, compress, deflate, br\r\n' + 'Host: raw.githubusercontent.com\r\n' + 'Connection: keep-alive\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'GET', maxHeaderSize: undefined, insecureHTTPParser: false, httpValidation: undefined, joinDuplicateHeaders: undefined, _ended: false, res: null, aborted: false, timeoutCb: [Function: emitRequestTimeout], upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: 'raw.githubusercontent.com', protocol: 'https:', _redirectable: [Circular *1], Symbol(shapeMode): false, Symbol(kCapture): false, Symbol(kBytesWritten): 0, Symbol(kNeedDrain): false, Symbol(corked): 0, Symbol(kChunkedBuffer): [], Symbol(kChunkedLength): 0, Symbol(kSocket): [TLSSocket], Symbol(kOutHeaders): [Object: null prototype], Symbol(errored): null, Symbol(kWritableFinished): false, Symbol(kEndCallbacks): null, Symbol(kFlushError): null, Symbol(kHighWaterMark): 65536, Symbol(kRejectNonStandardBodyWrites): false, Symbol(kPath): '/CodeWithCJ/SparkyFitness/main/announcement.md', Symbol(kProxyRewrittenToAbsolute): false, Symbol(kAuthority): 'raw.githubusercontent.com', Symbol(kUniqueHeaders): null, Symbol(kError): [Error] }, _currentUrl: 'https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/main/announcement.md', _timeout: null, Symbol(shapeMode): true, Symbol(kCapture): false }, [cause]: Error: getaddrinfo EAI_AGAIN raw.githubusercontent.com at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:122:26) { errno: -3001, code: 'EAI_AGAIN', syscall: 'getaddrinfo', hostname: 'raw.githubusercontent.com' } } ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s stdout | tests/announcementService.test.ts > announcementService > should return local fallback announcement when offline or fetching [2026-09-30T11:46:21.751Z] [INFO] [ANNOUNCEMENT] GitHub fetch skipped/failed, using local announcement.md fallback ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s stderr | tests/announcementService.test.ts > announcementService > should return local fallback announcement when offline or fetching [2026-09-30T11:46:21.751Z] [WARN] [ANNOUNCEMENT] Direct fetch failed: Error: getaddrinfo EAI_AGAIN raw.githubusercontent.com at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:122:26) { errno: -3001, code: 'EAI_AGAIN', syscall: 'getaddrinfo', hostname: 'raw.githubusercontent.com' } ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s ✓ tests/announcementService.test.ts (3 tests) 38ms ✓ tests/foodFavoritesQuery.test.ts (2 tests) 3ms ✓ tests/exerciseEntryGarminCleanup.test.ts (1 test) 3ms ✓ tests/resolveTemplateStartDay.test.ts (4 tests) 20ms ✓ tests/reportRepository.getExerciseEntries.test.ts (1 test) 4ms ✓ tests/foodFavoritesService.test.ts (3 tests) 6ms ✓ tests/chatbotToolsMeta.test.ts (5 tests) 7ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s stderr | tests/measurementService.checkInDelete.test.ts > Measurement Service - Check-In Delete > deleteCheckInMeasurements > throws not-found when the row does not exist or is not owned [2026-09-30T11:46:21.831Z] [ERROR] Error deleting check-in measurements non-existent-entry by test-user-id: Error: Check-in measurement not found. at Object.deleteCheckInMeasurements (/build/source/SparkyFitnessServer/services/measurementService.ts:1147:13) at processTicksAndRejections (node:internal/process/task_queues:104:5) ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s ✓ tests/measurementService.checkInDelete.test.ts (2 tests) 9ms ❯ tests/alcoholNeverAddsCalories.test.ts [queued] ❯ tests/bmrService.test.ts [queued] ❯ tests/calorieCalculations.test.ts [queued] ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 41/45 ❯ tests/findFoodByBarcode.test.ts [queued] ❯ tests/foodEntrySelectedCopySchema.test.ts [queued] ❯ tests/foodEntryWholeCopySchema.test.ts 0/7 ❯ tests/foodUtilsNutritionScale.test.ts [queued] ❯ tests/mealSearch.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 ❯ tests/preferenceSafetyFloor.test.ts 0/7 ❯ tests/usdaAlcohol.test.ts [queued] Test Files 414 passed | 7 skipped (434) Tests 5184 passed | 310 skipped (5543) Start at 11:46:07 Duration 13.94s stderr | tests/preferenceSafetyFloor.test.ts > calorie safety floor preference validation > rejects an unknown mode [2026-09-30T11:46:21.842Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid calorie_safety_floor_mode: 'sometimes'. Must be one of: standard, custom, disabled. at validateCalorieSafetyFloor (/build/source/SparkyFitnessServer/services/preferenceService.ts:118:7) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:181:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceSafetyFloor.test.ts:28:5 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceSafetyFloor.test.ts > calorie safety floor preference validation > rejects invalid custom floor value 799 [2026-09-30T11:46:21.847Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid calorie_safety_floor_value: '799'. Must be an integer between 800 and 5000. at validateCalorieSafetyFloor (/build/source/SparkyFitnessServer/services/preferenceService.ts:133:9) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:181:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceSafetyFloor.test.ts:38:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceSafetyFloor.test.ts > calorie safety floor preference validation > rejects invalid custom floor value 5001 [2026-09-30T11:46:21.848Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid calorie_safety_floor_value: '5001'. Must be an integer between 800 and 5000. at validateCalorieSafetyFloor (/build/source/SparkyFitnessServer/services/preferenceService.ts:133:9) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:181:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceSafetyFloor.test.ts:38:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceSafetyFloor.test.ts > calorie safety floor preference validation > rejects invalid custom floor value 1200.5 [2026-09-30T11:46:21.848Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid calorie_safety_floor_value: '1200.5'. Must be an integer between 800 and 5000. at validateCalorieSafetyFloor (/build/source/SparkyFitnessServer/services/preferenceService.ts:133:9) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:181:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceSafetyFloor.test.ts:38:7 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } stderr | tests/preferenceSafetyFloor.test.ts > calorie safety floor preference validation > rejects non-number values instead of coercing them [2026-09-30T11:46:21.849Z] [ERROR] Error updating preferences for user user-1 by user-1: Error: Invalid calorie_safety_floor_value: 'true'. Must be an integer between 800 and 5000. at validateCalorieSafetyFloor (/build/source/SparkyFitnessServer/services/preferenceService.ts:133:9) at Object.updateUserPreferences (/build/source/SparkyFitnessServer/services/preferenceService.ts:181:11) at processTicksAndRejections (node:internal/process/task_queues:104:5) at /build/source/SparkyFitnessServer/tests/preferenceSafetyFloor.test.ts:47:5 at file:///build/source/node_modules/.pnpm/vitest@5.0.0_@opentelemetry+api@1.9.1_@types+node@25.9.6_@vitest+coverage-v8@5.0.0_jsdo_b4998df7729176685ba14a81aaa25376/node_modules/vitest/dist/chunks/run.CQOUYP-x.js:2783:20 { status: 400 } ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 42/45 ❯ tests/ouraService.test.ts 2/7 Test Files 424 passed | 7 skipped (434) Tests 5216 passed | 310 skipped (5560) Start at 11:46:07 Duration 14.04s ✓ tests/preferenceSafetyFloor.test.ts (7 tests) 24ms ✓ tests/foodEntryWholeCopySchema.test.ts (7 tests) 6ms ✓ tests/foodEntrySelectedCopySchema.test.ts (7 tests) 6ms ✓ tests/calorieCalculations.test.ts (3 tests) 4ms ✓ tests/usdaAlcohol.test.ts (1 test) 3ms ✓ tests/alcoholNeverAddsCalories.test.ts (1 test) 2ms ✓ tests/bmrService.test.ts (2 tests) 3ms ✓ tests/mealSearch.test.ts (1 test) 5ms ✓ tests/foodUtilsNutritionScale.test.ts (1 test) 3ms ✓ tests/findFoodByBarcode.test.ts (1 test) 3ms ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 42/45 ❯ tests/ouraService.test.ts 2/7 Test Files 424 passed | 7 skipped (434) Tests 5216 passed | 310 skipped (5560) Start at 11:46:07 Duration 14.04s ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 43/45 ❯ tests/ouraService.test.ts 2/7 Test Files 424 passed | 7 skipped (434) Tests 5217 passed | 310 skipped (5560) Start at 11:46:07 Duration 14.24s ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 44/45 ❯ tests/ouraService.test.ts 2/7 Test Files 424 passed | 7 skipped (434) Tests 5218 passed | 310 skipped (5560) Start at 11:46:07 Duration 14.34s ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/exerciseEntriesApiSchemas.test.ts 45/45 ❯ tests/ouraService.test.ts 2/7 Test Files 424 passed | 7 skipped (434) Tests 5219 passed | 310 skipped (5560) Start at 11:46:07 Duration 14.74s ✓ tests/exerciseEntriesApiSchemas.test.ts (45 tests) 13713ms ✓ Exercise entry API schemas (45) ✓ exercise snapshot modality (3) ✓ accepts a null modality and a snapshot from a pre-modality server 374ms ✓ superset_group (5) ✓ accepts null and omitted superset_group on session exercises 420ms ✓ requires superset_group on entry responses 783ms ✓ set duration (integer seconds) (2) ✓ accepts integer and null set durations 504ms ✓ set RIR (reps in reserve) (2) ✓ accepts 0-10 and null 814ms ✓ rejects values outside 0-10 (numeric(3,1) column) 643ms ✓ session location (2) ✓ trims the location and stores blank as null 382ms ✓ set distance (km) (3) ✓ accepts fractional, null, and omitted set distances on requests 562ms ✓ accepts distance on set responses and tolerates pre-distance servers omitting it 461ms ✓ completed_at (3) ✓ accepts ISO, null, and omitted completed_at on set requests 626ms ✓ requires completed_at on set responses 650ms ✓ is_pr (2) ✓ accepts boolean and omitted is_pr on set requests 385ms ✓ requires is_pr on set responses 461ms ✓ accepts a UUID exerciseId filter and rejects non-UUID values 369ms ❯ tests/chatbotToolsCaching.test.ts [queued] ❯ tests/ouraService.test.ts 2/7 Test Files 425 passed | 7 skipped (434) Tests 5219 passed | 310 skipped (5560) Start at 11:46:07 Duration 15.14s ✓ tests/chatbotToolsCaching.test.ts (1 test) 7ms ❯ tests/ouraService.test.ts 3/7 Test Files 426 passed | 7 skipped (434) Tests 5221 passed | 310 skipped (5561) Start at 11:46:07 Duration 15.34s ❯ tests/ouraService.test.ts 3/7 Test Files 426 passed | 7 skipped (434) Tests 5221 passed | 310 skipped (5561) Start at 11:46:07 Duration 16.14s ❯ tests/ouraService.test.ts 3/7 Test Files 426 passed | 7 skipped (434) Tests 5221 passed | 310 skipped (5561) Start at 11:46:07 Duration 17.14s ❯ tests/ouraService.test.ts 4/7 Test Files 426 passed | 7 skipped (434) Tests 5222 passed | 310 skipped (5561) Start at 11:46:07 Duration 17.34s ❯ tests/ouraService.test.ts 5/7 Test Files 426 passed | 7 skipped (434) Tests 5223 passed | 310 skipped (5561) Start at 11:46:07 Duration 18.14s ❯ tests/ouraService.test.ts 5/7 Test Files 426 passed | 7 skipped (434) Tests 5223 passed | 310 skipped (5561) Start at 11:46:07 Duration 19.15s ❯ tests/ouraService.test.ts 6/7 Test Files 426 passed | 7 skipped (434) Tests 5224 passed | 310 skipped (5561) Start at 11:46:07 Duration 19.34s ✓ tests/ouraService.test.ts (7 tests) 10052ms ✓ syncOuraData sync windows (4) ✓ manual sync uses a 7-day lookback window 2021ms ✓ scheduled sync uses a yesterday-to-today window 2006ms ✓ custom date range is passed through and heart rate uses UTC datetimes 2006ms ✓ syncOuraData resilience and bookkeeping (3) ✓ continues processing other datasets when one fetch fails 2011ms ✓ updates last_sync_at after a successful sync 2003ms Test Files 427 passed | 7 skipped (434) Tests 5225 passed | 310 skipped (5561) Start at 11:46:07 Duration 19.45s (transform 62%, import 28%, tests 10%, worker 1%) Transform transforming modules took 349.21s · 62% of tracked time, re-done on every run persist transforms across runs with fsModuleCache: true learn more: https://vitest.dev/guide/improving-performance#caching-between-reruns checkPhase completed in 53 seconds Running phase: installPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3 shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/lightningcss-linux-arm64-gnu@1.33.0/node_modules/lightningcss-linux-arm64-gnu/lightningcss.linux-arm64-gnu.node shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/lightningcss-linux-x64-gnu@1.33.0/node_modules/lightningcss-linux-x64-gnu/lightningcss.linux-x64-gnu.node shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/@rolldown+binding-linux-x64-gnu@1.2.8/node_modules/@rolldown/binding-linux-x64-gnu/rolldown-binding.linux-x64-gnu.node shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/@rolldown+binding-linux-arm64-gnu@1.2.8/node_modules/@rolldown/binding-linux-arm64-gnu/rolldown-binding.linux-arm64-gnu.node shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/@esbuild+linux-arm64@0.28.1/node_modules/@esbuild/linux-arm64/bin/esbuild patchelf: cannot find section '.dynamic'. The input file is most likely statically linked shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/hermes-compiler@250829098.0.17/node_modules/hermes-compiler/hermesc/linux64-bin/hermesc patchelf: cannot find section '.dynamic'. The input file is most likely statically linked shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/@esbuild+linux-x64@0.28.1/node_modules/@esbuild/linux-x64/bin/esbuild patchelf: cannot find section '.dynamic'. The input file is most likely statically linked shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/fb-dotslash@0.5.8/node_modules/fb-dotslash/bin/linux-musl.x86_64/dotslash shrinking /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/node_modules/.pnpm/fb-dotslash@0.5.8/node_modules/fb-dotslash/bin/linux-musl.aarch64/dotslash patchelf: cannot find section '.dynamic'. The input file is most likely statically linked checking for references to /build/ in /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3... patchelf: cannot find section '.dynamic'. The input file is most likely statically linked patchelf: cannot find section '.dynamic'. The input file is most likely statically linked patchelf: cannot find section '.dynamic'. The input file is most likely statically linked patchelf: cannot find section '.dynamic'. The input file is most likely statically linked patching script interpreter paths in /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3 /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/shared/node_modules/.bin/ts-to-zod: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/shared/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/shared/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/nodemon: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/eslint: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/tsserver: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/tsc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/vitest: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/bcrypt: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/tsx: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/swagger-jsdoc: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/uuid: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/SparkyFitnessServer/node_modules/.bin/prettier: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/.husky/pre-commit: interpreter directive changed from "#!/bin/sh" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/sh" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/docker/docker-helper.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/nix/update-hashes.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/db_backup.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/start_garmin_microservice.sh: interpreter directive changed from "#!/bin/bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec/sparkyfitness/scripts/reset-dev.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash" stripping (with command strip and flags -S -p) in /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/libexec /nix/store/319b9mqwjx2g9vkf95w03qbhypgw5x6k-sparkyfitness-server-1.7.3/bin fixupPhase completed in 1 minutes 22 seconds