There is a design mistake in the filter chain: Any sfController->forward() as well as sfController->getPresentationFor() discards the whole current filter chain and starts a new one.
This makes it almost impossible to implement a cms like page controller where arbitrary actions can be embedded in areas on a page in a clean and efficient way.
What we need is a way to keep request filters like rendering, web_debug, common and flash even with forwards. I think we also need a way to insert a filter after/before each filter that is already in the chain. Last but not least there must be a way to run parts of the filter chain again and again to make it possible to execute nested actions as fast as possible.
So there should probably also be a way to define a filter as "request filter" (is preserved with a forward) and "action filter" (is only valid for an action) -> but it maybe useful to even reuse action filters.