@@ -40,6 +40,14 @@ def test_infer_fallback_labels_marks_core_for_runtime_changes() -> None:
4040 assert labels == {"feature:core"}
4141
4242
43+ def test_infer_fallback_labels_marks_sessions_for_extensions_memory_changes() -> None:
44+ labels = pr_labels.infer_fallback_labels(
45+ ["src/agents/extensions/memory/advanced_sqlite_session.py"]
46+ )
47+
48+ assert labels == {"feature:sessions"}
49+
50+
4351def test_compute_desired_labels_removes_stale_fallback_labels() -> None:
4452 desired = pr_labels.compute_desired_labels(
4553 pr_context=pr_labels.PRContext(),
@@ -100,6 +108,24 @@ def test_compute_desired_labels_infers_bug_from_fix_title() -> None:
100108 assert desired == {"bug", "feature:core"}
101109
102110
111+ def test_compute_desired_labels_infers_sessions_for_extensions_memory_fix() -> None:
112+ desired = pr_labels.compute_desired_labels(
113+ pr_context=pr_labels.PRContext(title="fix(memory): honor custom table names"),
114+ changed_files=[
115+ "src/agents/extensions/memory/advanced_sqlite_session.py",
116+ "tests/extensions/memory/test_advanced_sqlite_session.py",
117+ ],
118+ diff_text="",
119+ codex_ran=True,
120+ codex_output_valid=True,
121+ codex_labels=[],
122+ base_sha=None,
123+ head_sha=None,
124+ )
125+
126+ assert desired == {"bug", "feature:sessions"}
127+
128+
103129def test_compute_managed_labels_preserves_model_only_labels_without_signal() -> None:
104130 managed = pr_labels.compute_managed_labels(
105131 pr_context=pr_labels.PRContext(),
0 commit comments