That filters must be independent entities: in particular, they should not share state with other filters. [1]
Heuristic
Filters should not know the identity of their upstream and downstream filters.
Heuristic
Specifications might restrict what appears on the input pipes or make guarantees about what appears on the output pipes, but they may not identify the components that are attached to the output pipes.
Single Responsible Filters
Heuristic
Filters should perform one task only. Composite tasks should be handled by a sequence of filters rather than a single one.
References
Shaw, M., & Garlan, D. (1996). Software Architecture: Perspectives on an Emerging Discipline. Pearson.