Page MenuHomePhabricator

Edge transactions are broadly non-modular and lack transaction hooks, including hooks for validation behavior
Open, LowPublic

Description

Most edge mutations are applied with TYPE_EDGE transactions, which are currently inconvenient to specialize and rarely validated.

They are selectively specialized by hard-coding behavior in PhabricatorApplicationTransaction (which is not available to extensions) or through ad-hoc hooks on PhabricatorEdgeType (which are probably not ideal).

A possible approach is to allow EdgeType to emit a ModularTransactionType that specializes behavior. Or we could continue specializing on EdgeType, although this probably leads to an EdgeType with 95% overlap with ModularTransactionType.

See also: