Skip to content

feat(router): fail closed on capability combinations the provider plane cannot honor - #57

Merged
cryptoxdog merged 2 commits into
mainfrom
campaign/7-router-capability-integrity
Aug 18, 2026
Merged

feat(router): fail closed on capability combinations the provider plane cannot honor#57
cryptoxdog merged 2 commits into
mainfrom
campaign/7-router-capability-integrity

Conversation

@cryptoxdog

Copy link
Copy Markdown
Collaborator

Summary

Type of Change

  • Bug fix
  • Feature / enhancement
  • Refactor (no behavior change)
  • Documentation
  • CI / governance change
  • Breaking change (see rollback plan below)

Governance Checklist

  • Governance setup verified — ran setup_workspace_symlinks.sh, symlinks resolve (§2)
  • Symlinks validatedls -la .cursor/rules .cursor/skills .cursor/commands all resolve
  • All CI gates green — no required checks failing or bypassed
  • Anti-patterns checked — reviewed CANONICAL_LAW.md §7 — none violated
  • CODEOWNERS notified — blast-radius files trigger auto-request; confirmed reviewers assigned
  • Workspace wiring intact§8 wiring requirements satisfied
  • TRACEABILITY_MAP.yaml updated — if this PR resolves an open unknown, mark as RESOLVED
  • Kernel ref discipline — thin callers use @v1, never @main or bare SHA

Breaking Change

  • This is a breaking change

If checked, describe the impact and migration path:

Rollback Plan


Related Issues

Closes #

Commits

  • feat(router): fail closed on capability combinations the provider plane cannot honor
  • docs(router): document the single capability authority chain and fail-closed codes

Test plan

  • make pr-check (local changed-files gate) PASS before open
  • L4 kernels: Recursive Alignment + Validate & Repair (release authorized)
  • CI green; agent PR remediation subscribed after open

cryptoxdog and others added 2 commits August 18, 2026 00:05
…ne cannot honor

Single capability authority chain: resolveCapabilities + validateCapabilities
in search-policy.ts feed one RoutingResolution consumed by both resolveRoute
and dispatchProvider, so a request can never be interpreted one way at
routing time and another way at dispatch time.

- VISION_INPUT_REQUIRED: vision task without images fails before routing
- IMAGES_NOT_SUPPORTED_FOR_TASK: images on a non-vision task fail closed
- SEARCH_MODIFIER_WITHOUT_SEARCH: recency/domainFilter require search
- CONSENSUS_REQUIRES_SEARCH: consensus requires a search-backed route
- resolvePerplexityConfig refuses non-search tasks (disableSearch stays false)
- RoutingResolution gains visionRequired; RoutingDecision gains
  outcome/failureKind/errorCode so failed routed calls are auditable
- Routing matrix extended with the contract's fail-closed rows

Co-Authored-By: Claude <noreply@anthropic.com>
…-closed codes

Co-Authored-By: Claude <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@cryptoxdog
cryptoxdog merged commit 633d925 into main Aug 18, 2026
20 checks passed
@cryptoxdog
cryptoxdog deleted the campaign/7-router-capability-integrity branch August 18, 2026 12:56
@cryptoxdog cryptoxdog mentioned this pull request Aug 18, 2026
18 tasks
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