breaking‑change‑radar.

cases / express-5-clean

express-5-clean

express 4.18.2 5.0.0

A repo that depends on Express but only uses APIs that survive the 4 to 5 bump. The correct output is zero findings.

npm fixture negative — the correct output is nothing evals/fixtures/express-5-clean
grep-baseline
0 right 8 wrong
<0.1s · $0.00
agent · deepseek-v4-flash-free
0 right 0 wrong
20.3s · $0.00

What each detector said

One row per (file, symbol) site — the unit the scorer compares on. Ground truth comes from the case's hand-written labels.

8 sites · 8 where a detector is wrong
  1. not broken routes/items.js :body grep-baseline flagged agent · deepseek-v4-flash-free silent

    req.body is unchanged; it is the recommended replacement for req.param.

    1 matched line · reasoning
       8  router.post('/', (req, res) => res.status(201).json(req.body));
    grep-baseline conf 0.50

    'req.body' is named in the release notes and appears in 1 place(s) in this repo. No check was made that these are real call sites.

  2. not broken routes/items.js :del grep-baseline flagged agent · deepseek-v4-flash-free silent

    `app.del` appears only inside a comment.

    1 matched line · reasoning
       5  // res.status. None of the removed helpers (res.send(status), app.del,
    grep-baseline conf 0.50

    'app.del' is named in the release notes and appears in 1 place(s) in this repo. No check was made that these are real call sites.

  3. not broken routes/items.js :json grep-baseline flagged agent · deepseek-v4-flash-free silent

    res.json([]) is single-argument. Only the removed two-argument res.json(obj, status) form breaks, and it does not appear here.

    3 matched lines · reasoning
       4  // Only APIs that survive Express 4 -> 5 unchanged: Router, get/post, res.json,
       7  router.get('/', (req, res) => res.json([]));
       8  router.post('/', (req, res) => res.status(201).json(req.body));
    grep-baseline conf 0.50

    'res.json' is named in the release notes and appears in 4 place(s) in this repo. No check was made that these are real call sites.

  4. not broken routes/items.js :param grep-baseline flagged agent · deepseek-v4-flash-free silent

    `req.param` appears only inside a comment.

    1 matched line · reasoning
       6  // req.param) appear anywhere in this repo.
    grep-baseline conf 0.50

    'req.param' is named in the release notes and appears in 1 place(s) in this repo. No check was made that these are real call sites.

  5. not broken routes/items.js :Router grep-baseline flagged agent · deepseek-v4-flash-free silent

    express.Router is explicitly unchanged in v5.

    2 matched lines · reasoning
       2  const router = express.Router();
       4  // Only APIs that survive Express 4 -> 5 unchanged: Router, get/post, res.json,
    grep-baseline conf 0.50

    'express.Router' is named in the release notes and appears in 2 place(s) in this repo. No check was made that these are real call sites.

  6. not broken routes/items.js :send grep-baseline flagged agent · deepseek-v4-flash-free silent

    `res.send(status)` appears only inside a comment.

    1 matched line · reasoning
       5  // res.status. None of the removed helpers (res.send(status), app.del,
    grep-baseline conf 0.50

    'res.send' is named in the release notes and appears in 1 place(s) in this repo. No check was made that these are real call sites.

  7. not broken routes/items.js :status grep-baseline flagged agent · deepseek-v4-flash-free silent

    res.status(201) is unchanged in v5.

    2 matched lines · reasoning
       5  // res.status. None of the removed helpers (res.send(status), app.del,
       8  router.post('/', (req, res) => res.status(201).json(req.body));
    grep-baseline conf 0.50

    'res.status' is named in the release notes and appears in 2 place(s) in this repo. No check was made that these are real call sites.

  8. not broken server.js :json grep-baseline flagged agent · deepseek-v4-flash-free silent

    express.json() body-parser middleware. Unrelated to res.json.

    1 matched line · reasoning
       5  app.use(express.json());
    grep-baseline conf 0.50

    'res.json' is named in the release notes and appears in 4 place(s) in this repo. No check was made that these are real call sites.