From d14356456f3dac3c618e2ac51052179edf1a03fa Mon Sep 17 00:00:00 2001 From: Piers Date: Sat, 23 May 2026 14:50:41 +1000 Subject: [PATCH] =?UTF-8?q?DD-338=20Phase=20B.2=20=E2=80=94=20caldav-blade?= =?UTF-8?q?-mcp=20catalog=20flips=20(1=20stable=20+=205=20unsorted)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flip 6 deterministic_ordering declarations on caldav-blade-mcp tools per the DD-338 Phase B.2 spec (architect-approved 2026-05-23): - cal_info: unstable → stable (single-record per B.1.a precedent) - cal_calendars: unstable → unsorted (honest multi-provider declaration) - cal_events_batch: unstable → unsorted - cal_search: unstable → unsorted - cal_today: unstable → unsorted - cal_week: unstable → unsorted The honest-unsorted declaration mirrors the cf_d1_query architect-ratified precedent from B.1.b — where the blade cannot honestly fulfil the deterministic contract (no atomic cross-provider sort guarantee), declare set semantics rather than fake-comply with an internal sort. Assembler downstream is responsible for canonical ordering with provenance. OQ-1 (PRIMARY) RATIFIED: honest-unsorted across all 5 multi-record tools; no bounded-wait rewrite. OQ-2 RATIFIED NO: no defensive in-blade sort under unsorted declaration. OQ-3 RATIFIED YES: cal_calendars partial-tolerance softening lands in the paired caldav-blade-mcp PR. Convention #23 reader-audit advances 43 → 44 migrated blade-tool-sets on merge of both paired PRs. Co-Authored-By: Claude Opus 4.7 --- plugins/tools/caldav-blade-mcp.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/tools/caldav-blade-mcp.json b/plugins/tools/caldav-blade-mcp.json index 0ef3858..46f2c0b 100644 --- a/plugins/tools/caldav-blade-mcp.json +++ b/plugins/tools/caldav-blade-mcp.json @@ -69,7 +69,7 @@ "granularity": { "scope_filtering": "none", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "stable", "audit_surface": "minimal" } }, @@ -80,7 +80,7 @@ "granularity": { "scope_filtering": "none", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "unsorted", "audit_surface": "minimal" } }, @@ -102,7 +102,7 @@ "granularity": { "scope_filtering": "server-side", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "unsorted", "audit_surface": "minimal" } }, @@ -124,7 +124,7 @@ "granularity": { "scope_filtering": "client-side", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "unsorted", "audit_surface": "minimal" } }, @@ -135,7 +135,7 @@ "granularity": { "scope_filtering": "server-side", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "unsorted", "audit_surface": "minimal" } }, @@ -146,7 +146,7 @@ "granularity": { "scope_filtering": "server-side", "field_projection": "none", - "deterministic_ordering": "unstable", + "deterministic_ordering": "unsorted", "audit_surface": "minimal" } },