scripts/diagnose-quiz.ts line 27 imports ../server/services/generation-manager.js, which Phase 2 removed when the generation hub moved to server/services/chapter-generation-stream.ts. The script cannot run.
It is invisible today because scripts/ sits outside both pnpm typecheck and pnpm lint. Adding the whole directory to those gates surfaces exactly this one error, which is how it was found. Phase 6 added only its own scripts/build-e2e-epub-fixture.ts to both gates rather than widen them, because widening them would have meant either fixing an unrelated file or leaving the gate off.
Two ways to close it, and the final sweep's dead code pass is the natural place to choose between them. Either delete the script, if the diagnosis it performed is now covered by the quiz service's own tests, or repoint it at the module that replaced its import. Whichever wins, add scripts/**/*.ts to the tsconfig include and to the lint globs afterwards, so the next dead script cannot hide the same way.
scripts/diagnose-quiz.tsline 27 imports../server/services/generation-manager.js, which Phase 2 removed when the generation hub moved toserver/services/chapter-generation-stream.ts. The script cannot run.It is invisible today because
scripts/sits outside bothpnpm typecheckandpnpm lint. Adding the whole directory to those gates surfaces exactly this one error, which is how it was found. Phase 6 added only its ownscripts/build-e2e-epub-fixture.tsto both gates rather than widen them, because widening them would have meant either fixing an unrelated file or leaving the gate off.Two ways to close it, and the final sweep's dead code pass is the natural place to choose between them. Either delete the script, if the diagnosis it performed is now covered by the quiz service's own tests, or repoint it at the module that replaced its import. Whichever wins, add
scripts/**/*.tsto the tsconfigincludeand to the lint globs afterwards, so the next dead script cannot hide the same way.