Implement task summary. You own src/summary.js and summary.test.js on lab/summary. Implement summarizeTasks(tasks), returning {total,todo,doing,done}. Use all supplied tasks; empty input returns zeros; preserve input. Test mixed statuses, empty input, counts after a status update and non-mutation.

Read LAB.md and the task data contract first. Work only in your assigned worktree and branch. Keep shared data, app entry point and configuration unchanged. Do not add dependencies. Report any need to change files outside your assignment before editing them. Add behavior tests, run npm test and npm run build. Commit only your assigned files on your branch. Do not merge, push or publish. Return your commit ID, files changed, actual checks and results, assumptions, limitations and integration instructions. Instructions about scope are coordination rules, not enforced security controls.