Detail in the proof that sheaf cohomology = singular cohomology 
Theorem: If $X$ is locally contractible, then the singular cohomology $H^k(X,\mathbb{Z})$ is isomorphic to the sheaf cohomology $H^k(X, \underline{\mathbb{Z}})$ of the locally constant sheaf of integers on $X$.

In proving this, I have seen several sources proceed more or less the same way:


*

*Let $\tilde{\mathcal{S}}^k$ be the sheafification of the presheaf $\mathcal{S}^k$ of singular cochains on $X$. Then $\underline{\mathbb{Z}} \to \tilde{\mathcal{S}}^0 \to \tilde{\mathcal{S}}^1 \to \dotsb$ is a complex of sheaves. It is exact because $X$ is locally contractible. The sheaves $\tilde{\mathcal{S}}^k$ can be shown to be flabby, and so acyclic. Therefore the homology of the complex $\tilde{\mathcal{S}}^\bullet(X)$ is just $H^\bullet (X, \underline{\mathbb{Z}})$.

*For each $k$, $\tilde{\mathcal{S}}^k(X) \cong \mathcal{S}^k(X)/\mathcal{S}^k(X)_0$, where $\mathcal{S}^k(X)_0 \subset \mathcal{S}^k(X)$ is those cochains $\sigma$ for which there exists an open cover $\mathcal{U}$ of $X$ so that $\sigma(s) = 0$ whenever $s$ is a singular simplex that lies completely in one of the sets of $\mathcal{U}$.

*$\mathcal{S}^\bullet(X) \to \mathcal{S}^\bullet(X)/\mathcal{S}^\bullet(X)_0$ is a homology equivalence.


It is the second step where I am finding trouble**. Consider the sheafification map $\mathcal{S}^k \xrightarrow{\mathrm{shf}} \tilde{\mathcal{S}}^k$. I am comfortable with the fact that the kernel of $\mathcal{S}^k(X) \xrightarrow{\mathrm{shf}_X} \tilde{\mathcal{S}}^k(X)$ is $\mathcal{S}^k(X)_0$. But why should the map be surjective?
Possible Reasons:


*

*The sheafification map is surjective on global sections if $X$ is paracompact and the presheaf satisfies the gluing axiom (proof here). Certainly $\mathcal{S}^k$ satisfies the gluing axiom. But $X$ is merely locally contractible, which doesn't imply paracompact. (A counterexample is a topological sum of uncountably many copies of $\mathbb{R}$.) (Edit: Eric Wofsey points out that this is not the right counterexample to choose. The long line works.)

*Consider the proof offered below (original source):




I don't see how they conclude that $\tilde{\beta}_i(\alpha) = \tilde{\beta}_j(\alpha)$. We know that $\tilde{\beta}_i$ and $\tilde{\beta}_j$ have the same germs on $V_i \cap V_j$, but that doesn't imply they're the same cochain (because $\mathcal{S}^k$ isn't a monopresheaf).
So far I haven't been able to figure it out. Anyone have any ideas?

**Although in showing that $\tilde{\mathcal{S}}^k$ are flabby, it is assumed that the sheafification map is surjective, and that's what I have a problem with in part 2.
 A: To elaborate on Dmitri Pavlov's comment, your questions have been answered in a recent paper by Yehonatan Sella.  Sella give an example (Example 0.3) of a locally contractible space $X$ for which $\mathcal{S}^k(X) \xrightarrow{\mathrm{shf}_X} \tilde{\mathcal{S}}^k(X)$ is not surjective.  Sella's space has $5$ points, and the argument that $\mathrm{shf}_X$ is not surjective heavily exploits the non-Hausdorff nature of the space.  It remains unclear to me whether you can get a counterexample which is Hausdorff.
Here is a different counterexample from the one Sella gives (but based on the same idea) which I think more clearly demonstrates what is going on geometrically.  Take $X=\mathbb{R}\cup\{0'\}$ to be the line with two origins, so neighborhoods of $0'$ look like neighborhoods of $0$ except with $0$ replaced by $0'$.  Define $1$-cochains $\beta_0$ on $U=X\setminus\{0'\}$ and $\beta_1$ on $V=X\setminus\{0\}$ as follows.  Define $\beta_0=0$.  Define $\beta_1(\alpha)=0$ for any $1$-simplex $\alpha$ unless $\alpha$ is the linear path from $\epsilon$ to $2\epsilon$ for some $\epsilon>0$, in which case $\beta_1(\alpha)=1$.  Note that any point in $U\cap V=\mathbb{R}\setminus\{0\}$ has a neighborhood which does not contain $[\epsilon,2\epsilon]$ for any $\epsilon>0$, and so $\beta_0$ and $\beta_1$ agree locally on $U\cap V$.  However, there is no $1$-cochain $\beta$ on $X$ which agrees with $\beta_0$ in a neighborhood of $0$ and which also agrees with $\beta_1$ on a neighborhood of $0'$, since such neighborhoods would contain $[\epsilon,2\epsilon]$ for all sufficiently small $\epsilon$.

After showing this counterexample, Sella then gives an alternate proof that singular cohomology agrees with sheaf cohomology that only requires the space to be locally contractible (or actually even just semi-locally contractible, meaning that there is a basis of open sets $U$ such that the inclusion map $U\to X$ is nullhomotopic).  The idea is that instead of taking the presheaf quotient $\mathcal{S}^k/\mathcal{S}^k_0$, which, as seen above, may not be a sheaf, you take a smaller presheaf quotient $\mathcal{C}^k$.  This quotient $\mathcal{C}^k$ can be shown to be a sheaf, and still forms a flasque resolution of the constant sheaf and has the same cohomology on global sections as $\mathcal{S}^k$.
Here's the motivation behind the construction, if I'm understanding it correctly.  The reason that it's hard to prove that $\mathcal{S}^k/\mathcal{S}^k_0$ is a sheaf is that the equivalence relation on cochains is too weak.  Two cochains are equivalent iff they agree when restricted to some neighborhood of each point.  However, the restriction to a neighborhood of a point still involves plenty of simplices that don't pass through that point, and so these "local" conditions at different points interact with each other and are hard to simultaneously satisfy at all points. This is what's going on with the counterexample above: you can't glue $\beta_0$ and $\beta_1$ because the constraints of being locally equal to $\beta_0$ at $0$ and locally equal to $\beta_1$ at $0'$ interfere with each other.
To fix this, Sella defines a stronger equivalence relation on cochains that makes the "local equality" at different points independent of each other.  Slightly simplifying, he declares two cochains $\beta,\beta'\in\mathcal{S}^k(U)$ to be equivalent if for each $x\in U$ there is a neighborhood $V$ of $x$ such that $\beta(\alpha)=\beta'(\alpha)$ for all simplices $\alpha$ which are contained in $V$ and have barycenter $x$.  If you left out the barycenter condition, this would just be equivalence mod $\mathcal{S}^k(U)_0$.  Note that this barycenter condition means that to satisfy this local condition at a point $x$, you only care about simplices with barycenter $x$, which do not affect the local condition at any other point.
Sella then defines $\mathcal{C}^k(U)$ to be the quotient of $\mathcal{S}^k(U)$ by this equivalence relation (actually, he uses a more complicated equivalence relation in order to make this construction compatible with the coboundary operation on cochains, but never mind that).  Because of the independence of the local conditions at different points, it is easy to show that $\mathcal{C}^k$ is a sheaf (to glue compatible sections, just define a cochain whose value on simplices with barycenter $x$ is given by the germ of one of your sections at $x$). It is then not hard to show that these sheaves form a flasque resolution of the constant sheaf.  The hard part is to show that $\mathcal{C}^\bullet(X)$ still has the same cohomology as $\mathcal{S}^\bullet(X)$, and this is what occupies the bulk of Sella's paper.
(Disclaimer: I have not carefully read Sella's paper, and the above is just the impression of the main ideas which I got from a cursory reading.)
