Skip to content

DD-338 Phase B.2 — caldav-blade-mcp catalog flips (1 stable + 5 unsorted)#21

Merged
piersdd merged 1 commit into
mainfrom
feat/dd-338-b2-caldav
May 23, 2026
Merged

DD-338 Phase B.2 — caldav-blade-mcp catalog flips (1 stable + 5 unsorted)#21
piersdd merged 1 commit into
mainfrom
feat/dd-338-b2-caldav

Conversation

@piersdd
Copy link
Copy Markdown
Contributor

@piersdd piersdd commented May 23, 2026

Summary

Catalog-side of DD-338 Phase B.2. Paired with caldav-blade-mcp PR #1 (source-side changes + tests).

Six granularity.deterministic_ordering flips on caldav-blade-mcp.json:

Tool Old New Rationale
cal_info unstable stable Single-record return — trivially satisfies the byte-identical contract per B.1.a precedent
cal_calendars unstable unsorted Multi-provider — no atomic cross-provider sort guarantee
cal_events_batch unstable unsorted Per-calendar grouped; cross-provider set-semantics
cal_search unstable unsorted Cross-provider event interleave is honest-set
cal_today unstable unsorted Multi-provider grouped
cal_week unstable unsorted Multi-provider grouped

Honest-degraded-declaration precedent

The unsorted declarations mirror the architect-ratified cf_d1_query precedent from B.1.b (joined by tailscale tag-filter client-side). Where the blade cannot honestly fulfil the deterministic contract, declare what you actually deliver — set semantics — rather than fake-comply with an internal sort. The assembler downstream is responsible for canonical ordering with full provenance.

DD-338 honest-degraded-declaration registry now has three entries:

  1. cf_d1_queryunstable (user-supplied SQL precludes blade-side reorder)
  2. tailscale tag-filter — client-side (server returns full set; blade filters in-process)
  3. cal_* multi-provider (this PR) — unsorted (cross-provider interleave is honest-set)

Architect OQ locks honoured

  • OQ-1 (PRIMARY): honest-unsorted across all 5 multi-record tools ✅
  • OQ-2: no defensive sort under unsorted declaration ✅
  • OQ-3: cal_calendars partial-tolerance softening lands in paired source PR ✅
  • OQ-4: error-row render style at implementer's discretion ✅

Test plan

  • npm test green: 164/178 passing (14 skipped, 0 fail) after node scripts/build-forge-context.js
  • No tool changes its scope_filtering or audit_surface declaration (out of scope for B.2)

Convention #23 reader-audit advances 43 → 44 migrated blade-tool-sets on merge of both paired PRs.

🤖 Generated with Claude Code

…ted)

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 <noreply@anthropic.com>
@piersdd piersdd merged commit fab8bff into main May 23, 2026
1 check passed
@piersdd piersdd deleted the feat/dd-338-b2-caldav branch May 23, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant