# Contract: Task Discipline Version: 1.1 ## Principle Finish before switching. A task is not done until it reaches a logical end. ## Scope Definition - Before implementation starts, the task description must state the target platform and language explicitly: CLI, server-rendered web app, desktop app, library, and the language/runtime it runs on. - If the platform is not stated, ask before writing code. Do not infer it from the surrounding repo. - A platform pivot after implementation invalidates connection, config, and transport plumbing built around the previous shape. Treat such a pivot as a new task, not as a continuation. ## Rules - Do not start a new task while the current one is unfinished. Switching mid-task leaves half-done work that is harder to recover than if it had never been started. - If a new idea or requirement surfaces during work, note it and address it after the current task is complete. - "Logical end" means: the change works, is committed, and leaves the codebase in a coherent state — not just "the immediate code compiles." - Do not open new files, refactor adjacent code, or fix unrelated issues while implementing a specific task. Stay focused on the defined scope. - If the current task is blocked, resolve the blocker or explicitly hand off — do not silently pivot to something else. ## Anti-patterns - Starting a refactor while in the middle of a bug fix. - Leaving a feature half-implemented because something more interesting came up. - Responding to a new requirement by abandoning the current one without documenting what was left unfinished.