DD-338 Phase B.1.b — HA/tailscale/syncthing catalog flips #20

Merged
piersdd merged 1 commit from feat/dd-338-b1b-ha-ts-st into main 2026-05-23 04:21:39 +00:00
piersdd commented 2026-05-23 04:17:19 +00:00 (Migrated from github.com)

Summary

Catalog declaration flip paired with three blade-mcp PRs landing handler-level canonical sort-before-return on 16 multi-record tools per DD-338-implementation-plan § Phase B.1.b:

What changed

All 16 catalog rows flip granularity.deterministic_ordering: unsorted | unstable → stable. Each tool description appended with a (Track 2 — canonical sort on <key>.) suffix documenting the contract for assemblers.

Catalog version bumps mirror the per-blade pyproject minor bumps:

  • home-assistant-blade-mcp.json: 0.2.0 → 0.5.0 (mirrors HA pyproject 0.4.0 → 0.5.0; collapses prior drift)
  • tailscale-blade-mcp.json: 0.1.1 → 0.4.0 (mirrors tailscale pyproject 0.3.0 → 0.4.0; collapses prior drift)
  • syncthing-blade-mcp.json: 0.5.0 → 0.6.1 (mirrors syncthing pyproject 0.6.0 → 0.6.1)

Catalog versions and pyproject versions had drifted under prior DD-338 A.1 / A.2.dom.c work; this commit brings them into alignment with the new pyproject versions (per spec § 4 "mirrors pyproject minor bump").

Verification

  • All 16 catalog rows declare deterministic_ordering: stable (verified — 0 remaining instances of unsorted or unstable across the 3 JSON files).
  • npm test green: 164/164 passed (14 skipped, 0 failed; out of 178 total cases across 21 suites).

Architect OQ resolutions honoured

  • OQ-1 (ha_search): outer item-type traversal order preserved; inner per-type lists sorted.
  • OQ-3 (ha_devices): canonical sort by device id (id-canonical, not friendly_name).
  • OQ-4 (ts_users): case-folded loginName primary sort key.

Merge order

No merge-order dependency with the 3 blade-mcp PRs. The catalog flip is honest at any point after at least one blade-mcp PR merges; intermediate states are "over-providing" (stable declared but unsorted shipping) which is recoverable rather than a violation.

Test plan

  • npm test green on worktree
  • Architect-reviewed before merge
  • No dependency on the 3 blade-mcp PR merge order

🤖 Generated with Claude Code

## Summary Catalog declaration flip paired with three blade-mcp PRs landing handler-level canonical sort-before-return on 16 multi-record tools per [[DD-338-implementation-plan]] § Phase B.1.b: - **home-assistant** (11 tools) — paired PR Groupthink-dev/home-assistant-blade-mcp#3 - **tailscale** (4 tools) — paired PR Groupthink-dev/tailscale-blade-mcp#3 - **syncthing** (1 tool) — paired PR Groupthink-dev/syncthing-blade-mcp#4 ## What changed All 16 catalog rows flip `granularity.deterministic_ordering: unsorted | unstable → stable`. Each tool description appended with a `(Track 2 — canonical sort on <key>.)` suffix documenting the contract for assemblers. Catalog version bumps mirror the per-blade pyproject minor bumps: - `home-assistant-blade-mcp.json`: `0.2.0 → 0.5.0` (mirrors HA pyproject `0.4.0 → 0.5.0`; collapses prior drift) - `tailscale-blade-mcp.json`: `0.1.1 → 0.4.0` (mirrors tailscale pyproject `0.3.0 → 0.4.0`; collapses prior drift) - `syncthing-blade-mcp.json`: `0.5.0 → 0.6.1` (mirrors syncthing pyproject `0.6.0 → 0.6.1`) Catalog versions and pyproject versions had drifted under prior DD-338 A.1 / A.2.dom.c work; this commit brings them into alignment with the new pyproject versions (per spec § 4 "mirrors pyproject minor bump"). ## Verification - All 16 catalog rows declare `deterministic_ordering: stable` (verified — 0 remaining instances of `unsorted` or `unstable` across the 3 JSON files). - `npm test` green: 164/164 passed (14 skipped, 0 failed; out of 178 total cases across 21 suites). ## Architect OQ resolutions honoured - **OQ-1 (`ha_search`):** outer item-type traversal order preserved; inner per-type lists sorted. - **OQ-3 (`ha_devices`):** canonical sort by device id (id-canonical, not friendly_name). - **OQ-4 (`ts_users`):** case-folded loginName primary sort key. ## Merge order No merge-order dependency with the 3 blade-mcp PRs. The catalog flip is honest at any point after at least one blade-mcp PR merges; intermediate states are "over-providing" (stable declared but unsorted shipping) which is recoverable rather than a violation. ## Test plan - [x] `npm test` green on worktree - [ ] Architect-reviewed before merge - [ ] No dependency on the 3 blade-mcp PR merge order 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Stallari/plugins!20
No description provided.