feat(server): wire the Linear agent-notification lane data sink (RIG-2732 T7) - #751
Open
rigel-mintaka wants to merge 1 commit into
Open
feat(server): wire the Linear agent-notification lane data sink (RIG-2732 T7)#751rigel-mintaka wants to merge 1 commit into
rigel-mintaka wants to merge 1 commit into
Conversation
|
Compass engineering docs preview: https://compass-forge-rig-2732-t7-li-da0p.compass-eng-docs.pages.dev Deployed from |
…2732 T7) The Linear webhook ingress (POST /webhooks/linear, #744) landed with its data-change sink injected-and-nil-for-now (DL-302): a verified Issue/Comment event acked-and-dropped. This builds the Linear-provider-bound notify lane and threads its sink into the handler, so a verified event now routes to subscribers at the LINEAR/linear.app coordinate. - buildLinearNotifyLane: the Linear sibling of buildForgeNotifyLane, gated App-INDEPENDENTLY on LINEAR_FORGE_TOKEN (forgeSecretDeclared) — the same credential the write path's Linear coordinate uses; undeclared -> nil lane (off-state), a resolve fault fails fast. Binds store.ForgeProviderLinear / "linear.app", client forge.NewLinear, reconciler Backstop 0 (-> ingest default). - forgeNotifyChecksRoller generalized to hold a forge.NotifyReader instead of a concrete *forge.GitHub, so one adapter serves both lanes (both *forge.GitHub and *forge.Linear satisfy NotifyReader). Behavior-preserving for GitHub. Linear's ChecksConditional returns ErrUnsupported but the router invokes RollUp only on a CHECKS event Linear (issues-only) never produces. - Serve builds the lane (same fail-fast cleanup path as the board wiring) and threads its sink through buildDoors (new linearDataSink param) into buildLinearWebhookWiring, replacing the nil sink. The two gates stay independent: the webhook secret gates the handler; LINEAR_FORGE_TOKEN gates the sink. - startForgeIngestLanes now takes the notify lanes variadically; the Linear lane's arm + reconciler start on the serve errgroup. A nil lane starts nothing. - The session arm (sessionSink) stays nil (RIG-2717's separate responder lane). Refs RIG-2732 Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-forge/rig-2732-t7-linear-notify
branch
from
August 30, 2026 21:03
7e95260 to
cb1bfa8
Compare
rigel-mintaka
marked this pull request as ready for review
August 30, 2026 21:16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Linear webhook ingress (POST /webhooks/linear, #744) landed with its
data-change sink injected-and-nil-for-now (DL-302): a verified Issue/Comment
event acked-and-dropped. This builds the Linear-provider-bound notify lane and
threads its sink into the handler, so a verified event now routes to
subscribers at the LINEAR/linear.app coordinate.
App-INDEPENDENTLY on LINEAR_FORGE_TOKEN (forgeSecretDeclared) — the same
credential the write path's Linear coordinate uses; undeclared -> nil lane
(off-state), a resolve fault fails fast. Binds store.ForgeProviderLinear /
"linear.app", client forge.NewLinear, reconciler Backstop 0 (-> ingest
default).
concrete *forge.GitHub, so one adapter serves both lanes (both *forge.GitHub
and *forge.Linear satisfy NotifyReader). Behavior-preserving for GitHub.
Linear's ChecksConditional returns ErrUnsupported but the router invokes
RollUp only on a CHECKS event Linear (issues-only) never produces.
threads its sink through buildDoors (new linearDataSink param) into
buildLinearWebhookWiring, replacing the nil sink. The two gates stay
independent: the webhook secret gates the handler; LINEAR_FORGE_TOKEN gates
the sink.
lane's arm + reconciler start on the serve errgroup. A nil lane starts
nothing.
Refs RIG-2732
Co-authored-by: Matt Wilkinson matt@rigel.build