[
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.style.width\n// Only returns inline styles\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: getComputedStyle Instead of style**\n\n**Fix:**\n```javascript\ngetComputedStyle(element).width\n// Returns computed styles\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "getcomputedstyle_instead_of_style"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar el = document.getElementById('app');\nvar title = el.querySelector('.title');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: document.getElementById**\n\n**Fix:**\n```javascript\nconst title = document.querySelector('#app .title');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "document.getelementbyid"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar name = user.name;\nvar email = user.email;\nvar age = user.age;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Destructuring**\n\n**Fix:**\n```javascript\nconst { name, email, age } = user;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (let i = 0; i < items.length; i++) {\n  fetch(items[i].url).then(data => {\n    items[i] = data; // 'i' may have changed\n  });\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Stale closure in async callback**\n\n**Fix:**\n```javascript\nconst results = await Promise.all(\n  items.map(async (item, index) => {\n    const data = await fetch(item.url);\n    return data;\n  })\n);\nitems = results;\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "stale_closure_in_async_callback"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('mousedown', handleDown);\nelement.addEventListener('touchstart', handleDown);\n// Need both for cross-device\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Pointer Events**\n\n**Fix:**\n```javascript\nelement.addEventListener('pointerdown', handleDown);\n// Unified pointer events\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_pointer_events"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst name = user.name;\nconst email = user.email;\nconst rest = {};\nfor (const key of Object.keys(user)) {\n  if (key !== 'name' && key !== 'email') rest[key] = user[key];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Rest in Destructuring**\n\n**Fix:**\n```javascript\nconst { name, email, ...rest } = user;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_rest_in_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Webpack config missing sideEffects flag\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using tree shaking**\n\n**Fix:**\n```javascript\n// package.json\n{\n  \"sideEffects\": false\n}\n// Tells bundler all modules are pure - safe to tree-shake\n// Or list files with side effects:\n// \"sideEffects\": [\"*.css\", \"./src/polyfills.js\"]\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_tree_shaking"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = fn3(fn2(fn1(data)));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Compose**\n\n**Fix:**\n```javascript\nconst compose = (...fns) => x => fns.reduceRight((v, f) => f(v), x);\nconst result = compose(fn3, fn2, fn1)(data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_compose"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = eval(userInput);\n// Code injection\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: eval with User Input**\n\n**Fix:**\n```javascript\nconst result = JSON.parse(userInput);\n// Or use a proper parser\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "eval_with_user_input"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {};\nObject.defineProperty(obj, 'value', {\n  get: function() { return this._value; },\n  set: function(v) { this._value = v; notify(); }\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Proxy**\n\n**Fix:**\n```javascript\nconst handler = {\n  get: (target, prop) => target[prop],\n  set: (target, prop, value) => {\n    target[prop] = value;\n    notify();\n    return true;\n  }\n};\nconst proxy = new Proxy({}, handler);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_proxy"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction processData(hugeArray) {\n  // Heavy computation blocks UI\n  return hugeArray.map(x => expensiveCalc(x));\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Blocking the main thread**\n\n**Fix:**\n```javascript\n// Offload to Web Worker:\nconst worker = new Worker('calc-worker.js');\nworker.postMessage(hugeArray);\nworker.onmessage = (e) => {\n  const results = e.data;\n  // UI stays responsive\n};\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "blocking_the_main_thread"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar merged = {};\nfor (var key in obj1) merged[key] = obj1[key];\nfor (var key in obj2) merged[key] = obj2[key];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.assign**\n\n**Fix:**\n```javascript\nconst merged = Object.assign({}, obj1, obj2);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.assign"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction outer() {\n  var x = 1;\n  function inner() {\n    var y = 2;\n    function innermost() {\n      console.log(x, y);\n    }\n    return innermost;\n  }\n  return inner();\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Lexical Environment Chain**\n\n**Fix:**\n```javascript\nfunction outer() {\n  const x = 1;\n  return () => {\n    const y = 2;\n    return () => console.log(x, y);\n  };\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "lexical_environment_chain"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { fetch(); } catch (e) {\n  throw new Error('Network error');\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error.cause**\n\n**Fix:**\n```javascript\ntry { fetch(); } catch (cause) {\n  throw new Error('Network error', { cause });\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error.cause"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar name = user.name;\nvar email = user.email;\nvar age = user.age;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Destructuring**\n\n**Fix:**\n```javascript\nconst { name, email, age } = user;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction handle() {\n  logEvent('click'); // Promise returned but not awaited\n  return navigate('/next');\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Fire and forget promise**\n\n**Fix:**\n```javascript\n// If you don't need the result, still handle errors:\nlogEvent('click').catch(err => console.error('Log failed:', err));\nreturn navigate('/next');\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "fire_and_forget_promise"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction heavyComputation() {\n  for (let i = 0; i < 1000000; i++) {\n    process(i);\n  }\n}\n// Blocks main thread\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Web Worker**\n\n**Fix:**\n```javascript\n// Offload to Web Worker\nconst worker = new Worker('heavy.js');\nworker.postMessage(data);\nworker.onmessage = (e) => updateUI(e.data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_web_worker"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nexport const API_URL = 'https://api.com';\n// Could be reassigned\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Export Type**\n\n**Fix:**\n```javascript\nexport const API_URL: Readonly<string> = 'https://api.com';\n// TypeScript readonly\n// Or: Object.freeze()\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_export_type"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (value instanceof String) { ... }\n// Fails for primitive strings\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing typeof for Type Check**\n\n**Fix:**\n```javascript\nif (typeof value === 'string') { ... }\n// typeof works for primitives\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_typeof_for_type_check"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nsetInterval(function() {\n  checkForChanges();\n}, 100);\n// Polling\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: MutationObserver for DOM Changes**\n\n**Fix:**\n```javascript\nconst observer = new MutationObserver(mutations => {\n  mutations.forEach(mutation => handle(mutation));\n});\nobserver.observe(container, { childList: true, subtree: true });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "mutationobserver_for_dom_changes"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n.primary { color: #333; }\n.secondary { color: #333; }\n.footer { color: #333; }\n// Repeated values\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using custom properties (CSS variables)**\n\n**Fix:**\n```javascript\n:root {\n  --color-text: #333;\n}\n.primary, .secondary, .footer {\n  color: var(--color-text);\n}\n// Single source of truth, runtime modifiable\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_custom_properties_(css_variables)"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.location.href = url;\n// Opens in new tab\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Blob Download**\n\n**Fix:**\n```javascript\nfetch(url).then(res => res.blob()).then(blob => {\n  const url = URL.createObjectURL(blob);\n  const a = document.createElement('a');\n  a.href = url;\n  a.download = 'file.pdf';\n  a.click();\n  URL.revokeObjectURL(url);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_blob_download"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (key in obj) {\n  const value = obj[key];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Reflect**\n\n**Fix:**\n```javascript\nif (Reflect.has(obj, key)) {\n  const value = Reflect.get(obj, key);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_reflect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst last = [...arr].reverse().find(predicate);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findLast**\n\n**Fix:**\n```javascript\nconst last = arr.findLast(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findlast"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Counter {\n  constructor() {\n    this.count = 0;\n    var self = this;\n    setTimeout(function() { self.count++; }, 100);\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Lexical this vs Dynamic this**\n\n**Fix:**\n```javascript\nclass Counter {\n  constructor() {\n    this.count = 0;\n    setTimeout(() => { this.count++; }, 100);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "lexical_this_vs_dynamic_this"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Timer {\n  constructor() {\n    this.seconds = 0;\n    setInterval(function() {\n      this.seconds++; // 'this' is undefined\n    }, 1000);\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: this binding lost**\n\n**Fix:**\n```javascript\nclass Timer {\n  constructor() {\n    this.seconds = 0;\n    setInterval(() => {\n      this.seconds++; // Arrow function preserves 'this'\n    }, 1000);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "this_binding_lost"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/login', async (req, res) => {\n  // Auth check - no rate limit\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Rate Limiting**\n\n**Fix:**\n```javascript\nconst rateLimit = require('express-rate-limit');\nconst loginLimiter = rateLimit({\n  windowMs: 15 * 60 * 1000,\n  max: 5,\n  message: 'Too many login attempts'\n});\n\napp.post('/login', loginLimiter, async (req, res) => {\n  // Auth check\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_rate_limiting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar add = function(a, b) { return a + b; };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing const for Function**\n\n**Fix:**\n```javascript\nconst add = (a, b) => a + b;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_const_for_function"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// No Content Security Policy\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing CSP**\n\n**Fix:**\n```javascript\n// Set CSP header\nContent-Security-Policy: default-src 'self'; script-src 'self'\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_csp"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/users', (req, res) => {\n  const user = req.body;\n  db.save(user);\n  res.json(user);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing request validation**\n\n**Fix:**\n```javascript\napp.post('/users', validate(userSchema), (req, res) => {\n  const user = req.body;\n  db.save(user);\n  res.json(user);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_request_validation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet largeData = loadData();\nprocess(largeData);\n// largeData may not be GC'd immediately\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Garbage Collection Hint**\n\n**Fix:**\n```javascript\nlet largeData = loadData();\nprocess(largeData);\nlargeData = null;\n// Release reference for GC\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_garbage_collection_hint"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar context = { user: user };\nfunction handler() {\n  return this.user;\n}\nhandler.call(context);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Function.createContext Alternative**\n\n**Fix:**\n```javascript\nconst handler = (user) => {\n  return user;\n};\nhandler(user);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "function.createcontext_alternative"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst city = user.address.city;\n// Deep access with null checks\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Lenses**\n\n**Fix:**\n```javascript\nconst view = lens(path => path.reduce((o, k) => o?.[k], obj));\nconst cityLens = view(['address', 'city']);\ncityLens(user);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_lenses"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// Cannot cancel request\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing AbortController**\n\n**Fix:**\n```javascript\nconst controller = new AbortController();\nconst data = await fetch(url, { signal: controller.signal });\n// controller.abort() to cancel\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_abortcontroller"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function getAllPages(url) {\n  let page = 1;\n  const all = [];\n  while (true) {\n    const resp = await fetch(`${url}?page=${page}`);\n    const data = await resp.json();\n    if (data.items.length === 0) break;\n    all.push(...data.items);\n    page++;\n  }\n  return all;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using async iterators**\n\n**Fix:**\n```javascript\nasync function* pageIterator(url) {\n  let page = 1;\n  while (true) {\n    const resp = await fetch(`${url}?page=${page}`);\n    const data = await resp.json();\n    if (data.items.length === 0) break;\n    yield* data.items;\n    page++;\n  }\n}\n// Consumer:\nconst all = [];\nfor await (const item of pageIterator(url)) {\n  all.push(item);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_async_iterators"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\narr.splice(0, 1);\n// O(n) - shifts all elements\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Large Array Splice**\n\n**Fix:**\n```javascript\narr.shift();\n// Still O(n) but clearer\n// Or use a Queue (Deque) for O(1)\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "large_array_splice"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst users = await fetchUsers();\nconst posts = await fetchPosts();\nconst comments = await fetchComments();\n// Sequential - waits for each\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Promise.all for parallel requests**\n\n**Fix:**\n```javascript\nconst [users, posts, comments] = await Promise.all([\n  fetchUsers(),\n  fetchPosts(),\n  fetchComments()\n]);\n// Parallel - total time = slowest request\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_promise.all_for_parallel_requests"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nstate.items[0].name = 'New Name';\nstate.count = state.count + 1;\n// Mutates state\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Immutable Update**\n\n**Fix:**\n```javascript\nconst newState = {\n  ...state,\n  items: state.items.map((item, i) =>\n    i === 0 ? { ...item, name: 'New Name' } : item\n  ),\n  count: state.count + 1,\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_immutable_update"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar module = (function() {\n  var private = 'secret';\n  return {\n    getSecret: function() { return private; }\n  };\n})();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Module Pattern**\n\n**Fix:**\n```javascript\n// ES Module\nconst private = 'secret';\nexport function getSecret() { return private; }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "module_pattern"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var key of map.keys()) {\n  console.log(key, map.get(key));\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing for...of on Map**\n\n**Fix:**\n```javascript\nfor (const [key, value] of map) {\n  console.log(key, value);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_for...of_on_map"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nexpect(component.state.loading).toBe(true);\n// Tests React internal\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Testing Implementation Details**\n\n**Fix:**\n```javascript\nexpect(screen.getByText('Loading...')).toBeInTheDocument();\n// Tests user-visible output\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "testing_implementation_details"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst start = Date.now();\ndoSomething();\nconst duration = Date.now() - start;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Performance API**\n\n**Fix:**\n```javascript\nperformance.mark('start');\ndoSomething();\nperformance.mark('end');\nperformance.measure('duration', 'start', 'end');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_performance_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfetch('/api/data')\n  .then(response => response.json())\n  .then(data => process(data));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Promise Without .catch**\n\n**Fix:**\n```javascript\nfetch('/api/data')\n  .then(response => response.json())\n  .then(data => process(data))\n  .catch(error => logger.error('Fetch failed', error));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "promise_without_.catch"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (obj.hasOwnProperty(key)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.hasOwn**\n\n**Fix:**\n```javascript\nif (Object.hasOwn(obj, key)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.hasown"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar parent = element.parentNode;\nvar newNode = document.createElement('div');\nparent.replaceChild(newNode, element);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.replaceWith**\n\n**Fix:**\n```javascript\nelement.replaceWith(newElement);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.replacewith"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result;\narr.forEach(function(item) {\n  if (predicate(item)) result = item;\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of find**\n\n**Fix:**\n```javascript\nconst result = arr.find(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_find"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nbutton.addEventListener('click', function() {\n  this.classList.add('active');\n});\n// this is button, but in nested callback it changes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing bind**\n\n**Fix:**\n```javascript\nbutton.addEventListener('click', function() {\n  this.classList.add('active');\n}.bind(button));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_bind"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nsetInterval(() => {\n  fetch('/api/data').then(updateUI);\n}, 5000);\n// Never cleared - keeps running after component unmount\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Memory leak with setInterval**\n\n**Fix:**\n```javascript\nconst intervalId = setInterval(() => {\n  fetch('/api/data').then(updateUI);\n}, 5000);\n// Clean up:\nclearInterval(intervalId);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "memory_leak_with_setinterval"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function handle() {\n  saveToLog(data); // Promise lost\n  return process(data);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Fire and Forget Promise**\n\n**Fix:**\n```javascript\nasync function handle() {\n  saveToLog(data).catch(err => logger.error('Log save failed', err));\n  return process(data);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "fire_and_forget_promise"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction divide(a, b) {\n  if (b === 0) return null;\n  return a / b;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Either**\n\n**Fix:**\n```javascript\nconst Either = {\n  Left: x => ({ isLeft: () => true, map: f => Either.Left(x), fold: (l, r) => l(x) }),\n  Right: x => ({ isLeft: () => false, map: f => Either.Right(f(x)), fold: (l, r) => r(x) }),\n};\nfunction divide(a, b) {\n  return b === 0 ? Either.Left('Division by zero') : Either.Right(a / b);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_either"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar first = element.firstChild;\nelement.insertBefore(newElement, first);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.prepend**\n\n**Fix:**\n```javascript\nelement.prepend(newElement);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.prepend"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (date1 > date2) { ... }\n// Compares string representations\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Comparison**\n\n**Fix:**\n```javascript\nif (date1.getTime() > date2.getTime()) { ... }\n// Or: if (date1.valueOf() > date2.valueOf())\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_comparison"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...arr];\ncopy.splice(start, deleteCount, ...items);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.toSpliced**\n\n**Fix:**\n```javascript\nconst result = arr.toSpliced(start, deleteCount, ...items);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.tospliced"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {\n  greet: function() { console.log('Hi'); }\n};\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Method Shorthand**\n\n**Fix:**\n```javascript\nconst obj = {\n  greet() { console.log('Hi'); }\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_method_shorthand"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n{\n  \"scripts\": {\n    \"build\": \"webpack\"\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing pre/post build scripts**\n\n**Fix:**\n```javascript\n{\n  \"scripts\": {\n    \"prebuild\": \"npm run lint\",\n    \"build\": \"webpack --mode production\",\n    \"postbuild\": \"npm run test\"\n  }\n}\n# Pre/post scripts run automatically\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_pre/post_build_scripts"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.get('/api/data', (req, res) => {\n  const data = db.query();\n  res.json(data);\n});\n// If db.query() throws, unhandled rejection\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing error handling in Express**\n\n**Fix:**\n```javascript\napp.get('/api/data', async (req, res, next) => {\n  try {\n    const data = await db.query();\n    res.json(data);\n  } catch (err) {\n    next(err); // Pass to error handler\n  }\n});\n\napp.use((err, req, res, next) => {\n  console.error(err);\n  res.status(500).json({ error: 'Internal error' });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_error_handling_in_express"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.innerHTML = element.innerHTML + '<div>New</div>';\n// Re-parses entire innerHTML\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.insertAdjacentHTML**\n\n**Fix:**\n```javascript\nelement.insertAdjacentHTML('beforeend', '<div>New</div>');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.insertadjacenthtml"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (condition) {\n  function helper() { return 1; }\n  return helper();\n} // helper leaks in non-strict mode\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: function declaration in block scope**\n\n**Fix:**\n```javascript\nif (condition) {\n  const helper = () => 1;\n  return helper();\n  // Arrow functions are properly block-scoped\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "function_declaration_in_block_scope"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (obj.hasOwnProperty(key)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.hasOwn**\n\n**Fix:**\n```javascript\nif (Object.hasOwn(obj, key)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.hasown"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction Dog(name) { Animal.call(this, name); }\nDog.prototype = Object.create(Animal.prototype);\nDog.prototype.constructor = Dog;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Inheritance**\n\n**Fix:**\n```javascript\nclass Dog extends Animal {\n  constructor(name) { super(name); }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_inheritance"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (/^http/.test(url)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Instead of startsWith**\n\n**Fix:**\n```javascript\nif (url.startsWith('http')) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_instead_of_startswith"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/transfer', handleTransfer);\n// No CSRF check\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing CSRF Protection**\n\n**Fix:**\n```javascript\nconst csurf = require('csurf');\napp.use(csurf());\napp.post('/transfer', csrfProtection, handleTransfer);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_csrf_protection"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nthrow 'Something went wrong';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: throw String**\n\n**Fix:**\n```javascript\nthrow new Error('Something went wrong');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "throw_string"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction* generator() {\n  try { yield step1(); }\n  catch (e) { /* handle */ }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error in Generator**\n\n**Fix:**\n```javascript\nfunction* generator() {\n  try { yield step1(); }\n  catch (error) {\n    logger.error('Generator error', error);\n    throw error;\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_in_generator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// Doesn't throw on 4xx/5xx\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing fetch Error Handling**\n\n**Fix:**\n```javascript\nconst response = await fetch(url);\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst data = await response.json();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_fetch_error_handling"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('adds element', () => {\n  const el = document.createElement('div');\n  document.body.appendChild(el);\n});\n// Element persists\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test Cleanup**\n\n**Fix:**\n```javascript\ntest('adds element', () => {\n  const el = document.createElement('div');\n  document.body.appendChild(el);\n  return () => document.body.removeChild(el);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_cleanup"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst hash = crypto.createHash('md5').update(bigBuffer).digest();\n// Synchronous crypto blocks the event loop\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Blocking event loop in Node**\n\n**Fix:**\n```javascript\n// Use async crypto APIs:\nconst hash = await new Promise((resolve, reject) => {\n  const hash = crypto.createHash('sha256');\n  hash.update(bigBuffer);\n  resolve(hash.digest());\n});\n// Or worker thread for heavy computation\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "blocking_event_loop_in_node"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst timestamp = new Date().getTime();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Date.now()**\n\n**Fix:**\n```javascript\nconst timestamp = Date.now();\n// More direct\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_date.now()"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch('/api');\nconst json = await data.json();\nreturn json;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing try/catch with async**\n\n**Fix:**\n```javascript\ntry {\n  const data = await fetch('/api');\n  const json = await data.json();\n  return json;\n} catch (error) {\n  logger.error('Fetch failed', error);\n  throw error;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_try/catch_with_async"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (arr.indexOf(value) !== -1) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.includes**\n\n**Fix:**\n```javascript\nif (arr.includes(value)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.includes"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst cache = new Map();\ncache.set(key, largeObject);\n// Memory leak if key never removed\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing WeakRef**\n\n**Fix:**\n```javascript\nconst cache = new Map();\ncache.set(key, new WeakRef(largeObject));\n// Allows GC when no other references\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_weakref"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar unique = [];\narr.forEach(item => {\n  if (unique.indexOf(item) === -1) unique.push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Set for Uniqueness**\n\n**Fix:**\n```javascript\nconst unique = [...new Set(arr)];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_set_for_uniqueness"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar keys = Object.keys(obj);\nfor (var i = 0; i < keys.length; i++) {\n  console.log(keys[i], obj[keys[i]]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing for...in**\n\n**Fix:**\n```javascript\nfor (const key in obj) {\n  if (Object.hasOwn(obj, key)) {\n    console.log(key, obj[key]);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_for...in"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar CONFIG = { api: '/api', timeout: 5000 };\nCONFIG.api = '/new'; // Mutated!\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.freeze**\n\n**Fix:**\n```javascript\nconst CONFIG = Object.freeze({ api: '/api', timeout: 5000 });\n// Immutable configuration\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.freeze"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.write('<div>Content</div>');\n// Blocks parsing, deprecated\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: document.write**\n\n**Fix:**\n```javascript\nconst div = document.createElement('div');\ndiv.textContent = 'Content';\ndocument.body.appendChild(div);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "document.write"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nitems.map(item => <Item component={item} />)\n// Missing key\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Key Prop**\n\n**Fix:**\n```javascript\nitems.map(item => <Item key={item.id} component={item} />)\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_key_prop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nworker.onmessage = function(e) {\n  process(e.data);\n};\n// Errors in worker are silent\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Handling in Worker**\n\n**Fix:**\n```javascript\nworker.onmessage = function(e) {\n  process(e.data);\n};\nworker.onerror = function(e) {\n  console.error('Worker error:', e.message);\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_handling_in_worker"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst results = [];\nfor (let i = 0; i < urls.length; i++) {\n  results.push(await fetch(urls[i]));\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing async iterator**\n\n**Fix:**\n```javascript\nconst results = [];\nfor await (const response of fetchAll(urls)) {\n  results.push(response);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_async_iterator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function getData() {\n  fetch('/api/data').then(r => r.json());\n  return 'done';\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: async Without await**\n\n**Fix:**\n```javascript\nasync function getData() {\n  const response = await fetch('/api/data');\n  const data = await response.json();\n  return data;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "async_without_await"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.getElementById('output').innerHTML = userInput;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: XSS via innerHTML**\n\n**Fix:**\n```javascript\nconst el = document.getElementById('output');\nel.textContent = userInput;\n// textContent escapes HTML. innerHTML renders it.\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "xss_via_innerhtml"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nuseEffect(() => {\n  const interval = setInterval(() => {\n    setCount(count + 1);\n  }, 1000);\n  return () => clearInterval(interval);\n}, []);\n// count is always 0\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Stale Closure in useEffect**\n\n**Fix:**\n```javascript\nuseEffect(() => {\n  const interval = setInterval(() => {\n    setCount(prev => prev + 1);\n  }, 1000);\n  return () => clearInterval(interval);\n}, []);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "stale_closure_in_useeffect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (x == null) { ... }\n// Catches both null and undefined\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing === Comparison**\n\n**Fix:**\n```javascript\nif (x === null || x === undefined) { ... }\n// Or: if (x == null) is actually fine for nullish check\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_===_comparison"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nbeforeEach(() => {\n  fs.mkdirSync('/tmp/test');\n});\n// No cleanup - stale files between tests\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing test cleanup**\n\n**Fix:**\n```javascript\nbeforeEach(() => {\n  fs.mkdirSync('/tmp/test', { recursive: true });\n});\nafterEach(() => {\n  fs.rmSync('/tmp/test', { recursive: true, force: true });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_test_cleanup"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nimport { User } from './models/user';\nimport { Post } from './models/post';\nimport { Comment } from './models/comment';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Barrel Export**\n\n**Fix:**\n```javascript\n// models/index.js\nexport { User } from './user';\nexport { Post } from './post';\nexport { Comment } from './comment';\n// import\nimport { User, Post, Comment } from './models';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_barrel_export"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('touchstart', handleTouch);\n// Blocks scrolling for performance\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Passive Event Listener**\n\n**Fix:**\n```javascript\nelement.addEventListener('touchstart', handleTouch, { passive: true });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_passive_event_listener"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar nodes = document.querySelectorAll('.items');\nnodes.forEach(function(node) { ... });\n// NodeList doesn't have forEach in older browsers\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing querySelectorAll Spread**\n\n**Fix:**\n```javascript\n[...document.querySelectorAll('.items')].forEach(node => { ... });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_queryselectorall_spread"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst PORT = 3000;\nconst DB_URL = 'mongodb://localhost/mydb';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using environment variables**\n\n**Fix:**\n```javascript\nconst PORT = process.env.PORT || 3000;\nconst DB_URL = process.env.DB_URL;\nif (!DB_URL) throw new Error('DB_URL is required');\n// Or with dotenv:\nrequire('dotenv').config();\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_environment_variables"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('should work', () => {\n  const result = process(input);\n  console.log(result); // Debug output\n  expect(result).toBe(true);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using console.log for debugging in tests**\n\n**Fix:**\n```javascript\nit('should work', () => {\n  const result = process(input);\n  expect(result).toBe(true);\n});\n// Use jest.spyOn for inspecting behavior:\nconst spy = jest.spyOn(module, 'func');\n// Spy is auto-restored after test\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_console.log_for_debugging_in_tests"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nimport './polyfills.js';\n// May be tree-shaken\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Side Effect Import**\n\n**Fix:**\n```javascript\nimport 'polyfills';\n// Or: sideEffects: false in package.json\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_side_effect_import"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndescribe('Counter', () => {\n  it('increments', () => {\n    const counter = new Counter();\n    counter.inc();\n    expect(counter._value).toBe(1); // Testing private property\n  });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Testing implementation details**\n\n**Fix:**\n```javascript\ndescribe('Counter', () => {\n  it('increments', () => {\n    const counter = new Counter();\n    counter.inc();\n    expect(counter.getValue()).toBe(1); // Test public API\n  });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "testing_implementation_details"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr = [];\nfor (var i = 0; i < nodelets.length; i++) {\n  arr.push(nodelets[i]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.from**\n\n**Fix:**\n```javascript\nconst arr = Array.from(nodelets);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.from"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('creates user', async () => {\n  const res = await fetch('http://localhost:3000/users', {\n    method: 'POST',\n    body: JSON.stringify({ name: 'Alice' })\n  });\n  // Hits real server - slow, fragile\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Testing with real HTTP server**\n\n**Fix:**\n```javascript\nimport { request } from 'supertest';\nimport app from '../app';\n\nit('creates user', async () => {\n  const res = await request(app)\n    .post('/users')\n    .send({ name: 'Alice' })\n    .expect(201);\n  expect(res.body.name).toBe('Alice');\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "testing_with_real_http_server"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst flat = [];\narr.forEach(sub => sub.forEach(item => flat.push(item)));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.flat for Nested**\n\n**Fix:**\n```javascript\nconst flat = arr.flat();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.flat_for_nested"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar merged = {};\nfor (var key in obj1) merged[key] = obj1[key];\nfor (var key in obj2) merged[key] = obj2[key];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.assign for Merge**\n\n**Fix:**\n```javascript\nconst merged = Object.assign({}, obj1, obj2);\n// Or: const merged = { ...obj1, ...obj2 };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.assign_for_merge"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar groups = {};\narr.forEach(function(item) {\n  if (!groups[item.cat]) groups[item.cat] = [];\n  groups[item.cat].push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.reduce for Grouping**\n\n**Fix:**\n```javascript\nconst groups = arr.reduce((acc, item) => {\n  (acc[item.cat] ||= []).push(item);\n  return acc;\n}, {});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.reduce_for_grouping"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nnode build.js\nnpx jest\nnpx eslint src/\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using package.json scripts**\n\n**Fix:**\n```javascript\n# package.json\n{\n  \"scripts\": {\n    \"build\": \"node build.js\",\n    \"test\": \"jest\",\n    \"lint\": \"eslint src/\",\n    \"dev\": \"nodemon src/index.js\"\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_package.json_scripts"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (const item of items) {\n  document.getElementById('list').innerHTML += `<li>${item}</li>`;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Inefficient DOM manipulation**\n\n**Fix:**\n```javascript\n// Build once, insert once:\nconst fragment = document.createDocumentFragment();\nitems.forEach(item => {\n  const li = document.createElement('li');\n  li.textContent = item;\n  fragment.appendChild(li);\n});\ndocument.getElementById('list').appendChild(fragment);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "inefficient_dom_manipulation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<script src=\"node_modules/lodash/lodash.js\"></script>\n<script src=\"app.js\"></script>\n// Individual script tags, no module resolution\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not bundling for browser**\n\n**Fix:**\n```javascript\n// Use a bundler:\n// npx esbuild app.js --bundle --outfile=dist/bundle.js\n// Or vite:\n// npx vite build\n// Bundling: resolves imports, minifies, tree-shakes\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_bundling_for_browser"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar valid = true;\nfor (var i = 0; i < arr.length; i++) {\n  if (arr[i] < 0) { valid = false; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.every for Validation**\n\n**Fix:**\n```javascript\nconst valid = arr.every(x => x >= 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.every_for_validation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('click', function() {\n  if (!validate()) throw new Error('Invalid');\n});\n// Unhandled rejection\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error in Event Handler**\n\n**Fix:**\n```javascript\nelement.addEventListener('click', async function() {\n  try { if (!validate()) throw new Error('Invalid'); }\n  catch (error) { showError(error.message); }\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_in_event_handler"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar PRIVATE_KEY = '__private';\nobj[PRIVATE_KEY] = 'secret';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Symbol**\n\n**Fix:**\n```javascript\nconst PRIVATE_KEY = Symbol('private');\nobj[PRIVATE_KEY] = 'secret';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_symbol"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/login', handleLogin);\n// No rate limiting\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Rate Limiting**\n\n**Fix:**\n```javascript\nconst rateLimit = require('express-rate-limit');\nconst limiter = rateLimit({ windowMs: 15 * 60 * 1000, max: 100 });\napp.use('/api/', limiter);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_rate_limiting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('calls API', () => {\n  component.render();\n  expect(apiCalled).toBe(true);\n});\n// Makes real API call\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Mock**\n\n**Fix:**\n```javascript\ntest('calls API', () => {\n  jest.spyOn(api, 'get').mockResolvedValue({ data: [] });\n  component.render();\n  expect(api.get).toHaveBeenCalled();\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_mock"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = data.filter(x => x > 0).map(x => x * 2).slice(0, 10);\n// Creates intermediate arrays\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Transducer**\n\n**Fix:**\n```javascript\nconst compose = (f, g) => x => f(g(x));\nconst taking = n => rf => (acc, item) => acc.length >= n ? acc : rf(acc, item);\nconst mapping = f => rf => (acc, item) => rf(acc, f(item));\nconst filtering = pred => rf => (acc, item) => pred(item) ? rf(acc, item) : acc;\nconst transduce = (xf, rf, init, coll) => {\n  const f = xf(rf);\n  let result = init;\n  for (const item of coll) result = f(result, item);\n  return result;\n};\nconst xf = compose(taking(10), mapping(x => x * 2), filtering(x => x > 0));\nconst result = transduce(xf, (acc, x) => [...acc, x], [], data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_transducer"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nrender() {\n  return items.map(item => <Item key={item.id} />);\n}\n// Renders 10,000 items\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Virtual Scrolling**\n\n**Fix:**\n```javascript\nrender() {\n  return <VirtualList items={items} itemHeight={50} visible={20} />;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_virtual_scrolling"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction createHandler() {\n  const data = new Array(1000000);\n  return function() { console.log('clicked'); };\n}\n// data never GC'd\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Memory Leak in Closure**\n\n**Fix:**\n```javascript\nfunction createHandler() {\n  return () => console.log('clicked');\n  // Don't capture large data in closure\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "memory_leak_in_closure"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {\n  greet: function() { console.log('Hi'); }\n};\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Method Shorthand**\n\n**Fix:**\n```javascript\nconst obj = {\n  greet() { console.log('Hi'); }\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_method_shorthand"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar el = target;\nwhile (el && el !== container) {\n  if (el.matches('.item')) break;\n  el = el.parentElement;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.closest**\n\n**Fix:**\n```javascript\nconst el = target.closest('.item');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.closest"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function fetchAll(urls) {\n  const results = [];\n  for (const url of urls) results.push(await fetch(url));\n  return results;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing async generator**\n\n**Fix:**\n```javascript\nasync function* fetchAll(urls) {\n  for (const url of urls) {\n    yield await fetch(url);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_async_generator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.write('<div>' + userComment + '</div>');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: XSS via document.write()**\n\n**Fix:**\n```javascript\nconst container = document.getElementById('comments');\nconst div = document.createElement('div');\ndiv.textContent = userComment;\ncontainer.appendChild(div);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "xss_via_document.write()"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nsetState([...state, newItem]);\n// Fine, but for nested objects:\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Direct State Mutation**\n\n**Fix:**\n```javascript\nsetState(prev => ({\n  ...prev,\n  items: [...prev.items, newItem],\n}));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "direct_state_mutation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction merge(target, source) {\n  for (let key in source) {\n    target[key] = source[key];\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Prototype Pollution**\n\n**Fix:**\n```javascript\nfunction merge(target, source) {\n  for (let key in source) {\n    if (Object.prototype.hasOwnProperty.call(source, key)) {\n      if (key === '__proto__' || key === 'constructor' || key === 'prototype') continue;\n      target[key] = source[key];\n    }\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "prototype_pollution"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfs.readFile('config.json', 'utf8', (err, data) => {\n  if (err) throw err;\n  const config = JSON.parse(data);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Callback-based file read**\n\n**Fix:**\n```javascript\nconst { readFile } = require('fs/promises');\nasync function loadConfig() {\n  const data = await readFile('config.json', 'utf8');\n  return JSON.parse(data);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "callback-based_file_read"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n{\n  \"dependencies\": {\n    \"express\": \"^4.18.0\"\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing dependency pinning**\n\n**Fix:**\n```javascript\n{\n  \"dependencies\": {\n    \"express\": \"4.18.2\"\n  },\n  \"devDependencies\": {\n    \"jest\": \"29.7.0\",\n    \"eslint\": \"8.56.0\"\n  }\n}\n# Pin versions for reproducible builds\n# Use package-lock.json / yarn.lock\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_dependency_pinning"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (isFinite(x) && typeof x === 'number') { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Number.isFinite**\n\n**Fix:**\n```javascript\nif (Number.isFinite(x)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_number.isfinite"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (status === 200) return data;\nif (status === 404) throw new Error('Not found');\nif (status === 500) throw new Error('Server error');\n// Only tested 200\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test Coverage**\n\n**Fix:**\n```javascript\ntest('handles 200', () => { /* ... */ });\ntest('handles 404', () => { /* ... */ });\ntest('handles 500', () => { /* ... */ });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_coverage"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction sum() {\n  var args = Array.prototype.slice.call(arguments);\n  return args.reduce(function(a, b) { return a + b; }, 0);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Rest Parameters**\n\n**Fix:**\n```javascript\nconst sum = (...args) => args.reduce((a, b) => a + b, 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_rest_parameters"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n(function() {\n  var private = 'secret';\n  return function() { return private; };\n})();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: IIFE Not Needed**\n\n**Fix:**\n```javascript\nconst private = 'secret';\nconst getter = () => private;\n// Block scoping with let/const\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "iife_not_needed"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction sum(arr) {\n  let result = 0;\n  for (const x of arr) result += x;\n  return result;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Fold/Reduce**\n\n**Fix:**\n```javascript\nconst sum = arr => arr.reduce((acc, x) => acc + x, 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_fold/reduce"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction format(num) {\n  return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Number.group**\n\n**Fix:**\n```javascript\nreturn num.toLocaleString('en-US');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_number.group"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst doubled = arr.map(x => x * 2);\nconst filtered = doubled.filter(x => x > 10);\nconst summed = filtered.reduce((a, b) => a + b, 0);\n// Multiple array traversals\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using reduce for multiple operations**\n\n**Fix:**\n```javascript\n// Single traversal:\nconst summed = arr.reduce((acc, x) => {\n  const doubled = x * 2;\n  if (doubled > 10) acc += doubled;\n  return acc;\n}, 0);\n// Or use pipeline for readability:\nimport pipe from 'lodash/fp/flow';\nconst pipeline = pipe(map(double), filter(gt(10)), sum);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_reduce_for_multiple_operations"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction getFiltered(items, filter) {\n  return items.filter(item => item.category === filter);\n}\n// Recomputes on every render\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Memoization**\n\n**Fix:**\n```javascript\nimport { useMemo } from 'react';\nconst filtered = useMemo(\n  () => items.filter(item => item.category === filter),\n  [items, filter]\n);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_memoization"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction Animal(name) { this.name = name; }\nAnimal.prototype.speak = function() { console.log(this.name); };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Syntax**\n\n**Fix:**\n```javascript\nclass Animal {\n  constructor(name) { this.name = name; }\n  speak() { console.log(this.name); }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_syntax"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst step3 = step2(step1(data));\n// Nested calls hard to read\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Pipe**\n\n**Fix:**\n```javascript\nconst pipe = (...fns) => x => fns.reduce((v, f) => f(v), x);\nconst process = pipe(step1, step2, step3);\nconst result = process(data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_pipe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction Component() {\n  const [data, setData] = useState(null);\n  const [loading, setLoading] = useState(true);\n  useEffect(() => {\n    fetch('/api').then(r => r.json()).then(setData).finally(() => setLoading(false));\n  }, []);\n  // Repeated in many components\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Custom Hook**\n\n**Fix:**\n```javascript\nfunction useData(url) {\n  const [data, setData] = useState(null);\n  const [loading, setLoading] = useState(true);\n  useEffect(() => {\n    fetch(url).then(r => r.json()).then(setData).finally(() => setLoading(false));\n  }, [url]);\n  return { data, loading };\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_custom_hook"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nmodule.dataReady(data);\n// Direct function call - tight coupling\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Custom Event**\n\n**Fix:**\n```javascript\nwindow.dispatchEvent(new CustomEvent('dataReady', { detail: data }));\n// Decoupled communication\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_custom_event"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (/test/.test(str)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Instead of includes**\n\n**Fix:**\n```javascript\nif (str.includes('test')) { ... }\n// includes is faster for literal strings\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_instead_of_includes"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar globalObj = typeof window !== 'undefined' ? window : global;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing globalThis**\n\n**Fix:**\n```javascript\nconst globalObj = globalThis;\n// Works in browser, Node, Web Workers\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_globalthis"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst greeting = 'Hello, ' + name + '! You are ' + age + ' years old.';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Template literal concatenation**\n\n**Fix:**\n```javascript\nconst greeting = `Hello, ${name}! You are ${age} years old.`;\n// Template literals are cleaner and support expressions\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "template_literal_concatenation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar flat = [];\narr.forEach(function(sub) {\n  sub.forEach(function(item) { flat.push(item); });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.flat for Nesting**\n\n**Fix:**\n```javascript\nconst flat = arr.flat();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.flat_for_nesting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst handleClick = () => {\n  console.log(count);\n};\n// Recreated every render\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing useCallback**\n\n**Fix:**\n```javascript\nconst handleClick = useCallback(() => {\n  console.log(count);\n}, [count]);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_usecallback"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction range(start, end) {\n  const result = [];\n  for (let i = start; i < end; i++) result.push(i);\n  return result;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Iterator Protocol**\n\n**Fix:**\n```javascript\nfunction* range(start, end) {\n  for (let i = start; i < end; i++) yield i;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_iterator_protocol"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.appendChild(document.createTextNode('text'));\nelement.appendChild(document.createElement('br'));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.append**\n\n**Fix:**\n```javascript\nelement.append('text', document.createElement('br'));\n// append accepts nodes and strings\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.append"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction wait(ms) {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\n// Repeated everywhere\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: setTimeout Instead of delay**\n\n**Fix:**\n```javascript\n// Define once in utils\nconst delay = ms => new Promise(resolve => setTimeout(resolve, ms));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "settimeout_instead_of_delay"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwebpack config with minification only\n// Production errors show minified code\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using source maps**\n\n**Fix:**\n```javascript\n// webpack.config.js\nmodule.exports = {\n  devtool: 'source-map', // For production\n  // 'eval-source-map' for dev (faster)\n  // 'inline-source-map' embeds in bundle\n  mode: 'production'\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_source_maps"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('fetches user', () => {\n  const user = fetchUser(1); // Returns Promise\n  expect(user.name).toBe('Alice'); // user is Promise, not object\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Async test without await**\n\n**Fix:**\n```javascript\nit('fetches user', async () => {\n  const user = await fetchUser(1);\n  expect(user.name).toBe('Alice');\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "async_test_without_await"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.write(userInput);\n// XSS + blocks parsing\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: document.write**\n\n**Fix:**\n```javascript\nconst el = document.createElement('div');\nel.textContent = userInput;\ndocument.body.appendChild(el);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "document.write"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst PORT = process.env.PORT;\nconst DB = process.env.DB_URL;\n// No validation\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing env Validation**\n\n**Fix:**\n```javascript\nconst { PORT, DB_URL } = process.env;\nif (!PORT || !DB_URL) {\n  throw new Error('Missing required env vars');\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_env_validation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch('/api/data');\n// Cookies not sent\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Credentials**\n\n**Fix:**\n```javascript\nconst data = await fetch('/api/data', { credentials: 'same-origin' });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_credentials"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (type === 'rect') return rectArea(data);\nif (type === 'circle') return circleArea(data);\nif (type === 'triangle') return triangleArea(data);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Pattern Matching**\n\n**Fix:**\n```javascript\n// Pattern matching (proposed)\nmatch(shape) {\n  with { type: 'rect' } return rectArea(shape);\n  with { type: 'circle' } return circleArea(shape);\n  with { type: 'triangle' } return triangleArea(shape);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_pattern_matching"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.get('/download', (req, res) => {\n  const data = fs.readFileSync('large-file.zip');\n  res.send(data);\n  // Loads entire file into memory\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not streaming large responses**\n\n**Fix:**\n```javascript\napp.get('/download', (req, res) => {\n  const stream = fs.createReadStream('large-file.zip');\n  res.setHeader('Content-Type', 'application/zip');\n  stream.pipe(res);\n  // Streams data without loading into memory\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_streaming_large_responses"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet result = '';\nfor (let i = 0; i < n; i++) result += items[i];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: String Concatenation in Loop**\n\n**Fix:**\n```javascript\nconst result = items.join('');\n// or [...items].join('')\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "string_concatenation_in_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function fetchAll(urls) {\n  const results = [];\n  for (const url of urls) results.push(await fetch(url));\n  return results;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Async Iterator**\n\n**Fix:**\n```javascript\nasync function* fetchAll(urls) {\n  for (const url of urls) yield await fetch(url);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_async_iterator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst str = date.toDateString();\n// Locale-dependent format\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Formatting**\n\n**Fix:**\n```javascript\nconst str = date.toLocaleDateString('en-CA');\n// ISO-like format: YYYY-MM-DD\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_formatting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (let i in array) {\n  process(array[i]); // wrong iteration order, includes properties\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using for...in on arrays**\n\n**Fix:**\n```javascript\nfor (let i = 0; i < array.length; i++) {\n  process(array[i]);\n}\n// Or:\nfor (const item of array) {\n  process(item);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_for...in_on_arrays"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ngetData(function(a) {\n  getMore(a, function(b) {\n    getMore(b, function(c) {\n      getMore(c, function(d) {\n        // ...\n      });\n    });\n  });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Callback hell**\n\n**Fix:**\n```javascript\nasync function load() {\n  const a = await getData();\n  const b = await getMore(a);\n  const c = await getMore(b);\n  const d = await getMore(c);\n  // Linear and readable\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "callback_hell"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('async callback', (done) => {\n  fetchData(() => {\n    expect(true).toBe(true);\n    done();\n  });\n});\n// Race condition\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Flaky Test**\n\n**Fix:**\n```javascript\ntest('async callback', async () => {\n  await fetchData();\n  expect(true).toBe(true);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "flaky_test"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar _private = {};\nfunction get(obj) { return _private[obj.id]; }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing WeakMap**\n\n**Fix:**\n```javascript\nconst privateData = new WeakMap();\nfunction get(obj) { return privateData.get(obj); }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_weakmap"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Account {\n  constructor(balance) {\n    this.balance = balance;\n  }\n  // balance is public\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Class Private Fields**\n\n**Fix:**\n```javascript\nclass Account {\n  #balance;\n  constructor(balance) { this.#balance = balance; }\n  getBalance() { return this.#balance; }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "class_private_fields"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction setup() {\n  document.addEventListener('click', handleClick);\n}\n// Called multiple times, adding duplicate listeners\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Event listener leak**\n\n**Fix:**\n```javascript\n// Use a flag or remove before adding:\ndocument.removeEventListener('click', handleClick);\ndocument.addEventListener('click', handleClick);\n// Better: use event delegation\nparentElement.addEventListener('click', (e) => {\n  if (e.target.matches('.button')) handleClick(e);\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "event_listener_leak"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar count = 0;\nvar name = 'test';\nvar MAX = 100;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: var instead of let/const**\n\n**Fix:**\n```javascript\nlet count = 0;\nconst name = 'test';\nconst MAX = 100;\n// const for values that don't change\n// let for reassignable variables\n// var is function-scoped and hoisted\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "var_instead_of_let/const"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('click', handleClick);\nelement.addEventListener('click', handleClick);\n// Handler added twice\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: addEventListener Multiple Calls**\n\n**Fix:**\n```javascript\nelement.removeEventListener('click', handleClick);\nelement.addEventListener('click', handleClick);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "addeventlistener_multiple_calls"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// Cannot cancel\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing AbortController**\n\n**Fix:**\n```javascript\nconst controller = new AbortController();\nconst data = await fetch(url, { signal: controller.signal });\n// Call controller.abort() to cancel\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_abortcontroller"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('calls callback', () => {\n  process(data, callback);\n});\n// No verification\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Spy**\n\n**Fix:**\n```javascript\ntest('calls callback', () => {\n  const spy = jest.fn();\n  process(data, spy);\n  expect(spy).toHaveBeenCalledWith(expected);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_spy"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet buffer = new ArrayBuffer(1024);\n// Need to grow - creates new buffer\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array Buffer Resizing**\n\n**Fix:**\n```javascript\nlet buffer = new ArrayBuffer(1024);\n// Use growable ArrayBuffer (Chrome 110+)\nbuffer.resize(2048);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_buffer_resizing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst name = user.name;\nconst email = user.email;\nconst role = user.role;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing destructuring**\n\n**Fix:**\n```javascript\nconst { name, email, role } = user;\n// Or with renaming:\nconst { name: userName, email } = user;\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar idx = -1;\nfor (var i = 0; i < arr.length; i++) {\n  if (predicate(arr[i])) { idx = i; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findIndex**\n\n**Fix:**\n```javascript\nconst idx = arr.findIndex(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findindex"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar MyApp = {};\nMyApp.Utils = {};\nMyApp.Utils.format = function() {}; \nMyApp.Models = {};\nMyApp.Models.User = function() {};\n// Global namespace pollution\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Namespace Pattern**\n\n**Fix:**\n```javascript\n// Use ES modules\n// utils.js\nexport function format() {}\n// user.js\nexport class User {}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "namespace_pattern"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst express = require('express');\nconst app = express();\napp.listen(3000);\n// No security headers\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing helmet**\n\n**Fix:**\n```javascript\nconst helmet = require('helmet');\napp.use(helmet());\n// Sets security headers automatically\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_helmet"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst url = 'https://example.com/path?foo=bar';\nconst params = url.split('?')[1].split('&').reduce((acc, pair) => {\n  const [k, v] = pair.split('=');\n  acc[k] = v;\n  return acc;\n}, {});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing URL API**\n\n**Fix:**\n```javascript\nconst url = new URL('https://example.com/path?foo=bar');\nconst params = Object.fromEntries(url.searchParams);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_url_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { process(); } catch (e) { console.log(e); }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Bare catch**\n\n**Fix:**\n```javascript\ntry { process(); } catch (error) {\n  logger.error('Processing failed', error);\n  notifyUser('An error occurred');\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "bare_catch"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction animate() {\n  updatePosition();\n  setTimeout(animate, 16);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using requestAnimationFrame**\n\n**Fix:**\n```javascript\nfunction animate() {\n  updatePosition();\n  requestAnimationFrame(animate);\n  // Syncs with display refresh rate, smoother animation\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_requestanimationframe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst canvas = document.getElementById('canvas');\nconst ctx = canvas.getContext('2d');\n// Drawing blocks main thread\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing OffscreenCanvas**\n\n**Fix:**\n```javascript\nconst canvas = document.getElementById('canvas');\nconst offscreen = canvas.transferControlToOffscreen();\nworker.postMessage(offscreen, [offscreen]);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_offscreencanvas"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst last = [...arr].reverse().find(predicate);\n// Creates reversed copy\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findLast**\n\n**Fix:**\n```javascript\nconst last = arr.findLast(predicate);\n// Scans from end, no copy\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findlast"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nexport default function add() { }\nimport add from './add';\nimport Add from './add'; // Different names\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Named vs Default Export**\n\n**Fix:**\n```javascript\nexport function add() { }\nimport { add } from './add';\n// Named exports are consistent\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "named_vs_default_export"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst multiply = (a, b) => a * b;\nconst triple = x => multiply(3, x);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Partial Application**\n\n**Fix:**\n```javascript\nconst partial = (fn, ...args) => (...rest) => fn(...args, ...rest);\nconst triple = partial((a, b) => a * b, 3);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "partial_application"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ninner.addEventListener('click', handleInner);\nouter.addEventListener('click', handleOuter);\n// Both fire\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing stopPropagation**\n\n**Fix:**\n```javascript\ninner.addEventListener('click', (e) => {\n  e.stopPropagation();\n  handleInner(e);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_stoppropagation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction start() {\n  interval = setInterval(task, 1000);\n}\n// start() called again, multiple intervals\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Leaking setInterval**\n\n**Fix:**\n```javascript\nfunction start() {\n  clearInterval(interval);\n  interval = setInterval(task, 1000);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "leaking_setinterval"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ninput.addEventListener('change', handleChange);\n// Only fires on blur\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Input Event**\n\n**Fix:**\n```javascript\ninput.addEventListener('input', handleChange);\n// Fires on every value change\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_input_event"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = JSON.parse(str);\n// Throws on invalid JSON\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: JSON.parse Without Error Handling**\n\n**Fix:**\n```javascript\ntry { const data = JSON.parse(str); }\n catch (error) { /* handle */ }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "json.parse_without_error_handling"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst path = __dirname;\n// Node.js only, doesn't work in ESM\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing import.meta.url**\n\n**Fix:**\n```javascript\nimport { fileURLToPath } from 'url';\nimport { dirname } from 'path';\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_import.meta.url"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif ('0' == false) { ... } // true!\nif ([] == false) { ... } // true!\nif ('' == 0) { ... } // true!\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Type Coercion Awareness**\n\n**Fix:**\n```javascript\nif (x === false) { ... } // Strict equality\n// Avoid == except for null/undefined checks\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_type_coercion_awareness"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfetch(`/api/users/${userId}?token=${authToken}`)\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Sensitive Data in URL**\n\n**Fix:**\n```javascript\nfetch(`/api/users/${userId}`, {\n  headers: { 'Authorization': `Bearer ${authToken}` }\n})\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "sensitive_data_in_url"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (arr.indexOf(value) !== -1) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.includes**\n\n**Fix:**\n```javascript\nif (arr.includes(value)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.includes"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { process(); } catch (e) { }\n// Silent failure\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Swallowing Errors**\n\n**Fix:**\n```javascript\ntry { process(); } catch (error) {\n  logger.error('Processing failed', error);\n  throw error;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "swallowing_errors"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Shared dependencies loaded multiple times\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Module Federation**\n\n**Fix:**\n```javascript\n// Webpack Module Federation\nnew ModuleFederationPlugin({\n  name: 'app1',\n  shared: { react: { singleton: true } },\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_module_federation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconsole.log(x); // undefined\nvar x = 5;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Variable Hoisting**\n\n**Fix:**\n```javascript\nconst x = 5;\nconsole.log(x);\n// const/let are not hoisted\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "variable_hoisting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst port = options.port || 8080;\n// Problem: port=0 evaluates to false\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing nullish coalescing**\n\n**Fix:**\n```javascript\nconst port = options.port ?? 8080;\n// ?? only falls back on null/undefined, not 0 or ''\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_nullish_coalescing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (value instanceof Array) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.isArray**\n\n**Fix:**\n```javascript\nif (Array.isArray(value)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.isarray"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('parses JSON', () => {\n  expect(parse('{}')).toEqual({});\n  // Only tests the happy path\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not testing error cases**\n\n**Fix:**\n```javascript\ndescribe('parse', () => {\n  it('parses valid JSON', () => {\n    expect(parse('{}')).toEqual({});\n  });\n  it('throws on invalid input', () => {\n    expect(() => parse('invalid')).toThrow(SyntaxError);\n  });\n  it('handles empty string', () => {\n    expect(() => parse('')).toThrow(SyntaxError);\n  });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_testing_error_cases"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.animate([...]);\n// Web Animations API not supported in all browsers\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not checking feature support**\n\n**Fix:**\n```javascript\nif ('animate' in Element.prototype) {\n  element.animate([...]);\n} else {\n  // Fallback: CSS classes or library\n  element.classList.add('animated');\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_checking_feature_support"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction asyncWork() {\n  setTimeout(() => {\n    // 'async' work\n  }, 0);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using setTimeout(0) for async**\n\n**Fix:**\n```javascript\n// Use Promise for proper async semantics:\nasync function asyncWork() {\n  await new Promise(resolve => setTimeout(resolve, 0));\n  // 'async' work\n}\n// Or queueMicrotask for same-tick scheduling\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_settimeout(0)_for_async"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = JSON.parse(str);\n// Dates become strings\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: JSON.parse Reviver**\n\n**Fix:**\n```javascript\nconst data = JSON.parse(str, (key, value) => {\n  if (typeof value === 'string' && /^\\d{4}-/.test(value)) {\n    return new Date(value);\n  }\n  return value;\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "json.parse_reviver"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction onReady(callback) {\n  readyCallbacks.push(callback);\n}\n// Manual callback management\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing EventEmitter**\n\n**Fix:**\n```javascript\nconst EventEmitter = require('events');\nconst emitter = new EventEmitter();\nemitter.on('ready', (data) => {\n  // handle ready\n});\nemitter.emit('ready', data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_eventemitter"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ncomponentDidCatch(error) {\n  console.error(error);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error Boundary**\n\n**Fix:**\n```javascript\nstatic getDerivedStateFromError(error) {\n  return { hasError: true };\n}\ncomponentDidCatch(error, info) {\n  logError(error, info);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error_boundary"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (!user) throw new Error('User not found');\nif (!user.email) throw new Error('Email required');\nif (user.age < 18) throw new Error('Must be adult');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error Type**\n\n**Fix:**\n```javascript\nclass NotFoundError extends Error { } \nclass ValidationError extends Error { }\nif (!user) throw new NotFoundError('User not found');\nif (!user.email) throw new ValidationError('Email required');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error_type"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Get location\nfetch('https://api.ipify.org').then(r => r.json());\n// External API dependency\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Geolocation**\n\n**Fix:**\n```javascript\nnavigator.geolocation.getCurrentPosition(pos => {\n  console.log(pos.coords.latitude, pos.coords.longitude);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_geolocation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nimport HeavyComponent from './HeavyComponent';\n// Loaded even if not used\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Dynamic Import**\n\n**Fix:**\n```javascript\nconst HeavyComponent = () => import('./HeavyComponent');\n// Lazy-loaded on demand\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_dynamic_import"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr = [];\nfor (var i = 0; i < 10; i++) arr.push(0);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.fill**\n\n**Fix:**\n```javascript\nconst arr = Array(10).fill(0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.fill"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.innerHTML = userInput;\n// XSS vulnerability\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: innerHTML with User Input**\n\n**Fix:**\n```javascript\nelement.textContent = userInput;\n// Escapes HTML entities\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "innerhtml_with_user_input"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Caching done manually\ncache.put(url, response);\n// No offline support\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Service Worker**\n\n**Fix:**\n```javascript\n// Register service worker\nnavigator.serviceWorker.register('/sw.js');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_service_worker"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction App() {\n  return <Child />;\n}\n// Error in Child crashes App\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error Boundary**\n\n**Fix:**\n```javascript\nclass ErrorBoundary extends React.Component {\n  state = { error: null };\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  render() {\n    return this.state.error ? <Error /> : this.props.children;\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error_boundary"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (allowedList.indexOf(value) !== -1) { ... }\n// allowedList has thousands of items\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using array.indexOf for large sets**\n\n**Fix:**\n```javascript\nconst allowedSet = new Set(allowedList);\nif (allowedSet.has(value)) { ... }\n// Set lookups are O(1) vs O(n)\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_array.indexof_for_large_sets"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { return fetch(url); } catch (e) {\n  throw e;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error Recovery**\n\n**Fix:**\n```javascript\ntry { return await fetch(url); } catch (error) {\n  logger.warn('Fetch failed, using cache', error);\n  return cachedData;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error_recovery"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntags = tags ? tags.concat(newTag) : [newTag];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Logical Assignment**\n\n**Fix:**\n```javascript\ntags ??= [newTag];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_logical_assignment"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.cookie = 'cart=' + JSON.stringify(cartItems);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using document.cookie for complex data**\n\n**Fix:**\n```javascript\n// Use localStorage or sessionStorage for structured data:\nlocalStorage.setItem('cart', JSON.stringify(cartItems));\nconst cartItems = JSON.parse(localStorage.getItem('cart'));\n// 5MB limit vs 4KB for cookies, no bandwidth waste\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_document.cookie_for_complex_data"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result = [];\nfor (var i = 0; i < arr.length; i++) {\n  if (arr[i] > 0) result.push(arr[i] * 2);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Imperative Loop**\n\n**Fix:**\n```javascript\nconst result = arr.filter(x => x > 0).map(x => x * 2);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "imperative_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction createLogger(prefix) {\n  return function(msg) {\n    console.log('[' + prefix + '] ' + msg);\n  };\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Factory Function**\n\n**Fix:**\n```javascript\nconst createLogger = prefix => msg => {\n  console.log(`[${prefix}] ${msg}`);\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "factory_function"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<iframe src=\"userProvidedUrl\"></iframe>\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Unsafe iframe**\n\n**Fix:**\n```javascript\n<iframe src=\"userProvidUrl\" sandbox=\"allow-scripts allow-sameorigin\"></iframe>\n// sandbox restricts frame capabilities\n// Only allow specific origins in production\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "unsafe_iframe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Cross-tab communication\nlocalStorage.setItem('event', JSON.stringify(data));\nwindow.addEventListener('storage', handler);\n// Polling approach\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing BroadcastChannel**\n\n**Fix:**\n```javascript\nconst channel = new BroadcastChannel('app');\nchannel.postMessage(data);\nchannel.onmessage = (e) => handle(e.data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_broadcastchannel"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/api/login', handleLogin);\n// No rate limiting\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing rate limiting**\n\n**Fix:**\n```javascript\nconst rateLimit = require('express-rate-limit');\nconst limiter = rateLimit({ windowMs: 60000, max: 10 });\napp.post('/api/login', limiter, handleLogin);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_rate_limiting"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst pattern = /\\d+/;\nif (pattern.test(input)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Without Anchors**\n\n**Fix:**\n```javascript\nconst pattern = /^\\d+$/;\n// Anchors ensure full string match\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_without_anchors"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst API_KEY = 'sk-abc123';\nfetch('https://api.com?key=' + API_KEY);\n// Exposed in client code\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Storing Secrets in Client**\n\n**Fix:**\n```javascript\n// Use server-side proxy\nfetch('/api/proxy', { method: 'POST' });\n// Server adds API key\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "storing_secrets_in_client"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst grouped = {};\narr.forEach(item => {\n  (grouped[item.category] ||= []).push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array grouping**\n\n**Fix:**\n```javascript\nconst grouped = Object.groupBy(arr, item => item.category);\n// Proposed Object.groupBy\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_grouping"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {\n  name: 'test',\n  methods: {\n    greet: function() {\n      console.log(this.name);\n    }\n  }\n};\nobj.methods.greet(); // undefined\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: this in Nested Object**\n\n**Fix:**\n```javascript\nconst obj = {\n  name: 'test',\n  methods: {\n    greet() {\n      console.log(obj.name);\n    }\n  }\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "this_in_nested_object"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nexport { foo, bar, baz } from './module';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing export * as**\n\n**Fix:**\n```javascript\nexport * as module from './module';\n// Group all exports under a namespace\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_export_*_as"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('scroll', () => {\n  images.forEach(img => {\n    if (img.getBoundingClientRect().top < window.innerHeight) {\n      img.src = img.dataset.src;\n    }\n  });\n});\n// Runs on every scroll event\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using IntersectionObserver for lazy loading**\n\n**Fix:**\n```javascript\nconst observer = new IntersectionObserver((entries) => {\n  entries.forEach(entry => {\n    if (entry.isIntersecting) {\n      entry.target.src = entry.target.dataset.src;\n      observer.unobserve(entry.target);\n    }\n  });\n});\ndocument.querySelectorAll('[data-src]').forEach(img => observer.observe(img));\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_intersectionobserver_for_lazy_loading"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// Cannot cancel\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing AbortSignal**\n\n**Fix:**\n```javascript\nconst controller = new AbortController();\ntimeoutId = setTimeout(() => controller.abort(), 5000);\nconst data = await fetch(url, { signal: controller.signal });\nclearTimeout(timeoutId);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_abortsignal"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result = [];\narr.forEach(function(item) {\n  if (predicate(item)) result.push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of filter**\n\n**Fix:**\n```javascript\nconst result = arr.filter(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_filter"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.location = userInput;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Unsafe Redirect**\n\n**Fix:**\n```javascript\n// Validate before redirecting:\nconst allowedUrls = ['/dashboard', '/profile', '/settings'];\nif (allowedUrls.includes(userInput)) {\n  window.location.href = userInput;\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "unsafe_redirect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst fs = require('fs');\nconst path = require('path');\n// CommonJS in ESM project\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing require vs import**\n\n**Fix:**\n```javascript\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_require_vs_import"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst query = '?foo=bar&baz=qux';\n// Manual parsing\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing URLSearchParams**\n\n**Fix:**\n```javascript\nconst params = new URLSearchParams(query);\nparams.get('foo'); // 'bar'\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_urlsearchparams"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (key in obj) {\n  const value = obj[key];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Reflect**\n\n**Fix:**\n```javascript\nif (Reflect.has(obj, key)) {\n  const value = Reflect.get(obj, key);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_reflect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst pattern = /(a+)+b/;\npattern.test('aaaaaaaaaaaaaaaaac');\n// Exponential time\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Catastrophic Backtracking**\n\n**Fix:**\n```javascript\nconst pattern = /a+b/;\n// Simplify to avoid nested quantifiers\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_catastrophic_backtracking"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst __dirname = process.cwd();\n// Not available in ESM\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing import.meta**\n\n**Fix:**\n```javascript\nimport { fileURLToPath } from 'url';\nimport { dirname } from 'path';\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_import.meta"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass MyClass {\n  static items = [];\n}\n// Need to populate in constructor or method\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Static Blocks**\n\n**Fix:**\n```javascript\nclass MyClass {\n  static items = [];\n  static {\n    this.items.push('initialized');\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_static_blocks"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction addTax(amount, rate) {\n  return amount * (1 + rate);\n}\naddTax(100, 0.08);\naddTax(200, 0.08);\naddTax(300, 0.08);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Curry**\n\n**Fix:**\n```javascript\nconst addTax = rate => amount => amount * (1 + rate);\nconst addSalesTax = addTax(0.08);\naddSalesTax(100);\naddSalesTax(200);\naddSalesTax(300);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_curry"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = { name: 'test' };\nobj.newProp = 'value'; // Allowed\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.seal**\n\n**Fix:**\n```javascript\nconst obj = Object.seal({ name: 'test' });\nobj.newProp = 'value'; // Forbidden\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.seal"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar found = false;\narr.forEach(function(item) {\n  if (predicate(item)) found = true;\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of some**\n\n**Fix:**\n```javascript\nconst found = arr.some(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_some"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar count = count !== undefined && count !== null ? count : 0;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Nullish Coalescing**\n\n**Fix:**\n```javascript\nconst count = value ?? 0;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_nullish_coalescing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...arr];\nreturn copy.sort(compareFn);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.toSorted**\n\n**Fix:**\n```javascript\nreturn arr.toSorted(compareFn);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.tosorted"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// package.json has \"type\": \"module\"\nconst fs = require('fs'); // Error!\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using CommonJS in ESM project**\n\n**Fix:**\n```javascript\n// package.json has \"type\": \"module\"\nimport fs from 'node:fs';\nimport { readFile } from 'node:fs/promises';\n// Or use createRequire for CJS-only packages:\nimport { createRequire } from 'module';\nconst require = createRequire(import.meta.url);\nconst lodash = require('lodash');\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_commonjs_in_esm_project"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar count = 0;\nfor (var key in obj) count++;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.keys/values/entries**\n\n**Fix:**\n```javascript\nconst count = Object.keys(obj).length;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.keys/values/entries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.setAttribute('class', 'active');\nelement.setAttribute('value', 'text');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: setAttribute Instead of Property**\n\n**Fix:**\n```javascript\nelement.classList.add('active');\nelement.value = 'text';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "setattribute_instead_of_property"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar temp = a;\na = b;\nb = temp;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Swapping with Destructuring**\n\n**Fix:**\n```javascript\n[a, b] = [b, a];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_swapping_with_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('renders correctly', () => {\n  const { container } = render(<Component />);\n  expect(container.innerHTML).toContain('text');\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Snapshot Test**\n\n**Fix:**\n```javascript\ntest('renders correctly', () => {\n  const { container } = render(<Component />);\n  expect(container).toMatchSnapshot();\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_snapshot_test"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconfig = config || defaults;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Logical Assignment**\n\n**Fix:**\n```javascript\nconfig ??= defaults;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_logical_assignment"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst sorted = [...arr].sort();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.toSorted**\n\n**Fix:**\n```javascript\nconst sorted = arr.toSorted();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.tosorted"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst { exec } = require('child_process');\nexec('ls -la', (err, stdout) => {\n  if (err) throw err;\n  console.log(stdout);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Child Process**\n\n**Fix:**\n```javascript\nconst { exec } = require('child_process');\nexec('ls -la', (err, stdout) => {\n  if (err) throw err;\n  console.log(stdout);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_child_process"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var i = 0; i < arr.length; i++) {\n  console.log(arr[i]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing for...of**\n\n**Fix:**\n```javascript\nfor (const item of arr) {\n  console.log(item);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_for...of"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Generate random ID\nMath.random().toString(36).slice(2);\n// Not cryptographically secure\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing crypto API**\n\n**Fix:**\n```javascript\n// Web Crypto API\nconst bytes = new Uint8Array(16);\ncrypto.getRandomValues(bytes);\nconst id = Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_crypto_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Create file from string\nconst file = new File([content], 'name.txt', { type: 'text/plain' });\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Blob**\n\n**Fix:**\n```javascript\nconst blob = new Blob([content], { type: 'text/plain' });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_blob"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst results = await Promise.all(tasks);\n// One failure kills all\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Promise.all Without Error Isolation**\n\n**Fix:**\n```javascript\nconst results = await Promise.allSettled(tasks);\nconst successes = results.filter(r => r.status === 'fulfilled');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "promise.all_without_error_isolation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.querySelectorAll('.btn').forEach(btn => {\n  btn.addEventListener('click', handleClick);\n});\n// Breaks when elements are dynamically added\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing event delegation**\n\n**Fix:**\n```javascript\ndocument.getElementById('container').addEventListener('click', (e) => {\n  const btn = e.target.closest('.btn');\n  if (btn) handleClick(e);\n});\n// Works for dynamic elements too\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_event_delegation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst express = require('express');\nconst app = express();\napp.listen(3000);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using clustering**\n\n**Fix:**\n```javascript\nconst cluster = require('cluster');\nconst os = require('os');\nconst numCPUs = os.cpus().length;\n\nif (cluster.isPrimary) {\n  for (let i = 0; i < numCPUs; i++) cluster.fork();\n  cluster.on('exit', (worker, code) => cluster.fork());\n} else {\n  app.listen(3000);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_clustering"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('focus', handleFocus);\nelement.addEventListener('blur', handleBlur);\n// Doesn't catch focusin/focusout\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Focus/Blur Events**\n\n**Fix:**\n```javascript\ndocument.addEventListener('focusin', handleFocus);\ndocument.addEventListener('focusout', handleBlur);\n// Use bubbling equivalents\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_focus/blur_events"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar count = 0;\nfor (var key in obj) count++;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.keys for Length**\n\n**Fix:**\n```javascript\nconst count = Object.keys(obj).length;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.keys_for_length"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('2+2=4', () => expect(2+2).toBe(4));\ntest('3+3=6', () => expect(3+3).toBe(6));\ntest('1+1=2', () => expect(1+1).toBe(2));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Parameterized Test**\n\n**Fix:**\n```javascript\ntest.each([\n  [2, 2, 4],\n  [3, 3, 6],\n  [1, 1, 2],\n])('%p + %p = %p', (a, b, expected) => {\n  expect(a + b).toBe(expected);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_parameterized_test"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = step3(step2(step1(data)));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Pipeline Operator**\n\n**Fix:**\n```javascript\nconst result = data\n  |> step1\n  |> step2\n  |> step3;\n// Pipeline operator (stage 1)\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_pipeline_operator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar x = 1;\nif (true) {\n  var x = 2;\n}\nconsole.log(x); // 2\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Block Scoping**\n\n**Fix:**\n```javascript\nlet x = 1;\nif (true) {\n  let x = 2;\n}\nconsole.log(x); // 1\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_block_scoping"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.onerror = function(msg, url, line) {\n  console.log(msg);\n};\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error Logging**\n\n**Fix:**\n```javascript\nwindow.onerror = function(msg, url, line, col, error) {\n  sendToSentry(error, { url, line, col });\n  return true;\n};\nwindow.addEventListener('unhandledrejection', e => {\n  sendToSentry(e.reason);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error_logging"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar msg = 'Hello, ' + name + '! You have ' + count + ' items.';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: String Concatenation Instead of Template Literals**\n\n**Fix:**\n```javascript\nconst msg = `Hello, ${name}! You have ${count} items.`\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "string_concatenation_instead_of_template_literals"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconsole.log('Starting server');\nconsole.error('Error:', err);\n// No structured logging\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing logging**\n\n**Fix:**\n```javascript\nconst winston = require('winston');\nconst logger = winston.createLogger({ level: 'info' });\nlogger.info('Starting server');\nlogger.error('Error:', err);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_logging"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('fetches data', () => {\n  const data = fetchData();\n  expect(data).toBeDefined();\n});\n// fetchData is async but not awaited\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Async Test**\n\n**Fix:**\n```javascript\ntest('fetches data', async () => {\n  const data = await fetchData();\n  expect(data).toBeDefined();\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_async_test"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar counter = { count: 0 };\nfunction inc() { counter.count++; }\n// External mutation possible\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Closure as State Container**\n\n**Fix:**\n```javascript\nfunction createCounter() {\n  let count = 0;\n  return { inc: () => ++count, get: () => count };\n}\n// Encapsulated state\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "closure_as_state_container"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (let i = 0; i < items.length; i++) {\n  const div = document.createElement('div');\n  div.textContent = items[i];\n  container.appendChild(div);\n  const rect = div.getBoundingClientRect(); // forces layout\n  console.log(rect);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Forcing layout thrashing**\n\n**Fix:**\n```javascript\n// Read all, then write all:\nconst fragment = document.createDocumentFragment();\nconst divs = items.map(item => {\n  const div = document.createElement('div');\n  div.textContent = item;\n  fragment.appendChild(div);\n  return div;\n});\ncontainer.appendChild(fragment);\nconst rects = divs.map(d => d.getBoundingClientRect());\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "forcing_layout_thrashing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction readFile(path, callback) {\n  fs.readFile(path, 'utf8', callback);\n}\n// Callback style\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing util.promisify**\n\n**Fix:**\n```javascript\nconst { promisify } = require('util');\nconst readFile = promisify(fs.readFile);\nconst data = await readFile(path, 'utf8');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_util.promisify"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// No health check endpoint\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing health check**\n\n**Fix:**\n```javascript\napp.get('/health', (req, res) => {\n  res.json({ status: 'ok', uptime: process.uptime() });\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_health_check"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst name = options.name || 'default';\n// Fails if name is empty string\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object Destructuring Default**\n\n**Fix:**\n```javascript\nconst { name = 'default' } = options;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object_destructuring_default"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nworker.postMessage(data);\n// Copies data between threads\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing SharedArrayBuffer**\n\n**Fix:**\n```javascript\nconst shared = new SharedArrayBuffer(size);\nconst view = new Float32Array(shared);\n// Multiple threads access same memory\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_sharedarraybuffer"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('scroll', function() {\n  if (element.getBoundingClientRect().top < window.innerHeight) {\n    loadMore();\n  }\n});\n// Runs on every scroll event\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing IntersectionObserver**\n\n**Fix:**\n```javascript\nconst observer = new IntersectionObserver(entries => {\n  if (entries[0].isIntersecting) loadMore();\n}, { threshold: 0.1 });\nobserver.observe(element);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_intersectionobserver"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar values = [];\nfor (var key in obj) values.push(obj[key]);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.values**\n\n**Fix:**\n```javascript\nconst values = Object.values(obj);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.values"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst city = user && user.address && user.address.city;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing optional chaining**\n\n**Fix:**\n```javascript\nconst city = user?.address?.city;\n// Optional chaining (?.) - cleaner null safety\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_optional_chaining"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = fs.readFileSync('largefile.txt');\nprocess(data);\n// Loads entire file into memory\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Stream**\n\n**Fix:**\n```javascript\nconst stream = fs.createReadStream('largefile.txt');\nstream.pipe(process.stdin);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_stream"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = eval('(' + jsonString + ')');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Insecure deserialization**\n\n**Fix:**\n```javascript\nconst data = JSON.parse(jsonString);\n// JSON.parse is safe. eval() executes arbitrary code.\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "insecure_deserialization"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (Math.floor(x) === x) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Number.isInteger**\n\n**Fix:**\n```javascript\nif (Number.isInteger(x)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_number.isinteger"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr = [];\nfor (var i = 0; i < nodelets.length; i++) arr.push(nodelets[i]);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.from**\n\n**Fix:**\n```javascript\nconst arr = Array.from(nodelets);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.from"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (value instanceof Array) { ... }\n// Fails across iframes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.isArray**\n\n**Fix:**\n```javascript\nif (Array.isArray(value)) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.isarray"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar flat = [];\narr.forEach(function(sub) {\n  sub.forEach(function(item) { flat.push(item); });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.flat**\n\n**Fix:**\n```javascript\nconst flat = arr.flat();\n// Or arr.flat(depth) for nested arrays\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.flat"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction fib(n) {\n  if (n <= 1) return n;\n  return fib(n - 1) + fib(n - 2);\n}\n// O(2^n)\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Function Memoization**\n\n**Fix:**\n```javascript\nconst memo = new Map();\nfunction fib(n) {\n  if (n <= 1) return n;\n  if (!memo.has(n)) memo.set(n, fib(n - 1) + fib(n - 2));\n  return memo.get(n);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "function_memoization"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntransform(data, options);\n// Data is first argument\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Pipe Data First**\n\n**Fix:**\n```javascript\ndata.pipe(transform(options));\n// Data-last convention\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_pipe_data_first"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst diff = date1 - date2;\nconst days = Math.floor(diff / 86400000);\n// Wrong for DST transitions\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Difference**\n\n**Fix:**\n```javascript\nconst diff = date1.getTime() - date2.getTime();\nconst days = Math.floor(diff / (1000 * 60 * 60 * 24));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_difference"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst xhr = new XMLHttpRequest();\nxhr.open('GET', '/data', false); // synchronous!\nxhr.send();\nconst data = xhr.responseText;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Synchronous XHR**\n\n**Fix:**\n```javascript\nfetch('/data')\n  .then(r => r.json())\n  .then(data => {\n    // Process response\n  });\n// Or async/await:\nconst resp = await fetch('/data');\nconst data = await resp.json();\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "synchronous_xhr"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// server.js\nconst db = require('./db');\nconst app = require('./app')(db);\n// Shared state across hot-reloads in dev\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Global module state**\n\n**Fix:**\n```javascript\n// Use dependency injection:\nconst createApp = (db) => {\n  const app = express();\n  app.use('/api', apiRoutes(db));\n  return app;\n};\n// Fresh state per test / reload\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "global_module_state"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst merged = Object.assign({}, defaults, overrides);\n// Shallow merge - nested objects replaced\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using Object.assign for deep merge**\n\n**Fix:**\n```javascript\n// Deep merge utility:\nfunction deepMerge(target, ...sources) {\n  return sources.reduce((acc, source) => {\n    for (const key of Object.keys(source)) {\n      if (source[key] && typeof source[key] === 'object') {\n        acc[key] = deepMerge(acc[key] || {}, source[key]);\n      } else {\n        acc[key] = source[key];\n      }\n    }\n    return acc;\n  }, { ...target });\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_object.assign_for_deep_merge"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar CONFIG = { api: '/api', timeout: 5000 };\nCONFIG.api = '/new'; // Mutated!\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.freeze**\n\n**Fix:**\n```javascript\nconst CONFIG = Object.freeze({ api: '/api', timeout: 5000 });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.freeze"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction sum() {\n  var args = Array.prototype.slice.call(arguments);\n  return args.reduce(function(a, b) { return a + b; }, 0);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Rest Parameters**\n\n**Fix:**\n```javascript\nconst sum = (...args) => args.reduce((a, b) => a + b, 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_rest_parameters"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nobj.secret = 'key';\n// Enumerable, writable, configurable\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Object.defineProperty for Private**\n\n**Fix:**\n```javascript\nObject.defineProperty(obj, 'secret', {\n  value: 'key',\n  enumerable: false,\n  writable: false,\n  configurable: false,\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "object.defineproperty_for_private"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...arr];\ncopy.splice(start, deleteCount, ...items);\nreturn copy;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.toSpliced**\n\n**Fix:**\n```javascript\nreturn arr.toSpliced(start, deleteCount, ...items);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.tospliced"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nstate.items[index].name = newName;\n// Direct mutation of nested state\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing immutability helper**\n\n**Fix:**\n```javascript\nconst newState = {\n  ...state,\n  items: state.items.map((item, i) =>\n    i === index ? { ...item, name: newName } : item\n  )\n};\n// Or use Immer for simpler mutable-style updates\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_immutability_helper"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Encode string to bytes\nArray.from(str).map(c => c.charCodeAt(0));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing TextEncoder/Decoder**\n\n**Fix:**\n```javascript\nconst encoder = new TextEncoder();\nconst bytes = encoder.encode(str);\nconst decoder = new TextDecoder();\nconst decoded = decoder.decode(bytes);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_textencoder/decoder"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar values = [];\nfor (var key in obj) values.push(obj[key]);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.values**\n\n**Fix:**\n```javascript\nconst values = Object.values(obj);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.values"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (value === null || value === undefined) {\n  value = defaultValue;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Nullish Check**\n\n**Fix:**\n```javascript\nvalue ??= defaultValue;\n// Or: value = value ?? defaultValue;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_nullish_check"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('resize', function() {\n  const width = element.offsetWidth;\n  updateLayout(width);\n});\n// Fires for all resizes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing ResizeObserver**\n\n**Fix:**\n```javascript\nconst observer = new ResizeObserver(entries => {\n  for (const entry of entries) {\n    updateLayout(entry.contentRect.width);\n  }\n});\nobserver.observe(element);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_resizeobserver"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = data.filter(predicate).map(transform);\n// Want to log intermediate step\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Tap/Side Effect**\n\n**Fix:**\n```javascript\nconst tap = fn => x => { fn(x); return x; };\nconst result = data\n  .filter(predicate)\n  .pipe(tap(console.log))\n  .map(transform);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_tap/side_effect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ninput.addEventListener('input', function(e) {\n  search(e.target.value);\n});\n// Calls API on every keystroke\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Debounce/Throttle**\n\n**Fix:**\n```javascript\ninput.addEventListener('input', debounce(function(e) {\n  search(e.target.value);\n}, 300);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_debounce/throttle"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { process(); } catch (e) {\n  console.error(e);\n  return null;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Catch Block Without Re-throw**\n\n**Fix:**\n```javascript\ntry { process(); } catch (error) {\n  logger.error('Processing failed', error);\n  throw error;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "catch_block_without_re-throw"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var i in arr) {\n  console.log(arr[i]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: for...in for Arrays**\n\n**Fix:**\n```javascript\nfor (const item of arr) {\n  console.log(item);\n}\n// for...in iterates keys, not values\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "for...in_for_arrays"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = [];\nfor (let i = 0; i < arr.length; i++) {\n  if (arr[i] > 0) result.push(arr[i] * 2);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using Array.prototype methods**\n\n**Fix:**\n```javascript\nconst result = arr.filter(x => x > 0).map(x => x * 2);\n// Composable, declarative, no mutation\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_array.prototype_methods"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst merged = {};\nfor (const key of Object.keys(a)) merged[key] = a[key];\nfor (const key of Object.keys(b)) merged[key] = b[key];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object Assign for Merge**\n\n**Fix:**\n```javascript\nconst merged = { ...a, ...b };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object_assign_for_merge"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst obj = {};\nentries.forEach(([key, value]) => { obj[key] = value; });\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.fromEntries**\n\n**Fix:**\n```javascript\nconst obj = Object.fromEntries(entries);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.fromentries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (value == 0) { ... }\nif (value == undefined) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using == instead of ==**\n\n**Fix:**\n```javascript\nif (value === 0) { ... }\nif (value === undefined) { ... }\n// === checks both value and type\n// == performs type coercion (source of bugs)\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_==_instead_of_=="
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst date = new Date(2024, 2, 30);\n// March 30th doesn't exist - rolls over\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Validation**\n\n**Fix:**\n```javascript\nconst date = new Date(2024, 2, 30);\nif (date.getMonth() !== 2) throw new Error('Invalid date');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_validation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (/^\\s+$/.test(str)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Instead of String Method**\n\n**Fix:**\n```javascript\nif (!str.trim()) { ... }\n// String method is clearer\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_instead_of_string_method"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst doubleAll = arr => arr.map(x => x * 2);\n// Could be point-free\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Point-Free**\n\n**Fix:**\n```javascript\nconst double = x => x * 2;\nconst doubleAll = map(double);\n// Point-free style\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_point-free"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// May return cached data\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Cache Control**\n\n**Fix:**\n```javascript\nconst data = await fetch(url, {\n  cache: 'no-store',\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_cache_control"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = { name: 'test' };\nobj.name = 'changed'; // Allowed\nobj.newProp = 'value'; // Also allowed\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.seal**\n\n**Fix:**\n```javascript\nconst obj = Object.seal({ name: 'test' });\nobj.name = 'changed'; // Allowed\nobj.newProp = 'value'; // Forbidden\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.seal"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nitems.map(item => {\n  console.log(item);\n  process(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Array map for side effects**\n\n**Fix:**\n```javascript\nitems.forEach(item => {\n  console.log(item);\n  process(item);\n});\n// map() returns a new array - use forEach() for side effects\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "array_map_for_side_effects"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst greet = (prefix, name) => prefix + ' ' + name;\ngreet('Hello', 'Alice');\ngreet('Hello', 'Bob');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Partial Application**\n\n**Fix:**\n```javascript\nconst partial = (fn, ...args) => (...rest) => fn(...args, ...rest);\nconst greetHello = partial((p, n) => p + ' ' + n, 'Hello');\ngreetHello('Alice');\ngreetHello('Bob');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_partial_application"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nJSON.stringify(new Date());\n// Becomes string\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: JSON.stringify Date**\n\n**Fix:**\n```javascript\nJSON.stringify(new Date(), (key, value) => {\n  if (value instanceof Date) return value.toISOString();\n  return value;\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "json.stringify_date"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction cleanup() {\n  closeConnection();\n}\n// Called manually, error-prone\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing FinalizationRegistry**\n\n**Fix:**\n```javascript\nconst registry = new FinalizationRegistry((heldValue) => {\n  closeConnection(heldValue);\n});\nregistry.register(obj, connectionId);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_finalizationregistry"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst el = document.getElementById('chart');\nconst chart = new Chart(el);\n// el is removed from DOM but chart still references it\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Memory leak - detached DOM reference**\n\n**Fix:**\n```javascript\nconst el = document.getElementById('chart');\nconst chart = new Chart(el);\n// On cleanup:\nchart.destroy();\n// Properly releases references\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "memory_leak_-_detached_dom_reference"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction sum() {\n  let total = 0;\n  for (let i = 0; i < arguments.length; i++) {\n    total += arguments[i];\n  }\n  return total;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using arguments object**\n\n**Fix:**\n```javascript\nfunction sum(...args) {\n  return args.reduce((acc, val) => acc + val, 0);\n  // Rest parameters are proper arrays\n  // No 'this' binding issues\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_arguments_object"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst tomorrow = new Date();\ntomorrow.setDate(tomorrow.getDate() + 1);\n// Mutates original\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Arithmetic**\n\n**Fix:**\n```javascript\nconst tomorrow = new Date(Date.now() + 86400000);\n// Non-mutating\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_arithmetic"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Button {\n  constructor() {\n    this.handleClick = this.handleClick.bind(this);\n  }\n  handleClick() { ... }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing class field syntax**\n\n**Fix:**\n```javascript\nclass Button {\n  handleClick = () => { ... };\n  // Class fields are auto-bound to the instance\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_class_field_syntax"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function main() {\n  const config = await loadConfig();\n  const app = createApp(config);\n  app.start();\n}\nmain();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Top-level await**\n\n**Fix:**\n```javascript\nconst config = await loadConfig();\nconst app = createApp(config);\napp.start();\n// Top-level await in ESM modules\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_top-level_await"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n\"type\": \"commonjs\"\n// .js files treated as CommonJS\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing ESM in package.json**\n\n**Fix:**\n```javascript\n\"type\": \"module\"\n// .js files treated as ES modules\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_esm_in_package.json"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function main() {\n  await process();\n  process.exit(0);\n}\n// May exit before cleanup\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: process.exit in Promise**\n\n**Fix:**\n```javascript\nasync function main() {\n  await process();\n  process.exitCode = 0;\n}\nmain().catch(err => {\n  console.error(err);\n  process.exitCode = 1;\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "process.exit_in_promise"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.location.href = '/new-page';\n// Full page reload\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing History API**\n\n**Fix:**\n```javascript\nhistory.pushState({ page: 2 }, '', '/new-page');\n// SPA navigation\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_history_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst first = arr[0] || 'default';\n// Fails if arr[0] is falsy\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array Destructuring Default**\n\n**Fix:**\n```javascript\nconst [first = 'default'] = arr;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_destructuring_default"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlocalStorage.setItem('token', authToken);\n// Accessible to any script\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: localStorage for Sensitive Data**\n\n**Fix:**\n```javascript\n// Use HttpOnly cookies for tokens\n// Or sessionStorage for session data\n// Never store secrets in localStorage\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "localstorage_for_sensitive_data"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar hasAdult = false;\nfor (var i = 0; i < people.length; i++) {\n  if (people[i].age >= 18) { hasAdult = true; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.some for Check**\n\n**Fix:**\n```javascript\nconst hasAdult = people.some(p => p.age >= 18);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.some_for_check"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr = [5];\n// Creates array with one element\nvar arr = Array(5);\n// Creates sparse array with 5 empty slots\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.of**\n\n**Fix:**\n```javascript\nconst arr = Array.of(5);\n// Creates array with one element\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.of"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst url = req.query.redirect;\nres.redirect(url);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Open Redirect**\n\n**Fix:**\n```javascript\nconst allowedHosts = ['example.com', 'app.example.com'];\nconst url = req.query.redirect;\nconst parsed = new URL(url, 'https://example.com');\nif (!allowedHosts.includes(parsed.hostname)) {\n  return res.redirect('/');\n}\nres.redirect(url);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "open_redirect"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst pattern = /test/g;\nconst m1 = pattern.exec('test');\nconst m2 = pattern.exec('test');\n// m2 is null due to lastIndex\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Global State**\n\n**Fix:**\n```javascript\nconst pattern = /test/g;\nconst m1 = pattern.exec('test');\npattern.lastIndex = 0;\nconst m2 = pattern.exec('test');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_global_state"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...arr];\ncopy[index] = value;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.with**\n\n**Fix:**\n```javascript\nconst result = arr.with(index, value);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.with"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass AppError extends Error {\n  constructor(code, message) {\n    super(message);\n    this.code = code;\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Custom Error Without Name**\n\n**Fix:**\n```javascript\nclass AppError extends Error {\n  constructor(code, message) {\n    super(message);\n    this.name = 'AppError';\n    this.code = code;\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "custom_error_without_name"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar clone = Object.assign({}, obj);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object Spread for Clone**\n\n**Fix:**\n```javascript\nconst clone = { ...obj };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object_spread_for_clone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.parentNode.removeChild(element);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.remove**\n\n**Fix:**\n```javascript\nelement.remove();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.remove"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result = [];\narr.forEach(function(item) {\n  result.push(transform(item));\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of map**\n\n**Fix:**\n```javascript\nconst result = arr.map(transform);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_map"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar name = 'test';\nvar config = { name: name };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Shorthand Properties**\n\n**Fix:**\n```javascript\nconst name = 'test';\nconst config = { name };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_shorthand_properties"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (/\\.js$/.test(file)) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Instead of endsWith**\n\n**Fix:**\n```javascript\nif (file.endsWith('.js')) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_instead_of_endswith"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Account {\n  constructor(balance) {\n    this.balance = balance;\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Private Fields**\n\n**Fix:**\n```javascript\nclass Account {\n  #balance;\n  constructor(balance) { this.#balance = balance; }\n  getBalance() { return this.#balance; }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_private_fields"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction range(start, end) {\n  const result = [];\n  for (let i = start; i < end; i++) result.push(i);\n  return result;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Generator**\n\n**Fix:**\n```javascript\nfunction* range(start, end) {\n  for (let i = start; i < end; i++) yield i;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_generator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...arr].reverse();\nconst sorted = [...arr].sort();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing toReversed/toSorted**\n\n**Fix:**\n```javascript\nconst reversed = arr.toReversed();\nconst sorted = arr.toSorted();\n// Non-mutating alternatives\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_toreversed/tosorted"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nawait fetch(url, { method: 'POST', body: data });\n// Missing Content-Type\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Headers**\n\n**Fix:**\n```javascript\nawait fetch(url, {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify(data),\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_headers"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconsole.log(x);\nlet x = 5;\n// ReferenceError\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Temporal Dead Zone**\n\n**Fix:**\n```javascript\nlet x = 5;\nconsole.log(x);\n// Initialize before use\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "temporal_dead_zone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('component renders', () => {\n  render(<Component />);\n});\n// No data flow test\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Integration Test**\n\n**Fix:**\n```javascript\ntest('full data flow', async () => {\n  const { findByText } = render(<App />);\n  await userEvent.click(screen.getByText('Load'));\n  await findByText('Data loaded');\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_integration_test"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('generates token', () => {\n  const token = generateToken();\n  expect(token.length).toBe(32);\n  expect(token).toBe('abc...'); // Hardcoded expected value\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Flaky test with randomness**\n\n**Fix:**\n```javascript\nit('generates token', () => {\n  const token = generateToken();\n  expect(token).toHaveLength(32);\n  expect(token).toMatch(/^[a-zA-Z0-9]+$/);\n  // Test properties, not exact values\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "flaky_test_with_randomness"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst app = express();\napp.listen(3000);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using health check endpoint**\n\n**Fix:**\n```javascript\nconst app = express();\n\napp.get('/health', (req, res) => {\n  res.json({\n    status: 'ok',\n    uptime: process.uptime(),\n    timestamp: Date.now()\n  });\n});\n\napp.listen(3000);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_health_check_endpoint"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar city = user && user.address && user.address.city;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Optional Chaining**\n\n**Fix:**\n```javascript\nconst city = user?.address?.city;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_optional_chaining"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst last = arr[arr.length - 1];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.at for Index**\n\n**Fix:**\n```javascript\nconst last = arr.at(-1);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.at_for_index"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst resp = await fetch('/api/data');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing timeout for fetch**\n\n**Fix:**\n```javascript\nconst controller = new AbortController();\nconst timeout = setTimeout(() => controller.abort(), 5000);\ntry {\n  const resp = await fetch('/api/data', {\n    signal: controller.signal\n  });\n} finally {\n  clearTimeout(timeout);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_timeout_for_fetch"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst last = arr[arr.length - 1];\nconst secondLast = arr[arr.length - 2];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing at() for Negative Index**\n\n**Fix:**\n```javascript\nconst last = arr.at(-1);\nconst secondLast = arr.at(-2);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_at()_for_negative_index"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst pattern = /\\u{1F600}/;\n// Doesn't match emoji\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Without 'u' Flag**\n\n**Fix:**\n```javascript\nconst pattern = /\\u{1F600}/u;\n// Unicode flag for code points\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_without_'u'_flag"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction createError(msg) {\n  const e = new Error(msg);\n  delete e.stack;\n  return e;\n}\n// Loses debugging info\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Without Stack Trace**\n\n**Fix:**\n```javascript\nfunction createError(msg) {\n  return new Error(msg);\n  // Preserve stack trace for debugging\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_without_stack_trace"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var i = 0; i < arr.length; i++) {\n  console.log(arr[i]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: for Loop Instead of for...of**\n\n**Fix:**\n```javascript\nfor (const item of arr) {\n  console.log(item);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "for_loop_instead_of_for...of"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet resolve, reject;\nconst promise = new Promise((res, rej) => {\n  resolve = res;\n  reject = rej;\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Promise.withResolvers**\n\n**Fix:**\n```javascript\nconst { promise, resolve, reject } = Promise.withResolvers();\n// Proposed Promise.withResolvers\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_promise.withresolvers"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar valid = true;\nfor (var i = 0; i < arr.length; i++) {\n  if (arr[i] < 0) { valid = false; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.every**\n\n**Fix:**\n```javascript\nconst valid = arr.every(x => x >= 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.every"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function handler() {\n  await riskyOperation();\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not handling unhandledRejection**\n\n**Fix:**\n```javascript\nprocess.on('unhandledRejection', (reason, promise) => {\n  console.error('Unhandled Rejection at:', promise, 'reason:', reason);\n});\n// In Express with async handlers:\napp.use(async (req, res, next) => {\n  try { await next(); }\n  catch (err) { next(err); }\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_handling_unhandledrejection"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nthrow { message: 'Error occurred', code: 404 };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Without Stack**\n\n**Fix:**\n```javascript\nconst error = new Error('Error occurred');\nerror.code = 404;\nthrow error;\n// Preserves stack trace\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_without_stack"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet sum = 0;\nfor (let i = 0; i < arr.length; i++) {\n  sum += arr[i];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: For loop instead of built-in**\n\n**Fix:**\n```javascript\nconst sum = arr.reduce((acc, val) => acc + val, 0);\n// Or for simple sum:\nconst sum = arr.reduce((a, b) => a + b, 0);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "for_loop_instead_of_built-in"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nuseEffect(() => {\n  const interval = setInterval(task, 1000);\n});\n// Interval persists after unmount\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Ref Cleanup**\n\n**Fix:**\n```javascript\nuseEffect(() => {\n  const interval = setInterval(task, 1000);\n  return () => clearInterval(interval);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_ref_cleanup"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction update() {\n  element.style.transform = 'translateX(' + x + 'px)';\n  x++;\n  setTimeout(update, 16);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing RequestAnimationFrame**\n\n**Fix:**\n```javascript\nfunction update() {\n  element.style.transform = `translateX(${x}px)`;\n  x++;\n  requestAnimationFrame(update);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_requestanimationframe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('creates user', () => {\n  db.insert({ name: 'Alice' });\n});\nit('lists users', () => {\n  const users = db.findAll();\n  expect(users).toHaveLength(1); // Depends on previous test\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Testing without isolation**\n\n**Fix:**\n```javascript\nbeforeEach(() => db.clear());\nafterEach(() => db.clear());\n\nit('creates user', () => {\n  db.insert({ name: 'Alice' });\n});\nit('lists users', () => {\n  db.insert({ name: 'Alice' });\n  const users = db.findAll();\n  expect(users).toHaveLength(1); // Independent\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "testing_without_isolation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst date = new Date('2024-01-15');\n// Local timezone assumed\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Timezone**\n\n**Fix:**\n```javascript\nconst date = new Date('2024-01-15T00:00:00+05:30');\n// Explicit timezone offset\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_timezone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfetch('/api/data')\n  .then(r => r.json())\n  .then(data => updateUI(data));\n// No .catch() - silent failure\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Uncaught promise rejection**\n\n**Fix:**\n```javascript\nasync function loadData() {\n  try {\n    const resp = await fetch('/api/data');\n    if (!resp.ok) throw new Error(`HTTP ${resp.status}`);\n    const data = await resp.json();\n    updateUI(data);\n  } catch (err) {\n    console.error('Load failed:', err);\n    showErrorMessage(err.message);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "uncaught_promise_rejection"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (arr.length > 0) {\n  var first = arr[0];\n  var last = arr[arr.length - 1];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.at for Index**\n\n**Fix:**\n```javascript\nconst first = arr.at(0);\nconst last = arr.at(-1);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.at_for_index"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Using JSDoc comments for types\n// No type checking\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing TypeScript config**\n\n**Fix:**\n```javascript\n# tsconfig.json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"outDir\": \"dist\",\n    \"rootDir\": \"src\",\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src\"]\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_typescript_config"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// a.js\nimport { b } from './b';\n// b.js\nimport { a } from './a';\n// Circular dependency\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Circular Dependency**\n\n**Fix:**\n```javascript\n// Extract shared code to c.js\n// a.js\nimport { c } from './c';\n// b.js\nimport { c } from './c';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "circular_dependency"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ninput.addEventListener('input', search);\n// Fires on every keystroke\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Debounce Without Implementation**\n\n**Fix:**\n```javascript\nfunction debounce(fn, delay) {\n  let timer;\n  return function(...args) {\n    clearTimeout(timer);\n    timer = setTimeout(() => fn(...args), delay);\n  };\n}\ninput.addEventListener('input', debounce(search, 300));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "debounce_without_implementation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (const id of ids) {\n  const el = document.getElementById(id);\n  el.classList.add('active');\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: QuerySelector in loop**\n\n**Fix:**\n```javascript\n// Cache references:\nconst els = ids.map(id => document.getElementById(id));\nfor (const el of els) {\n  el.classList.add('active');\n}\n// Or: document.querySelectorAll('#id1, #id2, ...')\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "queryselector_in_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfs.readFile('file.txt', 'utf8', (err, data) => {\n  if (err) throw err;\n  process(data);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: callback Style Instead of Promise**\n\n**Fix:**\n```javascript\nconst fs = require('fs').promises;\nconst data = await fs.readFile('file.txt', 'utf8');\nprocess(data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "callback_style_instead_of_promise"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar hasAdult = false;\nfor (var i = 0; i < people.length; i++) {\n  if (people[i].age >= 18) { hasAdult = true; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.some**\n\n**Fix:**\n```javascript\nconst hasAdult = people.some(p => p.age >= 18);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.some"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result = [];\narr.forEach(item => {\n  result = result.concat(transform(item));\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.flatMap**\n\n**Fix:**\n```javascript\nconst result = arr.flatMap(transform);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.flatmap"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst server = app.listen(3000);\n// No cleanup on SIGTERM\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing graceful shutdown**\n\n**Fix:**\n```javascript\nconst server = app.listen(3000);\n\nprocess.on('SIGTERM', () => {\n  console.log('SIGTERM received. Shutting down...');\n  server.close(() => {\n    // Close DB connections, finish requests\n    process.exit(0);\n  });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_graceful_shutdown"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst items = [1, 2, 3];\nitems.push(4);\nitems.filter(x => x > 2);\n// Original modified\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Mutating array in-place**\n\n**Fix:**\n```javascript\nconst items = [1, 2, 3];\nconst withNew = [...items, 4];\nconst filtered = items.filter(x => x > 2);\n// Original unchanged - predictable state\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "mutating_array_in-place"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar app = new Application();\napp.init();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing const for Class Instance**\n\n**Fix:**\n```javascript\nconst app = new Application();\napp.init();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_const_for_class_instance"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst API_KEY = 'sk_live_abc123';\nfetch('/api/data', { headers: { 'Authorization': API_KEY } });\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Client-side Secret**\n\n**Fix:**\n```javascript\n// Never store secrets in client-side code.\n// Use a backend proxy:\nfetch('/api/proxy/data')\n  .then(r => r.json());\n// Server adds the API key server-side.\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "client-side_secret"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst city = user && user.address && user.address.city;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Optional Chaining**\n\n**Fix:**\n```javascript\nconst city = user?.address?.city;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_optional_chaining"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar unique = [];\narr.forEach(function(item) {\n  if (unique.indexOf(item) === -1) unique.push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Set for Uniqueness**\n\n**Fix:**\n```javascript\nconst unique = [...new Set(arr)];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_set_for_uniqueness"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('resize', function() {\n  console.log(element.offsetWidth);\n});\n// Triggers for all resizes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing ResizeObserver**\n\n**Fix:**\n```javascript\nconst observer = new ResizeObserver(entries => {\n  console.log(entries[0].contentRect.width);\n});\nobserver.observe(element);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_resizeobserver"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst config = { host: 'localhost', port: 3000 };\nconfig.port = 8080;\n// Side effect\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Mutating object in-place**\n\n**Fix:**\n```javascript\nconst config = { host: 'localhost', port: 3000 };\nconst updated = { ...config, port: 8080 };\n// New object, original unchanged\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "mutating_object_in-place"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = capitalize(trim(toLower(input)));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using pipeline composition**\n\n**Fix:**\n```javascript\n// Right-to-left composition (lodash fp):\nimport { flow, toLower, trim, capitalize } from 'lodash/fp';\nconst normalize = flow(toLower, trim, capitalize);\nconst result = normalize(input);\n// Left-to-right (native):\nconst normalize = pipe(toLower, trim, capitalize);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_pipeline_composition"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst first = arr[0];\nconst rest = arr.slice(1);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array Rest**\n\n**Fix:**\n```javascript\nconst [first, ...rest] = arr;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_rest"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nform.addEventListener('submit', onSubmit);\n// Page reloads after submit\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing preventDefault**\n\n**Fix:**\n```javascript\nform.addEventListener('submit', (e) => {\n  e.preventDefault();\n  onSubmit(e);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_preventdefault"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (element.className === 'active') { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Element.matches**\n\n**Fix:**\n```javascript\nif (element.matches('.active')) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_element.matches"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<img src=\"photo.jpg\"> <!-- 4MB image -->\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Unoptimized image loading**\n\n**Fix:**\n```javascript\n<img src=\"photo.webp\" \n     srcset=\"photo-400w.webp 400w, photo-800w.webp 800w\"\n     sizes=\"(max-width: 600px) 400px, 800px\"\n     loading=\"lazy\"\n     width=\"800\" height=\"600\">\n// WebP format, responsive, lazy-loaded, sized\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "unoptimized_image_loading"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar buttons = document.querySelectorAll('button');\nfor (var i = 0; i < buttons.length; i++) {\n  buttons[i].addEventListener('click', function() {\n    console.log('Button ' + i);\n  });\n}\n// All log 'Button 5'\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Closure for Event Handler**\n\n**Fix:**\n```javascript\nconst buttons = document.querySelectorAll('button');\nbuttons.forEach((button, i) => {\n  button.addEventListener('click', () => {\n    console.log(`Button ${i}`);\n  });\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "closure_for_event_handler"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet idx = -1;\nfor (let i = arr.length - 1; i >= 0; i--) {\n  if (predicate(arr[i])) { idx = i; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findLastIndex**\n\n**Fix:**\n```javascript\nconst idx = arr.findLastIndex(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findlastindex"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Cache {\n  get(key) { return this.data[key]; }\n  set(key, val) { this.data[key] = val; }\n}\n// Collision risk with user data keys\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Symbol usage**\n\n**Fix:**\n```javascript\nconst _data = Symbol('data');\nclass Cache {\n  constructor() { this[_data] = new Map(); }\n  get(key) { return this[_data].get(key); }\n  set(key, val) { this[_data].set(key, val); }\n  // Symbol keys won't collide with user data\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_symbol_usage"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function fetchAll(urls) {\n  const results = [];\n  for (const url of urls) results.push(await fetch(url));\n  return results;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Async Generator**\n\n**Fix:**\n```javascript\nasync function* fetchAll(urls) {\n  for (const url of urls) yield await fetch(url);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_async_generator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfetch(url, {\n  method: 'POST',\n  body: JSON.stringify({ name: 'test' }),\n});\n// Wrong for file upload\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing FormData**\n\n**Fix:**\n```javascript\nconst form = new FormData();\nform.append('file', file);\nform.append('name', 'test');\nfetch(url, { method: 'POST', body: form });\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_formdata"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Counter {\n  constructor() { this._count = 0; }\n  get count() { return this._count; }\n  set count(v) { this._count = v; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Accessors**\n\n**Fix:**\n```javascript\nclass Counter {\n  _count = 0;\n  accessor count = 0;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_accessors"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst query = req.query.search;\ndb.query('SELECT * FROM items WHERE name = ' + query);\n// SQL injection\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing input Sanitization**\n\n**Fix:**\n```javascript\nconst query = req.query.search;\ndb.query('SELECT * FROM items WHERE name = ?', [query]);\n// Parameterized query\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_input_sanitization"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('_validate', () => {\n  expect(component._validate('input')).toBe(true);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Testing Private Methods**\n\n**Fix:**\n```javascript\ntest('validates input', () => {\n  expect(component.validate('input')).toBe(true);\n  // Test public API only\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "testing_private_methods"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nuseEffect(() => {\n  fetchData(id);\n});\n// Runs every render\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Dependency Array**\n\n**Fix:**\n```javascript\nuseEffect(() => {\n  fetchData(id);\n}, [id]);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_dependency_array"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfetch(url1)\n  .then(r1 => fetch(url2))\n  .then(r2 => r2.json())\n  .then(data => process(data));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Promise Chaining Instead of Sequential**\n\n**Fix:**\n```javascript\nconst r1 = await fetch(url1);\nconst r2 = await fetch(url2);\nconst data = await r2.json();\nprocess(data);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "promise_chaining_instead_of_sequential"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.use(express.json());\n// Default: no limit\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing body-parser size limit**\n\n**Fix:**\n```javascript\napp.use(express.json({ limit: '1mb' }));\napp.use(express.urlencoded({ extended: true, limit: '1mb' }));\n// Prevents DoS via large payloads\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_body-parser_size_limit"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction deepClone(obj) {\n  const clone = {};\n  for (let key in obj) {\n    clone[key] = typeof obj[key] === 'object'\n      ? deepClone(obj[key]) : obj[key];\n  }\n  return clone;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Manual deep clone**\n\n**Fix:**\n```javascript\n// Built-in for most cases:\nconst clone = structuredClone(original);\n// Handles circular refs, Dates, Maps, Sets\n// Or: JSON.parse(JSON.stringify(obj)) for simple data\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "manual_deep_clone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.cookie = 'session=' + token;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Insecure Cookie**\n\n**Fix:**\n```javascript\ndocument.cookie = 'session=' + token + '; SameSite=Strict; Secure; Path=/';\n// Secure flag = HTTPS only\n// SameSite prevents CSRF\n// Path limits scope\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "insecure_cookie"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst updated = {};\nfor (const key in original) {\n  updated[key] = original[key];\n}\nupdated.name = newName;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Object spread for partial update**\n\n**Fix:**\n```javascript\nconst updated = { ...original, name: newName };\n// Spread operator copies and overrides in one line\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "object_spread_for_partial_update"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Dog extends Animal {\n  constructor(name) {\n    this.name = name;\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Super Call**\n\n**Fix:**\n```javascript\nclass Dog extends Animal {\n  constructor(name) {\n    super(name);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_super_call"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst express = require('express');\nconst app = express();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using ESM modules**\n\n**Fix:**\n```javascript\n// package.json: { \"type\": \"module\" }\nimport express from 'express';\nimport { readFile } from 'node:fs/promises';\n// Native ESM - tree-shakeable, standard imports\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_esm_modules"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar ul = document.getElementById('list');\nfor (var i = 0; i < items.length; i++) {\n  var li = document.createElement('li');\n  li.textContent = items[i];\n  ul.appendChild(li);\n}\n// Repaints each iteration\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: createElement Loop**\n\n**Fix:**\n```javascript\nconst fragment = document.createDocumentFragment();\nitems.forEach(item => {\n  const li = document.createElement('li');\n  li.textContent = item;\n  fragment.appendChild(li);\n});\ndocument.getElementById('list').appendChild(fragment);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "createelement_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// No linting\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing .eslintrc**\n\n**Fix:**\n```javascript\n# .eslintrc.json\n{\n  \"env\": { \"browser\": true, \"es2022\": true, \"node\": true },\n  \"extends\": \"eslint:recommended\",\n  \"rules\": {\n    \"no-unused-vars\": \"error\",\n    \"no-console\": \"warn\",\n    \"prefer-const\": \"error\"\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_.eslintrc"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Custom notification\nconst div = document.createElement('div');\ndiv.textContent = 'New message';\ndocument.body.appendChild(div);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Notification API**\n\n**Fix:**\n```javascript\nif ('Notification' in window && Notification.permission === 'granted') {\n  new Notification('New message', { body: 'You have a new message' });\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_notification_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction findUser(id) {\n  const user = users.find(u => u.id === id);\n  return user ? user.name : 'Unknown';\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Option/Maybe**\n\n**Fix:**\n```javascript\nconst Maybe = {\n  Nothing: () => ({ isNothing: () => true, map: f => Maybe.Nothing(), fold: (n, j) => n() }),\n  Just: x => ({ isNothing: () => false, map: f => Maybe.Just(f(x)), fold: (n, j) => j(x) }),\n};\nfunction findUser(id) {\n  return Maybe.Just(users.find(u => u.id === id))\n    .fold(\n      () => 'Unknown',\n      user => user.name\n    );\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_option/maybe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.get('/search', (req, res) => {\n  const query = req.query.q;\n  res.render('results', { query });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: No input sanitization**\n\n**Fix:**\n```javascript\nconst DOMPurify = require('dompurify');\nconst { JSDOM } = require('jsdom');\nconst window = new JSDOM('').window;\nconst purify = DOMPurify(window);\n\napp.get('/search', (req, res) => {\n  const query = purify.sanitize(req.query.q);\n  res.render('results', { query });\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "no_input_sanitization"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst sorted = items.sort((a, b) => a - b);\n// Sorts every render, mutates state\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing useMemo**\n\n**Fix:**\n```javascript\nconst sorted = useMemo(() => [...items].sort((a, b) => a - b), [items]);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_usememo"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {};\nobj[key] = value;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Computed Property Names**\n\n**Fix:**\n```javascript\nconst obj = { [key]: value };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_computed_property_names"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = { ...obj };\nObject.keys(obj).forEach(k => {\n  if (typeof obj[k] === 'object') copy[k] = { ...obj[k] };\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing with for Structured Clone**\n\n**Fix:**\n```javascript\nconst copy = structuredClone(obj);\n// Deep clone in one call\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_with_for_structured_clone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst parts = str.match(/[^,]+/g);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Instead of split**\n\n**Fix:**\n```javascript\nconst parts = str.split(',').filter(Boolean);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_instead_of_split"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = JSON.parse(JSON.stringify(obj));\n// Loses Dates, Maps, Sets\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing structuredClone for Deep Copy**\n\n**Fix:**\n```javascript\nconst copy = structuredClone(obj);\n// Preserves all types\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_structuredclone_for_deep_copy"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar deepCopy = JSON.parse(JSON.stringify(obj));\n// Loses functions, undefined, Dates\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing structuredClone**\n\n**Fix:**\n```javascript\nconst deepCopy = structuredClone(obj);\n// Preserves all native types\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_structuredclone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar map = {};\nmap[1] = 'one';\nmap['1'] = 'one string';\n// Both overwrite\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Map for Dynamic Keys**\n\n**Fix:**\n```javascript\nconst map = new Map();\nmap.set(1, 'one');\nmap.set('1', 'one string');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_map_for_dynamic_keys"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst regex = /pattern/g;\nconst match1 = regex.exec(str1);\nconst match2 = regex.exec(str2);\n// Continues from lastIndex\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing RegExp lastIndex reset**\n\n**Fix:**\n```javascript\nconst regex = /pattern/g;\nregex.lastIndex = 0;\nconst match1 = regex.exec(str1);\nregex.lastIndex = 0;\nconst match2 = regex.exec(str2);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_regexp_lastindex_reset"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst reversed = [...arr].reverse();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.toReversed**\n\n**Fix:**\n```javascript\nconst reversed = arr.toReversed();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.toreversed"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = JSON.parse(JSON.stringify(obj));\n// Loses functions, undefined, Dates, Maps, Sets\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing structuredClone**\n\n**Fix:**\n```javascript\nconst copy = structuredClone(obj);\n// Preserves all native types\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_structuredclone"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nworker.postMessage(largeArrayBuffer);\n// Copies data\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Transferable Objects**\n\n**Fix:**\n```javascript\nworker.postMessage(largeArrayBuffer, [largeArrayBuffer]);\n// Transfers ownership, no copy\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_transferable_objects"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar PRIVATE_KEY = '__private';\nobj[PRIVATE_KEY] = 'secret';\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Symbol**\n\n**Fix:**\n```javascript\nconst PRIVATE_KEY = Symbol('private');\nobj[PRIVATE_KEY] = 'secret';\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_symbol"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst items = document.getElementsByClassName('item');\nfor (let i = 0; i < items.length; i++) { ... }\n// Live collection - re-evaluates on DOM changes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using getElementsBy* collections**\n\n**Fix:**\n```javascript\nconst items = document.querySelectorAll('.item');\nitems.forEach(item => { ... });\n// querySelectorAll returns static NodeList\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_getelementsby*_collections"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Synchronizing workers\nconst ready = false;\nworker.onmessage = () => { ready = true; }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Atomics**\n\n**Fix:**\n```javascript\nconst shared = new Int32Array(new SharedArrayBuffer(4));\nAtomics.store(shared, 0, 1);\nAtomics.wait(shared, 0, 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_atomics"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function main() {\n  const config = await loadConfig();\n  const app = createApp(config);\n  app.start();\n}\nmain();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing top-level await**\n\n**Fix:**\n```javascript\nconst config = await loadConfig();\nconst app = createApp(config);\napp.start();\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_top-level_await"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction setup() {\n  element.addEventListener('click', handler);\n}\n// Called multiple times, listeners accumulate\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Leaking Event Listeners**\n\n**Fix:**\n```javascript\nfunction setup() {\n  element.removeEventListener('click', handler);\n  element.addEventListener('click', handler);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "leaking_event_listeners"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction create() { return new Animal('unknown'); }\nAnimal.create = create;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Static Method**\n\n**Fix:**\n```javascript\nclass Animal {\n  static create() { return new Animal('unknown'); }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_static_method"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nnode_modules/\npackage.json\napp.js\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing .gitignore**\n\n**Fix:**\n```javascript\n# .gitignore\nnode_modules/\n*.log\n.env\n.DS_Store\ndist/\ncoverage/\n*.tgz\n# Never commit node_modules, env files, or build artifacts\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_.gitignore"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction calculateTotal(items) {\n  const total = items.reduce((s, i) => s + i.price, 0);\n  logTransaction(total); // side effect\n  return total;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Side effects in pure function**\n\n**Fix:**\n```javascript\nfunction calculateTotal(items) {\n  return items.reduce((s, i) => s + i.price, 0);\n}\n// Separate pure calculation from side effects:\nconst total = calculateTotal(items);\nlogTransaction(total);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "side_effects_in_pure_function"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet cache = null;\nasync function getData() {\n  if (!cache) cache = await fetch();\n  return cache;\n}\n// Multiple calls before first resolves\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Race Condition with async**\n\n**Fix:**\n```javascript\nlet promise = null;\nasync function getData() {\n  if (!promise) promise = fetch();\n  return promise;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "race_condition_with_async"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.onload = function() {\n  initApp();\n};\n// Waits for all resources, fires once\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using window.onload**\n\n**Fix:**\n```javascript\ndocument.addEventListener('DOMContentLoaded', () => {\n  initApp();\n  // Fires when DOM is ready, before images/stylesheets\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_window.onload"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar _private = new Map();\nfunction create() {\n  var obj = {};\n  _private.set(obj, { secret: 'key' });\n  return obj;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing WeakMap for Private Data**\n\n**Fix:**\n```javascript\nconst privateData = new WeakMap();\nfunction create() {\n  const obj = {};\n  privateData.set(obj, { secret: 'key' });\n  return obj;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_weakmap_for_private_data"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar _private = {};\nfunction get(key) { return _private[key]; }\n// Accessible if _private is exposed\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Proxy for Private Properties**\n\n**Fix:**\n```javascript\nconst privateData = new WeakMap();\nconst handler = {\n  get: (target, prop) => privateData.has(target) && privateData.get(target).has(prop)\n    ? privateData.get(target).get(prop) : undefined,\n};\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "proxy_for_private_properties"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar visited = [];\nfunction visit(node) {\n  if (visited.indexOf(node) === -1) visited.push(node);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing WeakSet**\n\n**Fix:**\n```javascript\nconst visited = new WeakSet();\nfunction visit(node) {\n  if (!visited.has(node)) visited.add(node);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_weakset"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nprocess.on('uncaughtException', (err) => {\n  console.error(err);\n  // Server continues in unknown state\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Process on uncaughtException**\n\n**Fix:**\n```javascript\nprocess.on('uncaughtException', (err) => {\n  console.error('Uncaught Exception:', err);\n  // Graceful shutdown:\n  server.close(() => process.exit(1));\n});\n// Better: fix the root cause, don't catch exceptions\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "process_on_uncaughtexception"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction processLargeData() {\n  var data = new Array(1000000);\n  return function() { console.log('done'); };\n}\n// data never GC'd\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Closure Memory Leak**\n\n**Fix:**\n```javascript\nfunction processLargeData() {\n  const data = new Array(1000000);\n  const result = processData(data);\n  return () => console.log(result);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "closure_memory_leak"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var key in obj) {\n  if (obj.hasOwnProperty(key)) {\n    console.log(key, obj[key]);\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.entries**\n\n**Fix:**\n```javascript\nfor (const [key, value] of Object.entries(obj)) {\n  console.log(key, value);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.entries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { operation(); } catch (err) {\n  throw new Error('Operation failed');\n// Original error lost\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Error.cause**\n\n**Fix:**\n```javascript\ntry { operation(); } catch (cause) {\n  throw new Error('Operation failed', { cause });\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_error.cause"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nJSON.stringify(obj);\n// TypeError if circular\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: JSON.stringify Circular Reference**\n\n**Fix:**\n```javascript\nJSON.stringify(obj, (key, value) => {\n  if (typeof value === 'object' && value !== null) {\n    return value;\n  }\n  return value;\n});\n// Or use a replacer that handles cycles\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "json.stringify_circular_reference"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet count = 0;\nasync function increment() {\n  await delay(100);\n  count++; // Non-atomic with async gap\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Race condition with shared state**\n\n**Fix:**\n```javascript\n// Use a lock or atomic operations:\nlet count = 0;\nconst lock = { held: false };\nasync function increment() {\n  while (lock.held) await delay(10);\n  lock.held = true;\n  try {\n    await delay(100);\n    count++;\n  } finally {\n    lock.held = false;\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "race_condition_with_shared_state"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napi.get('/users', function(err, users) {\n  api.get('/posts', function(err, posts) {\n    api.get('/comments', function(err, comments) {\n      render(users, posts, comments);\n    });\n  });\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Callback Hell**\n\n**Fix:**\n```javascript\nconst [users, posts, comments] = await Promise.all([\n  api.get('/users'),\n  api.get('/posts'),\n  api.get('/comments'),\n]);\nrender(users, posts, comments);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "callback_hell"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst result = eval(userExpression);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: XSS via eval()**\n\n**Fix:**\n```javascript\n// Never eval user input.\n// Use JSON.parse for JSON data:\nconst data = JSON.parse(userInput);\n// Or a safe expression parser library.\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "xss_via_eval()"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Copy to clipboard\nconst input = document.createElement('input');\ninput.value = text;\ndocument.body.appendChild(input);\ninput.select();\ndocument.execCommand('copy');\ndocument.body.removeChild(input);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Clipboard API**\n\n**Fix:**\n```javascript\nnavigator.clipboard.writeText(text);\n// Modern Clipboard API\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_clipboard_api"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar idx = -1;\nfor (var i = 0; i < arr.length; i++) {\n  if (arr[i] === target) { idx = i; break; }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findIndex**\n\n**Fix:**\n```javascript\nconst idx = arr.findIndex(item => item === target);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findindex"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (e.keyCode === 13) { ... }\n// keyCode is deprecated\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Keyboard Event Key**\n\n**Fix:**\n```javascript\nif (e.key === 'Enter') { ... }\n// e.key is modern\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_keyboard_event_key"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst [users, posts] = await Promise.all([\n  fetchUsers(),\n  fetchPosts()\n]);\n// One failure cancels everything\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Promise.all without error handling**\n\n**Fix:**\n```javascript\nconst [users, posts] = await Promise.allSettled([\n  fetchUsers(),\n  fetchPosts()\n]);\n// All resolve individually\nconst userList = users.status === 'fulfilled' ? users.value : [];\nconst postList = posts.status === 'fulfilled' ? posts.value : [];\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "promise.all_without_error_handling"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr1 = [1, 2, 3];\nvar arr2 = arr1.concat([4, 5, 6]);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Spread Operator**\n\n**Fix:**\n```javascript\nconst arr1 = [1, 2, 3];\nconst arr2 = [...arr1, 4, 5, 6];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_spread_operator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nsetTimeout('process(' + userInput + ')', 1000);\n// Code injection\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: setTimeout with String**\n\n**Fix:**\n```javascript\nsetTimeout(() => process(userInput), 1000);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "settimeout_with_string"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<!DOCTYPE html>\n<html>\n<head>\n  <script src=\"app.js\"></script>\n</head>\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: CSP Missing**\n\n**Fix:**\n```javascript\n<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"Content-Security-Policy\" \n    content=\"default-src 'self'; script-src 'self'; object-src 'none'\">\n  <script src=\"app.js\"></script>\n</head>\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "csp_missing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (element.className.indexOf('active') !== -1) { ... }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: classList Contains**\n\n**Fix:**\n```javascript\nif (element.classList.contains('active')) { ... }\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "classlist_contains"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Timer {\n  constructor() {\n    this.seconds = 0;\n    setInterval(function() {\n      this.seconds++;\n    }, 1000);\n  }\n}\n// this is undefined in callback\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: this in Callback**\n\n**Fix:**\n```javascript\nclass Timer {\n  constructor() {\n    this.seconds = 0;\n    setInterval(() => {\n      this.seconds++;\n    }, 1000);\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "this_in_callback"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nserver.listen(3000);\n// No graceful shutdown\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Graceful Shutdown**\n\n**Fix:**\n```javascript\nserver.listen(3000);\nprocess.on('SIGTERM', () => {\n  server.close(() => process.exit(0));\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_graceful_shutdown"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction validate(data) {\n  if (!data) throw new Error('Required');\n  return data;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Promise.reject**\n\n**Fix:**\n```javascript\nfunction validate(data) {\n  if (!data) return Promise.reject(new Error('Required'));\n  return Promise.resolve(data);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_promise.reject"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('scroll', function() {\n  images.forEach(img => {\n    if (img.getBoundingClientRect().top < window.innerHeight) {\n      img.src = img.dataset.src;\n    }\n  });\n});\n// Runs on every scroll\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing IntersectionObserver**\n\n**Fix:**\n```javascript\nconst observer = new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    if (entry.isIntersecting) {\n      entry.target.src = entry.target.dataset.src;\n      observer.unobserve(entry.target);\n    }\n  });\n});\nimages.forEach(img => observer.observe(img));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_intersectionobserver"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction Item({ data }) {\n  return <div>{data.name}</div>;\n}\n// Renders even when props unchanged\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing React.memo**\n\n**Fix:**\n```javascript\nconst Item = React.memo(function Item({ data }) {\n  return <div>{data.name}</div>;\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_react.memo"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('rejects on failure', () => {\n  fetchData();\n});\n// No assertion\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test for Error**\n\n**Fix:**\n```javascript\ntest('rejects on failure', async () => {\n  await expect(fetchData()).rejects.toThrow('Network error');\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_for_error"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {};\nobj[key] = value;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Computed Property Names**\n\n**Fix:**\n```javascript\nconst obj = { [key]: value };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_computed_property_names"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nif (element.className.includes('active')) {\n  element.className = element.className.replace('active', '');\n} else {\n  element.className += ' active';\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: classList Toggle**\n\n**Fix:**\n```javascript\nelement.classList.toggle('active');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "classlist_toggle"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar add = function(a, b) {\n  return a + b;\n};\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Function Declaration Instead of Arrow**\n\n**Fix:**\n```javascript\nconst add = (a, b) => a + b;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "function_declaration_instead_of_arrow"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst cache = new Map();\nfunction get(key) {\n  if (!cache.has(key)) cache.set(key, createObject());\n  return cache.get(key);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing WeakRef for Cache**\n\n**Fix:**\n```javascript\nconst cache = new WeakMap();\nfunction get(target) {\n  if (!cache.has(target)) cache.set(target, createObject());\n  return cache.get(target);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_weakref_for_cache"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar sum = 0;\narr.forEach(function(item) {\n  sum += item.value;\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of reduce**\n\n**Fix:**\n```javascript\nconst sum = arr.reduce((acc, item) => acc + item.value, 0);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_reduce"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar first = arr[0];\nvar second = arr[1];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array Destructuring**\n\n**Fix:**\n```javascript\nconst [first, second] = arr;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar result = [];\narr.forEach(function(item) {\n  result = result.concat(transform(item));\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.flatMap**\n\n**Fix:**\n```javascript\nconst result = arr.flatMap(transform);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.flatmap"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst url = URL.createObjectURL(blob);\nelement.src = url;\n// URL never revoked\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Blob URL Cleanup**\n\n**Fix:**\n```javascript\nconst url = URL.createObjectURL(blob);\nelement.src = url;\nelement.onload = () => URL.revokeObjectURL(url);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_blob_url_cleanup"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst requestLog = [];\napp.use((req, res, next) => {\n  requestLog.push({ path: req.path, time: Date.now() });\n  next();\n});\n// Grows forever\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Memory leak with growing array**\n\n**Fix:**\n```javascript\nconst requestLog = [];\nconst MAX_LOGS = 10000;\napp.use((req, res, next) => {\n  requestLog.push({ path: req.path, time: Date.now() });\n  if (requestLog.length > MAX_LOGS) {\n    requestLog.splice(0, requestLog.length - MAX_LOGS);\n  }\n  next();\n});// Or use a circular buffer / logging library\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "memory_leak_with_growing_array"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst express = require('express');\nconst app = express();\napp.listen(3000);\n// No security headers\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Helmet**\n\n**Fix:**\n```javascript\nconst helmet = require('helmet');\napp.use(helmet());\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_helmet"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar arr1 = [1, 2, 3];\nvar arr2 = arr1.concat([4, 5, 6]);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Spread Operator**\n\n**Fix:**\n```javascript\nconst arr1 = [1, 2, 3];\nconst arr2 = [...arr1, 4, 5, 6];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_spread_operator"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst start = Date.now();\n// Affected by system clock changes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Performance.now()**\n\n**Fix:**\n```javascript\nconst start = performance.now();\n// Monotonic clock,\u4e0d\u53d7 system time changes\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_performance.now()"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// Base64 encode/decode\nconst encoded = Buffer.from(str).toString('base64');\n// Node only\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing atob/btoa**\n\n**Fix:**\n```javascript\n// Browser\nconst encoded = btoa(str);\nconst decoded = atob(encoded);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_atob/btoa"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function load() {\n  showSpinner();\n  const data = await fetch('/api/data');\n  hideSpinner();\n  return data;\n  // Spinner stays if fetch throws\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing finally cleanup**\n\n**Fix:**\n```javascript\nasync function load() {\n  showSpinner();\n  try {\n    const data = await fetch('/api/data');\n    return data;\n  } finally {\n    hideSpinner(); // Always runs\n  }\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_finally_cleanup"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar count = 0;\nvar name = 'test';\nvar items = [];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: var Instead of const/let**\n\n**Fix:**\n```javascript\nconst count = 0;\nlet name = 'test';\nconst items = [];\n// Use const by default, let for reassignment\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "var_instead_of_const/let"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction add(a, b) { return a + b; }\nconst add5 = (x) => add(5, x);\nconst add10 = (x) => add(10, x);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Not using curry for partial application**\n\n**Fix:**\n```javascript\nconst add = (a) => (b) => a + b;\nconst add5 = add(5);\nconst add10 = add(10);\n// Curried functions enable partial application\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "not_using_curry_for_partial_application"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nasync function process() {\n  await step1();\n  await step2();\n  await step3();\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Handling in Async**\n\n**Fix:**\n```javascript\nasync function process() {\n  try {\n    await step1();\n    await step2();\n    await step3();\n  } catch (error) {\n    await rollback();\n    throw error;\n  }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_handling_in_async"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst idx = arr.lastIndexOf(target);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.findLastIndex**\n\n**Fix:**\n```javascript\nconst idx = arr.findLastIndex(item => item === target);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.findlastindex"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar valid = true;\narr.forEach(function(item) {\n  if (!predicate(item)) valid = false;\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: forEach Instead of every**\n\n**Fix:**\n```javascript\nconst valid = arr.every(predicate);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "foreach_instead_of_every"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('contextmenu', (e) => {\n  showCustomMenu(e);\n});\n// Default menu still shows\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing ContextMenu**\n\n**Fix:**\n```javascript\nelement.addEventListener('contextmenu', (e) => {\n  e.preventDefault();\n  showCustomMenu(e);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_contextmenu"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.listen(3000, () => {\n  if (process.env.NODE_ENV === 'test') {\n    process.exit(0);\n  }\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Process.exit() in server**\n\n**Fix:**\n```javascript\nconst server = app.listen(3000);\n// For tests:\nafter(() => server.close());\n// Don't call process.exit() - it kills pending requests\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "process.exit()_in_server"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('processes array', () => {\n  expect(process([1,2,3])).toEqual([2,4,6]);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test for Edge Cases**\n\n**Fix:**\n```javascript\ntest('processes empty array', () => {\n  expect(process([])).toEqual([]);\n});\ntest('processes null', () => {\n  expect(() => process(null)).toThrow();\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_for_edge_cases"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar first = arr[0];\nvar second = arr[1];\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array Destructuring**\n\n**Fix:**\n```javascript\nconst [first, second] = arr;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array_destructuring"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nclass Formatter {\n  format() { this._validate(); }\n  _validate() { /* private */ }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Private Methods**\n\n**Fix:**\n```javascript\nclass Formatter {\n  format() { this.#validate(); }\n  #validate() { /* private */ }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_private_methods"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction* counter(n) {\n  while (n-- > 0) yield n;\n}\nconst gen = counter(5);\n// Maintains state across yields\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Generator Closure**\n\n**Fix:**\n```javascript\nfunction* counter(n) {\n  while (n-- > 0) yield n;\n}\nconst gen = counter(5);\nfor (const value of gen) console.log(value);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "generator_closure"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<button onclick='handleClick()'>Click</button>\n// HTML/JS coupling\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: inline Event Handler**\n\n**Fix:**\n```javascript\ndocument.querySelector('button').addEventListener('click', handleClick);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "inline_event_handler"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.addEventListener('click', handler);\n// Leaks if element removed from DOM\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Event Handler Without removeEventListener**\n\n**Fix:**\n```javascript\nelement.addEventListener('click', handler, { once: true });\n// Or use AbortController\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "event_handler_without_removeeventlistener"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst value = input || defaultValue;\n// Fails if input is 0, '', or false\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Nullish Coalescing for Default**\n\n**Fix:**\n```javascript\nconst value = input ?? defaultValue;\n// Only falls back on null/undefined\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_nullish_coalescing_for_default"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (var key in obj) {\n  if (obj.hasOwnProperty(key)) {\n    console.log(key, obj[key]);\n  }\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.entries**\n\n**Fix:**\n```javascript\nfor (const [key, value] of Object.entries(obj)) {\n  console.log(key, value);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.entries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntry { process(); } catch (e) {\n  handleError(e);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Catch All Errors**\n\n**Fix:**\n```javascript\ntry { process(); } catch (e) {\n  if (e instanceof ValidationError) handleValidation(e);\n  else if (e instanceof NotFoundError) handleNotFound(e);\n  else handleError(e);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "catch_all_errors"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar name = 'test';\nvar config = { name: name };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Shorthand Properties**\n\n**Fix:**\n```javascript\nconst name = 'test';\nconst config = { name };\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_shorthand_properties"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n// script.js\nvar secret = 'password';\n// Accessible globally\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Module Scope**\n\n**Fix:**\n```javascript\n// module.js\nconst secret = 'password';\nexport function use() { return secret; }\n// Module-scoped, not global\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "module_scope"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (const id of ids) {\n  const item = await fetchItem(id);\n  results.push(item);\n}\n// Sequential - slow for many items\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Await in loop instead of parallel**\n\n**Fix:**\n```javascript\n// Parallel:\nconst results = await Promise.all(\n  ids.map(id => fetchItem(id))\n);\n// With concurrency limit:\nconst results = await pLimit(ids.map(id => () => fetchItem(id)));\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "await_in_loop_instead_of_parallel"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst pattern = /hello/;\n// Only matches lowercase\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Regex Case Sensitivity**\n\n**Fix:**\n```javascript\nconst pattern = /hello/i;\n// Case-insensitive flag\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "regex_case_sensitivity"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nwindow.addEventListener('resize', handleResize);\n// Fires on every resize\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Throttle Without Implementation**\n\n**Fix:**\n```javascript\nfunction throttle(fn, delay) {\n  let last = 0;\n  return function(...args) {\n    const now = Date.now();\n    if (now - last >= delay) { last = now; fn(...args); }\n  };\n}\nwindow.addEventListener('resize', throttle(handleResize, 200));\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "throttle_without_implementation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction multiply(a, b) {\n  return a * b;\n}\nvar double = function(x) {\n  return multiply(2, x);\n};\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Currying Instead of Partial Application**\n\n**Fix:**\n```javascript\nconst multiply = a => b => a * b;\nconst double = multiply(2);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "currying_instead_of_partial_application"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await Promise.resolve(value);\n// Unnecessary wrapping\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Double await**\n\n**Fix:**\n```javascript\nconst data = value;\n// If already resolved, no need for await\n// Or if it might be a promise:\nconst data = await Promise.resolve(value);\n// Only wrap if the value is uncertain\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "double_await"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nmain: \"./dist/index.js\"\n// Same for CJS and ESM consumers\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Conditional Export**\n\n**Fix:**\n```javascript\n\"exports\": {\n  \"require\": \"./dist/index.js\",\n  \"import\": \"./dist/index.mjs\"\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_conditional_export"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst data = await fetch(url);\n// No timeout\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Promise.race Timeout**\n\n**Fix:**\n```javascript\nconst data = await Promise.race([\n  fetch(url),\n  new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), 5000)),\n]);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_promise.race_timeout"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n$('.items').each(function() {\n  $(this).addClass('active');\n});\n// jQuery dependency\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using jQuery for DOM queries**\n\n**Fix:**\n```javascript\ndocument.querySelectorAll('.items').forEach(el => {\n  el.classList.add('active');\n});\n// Native DOM API is sufficient\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_jquery_for_dom_queries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction set(obj, key, value) {\n  if (!isValid(key, value)) throw new Error('Invalid');\n  obj[key] = value;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Proxy for Validation**\n\n**Fix:**\n```javascript\nconst handler = {\n  set: (target, key, value) => {\n    if (!isValid(key, value)) throw new Error('Invalid');\n    target[key] = value;\n    return true;\n  }\n};\nconst proxy = new Proxy(obj, handler);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_proxy_for_validation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nouter.addEventListener('click', handleOuter);\n// Only catches bubble phase\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Event Capture Phase**\n\n**Fix:**\n```javascript\nouter.addEventListener('click', handleOuter, { capture: true });\n// Catches during capture phase\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_event_capture_phase"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar handlers = [];\nfor (var i = 0; i < 5; i++) {\n  handlers.push(function() { console.log(i); });\n}\n// All log 5\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Closure in Loop**\n\n**Fix:**\n```javascript\nconst handlers = [];\nfor (let i = 0; i < 5; i++) {\n  handlers.push(() => console.log(i));\n}\n// Each captures its own i\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "closure_in_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction create() { return new Animal('unknown'); }\nAnimal.create = create;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Static Method**\n\n**Fix:**\n```javascript\nclass Animal {\n  static create() { return new Animal('unknown'); }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_static_method"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction animate() {\n  element.style.left = (parseInt(element.style.left) + 1) + 'px';\n  setTimeout(animate, 16);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing requestAnimationFrame**\n\n**Fix:**\n```javascript\nfunction animate() {\n  element.style.left = (parseInt(element.style.left) + 1) + 'px';\n  requestAnimationFrame(animate);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_requestanimationframe"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction log(method) {\n  const original = MyClass.prototype[method];\n  MyClass.prototype[method] = function(...args) {\n    console.log('calling', method);\n    return original.apply(this, args);\n  };\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Decorators**\n\n**Fix:**\n```javascript\n// Decorators (stage 3)\nfunction log(target, name, descriptor) {\n  const original = descriptor.value;\n  descriptor.value = function(...args) {\n    console.log('calling', name);\n    return original.apply(this, args);\n  };\n  return descriptor;\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_decorators"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction Animal(name) { this.name = name; }\nAnimal.prototype.speak = function() { console.log(this.name); };\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Class Syntax**\n\n**Fix:**\n```javascript\nclass Animal {\n  constructor(name) { this.name = name; }\n  speak() { console.log(this.name); }\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_class_syntax"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\njest.mock('fs');\n// Mocking the entire module\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Mocking the wrong thing**\n\n**Fix:**\n```javascript\njest.mock('fs', () => ({\n  ...jest.requireActual('fs'),\n  readFile: jest.fn().mockResolvedValue('{\"key\":\"value\"}')\n}));\n// Only mock what you need\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "mocking_the_wrong_thing"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nelement.innerHTML = userInput;\n// XSS vulnerability\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: innerHTML Instead of textContent**\n\n**Fix:**\n```javascript\nelement.textContent = userInput;\n// Escapes HTML\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "innerhtml_instead_of_textcontent"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst http = require('http');\nconst server = http.createServer(handle);\nserver.listen(3000);\n// Single process\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Cluster**\n\n**Fix:**\n```javascript\nconst cluster = require('cluster');\nif (cluster.isMaster) {\n  require('os').cpus().forEach(() => cluster.fork());\n} else {\n  server.listen(3000);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_cluster"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nimport * as lodash from 'lodash';\nlodash.get(obj, 'path');\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Tree Shaking**\n\n**Fix:**\n```javascript\nimport get from 'lodash/get';\n// Or use lodash-es for tree shaking\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_tree_shaking"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\npromise.then(result => process(result))\n.catch(err => console.log(err));\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Handling in Promise**\n\n**Fix:**\n```javascript\ntry {\n  const result = await promise;\n  process(result);\n} catch (error) {\n  logger.error('Processing failed', error);\n}\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_handling_in_promise"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst copy = [...array];\nconst filtered = copy.filter(x => x > 0);\nconst mapped = filtered.map(x => x * 2);\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Unnecessary array copy**\n\n**Fix:**\n```javascript\n// Chain operations without intermediate copies:\nconst result = array.filter(x => x > 0).map(x => x * 2);\n// Each step returns a new array, but no unnecessary spread\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "unnecessary_array_copy"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar obj = {};\nentries.forEach(function(e) {\n  obj[e[0]] = e[1];\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Object.fromEntries**\n\n**Fix:**\n```javascript\nconst obj = Object.fromEntries(entries);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_object.fromentries"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst callbacks = [];\nfunction subscribe(cb) { callbacks.push(cb); }\nfunction emit(data) { callbacks.forEach(cb => cb(data)); }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Observable Pattern**\n\n**Fix:**\n```javascript\nimport { Subject } from 'rxjs';\nconst subject = new Subject();\nsubject.subscribe(data => handle(data));\nsubject.next(value);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_observable_pattern"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\n<button onclick=\"handleClick()\">Click</button>\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Inline event handlers**\n\n**Fix:**\n```javascript\n<button data-action=\"click\">Click</button>\n\n// In JavaScript:\ndocument.querySelector('[data-action=\"click\"]').addEventListener('click', handleClick);\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "inline_event_handlers"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst obj = Object.freeze({ x: 1, y: 2 });\n// Not deeply frozen\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Record/Tuple**\n\n**Fix:**\n```javascript\nconst obj = #{ x: 1, y: 2 };\n// Record - deeply frozen (proposed)\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_record/tuple"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst identity = x => x;\nconst defaultTransform = identity;\n// Used in reduce, map defaults\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Identity Function**\n\n**Fix:**\n```javascript\nconst identity = x => x;\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_identity_function"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nimport _ from 'lodash';\n_.debounce(...);\n// Imports entire lodash (~70KB)\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Large bundle - full lodash import**\n\n**Fix:**\n```javascript\nimport debounce from 'lodash/debounce';\n// Tree-shakeable - only imports what's used\n// Or use a lightweight alternative:\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "large_bundle_-_full_lodash_import"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nthrow new Error();\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Error Without Message**\n\n**Fix:**\n```javascript\nthrow new Error('Operation failed: invalid input');\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "error_without_message"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nnew Date('2024-01-15');\n// May be parsed as UTC\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Parsing String**\n\n**Fix:**\n```javascript\nnew Date('2024-01-15T00:00:00Z');\n// Explicit ISO format\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_parsing_string"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar groups = {};\narr.forEach(item => {\n  if (!groups[item.cat]) groups[item.cat] = [];\n  groups[item.cat].push(item);\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Array.reduce for Grouping**\n\n**Fix:**\n```javascript\nconst groups = arr.reduce((acc, item) => {\n  (acc[item.cat] ||= []).push(item);\n  return acc;\n}, {});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_array.reduce_for_grouping"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst resource = acquire();\ntry { use(resource); } finally { resource.release(); }\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing using declarations**\n\n**Fix:**\n```javascript\nusing resource = acquire();\nuse(resource);\n// Auto-released at end of scope\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_using_declarations"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\napp.post('/transfer', (req, res) => {\n  // Process transfer\n});\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: No CSRF Protection**\n\n**Fix:**\n```javascript\nconst csrf = require('csurf');\nconst csrfProtection = csrf({ cookie: true });\n\napp.get('/form', csrfProtection, (req, res) => {\n  res.json({ csrfToken: req.csrfToken() });\n});\n\napp.post('/transfer', csrfProtection, (req, res) => {\n  // Token validated automatically\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "no_csrf_protection"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nit('renders component', () => {\n  render(<UserCard user={user} />);\n  expect(screen.getByText('Alice')).toBeInTheDocument();\n  expect(screen.getByText('alice@example.com')).toBeInTheDocument();\n  // Breaks when layout changes\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing snapshot test for UI**\n\n**Fix:**\n```javascript\nit('renders user card', () => {\n  const { container } = render(<UserCard user={user} />);\n  expect(container).toMatchSnapshot();\n  // Captures full render, catches unintended changes\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "missing_snapshot_test_for_ui"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ntest('fetches data', async () => {\n  const data = await slowFetch();\n  expect(data).toBeDefined();\n});\n// May hang forever\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test Timeout**\n\n**Fix:**\n```javascript\ntest('fetches data', async () => {\n  const data = await slowFetch();\n  expect(data).toBeDefined();\n}, 5000);\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_timeout"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nconst el = document.getElementById('box');\nel.style.width = '100px';  // forces reflow\nconst h = el.offsetHeight;  // forces reflow\nel.style.height = h + 'px'; // forces reflow\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Inefficient reflow**\n\n**Fix:**\n```javascript\n// Batch reads and writes:\nconst h = el.offsetHeight;  // read first\nrequestAnimationFrame(() => {\n  el.style.width = '100px';   // write batched\n  el.style.height = h + 'px'; // write batched\n});\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "inefficient_reflow"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar map = {};\nmap[1] = 'one';\nmap['1'] = 'one string';\n// Both overwrite\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Map for Dynamic Keys**\n\n**Fix:**\n```javascript\nconst map = new Map();\nmap.set(1, 'one');\nmap.set('1', 'one string');\n// Preserves key types\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_map_for_dynamic_keys"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndescribe('User', () => {\n  let user;\n  beforeAll(() => { user = createUser(); });\n  // Shared state between tests\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Test Isolation**\n\n**Fix:**\n```javascript\ndescribe('User', () => {\n  let user;\n  beforeEach(() => { user = createUser(); });\n  afterEach(() => { cleanup(); });\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_test_isolation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfunction createUrl(host, port, path) {\n  host = host || 'localhost';\n  port = port || 80;\n  path = path || '/';\n  return `http://${host}:${port}${path}`;\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Function without default parameters**\n\n**Fix:**\n```javascript\nfunction createUrl(host = 'localhost', port = 80, path = '/') {\n  return `http://${host}:${port}${path}`;\n}\n// Default parameters handle undefined explicitly\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "function_without_default_parameters"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nlet result = '';\nfor (let i = 0; i < items.length; i++) {\n  result += items[i];\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: String concatenation in loop**\n\n**Fix:**\n```javascript\nconst result = items.join('');\n// join() is optimized and avoids string re-allocation\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "string_concatenation_in_loop"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nfor (const key of Object.keys(obj)) {\n  console.log(key, obj[key]);\n}\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Using Object.keys for iteration**\n\n**Fix:**\n```javascript\nfor (const [key, value] of Object.entries(obj)) {\n  console.log(key, value);\n}\n```"
      }
    ],
    "source": "javascript_training",
    "tags": [
      "javascript",
      "using_object.keys_for_iteration"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\ndocument.querySelectorAll('.item').forEach(item => {\n  item.addEventListener('click', handleClick);\n});\n// Many listeners\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Missing Event Delegation**\n\n**Fix:**\n```javascript\ndocument.querySelector('.container').addEventListener('click', (e) => {\n  const item = e.target.closest('.item');\n  if (item) handleClick(e);\n});\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "missing_event_delegation"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nnew Date(2024, 1, 1);\n// February, not January\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Date Constructor with Month**\n\n**Fix:**\n```javascript\nnew Date(2024, 0, 1);\n// Months are 0-indexed\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "date_constructor_with_month"
    ]
  },
  {
    "messages": [
      {
        "role": "user",
        "content": "Review this JavaScript code:\n\n```javascript\nvar x = 1;\nvar y = 2;\nvar temp = x;\nx = y;\ny = temp;\n```"
      },
      {
        "role": "assistant",
        "content": "**Issue: Variable Swap Without Destructuring**\n\n**Fix:**\n```javascript\nlet x = 1;\nlet y = 2;\n[x, y] = [y, x];\n```"
      }
    ],
    "source": "javascript_training_expansion",
    "tags": [
      "javascript",
      "variable_swap_destructuring"
    ]
  }
]