Skip to content

E5: Policy federation and governance #23

Description

@gnanirahulnutakki

Goal. govern the fan-out of a single intent to N clusters — one ordered enforcement pipeline, Ardur as the policy decision point and identity broker, environment gates and multi-approver flows, wave/canary ordering with a gate per wave, partial-failure and auto-rollback, idempotency, and honest abstention when the fleet view is incomplete.

Phase / depends. P1 (the policy-hook seam and pipeline shape, allowing reads) → P2 (Ardur PDP + identity broker on the first write) → P3 (the full fan-out reasoning). Depends on: E1 (identity), E2 (fleet model and staleness), and co-develops with E4 (every intent rides this pipeline). This is the genuinely novel, hard part of Sith and implements ADR-0004/ADR-0005.

Capabilities: policy federation — waves / canary / environment gates / multi-approver / abstention.

Features

  • F5.1 — PEP enforcement pipeline
  • F5.2 — policy-hook seam
  • F5.3 — Ardur PDP integration
  • F5.4 — Ardur scoped-identity broker
  • F5.5 — environment gates and multi-approver
  • F5.6 — wave/canary ordering with a gate per wave
  • F5.7 — partial-failure semantics and auto-rollback
  • F5.8 — federation-specific abstention
  • F5.9 — elicited per-action approval bound to an arg-hash

Tracked issues

Exit criteria

  • Every intent, UI or MCP, passes one ordered PEP pipeline with no privileged path; the policy seam exists from P1.
  • Ardur returns real allow/deny/require-approval verdicts, records reasons, and mints per-action scoped identities below the human ceiling.
  • Prod never auto-acts; multi-cluster prod needs multiple distinct approvers; a max-clusters ceiling holds.
  • A wave-ordered fan-out runs with a gate per wave and inter-wave health checks; a mid-rollout failure stops and auto-rolls-back that wave; retries dedupe.
  • A stale targeted set produces a correct, logged abstention; approvals are arg-hash-bound and single-use.

Source: docs/EPICS.md, docs/SITH-NOTION.md · part of the Sith implementation backlog (see the master roadmap issue).


2026-07 research addendum (market research T4; standards §5.2)

MCP Elicitation is the native approval hook (standards §5.2). As of 2026-07-17, the latest published MCP specification is 2025-06-18. It introduced Elicitation (elicitation/create) as the standard server-initiated structured user-input primitive and explicitly requires that servers MUST NOT request sensitive information through elicitation. This is the correct published basis for Sith's per-action approval gates (F5.9, arg-hash-bound, single-use). Every governed intent — human or agent — passes the same PEP pipeline; the approval is elicited, never a header or a client-side flag.

  • F5.9 acceptance: approval is elicited via the MCP elicitation primitive, bound to a hash of the resolved args, single-use; elicitation never requests secrets.

Primary source: https://modelcontextprotocol.io/specification/2025-06-18/client/elicitation

Abstention as a first-class governance output (F5.8). When the fleet view is incomplete/stale, a fleet-wide intent abstains with an honest message rather than acting on partial coverage — the same trust posture as the Investigation Brain's coverage-gate abstention (E14 #46), applied to the write path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicEpic tracking issuegovernancePDP / audit / decision-ledger / tenancyphase-3Phase 3: policy federation + MCP writepolicy-federationFan-out policy / approvals / abstention

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions