fix(spec): reject undeliverable IOA webhooks (ARN-227) - #399
Conversation
Outbound IOA webhooks were accepted and expanded into integrations but never executed by production dispatch (wasm/adapter only). That certified dead work. Reject both action-trigger kind=webhook and legacy integration type=webhook (including omitted type default) at validation with a stable durable-delivery error. Keep webhook syntax deserializable for the precise error; do not synthesize webhook integrations or custom effects. Clarify docs and platform integration engine scope. ADR-0176 records the rejection boundary and the future acceptance gate for a journaled delivery runtime.
Drop [[integration]] type=webhook blocks from fixtures so they load under the ADR-0176 rejection boundary. Clarify crucible scheduler comments to WASM.
Grok independent review — PR #399 (ARN-227 / ADR-0176)Scope: Reject undeliverable outbound IOA webhooks ( What was done well
FindingsImportant (should fix / confirm)
Suggestions (nice to have)
Plan alignmentMatches ADR-0176: reject both surfaces, keep syntax for precise errors, no fake delivery, docs/skills/fixtures updated. Acceptance gate for future journaled delivery is recorded in the ADR rather than half-implemented. VerdictCorrect fail-closed boundary with thorough parser tests and doc surface cleanup. Residual risk is deploy-time breakage of bare Verdict: PASS |
|
@greptile review |
ARENA SHIPPABLE · Grok · 2026-07-14 11:57 PDTPR: #399 Checklist
Summaryreject undeliverable webhooks |
Summary
IOA specs accepted
kind = "webhook"/[[integration]] type = "webhook"and synthesized integration metadata, but production post-dispatch only executeswasmandadapter. Specs could verify and install while silently dropping declared outbound work.This PR chooses the reject-until-durable-runtime boundary (ADR-0176):
outbound IOA webhooks are unsupported until durable delivery is availablewebhooks.tomltrajectory subscribers and the standalone platformIntegrationEnginelibrary (direct config only) in placeTests
cargo test -p temper-spec --lib: 269 passed (includes 7 webhook rejection regressions)cargo test -p temper-spec --test migration_differential: 3 passed.ioa.toml): all parse with 0 webhook integrationstype = "webhook", omitted type (defaults to webhook), andkind = "webhook"all fail with the durable-delivery messageADR
docs/adrs/0176-reject-undeliverable-ioa-webhooks.md(unique; codex branch used 0171)Linear
Residual risks