LearnNewsExamplesServices
Frontmatter
id16363
titleRemove the four devDependencies the census proved unreachable
stateClosed
labels
airefactoring
assigneesneo-kimi-iris
createdAtAug 2, 2026, 4:12 PM
updatedAtAug 2, 2026, 5:43 PM
githubUrlhttps://github.com/neomjs/neo/issues/16363
authorneo-kimi-iris
commentsCount2
parentIssue16204
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 2, 2026, 5:43 PM

Remove the four devDependencies the census proved unreachable

Closed Backlog/active-chunk-12 airefactoring
neo-kimi-iris
neo-kimi-iris commented on Aug 2, 2026, 4:12 PM

Context

Follow-up of #16204 (the devDependency census, PR #16354). The census classified all 45 devDependencies by AST-verified importers (static + dynamic + require), tool-usage (bins/hooks), and mention evidence. Four packages came back with zero verified usage of any class. Per the census ticket's Out of Scope, removals are their own ticket — this is it. Full adjudication: #16204 issuecomment-5158183571.

Correction (2026-08-02, operator review): the original body named five, including mermaid. Wrong — src/main/addon/Mermaid.mjs:40 loads node_modules/mermaid/dist/mermaid.min.js via DomAccess.loadScript (the learning section's mermaid blocks in apps/portal render through it; chain: src/component/Markdown.mjs → dynamic wrapper import → addon → loadScript). The census's evidence was honest (5 mention files); the adjudication dismissed them from a truncated grep view. Mermaid is restored as a keep; the correction is recorded on #16204.

Live latest-open sweep at 2026-08-02T14:12Z (20 newest) + A2A in-flight claim scan (15 newest): no equivalent found.

The Problem

Four devDependencies sit in every contributor's install with no importer, no bin invocation, and no asset-path consumer:

package census evidence note
clean-webpack-plugin zero references anywhere webpack 5 output.clean supersedes it
glob 329 mention files, all English (global, fast-glob); zero imports/bins fs.globSync (Node 22+) era
webpack-node-externals zero references anywhere
yargs zero references anywhere commander + inquirer are the used CLI libs

None is native-build, so removal buys install weight only — no compile relief (that question belongs to the tier ticket). The risk is the reverse: removing something a lane still needs. That risk is what the census exists to bound — and what the mermaid correction just demonstrated is real.

The Architectural Reality

  • Evidence class per package is on the census comment — reproducible in seconds: node ai/scripts/diagnostics/devDependencyCensus.mjs.
  • The instrument's zero-importer section prints mention evidence per package; the adjudication table on the ticket converts that evidence into keep/remove verdicts (the keeps — @fortawesome, monaco-editor, highlightjs-line-numbers.js, @chroma-core/default-embed, webpack-cli, webpack-dev-server, mermaid — are NOT in scope; they have asset-path or bin-delegate consumers).
  • package.json + package-lock.json are the only touched surfaces; no source file changes. The lockfile prune is surgical (root mirror + reachability-walk from the root, 4-space format preserved) — a full npm install --package-lock-only re-resolution rewrites the entire file's formatting and was rejected for blast radius.

The Fix

Remove the four rows from devDependencies, prune the lockfile surgically, and prove the two things that could secretly consume one of them: the theme/app builds and the test suite.

A single removal commit is fine (the four share one evidence class and one verification pass), but each package's removal must be named in the commit body so a bisect can isolate it.

Acceptance Criteria

  • All four rows removed from package.json; package-lock.json pruned consistently (npm ci --dry-run passes; no full re-resolution churn).
  • node ./buildScripts/build/themes.mjs -f -n -e dev -t all builds clean after removal (the build is the likeliest hidden consumer — webpack plugins and CSS pipeline live there).
  • Full unit suite passes: UNIT_TEST_MODE=true npx playwright test -c test/playwright/playwright.config.unit.mjs (receipt in the PR).
  • Post-removal re-run of the census shows the four gone and zero NEW zero-importer packages (a removal that orphans a transitive consumer shows up here).
  • Any hidden consumer surfaced by a build/test failure (or review): that package is RESTORED in the same PR and the finding reported on the census ticket — a wrong verdict is a finding, not a failure. (Exercised once already: mermaid.)

Out of Scope

  • better-sqlite3, chromadb, and every keep-verdict package — placement/tier questions live in the tier follow-up, not here.
  • Any source-code change.

Related

  • #16204 — the census (evidence source; PR #16354)
  • #16364 — the tier-mechanism sibling

Origin Session ID: session_5c970912-b750-4835-ad51-fbb3d2bc4ebe

Retrieval Hint: query_raw_memories("devDependency census zero-importer removal candidates clean-webpack-plugin glob")

tobiu referenced in commit 6c317b9 - "build(deps-dev): remove four devDependencies the census proved unreachable (#16363) (#16369) on Aug 2, 2026, 5:43 PM
tobiu closed this issue on Aug 2, 2026, 5:43 PM