Project-level hard constraints for task work in this repository.
- Do not start implementing any task until the user gives an explicit execution command in one of these exact formats:
execute task Xorexecute feature <feature_id>. - Any message that does not contain an explicit command in one of these formats (
execute task X,execute feature <feature_id>) is non-execution (clarification, planning, task-text edits, review, or discussion only). - If user intent looks like execution but the command format is not explicit, ask for a direct command in the required format and do not start implementation.
- User confirmation that a task is completed is separate from execution start and must still be explicit.
- Once execution is allowed, follow
dev/TASK_EXECUTION_PROTOCOL.mdas the only process source of truth. - Exception for corrective fixes: if the user asks to fix a bug/regression introduced by the assistant in already changed files, apply that fix immediately without requiring an execution command; keep the scope strictly limited to correcting that mistake (no new task scope).
- Direct
AGENTS.mdmaintenance override: when the user explicitly instructs to editAGENTS.md, apply the requested edits immediately, without requiring an execution command. - For direct
AGENTS.mdedit requests, do not block on process-format arguments; execute the edit and report the exact changes. - Direct edit command override (repository-wide): when the user explicitly instructs to make concrete code/config/script/file edits, apply those edits immediately without requiring an execution command.
- Treat such direct edit commands as side edits (outside task execution flow) unless the user explicitly frames them as task execution.
- For direct edit commands, do not block on task-command format; execute the requested edits and report changes.
- Never make any file/code/config/script changes unless the user has explicitly asked for those concrete edits in the current message.
- Hard no-edit default: if the user message is discussion, question, planning, or clarification, do not run any edit command and do not change any file.
- Before any edit, require an explicit edit intent in the current user message (examples: "edit", "change", "update", "create file", "delete", "apply patch", "внеси изменения", "измени", "создай", "удали").
- If explicit edit intent is missing, respond with analysis/instructions only and keep repository files untouched.
- Do not mark any task or task block as completed until the user explicitly confirms completion after review.
confirm feature <id> doneis treated as explicit confirmation for the whole feature subtree (Feature -> Issue -> Task), and must trigger one cascading completion update run for all pending descendants.
- Keep implemented tasks in their current state (not completed) while awaiting user verification.
dev/map/DEV_MAP.jsonis the planning source of truth for hierarchy (Milestone -> Feature -> Issue -> TaskandMilestone -> StandaloneIssue -> Task) and for non-milestone status fields.dev/TASK_LIST.md,dev/TASK_EXECUTION_PIPELINE.md, anddev/map/DEV_MAP.jsonmust stay synchronized when adding/updating tasks/features/standalone issues.- Each task entry in
dev/TASK_LIST.mdmust include ownership markers:- product path:
[M*][F*] - standalone path:
[M*][SI*]If the task node exists indev/map/DEV_MAP.json, markers must match that parent chain.
- product path:
- Before reporting a task as implemented, perform a mandatory final check that all requirements from the exact task text are covered; explicitly list any unmet requirement.
- New tasks in
dev/TASK_LIST.mdmust be added only at the end of the file as a single linear list entry; do not place new tasks into category sections and do not regroup existing tasks by categories. - New numeric task IDs must be allocated only from
task_countindev/map/DEV_MAP.jsonusingnew_id = task_count + 1; then settask_count = new_idin the same change set. - Do not derive new task IDs by scanning
dev/TASK_LIST.mdor by relying on visible "last task" entries. - Every new or rewritten task entry in
dev/TASK_LIST.mdmust include a#### **Concrete steps:**section with explicit numbered implementation steps (actionable commands/edits/checks), not only conceptual wording. - When creating or rewriting tasks, include only minimally sufficient actions/changes required to satisfy the stated requirement and make the result work; do not add optional improvements, extra hardening, refactors, or other non-required work unless explicitly requested by the user.
- Feature work must follow this approval-gated sequence:
plan feature <id>approve feature plansync issues to task list for <id>(local decomposition only)- user review/corrections of local decomposition
materialize feature <id>(GitHub materialization only)execute task Xorexecute feature <feature_id>
- Every
plan feature <id>result must be written todev/FEATURE_PLANS.md; do not keep feature plans only in chat. - In
dev/FEATURE_PLANS.md, each feature plan must be stored under its own feature ID section and include: scope, out-of-scope, acceptance criteria, risks, dependencies, decomposition. approve feature planalways applies to the corresponding feature section indev/FEATURE_PLANS.mdand must set the target featurestatustoApprovedindev/map/DEV_MAP.json.- Feature
statusindev/map/DEV_MAP.jsonis the approval source of truth. If status is notApproved, no further feature step is allowed (sync issues to task list,materialize feature,execute task X,execute feature <feature_id>). - If the approved feature section in
dev/FEATURE_PLANS.mdis changed later, continue only after a new explicitapprove feature planand status re-set toApprovedindev/map/DEV_MAP.json. sync issues to task list for <id>must run only when the target feature status indev/map/DEV_MAP.jsonisApproved, and it must create/update localIssue -> Taskdecomposition in the same change set across:dev/map/DEV_MAP.json(attach under selected parent chain:Milestone -> Feature -> IssueorMilestone -> StandaloneIssue),dev/TASK_LIST.md(with[M*][F*]or[M*][SI*]markers),dev/TASK_EXECUTION_PIPELINE.md(overlaps/dependencies).
- Do not materialize GitHub feature/work issues before explicit plan approval and before local decomposition is synced/reviewed.
- During
materialize featureandmaterialize standalone-issue, create/update GitHub issues strictly from already-defined local issue nodes; do not invent additional decomposition only on GitHub. - During
materialize featureandmaterialize standalone-issue, every created/updated GitHub issue must be assigned to the corresponding GitHub milestone (not label-only assignment). - If the target GitHub milestone does not exist or cannot be resolved, stop materialization and ask the user to create/select the milestone first.
sync issues to task listis mandatory before any relatedexecute task X.- ID formats are defined in
dev/map/DEV_MAP_SCHEMA.mdand must be used as-is (F<local>-M<milestone>,I<local>-F<feature_local>-M<milestone>,SI<local>-M<milestone>, global task IDs fromdev/TASK_LIST.md). - Before creating any new task/issue mapping, always analyze existing features in
dev/map/DEV_MAP.jsonand propose candidate bindings to the user (one or more matching feature IDs, or standalone if no suitable feature exists). - Immediately after candidate bindings are prepared, request user binding choice first; do not run extra preparatory checks unrelated to candidate binding before that question.
- Binding confirmation is mandatory: do not create/update task, issue, feature, or standalone mapping nodes until the user explicitly chooses the target binding.
- After user binding choice, continue only through the normal sync path (
DEV_MAP+TASK_LIST+ pipeline overlaps in the same change set). - For standalone (non-product) work, use
Milestone -> StandaloneIssue -> Taskpath. - Orphan issues are not allowed: every issue must belong either to a feature (
Issue) or to a milestone standalone container (StandaloneIssue). - Local/GitHub completion is confirmation-gated:
- Do not mark local
Issue/Feature/StandaloneIssueasDoneuntil the user explicitly confirms completion after review. - Do not close related GitHub issues before that explicit completion confirmation.
- When explicit completion confirmation is given for an
Issue/Feature/StandaloneIssue, update local status and close corresponding GitHub issue in the same completion update run.
- For
confirm feature <id> done, also mark all pending child issues/tasks of that feature asDone, update synchronized local trackers, and close mapped child GitHub issues in the same run.
- GitHub issue content policy for
materialize feature/materialize standalone-issue: write only issue-relevant content (title, scope/problem, planned work/tasks, acceptance context). - In GitHub issue bodies, never include process boilerplate blocks such as
Work issue for ...,Source of truth,Notes, protocol reminders, confirmation commands, or anydo not close before ...wording. - During feature planning and decomposition, enforce minimal-sufficient scope: include only items required to deliver feature behavior and explicit acceptance criteria.
- Do not add process artifacts by default (extra checklists, validation gates, signoff docs, protocol docs, contract docs) unless the user explicitly requests them or the feature acceptance criteria explicitly require them.
- Prefer updating existing docs/files over creating new standalone documentation files when both options satisfy the same requirement.
- If there is any doubt whether a planned item is required, ask the user before adding it to plan/issues/tasks.
dev/TASK_EXECUTION_PIPELINE.mdmust contain only pending (not completed) tasks/blocks; do not keep completed entries there with markers like(completed).- In
dev/TASK_EXECUTION_PIPELINE.mdFunctional blocks, always include an explicitOutcomeline for each block. - Each block
Outcomemust be concrete and feature-level: describe what exact behaviors/features/API modes/operational flows will exist after the block is done. - Avoid generic wording in block outcomes (for example "better", "improved", "more stable") unless tied to specific mechanisms or user-visible changes.
- Any new or modified functional code must include docstrings/comments in the language-appropriate format.
- Coverage is mandatory for:
- modules/files,
- classes,
- functions/methods.
- Existing docstrings in touched code must be updated when outdated or inaccurate.
- Exclusions:
*.md,*.html,*.json, and generated/vendor build artifacts. - Format by language:
- Python: triple-quoted docstrings.
- JS/TS: JSDoc-style block comments above module/class/function/method declarations.