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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions