In the pure lambda calculus, we have the inductively defined set of terms (the grammar): $$e::= x \mid \lambda x . e \mid e_1 e_2$$
Under the call-by-value evaluation strategy, we have the inference rules for beta-reduction and rules on how to evaluate applications (congruence rules). I am trying to understand how evaluation contexts can replace the congruence rules without actually changing the syntax of the language. Without evaluation contexts, we have the following:
$$ \frac{e_1 \rightarrow e_1'}{e_1e_2 \rightarrow e_1'e_2} $$ and $$ \frac{e_2 \rightarrow e_2'}{ve_2 \rightarrow ve_2'}. $$
This makes sense, since if we have an instance of an expression $t = (\lambda f . \lambda x. f x)((\lambda y .y)\lambda z .z)\lambda w.w$, it is clear that it is of the form $e_1e_2 \rightarrow e_1'e_2$ and thus $$(\lambda f . \lambda x. f x)((\lambda y .y)\lambda z .z)\lambda w.w \rightarrow (\lambda f . \lambda x. f x)(\lambda z .z)\lambda w.w$$
If we replace the congruence rules with evaluation contexts: $$E::= [\cdot] \mid Ee \mid vE$$ then we need only a single rule to express the congruence rules of the language: $$ \frac{e \rightarrow e'}{E[e] \rightarrow E[e']}. $$
I am confused as to how evaluation contexts can tell us how to evaluate the expression $t$ from above without changing the syntax of the language. I don't understand how the evaluation context "works" without rewriting $t$ as
$$E_t = (\lambda f . \lambda x. f x)[\cdot]\lambda w.w$$
where $t = E_t[((\lambda y .y)\lambda z .z)]$. There is no obvious a priori reason to evaluate $t$ under call-by-value without knowledge of $E_t$. I really have no idea where I am going wrong. Can someone help correct my thinking?