[proofplan]
We localise $\omega$ via a partition of unity subordinate to an atlas of interior charts (modelled on $\mathbb{R}^n$) and boundary charts (modelled on $\mathbb{R}^n_+$), reducing the theorem to two coordinate-level identities. On interior charts, compact support and Fubini make all terms in $\int_{U_i} d(\rho_i \omega)$ vanish via the one-dimensional fundamental theorem of calculus. On boundary charts, only the $x_1$-derivative term survives, and evaluating at the boundary $\{x_1 = 0\}$ produces precisely $\int_{U_i \cap \partial M} \rho_i \omega$ with the correct sign dictated by the Stokes orientation. Summing over the partition and using $\sum_i \rho_i = 1$ yields the global identity.
[/proofplan]
[step:Localise via a partition of unity subordinate to an oriented atlas]
Cover $M$ by an oriented atlas $\{(U_i, \varphi_i)\}$ such that every $U_i$ intersecting $\partial M$ is a boundary chart $\varphi_i : U_i \to \mathbb{R}^n_+ \cap B(0, 1)$, and every interior $U_i$ (with $U_i \cap \partial M = \varnothing$) is an interior chart $\varphi_i : U_i \to B(0, 1) \subset \mathbb{R}^n$. Fix a smooth partition of unity $\{\rho_i\}$ subordinate to this atlas: $\rho_i \in C_c^\infty(M)$, $\operatorname{supp}(\rho_i) \subset U_i$, $\{\operatorname{supp}(\rho_i)\}$ locally finite, $\sum_i \rho_i \equiv 1$. Since $\operatorname{supp}(\omega)$ is compact and the partition is locally finite, the set of indices $i$ with $\operatorname{supp}(\rho_i) \cap \operatorname{supp}(\omega) \ne \varnothing$ is finite. For such $i$, $\rho_i \omega \in \Omega^{n-1}_c(U_i)$. Using linearity of $d$ and $\int$, and $\sum_i \rho_i \equiv 1$:
\begin{align*}
\int_M d\omega = \int_M d\Big(\sum_i \rho_i \omega\Big) = \sum_i \int_M d(\rho_i \omega) = \sum_i \int_{U_i} d(\rho_i \omega),
\end{align*}
where the last equality uses that $d(\rho_i \omega)$ is supported in $U_i$. Similarly,
\begin{align*}
\int_{\partial M} \omega = \sum_i \int_{U_i \cap \partial M} \rho_i \omega.
\end{align*}
The theorem reduces to proving, for each $i$,
\begin{align*}
\int_{U_i} d(\rho_i \omega) = \int_{U_i \cap \partial M} \rho_i \omega.
\end{align*}
[/step]
[step:Compute $d(\rho_i \omega)$ in local coordinates]
Let $\eta := \rho_i \omega$, a compactly supported $(n-1)$-form on $U_i$. Transport everything to Euclidean space via the pullback $(\varphi_i^{-1})^*\eta$, which is a compactly supported $(n-1)$-form on $\varphi_i(U_i) \subset \mathbb{R}^n$ (or $\mathbb{R}^n_+$ in the boundary case). Writing coordinates $(x_1, \dots, x_n)$, any $(n-1)$-form on an open set of $\mathbb{R}^n$ decomposes as
\begin{align*}
(\varphi_i^{-1})^*\eta = \sum_{j=1}^{n} (-1)^{j-1} a_j \, dx_1 \wedge \cdots \wedge \widehat{dx_j} \wedge \cdots \wedge dx_n,
\end{align*}
where $\widehat{\cdot}$ denotes omission and $a_j \in C_c^\infty(\varphi_i(U_i))$. Applying the exterior derivative and using $d(f \, dx_I) = \sum_k \partial_{x_k} f \, dx_k \wedge dx_I$ together with the anti-commutation of wedge, only the $k = j$ term survives in each summand, and
\begin{align*}
d((\varphi_i^{-1})^*\eta) = \sum_{j=1}^{n} \frac{\partial a_j}{\partial x_j} \, dx_1 \wedge \cdots \wedge dx_n.
\end{align*}
By [Integration of Differential Forms](/theorems/1529),
\begin{align*}
\int_{U_i} d\eta = \int_{\varphi_i(U_i)} \sum_{j=1}^{n} \frac{\partial a_j}{\partial x_j}(x) \, d\mathcal{L}^n(x),
\end{align*}
where each $a_j$ is compactly supported in $\varphi_i(U_i)$.
[/step]
[step:Interior case: vanishing via the fundamental theorem of calculus]
Suppose $U_i \cap \partial M = \varnothing$, so $\varphi_i(U_i) \subset \mathbb{R}^n$ is a standard open set and the $a_j$ are in $C_c^\infty(\mathbb{R}^n)$ (extended by zero). Fix $j \in \{1, \dots, n\}$. The $a_j$-integral separates by [Fubini's Theorem](/theorems/???), valid because $a_j$ is continuous with compact support, hence bounded and absolutely integrable:
\begin{align*}
\int_{\mathbb{R}^n} \frac{\partial a_j}{\partial x_j} \, d\mathcal{L}^n(x) = \int_{\mathbb{R}^{n-1}} \!\! \left( \int_\mathbb{R} \frac{\partial a_j}{\partial x_j}(x_1, \dots, x_n) \, d\mathcal{L}^1(x_j) \right) d\mathcal{L}^{n-1}(\hat x_j),
\end{align*}
where $\hat x_j = (x_1, \dots, \widehat{x_j}, \dots, x_n)$. For each fixed $\hat x_j$, the function $t \mapsto a_j(\hat x_j, t)$ (placing $t$ in the $j$-th slot) is smooth with compact support in $\mathbb{R}$. By the [Fundamental Theorem of Calculus](/theorems/???),
\begin{align*}
\int_\mathbb{R} \frac{\partial a_j}{\partial x_j}(x_1, \dots, x_n) \, d\mathcal{L}^1(x_j) = \lim_{R \to \infty} [a_j(\hat x_j, t)]_{t = -R}^{t = R} = 0 - 0 = 0,
\end{align*}
the two limits being zero by compact support. Summing over $j$:
\begin{align*}
\int_{U_i} d\eta = \sum_{j=1}^n 0 = 0.
\end{align*}
On the other hand, $U_i \cap \partial M = \varnothing$ forces $\int_{U_i \cap \partial M} \eta = 0$. Thus the identity holds in the interior case.
[/step]
[step:Boundary case: isolate the surviving $x_1$-derivative term]
Now suppose $U_i \cap \partial M \ne \varnothing$, so $\varphi_i(U_i) \subset \mathbb{R}^n_+ = \{x_1 \ge 0\}$ and $\varphi_i(U_i \cap \partial M) = \varphi_i(U_i) \cap \{x_1 = 0\}$. For $j \ge 2$, the argument from Step 3 applies verbatim in the $x_j$-direction: each $a_j$ is compactly supported in $\mathbb{R}$ as a function of $x_j$ (with other coordinates fixed in $\mathbb{R}^n_+$), and
\begin{align*}
\int_\mathbb{R} \frac{\partial a_j}{\partial x_j} \, d\mathcal{L}^1(x_j) = 0,
\end{align*}
hence the corresponding contribution to $\int_{U_i} d\eta$ vanishes. Only $j = 1$ survives. For fixed $(x_2, \dots, x_n)$, the $x_1$-integration runs over $\{x_1 \ge 0\}$:
\begin{align*}
\int_0^\infty \frac{\partial a_1}{\partial x_1}(x_1, x_2, \dots, x_n) \, d\mathcal{L}^1(x_1) = \lim_{R \to \infty} a_1(R, x_2, \dots, x_n) - a_1(0, x_2, \dots, x_n) = -a_1(0, x_2, \dots, x_n),
\end{align*}
using compact support of $a_1$ to drop the $R \to \infty$ boundary value. Applying Fubini:
\begin{align*}
\int_{U_i} d\eta = \int_{\mathbb{R}^{n-1}} (- a_1(0, x_2, \dots, x_n)) \, d\mathcal{L}^{n-1}(x_2, \dots, x_n) = -\int_{\mathbb{R}^{n-1}} a_1(0, x_2, \dots, x_n) \, d\mathcal{L}^{n-1}.
\end{align*}
[/step]
[step:Identify the boundary integral using the Stokes orientation]
The boundary $U_i \cap \partial M$ is $\{x_1 = 0\}$ in the chart $\varphi_i$, and by [Induced Orientation on the Boundary](/theorems/1528), its induced orientation is represented by
\begin{align*}
\iota_{-\partial_{x_1}}(dx_1 \wedge \cdots \wedge dx_n) = -dx_2 \wedge \cdots \wedge dx_n.
\end{align*}
Restricting $(\varphi_i^{-1})^*\eta$ to $\{x_1 = 0\}$ kills every term containing $dx_1$, so only the $j = 1$ summand survives:
\begin{align*}
(\varphi_i^{-1})^*\eta \Big|_{\{x_1 = 0\}} = a_1(0, x_2, \dots, x_n) \, dx_2 \wedge \cdots \wedge dx_n.
\end{align*}
Integrating over $\partial M \cap U_i$ using the Stokes orientation:
\begin{align*}
\int_{U_i \cap \partial M} \eta = \int_{\{x_1 = 0\}} a_1(0, x_2, \dots, x_n) \, (-dx_2 \wedge \cdots \wedge dx_n) = -\int_{\mathbb{R}^{n-1}} a_1(0, x_2, \dots, x_n) \, d\mathcal{L}^{n-1}.
\end{align*}
Comparison with Step 4 gives
\begin{align*}
\int_{U_i} d\eta = -\int_{\mathbb{R}^{n-1}} a_1(0, \cdot) \, d\mathcal{L}^{n-1} = \int_{U_i \cap \partial M} \eta.
\end{align*}
[guided]
The Stokes orientation on $\partial M$ in boundary coordinates $\{x_1 = 0\}$ is represented by $-dx_2 \wedge \cdots \wedge dx_n$: this is precisely the sign built into the definition so that the minus from the fundamental-theorem-of-calculus evaluation at the lower endpoint ($-a_1(0, \cdot)$) is cancelled by the sign in the orientation convention, giving a clean equality. Were we to use the naive convention $dx_2 \wedge \cdots \wedge dx_n$ for the boundary orientation, Stokes' theorem would pick up a sign. The proof thus reveals why the outward-normal-first convention is the natural one: it is the convention that makes $\int_M d\omega = \int_{\partial M} \omega$ without decorative signs. What fails without compact support? The fundamental theorem of calculus limit $a_1(R, \cdot) \to 0$ as $R \to \infty$ would not hold, and a non-zero contribution would appear "at infinity", breaking the identity.
[/guided]
[/step]
[step:Sum the local identities to conclude]
Summing the local identity $\int_{U_i} d(\rho_i \omega) = \int_{U_i \cap \partial M} \rho_i \omega$ (established for both the interior case in Step 3 and the boundary case in Step 5) over all $i$ in the finite index set from Step 1:
\begin{align*}
\int_M d\omega = \sum_i \int_{U_i} d(\rho_i \omega) = \sum_i \int_{U_i \cap \partial M} \rho_i \omega = \int_{\partial M} \omega.
\end{align*}
This completes the proof.
[/step]