Repository navigation
Description
Version
codebase-memory-mcp dev
Platform
Linux (x64)
What happened?
search_graph(fields=[...]) returns null for list-valued node properties even though the properties exist in the graph and query_graph returns their values correctly.
This was reproduced with:
Class.base_classesMethod.decoratorsMethod.decorator_tags
Scalar requested fields such as signature render normally.
Public reproduction
Repository and commit:
- https://github.com/Enferlain/sd-scripts/tree/de2dd0ebae40174e8336157e8928e36cfd013284
- Example class: https://github.com/Enferlain/sd-scripts/blob/de2dd0ebae40174e8336157e8928e36cfd013284/library/strategies/sd/training.py#L19-L50
- Example decorated method: https://github.com/Enferlain/sd-scripts/blob/de2dd0ebae40174e8336157e8928e36cfd013284/library/strategies/base/contracts.py#L376-L403
A fresh full index reported:
12,131 nodes
70,850 edges
generation_matches=true
Reproduction: class bases
{
"project": "home-imi-Projects-sd-scripts",
"label": "Class",
"name_pattern": "^(SdTrainingStrategy|Sd3TrainingStrategy|SdxlTrainingStrategy)$",
"fields": ["base_classes"],
"format": "json",
"limit": 10,
"offset": 0
}Actual search_graph rows contain:
["SdTrainingStrategy", "Class", "19-50", 15, 13, null]
["Sd3TrainingStrategy", "Class", "17-63", 2, 12, null]
["SdxlTrainingStrategy", "Class", "20-58", 12, 13, null]But the property is present and ordered in query_graph:
MATCH (c:Class)
WHERE c.name IN ['SdTrainingStrategy', 'Sd3TrainingStrategy', 'SdxlTrainingStrategy']
RETURN c.qualified_name, c.base_classes
ORDER BY c.qualified_nameFor example, SdTrainingStrategy.base_classes returns:
[
"SdModelLoadingStrategy",
"SdTokenizeStrategy",
"SdTextEncodingStrategy",
"SdConditioningStrategy",
"SdCachingStrategy",
"SdSampleGenerationStrategy",
"SdCheckpointingStrategy",
"SdValidationStrategy",
"SdDiffusionTrainingStrategy",
"SdDenoiserCallingStrategy",
"SdModelPreparationStrategy",
"WeightedPromptStrategy",
"TrainingStrategy"
]Reproduction: method decorators
{
"project": "home-imi-Projects-sd-scripts",
"label": "Method",
"name_pattern": "^process_batch$",
"qn_pattern": "^home-imi-Projects-sd-scripts\\.library\\.strategies\\.base\\.contracts\\..*",
"fields": ["decorators", "decorator_tags"],
"format": "json",
"limit": 10,
"offset": 0
}Actual row:
["process_batch", "Method", "380-403", 0, 10, null, null]But query_graph returns:
decorators=["@abstractmethod"]
decorator_tags=["abstractmethod"]
The graph schema also lists base_classes, decorators, and decorator_tags as properties of their respective node labels.
All cited source paths returned no_recorded_issue with matching coverage metadata.
Expected behavior
Requested list-valued properties should be serialized in search_graph results, preserving order where the property is ordered:
["SdTrainingStrategy", "Class", "19-50", 15, 13, ["SdModelLoadingStrategy", "..."]]If list-valued properties are intentionally unsupported, search_graph should return an explicit validation error or document the limitation rather than silently returning null for an existing property.
Impact
This is a smaller query-output issue; the underlying index data is intact and query_graph is a workaround. It still affects normal agent workflows because search_graph is the preferred discovery tool:
- inheritance order appears absent;
- abstract/decorator metadata appears absent;
- agents may draw false conclusions or issue unnecessary fallback queries;
- inheritance and framework audits become more expensive.
Confirmations
- Searched current open and closed issues; no exact duplicate found.
- Reproduced across three separate list-valued properties and two node labels.
- Scalar requested fields work.
- Underlying values are confirmed through
query_graph.
Activity
DeusData commentedon Jul 28, 2026
Thanks for the focused property-type report.
The current serializer handles requested extra fields only when the JSON value is string, boolean, integer, or real; every array/object falls through to an empty cell (src/mcp/mcp.c:3085-3103). That is the direct reason a stored list-valued property becomes null/blank in search_graph.
I have routed this to 0.9.1-rc at priority/high because the requested field is silently misrepresented. Thank you for proving the value exists in storage.