@@ -537,6 +537,16 @@ async def run_memory_operating_poc(args: argparse.Namespace) -> dict[str, Any]:
537537 )
538538 )
539539 ranking_health = await graph .memory_health (scope = scope )
540+ ranking_signal_nodes = await backend .list_nodes (kind = NodeKind .OBSERVATION , limit = 1000 )
541+ strong_negative_signal = next (
542+ (
543+ node
544+ for node in ranking_signal_nodes
545+ if node .properties .get ("score_signal_type" ) == "strong_negative_scope_score"
546+ and scope_demoted .id in node .properties .get ("node_ids" , "" )
547+ ),
548+ None ,
549+ )
540550
541551 selected_before_success = (
542552 selected_before_feedback .success_count if selected_before_feedback else - 1
@@ -611,6 +621,10 @@ async def run_memory_operating_poc(args: argparse.Namespace) -> dict[str, Any]:
611621 and consolidation_candidate .id in consolidation_result .nodes_updated
612622 ),
613623 "scope_score_repeated_failure_signal_created" : (scope_score_failure_signal is not None ),
624+ "strong_negative_scope_score_signal_created" : (
625+ strong_negative_signal is not None
626+ and "_memory_suspect" in (strong_negative_signal .tags or [])
627+ ),
614628 "entity_property_conflict_signal_created" : (property_conflict_signal is not None ),
615629 "superseded_target_stale_signal_created" : (superseded_stale_signal is not None ),
616630 "signal_events_recorded_idempotently" : (
@@ -749,6 +763,15 @@ async def run_memory_operating_poc(args: argparse.Namespace) -> dict[str, Any]:
749763 "scope_score_failure_signal" : (
750764 asdict (scope_score_failure_signal ) if scope_score_failure_signal else {}
751765 ),
766+ "strong_negative_scope_score_signal" : (
767+ {
768+ "id" : strong_negative_signal .id ,
769+ "tags" : list (strong_negative_signal .tags or []),
770+ "properties" : dict (strong_negative_signal .properties or {}),
771+ }
772+ if strong_negative_signal
773+ else {}
774+ ),
752775 "property_conflict_signal" : (
753776 asdict (property_conflict_signal ) if property_conflict_signal else {}
754777 ),
0 commit comments