By Andrea
The reason you cannot use cong in [1] is that §2-fromMonad result type
depends on the input, you need a dependent version of cong:
cong-d : ∀ {ℓ} {A : Set ℓ} {ℓ'} {B : A → Set ℓ'} {x y : A}
→ (f : (x : A) → B x)
→ (eq : x ≡ y)
→ PathP (\ i → B (eq i)) (f x) (f y)
cong-d f p = λ i → f (p i)
I attach a modified Voevodsky.agda.
Notice that the definition of "t" is still highlighted in yellow,
that's because it being a homogeneous path depends on the exact
definition of lem, see the comment with the two definitional equality
constraints.