- typescript-eslint preset: strict -> recommended for a usable first-pass
baseline (per PR discussion); ratchet up in a follow-up.
- Drop the projectService/parserOptions block. Neither `recommended` nor
`strict` is type-aware, so it was unused; removing it also avoids the
pnpm-workspace tsconfig-resolution failure mode flagged in review.
- Add Node + browser globals via the `globals` package so .mjs scripts and
the dashboard stop hitting `no-undef`.
- Expand ignores: built bundles (**/public/**), Astro generated (.astro/),
and .private/ (eval scratch). Cuts 2400+ errors in vendored output.
- Allow `_`-prefixed unused vars/args/caught errors; skip irregular
whitespace inside comments (json-parser intentionally embeds ZWSP-escaped
block-comment examples in JSDoc).
- Fix the residual 13 genuine errors: drop dead imports/vars, replace
two `as any[]` in schema.ts with `Array<Record<string, unknown>>`,
drop unused destructure in change-classifier, drop unused catch binding
in extract-structure.mjs.
- Add EOF newline to eslint.config.mjs.
- Refresh pnpm-lock.yaml.
- Add `pnpm lint` step to .github/workflows/ci.yml so the tooling
actually enforces something.
pnpm lint now exits 0 locally; 33+13 test files / 1445 tests still pass.
Add a --messy mode to the large graph generator so robustness cases can be
tested with null fields, aliases, dangling refs, and other malformed data.
Update the dashboard to preserve non-fatal validation issues, log
auto-corrected and dropped items, and show a warning banner with expandable
details plus copy-to-clipboard support.
Generates fake knowledge-graph.json with configurable node count
for testing Web Worker layout performance. Forward-only edges to
avoid dagre stack overflow on cyclic graphs.
Usage: node scripts/generate-large-graph.mjs [nodeCount]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>