Skip to content

doctor: real dlopen check + github:FlowMCP install hints for org-internal libs (Memo 152 PRD-027) #134

Description

@a6b8

Context

Memo 152 Phase 7 (PRD-027), doctor gaps carried over from Memo 149. Consumes the new core primitives (LibraryLoader.probe / resolveExternal installTargets, flowmcp-core#90).

Gap (a) — module-present did resolve, not load

flowmcp doctor's module-present check decided pass/fail via require.resolve only, so a native lib that RESOLVES but fails to dlopen (missing/ABI-mismatched .node) reported green. Now it drives the REAL load via LibraryLoader.probe over the same resolution chain the runtime uses (allowed-libraries -> CLI base -> schema dir): a missing lib is LIB-001, an installed-but-unloadable one is LIB-BINDING (rebuild hint).

Gap (b) — blanket npm install hint was wrong for org-internal libs

The install hint emitted a bare npm install --prefix <base> <name> for every missing lib, which 404s for FlowMCP-org add-ons (time-csv-toolkit, geo-*-toolkit, rpc-benchmark) that are not on npm. New OrgInternalLibs helper (explicit documented list, No-Silent-Defaults) maps org-internal libs to github:FlowMCP/<repo> in both the doctor fix-hint AND the runtime LIB-001 throw (HandlerResolver -> core resolveExternal installTargets).

Also

  • Core pin bump to flowmcp-core#9e17d20 + node_modules re-mirror.
  • README doctor-contract passage updated ("loads", not just "resolves").
  • Tests: org-internal-libs.test.mjs, doctor-library-gaps.test.mjs (dlopen-truth + github hint).

Part of the Memo 152 v4-only rollout. No push (H-19 gate).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions