From b29689d4deef1270eac364923b405282fe52a6f4 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Mon, 5 Oct 2026 12:32:07 -0400 Subject: [PATCH] fix(retrieval): declare the reply moment's surfacing site in FAN_OUT_SITES (milestone 458 step 4b, #4922) moment_delivery records the mounted half's surfacing under source=rp.MOMENT_RULE_SOURCE. That is an attribute the registry's extractor cannot resolve, so the site is now declared with the value it emits, read from the pipeline's own constant. Co-Authored-By: Claude Opus 5.5 --- src/scribe/services/retrieval_registry.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/scribe/services/retrieval_registry.py b/src/scribe/services/retrieval_registry.py index 3703b97d..bb2a6422 100644 --- a/src/scribe/services/retrieval_registry.py +++ b/src/scribe/services/retrieval_registry.py @@ -42,7 +42,7 @@ from __future__ import annotations from dataclasses import dataclass -from scribe.services.retrieval_pipeline import RULE_ARMS, RULE_SOURCES +from scribe.services.retrieval_pipeline import MOMENT_RULE_SOURCE, RULE_ARMS, RULE_SOURCES # ── How a point is reached ──────────────────────────────────────────────── # @@ -282,6 +282,12 @@ FAN_OUT_SITES: dict[str, tuple[str, ...]] = { "scribe/services/retrieval_pipeline.py::record_rule_surfaced(source=source)": ( tuple(arm.source for arm in RULE_ARMS) ), + # The reply moment's mounted half (milestone 458): it records under the + # moment arm's source, read from the pipeline's constant so the two doors + # cannot drift apart on the name. + "scribe/services/moment_delivery.py::record_rule_surfaced(source=)": ( + MOMENT_RULE_SOURCE, + ), }