Skip to content

ADR-0007: Notices by default

Status: Accepted Date: 2026-09-29 Deciders: Alex Nodeland

Records decision D7 of stackr RFC-0002, the combined system.

Context

A message that people send through artifactr's surfaces starts a turn: a model call, which can edit artifacts, which can fire rules again. Most rules only need to tell people something ("the rule is live", "the deploy failed"), and a turn per message would cost a model call each time and make loops far more likely.

Decision

  • A rule's messages are notices by default. relayr commits them directly, as the rule's actor, without Runner.send, so they start no turn.
  • Starting a turn is a per-rule permission, granted in the rule's allowlist. Only then does relayr send the message through Runner.send.

Options considered

Option For Against
Notices by default; starting a turn is a per-rule permission (chosen) Most rules only need to inform people. Turns cost model calls and can loop A rule that needs the agent must say so
Every bridge message starts a turn, as messages from the surfaces do Uniform Each notice becomes a model call, and loops get much more likely

Consequences

  • Easier: a rule that reports its work costs nothing in model calls, and can't start a runaway turn.
  • Harder: a notice posted while a turn is running still reaches that turn, and nothing marks it as a notice for other clients. artifactr #63 closes that gap, and phase 2 waits for it.