Files
FreeCADWasmDev/docs/p6/python-api-openscad-tier-2-pure-gate.json
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

1022 lines
26 KiB
JSON

{
"schema": "freecad-web-p6-python-api-module-batch-gate/v1",
"taskId": "FW-P6-FPA-F2-OPENSCAD",
"module": "OpenSCAD",
"tier": "tier-2-pure",
"result": "pass_with_pending",
"coverage": {
"records": 140,
"counts": {
"exposed": 10,
"planned": 130
}
},
"records": [
{
"id": "py:OpenSCAD:function:CGALFeatureObj",
"name": "CGALFeatureObj",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:addString",
"name": "addString",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:angneg",
"name": "angneg",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:applyPlacement",
"name": "applyPlacement",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:call_openscad_with_pipes",
"name": "call_openscad_with_pipes",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:callopenscad",
"name": "callopenscad",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:callopenscadmeshstring",
"name": "callopenscadmeshstring",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:callopenscadstring",
"name": "callopenscadstring",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:center",
"name": "center",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:checkObjShape",
"name": "checkObjShape",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:check_multmatrix",
"name": "check_multmatrix",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:colorcodeshapes",
"name": "colorcodeshapes",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:comparerotations",
"name": "comparerotations",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:convert_points_list_to_vector",
"name": "convert_points_list_to_vector",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:decomposerotoinversion",
"name": "decomposerotoinversion",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:detsubmatrix",
"name": "detsubmatrix",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:edgestofaces",
"name": "edgestofaces",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:edgestowires",
"name": "edgestowires",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:endpointdistance",
"name": "endpointdistance",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:endpointdistancedebuglist",
"name": "endpointdistancedebuglist",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:expandplacements",
"name": "expandplacements",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:expandplacementsmatrix",
"name": "expandplacementsmatrix",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:export",
"name": "export",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:fcsubmatrix",
"name": "fcsubmatrix",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:findConnectedEdges",
"name": "findConnectedEdges",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:findbestmatchingrotation",
"name": "findbestmatchingrotation",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:fixVisibility",
"name": "fixVisibility",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:fuse",
"name": "fuse",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:fusefaces",
"name": "fusefaces",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:getopenscadexe",
"name": "getopenscadexe",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:getopenscadversion",
"name": "getopenscadversion",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:importDXFface",
"name": "importDXFface",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:insert",
"name": "insert",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:isorthogonal",
"name": "isorthogonal",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:isrotoinversionpython",
"name": "isrotoinversionpython",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:isspecialorthogonal",
"name": "isspecialorthogonal",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:isspecialorthogonalpython",
"name": "isspecialorthogonalpython",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:likeprimitive",
"name": "likeprimitive",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:makeSurfaceVolume",
"name": "makeSurfaceVolume",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:make_face",
"name": "make_face",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:mesh2polyhedron",
"name": "mesh2polyhedron",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:meshopinline",
"name": "meshopinline",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:meshoponobjs",
"name": "meshoponobjs",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:meshoptempfile",
"name": "meshoptempfile",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:mirror2mat",
"name": "mirror2mat",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:mirrormesh",
"name": "mirrormesh",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:mostbasiccompound",
"name": "mostbasiccompound",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:multiplymat",
"name": "multiplymat",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:myPolygon",
"name": "myPolygon",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:open",
"name": "open",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:openscadmesh",
"name": "openscadmesh",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_2d_point",
"name": "p_2d_point",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_3d_point",
"name": "p_3d_point",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_anymodifier",
"name": "p_anymodifier",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_block_list_",
"name": "p_block_list_",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_boolean",
"name": "p_boolean",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_error",
"name": "p_error",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_import_file1",
"name": "p_import_file1",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_keywordargument",
"name": "p_keywordargument",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_keywordargument_list",
"name": "p_keywordargument_list",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_linear_extrude_with_transform",
"name": "p_linear_extrude_with_transform",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_matrix",
"name": "p_matrix",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_not_supported",
"name": "p_not_supported",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_operation",
"name": "p_operation",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_part",
"name": "p_part",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_path_list",
"name": "p_path_list",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_path_points",
"name": "p_path_points",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_path_set",
"name": "p_path_set",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_points_list_2d",
"name": "p_points_list_2d",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_points_list_3d",
"name": "p_points_list_3d",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_rotate_extrude_file",
"name": "p_rotate_extrude_file",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_size_vector",
"name": "p_size_vector",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_statement",
"name": "p_statement",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_statementwithmod",
"name": "p_statementwithmod",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_stripped_string",
"name": "p_stripped_string",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:p_vector",
"name": "p_vector",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:parseargs",
"name": "parseargs",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:parseexpression",
"name": "parseexpression",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:parsenode",
"name": "parsenode",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:placeholder",
"name": "placeholder",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:processDXF",
"name": "processDXF",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:processSTL",
"name": "processSTL",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:processSVG",
"name": "processSVG",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:processTextCmd",
"name": "processTextCmd",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_import_file",
"name": "process_import_file",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_linear_extrude",
"name": "process_linear_extrude",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_linear_extrude_with_transform",
"name": "process_linear_extrude_with_transform",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_mesh_file",
"name": "process_mesh_file",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_rotate_extrude",
"name": "process_rotate_extrude",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:process_rotate_extrude_prism",
"name": "process_rotate_extrude_prism",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:processcsg",
"name": "processcsg",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:removesubtree",
"name": "removesubtree",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:replaceobj",
"name": "replaceobj",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:resizemesh",
"name": "resizemesh",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:roundrotation",
"name": "roundrotation",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:scalemesh",
"name": "scalemesh",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:searchforopenscadexe",
"name": "searchforopenscadexe",
"disposition": "exposed",
"evidence": [
"docs/p6/openscad-python-chrome.json"
],
"reason": "passing native python-api runtime evidence matched by fully-qualified or leaf API name"
},
{
"id": "py:OpenSCAD:function:setColorRecursively",
"name": "setColorRecursively",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:shallHide",
"name": "shallHide",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:shape2polyhedron",
"name": "shape2polyhedron",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:shapedict",
"name": "shapedict",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:shapeset",
"name": "shapeset",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:shorthexfloat",
"name": "shorthexfloat",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:subtractfaces",
"name": "subtractfaces",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:subtractfaces2",
"name": "subtractfaces2",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:superWireReverse",
"name": "superWireReverse",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:t_ID",
"name": "t_ID",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:t_comment1",
"name": "t_comment1",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:t_comment2",
"name": "t_comment2",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:t_error",
"name": "t_error",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:t_newline",
"name": "t_newline",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:vec2householder",
"name": "vec2householder",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:vector2d",
"name": "vector2d",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:function:vertexs2polygon",
"name": "vertexs2polygon",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:AddSCADTask.addelement",
"name": "AddSCADTask.addelement",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:AddSCADTask.refreshelement",
"name": "AddSCADTask.refreshelement",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:AddSCADWidget.retranslateUi",
"name": "AddSCADWidget.retranslateUi",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:GetWire.onChanged",
"name": "GetWire.onChanged",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:ImportObject.onChanged",
"name": "ImportObject.onChanged",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:MatrixTransform.onChanged",
"name": "MatrixTransform.onChanged",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Node.addtofreecad",
"name": "Node.addtofreecad",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Node.pprint",
"name": "Node.pprint",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Node.pprint2",
"name": "Node.pprint2",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Node.rlen",
"name": "Node.rlen",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:OpenSCADMeshBooleanTask.doboolean",
"name": "OpenSCADMeshBooleanTask.doboolean",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:OpenSCADMeshBooleanWidget.retranslateUi",
"name": "OpenSCADMeshBooleanWidget.retranslateUi",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.builddepdict",
"name": "Overlappingfaces.builddepdict",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.dofacesoverlapallverts",
"name": "Overlappingfaces.dofacesoverlapallverts",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.dofacesoverlapboolean",
"name": "Overlappingfaces.dofacesoverlapboolean",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.dofacesoverlapboundbox",
"name": "Overlappingfaces.dofacesoverlapboundbox",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.dofacesoverlapproximity",
"name": "Overlappingfaces.dofacesoverlapproximity",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.finddepth",
"name": "Overlappingfaces.finddepth",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.findrootdepth",
"name": "Overlappingfaces.findrootdepth",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.makefeatures",
"name": "Overlappingfaces.makefeatures",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.makeshape",
"name": "Overlappingfaces.makeshape",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:Overlappingfaces.printtree",
"name": "Overlappingfaces.printtree",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:RefineShape.onChanged",
"name": "RefineShape.onChanged",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:ViewProviderTree.attach",
"name": "ViewProviderTree.attach",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:ViewProviderTree.onChanged",
"name": "ViewProviderTree.onChanged",
"disposition": "planned",
"evidence": [],
"reason": null
},
{
"id": "py:OpenSCAD:method:ViewProviderTree.updateData",
"name": "ViewProviderTree.updateData",
"disposition": "planned",
"evidence": [],
"reason": null
}
],
"manifestSha256": "e11a08fd8ebac8fa62b2badf0d2146362e6890e11a2df9b59fa2c9fb75172bc3",
"boundaries": [
"This module batch does not close the remaining planned records.",
"Only exact module-scoped native evidence can promote a symbol."
]
}