Oh! What a gem I mined in sources:
branch: REL_11_STABLE
src/backend/executor/nodeModifyTable.c:
* BEFORE ROW INSERT Triggers.
*
* Note: We fire BEFORE ROW TRIGGERS for every attempted insertion
in an
* INSERT ... ON CONFLICT statement. We cannot check for constraint
* violations before firing these triggers, because they can change
the
* values to insert. Also, they can run arbitrary user-defined
code with
* side-effects that we can't cancel by just not inserting the
tuple.
*/
Still not the place where ON CONFLICT could be validated on per-row basis?