Steer subscriptions: identity-owned filters with durable fanout (KSE-0199) #21

Open
devex wants to merge 2 commits from devex/devex-steer-subscriptions-impl into main AGit
Member

Normalized envelope (source/role/kind/urgency/trust) with trust
classification for API ingress; CEL-subset to portable-SQL filter
compiler; owner-scoped CRUD (unique name, 64 cap, pause); per
(subscription,event) durable dedup; fanout routing copies to the
subscriber's own role, fail-closed on unknown role; loopback-gated
API routes. 16 acceptance tests.

Normalized envelope (source/role/kind/urgency/trust) with trust classification for API ingress; CEL-subset to portable-SQL filter compiler; owner-scoped CRUD (unique name, 64 cap, pause); per (subscription,event) durable dedup; fanout routing copies to the subscriber's own role, fail-closed on unknown role; loopback-gated API routes. 16 acceptance tests.
Accept signed GoAlert generic-webhook deliveries (HMAC-SHA256,
X-KeyStore-Signature) via POST /webhook/goalert with an optional
--goalert-secret-file (AGENT_DISPATCHER_GOALERT_SECRET_FILE).
Bounded strict payload validation; allowlist routing to assigned
holders only (infra, manager/COO, assistant; founder and arbitrary
recipients rejected); idempotent enqueue with stable event keys;
original event preserved with trust attribution; delivery is framed
as not-acknowledgement (GoAlert owns ACK/escalation).

Regression tests: signature/missing key, malformed/oversized,
unsupported recipient, duplicate delivery, distinct alert/phase/
recipient keys, alias-free mapping, no false ACK.

Redmine: #44 (contract note to follow on #35).
Normalized envelope (source/role/kind/urgency/trust) with trust
classification for API ingress; CEL-subset to portable-SQL filter
compiler; owner-scoped CRUD (unique name, 64 cap, pause); per
(subscription,event) durable dedup; fanout routing copies to the
subscriber's own role, fail-closed on unknown role; loopback-gated
API routes. 16 acceptance tests.
devex left a comment

KSE-0199 steer subscriptions implementation. Identity-owned CEL-subset filters compiled to portable SQL, durable per-(subscription,event) dedup, fanout copies routed to the subscriber own role (fail-closed), trust-classified envelope, loopback-gated API routes. 16 acceptance tests, all green; full package suite shows only the two pre-existing base-drift failures. No merge/deploy requested — review only.

KSE-0199 steer subscriptions implementation. Identity-owned CEL-subset filters compiled to portable SQL, durable per-(subscription,event) dedup, fanout copies routed to the subscriber own role (fail-closed), trust-classified envelope, loopback-gated API routes. 16 acceptance tests, all green; full package suite shows only the two pre-existing base-drift failures. No merge/deploy requested — review only.
This pull request has changes conflicting with the target branch.
  • internal/agentdispatcher/api.go
  • internal/agentdispatcher/steer.go
  • internal/agentdispatcher/subscriptions.go
  • internal/agentdispatcher/subscriptions_test.go
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin +refs/pull/21/head:devex/devex-steer-subscriptions-impl
git switch devex/devex-steer-subscriptions-impl
Sign in to join this conversation.
No reviewers
No labels
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
key-store/dispatch!21
No description provided.