Solved at Scale
Honest Solver Scope
CPM is still exact for what it computes, and its honesty line already excludes resource limits. The solver's contribution is the structure CPM cannot represent, and the chapter's claims stop at one pinned instance.
CPM is still exact
Nothing here replaces the earlier chapters: the forward and backward passes are still exact for what they compute on the earlier pinned precedence-only DAG, a separate instance from this chapter's job-shop schedule. Why: the book's own honesty line says those values assume no resource limits, and this chapter is exactly the case that line excludes.
What the solver adds
The solver's contribution is resource contention across jobs: which job gets a machine when both want it. Why: the CPM model does not represent machines at all, so no cleverness with float or slack could express the constraint that a machine runs one task at a time.
Transfer boundary
The honest boundary: this chapter certifies one pinned instance with 3 jobs — one decoded schedule, re-verified against every constraint class, with the solver's bound meeting its makespan — and says nothing about solver runtimes or larger job-shop instances. Why: a certified makespan on a small instance is exact knowledge about that instance, not a performance promise about a different one. Pixel positions are rounded for layout; every number shown is exact.