From 85c499a6e90b929fa0800ba06c837a0c2bc42c54 Mon Sep 17 00:00:00 2001 From: gregoryfoster Date: Wed, 21 Oct 2026 19:22:32 +0000 Subject: [PATCH 1/2] =?UTF-8?q?#57=20fix:=20CR=201=20=E2=80=94=20the=20bum?= =?UTF-8?q?p=20rule's=20escape=20clause=20names=20co-core's=20resolvers,?= =?UTF-8?q?=20as=20the=20guard=20checks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/specs/2026-09-29-processor-service-design.md | 5 +++-- tests/test_pin.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/specs/2026-09-29-processor-service-design.md b/docs/specs/2026-09-29-processor-service-design.md index d8bb720..b6fd1ed 100644 --- a/docs/specs/2026-09-29-processor-service-design.md +++ b/docs/specs/2026-09-29-processor-service-design.md @@ -525,8 +525,9 @@ reclaim re-running (not re-publishing) the extraction. old extractor on an old Processor, and the new one on a new Processor. Such a bump is **notice**: it carries that reasoning and the moved digests, which already show any dispatch change for an essence Watcher sends today. It - becomes coordination again only if Processor starts resolving essences - itself, and `tests/test_pin.py` fails first if it does. + becomes coordination again only if Processor starts calling co-core's + resolvers itself, and `tests/test_pin.py` fails if it does. (Resolving any + other way is Section 3's to forbid, and a co-core bump wouldn't move it.) - Until watcher#350 (2026-10-10) both sides extracted, so the pin was in lockstep with Watcher's, and both repos moved together or neither did. diff --git a/tests/test_pin.py b/tests/test_pin.py index da249d8..f43ccb5 100644 --- a/tests/test_pin.py +++ b/tests/test_pin.py @@ -6,8 +6,9 @@ co-core-direct and every moved digest in the bump note. Whether a bump is notice or coordination turns on the contract (ยง5). Essence -resolution is outside it only because Processor never resolves an essence itself, and -a test holds that premise (processor#57). +resolution is outside it only because Processor never calls co-core's resolvers +(``resolve_dispatch_essence``, ``extension_media_type``), and a test holds that +premise (processor#57). """ import ast From 18deb3c832ae0269bdf06929e8ec1d3a4baba2b5 Mon Sep 17 00:00:00 2001 From: gregoryfoster Date: Wed, 21 Oct 2026 19:22:57 +0000 Subject: [PATCH 2/2] =?UTF-8?q?#57=20fix:=20CR=202=20=E2=80=94=20the=20gua?= =?UTF-8?q?rd's=20self-test=20cases=20have=20readable=20ids?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- tests/test_pin.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/test_pin.py b/tests/test_pin.py index f43ccb5..8a69333 100644 --- a/tests/test_pin.py +++ b/tests/test_pin.py @@ -91,6 +91,15 @@ def test_processor_version_is_co_core_plus_generation() -> None: ("# resolve_dispatch_essence is the issuer's", False), ("from co_core.pure.extract.dispatch import extractor_for_essence", False), ], + ids=[ + "from-import", + "from-import-as", + "attribute", + "name", + "docstring", + "comment", + "dispatch-call", + ], ) def test_the_guard_catches_code_not_text(source: str, caught: bool) -> None: assert bool(_resolver_uses(source)) is caught